sector reading fixes

This commit is contained in:
FeralChild64 committed 2021-03-02 21:43:37 +01:00
1 parent 413dfa8f25
commit 62f9b2d3d6
3 files changed
+74 -8

No files matched your search

+1 -1
View File
@@ -67,7 +67,7 @@
;; #CONFIG# KEYCMD_F9 "@20$"
;; #CONFIG# KEYCMD_F10 "\5FL"
;; #CONFIG# KEYCMD_F11 "COLORSET 128"
;; #CONFIG# KEYCMD_F11 "@21$"
;; #CONFIG# KEYCMD_F12 "\5FHF"
;; #CONFIG# KEYCMD_F13 "JOYCRSR 2"
;; #CONFIG# KEYCMD_F14 "BOOTCPM"
+58 -2
View File
@@ -6,12 +6,68 @@
dev_fd_cmd_OPEN:
; XXX provide implementation
lda #$01 ; mode: receive command or file name
sta FD_MODE
jmp dos_EXIT_SEC
jmp dos_EXIT_CLC
dev_fd_cmd_OPEN_EOI:
; XXX this dispatcher is temporary
; Erase filter pattern XXX this should be moved to common part
ldy #$0F
lda #$A0
@lp1:
sta PAR_FPATTERN, y
dey
bpl @lp1
; XXX add support for second floppy
lda FD_CMDFN_BUF
cmp #'$'
beq dev_fd_cmd_OPEN_dir
; FALLTROUGH
dev_fd_cmd_OPEN_file:
; XXX provide implementation
jmp dos_EXIT_CLC
dev_fd_cmd_OPEN_dir:
lda #$02 ; mode: read directory
sta FD_MODE
; Copy the filter from command XXX this should be moved to common part and deduplicated with file opening
ldy #$00
@lp1:
lda FD_CMDFN_BUF+1, y
cmp #$A0
beq @lp1_end
sta PAR_FPATTERN, y
iny
cpy #$10
bne @lp1
@lp1_end:
; XXX experimental code below
; Try to read track 40, sector 0 (disk header)
lda #40
sta PAR_TRACK
lda #$00
sta PAR_SECTOR
jsr dev_fd_util_readsector
; XXX continue implementation
jmp dos_EXIT_CLC
@@ -11,8 +11,11 @@ dev_fd_util_readsector:
lda #%10000000 ; select floppy buffer
trb SD_BUFCTL
lda #%00000100
trb FDC_CONTROL ; set side 0
lda #%00000111
trb FDC_CONTROL ; set drive 0 (internal) XXX support multiple drives
lda #%00001000
trb FDC_CONTROL ; set side 0 by default
; Select physical track and sector based on logical ones from PAR_TRACK and PAR_SECTOR
@@ -20,15 +23,20 @@ dev_fd_util_readsector:
dec
sta FDC_TRACK
lda FDC_SECTOR
lda PAR_SECTOR
cmp #20
bcc @side0
@side1:
lda #%00001000
tsb FDC_CONTROL ; set side 1
ldx #$01
lda PAR_SECTOR
sec
sbc #20
ldx #$01
+skip_2_bytes_trash_nvz
@side0:
@@ -44,9 +52,11 @@ dev_fd_util_readsector:
lda #$40
sta FDC_COMMAND
@lp:
lda FDC_STATUS_B ; XXX detect errors here
lda FDC_STATUS_B ; XXX detect errors here XXX waiting is probably not corrent
bpl @lp
; Copy sector to buffer in RAM
; XXX
rts