more work towards disk operations in monitor
This commit is contained in:
1 parent
2264087042
commit
a9b6c6a8b1
5 files changed
+96
-86
No files matched your search
@@ -24,6 +24,17 @@ proxy_M1_end:
|
|||||||
|
|
||||||
jmp map_MON_1
|
jmp map_MON_1
|
||||||
|
|
||||||
|
proxy_M1_JLOAD:
|
||||||
|
|
||||||
|
jsr map_NORMAL
|
||||||
|
jsr JLOAD
|
||||||
|
bra proxy_M1_end
|
||||||
|
|
||||||
|
proxy_M1_JSAVE:
|
||||||
|
|
||||||
|
jsr map_NORMAL
|
||||||
|
jsr JSAVE
|
||||||
|
bra proxy_M1_end
|
||||||
|
|
||||||
; Memory acccess routines
|
; Memory acccess routines
|
||||||
|
|
||||||
|
|||||||
@@ -10,14 +10,19 @@
|
|||||||
;; #ALIAS# SCREEN = KERNAL_0.SCREEN
|
;; #ALIAS# SCREEN = KERNAL_0.SCREEN
|
||||||
;; #ALIAS# SELDEV = KERNAL_0.SELDEV
|
;; #ALIAS# SELDEV = KERNAL_0.SELDEV
|
||||||
|
|
||||||
|
;; #ALIAS# CHRIN = KERNAL_0.proxy_M1_CHRIN
|
||||||
|
;; #ALIAS# CHROUT = KERNAL_0.proxy_M1_CHROUT
|
||||||
|
|
||||||
|
;; #ALIAS# LOAD = KERNAL_0.proxy_M1_JLOAD
|
||||||
|
;; #ALIAS# SAVE = KERNAL_0.proxy_M1_JSAVE
|
||||||
|
|
||||||
;; #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# monitor_memwrite_helper = KERNAL_0.proxy_M1_memwrite
|
||||||
;; #ALIAS# monitor_jmpout = KERNAL_0.proxy_M1_jmpout
|
;; #ALIAS# monitor_jmpout = KERNAL_0.proxy_M1_jmpout
|
||||||
;; #ALIAS# monitor_jmpout_ret = KERNAL_0.proxy_M1_jmpout_ret
|
;; #ALIAS# monitor_jmpout_ret = KERNAL_0.proxy_M1_jmpout_ret
|
||||||
|
|
||||||
;; #ALIAS# CHRIN = KERNAL_0.proxy_M1_CHRIN
|
;; #ALIAS# m65_shadow_BZP = KERNAL_0.m65_shadow_BZP
|
||||||
;; #ALIAS# CHROUT = KERNAL_0.proxy_M1_CHROUT
|
|
||||||
|
|
||||||
;; #ALIAS# wedge_dos_monitor = BASIC_0.wedge_dos_monitor
|
;; #ALIAS# wedge_dos_monitor = BASIC_0.wedge_dos_monitor
|
||||||
|
|
||||||
|
|||||||
@@ -66,10 +66,13 @@ Mon_Go_JSR_comon:
|
|||||||
lda ZR
|
lda ZR
|
||||||
pha
|
pha
|
||||||
|
|
||||||
|
jsr m65_shadow_BZP
|
||||||
jmp monitor_jmpout
|
jmp monitor_jmpout
|
||||||
|
|
||||||
Mon_JSR_ret:
|
Mon_JSR_ret:
|
||||||
|
|
||||||
|
jsr m65_shadow_BZP
|
||||||
|
|
||||||
; Retrieve registers
|
; Retrieve registers
|
||||||
|
|
||||||
pha
|
pha
|
||||||
|
|||||||
@@ -32,8 +32,11 @@ Load_Save:
|
|||||||
; Separate flow for SAVE
|
; Separate flow for SAVE
|
||||||
|
|
||||||
lda VERCKK
|
lda VERCKK
|
||||||
cmp #$02
|
cmp #'S'
|
||||||
beq Mon_Save
|
beq Mon_Save
|
||||||
|
sec
|
||||||
|
sbc #'L'
|
||||||
|
sta VERCKK ; 0 for load, other value for verify
|
||||||
|
|
||||||
; FALLTROUGH
|
; FALLTROUGH
|
||||||
|
|
||||||
@@ -52,10 +55,37 @@ Mon_Load_Verify:
|
|||||||
|
|
||||||
@got_unit:
|
@got_unit:
|
||||||
|
|
||||||
; XXX to be finished
|
; Determine start address
|
||||||
|
|
||||||
jmp Main
|
lda #$00
|
||||||
|
sta Addr_Mode
|
||||||
|
jsr Get_Val_To_LAC
|
||||||
|
beq @no_startaddr
|
||||||
|
lda Addr_Mode
|
||||||
|
+bne Mon_Error
|
||||||
|
|
||||||
|
; Load/Verify with fixed start address
|
||||||
|
|
||||||
|
ldx Long_AC+0
|
||||||
|
ldy Long_AC+1
|
||||||
|
|
||||||
|
lda #$00
|
||||||
|
+skip_2_bytes_trash_nvz
|
||||||
|
|
||||||
|
@no_startaddr:
|
||||||
|
|
||||||
|
; Load/Verify without fixed start address
|
||||||
|
|
||||||
|
lda #$01
|
||||||
|
|
||||||
|
@load:
|
||||||
|
|
||||||
|
sta SA
|
||||||
|
lda VERCKK
|
||||||
|
jsr m65_shadow_BZP
|
||||||
|
jsr LOAD
|
||||||
|
|
||||||
|
bra Mon_Load_Save_Common
|
||||||
|
|
||||||
Mon_Save:
|
Mon_Save:
|
||||||
|
|
||||||
@@ -64,89 +94,49 @@ Mon_Save:
|
|||||||
jsr Get_Val_To_LAC
|
jsr Get_Val_To_LAC
|
||||||
+beq Mon_Error
|
+beq Mon_Error
|
||||||
jsr Syntax_Byte_AC
|
jsr Syntax_Byte_AC
|
||||||
|
lda Long_AC+0
|
||||||
|
sta FA
|
||||||
|
|
||||||
|
; Determine start address
|
||||||
|
|
||||||
|
lda #$00
|
||||||
|
sta Addr_Mode
|
||||||
|
jsr Get_Val_To_LAC
|
||||||
|
+bne Mon_Error
|
||||||
|
lda Addr_Mode
|
||||||
|
+bne Mon_Error
|
||||||
|
|
||||||
; XXX to be finished
|
lda Long_AC+1
|
||||||
|
pha
|
||||||
|
lda Long_AC+0
|
||||||
|
pha
|
||||||
|
|
||||||
|
; Determine end address
|
||||||
|
|
||||||
|
jsr Get_Val_To_LAC
|
||||||
|
+bne Mon_Error
|
||||||
|
lda Addr_Mode
|
||||||
|
+bne Mon_Error
|
||||||
|
|
||||||
|
inw Long_AC+0
|
||||||
|
ldx Long_AC+0
|
||||||
|
ldy Long_AC+1
|
||||||
|
|
||||||
|
jsr m65_shadow_BZP
|
||||||
|
pla ; set start address for SAVE
|
||||||
|
sta TXTTAB+0
|
||||||
|
pla
|
||||||
|
sta TXTTAB+1
|
||||||
|
lda #TXTTAB
|
||||||
|
|
||||||
|
jsr SAVE
|
||||||
|
|
||||||
|
; FALLTROUGH
|
||||||
|
|
||||||
|
Mon_Load_Save_Common:
|
||||||
|
|
||||||
|
jsr m65_shadow_BZP
|
||||||
|
|
||||||
|
; XXX to be finished - check for errors
|
||||||
|
|
||||||
jmp Main
|
jmp Main
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; LDY #8
|
|
||||||
; STY SA
|
|
||||||
; LDY #0
|
|
||||||
; STY BA
|
|
||||||
; STY FNLEN
|
|
||||||
; STY FNBANK
|
|
||||||
; STY IOSTATUS
|
|
||||||
; LDA #>Mon_Data
|
|
||||||
; STA FNADR+1
|
|
||||||
; LDA #<Mon_Data
|
|
||||||
; STA FNADR
|
|
||||||
; @skip JSR Get_Char ; skip blanks
|
|
||||||
; LBEQ Mon_Error
|
|
||||||
; CMP #' '
|
|
||||||
; BEQ @skip
|
|
||||||
; CMP #KEY_QUOTE ; must be quote
|
|
||||||
; LBNE Mon_Error
|
|
||||||
|
|
||||||
; LDX Buf_Index
|
|
||||||
; @copyfn LDA BUF,X ; copy filename
|
|
||||||
; BEQ @do ; no more input
|
|
||||||
; INX
|
|
||||||
; CMP #KEY_QUOTE
|
|
||||||
; BEQ @unit ; end of filename
|
|
||||||
; STA (FNADR),Y ; store to filename
|
|
||||||
; INC FNLEN
|
|
||||||
; INY
|
|
||||||
; CPY #19 ; max = 16 plus prefix "@0:"
|
|
||||||
; BCC @copyfn
|
|
||||||
; JMP Mon_Error ; filename too long
|
|
||||||
|
|
||||||
; @unit STX Buf_Index ; update read position
|
|
||||||
; JSR Get_Char
|
|
||||||
; BEQ @do ; no more parameter
|
|
||||||
; JSR Get_LAC
|
|
||||||
; BCS @do
|
|
||||||
; LDA Long_AC ; unit #
|
|
||||||
; STA FA
|
|
||||||
; JSR Get_LAC
|
|
||||||
; BCS @do
|
|
||||||
; JSR LAC_To_LPC ; Long_PC = start address
|
|
||||||
; STA BA ; Bank
|
|
||||||
; JSR Get_LAC ; Long_AC = end address + 1
|
|
||||||
; BCS @load ; no end address -> load/verify
|
|
||||||
; JSR Print_CR
|
|
||||||
; LDX Long_AC ; X/Y = end address
|
|
||||||
; LDY Long_AC+1
|
|
||||||
; LDA VERCKK ; A = load/verify/save
|
|
||||||
; CMP #'S'
|
|
||||||
; LBNE Mon_Error ; must be Save
|
|
||||||
; LDA #0
|
|
||||||
; STA SA ; set SA for PRG
|
|
||||||
; LDA #Long_PC ; Long_PC = start address
|
|
||||||
; JSR SAVE
|
|
||||||
; @exit JMP Main
|
|
||||||
|
|
||||||
; @do LDA VERCKK
|
|
||||||
; CMP #'V' ; Verify
|
|
||||||
; BEQ @exec
|
|
||||||
; CMP #'L' ; Load
|
|
||||||
; LBNE Mon_Error
|
|
||||||
; LDA #0 ; 0 = LOAD
|
|
||||||
; @exec JSR LOAD ; A == 0 : LOAD else VERIFY
|
|
||||||
; BBR4 IOSTATUS,@exit
|
|
||||||
; LDA VERCKK
|
|
||||||
; LBEQ Mon_Error
|
|
||||||
; LBCS Main
|
|
||||||
; JSR PRIMM
|
|
||||||
; !pet " error",0
|
|
||||||
; JMP Main
|
|
||||||
|
|
||||||
; @load LDX Long_PC
|
|
||||||
; LDY Long_PC+1
|
|
||||||
; LDA #0 ; 0 = use X/Y as load address
|
|
||||||
; STA SA ; and ignore load address from file
|
|
||||||
; BRA @do
|
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
; Monitor helper code - memory read and write
|
; Monitor helper code - memory read and write
|
||||||
|
|
||||||
|
|
||||||
Get_From_Memory_LAC:
|
Get_From_Memory_LAC:
|
||||||
|
|
||||||
jsr Exchange_LAC_LPC
|
jsr Exchange_LAC_LPC
|
||||||
|
|||||||
Reference in new issue
Block a user