diff --git a/compiler/src/prog8/compiler/target/c64/AsmGen.kt b/compiler/src/prog8/compiler/target/c64/AsmGen.kt index 3af75b330..080e7d7c0 100644 --- a/compiler/src/prog8/compiler/target/c64/AsmGen.kt +++ b/compiler/src/prog8/compiler/target/c64/AsmGen.kt @@ -186,6 +186,15 @@ class AsmGen(val options: CompilationOptions, val program: IntermediateProgram, } } + if(zeropage.exitProgramStrategy!=Zeropage.ExitProgramStrategy.CLEAN_EXIT) { + // disable shift-commodore charset switching and run/stop key + out(" lda #$80") + out(" lda #$80") + out(" sta 657\t; disable charset switching") + out(" lda #239") + out(" sta 808\t; disable run/stop key") + } + out(" ldx #\$ff\t; init estack pointer") out(" ; initialize the variables in each block") for(block in program.blocks) { diff --git a/compiler/src/prog8/compiler/target/c64/Commodore64.kt b/compiler/src/prog8/compiler/target/c64/Commodore64.kt index a71dfe4f0..e00721374 100644 --- a/compiler/src/prog8/compiler/target/c64/Commodore64.kt +++ b/compiler/src/prog8/compiler/target/c64/Commodore64.kt @@ -34,8 +34,8 @@ class C64Zeropage(options: CompilationOptions) : Zeropage(options) { } override val exitProgramStrategy: ExitProgramStrategy = when(options.zeropage) { - ZeropageType.BASICSAFE, ZeropageType.FLOATSAFE -> ExitProgramStrategy.CLEAN_EXIT - ZeropageType.KERNALSAFE, ZeropageType.FULL -> ExitProgramStrategy.SYSTEM_RESET + ZeropageType.BASICSAFE -> ExitProgramStrategy.CLEAN_EXIT + ZeropageType.FLOATSAFE, ZeropageType.KERNALSAFE, ZeropageType.FULL -> ExitProgramStrategy.SYSTEM_RESET }