_TEMPW1 equ 50
_TEMPW2 equ 52
_TEMPL1 equ 112
COLOR0 equ 708
x equ 128
y equ 129
z equ 130
_36 equ 131
_38 equ 133
_39 equ 135
_41 equ 137
p equ 139
o equ 141
r equ 143
   org $2e0
   dta a($2000)
   org $2000
;### unit_test.atl(4) "Test started"
   jsr _std_print_out
   dta b(12),c'Test started'
   dta b(128)
   dta b(0)
;### unit_test.atl(6) "Byte unsigned arithmetics"
   jsr _std_print_out
   dta b(25),c'Byte unsigned arithmetics'
   dta b(128)
   dta b(0)
;### unit_test.atl(12) "  =",
   jsr _std_print_out
   dta b(3),c'  ='
   dta b(0)
;### unit_test.atl(14) x = 10
   lda #10
   sta x
;### unit_test.atl(15) y = 3
   lda #3
   sta y
;### unit_test.atl(16) if x <> 10 goto fail
   lda #10
   cmp #10
   jne fail
_lbl4:
;### unit_test.atl(18) ",+",
   jsr _std_print_out
   dta b(2),c',+'
   dta b(0)
;### unit_test.atl(19) z = x + y 
   lda x
   clc
   adc y
   sta z
;### unit_test.atl(20) if z <> 13 goto fail
   cmp #13
   jne fail
_lbl5:
;### unit_test.atl(22) z = z + 2
   lda z
   clc
   adc #2
;### unit_test.atl(23) if z <> 15 goto fail
   cmp #15
   jne fail
_lbl6:
;### unit_test.atl(25) z = 3 + x
   lda x
   clc
   adc #3
;### unit_test.atl(26) if z <> 13 goto fail
   cmp #13
   jne fail
_lbl7:
;### unit_test.atl(28) z = x + 4
   lda x
   clc
   adc #4
;### unit_test.atl(29) if z <> 14 goto fail
   cmp #14
   jne fail
_lbl8:
;### unit_test.atl(31) ",-",
   jsr _std_print_out
   dta b(2),c',-'
   dta b(0)
;### unit_test.atl(33) z = x - y
   lda x
   sec
   sbc y
;### unit_test.atl(34) if z <> 7 goto fail
   cmp #7
   jne fail
_lbl9:
;### unit_test.atl(36) z = x - 4
   lda x
   sec
   sbc #4
;### unit_test.atl(37) if z <> 6 goto fail
   cmp #6
   jne fail
_lbl10:
;### unit_test.atl(39) z = 15 - x
   lda #15
   sec
   sbc x
   sta z
;### unit_test.atl(40) if z <> 5 goto fail
   cmp #5
   jne fail
_lbl11:
;### unit_test.atl(42) z = z - 2
   lda z
   sec
   sbc #2
;### unit_test.atl(43) if z <> 3 goto fail
   cmp #3
   jne fail
_lbl12:
;### unit_test.atl(45) ",*",
   jsr _std_print_out
   dta b(2),c',*'
   dta b(0)
;### unit_test.atl(47) z = x * y
   lda x
   ldx y
   jsr _sys_mul8
   lda _TEMPW2
;### unit_test.atl(48) if z <> 30 goto fail
   cmp #30
   jne fail
_lbl13:
;### unit_test.atl(50) z = x * 2
   lda x
   asl
;### unit_test.atl(51) if z <> 20 goto fail
   cmp #20
   jne fail
_lbl14:
;### unit_test.atl(53) z = 3 * x
   lda x
   asl
   clc
   adc x
;### unit_test.atl(54) if z <> 30 goto fail
   cmp #30
   jne fail
_lbl15:
;### unit_test.atl(56) ",/",
   jsr _std_print_out
   dta b(2),c',/'
   dta b(0)
;### unit_test.atl(58) z = x / 5
   lda x
   sta _TEMPW1
   lda #0
   sta _TEMPW1+1
   lda #5
   jsr _sys_div8
;### unit_test.atl(59) if z<>2 goto fail
   cmp #2
   jne fail
_lbl16:
;### unit_test.atl(61) z = x / y
   lda x
   sta _TEMPW1
   lda #0
   sta _TEMPW1+1
   lda y
   jsr _sys_div8
