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
@@ -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
|
||||
|
||||
@@ -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