From e056a28316a7f92d85062ac3f35fe79ecf46b718 Mon Sep 17 00:00:00 2001 From: Irmen de Jong Date: Fri, 28 Apr 2023 04:02:07 +0200 Subject: [PATCH] c128: fix memory bank resetting --- .../src/prog8/codegen/cpu6502/ProgramAndVarsGen.kt | 3 +-- compiler/res/prog8lib/c128/syslib.p8 | 14 ++++++-------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/codeGenCpu6502/src/prog8/codegen/cpu6502/ProgramAndVarsGen.kt b/codeGenCpu6502/src/prog8/codegen/cpu6502/ProgramAndVarsGen.kt index ee541aecd..5881c63c8 100644 --- a/codeGenCpu6502/src/prog8/codegen/cpu6502/ProgramAndVarsGen.kt +++ b/codeGenCpu6502/src/prog8/codegen/cpu6502/ProgramAndVarsGen.kt @@ -150,8 +150,7 @@ internal class ProgramAndVarsGen( asmgen.out(" rts") } "c128" -> { - asmgen.out(" jsr main.start") - // TODO c128: how to bank basic+kernal back in? + asmgen.out(" jsr main.start | lda #0 | sta ${"$"}ff00") if(!options.noSysInit) asmgen.out(" jmp ${compTarget.name}.cleanup_at_exit") else diff --git a/compiler/res/prog8lib/c128/syslib.p8 b/compiler/res/prog8lib/c128/syslib.p8 index 140fcdbfd..65375d33b 100644 --- a/compiler/res/prog8lib/c128/syslib.p8 +++ b/compiler/res/prog8lib/c128/syslib.p8 @@ -480,10 +480,8 @@ asmsub init_system() { %asm {{ sei cld - ;;lda #%00101111 ; TODO c128 ram and rom bank selection how? - ;;sta $00 - ;;lda #%00100111 - ;;sta $01 + lda #0 + sta $ff00 ; select default bank 15 jsr c64.IOINIT jsr c64.RESTOR jsr c64.CINT @@ -549,8 +547,8 @@ sys { ; Soft-reset the system back to initial power-on Basic prompt. %asm {{ sei - ;lda #14 - ;sta $01 ; bank the kernal in TODO c128 how to do this? + lda #0 + sta $ff00 ; default bank 15 jmp (c64.RESET_VEC) }} } @@ -731,8 +729,8 @@ _longcopy inline asmsub exit(ubyte returnvalue @A) { ; -- immediately exit the program with a return code in the A register %asm {{ - ;lda #14 - ;sta $01 ; bank the kernal in TODO c128 how to do this? + lda #0 + sta $ff00 ; default bank 15 jsr c64.CLRCHN ; reset i/o channels jsr c64.enable_runstop_and_charsetswitch ldx prog8_lib.orig_stackpointer