From d5e5485d2ed226df7a5adb609150dc94ecf3083e Mon Sep 17 00:00:00 2001 From: Irmen de Jong Date: Sun, 13 Sep 2020 19:44:03 +0200 Subject: [PATCH] fixed estack X corruption in float augmented assignments --- .../c64/codegen/assignment/AugmentableAssignmentAsmGen.kt | 7 +------ examples/turtle-gfx.p8 | 3 --- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/compiler/src/prog8/compiler/target/c64/codegen/assignment/AugmentableAssignmentAsmGen.kt b/compiler/src/prog8/compiler/target/c64/codegen/assignment/AugmentableAssignmentAsmGen.kt index b229c6755..f118dc85b 100644 --- a/compiler/src/prog8/compiler/target/c64/codegen/assignment/AugmentableAssignmentAsmGen.kt +++ b/compiler/src/prog8/compiler/target/c64/codegen/assignment/AugmentableAssignmentAsmGen.kt @@ -1122,11 +1122,11 @@ internal class AugmentableAssignmentAsmGen(private val program: Program, // because the value is evaluated onto the eval stack (=slow). println("warning: slow stack evaluation used (2): $name $operator= ${value::class.simpleName} at ${value.position}") // TODO asmgen.translateExpression(value) + asmgen.out(" jsr c64flt.pop_float_fac1") asmgen.saveRegister(CpuRegister.X) when (operator) { "**" -> { asmgen.out(""" - jsr c64flt.pop_float_fac1 lda #<$name ldy #>$name jsr c64flt.CONUPK @@ -1135,7 +1135,6 @@ internal class AugmentableAssignmentAsmGen(private val program: Program, } "+" -> { asmgen.out(""" - jsr c64flt.pop_float_fac1 lda #<$name ldy #>$name jsr c64flt.FADD @@ -1143,7 +1142,6 @@ internal class AugmentableAssignmentAsmGen(private val program: Program, } "-" -> { asmgen.out(""" - jsr c64flt.pop_float_fac1 lda #<$name ldy #>$name jsr c64flt.FSUB @@ -1151,7 +1149,6 @@ internal class AugmentableAssignmentAsmGen(private val program: Program, } "*" -> { asmgen.out(""" - jsr c64flt.pop_float_fac1 lda #<$name ldy #>$name jsr c64flt.FMULT @@ -1159,7 +1156,6 @@ internal class AugmentableAssignmentAsmGen(private val program: Program, } "/" -> { asmgen.out(""" - jsr c64flt.pop_float_fac1 lda #<$name ldy #>$name jsr c64flt.FDIV @@ -1167,7 +1163,6 @@ internal class AugmentableAssignmentAsmGen(private val program: Program, } else -> throw AssemblyError("invalid operator for in-place float modification $operator") } - // store Fac1 back into memory asmgen.out(""" ldx #<$name ldy #>$name diff --git a/examples/turtle-gfx.p8 b/examples/turtle-gfx.p8 index c2826bfbb..dea3647d0 100644 --- a/examples/turtle-gfx.p8 +++ b/examples/turtle-gfx.p8 @@ -3,9 +3,6 @@ main { - ; TODO this program gets corrupted graphics and crashes near the end - - sub start() { graphics.enable_bitmap_mode() turtle.init()