more work towards disk operations in monitor

This commit is contained in:
FeralChild64 authored and FeralChild64 committed 2021-01-26 00:03:07 +01:00
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
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
+7 -2
View File
@@ -10,14 +10,19 @@
;; #ALIAS# SCREEN = KERNAL_0.SCREEN
;; #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_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
;; #ALIAS# m65_shadow_BZP = KERNAL_0.m65_shadow_BZP
;; #ALIAS# wedge_dos_monitor = BASIC_0.wedge_dos_monitor
+3
View File
@@ -66,10 +66,13 @@ Mon_Go_JSR_comon:
lda ZR
pha
jsr m65_shadow_BZP
jmp monitor_jmpout
Mon_JSR_ret:
jsr m65_shadow_BZP
; Retrieve registers
pha
+74 -84
View File
@@ -32,8 +32,11 @@ Load_Save:
; Separate flow for SAVE
lda VERCKK
cmp #$02
cmp #'S'
beq Mon_Save
sec
sbc #'L'
sta VERCKK ; 0 for load, other value for verify
; FALLTROUGH
@@ -52,10 +55,37 @@ Mon_Load_Verify:
@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:
@@ -64,89 +94,49 @@ Mon_Save:
jsr Get_Val_To_LAC
+beq Mon_Error
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
; 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
View File
@@ -1,6 +1,7 @@
; Monitor helper code - memory read and write
Get_From_Memory_LAC:
jsr Exchange_LAC_LPC