some code for floppy sector reading
This commit is contained in:
1 parent
23c5e3e766
commit
413dfa8f25
3 files changed
+76
-3
No files matched your search
@@ -48,10 +48,10 @@
|
||||
!addr par_LDA_nnnn_Y = $8015 ; - 2 bytes; address in buffer, ram disk
|
||||
!addr code_RTS_04 = $8017 ; - RTS instruction
|
||||
|
||||
; Parameters for utilities/helkpers
|
||||
; Parameters for utilities/helpers
|
||||
|
||||
!addr PAR_TRACK = $8018 ; track number for status/error
|
||||
!addr PAR_SECTOR = $8019 ; sector number for status/error
|
||||
!addr PAR_TRACK = $8018 ; track number, also for status/error
|
||||
!addr PAR_SECTOR = $8019 ; sector number, also for status/error
|
||||
|
||||
!addr PAR_FSIZE_BYTES = $801A ; 4 bytes - file size in bytes
|
||||
!addr PAR_FSIZE_BLOCKS = $801E ; 2 bytes - file size in blocks
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
|
||||
; Read a single sector from a floppy drive
|
||||
|
||||
|
||||
; XXX utilize this
|
||||
|
||||
dev_fd_util_readsector:
|
||||
|
||||
; Select FDD sector as buffer
|
||||
|
||||
lda #%10000000 ; select floppy buffer
|
||||
trb SD_BUFCTL
|
||||
|
||||
lda #%00000100
|
||||
trb FDC_CONTROL ; set side 0
|
||||
|
||||
; Select physical track and sector based on logical ones from PAR_TRACK and PAR_SECTOR
|
||||
|
||||
lda PAR_TRACK
|
||||
dec
|
||||
sta FDC_TRACK
|
||||
|
||||
lda FDC_SECTOR
|
||||
cmp #20
|
||||
bcc @side0
|
||||
|
||||
@side1:
|
||||
|
||||
ldx #$01
|
||||
sec
|
||||
sbc #20
|
||||
+skip_2_bytes_trash_nvz
|
||||
|
||||
@side0:
|
||||
|
||||
ldx #$00
|
||||
stx FDC_SIDE
|
||||
clc
|
||||
ror
|
||||
sta FDC_SECTOR
|
||||
|
||||
; Ask the controller to read the sector
|
||||
|
||||
lda #$40
|
||||
sta FDC_COMMAND
|
||||
@lp:
|
||||
lda FDC_STATUS_B ; XXX detect errors here
|
||||
bpl @lp
|
||||
|
||||
; Copy sector to buffer in RAM
|
||||
|
||||
; XXX
|
||||
Reference in new issue
Block a user