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_F9 "@20$"
|
||||||
;; #CONFIG# KEYCMD_F10 "\5FL"
|
;; #CONFIG# KEYCMD_F10 "\5FL"
|
||||||
;; #CONFIG# KEYCMD_F11 "COLORSET 128"
|
;; #CONFIG# KEYCMD_F11 "@21$"
|
||||||
;; #CONFIG# KEYCMD_F12 "\5FHF"
|
;; #CONFIG# KEYCMD_F12 "\5FHF"
|
||||||
;; #CONFIG# KEYCMD_F13 "JOYCRSR 2"
|
;; #CONFIG# KEYCMD_F13 "JOYCRSR 2"
|
||||||
;; #CONFIG# KEYCMD_F14 "BOOTCPM"
|
;; #CONFIG# KEYCMD_F14 "BOOTCPM"
|
||||||
|
|||||||
@@ -6,12 +6,68 @@
|
|||||||
|
|
||||||
dev_fd_cmd_OPEN:
|
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:
|
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
|
; XXX provide implementation
|
||||||
|
|
||||||
jmp dos_EXIT_CLC
|
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
|
lda #%10000000 ; select floppy buffer
|
||||||
trb SD_BUFCTL
|
trb SD_BUFCTL
|
||||||
|
|
||||||
lda #%00000100
|
lda #%00000111
|
||||||
trb FDC_CONTROL ; set side 0
|
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
|
; Select physical track and sector based on logical ones from PAR_TRACK and PAR_SECTOR
|
||||||
|
|
||||||
@@ -20,15 +23,20 @@ dev_fd_util_readsector:
|
|||||||
dec
|
dec
|
||||||
sta FDC_TRACK
|
sta FDC_TRACK
|
||||||
|
|
||||||
lda FDC_SECTOR
|
lda PAR_SECTOR
|
||||||
cmp #20
|
cmp #20
|
||||||
bcc @side0
|
bcc @side0
|
||||||
|
|
||||||
@side1:
|
@side1:
|
||||||
|
|
||||||
ldx #$01
|
lda #%00001000
|
||||||
|
tsb FDC_CONTROL ; set side 1
|
||||||
|
|
||||||
|
lda PAR_SECTOR
|
||||||
sec
|
sec
|
||||||
sbc #20
|
sbc #20
|
||||||
|
|
||||||
|
ldx #$01
|
||||||
+skip_2_bytes_trash_nvz
|
+skip_2_bytes_trash_nvz
|
||||||
|
|
||||||
@side0:
|
@side0:
|
||||||
@@ -44,9 +52,11 @@ dev_fd_util_readsector:
|
|||||||
lda #$40
|
lda #$40
|
||||||
sta FDC_COMMAND
|
sta FDC_COMMAND
|
||||||
@lp:
|
@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
|
bpl @lp
|
||||||
|
|
||||||
; Copy sector to buffer in RAM
|
; Copy sector to buffer in RAM
|
||||||
|
|
||||||
; XXX
|
; XXX
|
||||||
|
|
||||||
|
rts
|
||||||
Reference in new issue
Block a user