;### unit_test.atl(62) if z <> 3 goto fail
   cmp #3
   jne fail
_lbl17:
;### unit_test.atl(64) z = 99 / y
   lda #99
   sta _TEMPW1
   lda #0
   sta _TEMPW1+1
   lda y
   jsr _sys_div8
;### unit_test.atl(65) if z <> 33 goto fail
   cmp #33
   jne fail
_lbl18:
;### unit_test.atl(67) ",mod",
   jsr _std_print_out
   dta b(4),c',mod'
   dta b(0)
;### unit_test.atl(69) z = x mod 4
   lda x
   and #3
;### unit_test.atl(70) if z<>2 goto fail
   cmp #2
   jne fail
_lbl19:
;### unit_test.atl(72) z = x mod y
   lda x
   sta _TEMPW1
   lda #0
   sta _TEMPW1+1
   lda y
   jsr _sys_div8
;### unit_test.atl(73) if z <> 1 goto fail
   cpx #1
   jne fail
_lbl20:
;### unit_test.atl(75) z = 100 mod y
   lda #100
   sta _TEMPW1
   lda #0
   sta _TEMPW1+1
   lda y
   jsr _sys_div8
;### unit_test.atl(76) if z <> 1 goto fail
   cpx #1
   jne fail
_lbl21:
;### unit_test.atl(78) z = 99 mod y
   lda #99
   sta _TEMPW1
   lda #0
   sta _TEMPW1+1
   lda y
   jsr _sys_div8
;### unit_test.atl(79) if z <> 0 goto fail
   cpx #0
   jne fail
_lbl22:
;### unit_test.atl(81) ",bitand",
   jsr _std_print_out
   dta b(7),c',bitand'
   dta b(0)
;### unit_test.atl(83) z = x bitand y				;%00001010,  %00000011
   lda x
   and y
;### unit_test.atl(84) if z<>2 goto fail
   cmp #2
   jne fail
_lbl23:
;### unit_test.atl(86) z = x bitand 8
   lda x
   and #8
;### unit_test.atl(87) if z<>8 goto fail
   cmp #8
   jne fail
_lbl24:
;### unit_test.atl(89) z = 2 bitand x
   lda x
   and #2
;### unit_test.atl(90) if z <> 2 goto fail
   cmp #2
   jne fail
_lbl25:
;### unit_test.atl(92) ",bitor",
   jsr _std_print_out
   dta b(6),c',bitor'
   dta b(0)
;### unit_test.atl(94) z = x bitor y				;%00001010,  %00000011
   lda x
   ora y
;### unit_test.atl(95) if z<>11 goto fail
   cmp #11
   jne fail
_lbl26:
;### unit_test.atl(97) z = x bitor 131
   lda x
   ora #131
;### unit_test.atl(98) if z<>139 goto fail
   cmp #139
   jne fail
_lbl27:
;### unit_test.atl(100) z = 65 bitor x
   lda x
   ora #65
;### unit_test.atl(101) if z <> 75 goto fail
   cmp #75
   jne fail
_lbl28:
;### unit_test.atl(103) ",bitxor",
   jsr _std_print_out
   dta b(7),c',bitxor'
   dta b(0)
;### unit_test.atl(105) z = x bitxor y				;%00001010,  %00000011
   lda x
   eor y
;### unit_test.atl(106) if z<>9 goto fail
   cmp #9
   jne fail
_lbl29:
;### unit_test.atl(108) z = x bitxor 131
   lda x
   eor #131
;### unit_test.atl(109) if z<>137 goto fail
   cmp #137
   jne fail
_lbl30:
;### unit_test.atl(111) z = 67 bitxor x					;%00001010, %01000011
   lda x
   eor #67
;### unit_test.atl(112) if z <> 73 goto fail
   cmp #73
   jne fail
_lbl31:
;### unit_test.atl(114) ",bitnot"
   jsr _std_print_out
   dta b(7),c',bitnot'
   dta b(128)
   dta b(0)
;### unit_test.atl(116) z = bitnot x
   lda x
   eor #$FF
;### unit_test.atl(117) if z <> 245 goto fail
   cmp #245
   jne fail
_lbl32:
;### unit_test.atl(119) "Operator precedence"
   jsr _std_print_out
   dta b(19),c'Operator precedence'
   dta b(128)
   dta b(0)
