mirror of
https://github.com/irmen/prog8.git
synced 2025-02-16 22:30:46 +00:00
abs() return type changed to ubyte/uword
This commit is contained in:
parent
a56ae7539a
commit
478e2b4ebd
@ -97,8 +97,8 @@ val BuiltinFunctions: Map<String, FSignature> = 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())),
|
||||
|
@ -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
|
||||
|
@ -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")
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user