diff --git a/codeCore/src/prog8/code/core/BuiltinFunctions.kt b/codeCore/src/prog8/code/core/BuiltinFunctions.kt index d29b44ea0..9f7655fb0 100644 --- a/codeCore/src/prog8/code/core/BuiltinFunctions.kt +++ b/codeCore/src/prog8/code/core/BuiltinFunctions.kt @@ -97,8 +97,8 @@ val BuiltinFunctions: Map = mapOf( "prog8_lib_square_byte" to FSignature(true, BaseDataType.UBYTE, FParam("value", BaseDataType.BYTE, BaseDataType.UBYTE)), "prog8_lib_square_word" to FSignature(true, BaseDataType.UWORD, FParam("value", BaseDataType.WORD, BaseDataType.UWORD)), "abs" to FSignature(true, null, FParam("value", *NumericDatatypes)), - "abs__byte" to FSignature(true, BaseDataType.BYTE, FParam("value", BaseDataType.BYTE)), - "abs__word" to FSignature(true, BaseDataType.WORD, FParam("value", BaseDataType.WORD)), + "abs__byte" to FSignature(true, BaseDataType.UBYTE, FParam("value", BaseDataType.BYTE)), + "abs__word" to FSignature(true, BaseDataType.UWORD, FParam("value", BaseDataType.WORD)), "abs__float" to FSignature(true, BaseDataType.FLOAT, FParam("value", BaseDataType.FLOAT)), "len" to FSignature(true, BaseDataType.UWORD, FParam("values", *IterableDatatypes)), "sizeof" to FSignature(true, BaseDataType.UBYTE, FParam("object", *BaseDataType.entries.toTypedArray())), diff --git a/docs/source/todo.rst b/docs/source/todo.rst index 345597085..e71a0428d 100644 --- a/docs/source/todo.rst +++ b/docs/source/todo.rst @@ -79,7 +79,6 @@ Libraries Optimizations ------------- -- if abs(dx) < cave.VISIBLE_CELLS_H looks like it treats abs(dx) as signed word still in codegen? (rockrunner) - word offset = (row as uword) * 128 + col*2 inefficient code for col*2 (rockrunner) - if magicwall_enabled and (jiffy_counter & 3 == 1) sounds.magicwall() -> generates shortcut jump to another jump, why not immediately after the if - explode(x, y+1) pushes x on the stack and pops it, could simply load it in reverse order and not use the stack.normal diff --git a/examples/test.p8 b/examples/test.p8 index 90fec93e5..3af58b0fc 100644 --- a/examples/test.p8 +++ b/examples/test.p8 @@ -1,45 +1,23 @@ %import textio %option no_sysinit -%zeropage dontuse +%zeropage basicsafe main { sub start() { + word @shared dx + uword @shared udx + dx++ + udx++ + dx = -5000 + if abs(dx) < 9999 + txt.print("yes1") + else + txt.print("no2") - cx16.r0 = cx16.r1 = cx16.r2 = cx16.r3 = %0001111_11000011 - - cx16.r0 *= $0080 - txt.print("goede antwoord:\n") - txt.print_uwbin(cx16.r0, true) - txt.spc() - txt.print_uw(cx16.r0) - txt.nl() - - %asm {{ - lda cx16.r1H - lsr a - php ; save carry - lda cx16.r1L - sta cx16.r1H - lda #0 - sta cx16.r1L - plp ; restore carry - ror cx16.r1H - ror cx16.r1L - }} - txt.print("antwoord 2:\n") - txt.print_uwbin(cx16.r1, true) - txt.spc() - txt.print_uw(cx16.r1) - txt.nl() - txt.nl() - txt.print("antwoord 3:\n") - txt.print_uwbin(cx16.r2 << 7, true) - txt.spc() - txt.print_uw(cx16.r2 << 7) - txt.nl() - txt.nl() - - - + dx = -15000 + if abs(dx) < 9999 + txt.print("yes2") + else + txt.print("no2") } }