sector reading fixes
This commit is contained in:
1 parent
413dfa8f25
commit
62f9b2d3d6
3 files changed
+74
-8
No files matched your search
@@ -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"
|
||||
|
||||
@@ -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
|
||||
Reference in new issue
Block a user