mirror of
https://github.com/irmen/prog8.git
synced 2024-12-28 12:32:34 +00:00
470 lines
10 KiB
Lua
470 lines
10 KiB
Lua
%import textio
|
|
%import floats
|
|
%import string
|
|
%import syslib
|
|
%import test_stack
|
|
%zeropage basicsafe
|
|
|
|
main {
|
|
|
|
sub start() {
|
|
rotations()
|
|
integers()
|
|
floatingpoint()
|
|
|
|
test_stack.test()
|
|
}
|
|
|
|
sub rotations() {
|
|
ubyte[] ubarr = [%11000111]
|
|
uword[] uwarr = [%1100111110101010]
|
|
|
|
repeat(10) {
|
|
txt.nl()
|
|
}
|
|
|
|
txt.print_uwbin(uwarr[0], true)
|
|
txt.nl()
|
|
sys.set_carry()
|
|
rol(uwarr[0])
|
|
txt.print_uwbin(uwarr[0], true)
|
|
txt.nl()
|
|
sys.set_carry()
|
|
rol(uwarr[0])
|
|
txt.print_uwbin(uwarr[0], true)
|
|
txt.nl()
|
|
sys.set_carry()
|
|
rol(uwarr[0])
|
|
txt.print_uwbin(uwarr[0], true)
|
|
txt.nl()
|
|
sys.set_carry()
|
|
rol(uwarr[0])
|
|
txt.print_uwbin(uwarr[0], true)
|
|
txt.nl()
|
|
txt.nl()
|
|
|
|
uwarr[0] = %1100111110101010
|
|
ror(uwarr[0])
|
|
txt.print_uwbin(uwarr[0], true)
|
|
txt.nl()
|
|
sys.set_carry()
|
|
ror(uwarr[0])
|
|
txt.print_uwbin(uwarr[0], true)
|
|
txt.nl()
|
|
sys.set_carry()
|
|
ror(uwarr[0])
|
|
txt.print_uwbin(uwarr[0], true)
|
|
txt.nl()
|
|
sys.set_carry()
|
|
ror(uwarr[0])
|
|
txt.print_uwbin(uwarr[0], true)
|
|
txt.nl()
|
|
sys.set_carry()
|
|
ror(uwarr[0])
|
|
txt.print_uwbin(uwarr[0], true)
|
|
txt.nl()
|
|
txt.nl()
|
|
|
|
sys.clear_carry()
|
|
txt.print_uwbin(uwarr[0], true)
|
|
txt.nl()
|
|
rol2(uwarr[0])
|
|
txt.print_uwbin(uwarr[0], true)
|
|
txt.nl()
|
|
rol2(uwarr[0])
|
|
txt.print_uwbin(uwarr[0], true)
|
|
txt.nl()
|
|
rol2(uwarr[0])
|
|
txt.print_uwbin(uwarr[0], true)
|
|
txt.nl()
|
|
rol2(uwarr[0])
|
|
txt.print_uwbin(uwarr[0], true)
|
|
txt.nl()
|
|
txt.nl()
|
|
|
|
txt.print_uwbin(uwarr[0], true)
|
|
txt.nl()
|
|
ror2(uwarr[0])
|
|
txt.print_uwbin(uwarr[0], true)
|
|
txt.nl()
|
|
ror2(uwarr[0])
|
|
txt.print_uwbin(uwarr[0], true)
|
|
txt.nl()
|
|
ror2(uwarr[0])
|
|
txt.print_uwbin(uwarr[0], true)
|
|
txt.nl()
|
|
ror2(uwarr[0])
|
|
txt.print_uwbin(uwarr[0], true)
|
|
txt.nl()
|
|
txt.nl()
|
|
|
|
txt.print_ubbin(ubarr[0], true)
|
|
txt.nl()
|
|
sys.set_carry()
|
|
rol(ubarr[0])
|
|
txt.print_ubbin(ubarr[0], true)
|
|
txt.nl()
|
|
sys.set_carry()
|
|
rol(ubarr[0])
|
|
txt.print_ubbin(ubarr[0], true)
|
|
txt.nl()
|
|
sys.set_carry()
|
|
rol(ubarr[0])
|
|
txt.print_ubbin(ubarr[0], true)
|
|
txt.nl()
|
|
sys.set_carry()
|
|
rol(ubarr[0])
|
|
txt.print_ubbin(ubarr[0], true)
|
|
txt.nl()
|
|
txt.nl()
|
|
|
|
sys.set_carry()
|
|
ror(ubarr[0])
|
|
txt.print_ubbin(ubarr[0], true)
|
|
txt.nl()
|
|
sys.set_carry()
|
|
ror(ubarr[0])
|
|
txt.print_ubbin(ubarr[0], true)
|
|
txt.nl()
|
|
sys.set_carry()
|
|
ror(ubarr[0])
|
|
txt.print_ubbin(ubarr[0], true)
|
|
txt.nl()
|
|
sys.set_carry()
|
|
ror(ubarr[0])
|
|
txt.print_ubbin(ubarr[0], true)
|
|
txt.nl()
|
|
sys.set_carry()
|
|
ror(ubarr[0])
|
|
txt.print_ubbin(ubarr[0], true)
|
|
txt.nl()
|
|
txt.nl()
|
|
|
|
|
|
txt.print_ubbin(ubarr[0], true)
|
|
txt.nl()
|
|
rol2(ubarr[0])
|
|
txt.print_ubbin(ubarr[0], true)
|
|
txt.nl()
|
|
rol2(ubarr[0])
|
|
txt.print_ubbin(ubarr[0], true)
|
|
txt.nl()
|
|
rol2(ubarr[0])
|
|
txt.print_ubbin(ubarr[0], true)
|
|
txt.nl()
|
|
rol2(ubarr[0])
|
|
txt.print_ubbin(ubarr[0], true)
|
|
txt.nl()
|
|
txt.nl()
|
|
|
|
txt.print_ubbin(ubarr[0], true)
|
|
txt.nl()
|
|
ror2(ubarr[0])
|
|
txt.print_ubbin(ubarr[0], true)
|
|
txt.nl()
|
|
ror2(ubarr[0])
|
|
txt.print_ubbin(ubarr[0], true)
|
|
txt.nl()
|
|
ror2(ubarr[0])
|
|
txt.print_ubbin(ubarr[0], true)
|
|
txt.nl()
|
|
ror2(ubarr[0])
|
|
txt.print_ubbin(ubarr[0], true)
|
|
txt.nl()
|
|
txt.nl()
|
|
|
|
&ubyte membyte = $c000
|
|
uword addr = $c000
|
|
|
|
@(addr) = %10110101
|
|
txt.print_ubbin(@(addr), true)
|
|
txt.nl()
|
|
sys.set_carry()
|
|
rol(@(addr))
|
|
txt.print_ubbin(@(addr), true)
|
|
txt.nl()
|
|
sys.set_carry()
|
|
rol(@(addr))
|
|
txt.print_ubbin(@(addr), true)
|
|
txt.nl()
|
|
sys.set_carry()
|
|
rol(@(addr))
|
|
txt.print_ubbin(@(addr), true)
|
|
txt.nl()
|
|
sys.set_carry()
|
|
rol(@(addr))
|
|
txt.print_ubbin(@(addr), true)
|
|
txt.nl()
|
|
txt.nl()
|
|
|
|
@(addr) = %10110101
|
|
txt.print_ubbin(@(addr), true)
|
|
txt.nl()
|
|
sys.set_carry()
|
|
ror(@(addr))
|
|
txt.print_ubbin(@(addr), true)
|
|
txt.nl()
|
|
sys.set_carry()
|
|
ror(@(addr))
|
|
txt.print_ubbin(@(addr), true)
|
|
txt.nl()
|
|
sys.set_carry()
|
|
ror(@(addr))
|
|
txt.print_ubbin(@(addr), true)
|
|
txt.nl()
|
|
sys.set_carry()
|
|
ror(@(addr))
|
|
txt.print_ubbin(@(addr), true)
|
|
txt.nl()
|
|
txt.nl()
|
|
|
|
@(addr) = %10110101
|
|
txt.print_ubbin(@(addr), true)
|
|
txt.nl()
|
|
rol2(@(addr))
|
|
txt.print_ubbin(@(addr), true)
|
|
txt.nl()
|
|
rol2(@(addr))
|
|
txt.print_ubbin(@(addr), true)
|
|
txt.nl()
|
|
rol2(@(addr))
|
|
txt.print_ubbin(@(addr), true)
|
|
txt.nl()
|
|
rol2(@(addr))
|
|
txt.print_ubbin(@(addr), true)
|
|
txt.nl()
|
|
txt.nl()
|
|
|
|
@(addr) = %10110101
|
|
txt.print_ubbin(@(addr), true)
|
|
txt.nl()
|
|
ror2(@(addr))
|
|
txt.print_ubbin(@(addr), true)
|
|
txt.nl()
|
|
ror2(@(addr))
|
|
txt.print_ubbin(@(addr), true)
|
|
txt.nl()
|
|
ror2(@(addr))
|
|
txt.print_ubbin(@(addr), true)
|
|
txt.nl()
|
|
ror2(@(addr))
|
|
txt.print_ubbin(@(addr), true)
|
|
txt.nl()
|
|
txt.nl()
|
|
|
|
test_stack.test()
|
|
|
|
}
|
|
|
|
sub integers() {
|
|
ubyte[] ubarr = [1,2,3,4,5,0,4,3,2,1, 255, 255, 255]
|
|
byte[] barr = [1,2,3,4,5,-4,0,-3,2,1, -128, -128, -127]
|
|
uword[] uwarr = [100,200,300,400,0,500,400,300,200,100]
|
|
word[] warr = [100,200,300,400,500,0,-400,-300,200,100,-99, -4096]
|
|
|
|
ubyte zero=0
|
|
ubyte ub
|
|
ubyte ub2
|
|
byte bb
|
|
uword uw
|
|
word ww
|
|
|
|
repeat(20) {
|
|
txt.nl()
|
|
}
|
|
|
|
ub = sys.read_flags()
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
ub = zero+sys.read_flags()*1+zero
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
|
|
|
|
ub = rnd()
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
ub = zero+rnd()*1+zero
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
|
|
uw = rndw()
|
|
txt.print_uw(uw)
|
|
txt.nl()
|
|
uw = zero+rndw()*1+zero
|
|
txt.print_uw(uw)
|
|
txt.nl()
|
|
|
|
|
|
uw = 50000
|
|
ub = sqrt16(uw)
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
ub = zero+sqrt16(uw)*1+zero
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
|
|
bb = -100
|
|
bb = sgn(bb)
|
|
txt.print_b(bb)
|
|
txt.nl()
|
|
bb = -100
|
|
bb = zero+sgn(bb)*1+zero
|
|
txt.print_b(bb)
|
|
txt.nl()
|
|
|
|
ub = 100
|
|
bb = sgn(ub)
|
|
txt.print_b(bb)
|
|
txt.nl()
|
|
ub = 100
|
|
bb = zero+sgn(ub)*1+zero
|
|
txt.print_b(bb)
|
|
txt.nl()
|
|
|
|
ww = -1000
|
|
bb = sgn(ww)
|
|
txt.print_b(bb)
|
|
txt.nl()
|
|
bb = zero+sgn(ww)*1+zero
|
|
txt.print_b(bb)
|
|
txt.nl()
|
|
|
|
uw = 1000
|
|
bb = sgn(uw)
|
|
txt.print_b(bb)
|
|
txt.nl()
|
|
bb = zero+sgn(uw)*1+zero
|
|
txt.print_b(bb)
|
|
txt.nl()
|
|
|
|
bb = -100
|
|
bb = abs(bb) as byte
|
|
txt.print_b(bb)
|
|
txt.nl()
|
|
bb = -100
|
|
bb = zero+(abs(bb) as byte)*1+zero
|
|
txt.print_b(bb)
|
|
txt.nl()
|
|
|
|
ww = -1000
|
|
ww = abs(ww) as word
|
|
txt.print_w(ww)
|
|
txt.nl()
|
|
ww = -1000
|
|
ww = zero+(abs(ww) as word)*1+zero
|
|
txt.print_w(ww)
|
|
txt.nl()
|
|
|
|
ub = any(ubarr)
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
ub = zero+any(ubarr)*1+zero
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
|
|
ub = any(barr)
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
ub = zero+any(barr)*1+zero
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
|
|
ub = any(uwarr)
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
ub = zero+any(uwarr)*1+zero
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
|
|
ub = any(warr)
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
ub = zero+any(warr)*1+zero
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
|
|
ub = all(ubarr)
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
ub = zero+all(ubarr)*1+zero
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
|
|
ub = all(barr)
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
ub = zero+all(barr)*1+zero
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
|
|
ub = all(uwarr)
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
ub = zero+all(uwarr)*1+zero
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
|
|
ub = all(warr)
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
ub = zero+all(warr)*1+zero
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
|
|
sort(ubarr)
|
|
sort(barr)
|
|
sort(uwarr)
|
|
sort(warr)
|
|
reverse(ubarr)
|
|
reverse(barr)
|
|
reverse(uwarr)
|
|
reverse(warr)
|
|
|
|
test_stack.test()
|
|
}
|
|
|
|
sub floatingpoint() {
|
|
ubyte[] barr = [1,2,3,4,5,0,4,3,2,1]
|
|
float[] flarr = [1.1, 2.2, 3.3, 0.0, -9.9, 5.5, 4.4]
|
|
|
|
ubyte zero=0
|
|
ubyte ub
|
|
byte bb
|
|
uword uw
|
|
float fl
|
|
float fzero=0.0
|
|
|
|
fl = -9.9
|
|
bb = sgn(fl)
|
|
txt.print_b(bb)
|
|
txt.nl()
|
|
fl = -9.9
|
|
bb = zero+sgn(fl)*1+zero
|
|
txt.print_b(bb)
|
|
txt.nl()
|
|
|
|
ub = any(flarr)
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
ub = zero+any(flarr)*1+zero
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
ub = all(flarr)
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
ub = zero+all(flarr)*1+zero
|
|
txt.print_ub(ub)
|
|
txt.nl()
|
|
|
|
reverse(flarr)
|
|
for ub in 0 to len(flarr)-1 {
|
|
floats.print_f(flarr[ub])
|
|
txt.chrout(',')
|
|
}
|
|
txt.nl()
|
|
|
|
test_stack.test()
|
|
}
|
|
}
|