monitor command 'F' adaptation, not tested yet
This commit is contained in:
1 parent
733943308a
commit
f3a9052066
13 files changed
+240
-141
No files matched your search
@@ -34,3 +34,9 @@ proxy_M1_memread:
|
|||||||
jsr map_NORMAL
|
jsr map_NORMAL
|
||||||
lda [Long__TMP], z
|
lda [Long__TMP], z
|
||||||
bra proxy_M1_end
|
bra proxy_M1_end
|
||||||
|
|
||||||
|
proxy_M1_memwrite:
|
||||||
|
|
||||||
|
jsr map_NORMAL
|
||||||
|
sta [Long__TMP], z
|
||||||
|
bra proxy_M1_end
|
||||||
+35
-33
@@ -10,54 +10,56 @@
|
|||||||
; * Register storage *
|
; * Register storage *
|
||||||
; ********************
|
; ********************
|
||||||
|
|
||||||
!addr Adr_Mode = 2 ; $00 = 64K address, $80 = M65 flat address ; XXX adapt the implementation
|
!addr Addr_Mode = 2 ; $00 = 64K address, $80 = M65 flat address
|
||||||
!addr PCH = 3
|
!addr PCH = 3
|
||||||
!addr PCL = 4
|
!addr PCL = 4
|
||||||
!addr SR = 5
|
!addr SR = 5
|
||||||
!addr AC = 6
|
!addr AC = 6
|
||||||
!addr XR = 7
|
!addr XR = 7
|
||||||
!addr YR = 8
|
!addr YR = 8
|
||||||
!addr ZR = 9
|
!addr ZR = 9
|
||||||
!addr BP = 10
|
!addr BP = 10
|
||||||
!addr SPH = 11
|
!addr SPH = 11
|
||||||
!addr SPL = 12
|
!addr SPL = 12
|
||||||
|
|
||||||
|
|
||||||
; *******************
|
; *******************
|
||||||
; * Other variables *
|
; * Other variables *
|
||||||
; *******************
|
; *******************
|
||||||
|
|
||||||
|
!addr Src_Addr_Mode = 13 ; Addr_Mode for 1st address
|
||||||
|
!addr Dst_Addr_Mode = 14 ; Addr_Mode for 2nd address
|
||||||
|
|
||||||
|
!addr MODE_80 = 15 ; 80 column / 40 volumn flag
|
||||||
|
|
||||||
; A set of 32 bit variables also used as 32 bit pointer
|
; A set of 32 bit variables also used as 32 bit pointer
|
||||||
|
|
||||||
!addr Long_AC = $10 ; 32 bit accumulator
|
!addr Long_AC = $10 ; 32 bit accumulator
|
||||||
!addr Long_CT = $14 ; 32 bit counter
|
!addr Long_CT = $14 ; 32 bit counter
|
||||||
!addr Long_PC = $18 ; 32 bit program counter
|
!addr Long_PC = $18 ; 32 bit program counter
|
||||||
!addr Long_DA = $1C ; 32 bit data pointer
|
!addr Long_DA = $1C ; 32 bit data pointer
|
||||||
|
|
||||||
; Flags are used in BBR BBS instructions
|
; Flags are used in BBR BBS instructions
|
||||||
|
|
||||||
!addr Adr_Flags = $20
|
!addr Adr_Flags = $20
|
||||||
!addr Mode_Flags = $21
|
!addr Mode_Flags = $21
|
||||||
!addr Op_Code = $22
|
!addr Op_Code = $22
|
||||||
!addr Op_Flag = $23 ; 7: two operands
|
!addr Op_Flag = $23 ; 7: two operands
|
||||||
; 6: long branch
|
; 6: long branch
|
||||||
; 5: 32 bit address
|
; 5: 32 bit address
|
||||||
; 4: Q register
|
; 4: Q register
|
||||||
!addr Op_Size = $24
|
!addr Op_Size = $24
|
||||||
!addr Dig_Cnt = $25
|
!addr Dig_Cnt = $25
|
||||||
!addr Buf_Index = $26
|
!addr Buf_Index = $26
|
||||||
|
|
||||||
!addr MODE_80 = $27 ; 80 column / 40 volumn flag ; XXX add routine to detect this
|
!addr SP_Storage = $27 ; location to preserve stack pointer
|
||||||
!addr SP_Storage = $28 ; location to preserve stack pointer
|
|
||||||
|
|
||||||
!addr X_Vector = $29 ; monitor exit vector
|
!addr X_Vector = $28 ; monitor exit vector
|
||||||
!addr Ix_Mne = $2B ; index to mnemonics table
|
!addr Ix_Mne = $2A ; index to mnemonics table
|
||||||
!addr Op_Mne = $2C ; 3 bytes for mnemonic
|
!addr Op_Mne = $2B ; 3 bytes for mnemonic
|
||||||
!addr Op_Ix = $2F ; type of constant
|
!addr Op_Ix = $2E ; type of constant
|
||||||
!addr Op_Len = $30 ; length of operand
|
!addr Op_Len = $2F ; length of operand
|
||||||
|
|
||||||
; $31-$63 - free space, unused for now
|
; $30-$63 - free space, unused for now
|
||||||
|
|
||||||
!addr Long_TMP = $64 ; temporary pointer, for fetching/storing memory content; has to be the same as Long__TMP in Kernal
|
!addr Long_TMP = $64 ; temporary pointer, for fetching/storing memory content; has to be the same as Long__TMP in Kernal
|
||||||
!addr Mon_Data = $68 ; 40 bytes, buffer for hunt
|
!addr Mon_Data = $68 ; 40 bytes, buffer for hunt
|
||||||
+6
-47
@@ -18,7 +18,7 @@ Mon_Call:
|
|||||||
; set default addressing mode to 64K
|
; set default addressing mode to 64K
|
||||||
|
|
||||||
LDA #0
|
LDA #0
|
||||||
STA Adr_Mode
|
STA Addr_Mode
|
||||||
|
|
||||||
; clear register for monitor call
|
; clear register for monitor call
|
||||||
|
|
||||||
@@ -433,7 +433,7 @@ Mon_Set_Register: ; XXX this needs adaptation
|
|||||||
@loop JSR Get_LAC
|
@loop JSR Get_LAC
|
||||||
BCS @exit
|
BCS @exit
|
||||||
LDA Long_AC
|
LDA Long_AC
|
||||||
STA Adr_Mode,Y
|
STA Addr_Mode,Y
|
||||||
INY
|
INY
|
||||||
CPY #9
|
CPY #9
|
||||||
BCC @loop
|
BCC @loop
|
||||||
@@ -554,7 +554,7 @@ Dump_Row:
|
|||||||
Mon_Transfer:
|
Mon_Transfer:
|
||||||
; ***********
|
; ***********
|
||||||
|
|
||||||
JSR Param_Range ; Long_PC = source
|
JSR Get_Param_Range ; Long_PC = source
|
||||||
LBCS Mon_Error ; Long_CT = count
|
LBCS Mon_Error ; Long_CT = count
|
||||||
JSR Get_LAC ; Long_AC = target
|
JSR Get_LAC ; Long_AC = target
|
||||||
LBCS Mon_Error
|
LBCS Mon_Error
|
||||||
@@ -587,7 +587,7 @@ Mon_Transfer:
|
|||||||
Mon_Compare:
|
Mon_Compare:
|
||||||
; **********
|
; **********
|
||||||
|
|
||||||
JSR Param_Range ; Long_PC = source
|
JSR Get_Param_Range ; Long_PC = source
|
||||||
LBCS Mon_Error ; Long_CT = count
|
LBCS Mon_Error ; Long_CT = count
|
||||||
JSR Get_LAC ; Long_AC = target
|
JSR Get_LAC ; Long_AC = target
|
||||||
LBCS Mon_Error
|
LBCS Mon_Error
|
||||||
@@ -607,7 +607,7 @@ Mon_Compare:
|
|||||||
Mon_Hunt:
|
Mon_Hunt:
|
||||||
; *******
|
; *******
|
||||||
|
|
||||||
JSR Param_Range ; Long_PC = start
|
JSR Get_Param_Range ; Long_PC = start
|
||||||
LBCS Mon_Error ; Long_CT = count
|
LBCS Mon_Error ; Long_CT = count
|
||||||
LDY #0
|
LDY #0
|
||||||
JSR Get_Char
|
JSR Get_Char
|
||||||
@@ -738,23 +738,6 @@ Load_Save:
|
|||||||
; STA SA ; and ignore load address from file
|
; STA SA ; and ignore load address from file
|
||||||
; BRA @do
|
; BRA @do
|
||||||
|
|
||||||
; *******
|
|
||||||
Mon_Fill:
|
|
||||||
; *******
|
|
||||||
|
|
||||||
JSR Param_Range ; Long_PC = target
|
|
||||||
LBCS Mon_Error ; Long_CT = count
|
|
||||||
JSR Get_LAC ; Long_AC = fill byte
|
|
||||||
LBCS Mon_Error
|
|
||||||
JSR Print_CR
|
|
||||||
LDZ #0
|
|
||||||
@loop LDA Long_AC
|
|
||||||
STA [Long_PC],Z
|
|
||||||
JSR Inc_LPC
|
|
||||||
JSR Dec_LCT
|
|
||||||
BPL @loop
|
|
||||||
JMP Main
|
|
||||||
|
|
||||||
; ***********
|
; ***********
|
||||||
Mon_Assemble:
|
Mon_Assemble:
|
||||||
; ***********
|
; ***********
|
||||||
@@ -1680,7 +1663,7 @@ Read_Number: ; XXX obsolete, to be replaced
|
|||||||
Print_LPC_Addr: ; prints out the address in PC
|
Print_LPC_Addr: ; prints out the address in PC
|
||||||
; *************
|
; *************
|
||||||
|
|
||||||
bbr7 Adr_Mode, @short
|
bbr7 Addr_Mode, @short
|
||||||
|
|
||||||
lda Long_PC+3
|
lda Long_PC+3
|
||||||
jsr Print_Hex_Low_Digit
|
jsr Print_Hex_Low_Digit
|
||||||
@@ -1850,30 +1833,6 @@ Inc_LPC_Page:
|
|||||||
Inc_LPC_Page_return
|
Inc_LPC_Page_return
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
; **********
|
|
||||||
Param_Range:
|
|
||||||
; **********
|
|
||||||
|
|
||||||
; read two (address) parameters
|
|
||||||
|
|
||||||
; Long_CT = difference (2nd. minus 1st.)
|
|
||||||
; Long_PC = 1st. parameter
|
|
||||||
; Long_DA = 2nd. parameter
|
|
||||||
|
|
||||||
; carry on exit flags error
|
|
||||||
|
|
||||||
JSR Get_LAC ; get 1st. parameter
|
|
||||||
BCS @error
|
|
||||||
JSR LAC_To_LPC ; Long_PC = 1st. address
|
|
||||||
JSR Get_LAC
|
|
||||||
BCS @error
|
|
||||||
JSR LAC_To_LDA ; Long_DA = 2nd. address
|
|
||||||
JSR LAC_Minus_LPC ; Long_CT = range
|
|
||||||
BCC @error
|
|
||||||
CLC
|
|
||||||
RTS
|
|
||||||
@error SEC
|
|
||||||
RTS
|
|
||||||
|
|
||||||
; ********
|
; ********
|
||||||
Converter:
|
Converter:
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
;; #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# monitor_memread_helper = KERNAL_0.proxy_M1_memread
|
||||||
|
;; #ALIAS# monitor_memwrite_helper = KERNAL_0.proxy_M1_memwrite
|
||||||
|
|
||||||
;; #ALIAS# CHRIN = KERNAL_0.proxy_M1_CHRIN
|
;; #ALIAS# CHRIN = KERNAL_0.proxy_M1_CHRIN
|
||||||
;; #ALIAS# CHROUT = KERNAL_0.proxy_M1_CHROUT
|
;; #ALIAS# CHROUT = KERNAL_0.proxy_M1_CHROUT
|
||||||
|
|||||||
@@ -5,10 +5,10 @@
|
|||||||
Mon_Bits:
|
Mon_Bits:
|
||||||
|
|
||||||
jsr Set_MODE_80
|
jsr Set_MODE_80
|
||||||
lda Adr_Mode
|
lda Addr_Mode
|
||||||
pha ; store addressing mode, in case no parameter is given
|
pha ; store addressing mode, in case no parameter is given
|
||||||
lda #$00
|
lda #$00
|
||||||
sta Adr_Mode ; by default use C64-style addressing
|
sta Addr_Mode ; by default use C64-style addressing
|
||||||
|
|
||||||
jsr Get_Addr_To_LAC ; get 1st parameter (start address)
|
jsr Get_Addr_To_LAC ; get 1st parameter (start address)
|
||||||
beq @nopar
|
beq @nopar
|
||||||
@@ -19,7 +19,7 @@ Mon_Bits:
|
|||||||
@nopar:
|
@nopar:
|
||||||
|
|
||||||
pla ; retrieve old addressing mode
|
pla ; retrieve old addressing mode
|
||||||
sta Adr_Mode
|
sta Addr_Mode
|
||||||
|
|
||||||
@start:
|
@start:
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
|
|
||||||
; Based on BSM (Bit Shifter's Monitor)
|
; Based on BSM (Bit Shifter's Monitor)
|
||||||
|
|
||||||
|
|
||||||
Mon_Disassemble:
|
Mon_Disassemble:
|
||||||
|
|
||||||
lda Adr_Mode
|
lda Addr_Mode
|
||||||
pha ; store addressing mode, in case no parameter is given
|
pha ; store addressing mode, in case no parameter is given
|
||||||
lda #$00
|
lda #$00
|
||||||
sta Adr_Mode ; by default use C64-style addressing
|
sta Addr_Mode ; by default use C64-style addressing
|
||||||
|
|
||||||
jsr Get_Addr_To_LAC ; get 1st parameter (start address)
|
jsr Get_Addr_To_LAC ; get 1st parameter (start address)
|
||||||
beq @nopar
|
beq @nopar
|
||||||
@@ -21,7 +22,7 @@ Mon_Disassemble:
|
|||||||
@nopar:
|
@nopar:
|
||||||
|
|
||||||
pla ; retrieve old addressing mode
|
pla ; retrieve old addressing mode
|
||||||
sta Adr_Mode
|
sta Addr_Mode
|
||||||
|
|
||||||
@norange:
|
@norange:
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
|
||||||
|
; Based on BSM (Bit Shifter's Monitor)
|
||||||
|
|
||||||
|
|
||||||
|
; *******
|
||||||
|
Mon_Fill:
|
||||||
|
; *******
|
||||||
|
|
||||||
|
jsr Get_Param_Range ; Long_PC = target
|
||||||
|
+bcs Mon_Error ; Long_CT = count
|
||||||
|
|
||||||
|
jsr Get_Addr_To_LAC ; Long_AC = fill byte
|
||||||
|
+beq Mon_Error
|
||||||
|
lda Long_AC+1
|
||||||
|
ora Long_AC+2
|
||||||
|
ora Long_AC+3
|
||||||
|
+bne Mon_Error ; only 1 fill byte allowed
|
||||||
|
|
||||||
|
jsr Print_CR
|
||||||
|
|
||||||
|
ldz #$00
|
||||||
|
|
||||||
|
@loop:
|
||||||
|
|
||||||
|
lda Long_AC
|
||||||
|
jsr Put_To_Memory
|
||||||
|
jsr Inc_LPC
|
||||||
|
jsr Dec_LCT
|
||||||
|
bpl @loop
|
||||||
|
|
||||||
|
jmp Main
|
||||||
@@ -1,11 +1,12 @@
|
|||||||
|
|
||||||
; Based on BSM (Bit Shifter's Monitor)
|
; Based on BSM (Bit Shifter's Monitor)
|
||||||
|
|
||||||
|
|
||||||
Mon_Memory:
|
Mon_Memory:
|
||||||
|
|
||||||
jsr Set_MODE_80
|
jsr Set_MODE_80
|
||||||
lda #$00
|
lda #$00
|
||||||
sta Adr_Mode ; by default use C64-style addressing
|
sta Addr_Mode ; by default use C64-style addressing
|
||||||
|
|
||||||
jsr Get_Addr_To_LAC ; get 1st parameter (start address)
|
jsr Get_Addr_To_LAC ; get 1st parameter (start address)
|
||||||
+beq Mon_Error
|
+beq Mon_Error
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ DBG_print_long_pc:
|
|||||||
jsr PRIMM
|
jsr PRIMM
|
||||||
!pet " addr mode : ", 0
|
!pet " addr mode : ", 0
|
||||||
|
|
||||||
lda Adr_Mode
|
lda Addr_Mode
|
||||||
jsr Print_Hex
|
jsr Print_Hex
|
||||||
|
|
||||||
jsr PRIMM
|
jsr PRIMM
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
; Based on BSM (Bit Shifter's Monitor) - disabled code
|
; Based on BSM (Bit Shifter's Monitor) - disabled code
|
||||||
|
|
||||||
|
|
||||||
!ifdef DISABLED_DISABLED {
|
!ifdef DISABLED_DISABLED {
|
||||||
|
|
||||||
!addr Disk_Track = $XX ; logical track 1 -> 255
|
!addr Disk_Track = $XX ; logical track 1 -> 255
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
; Based on BSM (Bit Shifter's Monitor)
|
; Based on BSM (Bit Shifter's Monitor)
|
||||||
|
|
||||||
|
|
||||||
Get_Addr_To_LAC:
|
Get_Addr_To_LAC:
|
||||||
|
|
||||||
phx
|
phx
|
||||||
@@ -133,7 +134,7 @@ Get_Addr_To_LAC:
|
|||||||
@set_long_mode:
|
@set_long_mode:
|
||||||
|
|
||||||
lda #$80 ; set addressing mode to long
|
lda #$80 ; set addressing mode to long
|
||||||
sta Adr_Mode
|
sta Addr_Mode
|
||||||
|
|
||||||
@check_done:
|
@check_done:
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
|
||||||
|
; Based on BSM (Bit Shifter's Monitor)
|
||||||
|
|
||||||
|
|
||||||
|
Get_Param_Range:
|
||||||
|
|
||||||
|
; read two (address) parameters
|
||||||
|
|
||||||
|
; Long_CT - difference (2nd minus 1st parameter)
|
||||||
|
; Long_PC - 1st parameter
|
||||||
|
; Src_Addr_Mode - 1st parameter addressing mode
|
||||||
|
; Long_DA - 2nd parameter
|
||||||
|
; Dst_Addr_Mode - 2nd parameter addressing mode
|
||||||
|
|
||||||
|
; carry on exit - 2nd parameter lower than 1st one
|
||||||
|
|
||||||
|
jsr @get_helper
|
||||||
|
sta Src_Addr_Mode
|
||||||
|
jsr LAC_To_LPC ; Long_PC - 1st address
|
||||||
|
|
||||||
|
jsr @get_helper
|
||||||
|
sta Dst_Addr_Mode
|
||||||
|
jsr LAC_To_LDA ; Long_PC - 2nd address
|
||||||
|
|
||||||
|
jsr LAC_Minus_LPC ; Long_CT = range
|
||||||
|
bcc @error
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
@error:
|
||||||
|
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
@get_helper:
|
||||||
|
|
||||||
|
lda #$00
|
||||||
|
sta Addr_Mode
|
||||||
|
jsr Get_Addr_To_LAC
|
||||||
|
beq @error
|
||||||
|
lda Addr_Mode
|
||||||
|
rts
|
||||||
+106
-52
@@ -10,6 +10,74 @@ Get_From_Memory:
|
|||||||
|
|
||||||
; Copy PC + .Z to TMP, set .Z to 0
|
; Copy PC + .Z to TMP, set .Z to 0
|
||||||
|
|
||||||
|
jsr Get_Put_Memory_Prepare
|
||||||
|
|
||||||
|
; Check addressing mode
|
||||||
|
|
||||||
|
bbs7 Addr_Mode, @mode_flat
|
||||||
|
|
||||||
|
@mode_64k:
|
||||||
|
|
||||||
|
lda #$00 ; make sure this is 64K address
|
||||||
|
sta Long_TMP+2
|
||||||
|
sta Long_TMP+3
|
||||||
|
|
||||||
|
lda Long_TMP+1
|
||||||
|
bne @read_64k ; branch if no need to handle shadow memory (not zero page)
|
||||||
|
lda Long_TMP+0
|
||||||
|
dec
|
||||||
|
dec
|
||||||
|
cmp #$8E
|
||||||
|
bcs @read_64k ; branch if no need to handle shadow memory (0, 1, or above $8F)
|
||||||
|
@1:
|
||||||
|
bra @read_shadow
|
||||||
|
|
||||||
|
@mode_flat:
|
||||||
|
|
||||||
|
lda Long_TMP+3
|
||||||
|
ora Long_TMP+2
|
||||||
|
ora Long_TMP+1
|
||||||
|
bne @read_flat
|
||||||
|
|
||||||
|
lda Long_TMP+0
|
||||||
|
dec
|
||||||
|
dec
|
||||||
|
cmp #$8E
|
||||||
|
bcs @read_flat
|
||||||
|
bra @1
|
||||||
|
|
||||||
|
@read_64k:
|
||||||
|
|
||||||
|
bbr7 Long_TMP+1, @read_flat ; below $8000 we do not want to retrieve MAP/EOM banked memory
|
||||||
|
bra @read
|
||||||
|
|
||||||
|
@read_shadow:
|
||||||
|
|
||||||
|
jsr Get_Put_Memory_Prepare_Shadow
|
||||||
|
|
||||||
|
@read_flat:
|
||||||
|
|
||||||
|
jsr monitor_memread_helper
|
||||||
|
bra Get_Put_Memory_End
|
||||||
|
|
||||||
|
@read:
|
||||||
|
|
||||||
|
lda (Long_TMP),Z
|
||||||
|
|
||||||
|
; FALLTROUGH
|
||||||
|
|
||||||
|
Get_Put_Memory_End:
|
||||||
|
|
||||||
|
plz
|
||||||
|
ply
|
||||||
|
plx
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
Get_Put_Memory_Prepare:
|
||||||
|
|
||||||
|
; Copy PC + .Z to TMP, set .Z to 0
|
||||||
|
|
||||||
clc
|
clc
|
||||||
tza
|
tza
|
||||||
adc Long_PC+0
|
adc Long_PC+0
|
||||||
@@ -26,47 +94,11 @@ Get_From_Memory:
|
|||||||
|
|
||||||
ldz #$00
|
ldz #$00
|
||||||
|
|
||||||
; Check addressing mode
|
rts
|
||||||
|
|
||||||
bbs7 Adr_Mode, @mode_flat
|
Get_Put_Memory_Prepare_Shadow:
|
||||||
|
|
||||||
@mode_64k:
|
|
||||||
|
|
||||||
lda #$00 ; make sure this is 64K address
|
|
||||||
sta Long_TMP+2
|
|
||||||
sta Long_TMP+3
|
|
||||||
|
|
||||||
lda Long_TMP+1
|
|
||||||
bne @read_64k ; branch if no need to handle shadow memory (not zero page)
|
|
||||||
lda Long_TMP+0
|
|
||||||
dec
|
|
||||||
dec
|
|
||||||
cmp #$8E
|
|
||||||
bcs @read_64k ; branch if no need to handle shadow memory (0, 1, or above $8F)
|
|
||||||
@2:
|
|
||||||
sta Long_TMP+0
|
sta Long_TMP+0
|
||||||
bra @read_shadow
|
|
||||||
|
|
||||||
@mode_flat:
|
|
||||||
|
|
||||||
lda Long_TMP+3
|
|
||||||
ora Long_TMP+2
|
|
||||||
ora Long_TMP+1
|
|
||||||
bne @read_flat
|
|
||||||
|
|
||||||
lda Long_TMP+0
|
|
||||||
dec
|
|
||||||
dec
|
|
||||||
cmp #$8E
|
|
||||||
bcs @read_flat
|
|
||||||
bra @2
|
|
||||||
|
|
||||||
@read_64k:
|
|
||||||
|
|
||||||
bbr7 Long_TMP+1, @read_flat ; below $8000 we do not want to retrieve MAP/EOM banked memory
|
|
||||||
bra @read
|
|
||||||
|
|
||||||
@read_shadow:
|
|
||||||
|
|
||||||
lda #MEMCONF_SHADOW_BZP_1
|
lda #MEMCONF_SHADOW_BZP_1
|
||||||
sta Long_TMP+1
|
sta Long_TMP+1
|
||||||
@@ -75,18 +107,40 @@ Get_From_Memory:
|
|||||||
lda #MEMCONF_SHADOW_BZP_3
|
lda #MEMCONF_SHADOW_BZP_3
|
||||||
sta Long_TMP+3
|
sta Long_TMP+3
|
||||||
|
|
||||||
@read_flat:
|
|
||||||
|
|
||||||
jsr monitor_memread_helper
|
|
||||||
bra @end
|
|
||||||
|
|
||||||
@read:
|
|
||||||
lda (Long_TMP),Z
|
|
||||||
|
|
||||||
@end:
|
|
||||||
|
|
||||||
plz
|
|
||||||
ply
|
|
||||||
plx
|
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Put_To_Memory:
|
||||||
|
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
phz
|
||||||
|
pha
|
||||||
|
|
||||||
|
; Copy PC + .Z to TMP, set .Z to 0
|
||||||
|
|
||||||
|
jsr Get_Put_Memory_Prepare
|
||||||
|
|
||||||
|
; Check if address is related to shadow zeropage
|
||||||
|
|
||||||
|
lda Long_TMP+1
|
||||||
|
ora Long_TMP+2
|
||||||
|
ora Long_TMP+3
|
||||||
|
beq @write_flat
|
||||||
|
|
||||||
|
lda Long_TMP+0
|
||||||
|
dec
|
||||||
|
dec
|
||||||
|
cmp #$8E
|
||||||
|
bcs @write_flat
|
||||||
|
|
||||||
|
@write_shadow:
|
||||||
|
|
||||||
|
jsr Get_Put_Memory_Prepare_Shadow
|
||||||
|
|
||||||
|
@write_flat:
|
||||||
|
|
||||||
|
pla
|
||||||
|
jsr monitor_memwrite_helper
|
||||||
|
bra Get_Put_Memory_End
|
||||||
Reference in new issue
Block a user