From d778cdcd61b8ee5e2d9a36746cec992fd47c18a6 Mon Sep 17 00:00:00 2001 From: Irmen de Jong Date: Sun, 4 Oct 2020 21:11:42 +0200 Subject: [PATCH] another compiler crash fixed when dealing with functioncall returning a str --- .../c64/codegen/assignment/AssignmentAsmGen.kt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/compiler/src/prog8/compiler/target/c64/codegen/assignment/AssignmentAsmGen.kt b/compiler/src/prog8/compiler/target/c64/codegen/assignment/AssignmentAsmGen.kt index b407ce86b..5abdf852c 100644 --- a/compiler/src/prog8/compiler/target/c64/codegen/assignment/AssignmentAsmGen.kt +++ b/compiler/src/prog8/compiler/target/c64/codegen/assignment/AssignmentAsmGen.kt @@ -222,6 +222,18 @@ internal class AssignmentAsmGen(private val program: Program, private val asmgen jsr floats.pop_float """) } + DataType.STR -> { + asmgen.out(""" + lda #<${target.asmVarname} + sta P8ZP_SCRATCH_W1 + lda #>${target.asmVarname} + sta P8ZP_SCRATCH_W1+1 + inx + lda P8ESTACK_HI,x + tay + lda P8ESTACK_LO,x + jsr prog8_lib.strcpy""") + } else -> throw AssemblyError("weird target variable type ${target.datatype}") } } @@ -373,7 +385,6 @@ internal class AssignmentAsmGen(private val program: Program, private val asmgen } DataType.STR, DataType.ARRAY_UB, DataType.ARRAY_B -> { asmgen.out(""" - ; copy a string (must be 0-terminated) from A/Y to (P8ZP_SCRATCH_W1) lda #<${target.asmVarname} sta P8ZP_SCRATCH_W1 lda #>${target.asmVarname}