some code for floppy sector reading

This commit is contained in:
FeralChild64 committed 2021-03-01 19:45:39 +01:00
1 parent 23c5e3e766
commit 413dfa8f25
3 files changed
+76 -3

No files matched your search

+21
View File
@@ -29,6 +29,27 @@
!addr VIC_PALSEL = $D070 ; - palette selection register
; Floppy controller registers
!addr FDC_CONTROL = $D080
!addr FDC_COMMAND = $D081
!addr FDC_STATUS_A = $D082
!addr FDC_STATUS_B = $D083
!addr FDC_TRACK = $D084
!addr FDC_SECTOR = $D085
!addr FDC_SIDE = $D086
!addr FDC_DATA = $D087
!addr FDC_CLOCK = $D088
!addr FDC_STEP = $D089
!addr FDC_PCODE = $D08A
!addr FDC_DBG0 = $D6A0
!addr FDC_DBG1 = $D6A1
!addr FDC_DATARATE = $D6A2
!addr FDC_LAST_TRACK = $D6A3
!addr FDC_LAST_SECTOR = $D6A4
!addr FDC_LAST_SIODE = $D6A5
; Palette memory areas
!addr PALETTE_R = $D100
+3 -3
View File
@@ -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