;### unit_test.atl(120) x = 3
   lda #3
   sta x
;### unit_test.atl(121) y = 4
   lda #4
   sta y
;### unit_test.atl(122) z = x * 2 + y
   lda #10
   sta z
;### unit_test.atl(123) if z <> 10 goto fail
   cmp #10
   jne fail
_lbl33:
;### unit_test.atl(124) z = y + x * 2
   lda x
   asl
   sta _36
   lda #0
   rol
   sta _36+1
   lda y
   clc
   adc _36+0
   sta z
   lda y+1
   adc _36+1
   sta z+1
;### unit_test.atl(125) if z <> 10 goto fail
   lda z
   cmp #10
   jne fail
_lbl34:
;### unit_test.atl(126) z = x * 2 + y * 2
   lda x
   asl
   sta _38
   lda #0
   rol
   sta _38+1
   lda y
   asl
   sta _39
   lda #0
   rol
   sta _39+1
   lda _38
   clc
   adc _39+0
   sta z
   lda _38+1
   adc _39+1
   sta z+1
;### unit_test.atl(127) if z <> 14 goto fail
   lda z
   cmp #14
   jne fail
_lbl35:
;### unit_test.atl(129) "Parentheses"
   jsr _std_print_out
   dta b(11),c'Parentheses'
   dta b(128)
   dta b(0)
;### unit_test.atl(130) z = 2 * (x + y)
   lda x
   clc
   adc y
   sta _41
   lda #0
   rol
   sta _41+1
   lda _41
   asl
   sta z
   lda _41+1
   rol
   sta z+1
;### unit_test.atl(131) if z <> 14 goto fail
   lda z
   cmp #14
   jne fail
_lbl36:
;### unit_test.atl(133) "2-byte unsigned arithmetics"
   jsr _std_print_out
   dta b(27),c'2-byte unsigned arithmetics'
   dta b(128)
   dta b(0)
;### unit_test.atl(139) "  =",
   jsr _std_print_out
   dta b(3),c'  ='
   dta b(0)
;### unit_test.atl(140) p = 10000
   lda #16
   sta p
   lda #39
   sta p+1
;### unit_test.atl(141) o = 43    		;initializing with small constant
   lda #43
   sta o
   lda #0
   sta o+1
;### unit_test.atl(142) x = 72
   lda #72
   sta x
;### unit_test.atl(144) if p <> 10000 goto fail
   lda #16
   cmp #16
   jne _lbl89
   lda p+1
   cmp #39
   jeq _lbl37
_lbl89:
   jmp fail
_lbl37:
;### unit_test.atl(145) if o <> 43 goto fail
   lda o
   cmp #43
   jne _lbl90
   lda o+1
   cmp #0
   jeq _lbl38
_lbl90:
   jmp fail
_lbl38:
;### unit_test.atl(147) o = p		;assignment
   lda p+1
   sta o+1
;### unit_test.atl(148) if o <> 10000 goto fail
   lda p
   cmp #16
   jne _lbl91
   lda o+1
   cmp #39
   jeq _lbl39
_lbl91:
   jmp fail
_lbl39:
;### unit_test.atl(150) o = x		;assigning byte variable (extend)
   lda #0
   sta o+1
;### unit_test.atl(151) if o <> 72 goto fail
   lda x
   cmp #72
   jne _lbl92
   lda o+1
   cmp #0
   jeq _lbl40
_lbl92:
   jmp fail
_lbl40:
;### unit_test.atl(153) o = 735
   lda #223
   sta o
   lda #2
   sta o+1
;### unit_test.atl(154) if o <> 735 goto fail
   lda #223
   cmp #223
   jne _lbl93
   lda o+1
   cmp #2
   jeq _lbl41
_lbl93:
   jmp fail
_lbl41:
;### unit_test.atl(156) ",+",
   jsr _std_print_out
   dta b(2),c',+'
   dta b(0)
;### unit_test.atl(158) r = p + o
   lda p
   clc
   adc o+0
   sta r
   lda p+1
   adc o+1
   sta r+1
;### unit_test.atl(159) if r <> 10735 goto fail
   lda r
   cmp #239
   jne _lbl94
   lda r+1
   cmp #41
   jeq _lbl42
_lbl94:
   jmp fail
