fixed LOAD command for CBDOS

This commit is contained in:
FeralChild64 committed 2021-02-14 16:19:00 +01:00
1 parent eec5a0680b
commit 67e9be4372
2 files changed
+74

No files matched your search

+17
View File
@@ -7,6 +7,9 @@
;
; XXX This is suspiciously complicated, most likely something is really wrong with the IEC support
!ifdef CONFIG_IEC {
@@ -57,6 +60,11 @@ load_iec:
jsr TALK
bcs load_iec_error
!ifdef CONFIG_MB_M65 {
jsr m65dos_check
+bcc m65dos_load_part ; branch if device is handeld by internal DOS
}
!ifdef HAS_IEC_BURST {
jsr burst_advertise
}
@@ -83,6 +91,10 @@ load_iec:
jsr load_iec_get_addr_byte
sta EAL+1
!ifdef CONFIG_MB_M65 {
load_iec_m65cont:
}
; If secondary address is 0, override EAL with STAL
lda SA
@@ -126,6 +138,11 @@ load_iec:
load_iec_loop:
!ifdef CONFIG_MB_M65 {
jsr m65dos_check
+bcc m65dos_load_loop ; branch if device is handeld by internal DOS
}
; We are now ready to receive bytes
!ifdef CONFIG_IEC_JIFFYDOS {
jsr iec_rx_dispatch
+57
View File
@@ -0,0 +1,57 @@
;; #LAYOUT# M65 KERNAL_0 #TAKE
;; #LAYOUT# * * #IGNORE
;
; MEGA65 pseudo-IEC internal DOS support - part of the LOAD routine
;
m65dos_load_part:
; Open channel for loading
lda #$60
jsr m65dos_tksa
jsr m65dos_get_addr_byte
sta EAL+0
jsr m65dos_get_addr_byte
sta EAL+1
jmp load_iec_m65cont
m65dos_get_addr_byte:
jsr m65dos_acptr
bcs @1
lda IOSTATUS
and #K_STS_EOI
bne @1
lda TBTCNT
rts
@1:
pla
pla
jmp load_iec_file_not_found
m65dos_load_loop:
jsr m65dos_acptr
; Handle the byte (store in memory / verify)
jsr lvs_handle_byte_load_verify
+bcs load_iec_error
; Advance pointer to data; it is OK if it advances past $FFFF,
; one autostart technique does exactly this
inw EAL+0
; Check for EOI - if so, this was the last byte
bit IOSTATUS
bvc m65dos_load_loop
; FALLTROUGH
jmp load_iec_loop_end