diff --git a/compiler/src/prog8/ast/processing/AstChecker.kt b/compiler/src/prog8/ast/processing/AstChecker.kt index d58ec0da4..f590300bc 100644 --- a/compiler/src/prog8/ast/processing/AstChecker.kt +++ b/compiler/src/prog8/ast/processing/AstChecker.kt @@ -147,6 +147,7 @@ internal class AstChecker(private val program: Program, checkResult.add(ExpressionError("uword loop variable can only loop over unsigned bytes, words or strings", forLoop.position)) } DataType.BYTE -> { + // TODO fix this, it should allow: for bb in [1,2,3] if(iterableDt!= DataType.BYTE && iterableDt!= DataType.ARRAY_B) checkResult.add(ExpressionError("byte loop variable can only loop over bytes", forLoop.position)) } diff --git a/compiler/src/prog8/compiler/Main.kt b/compiler/src/prog8/compiler/Main.kt index 48a83bdc6..b2378292e 100644 --- a/compiler/src/prog8/compiler/Main.kt +++ b/compiler/src/prog8/compiler/Main.kt @@ -97,7 +97,7 @@ fun compileProgram(filepath: Path, programAst.checkValid(compilerOptions) // check if final tree is valid programAst.checkRecursion() // check if there are recursive subroutine calls - printAst(programAst) + // printAst(programAst) if(writeAssembly) { // asm generation directly from the Ast, no need for intermediate code diff --git a/examples/test.p8 b/examples/test.p8 index 893d6a288..294456b65 100644 --- a/examples/test.p8 +++ b/examples/test.p8 @@ -1,263 +1,806 @@ %zeropage basicsafe -; TODO implement asm generation for all loops here +; TODO fix compiler errors: +; for bb in [1,2,3] -> byte loop variable can only loop over bytes +; for uw in 20 to 10 step -1 -> 'can't cast BYTE into UWORD' main { sub start() { - byte bvar - ubyte var2 - - ubyte[] barr = [22,33,44,55,66] - word[] warr = [-111,222,-333,444] - -; for A in "hello" { -; c64scr.print_ub(A) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; for A in [1,3,5,99] { -; c64scr.print_ub(A) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; for A in 10 to 20 { -; c64scr.print_ub(A) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; for A in 20 to 10 step -1 { -; c64scr.print_ub(A) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; for A in 10 to 21 step 3 { -; c64scr.print_ub(A) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; for A in 24 to 10 step -3 { -; c64scr.print_ub(A) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; for A in barr { -; c64scr.print_ub(A) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; c64.CHROUT('\n') -; -; ubyte cc -; for cc in "hello" { -; c64scr.print_ub(cc) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; for cc in [1,3,5,99] { -; c64scr.print_ub(cc) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; for cc in 10 to 20 { -; c64scr.print_ub(cc) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; for cc in 20 to 10 step -1 { -; c64scr.print_ub(cc) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; for cc in 10 to 21 step 3 { -; c64scr.print_ub(cc) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; for cc in 24 to 10 step -3 { -; c64scr.print_ub(cc) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; for cc in barr { -; c64scr.print_ub(cc) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; c64.CHROUT('\n') -; -; uword uw -; for uw in [1111, 2222, 3333] { -; c64scr.print_uw(uw) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; for ww in warr { -; c64scr.print_w(ww) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; for uw in 1111 to 1117 { -; c64scr.print_uw(uw) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; for uw in 2000 to 1995 step -1 { -; c64scr.print_uw(uw) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; for uw in 1111 to 50000 step 4444 { -; c64scr.print_uw(uw) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') - - word endw1 = 999 - uword enduw1 = 2600 - word endw2 = -999 - byte endb1 = 100 - byte endb2 = -100 - byte bb - word ww - uword uw + ubyte[] ubarr = [22,33,44,55,66] + byte[] barr = [22,-33,-44,55,66] + ubyte endub1 + byte endb1 + uword count + ubyte aa ubyte ub - ubyte ubb + byte bb + word total -; for A in 95 to endb1 step 1 { -; c64scr.print_ub(A) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; for bb in 95 to endb1 step 1 { -; c64scr.print_b(bb) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; for A in endb1 to 95 step -1 { -; c64scr.print_ub(A) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; for bb in -95 to endb2 step -1 { -; c64scr.print_b(bb) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; c64.CHROUT('\n') -; -; for ww in 995 to endw1 step 1 { -; c64scr.print_w(ww) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; for ww in -995 to endw2 step -1 { -; c64scr.print_w(ww) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; c64.CHROUT('\n') -; -; for A in 90 to endb1 step 3 { -; c64scr.print_ub(A) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; for bb in 90 to endb1 step 3 { -; c64scr.print_b(bb) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; ubb = 10 -; for A in 20 to ubb step -3 { -; c64scr.print_ub(A) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; for bb in -90 to endb2 step -3 { -; c64scr.print_b(bb) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; c64.CHROUT('\n') -; -; for uw in 999 to enduw1 step 500 { -; c64scr.print_uw(uw) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; for uw in enduw1 to 999 step -500 { -; c64scr.print_uw(uw) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') + c64scr.plot(0,24) - for ww in -999 to endw1 step 500 { ; TODO fix loop asm - c64scr.print_w(ww) - c64.CHROUT(',') + ; ---------- REGISTER A --------- + count = 0 + total = 0 + c64scr.print("a in string: ") + for A in "hello" { + aa=A + count++ + total += aa } - c64.CHROUT('\n') + if count==5 and total==372 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") -; for ww in 999 to endw2 step -500 { -; c64scr.print_w(ww) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; c64.CHROUT('\n') -; -; enduw1 = 2000 -; for uw in 500 to enduw1 step 500 { -; c64scr.print_uw(uw) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') -; -; for uw in enduw1 to 500 step -500 { -; c64scr.print_uw(uw) -; c64.CHROUT(',') -; } -; c64.CHROUT('\n') - - endw1 = 1000 - for ww in -1000 to endw1 step 500 { ; TODO fix loop asm - c64scr.print_w(ww) - c64.CHROUT(',') + count = 0 + total = 0 + c64scr.print("a in arrayliteral: ") + for A in [1,3,5,99] { + aa=A + count++ + total += aa } - c64.CHROUT('\n') + if count==4 and total==108 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") - for ww in 3000 to endw1 step -500 { - c64scr.print_w(ww) - c64.CHROUT(',') + count = 0 + total = 0 + c64scr.print("a in arrayvar: ") + for A in ubarr { + aa=A + count++ + total += aa } - c64.CHROUT('\n') - c64.CHROUT('\n') + if count==5 and total==220 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") - ubb=X - c64scr.print_ub(ubb) + count = 0 + total = 0 + c64scr.print("a in range step 1: ") + for A in 10 to 20 { + aa=A + count++ + total += aa + } + if count==11 and total==165 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + c64scr.print("a in range step -1: ") + for A in 20 to 10 step -1 { + aa=A + count++ + total += aa + } + if count==11 and total==165 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + c64scr.print("a in range step 3: ") + for A in 10 to 21 step 3 { + aa=A + count++ + total += aa + } + if count==4 and total==58 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + c64scr.print("a in rangeincl step 3: ") + for A in 10 to 22 step 3 { + aa=A + count++ + total += aa + } + if count==5 and total==80 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + c64scr.print("a in range step -3: ") + for A in 24 to 10 step -3 { + aa=A + count++ + total += aa + } + if count==5 and total==90 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + c64scr.print("a in rangeincl step -3: ") + for A in 24 to 9 step -3 { + aa=A + count++ + total += aa + } + if count==6 and total==99 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + endub1=101 + c64scr.print("a in ncrange step 1: ") + for A in 95 to endub1 step 1 { + aa=A + count++ + total += aa + } + if count==7 and total==686 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + endub1=101 + c64scr.print("a in ncrange step -1: ") + for A in endub1 to 95 step -1 { + aa=A + count++ + total += aa + } + if count==7 and total==686 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + endub1=105 + c64scr.print("a in ncrange step 3: ") + for A in 95 to endub1 step 3 { + aa=A + count++ + total += aa + } + if count==4 and total==398 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + endub1=105 + c64scr.print("a in ncrange step -3: ") + for A in endub1 to 95 step -3 { + aa=A + count++ + total += aa + } + if count==4 and total==402 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + endub1=107 + c64scr.print("a in ncrangeinc step 3: ") + for A in 95 to endub1 step 3 { + aa=A + count++ + total += aa + } + if count==5 and total==505 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + endub1=107 + c64scr.print("a in ncrangeinc step -3: ") + for A in endub1 to 95 step -3 { + aa=A + count++ + total += aa + } + if count==5 and total==505 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + wait_input() + + ; ---------- UBYTE var --------- + + count = 0 + total = 0 + c64scr.print("ubyte var in string: ") + for ub in "hello" { + count++ + total += ub + } + if count==5 and total==372 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + c64scr.print("ubyte var in arrayliteral: ") + for ub in [1,3,5,99] { + count++ + total += ub + } + if count==4 and total==108 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + c64scr.print("ubyte var in arrayvar: ") + for ub in ubarr { + count++ + total += ub + } + if count==5 and total==220 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + c64scr.print("ubyte var in range step 1: ") + for ub in 10 to 20 { + count++ + total += ub + } + if count==11 and total==165 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + c64scr.print("ubyte var in range step -1: ") + for ub in 20 to 10 step -1 { + count++ + total += ub + } + if count==11 and total==165 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + c64scr.print("ubyte var in range step 3: ") + for ub in 10 to 21 step 3 { + count++ + total += ub + } + if count==4 and total==58 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + c64scr.print("ubyte var in rangeincl step 3: ") + for ub in 10 to 22 step 3 { + count++ + total += ub + } + if count==5 and total==80 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + c64scr.print("ubyte var in range step -3: ") + for ub in 24 to 10 step -3 { + count++ + total += ub + } + if count==5 and total==90 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + c64scr.print("ubyte var in rangeincl step -3: ") + for ub in 24 to 9 step -3 { + count++ + total += ub + } + if count==6 and total==99 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + endub1=101 + c64scr.print("ubyte var in ncrange step 1: ") + for ub in 95 to endub1 step 1 { + count++ + total += ub + } + if count==7 and total==686 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + endub1=101 + c64scr.print("ubyte var in ncrange step -1: ") + for ub in endub1 to 95 step -1 { + count++ + total += ub + } + if count==7 and total==686 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + endub1=105 + c64scr.print("ubyte var in ncrange step 3: ") + for ub in 95 to endub1 step 3 { + count++ + total += ub + } + if count==4 and total==398 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + endub1=105 + c64scr.print("ubyte var in ncrange step -3: ") + for ub in endub1 to 95 step -3 { + count++ + total += ub + } + if count==4 and total==402 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + endub1=107 + c64scr.print("ubyte var in ncrangeinc step 3: ") + for ub in 95 to endub1 step 3 { + count++ + total += ub + } + if count==5 and total==505 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + endub1=107 + c64scr.print("ubyte var in ncrangeinc step -3: ") + for ub in endub1 to 95 step -3 { + count++ + total += ub + } + if count==5 and total==505 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + wait_input() + + ; ---------- BYTE var --------- + + ; @todo fix byte loop in arrayliteral 'Error: byte loop variable can only loop over bytes' +; count = 0 +; total = 0 +; c64scr.print("byte var in arrayliteral: ") +; for bb in [1,3,5,99] { +; count++ +; total += bb +; } +; if count==4 and total==108 +; c64scr.print("ok\n") +; else +; c64scr.print("fail!!!\n") + + count = 0 + total = 0 + c64scr.print("byte var in arrayvar: ") + for bb in barr { + count++ + total += bb + } + if count==5 and total==66 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + c64scr.print("byte var in range step 1: ") + for bb in 10 to 20 { + count++ + total += bb + } + if count==11 and total==165 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + c64scr.print("byte var in range step -1: ") + for bb in 20 to 10 step -1 { + count++ + total += bb + } + if count==11 and total==165 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + c64scr.print("byte var in range step 3: ") + for bb in 10 to 21 step 3 { + count++ + total += bb + } + if count==4 and total==58 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + c64scr.print("byte var in rangeincl step 3: ") + for bb in 10 to 22 step 3 { + count++ + total += bb + } + if count==5 and total==80 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + c64scr.print("byte var in range step -3: ") + for bb in 24 to 10 step -3 { + count++ + total += bb + } + if count==5 and total==90 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + c64scr.print("byte var in rangeincl step -3: ") + for bb in 24 to 9 step -3 { + count++ + total += bb + } + if count==6 and total==99 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + endb1=101 + c64scr.print("byte var in ncrange step 1: ") + for bb in 95 to endb1 step 1 { + count++ + total += bb + } + if count==7 and total==686 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + endb1=101 + c64scr.print("byte var in ncrange step -1: ") + for bb in endb1 to 95 step -1 { + count++ + total += bb + } + if count==7 and total==686 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + endb1=105 + c64scr.print("byte var in ncrange step 3: ") + for bb in 95 to endb1 step 3 { + count++ + total += bb + } + if count==4 and total==398 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + endb1=105 + c64scr.print("byte var in ncrange step -3: ") + for bb in endb1 to 95 step -3 { + count++ + total += bb + } + if count==4 and total==402 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + endb1=107 + c64scr.print("byte var in ncrangeinc step 3: ") + for bb in 95 to endb1 step 3 { + count++ + total += bb + } + if count==5 and total==505 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + total = 0 + endb1=107 + c64scr.print("byte var in ncrangeinc step -3: ") + for bb in endb1 to 95 step -3 { + count++ + total += bb + } + if count==5 and total==505 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + wait_input() + + ; ---------- UWORD var --------- + + uword[] uwarr = [1111,2222,3330,4000] + uword enduw1 + uword totaluw + + count = 0 + totaluw = 0 + c64scr.print("uword var in string: ") + for uw in "hello" { + count++ + totaluw += uw + } + if count==5 and totaluw==372 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + totaluw = 0 + c64scr.print("uword var in arrayliteral: ") + for uw in [1111,3333,555,999] { + count++ + totaluw += uw + } + if count==4 and totaluw==5998 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + totaluw = 0 + c64scr.print("uword var in arrayvar: ") + for uw in uwarr { + count++ + totaluw += uw + } + if count==4 and totaluw==10663 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + totaluw = 0 + c64scr.print("uword var in range step 1: ") + for uw in 1000 to 1100 { + count++ + totaluw += uw + } + if count==101 and totaluw==40514 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + totaluw = 0 + c64scr.print("uword var in range step -1: ") + for uw in 2000 to 1500 step -1 { + count++ + totaluw += uw + } + if count==501 and totaluw==24782 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + totaluw = 0 + c64scr.print("uword var in range step 333: ") + for uw in 1000 to 2200 step 333 { + count++ + totaluw += uw + } + if count==4 and totaluw==5998 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + totaluw = 0 + c64scr.print("uword var in rangeincl step 333: ") + for uw in 1000 to 2332 step 333 { + count++ + totaluw += uw + } + if count==5 and totaluw==8330 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + totaluw = 0 + c64scr.print("uword var in range step -333: ") + for uw in 17000 to 14500 step -333 { + count++ + totaluw += uw + } + if count==8 and totaluw==61140 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + totaluw = 0 + c64scr.print("uword var in rangeincl step -333: ") + for uw in 17000 to 14336 step -333 { + count++ + totaluw += uw + } + if count==9 and totaluw==9940 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + totaluw = 0 + enduw1=17000 + c64scr.print("uword var in ncrange step 1: ") + for uw in 16500 to enduw1 step 1 { + count++ + totaluw += uw + } + if count==501 and totaluw==3142 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + totaluw = 0 + c64scr.print("uword var in ncrange step -1: ") + for uw in enduw1 to 16500 step -1 { + count++ + totaluw += uw + } + if count==501 and totaluw==3142 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + totaluw = 0 + enduw1=17000 + c64scr.print("uword var in ncrange step 333: ") + for uw in 14500 to enduw1 step 333 { + count++ + totaluw += uw + } + if count==8 and totaluw==59788 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + totaluw = 0 + enduw1=17000 + c64scr.print("uword var in ncrange step -333: ") + for uw in enduw1 to 14500 step -333 { + count++ + totaluw += uw + } + if count==8 and totaluw==61140 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + totaluw = 0 + enduw1=17164 + c64scr.print("uword var in ncrangeinc step 333: ") + for uw in 14500 to enduw1 step 333 { + count++ + totaluw += uw + } + if count==9 and totaluw==11416 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + count = 0 + totaluw = 0 + enduw1=17000 + c64scr.print("uword var in ncrangeinc step -333: ") + for uw in enduw1 to 14336 step -333 { + count++ + totaluw += uw + } + if count==9 and totaluw==9940 + c64scr.print("ok\n") + else + c64scr.print("fail!!!\n") + + wait_input() + + ; ---------- WORD var --------- + + word[] warr = [-111,222,-333,444] + word endw1 + uword uw + + ; TODO WORD VAR + + ubyte xx=X + c64scr.print_uw(xx) + } + + sub wait_input() { + c64scr.print("enter to continue:") + str input = " " + c64scr.input_chars(input) + c64scr.print("\n\n") } } diff --git a/examples/testforloops.p8 b/examples/testforloops.p8 deleted file mode 100644 index f407838b6..000000000 --- a/examples/testforloops.p8 +++ /dev/null @@ -1,140 +0,0 @@ -%zeropage basicsafe - -; TODO implement asm generation for all loops here - -main { - - sub start() { - byte bvar - ubyte var2 - - ubyte[] barr = [22,33,44,55,66] - word[] warr = [-111,222,-333,444] - - for A in "hello" { - c64scr.print_ub(A) - c64.CHROUT(',') - } - c64.CHROUT('\n') - - for A in [1,3,5,99] { - c64scr.print_ub(A) - c64.CHROUT(',') - } - c64.CHROUT('\n') - - for A in 10 to 20 { - c64scr.print_ub(A) - c64.CHROUT(',') - } - c64.CHROUT('\n') - - for A in 20 to 10 step -1 { - c64scr.print_ub(A) - c64.CHROUT(',') - } - c64.CHROUT('\n') - - for A in 10 to 21 step 3 { - c64scr.print_ub(A) - c64.CHROUT(',') - } - c64.CHROUT('\n') - - for A in 24 to 10 step -3 { - c64scr.print_ub(A) - c64.CHROUT(',') - } - c64.CHROUT('\n') - - for A in barr { - c64scr.print_ub(A) - c64.CHROUT(',') - } - c64.CHROUT('\n') - c64.CHROUT('\n') - - ubyte cc - for cc in "hello" { - c64scr.print_ub(cc) - c64.CHROUT(',') - } - c64.CHROUT('\n') - - for cc in [1,3,5,99] { - c64scr.print_ub(cc) - c64.CHROUT(',') - } - c64.CHROUT('\n') - - for cc in 10 to 20 { - c64scr.print_ub(cc) - c64.CHROUT(',') - } - c64.CHROUT('\n') - - for cc in 20 to 10 step -1 { - c64scr.print_ub(cc) - c64.CHROUT(',') - } - c64.CHROUT('\n') - - for cc in 10 to 21 step 3 { - c64scr.print_ub(cc) - c64.CHROUT(',') - } - c64.CHROUT('\n') - - for cc in 24 to 10 step -3 { - c64scr.print_ub(cc) - c64.CHROUT(',') - } - c64.CHROUT('\n') - - for cc in barr { - c64scr.print_ub(cc) - c64.CHROUT(',') - } - c64.CHROUT('\n') - c64.CHROUT('\n') - - uword uw - for uw in [1111, 2222, 3333] { - c64scr.print_uw(uw) - c64.CHROUT(',') - } - c64.CHROUT('\n') - - word ww - for ww in warr { - c64scr.print_w(ww) - c64.CHROUT(',') - } - c64.CHROUT('\n') - - for uw in 1111 to 1117 { - c64scr.print_uw(uw) - c64.CHROUT(',') - } - c64.CHROUT('\n') - - for uw in 2000 to 1995 step -1 { - c64scr.print_uw(uw) - c64.CHROUT(',') - } - c64.CHROUT('\n') - - for uw in 1111 to 50000 step 4444 { - c64scr.print_uw(uw) - c64.CHROUT(',') - } - c64.CHROUT('\n') - - for ww in 999 to -999 step -500 { - c64scr.print_w(ww) - c64.CHROUT(',') - } - c64.CHROUT('\n') - c64.CHROUT('\n') - } -}