diff --git a/codeGenVirtual/src/prog8/codegen/virtual/CodeGen.kt b/codeGenVirtual/src/prog8/codegen/virtual/CodeGen.kt index 1b01bb940..ef6034adc 100644 --- a/codeGenVirtual/src/prog8/codegen/virtual/CodeGen.kt +++ b/codeGenVirtual/src/prog8/codegen/virtual/CodeGen.kt @@ -585,7 +585,7 @@ class CodeGen(internal val program: PtProgram, throw AssemblyError("if condition should only be a binary comparison expression") val signed = ifElse.condition.left.type in arrayOf(DataType.BYTE, DataType.WORD, DataType.FLOAT) - val vmDt = vmType(ifElse.condition.type) + val vmDt = vmType(ifElse.condition.left.type) val code = VmCodeChunk() fun translateNonZeroComparison(): VmCodeChunk { diff --git a/docs/source/todo.rst b/docs/source/todo.rst index c09dd1fdf..56aed5396 100644 --- a/docs/source/todo.rst +++ b/docs/source/todo.rst @@ -3,7 +3,6 @@ TODO For next release ^^^^^^^^^^^^^^^^ -- vm: fix primes.p8 calculating wrong primes ... diff --git a/examples/primes.p8 b/examples/primes.p8 index 143249f83..37838d876 100644 --- a/examples/primes.p8 +++ b/examples/primes.p8 @@ -40,27 +40,15 @@ main { return 0 ; we wrapped; no more primes available in the sieve } - txt.print("candidate: ") - txt.print_ub(candidate_prime) - txt.nl() - ; found next one, mark the multiples and return it. sieve[candidate_prime] = true uword multiple = candidate_prime - while multiple < len(sieve) { sieve[lsb(multiple)] = true multiple += candidate_prime } - ubyte xx - for xx in sieve { - txt.print_ub(xx) - txt.spc() - } - txt.nl() - return candidate_prime } } diff --git a/examples/test.p8 b/examples/test.p8 index 72bf33af3..366dd1cef 100644 --- a/examples/test.p8 +++ b/examples/test.p8 @@ -33,16 +33,24 @@ main { ubyte[20] sieve uword count=0 - ubyte xx - for xx in sieve { - txt.print_ub(xx) + if count < 256 + txt.print("<256 ok! 1\n") + if count > 256 + txt.print(">256 nok! 2\n") + count=257 + if count < 256 + txt.print("<256 nok! 3\n") + if count > 256 + txt.print(">256 ok! 4\n") + count=256 + + count=0 + while count < 256 { ; TODO fix this while loop + txt.print_uw(count) txt.spc() - count++ + count += 10 } txt.nl() - txt.print_uw(count) - txt.nl() - ; ; a "pixelshader": ; sys.gfx_enable(0) ; enable lo res screen