_lbl42:
;### unit_test.atl(161) r = p + 5283
   lda p
   clc
   adc #163
   sta r
   lda p+1
   adc #20
   sta r+1
;### unit_test.atl(162) if r <> 15283 goto fail
   lda r
   cmp #179
   jne _lbl95
   lda r+1
   cmp #59
   jeq _lbl43
_lbl95:
   jmp fail
_lbl43:
;### unit_test.atl(164) r = 6284 + p
   lda p
   clc
   adc #140
   sta r
   lda p+1
   adc #24
   sta r+1
;### unit_test.atl(165) if r <> 16284 goto fail
   lda r
   cmp #156
   jne _lbl96
   lda r+1
   cmp #63
   jeq _lbl44
_lbl96:
   jmp fail
_lbl44:
;### unit_test.atl(167) ",-",
   jsr _std_print_out
   dta b(2),c',-'
   dta b(0)
;### unit_test.atl(169) r = p - o
   lda p
   sec
   sbc o+0
   sta r
   lda p+1
   sbc o+1
   sta r+1
;### unit_test.atl(170) if r <> 9265 goto fail
   lda r
   cmp #49
   jne _lbl97
   lda r+1
   cmp #36
   jeq _lbl45
_lbl97:
   jmp fail
_lbl45:
;### unit_test.atl(172) r = p - 5000
   lda p
   sec
   sbc #136
   sta r
   lda p+1
   sbc #19
   sta r+1
;### unit_test.atl(173) if r <> 5000 goto fail
   lda r
   cmp #136
   jne _lbl98
   lda r+1
   cmp #19
   jeq _lbl46
_lbl98:
   jmp fail
_lbl46:
;### unit_test.atl(175) r = 25003 - p
   lda #171
   sec
   sbc p+0
   sta r
   lda #97
   sbc p+1
   sta r+1
;### unit_test.atl(176) if r <> 15003 goto fail
   lda r
   cmp #155
   jne _lbl99
   lda r+1
   cmp #58
   jeq _lbl47
_lbl99:
   jmp fail
_lbl47:
;### unit_test.atl(178) ",*"
   jsr _std_print_out
   dta b(2),c',*'
   dta b(128)
   dta b(0)
;### unit_test.atl(180) x = 250			; byte * 2
   lda #250
   sta x
;### unit_test.atl(181) if x <> 250 goto fail		;to prevent optimizer
   cmp #250
   jne fail
_lbl48:
;### unit_test.atl(183) r = x * 2
   lda x
   asl
   sta r
   lda #0
   rol
   sta r+1
;### unit_test.atl(184) if r <> 500 goto fail
   lda r
   cmp #244
   jne _lbl100
   lda r+1
   cmp #1
   jeq _lbl49
_lbl100:
   jmp fail
_lbl49:
;### unit_test.atl(186) r = p * 2
   lda p
   asl
   sta r
   lda p+1
   rol
   sta r+1
;### unit_test.atl(187) if r <> 20000 goto fail
   lda r
   cmp #32
   jne _lbl101
   lda r+1
   cmp #78
   jeq _lbl50
_lbl101:
   jmp fail
_lbl50:
;### unit_test.atl(189) x = 100
   lda #100
   sta x
;### unit_test.atl(190) y = 5
;### unit_test.atl(192) r = x * y
   lda #1
   sta r+1
;### unit_test.atl(193) if r <> 500 goto fail
   lda #244
   cmp #244
   jne _lbl102
   lda r+1
   cmp #1
   jeq _lbl51
_lbl102:
   jmp fail
_lbl51:
;### unit_test.atl(195) r = x * 7
   lda x
   ldx #7
   jsr _sys_mul8
   lda _TEMPW2+1
   sta r+1
;### unit_test.atl(196) if r <> 700 goto fail
   lda _TEMPW2
   cmp #188
   jne _lbl103
   lda r+1
   cmp #2
   jeq _lbl52
_lbl103:
   jmp fail
_lbl52:
;### unit_test.atl(198) r = 13 * x
   lda x
   ldx #13
   jsr _sys_mul8
   lda _TEMPW2+1
   sta r+1
;### unit_test.atl(199) if r <> 1300 goto fail
   lda _TEMPW2
   cmp #20
   jne _lbl104
   lda r+1
   cmp #5
   jeq _lbl53
