From 9fe0e81d53a2aaf72cf089f7500fdff3016df79f Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Wed, 2 Sep 2020 22:17:03 +0200 Subject: [PATCH] safer reset routine for MEGA65 --- src/kernal/board_m65/mega65_imports.s | 1 + src/kernal/board_m65/mega65_reset_part.s | 26 ++++++++++++++++++++++++ src/kernal/extapi_m65/mega65_modeset.s | 5 +---- src/kernal/init/fce2.hw_entry_reset.s | 5 ++--- 4 files changed, 30 insertions(+), 7 deletions(-) create mode 100644 src/kernal/board_m65/mega65_reset_part.s diff --git a/src/kernal/board_m65/mega65_imports.s b/src/kernal/board_m65/mega65_imports.s index 496bb7ee..2ccf33f0 100644 --- a/src/kernal/board_m65/mega65_imports.s +++ b/src/kernal/board_m65/mega65_imports.s @@ -41,6 +41,7 @@ .label viciv_hotregs_on = KERNAL_0.viciv_hotregs_on .label viciv_hotregs_off = KERNAL_0.viciv_hotregs_off +.label m65_clr_magictstr = KERNAL_0.m65_clr_magictstr .label m65_scrtab_txtwidth = KERNAL_0.m65_scrtab_txtwidth .label m65_scrtab_txtheight = KERNAL_0.m65_scrtab_txtheight .label m65_screen_set_indx = KERNAL_0.m65_screen_set_indx diff --git a/src/kernal/board_m65/mega65_reset_part.s b/src/kernal/board_m65/mega65_reset_part.s new file mode 100644 index 00000000..b391b735 --- /dev/null +++ b/src/kernal/board_m65/mega65_reset_part.s @@ -0,0 +1,26 @@ +// #LAYOUT# M65 KERNAL_0 #TAKE +// #LAYOUT# * * #IGNORE + +// MEGA65 specific part of the hardware + + +m65_reset_part: + + jsr map_NORMAL // we want normal memory mapping + jsr viciv_shutdown // by default we do not want the VIC-IV + + jsr M65_MODEGET + bcs !+ + + // Clear MEAGA65 native mode mark, it might cause confusion + +m65_clr_magictstr: // entry point for mode switching routine + + lda #$00 + sta M65_MAGICSTR+0 + sta M65_MAGICSTR+1 + sta M65_MAGICSTR+2 + + // FALLTROUGH +!: + rts diff --git a/src/kernal/extapi_m65/mega65_modeset.s b/src/kernal/extapi_m65/mega65_modeset.s index fb46fe96..acbc8dcc 100644 --- a/src/kernal/extapi_m65/mega65_modeset.s +++ b/src/kernal/extapi_m65/mega65_modeset.s @@ -18,10 +18,7 @@ m65_mode64: // Set the magic string to mark legacy mode - lda #$00 - sta M65_MAGICSTR+0 - sta M65_MAGICSTR+1 - sta M65_MAGICSTR+2 + jsr m65_clr_magictstr // Restore VIC-II configuration diff --git a/src/kernal/init/fce2.hw_entry_reset.s b/src/kernal/init/fce2.hw_entry_reset.s index 2b462e84..754ccff8 100644 --- a/src/kernal/init/fce2.hw_entry_reset.s +++ b/src/kernal/init/fce2.hw_entry_reset.s @@ -27,8 +27,7 @@ hw_entry_reset: #if ROM_LAYOUT_M65 - jsr map_NORMAL // we want normal memory mapping - jsr viciv_shutdown // by default we do not want the VIC-IV + jsr m65_reset_part #endif @@ -62,7 +61,7 @@ hw_entry_reset: // also affirmed by c64 prg p269 jsr JRESTOR - // "Compute's Mapping the 64" p236 + // "Compute's Mapping the 64" p236 jsr JCINT #if ROM_LAYOUT_M65