From e4764cd8a61ff7877e2e07bb1fd951e6ff3a388e Mon Sep 17 00:00:00 2001 From: Irmen de Jong Date: Sat, 18 Mar 2023 12:55:35 +0100 Subject: [PATCH 1/2] fix typo in comparison function and in pointer optimization --- codeGenCpu6502/src/prog8/codegen/cpu6502/AsmGen.kt | 2 +- codeGenCpu6502/src/prog8/codegen/cpu6502/ExpressionsAsmGen.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/codeGenCpu6502/src/prog8/codegen/cpu6502/AsmGen.kt b/codeGenCpu6502/src/prog8/codegen/cpu6502/AsmGen.kt index 1fbadce05..d4a069705 100644 --- a/codeGenCpu6502/src/prog8/codegen/cpu6502/AsmGen.kt +++ b/codeGenCpu6502/src/prog8/codegen/cpu6502/AsmGen.kt @@ -979,7 +979,7 @@ $repeatLabel lda $counterVar internal fun pointerViaIndexRegisterPossible(pointerOffsetExpr: PtExpression): Pair? { if(pointerOffsetExpr is PtBinaryExpression && pointerOffsetExpr.operator=="+") { val leftDt = pointerOffsetExpr.left.type - val rightDt = pointerOffsetExpr.left.type + val rightDt = pointerOffsetExpr.right.type if(leftDt == DataType.UWORD && rightDt == DataType.UBYTE) return Pair(pointerOffsetExpr.left, pointerOffsetExpr.right) if(leftDt == DataType.UBYTE && rightDt == DataType.UWORD) diff --git a/codeGenCpu6502/src/prog8/codegen/cpu6502/ExpressionsAsmGen.kt b/codeGenCpu6502/src/prog8/codegen/cpu6502/ExpressionsAsmGen.kt index 0bd0d43c9..b91957d0b 100644 --- a/codeGenCpu6502/src/prog8/codegen/cpu6502/ExpressionsAsmGen.kt +++ b/codeGenCpu6502/src/prog8/codegen/cpu6502/ExpressionsAsmGen.kt @@ -657,7 +657,7 @@ internal class ExpressionsAsmGen(private val program: PtProgram, "<=" -> { when(dt) { DataType.UBYTE -> asmgen.out(" jsr prog8_lib.equalzero_b") - DataType.BYTE -> asmgen.out(" jsr prog8_lib.lessequalzeros_b") + DataType.BYTE -> asmgen.out(" jsr prog8_lib.lessequalzero_sb") DataType.UWORD -> asmgen.out(" jsr prog8_lib.equalzero_w") DataType.WORD -> asmgen.out(" jsr prog8_lib.lessequalzero_sw") DataType.FLOAT -> asmgen.out(" jsr floats.lessequal_zero") From f9c4632b8d18ac71ff06564c6357b455d7717036 Mon Sep 17 00:00:00 2001 From: Irmen de Jong Date: Sat, 18 Mar 2023 13:36:19 +0100 Subject: [PATCH 2/2] c64: remove 2 problematic ZP locations from the free list when using floating point --- codeCore/src/prog8/code/target/c64/C64Zeropage.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codeCore/src/prog8/code/target/c64/C64Zeropage.kt b/codeCore/src/prog8/code/target/c64/C64Zeropage.kt index 7fdf9adb9..8b5f2a7cd 100644 --- a/codeCore/src/prog8/code/target/c64/C64Zeropage.kt +++ b/codeCore/src/prog8/code/target/c64/C64Zeropage.kt @@ -44,7 +44,7 @@ class C64Zeropage(options: CompilationOptions) : Zeropage(options) { if (options.zeropage == ZeropageType.FLOATSAFE) { // remove the zeropage locations used for floating point operations from the free list free.removeAll(listOf( - 0x03, 0x04, 0x10, 0x11, 0x12, + 0x03, 0x04, 0x05, 0x06, 0x10, 0x11, 0x12, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,