_lbl104:
   jmp fail
_lbl53:
;### unit_test.atl(201) p = 100
;### unit_test.atl(202) o = 315
   lda #59
   sta o
   lda #1
   sta o+1
;### unit_test.atl(204) r = p * o
   lda #123
   sta r+1
;### unit_test.atl(205) if r <> 31500 goto fail
   lda #12
   cmp #12
   jne _lbl105
   lda r+1
   cmp #123
   jeq _lbl54
_lbl105:
   jmp fail
_lbl54:
;### unit_test.atl(207) r = o * 99
   lda o
   sta _TEMPW1
   lda o+1
   sta _TEMPW1+1
   lda #99
   sta _TEMPW2
   lda #0
   sta _TEMPW2+1
   jsr _sys_mul16
   lda _TEMPL1+1
   sta r+1
;### unit_test.atl(208) if r <> 31185 goto fail
   lda _TEMPL1
   cmp #209
   jne _lbl106
   lda r+1
   cmp #121
   jeq _lbl55
_lbl106:
   jmp fail
_lbl55:
;### unit_test.atl(210) "Blocks"
   jsr _std_print_out
   dta b(6),c'Blocks'
   dta b(128)
   dta b(0)
;### unit_test.atl(211) x = 1
   lda #1
   sta x
;### unit_test.atl(212) z = 5
   lda #5
   sta z
;### unit_test.atl(215) if x = 1 then z = 5
   lda #1
   cmp #1
   jne _lbl56
   lda #5
   sta z
_lbl56:
;### unit_test.atl(218) if z = 5
   lda z
   cmp #5
   jne _lbl57
;### unit_test.atl(219) 	z = 6
   lda #6
   sta z
;### unit_test.atl(220) 	x = 2
   lda #2
   sta x
_lbl57:
;### unit_test.atl(223) if x = 2 (
   lda x
   cmp #2
   jne _lbl58
;### unit_test.atl(224) z = 7
   lda #7
   sta z
_lbl58:
;### unit_test.atl(227) if z <> 7 goto fail
   lda z
   cmp #7
   jne fail
_lbl59:
;### unit_test.atl(231) if z = 7
   lda z
   cmp #7
   jne _lbl61
;### unit_test.atl(232) 	if x = 2
   lda x
   cmp #2
   jne _lbl61
;### unit_test.atl(233) 		x = 3
   lda #3
   sta x
_lbl61:
;### unit_test.atl(235) if x <> 3 goto fail
   lda x
   cmp #3
   jne fail
_lbl62:
;### unit_test.atl(237) "If Then Else"
   jsr _std_print_out
   dta b(12),c'If Then Else'
   dta b(128)
   dta b(0)
;### unit_test.atl(239) x = 1
   lda #1
;### unit_test.atl(242) if x = 1
   cmp #1
   jne _lbl63
;### unit_test.atl(243) 	z = 2		;<-- EXECUTE THIS
   lda #2
   sta z
;### unit_test.atl(244) else
   jmp _lbl64
_lbl63:
;### unit_test.atl(245) 	z = 3
   lda #3
   sta z
_lbl64:
;### unit_test.atl(247) if z <> 2 goto fail
   lda z
   cmp #2
   jne fail
_lbl65:
;### unit_test.atl(250) x = 2
   lda #2
;### unit_test.atl(252) if x = 1
   cmp #1
   jne _lbl66
;### unit_test.atl(253) 	z = 2
   lda #2
   sta z
;### unit_test.atl(254) else
   jmp _lbl67
_lbl66:
;### unit_test.atl(255) 	z = 3
   lda #3
   sta z
_lbl67:
;### unit_test.atl(257) if z <> 3 goto fail
   lda z
   cmp #3
   jne fail
_lbl68:
;### unit_test.atl(260) z = 0
;### unit_test.atl(261) x = 1
   lda #1
   sta x
;### unit_test.atl(263) if x = 1
   cmp #1
   jne _lbl69
;### unit_test.atl(264) 	z = 2		;<--
   lda #2
   sta z
;### unit_test.atl(265) else if x = 2
   jmp _lbl70
_lbl69:
   lda x
   cmp #2
   jne _lbl71
;### unit_test.atl(266) 	z = 3
   lda #3
   sta z
;### unit_test.atl(267) else if x = 3
   jmp _lbl70
