From c818d980a8587977c466fb204c6c015de25b03e6 Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Tue, 20 Oct 2020 23:19:48 +0200 Subject: [PATCH] more works towards CRT ROM layout --- src/basic/rom_revision/bf52.rom_revision_basic.s | 2 +- src/kernal/board_crt/crt_init.s | 9 +++++++++ src/kernal/init/fce2.hw_entry_reset.s | 10 +++++++++- src/kernal/init/fd50.ramtas.s | 12 ++++++++++++ 4 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 src/kernal/board_crt/crt_init.s diff --git a/src/basic/rom_revision/bf52.rom_revision_basic.s b/src/basic/rom_revision/bf52.rom_revision_basic.s index ef8c1bec..6bc6892e 100644 --- a/src/basic/rom_revision/bf52.rom_revision_basic.s +++ b/src/basic/rom_revision/bf52.rom_revision_basic.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT BASIC_1 #TAKE-OFFSET -2F52 +;; #LAYOUT# CRT BASIC_1 #TAKE-OFFSET -1F66 ;; #LAYOUT# X16 BASIC_0 #TAKE-OFFSET 2000 ;; #LAYOUT# * BASIC_0 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/board_crt/crt_init.s b/src/kernal/board_crt/crt_init.s new file mode 100644 index 00000000..69c07dec --- /dev/null +++ b/src/kernal/board_crt/crt_init.s @@ -0,0 +1,9 @@ +;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# * * #IGNORE + + +crt_init: + + ; XXX !!! provide implementation + + rts diff --git a/src/kernal/init/fce2.hw_entry_reset.s b/src/kernal/init/fce2.hw_entry_reset.s index 8cd79829..3867c990 100644 --- a/src/kernal/init/fce2.hw_entry_reset.s +++ b/src/kernal/init/fce2.hw_entry_reset.s @@ -39,12 +39,14 @@ hw_entry_reset: ; Also, https://codebase64.org/doku.php?id=base:assembling_your_own_cart_rom_image was used ; as it shows example startup sequence, to be followe by cartridge creators +!ifndef ROM_LAYOUT_CRT { + ; C64 PRG p269 jsr cartridge_check bne @1 jmp (ICART_COLD_START) @1: - +} ; Disable the screen (and set 40 columns) to prevent visual glitches later ldx #$28 stx VIC_SCROLX @@ -73,6 +75,12 @@ hw_entry_reset: jsr JCINT } +!ifdef ROM_LAYOUT_CRT { + + ; Init external ROM + jsr crt_init +} + ; What do we do when finished? A C64 jumps into the BASIC ROM cli ; allow interrupts to happen diff --git a/src/kernal/init/fd50.ramtas.s b/src/kernal/init/fd50.ramtas.s index 60197f82..6d28c48f 100644 --- a/src/kernal/init/fd50.ramtas.s +++ b/src/kernal/init/fd50.ramtas.s @@ -65,6 +65,17 @@ RAMTAS: ldx #>$0800 stx MEMSTR+1 + +!ifdef ROM_LAYOUT_CRT { + + ; Set RAM size in MEMSIZEK - skip memory test + + ldy #$A0 + sty MEMSIZK+1 + rts + +} else { + ; Work out RAM size and put in MEMSIZK ; Try to modify $8000, if it fails then RAM ends at $7FFF, else $9FFF @@ -101,6 +112,7 @@ ramtas_32k: ldy #$80 bne ramtas_xxk ; branch always +} } else ifdef CONFIG_PLATFORM_COMMANDER_X16 {