From fd660db37e6d27df8eebe7f6b185aaa0dc474cf6 Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Sat, 9 Jan 2021 23:45:22 +0100 Subject: [PATCH] fixed another memory-related problem in monitor --- src/kernal/board_m65/mega65_proxies_monitor.s | 10 +++++++ src/mon_m65/,aliases_mon.s | 2 +- src/mon_m65/imports.s | 29 ++++++++++--------- src/mon_m65/mon_helper_memory.s | 11 +++++-- 4 files changed, 34 insertions(+), 18 deletions(-) diff --git a/src/kernal/board_m65/mega65_proxies_monitor.s b/src/kernal/board_m65/mega65_proxies_monitor.s index 5329b781..9207706a 100644 --- a/src/kernal/board_m65/mega65_proxies_monitor.s +++ b/src/kernal/board_m65/mega65_proxies_monitor.s @@ -66,3 +66,13 @@ proxy_M1_TALK: jsr TALK bra proxy_M1_end + + + +!addr Long__TMP = $3C ; has to be the same as Long_TMP in monitor + +proxy_M1_memread: + + jsr map_NORMAL + lda [Long__TMP], z + bra proxy_M1_end diff --git a/src/mon_m65/,aliases_mon.s b/src/mon_m65/,aliases_mon.s index 015623fb..80c6c38d 100644 --- a/src/mon_m65/,aliases_mon.s +++ b/src/mon_m65/,aliases_mon.s @@ -63,7 +63,7 @@ ; $34-$3B - free space, unused for now -!addr Long_TMP = $3C ; temporary pointer, for fetching/storing memory content +!addr Long_TMP = $3C ; temporary pointer, for fetching/storing memory content; has to be the same as Long__TMP in Kernal !addr Disk_Msg = $40 ; 40 bytes, disk status as text message ; XXX rework code to make it not needed !addr Mon_Data = $68 ; 40 bytes, buffer for hunt and filename diff --git a/src/mon_m65/imports.s b/src/mon_m65/imports.s index f8fcf6ac..5b561051 100644 --- a/src/mon_m65/imports.s +++ b/src/mon_m65/imports.s @@ -4,22 +4,23 @@ ; Definitions for calling MEGA65 segment KERNAL_0 routines from MON_1 ; -;; #ALIAS# SETMSG = KERNAL_0.SETMSG -;; #ALIAS# STOP = KERNAL_0.STOP -;; #ALIAS# SCREEN = KERNAL_0.SCREEN +;; #ALIAS# SETMSG = KERNAL_0.SETMSG +;; #ALIAS# STOP = KERNAL_0.STOP +;; #ALIAS# SCREEN = KERNAL_0.SCREEN -;; #ALIAS# monitor_exit = KERNAL_0.m65_shadow_BZP +;; #ALIAS# monitor_exit = KERNAL_0.m65_shadow_BZP +;; #ALIAS# monitor_memread_helper = KERNAL_0.proxy_M1_memread -;; #ALIAS# CHRIN = KERNAL_0.proxy_M1_CHRIN -;; #ALIAS# CHROUT = KERNAL_0.proxy_M1_CHROUT -;; #ALIAS# SECOND = KERNAL_0.proxy_M1_SECOND -;; #ALIAS# TKSA = KERNAL_0.proxy_M1_TKSA -;; #ALIAS# ACPTR = KERNAL_0.proxy_M1_ACPTR -;; #ALIAS# CIOUT = KERNAL_0.proxy_M1_CIOUT -;; #ALIAS# UNTLK = KERNAL_0.proxy_M1_UNTLK -;; #ALIAS# UNLSN = KERNAL_0.proxy_M1_UNLSN -;; #ALIAS# LISTEN = KERNAL_0.proxy_M1_LISTEN -;; #ALIAS# TALK = KERNAL_0.proxy_M1_TALK +;; #ALIAS# CHRIN = KERNAL_0.proxy_M1_CHRIN +;; #ALIAS# CHROUT = KERNAL_0.proxy_M1_CHROUT +;; #ALIAS# SECOND = KERNAL_0.proxy_M1_SECOND +;; #ALIAS# TKSA = KERNAL_0.proxy_M1_TKSA +;; #ALIAS# ACPTR = KERNAL_0.proxy_M1_ACPTR +;; #ALIAS# CIOUT = KERNAL_0.proxy_M1_CIOUT +;; #ALIAS# UNTLK = KERNAL_0.proxy_M1_UNTLK +;; #ALIAS# UNLSN = KERNAL_0.proxy_M1_UNLSN +;; #ALIAS# LISTEN = KERNAL_0.proxy_M1_LISTEN +;; #ALIAS# TALK = KERNAL_0.proxy_M1_TALK ; 'Print immediate', original implementation by Mike Barry, adapted to 65CE02, modified to preserve .Y diff --git a/src/mon_m65/mon_helper_memory.s b/src/mon_m65/mon_helper_memory.s index 5f78e16e..f60e11fd 100644 --- a/src/mon_m65/mon_helper_memory.s +++ b/src/mon_m65/mon_helper_memory.s @@ -37,7 +37,7 @@ Get_From_Memory: sta Long_TMP+3 lda Long_TMP+1 - bne @read ; branch if no need to handle shadow memory (not zero page) + bne @read_64k ; branch if no need to handle shadow memory (not zero page) lda Long_TMP+0 dec dec @@ -75,11 +75,16 @@ Get_From_Memory: lda #MEMCONF_SHADOW_BZP_3 sta Long_TMP+3 -@read_flat: ; XXX read via helper in KERNAL_0 segment - +nop +@read_flat: + + jsr monitor_memread_helper + bra @end + @read: lda (Long_TMP),Z +@end: + plz ply plx