_lbl71:
   lda x
   cmp #3
   jne _lbl72
;### unit_test.atl(268) 	z = 4
   lda #4
   sta z
;### unit_test.atl(269) else
   jmp _lbl70
_lbl72:
;### unit_test.atl(270) 	z = 5
   lda #5
   sta z
_lbl70:
;### unit_test.atl(272) if z <> 2 goto fail
   lda z
   cmp #2
   jne fail
_lbl73:
;### unit_test.atl(274) x = 2
   lda #2
   sta x
;### unit_test.atl(276) if x = 1
   cmp #1
   jne _lbl74
;### unit_test.atl(277) 	z = 2
   lda #2
   sta z
;### unit_test.atl(278) else if x = 2
   jmp _lbl75
_lbl74:
   lda x
   cmp #2
   jne _lbl76
;### unit_test.atl(279) 	z = 3		;<--
   lda #3
   sta z
;### unit_test.atl(280) else if x = 3
   jmp _lbl75
_lbl76:
   lda x
   cmp #3
   jne _lbl77
;### unit_test.atl(281) 	z = 4
   lda #4
   sta z
;### unit_test.atl(282) else
   jmp _lbl75
_lbl77:
;### unit_test.atl(283) 	z = 5
   lda #5
   sta z
_lbl75:
;### unit_test.atl(285) if z <> 3 goto fail
   lda z
   cmp #3
   jne fail
_lbl78:
;### unit_test.atl(287) x = 3
   lda #3
   sta x
;### unit_test.atl(288) if x = 1
   cmp #1
   jne _lbl79
;### unit_test.atl(289) 	z = 2
   lda #2
   sta z
;### unit_test.atl(290) else if x = 2
   jmp _lbl80
_lbl79:
   lda x
   cmp #2
   jne _lbl81
;### unit_test.atl(291) 	z = 3
   lda #3
   sta z
;### unit_test.atl(292) else if x = 3
   jmp _lbl80
_lbl81:
   lda x
   cmp #3
   jne _lbl82
;### unit_test.atl(293) 	z = 4		;<--
   lda #4
   sta z
;### unit_test.atl(294) else
   jmp _lbl80
_lbl82:
;### unit_test.atl(295) 	z = 5
   lda #5
   sta z
_lbl80:
;### unit_test.atl(296) if z <> 4 goto fail
   lda z
   cmp #4
   jne fail
_lbl83:
;### unit_test.atl(298) x = 4
   lda #4
   sta x
;### unit_test.atl(299) if x = 1
   cmp #1
   jne _lbl84
;### unit_test.atl(300) 	z = 2
   lda #2
   sta z
;### unit_test.atl(301) else if x = 2
   jmp _lbl85
_lbl84:
   lda x
   cmp #2
   jne _lbl86
;### unit_test.atl(302) 	z = 3
   lda #3
   sta z
;### unit_test.atl(303) else if x = 3
   jmp _lbl85
_lbl86:
   lda x
   cmp #3
   jne _lbl87
;### unit_test.atl(304) 	z = 4
   lda #4
   sta z
;### unit_test.atl(305) else
   jmp _lbl85
_lbl87:
;### unit_test.atl(306) 	z = 5		;<--
   lda #5
   sta z
_lbl85:
;### unit_test.atl(307) if z <> 5 goto fail
   lda z
   cmp #5
   jne fail
_lbl88:
;### unit_test.atl(310) ""
   jsr _std_print_out
   dta b(128)
   dta b(0)
;### unit_test.atl(311) "*** OK ***"
   jsr _std_print_out
   dta b(10),c'*** OK ***'
   dta b(128)
   dta b(0)
;### unit_test.atl(312) goto done
   jmp done
fail:
;### unit_test.atl(316) ""
   jsr _std_print_out
   dta b(128)
   dta b(0)
;### unit_test.atl(317) "*** Failure! ***"
   jsr _std_print_out
   dta b(16),c'*** Failure! ***'
   dta b(128)
   dta b(0)
;### unit_test.atl(318) COLOR0(4) = $25	
   lda #37
   sta COLOR0+4
done:
   jmp done
   icl 'P:\atalan\atalan\platform\atari\atari.asm'
   icl 'P:\atalan\atalan\processor\m6502\m6502.asm'


