started work on monitor GO/JSR commands
This commit is contained in:
1 parent
cb851c9288
commit
09cd066256
5 files changed
+113
-19
No files matched your search
@@ -19,6 +19,7 @@ proxy_M1_CHROUT:
|
||||
|
||||
; FALLTROUGH
|
||||
|
||||
proxy_M1_jmpout_ret: ; reused by monitor
|
||||
proxy_M1_end:
|
||||
|
||||
jmp map_MON_1
|
||||
@@ -40,3 +41,18 @@ proxy_M1_memwrite:
|
||||
jsr map_NORMAL
|
||||
sta [Long__TMP], z
|
||||
bra proxy_M1_end
|
||||
|
||||
|
||||
; JMP/JSR to user code
|
||||
|
||||
proxy_M1_jmpout:
|
||||
|
||||
plz ; ZR
|
||||
ply ; YR
|
||||
plx ; XR
|
||||
pla ; BP
|
||||
tab
|
||||
pla ; AC
|
||||
plp ; SR
|
||||
|
||||
jmp map_NORMAL
|
||||
+2
-17
@@ -197,9 +197,9 @@ Jump_Table:
|
||||
!word Mon_Compare ; C
|
||||
!word Mon_Disassemble ; D
|
||||
!word Mon_Fill ; F
|
||||
!word Mon_Go ; G XXX to be debugged/adapted
|
||||
!word Mon_Go ; G XXX to be finished/bugfixed
|
||||
!word Mon_Hunt ; H
|
||||
!word Mon_JSR ; J XXX to be debugged/adapted
|
||||
!word Mon_JSR ; J XXX to be finished/bugfixed
|
||||
!word Mon_Memory ; M
|
||||
!word Mon_Register ; R
|
||||
!word Mon_Transfer ; T
|
||||
@@ -400,21 +400,6 @@ Print_Bits:
|
||||
PLZ
|
||||
RTS
|
||||
|
||||
|
||||
; *****
|
||||
Mon_Go:
|
||||
; *****
|
||||
|
||||
; XXX to be rewritten for Open ROMs!
|
||||
jmp Main
|
||||
|
||||
; ******
|
||||
Mon_JSR:
|
||||
; ******
|
||||
|
||||
; XXX to be rewritten for Open ROMs!
|
||||
jmp Main
|
||||
|
||||
; ***********
|
||||
Dump_4_Bytes:
|
||||
; ***********
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
;; #ALIAS# monitor_exit = KERNAL_0.m65_shadow_BZP
|
||||
;; #ALIAS# monitor_memread_helper = KERNAL_0.proxy_M1_memread
|
||||
;; #ALIAS# monitor_memwrite_helper = KERNAL_0.proxy_M1_memwrite
|
||||
;; #ALIAS# monitor_jmpout = KERNAL_0.proxy_M1_jmpout
|
||||
;; #ALIAS# monitor_jmpout_ret = KERNAL_0.proxy_M1_jmpout_ret
|
||||
|
||||
;; #ALIAS# CHRIN = KERNAL_0.proxy_M1_CHRIN
|
||||
;; #ALIAS# CHROUT = KERNAL_0.proxy_M1_CHROUT
|
||||
|
||||
@@ -2,9 +2,7 @@
|
||||
; Based on BSM (Bit Shifter's Monitor)
|
||||
|
||||
|
||||
; *******
|
||||
Mon_Fill:
|
||||
; *******
|
||||
|
||||
jsr Get_Param_Range ; Long_PC = target
|
||||
+bcs Mon_Error ; Long_CT = count
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
|
||||
; Based on BSM (Bit Shifter's Monitor)
|
||||
|
||||
|
||||
Mon_JSR:
|
||||
|
||||
|
||||
lda #$00
|
||||
sta Addr_Mode
|
||||
|
||||
jsr Get_Val_To_LAC ; Long_AC = jump address
|
||||
+beq Mon_Error
|
||||
|
||||
; Push return addresses
|
||||
|
||||
lda #>(Mon_JSR_ret-1) ; XXX return routine should JSR, to store address
|
||||
pha
|
||||
lda #<(Mon_JSR_ret-1)
|
||||
pha
|
||||
|
||||
lda #>(monitor_jmpout_ret-1)
|
||||
pha
|
||||
lda #<(monitor_jmpout_ret-1)
|
||||
pha
|
||||
|
||||
bra Mon_Go_JSR_comon
|
||||
|
||||
Mon_Go:
|
||||
|
||||
lda #$00
|
||||
sta Addr_Mode
|
||||
|
||||
jsr Get_Val_To_LAC ; Long_AC = jump address
|
||||
+bne Mon_Go_JSR_comon
|
||||
|
||||
lda PCL ; use PC as jump address
|
||||
sta Long_AC+0
|
||||
lda PCH
|
||||
sta Long_AC+0
|
||||
|
||||
; FALLTROUGH
|
||||
|
||||
Mon_Go_JSR_comon:
|
||||
|
||||
lda Addr_Mode ; only first 64KB is supported as target
|
||||
+bne Mon_Error
|
||||
|
||||
lda PCH ; push target address for RTS
|
||||
sta Long_TMP+1
|
||||
lda PCL
|
||||
sta Long_TMP+0
|
||||
dew Long_TMP+0
|
||||
|
||||
lda Long_TMP+1
|
||||
pha
|
||||
lda Long_TMP+0
|
||||
pha
|
||||
|
||||
; Prepare registers
|
||||
|
||||
lda SR
|
||||
pha
|
||||
lda AC
|
||||
pha
|
||||
lda BP
|
||||
pha
|
||||
lda XR
|
||||
pha
|
||||
lda YR
|
||||
pha
|
||||
lda ZR
|
||||
pha
|
||||
|
||||
jmp monitor_jmpout
|
||||
|
||||
Mon_JSR_ret:
|
||||
|
||||
; Retrieve registers
|
||||
; XXX address!
|
||||
|
||||
pha
|
||||
php
|
||||
pla
|
||||
sta SR
|
||||
pla
|
||||
sta AC
|
||||
tba
|
||||
sta BP
|
||||
stx XR
|
||||
sty YR
|
||||
stz ZR
|
||||
|
||||
jmp Mon_Register
|
||||
Reference in new issue
Block a user