From cb2ec4e9f3e6778c266fe7869ce7b0ce5709347b Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Wed, 21 Oct 2020 20:55:16 +0200 Subject: [PATCH] added memory mapping routines to CRT memory layout --- src/basic/,imports.s | 1 + .../board_crt/{crt_init.s => crt_init_map.s} | 42 ++++++++++++++++--- 2 files changed, 37 insertions(+), 6 deletions(-) rename src/kernal/board_crt/{crt_init.s => crt_init_map.s} (83%) diff --git a/src/basic/,imports.s b/src/basic/,imports.s index d3ccd633..1ccbe2c2 100644 --- a/src/basic/,imports.s +++ b/src/basic/,imports.s @@ -36,6 +36,7 @@ ;; #ALIAS# map_end = KERNAL_0.map_end ;; #ALIAS# map_NORMAL = KERNAL_0.map_NORMAL +;; #ALIAS# map_BASIC_1 = KERNAL_0.map_BASIC_1 ;; #ALIAS# M65_MODEGET = KERNAL_0.M65_MODEGET ;; #ALIAS# M65_MODESET = KERNAL_0.M65_MODESET diff --git a/src/kernal/board_crt/crt_init.s b/src/kernal/board_crt/crt_init_map.s similarity index 83% rename from src/kernal/board_crt/crt_init.s rename to src/kernal/board_crt/crt_init_map.s index 0a02c249..b1eced5e 100644 --- a/src/kernal/board_crt/crt_init.s +++ b/src/kernal/board_crt/crt_init_map.s @@ -35,6 +35,10 @@ ; bit 0 - 1 = flash mode activated by jumper +crt_init_fail: + + +panic P_ERR_ROM_MISMATCH + crt_init: ; Setup the cart @@ -44,8 +48,7 @@ crt_init: ; Bank-in the first ROM bank - lda #%00000000 - sta $DE00 + jsr map_BASIC_1 ; Check if ROM revision matches the cartridge @@ -53,18 +56,45 @@ crt_init: @1: iny lda $E4B9, y ; Kernal ROM revision address - cmp $9FEC, y + cmp $9FEC, y ; cartridge ROM revision address bne crt_init_fail cmp #$00 bne @1 - ; Unmap cartridge memory XXX provide separate map functions + ; FALLTROUGH + +map_NORMAL: + + ; Unmap cartridge memory + + php + pha lda #%00000010 + + ; FALLTROUGH + +map_NORMAL_common: + sta $DE00 + pla + plp + rts -crt_init_fail: +map_BASIC_1: - +panic P_ERR_ROM_MISMATCH + php + pha + + lda #%00000000 + beq map_NORMAL_common + +map_KERNAL_1: + + php + pha + + lda #%00010000 + bne map_NORMAL_common