attempt to sense disk on MEGA65

This commit is contained in:
FeralChild64 committed 2021-05-12 21:23:26 +02:00
1 parent bf583d904b
commit eac99c755c
1 file changed
+36 -17
+36 -17
View File
@@ -4,9 +4,24 @@
lowlevel_readsector:
; XXX compare device and unit too
; Set drive, check if disk is present
lda #%00001111 ; set drive 0 (internal) and side 0
trb FDC_CONTROL ; $D080
lda FDC_STATUS_B ; $D083 ; check if disk is inserted XXX this is probably not enough!
and #$08
bne @disk_present
; XXX set error code
sec
rts
@disk_present:
; Check if buffer contains data from given track
; XXX compare device and unit too
lda PAR_TRACK
cmp BUFTAB_TRACK+1
@@ -26,14 +41,9 @@ lowlevel_readsector:
lowlevel_readsector_force:
; Select FDD sector as buffer
lda #%10000000 ; select floppy buffer
trb SD_BUFCTL ; $D689
lda #%00001111 ; set drive 0 (internal) and side 0
trb FDC_CONTROL ; $D080
; Select physical track and sector based on logical ones from PAR_TRACK and PAR_SECTOR
lda PAR_TRACK
@@ -70,17 +80,8 @@ lowlevel_readsector_force:
lda #$40
sta FDC_COMMAND ; $D081
; Wait for RDREQ (indicates sector found)
@lp1:
lda FDC_STATUS_B ; $D083
bpl @lp1
; Wait for BUSY flag to clear
@lp2:
lda FDC_STATUS_A ; $D082
bmi @lp2
jsr lowlevel_wait_set_RDREQ ; wait till sector is found
jsr lowlevel_wait_clr_BUSY ; wait for BUSY flag to clear
; Wait for DRQ and EQ flags to go high
@@ -115,3 +116,21 @@ lowlevel_readsector_force:
clc
rts
; XXX consider moving these to a separate file
lowlevel_wait_clr_BUSY:
bit FDC_STATUS_A ; $D082
bmi lowlevel_wait_clr_BUSY
rts
lowlevel_wait_set_RDREQ:
bit FDC_STATUS_B ; $D083
bpl lowlevel_wait_set_RDREQ
rts