begin
option "-low"
*TEMP D0-D1/A0-A1
owninteger failures=0
routine pass
printstring(" -- Pass"); newline
end
routine fail
printstring(" -- FAIL"); newline
failures = failures+1
end
routine REG0
register (d2)integer r1,r2
printstring("Basic")
r2 = 0
for r1 = 1,1,10 cycle
r2 = r2+r1
repeat
if r2 = 55 then pass else fail
end
own byte array a(1:10) = 1,2,3,4,5,6,7,8,9,10
own short array aa(1:2) = 100,200
routine REG1
register (d2)integer r1,r2
printstring("Data registers")
r1 = 0; if r1 = 0 then pass else fail
r1 = r1+1; if r1 = 1 then pass else fail
r1 = r1-3; if r1 = -2 then pass else fail
r1 = -r1; if r1 = 2 then pass else fail
r1 = ¬r1; if r1 = -3 then pass else fail
r1 = r1+r1; if r1 = -6 then pass else fail
r1 = r1*r1; if r1 = 36 then pass else fail
r1 = r1//2; if r1 = 18 then pass else fail
r1 = r1!3; if r1 = 19 then pass else fail
r1 = r1!!6; if r1 = 21 then pass else fail
r1 = r1&15; if r1 = 5 then pass else fail
r1 = 1-r1; if r1 = -4 then pass else fail
r2 = 2
r1 = r1+r2; if r1 = -2 then pass else fail
r1 = r1-r2; if r1 = -4 then pass else fail
r1 = r2-r1; if r1 = 6 then pass else fail
r1 = r1*r2; if r1 = 12 then pass else fail
r1 = r2*r1; if r1 = 24 then pass else fail
r1 = r2*r2; if r1 = 4 then pass else fail
r1 = r1&(1-r1); if r1 = 4 then pass else fail
r1 = r1!32+'0'; if r1 = 84 then pass else fail
r1 = r1!32+r1; if r1 = 200 then pass else fail
r1 = r1>>6; if r1 = 3 then pass else fail
r1 = a(r1); if r1 = 3 then pass else fail
r1 = aa(r1-1); if r1 = 200 then pass else fail
end {reg1}
routine REG2
register (a2)integer r1,r2
printstring("Address registers for data")
r1 = 0; if r1 = 0 then pass else fail
r1 = r1+1; if r1 = 1 then pass else fail
r1 = r1-3; if r1 = -2 then pass else fail
r1 = -r1; if r1 = 2 then pass else fail
r1 = ¬r1; if r1 = -3 then pass else fail
r1 = r1+r1; if r1 = -6 then pass else fail
r1 = r1*r1; if r1 = 36 then pass else fail
r1 = r1//2; if r1 = 18 then pass else fail
r1 = r1!3; if r1 = 19 then pass else fail
r1 = r1!!6; if r1 = 21 then pass else fail
r1 = r1&15; if r1 = 5 then pass else fail
r1 = 1-r1; if r1 = -4 then pass else fail
r2 = 2
r1 = r1+r2; if r1 = -2 then pass else fail
r1 = r1-r2; if r1 = -4 then pass else fail
r1 = r2-r1; if r1 = 6 then pass else fail
r1 = r1*r2; if r1 = 12 then pass else fail
r1 = r2*r1; if r1 = 24 then pass else fail
r1 = r2*r2; if r1 = 4 then pass else fail
r1 = r1&(1-r1); if r1 = 4 then pass else fail
r1 = r1!32+'0'; if r1 = 84 then pass else fail
r1 = r1!32+r1; if r1 = 200 then pass else fail
r1 = r1>>6; if r1 = 3 then pass else fail
r1 = a(r1); if r1 = 3 then pass else fail
r1 = aa(r1-1); if r1 = 200 then pass else fail
end {reg2}
routine REG3
register (a2)byte name bn
register (a3)short name sn
printstring("Name assignment & modification")
bn == a(4)
if bn = 4 then pass else fail
bn == bn[1]
if bn = 5 then pass else fail
bn == bn[bn]
if bn = 10 then pass else fail
sn == aa(2)
if sn = 200 then pass else fail
sn == sn[-1]
if sn = 100 then pass else fail
end {reg3}
open output(1,"JOURNAL")
reg0
reg1
reg2
reg3
select output(0)
write(failures,1); printstring(" failure(s)")
newline
end