From 6eb9118197f43a5182780262eecf0af6d82dd077 Mon Sep 17 00:00:00 2001 From: Irmen de Jong Date: Sat, 7 Nov 2020 01:08:56 +0100 Subject: [PATCH] example --- examples/arithmetic/builtins.p8 | 866 ++++++++++++++++++++++++++++++++ examples/test.p8 | 825 ------------------------------ 2 files changed, 866 insertions(+), 825 deletions(-) create mode 100644 examples/arithmetic/builtins.p8 diff --git a/examples/arithmetic/builtins.p8 b/examples/arithmetic/builtins.p8 new file mode 100644 index 000000000..de9a3c5b3 --- /dev/null +++ b/examples/arithmetic/builtins.p8 @@ -0,0 +1,866 @@ +%import textio +%import floats +%import syslib +%zeropage basicsafe + +main { + + sub start() { + rotations() + strings() + integers() + floatingpoint() + + testX() + } + + sub rotations() { + ubyte[] ubarr = [%11000111] + uword[] uwarr = [%1100111110101010] + + repeat(10) { + txt.chrout('\n') + } + + txt.print_uwbin(uwarr[0], true) + txt.chrout('\n') + set_carry() + rol(uwarr[0]) + txt.print_uwbin(uwarr[0], true) + txt.chrout('\n') + set_carry() + rol(uwarr[0]) + txt.print_uwbin(uwarr[0], true) + txt.chrout('\n') + set_carry() + rol(uwarr[0]) + txt.print_uwbin(uwarr[0], true) + txt.chrout('\n') + set_carry() + rol(uwarr[0]) + txt.print_uwbin(uwarr[0], true) + txt.chrout('\n') + txt.chrout('\n') + + uwarr[0] = %1100111110101010 + ror(uwarr[0]) + txt.print_uwbin(uwarr[0], true) + txt.chrout('\n') + set_carry() + ror(uwarr[0]) + txt.print_uwbin(uwarr[0], true) + txt.chrout('\n') + set_carry() + ror(uwarr[0]) + txt.print_uwbin(uwarr[0], true) + txt.chrout('\n') + set_carry() + ror(uwarr[0]) + txt.print_uwbin(uwarr[0], true) + txt.chrout('\n') + set_carry() + ror(uwarr[0]) + txt.print_uwbin(uwarr[0], true) + txt.chrout('\n') + txt.chrout('\n') + + clear_carry() + txt.print_uwbin(uwarr[0], true) + txt.chrout('\n') + rol2(uwarr[0]) + txt.print_uwbin(uwarr[0], true) + txt.chrout('\n') + rol2(uwarr[0]) + txt.print_uwbin(uwarr[0], true) + txt.chrout('\n') + rol2(uwarr[0]) + txt.print_uwbin(uwarr[0], true) + txt.chrout('\n') + rol2(uwarr[0]) + txt.print_uwbin(uwarr[0], true) + txt.chrout('\n') + txt.chrout('\n') + + txt.print_uwbin(uwarr[0], true) + txt.chrout('\n') + ror2(uwarr[0]) + txt.print_uwbin(uwarr[0], true) + txt.chrout('\n') + ror2(uwarr[0]) + txt.print_uwbin(uwarr[0], true) + txt.chrout('\n') + ror2(uwarr[0]) + txt.print_uwbin(uwarr[0], true) + txt.chrout('\n') + ror2(uwarr[0]) + txt.print_uwbin(uwarr[0], true) + txt.chrout('\n') + txt.chrout('\n') + + txt.print_ubbin(ubarr[0], true) + txt.chrout('\n') + set_carry() + rol(ubarr[0]) + txt.print_ubbin(ubarr[0], true) + txt.chrout('\n') + set_carry() + rol(ubarr[0]) + txt.print_ubbin(ubarr[0], true) + txt.chrout('\n') + set_carry() + rol(ubarr[0]) + txt.print_ubbin(ubarr[0], true) + txt.chrout('\n') + set_carry() + rol(ubarr[0]) + txt.print_ubbin(ubarr[0], true) + txt.chrout('\n') + txt.chrout('\n') + + set_carry() + ror(ubarr[0]) + txt.print_ubbin(ubarr[0], true) + txt.chrout('\n') + set_carry() + ror(ubarr[0]) + txt.print_ubbin(ubarr[0], true) + txt.chrout('\n') + set_carry() + ror(ubarr[0]) + txt.print_ubbin(ubarr[0], true) + txt.chrout('\n') + set_carry() + ror(ubarr[0]) + txt.print_ubbin(ubarr[0], true) + txt.chrout('\n') + set_carry() + ror(ubarr[0]) + txt.print_ubbin(ubarr[0], true) + txt.chrout('\n') + txt.chrout('\n') + + + txt.print_ubbin(ubarr[0], true) + txt.chrout('\n') + rol2(ubarr[0]) + txt.print_ubbin(ubarr[0], true) + txt.chrout('\n') + rol2(ubarr[0]) + txt.print_ubbin(ubarr[0], true) + txt.chrout('\n') + rol2(ubarr[0]) + txt.print_ubbin(ubarr[0], true) + txt.chrout('\n') + rol2(ubarr[0]) + txt.print_ubbin(ubarr[0], true) + txt.chrout('\n') + txt.chrout('\n') + + txt.print_ubbin(ubarr[0], true) + txt.chrout('\n') + ror2(ubarr[0]) + txt.print_ubbin(ubarr[0], true) + txt.chrout('\n') + ror2(ubarr[0]) + txt.print_ubbin(ubarr[0], true) + txt.chrout('\n') + ror2(ubarr[0]) + txt.print_ubbin(ubarr[0], true) + txt.chrout('\n') + ror2(ubarr[0]) + txt.print_ubbin(ubarr[0], true) + txt.chrout('\n') + txt.chrout('\n') + + &ubyte membyte = $c000 + uword addr = $c000 + + @(addr) = %10110101 + txt.print_ubbin(@(addr), true) + txt.chrout('\n') + set_carry() + rol(@(addr)) + txt.print_ubbin(@(addr), true) + txt.chrout('\n') + set_carry() + rol(@(addr)) + txt.print_ubbin(@(addr), true) + txt.chrout('\n') + set_carry() + rol(@(addr)) + txt.print_ubbin(@(addr), true) + txt.chrout('\n') + set_carry() + rol(@(addr)) + txt.print_ubbin(@(addr), true) + txt.chrout('\n') + txt.chrout('\n') + + @(addr) = %10110101 + txt.print_ubbin(@(addr), true) + txt.chrout('\n') + set_carry() + ror(@(addr)) + txt.print_ubbin(@(addr), true) + txt.chrout('\n') + set_carry() + ror(@(addr)) + txt.print_ubbin(@(addr), true) + txt.chrout('\n') + set_carry() + ror(@(addr)) + txt.print_ubbin(@(addr), true) + txt.chrout('\n') + set_carry() + ror(@(addr)) + txt.print_ubbin(@(addr), true) + txt.chrout('\n') + txt.chrout('\n') + + @(addr) = %10110101 + txt.print_ubbin(@(addr), true) + txt.chrout('\n') + rol2(@(addr)) + txt.print_ubbin(@(addr), true) + txt.chrout('\n') + rol2(@(addr)) + txt.print_ubbin(@(addr), true) + txt.chrout('\n') + rol2(@(addr)) + txt.print_ubbin(@(addr), true) + txt.chrout('\n') + rol2(@(addr)) + txt.print_ubbin(@(addr), true) + txt.chrout('\n') + txt.chrout('\n') + + @(addr) = %10110101 + txt.print_ubbin(@(addr), true) + txt.chrout('\n') + ror2(@(addr)) + txt.print_ubbin(@(addr), true) + txt.chrout('\n') + ror2(@(addr)) + txt.print_ubbin(@(addr), true) + txt.chrout('\n') + ror2(@(addr)) + txt.print_ubbin(@(addr), true) + txt.chrout('\n') + ror2(@(addr)) + txt.print_ubbin(@(addr), true) + txt.chrout('\n') + txt.chrout('\n') + + + testX() + + } + + sub strings() { + const uword ADDR = $8400 + const uword ADDR2 = $8000 + + memset(ADDR2, 40*25, '*') + memset(ADDR2, 40, '1') + memset(ADDR2+24*40, 39, '2') + memsetw(ADDR2, 40*25/2, $3132) + memsetw(ADDR2, 20, $4142) + memsetw(ADDR2+24*40, 19, $4241) + memcopy(ADDR2, ADDR, 200) + + str result = "?" *10 + str s1 = "irmen" + str s2 = "hello" + str dots = "....." + + ubyte ub + byte bb + ubyte zero=0 + + bb = strcmp(s1, s2) + txt.print_b(bb) + txt.chrout('\n') + bb = strcmp(s2, s1) + txt.print_b(bb) + txt.chrout('\n') + txt.print_ub(s1==s2) + txt.chrout('\n') + txt.print_ub(s1s2) + txt.chrout('\n') + bb = zero+strcmp(s1,s2)*1+zero + txt.print_b(bb) + txt.chrout('\n') + bb = zero+strcmp(s2,s1)*1+zero + txt.print_b(bb) + txt.chrout('\n') + + ub = strlen(s1) + txt.print_ub(ub) + txt.chrout('\n') + ub = zero+strlen(s1)*1+zero + txt.print_ub(ub) + txt.chrout('\n') + + leftstr(s1, result, 3) + txt.print(result) + txt.chrout('\n') + leftstr(s1, result, len(s1)) + txt.print(result) + txt.chrout('\n') + txt.chrout('\n') + + result = "x"*8 + rightstr(s2, result, 3) + txt.print(result) + txt.chrout('\n') + rightstr(s2, result, len(s1)) + txt.print(result) + txt.chrout('\n') + + result = "y"*10 + substr(s2, result, 1, 3) + txt.print(result) + txt.chrout('\n') + + testX() + + } + + 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.chrout('\n') + } + + ub = read_flags() + txt.print_ub(ub) + txt.chrout('\n') + ub = zero+read_flags()*1+zero + txt.print_ub(ub) + txt.chrout('\n') + + + ub = rnd() + txt.print_ub(ub) + txt.chrout('\n') + ub = zero+rnd()*1+zero + txt.print_ub(ub) + txt.chrout('\n') + + uw = rndw() + txt.print_uw(uw) + txt.chrout('\n') + uw = zero+rndw()*1+zero + txt.print_uw(uw) + txt.chrout('\n') + + + uw = 50000 + ub = sqrt16(uw) + txt.print_ub(ub) + txt.chrout('\n') + ub = zero+sqrt16(uw)*1+zero + txt.print_ub(ub) + txt.chrout('\n') + + bb = -100 + bb = sgn(bb) + txt.print_b(bb) + txt.chrout('\n') + bb = -100 + bb = zero+sgn(bb)*1+zero + txt.print_b(bb) + txt.chrout('\n') + + ub = 100 + bb = sgn(ub) + txt.print_b(bb) + txt.chrout('\n') + ub = 100 + bb = zero+sgn(ub)*1+zero + txt.print_b(bb) + txt.chrout('\n') + + ww = -1000 + bb = sgn(ww) + txt.print_b(bb) + txt.chrout('\n') + bb = zero+sgn(ww)*1+zero + txt.print_b(bb) + txt.chrout('\n') + + uw = 1000 + bb = sgn(uw) + txt.print_b(bb) + txt.chrout('\n') + bb = zero+sgn(uw)*1+zero + txt.print_b(bb) + txt.chrout('\n') + + ub = 0 + uw = sin16u(ub) + txt.print_uw(uw) + txt.chrout('\n') + uw = zero+sin16u(ub)*1+zero + txt.print_uw(uw) + txt.chrout('\n') + + ub = 0 + uw = cos16u(ub) + txt.print_uw(uw) + txt.chrout('\n') + uw = zero+cos16u(ub)*1+zero + txt.print_uw(uw) + txt.chrout('\n') + + ub = 0 + ww = sin16(ub) + txt.print_w(ww) + txt.chrout('\n') + ww = zero+sin16(ub)*1+zero + txt.print_w(ww) + txt.chrout('\n') + + ub = 0 + ww = cos16(ub) + txt.print_w(ww) + txt.chrout('\n') + uw = 0 + ww = zero+cos16(ub)*1+zero + txt.print_w(ww) + txt.chrout('\n') + + ub2 = 0 + ub = sin8u(ub2) + txt.print_ub(ub) + txt.chrout('\n') + ub = zero+sin8u(ub2)*1+zero + txt.print_ub(ub) + txt.chrout('\n') + + ub2 = 0 + ub = cos8u(ub2) + txt.print_ub(ub) + txt.chrout('\n') + ub = zero+cos8u(ub2)*1+zero + txt.print_ub(ub) + txt.chrout('\n') + + ub2 = 0 + bb = sin8(ub2) + txt.print_b(bb) + txt.chrout('\n') + bb = zero+sin8(ub2)*1+zero + txt.print_b(bb) + txt.chrout('\n') + + ub2 = 0 + bb = cos8(ub2) + txt.print_b(bb) + txt.chrout('\n') + bb = zero+cos8(ub2)*1+zero + txt.print_b(bb) + txt.chrout('\n') + + bb = -100 + bb = abs(bb) + txt.print_b(bb) + txt.chrout('\n') + bb = -100 + bb = zero+abs(bb)*1+zero + txt.print_b(bb) + txt.chrout('\n') + + ww = -1000 + ww = abs(ww) + txt.print_w(ww) + txt.chrout('\n') + ww = -1000 + ww = zero+abs(ww)*1+zero + txt.print_w(ww) + txt.chrout('\n') + + ub = min(ubarr) + txt.print_ub(ub) + txt.chrout('\n') + ub = zero+min(ubarr)*1+zero + txt.print_ub(ub) + txt.chrout('\n') + + bb = min(barr) + txt.print_b(bb) + txt.chrout('\n') + bb = zero+min(barr)*1+zero + txt.print_b(bb) + txt.chrout('\n') + + uw = min(uwarr) + txt.print_uw(uw) + txt.chrout('\n') + uw = zero+min(uwarr)*1+zero + txt.print_uw(uw) + txt.chrout('\n') + + ww = min(warr) + txt.print_w(ww) + txt.chrout('\n') + ww = zero+min(warr)*1+zero + txt.print_w(ww) + txt.chrout('\n') + + ub = max(ubarr) + txt.print_ub(ub) + txt.chrout('\n') + ub = zero+max(ubarr)*1+zero + txt.print_ub(ub) + txt.chrout('\n') + + bb = max(barr) + txt.print_b(bb) + txt.chrout('\n') + bb = zero+max(barr)*1+zero + txt.print_b(bb) + txt.chrout('\n') + + uw = max(uwarr) + txt.print_uw(uw) + txt.chrout('\n') + uw = zero+max(uwarr)*1+zero + txt.print_uw(uw) + txt.chrout('\n') + + ww = max(warr) + txt.print_w(ww) + txt.chrout('\n') + ww = zero+max(warr)*1+zero + txt.print_w(ww) + txt.chrout('\n') + + ub = any(ubarr) + txt.print_ub(ub) + txt.chrout('\n') + ub = zero+any(ubarr)*1+zero + txt.print_ub(ub) + txt.chrout('\n') + + ub = any(barr) + txt.print_ub(ub) + txt.chrout('\n') + ub = zero+any(barr)*1+zero + txt.print_ub(ub) + txt.chrout('\n') + + ub = any(uwarr) + txt.print_ub(ub) + txt.chrout('\n') + ub = zero+any(uwarr)*1+zero + txt.print_ub(ub) + txt.chrout('\n') + + ub = any(warr) + txt.print_ub(ub) + txt.chrout('\n') + ub = zero+any(warr)*1+zero + txt.print_ub(ub) + txt.chrout('\n') + + ub = all(ubarr) + txt.print_ub(ub) + txt.chrout('\n') + ub = zero+all(ubarr)*1+zero + txt.print_ub(ub) + txt.chrout('\n') + + ub = all(barr) + txt.print_ub(ub) + txt.chrout('\n') + ub = zero+all(barr)*1+zero + txt.print_ub(ub) + txt.chrout('\n') + + ub = all(uwarr) + txt.print_ub(ub) + txt.chrout('\n') + ub = zero+all(uwarr)*1+zero + txt.print_ub(ub) + txt.chrout('\n') + + ub = all(warr) + txt.print_ub(ub) + txt.chrout('\n') + ub = zero+all(warr)*1+zero + txt.print_ub(ub) + txt.chrout('\n') + + + uw = sum(ubarr) + txt.print_uw(uw) + txt.chrout('\n') + uw = zero+sum(ubarr)*1+zero + txt.print_uw(uw) + txt.chrout('\n') + + ww = sum(barr) + txt.print_w(ww) + txt.chrout('\n') + ww = zero+sum(barr)*1+zero + txt.print_w(ww) + txt.chrout('\n') + + uw = sum(uwarr) + txt.print_uw(uw) + txt.chrout('\n') + uw = zero+sum(uwarr)*1+zero + txt.print_uw(uw) + txt.chrout('\n') + + ww = sum(warr) + txt.print_w(ww) + txt.chrout('\n') + ww = zero+sum(warr)*1+zero + txt.print_w(ww) + txt.chrout('\n') + + sort(ubarr) + sort(barr) + sort(uwarr) + sort(warr) + reverse(ubarr) + reverse(barr) + reverse(uwarr) + reverse(warr) + + testX() + } + + 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 + fl = abs(fl) + floats.print_f(fl) + txt.chrout('\n') + fl = -9.9 + fl = fzero+abs(fl)*1.0+fzero + floats.print_f(fl) + txt.chrout('\n') + + fl = 9.9 + fl = atan(fl) + floats.print_f(fl) + txt.chrout('\n') + fl = 9.9 + fl = fzero+atan(fl)*1.0+fzero + floats.print_f(fl) + txt.chrout('\n') + + fl = -9.9 + fl = ceil(fl) + floats.print_f(fl) + txt.chrout('\n') + fl = -9.9 + fl = fzero+ceil(fl)*1.0+fzero + floats.print_f(fl) + txt.chrout('\n') + + fl = -9.9 + fl = cos(fl) + floats.print_f(fl) + txt.chrout('\n') + fl = -9.9 + fl = fzero+cos(fl)*1.0+fzero + floats.print_f(fl) + txt.chrout('\n') + + fl = -9.9 + fl = sin(fl) + floats.print_f(fl) + txt.chrout('\n') + fl = -9.9 + fl = fzero+sin(fl)*1.0+fzero + floats.print_f(fl) + txt.chrout('\n') + + fl = 9.9 + fl = tan(fl) + floats.print_f(fl) + txt.chrout('\n') + fl = 9.9 + fl = fzero+tan(fl)*1.0+fzero + floats.print_f(fl) + txt.chrout('\n') + + fl = 3.1415927 + fl = deg(fl) + floats.print_f(fl) + txt.chrout('\n') + fl = 3.1415927 + fl = fzero+deg(fl)*1.0+fzero + floats.print_f(fl) + txt.chrout('\n') + + fl = 90 + fl = rad(fl) + floats.print_f(fl) + txt.chrout('\n') + fl = 90 + fl = fzero+rad(fl)*1.0+fzero + floats.print_f(fl) + txt.chrout('\n') + + fl = -9.9 + fl = floor(fl) + floats.print_f(fl) + txt.chrout('\n') + fl = -9.9 + fl = fzero+floor(fl)*1.0+fzero + floats.print_f(fl) + txt.chrout('\n') + + fl = 3.1415927 + fl = ln(fl) + floats.print_f(fl) + txt.chrout('\n') + fl = 3.1415927 + fl = fzero+ln(fl)*1.0+fzero + floats.print_f(fl) + txt.chrout('\n') + + fl = 3.1415927 + fl = log2(fl) + floats.print_f(fl) + txt.chrout('\n') + fl = 3.1415927 + fl = fzero+log2(fl)*1.0+fzero + floats.print_f(fl) + txt.chrout('\n') + + fl = -9.9 + fl = round(fl) + floats.print_f(fl) + txt.chrout('\n') + fl = -9.9 + fl = fzero+round(fl)*1.0+fzero + floats.print_f(fl) + txt.chrout('\n') + + fl = -9.9 + bb = sgn(fl) + txt.print_b(bb) + txt.chrout('\n') + fl = -9.9 + bb = zero+sgn(fl)*1+zero + txt.print_b(bb) + txt.chrout('\n') + + fl = 3.1415927 + fl = sqrt(fl) + floats.print_f(fl) + txt.chrout('\n') + fl = 3.1415927 + fl = fzero+sqrt(fl)*1.0+fzero + floats.print_f(fl) + txt.chrout('\n') + + fl = rndf() + floats.print_f(fl) + txt.chrout('\n') + fl = fzero+rndf()*1.0+fzero + floats.print_f(fl) + txt.chrout('\n') + + swap(fl, fzero) + swap(fzero, fl) + + ub = any(flarr) + txt.print_ub(ub) + txt.chrout('\n') + ub = zero+any(flarr)*1+zero + txt.print_ub(ub) + txt.chrout('\n') + ub = all(flarr) + txt.print_ub(ub) + txt.chrout('\n') + ub = zero+all(flarr)*1+zero + txt.print_ub(ub) + txt.chrout('\n') + + reverse(flarr) + for ub in 0 to len(flarr)-1 { + floats.print_f(flarr[ub]) + txt.chrout(',') + } + txt.chrout('\n') + fl = max(flarr) + floats.print_f(fl) + txt.chrout('\n') + fl = fzero+max(flarr)*1.0+fzero + floats.print_f(fl) + txt.chrout('\n') + fl = min(flarr) + floats.print_f(fl) + txt.chrout('\n') + fl = fzero+min(flarr)*1.0+fzero + floats.print_f(fl) + txt.chrout('\n') + fl = sum(flarr) + floats.print_f(fl) + txt.chrout('\n') + fl = fzero+sum(flarr)*1.0+fzero + floats.print_f(fl) + txt.chrout('\n') + + testX() + } + + asmsub testX() { + %asm {{ + stx _saveX + lda #13 + jsr txt.chrout + lda #'x' + jsr txt.chrout + lda #'=' + jsr txt.chrout + lda _saveX + jsr txt.print_ub + lda #' ' + jsr txt.chrout + lda #'s' + jsr txt.chrout + lda #'p' + jsr txt.chrout + lda #'=' + jsr txt.chrout + tsx + txa + jsr txt.print_ub + lda #13 + jsr txt.chrout + ldx _saveX + rts +_saveX .byte 0 + }} + } +} diff --git a/examples/test.p8 b/examples/test.p8 index de9a3c5b3..626b785bc 100644 --- a/examples/test.p8 +++ b/examples/test.p8 @@ -6,831 +6,6 @@ main { sub start() { - rotations() - strings() - integers() - floatingpoint() - - testX() - } - - sub rotations() { - ubyte[] ubarr = [%11000111] - uword[] uwarr = [%1100111110101010] - - repeat(10) { - txt.chrout('\n') - } - - txt.print_uwbin(uwarr[0], true) - txt.chrout('\n') - set_carry() - rol(uwarr[0]) - txt.print_uwbin(uwarr[0], true) - txt.chrout('\n') - set_carry() - rol(uwarr[0]) - txt.print_uwbin(uwarr[0], true) - txt.chrout('\n') - set_carry() - rol(uwarr[0]) - txt.print_uwbin(uwarr[0], true) - txt.chrout('\n') - set_carry() - rol(uwarr[0]) - txt.print_uwbin(uwarr[0], true) - txt.chrout('\n') - txt.chrout('\n') - - uwarr[0] = %1100111110101010 - ror(uwarr[0]) - txt.print_uwbin(uwarr[0], true) - txt.chrout('\n') - set_carry() - ror(uwarr[0]) - txt.print_uwbin(uwarr[0], true) - txt.chrout('\n') - set_carry() - ror(uwarr[0]) - txt.print_uwbin(uwarr[0], true) - txt.chrout('\n') - set_carry() - ror(uwarr[0]) - txt.print_uwbin(uwarr[0], true) - txt.chrout('\n') - set_carry() - ror(uwarr[0]) - txt.print_uwbin(uwarr[0], true) - txt.chrout('\n') - txt.chrout('\n') - - clear_carry() - txt.print_uwbin(uwarr[0], true) - txt.chrout('\n') - rol2(uwarr[0]) - txt.print_uwbin(uwarr[0], true) - txt.chrout('\n') - rol2(uwarr[0]) - txt.print_uwbin(uwarr[0], true) - txt.chrout('\n') - rol2(uwarr[0]) - txt.print_uwbin(uwarr[0], true) - txt.chrout('\n') - rol2(uwarr[0]) - txt.print_uwbin(uwarr[0], true) - txt.chrout('\n') - txt.chrout('\n') - - txt.print_uwbin(uwarr[0], true) - txt.chrout('\n') - ror2(uwarr[0]) - txt.print_uwbin(uwarr[0], true) - txt.chrout('\n') - ror2(uwarr[0]) - txt.print_uwbin(uwarr[0], true) - txt.chrout('\n') - ror2(uwarr[0]) - txt.print_uwbin(uwarr[0], true) - txt.chrout('\n') - ror2(uwarr[0]) - txt.print_uwbin(uwarr[0], true) - txt.chrout('\n') - txt.chrout('\n') - - txt.print_ubbin(ubarr[0], true) - txt.chrout('\n') - set_carry() - rol(ubarr[0]) - txt.print_ubbin(ubarr[0], true) - txt.chrout('\n') - set_carry() - rol(ubarr[0]) - txt.print_ubbin(ubarr[0], true) - txt.chrout('\n') - set_carry() - rol(ubarr[0]) - txt.print_ubbin(ubarr[0], true) - txt.chrout('\n') - set_carry() - rol(ubarr[0]) - txt.print_ubbin(ubarr[0], true) - txt.chrout('\n') - txt.chrout('\n') - - set_carry() - ror(ubarr[0]) - txt.print_ubbin(ubarr[0], true) - txt.chrout('\n') - set_carry() - ror(ubarr[0]) - txt.print_ubbin(ubarr[0], true) - txt.chrout('\n') - set_carry() - ror(ubarr[0]) - txt.print_ubbin(ubarr[0], true) - txt.chrout('\n') - set_carry() - ror(ubarr[0]) - txt.print_ubbin(ubarr[0], true) - txt.chrout('\n') - set_carry() - ror(ubarr[0]) - txt.print_ubbin(ubarr[0], true) - txt.chrout('\n') - txt.chrout('\n') - - - txt.print_ubbin(ubarr[0], true) - txt.chrout('\n') - rol2(ubarr[0]) - txt.print_ubbin(ubarr[0], true) - txt.chrout('\n') - rol2(ubarr[0]) - txt.print_ubbin(ubarr[0], true) - txt.chrout('\n') - rol2(ubarr[0]) - txt.print_ubbin(ubarr[0], true) - txt.chrout('\n') - rol2(ubarr[0]) - txt.print_ubbin(ubarr[0], true) - txt.chrout('\n') - txt.chrout('\n') - - txt.print_ubbin(ubarr[0], true) - txt.chrout('\n') - ror2(ubarr[0]) - txt.print_ubbin(ubarr[0], true) - txt.chrout('\n') - ror2(ubarr[0]) - txt.print_ubbin(ubarr[0], true) - txt.chrout('\n') - ror2(ubarr[0]) - txt.print_ubbin(ubarr[0], true) - txt.chrout('\n') - ror2(ubarr[0]) - txt.print_ubbin(ubarr[0], true) - txt.chrout('\n') - txt.chrout('\n') - - &ubyte membyte = $c000 - uword addr = $c000 - - @(addr) = %10110101 - txt.print_ubbin(@(addr), true) - txt.chrout('\n') - set_carry() - rol(@(addr)) - txt.print_ubbin(@(addr), true) - txt.chrout('\n') - set_carry() - rol(@(addr)) - txt.print_ubbin(@(addr), true) - txt.chrout('\n') - set_carry() - rol(@(addr)) - txt.print_ubbin(@(addr), true) - txt.chrout('\n') - set_carry() - rol(@(addr)) - txt.print_ubbin(@(addr), true) - txt.chrout('\n') - txt.chrout('\n') - - @(addr) = %10110101 - txt.print_ubbin(@(addr), true) - txt.chrout('\n') - set_carry() - ror(@(addr)) - txt.print_ubbin(@(addr), true) - txt.chrout('\n') - set_carry() - ror(@(addr)) - txt.print_ubbin(@(addr), true) - txt.chrout('\n') - set_carry() - ror(@(addr)) - txt.print_ubbin(@(addr), true) - txt.chrout('\n') - set_carry() - ror(@(addr)) - txt.print_ubbin(@(addr), true) - txt.chrout('\n') - txt.chrout('\n') - - @(addr) = %10110101 - txt.print_ubbin(@(addr), true) - txt.chrout('\n') - rol2(@(addr)) - txt.print_ubbin(@(addr), true) - txt.chrout('\n') - rol2(@(addr)) - txt.print_ubbin(@(addr), true) - txt.chrout('\n') - rol2(@(addr)) - txt.print_ubbin(@(addr), true) - txt.chrout('\n') - rol2(@(addr)) - txt.print_ubbin(@(addr), true) - txt.chrout('\n') - txt.chrout('\n') - - @(addr) = %10110101 - txt.print_ubbin(@(addr), true) - txt.chrout('\n') - ror2(@(addr)) - txt.print_ubbin(@(addr), true) - txt.chrout('\n') - ror2(@(addr)) - txt.print_ubbin(@(addr), true) - txt.chrout('\n') - ror2(@(addr)) - txt.print_ubbin(@(addr), true) - txt.chrout('\n') - ror2(@(addr)) - txt.print_ubbin(@(addr), true) - txt.chrout('\n') - txt.chrout('\n') - - - testX() - - } - - sub strings() { - const uword ADDR = $8400 - const uword ADDR2 = $8000 - - memset(ADDR2, 40*25, '*') - memset(ADDR2, 40, '1') - memset(ADDR2+24*40, 39, '2') - memsetw(ADDR2, 40*25/2, $3132) - memsetw(ADDR2, 20, $4142) - memsetw(ADDR2+24*40, 19, $4241) - memcopy(ADDR2, ADDR, 200) - - str result = "?" *10 - str s1 = "irmen" - str s2 = "hello" - str dots = "....." - - ubyte ub - byte bb - ubyte zero=0 - - bb = strcmp(s1, s2) - txt.print_b(bb) - txt.chrout('\n') - bb = strcmp(s2, s1) - txt.print_b(bb) - txt.chrout('\n') - txt.print_ub(s1==s2) - txt.chrout('\n') - txt.print_ub(s1s2) - txt.chrout('\n') - bb = zero+strcmp(s1,s2)*1+zero - txt.print_b(bb) - txt.chrout('\n') - bb = zero+strcmp(s2,s1)*1+zero - txt.print_b(bb) - txt.chrout('\n') - - ub = strlen(s1) - txt.print_ub(ub) - txt.chrout('\n') - ub = zero+strlen(s1)*1+zero - txt.print_ub(ub) - txt.chrout('\n') - - leftstr(s1, result, 3) - txt.print(result) - txt.chrout('\n') - leftstr(s1, result, len(s1)) - txt.print(result) - txt.chrout('\n') - txt.chrout('\n') - - result = "x"*8 - rightstr(s2, result, 3) - txt.print(result) - txt.chrout('\n') - rightstr(s2, result, len(s1)) - txt.print(result) - txt.chrout('\n') - - result = "y"*10 - substr(s2, result, 1, 3) - txt.print(result) - txt.chrout('\n') - - testX() - - } - - 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.chrout('\n') - } - - ub = read_flags() - txt.print_ub(ub) - txt.chrout('\n') - ub = zero+read_flags()*1+zero - txt.print_ub(ub) - txt.chrout('\n') - - - ub = rnd() - txt.print_ub(ub) - txt.chrout('\n') - ub = zero+rnd()*1+zero - txt.print_ub(ub) - txt.chrout('\n') - - uw = rndw() - txt.print_uw(uw) - txt.chrout('\n') - uw = zero+rndw()*1+zero - txt.print_uw(uw) - txt.chrout('\n') - - - uw = 50000 - ub = sqrt16(uw) - txt.print_ub(ub) - txt.chrout('\n') - ub = zero+sqrt16(uw)*1+zero - txt.print_ub(ub) - txt.chrout('\n') - - bb = -100 - bb = sgn(bb) - txt.print_b(bb) - txt.chrout('\n') - bb = -100 - bb = zero+sgn(bb)*1+zero - txt.print_b(bb) - txt.chrout('\n') - - ub = 100 - bb = sgn(ub) - txt.print_b(bb) - txt.chrout('\n') - ub = 100 - bb = zero+sgn(ub)*1+zero - txt.print_b(bb) - txt.chrout('\n') - - ww = -1000 - bb = sgn(ww) - txt.print_b(bb) - txt.chrout('\n') - bb = zero+sgn(ww)*1+zero - txt.print_b(bb) - txt.chrout('\n') - - uw = 1000 - bb = sgn(uw) - txt.print_b(bb) - txt.chrout('\n') - bb = zero+sgn(uw)*1+zero - txt.print_b(bb) - txt.chrout('\n') - - ub = 0 - uw = sin16u(ub) - txt.print_uw(uw) - txt.chrout('\n') - uw = zero+sin16u(ub)*1+zero - txt.print_uw(uw) - txt.chrout('\n') - - ub = 0 - uw = cos16u(ub) - txt.print_uw(uw) - txt.chrout('\n') - uw = zero+cos16u(ub)*1+zero - txt.print_uw(uw) - txt.chrout('\n') - - ub = 0 - ww = sin16(ub) - txt.print_w(ww) - txt.chrout('\n') - ww = zero+sin16(ub)*1+zero - txt.print_w(ww) - txt.chrout('\n') - - ub = 0 - ww = cos16(ub) - txt.print_w(ww) - txt.chrout('\n') - uw = 0 - ww = zero+cos16(ub)*1+zero - txt.print_w(ww) - txt.chrout('\n') - - ub2 = 0 - ub = sin8u(ub2) - txt.print_ub(ub) - txt.chrout('\n') - ub = zero+sin8u(ub2)*1+zero - txt.print_ub(ub) - txt.chrout('\n') - - ub2 = 0 - ub = cos8u(ub2) - txt.print_ub(ub) - txt.chrout('\n') - ub = zero+cos8u(ub2)*1+zero - txt.print_ub(ub) - txt.chrout('\n') - - ub2 = 0 - bb = sin8(ub2) - txt.print_b(bb) - txt.chrout('\n') - bb = zero+sin8(ub2)*1+zero - txt.print_b(bb) - txt.chrout('\n') - - ub2 = 0 - bb = cos8(ub2) - txt.print_b(bb) - txt.chrout('\n') - bb = zero+cos8(ub2)*1+zero - txt.print_b(bb) - txt.chrout('\n') - - bb = -100 - bb = abs(bb) - txt.print_b(bb) - txt.chrout('\n') - bb = -100 - bb = zero+abs(bb)*1+zero - txt.print_b(bb) - txt.chrout('\n') - - ww = -1000 - ww = abs(ww) - txt.print_w(ww) - txt.chrout('\n') - ww = -1000 - ww = zero+abs(ww)*1+zero - txt.print_w(ww) - txt.chrout('\n') - - ub = min(ubarr) - txt.print_ub(ub) - txt.chrout('\n') - ub = zero+min(ubarr)*1+zero - txt.print_ub(ub) - txt.chrout('\n') - - bb = min(barr) - txt.print_b(bb) - txt.chrout('\n') - bb = zero+min(barr)*1+zero - txt.print_b(bb) - txt.chrout('\n') - - uw = min(uwarr) - txt.print_uw(uw) - txt.chrout('\n') - uw = zero+min(uwarr)*1+zero - txt.print_uw(uw) - txt.chrout('\n') - - ww = min(warr) - txt.print_w(ww) - txt.chrout('\n') - ww = zero+min(warr)*1+zero - txt.print_w(ww) - txt.chrout('\n') - - ub = max(ubarr) - txt.print_ub(ub) - txt.chrout('\n') - ub = zero+max(ubarr)*1+zero - txt.print_ub(ub) - txt.chrout('\n') - - bb = max(barr) - txt.print_b(bb) - txt.chrout('\n') - bb = zero+max(barr)*1+zero - txt.print_b(bb) - txt.chrout('\n') - - uw = max(uwarr) - txt.print_uw(uw) - txt.chrout('\n') - uw = zero+max(uwarr)*1+zero - txt.print_uw(uw) - txt.chrout('\n') - - ww = max(warr) - txt.print_w(ww) - txt.chrout('\n') - ww = zero+max(warr)*1+zero - txt.print_w(ww) - txt.chrout('\n') - - ub = any(ubarr) - txt.print_ub(ub) - txt.chrout('\n') - ub = zero+any(ubarr)*1+zero - txt.print_ub(ub) - txt.chrout('\n') - - ub = any(barr) - txt.print_ub(ub) - txt.chrout('\n') - ub = zero+any(barr)*1+zero - txt.print_ub(ub) - txt.chrout('\n') - - ub = any(uwarr) - txt.print_ub(ub) - txt.chrout('\n') - ub = zero+any(uwarr)*1+zero - txt.print_ub(ub) - txt.chrout('\n') - - ub = any(warr) - txt.print_ub(ub) - txt.chrout('\n') - ub = zero+any(warr)*1+zero - txt.print_ub(ub) - txt.chrout('\n') - - ub = all(ubarr) - txt.print_ub(ub) - txt.chrout('\n') - ub = zero+all(ubarr)*1+zero - txt.print_ub(ub) - txt.chrout('\n') - - ub = all(barr) - txt.print_ub(ub) - txt.chrout('\n') - ub = zero+all(barr)*1+zero - txt.print_ub(ub) - txt.chrout('\n') - - ub = all(uwarr) - txt.print_ub(ub) - txt.chrout('\n') - ub = zero+all(uwarr)*1+zero - txt.print_ub(ub) - txt.chrout('\n') - - ub = all(warr) - txt.print_ub(ub) - txt.chrout('\n') - ub = zero+all(warr)*1+zero - txt.print_ub(ub) - txt.chrout('\n') - - - uw = sum(ubarr) - txt.print_uw(uw) - txt.chrout('\n') - uw = zero+sum(ubarr)*1+zero - txt.print_uw(uw) - txt.chrout('\n') - - ww = sum(barr) - txt.print_w(ww) - txt.chrout('\n') - ww = zero+sum(barr)*1+zero - txt.print_w(ww) - txt.chrout('\n') - - uw = sum(uwarr) - txt.print_uw(uw) - txt.chrout('\n') - uw = zero+sum(uwarr)*1+zero - txt.print_uw(uw) - txt.chrout('\n') - - ww = sum(warr) - txt.print_w(ww) - txt.chrout('\n') - ww = zero+sum(warr)*1+zero - txt.print_w(ww) - txt.chrout('\n') - - sort(ubarr) - sort(barr) - sort(uwarr) - sort(warr) - reverse(ubarr) - reverse(barr) - reverse(uwarr) - reverse(warr) - - testX() - } - - 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 - fl = abs(fl) - floats.print_f(fl) - txt.chrout('\n') - fl = -9.9 - fl = fzero+abs(fl)*1.0+fzero - floats.print_f(fl) - txt.chrout('\n') - - fl = 9.9 - fl = atan(fl) - floats.print_f(fl) - txt.chrout('\n') - fl = 9.9 - fl = fzero+atan(fl)*1.0+fzero - floats.print_f(fl) - txt.chrout('\n') - - fl = -9.9 - fl = ceil(fl) - floats.print_f(fl) - txt.chrout('\n') - fl = -9.9 - fl = fzero+ceil(fl)*1.0+fzero - floats.print_f(fl) - txt.chrout('\n') - - fl = -9.9 - fl = cos(fl) - floats.print_f(fl) - txt.chrout('\n') - fl = -9.9 - fl = fzero+cos(fl)*1.0+fzero - floats.print_f(fl) - txt.chrout('\n') - - fl = -9.9 - fl = sin(fl) - floats.print_f(fl) - txt.chrout('\n') - fl = -9.9 - fl = fzero+sin(fl)*1.0+fzero - floats.print_f(fl) - txt.chrout('\n') - - fl = 9.9 - fl = tan(fl) - floats.print_f(fl) - txt.chrout('\n') - fl = 9.9 - fl = fzero+tan(fl)*1.0+fzero - floats.print_f(fl) - txt.chrout('\n') - - fl = 3.1415927 - fl = deg(fl) - floats.print_f(fl) - txt.chrout('\n') - fl = 3.1415927 - fl = fzero+deg(fl)*1.0+fzero - floats.print_f(fl) - txt.chrout('\n') - - fl = 90 - fl = rad(fl) - floats.print_f(fl) - txt.chrout('\n') - fl = 90 - fl = fzero+rad(fl)*1.0+fzero - floats.print_f(fl) - txt.chrout('\n') - - fl = -9.9 - fl = floor(fl) - floats.print_f(fl) - txt.chrout('\n') - fl = -9.9 - fl = fzero+floor(fl)*1.0+fzero - floats.print_f(fl) - txt.chrout('\n') - - fl = 3.1415927 - fl = ln(fl) - floats.print_f(fl) - txt.chrout('\n') - fl = 3.1415927 - fl = fzero+ln(fl)*1.0+fzero - floats.print_f(fl) - txt.chrout('\n') - - fl = 3.1415927 - fl = log2(fl) - floats.print_f(fl) - txt.chrout('\n') - fl = 3.1415927 - fl = fzero+log2(fl)*1.0+fzero - floats.print_f(fl) - txt.chrout('\n') - - fl = -9.9 - fl = round(fl) - floats.print_f(fl) - txt.chrout('\n') - fl = -9.9 - fl = fzero+round(fl)*1.0+fzero - floats.print_f(fl) - txt.chrout('\n') - - fl = -9.9 - bb = sgn(fl) - txt.print_b(bb) - txt.chrout('\n') - fl = -9.9 - bb = zero+sgn(fl)*1+zero - txt.print_b(bb) - txt.chrout('\n') - - fl = 3.1415927 - fl = sqrt(fl) - floats.print_f(fl) - txt.chrout('\n') - fl = 3.1415927 - fl = fzero+sqrt(fl)*1.0+fzero - floats.print_f(fl) - txt.chrout('\n') - - fl = rndf() - floats.print_f(fl) - txt.chrout('\n') - fl = fzero+rndf()*1.0+fzero - floats.print_f(fl) - txt.chrout('\n') - - swap(fl, fzero) - swap(fzero, fl) - - ub = any(flarr) - txt.print_ub(ub) - txt.chrout('\n') - ub = zero+any(flarr)*1+zero - txt.print_ub(ub) - txt.chrout('\n') - ub = all(flarr) - txt.print_ub(ub) - txt.chrout('\n') - ub = zero+all(flarr)*1+zero - txt.print_ub(ub) - txt.chrout('\n') - - reverse(flarr) - for ub in 0 to len(flarr)-1 { - floats.print_f(flarr[ub]) - txt.chrout(',') - } - txt.chrout('\n') - fl = max(flarr) - floats.print_f(fl) - txt.chrout('\n') - fl = fzero+max(flarr)*1.0+fzero - floats.print_f(fl) - txt.chrout('\n') - fl = min(flarr) - floats.print_f(fl) - txt.chrout('\n') - fl = fzero+min(flarr)*1.0+fzero - floats.print_f(fl) - txt.chrout('\n') - fl = sum(flarr) - floats.print_f(fl) - txt.chrout('\n') - fl = fzero+sum(flarr)*1.0+fzero - floats.print_f(fl) - txt.chrout('\n') - testX() }