more work towards SD card support
This commit is contained in:
1 parent
79c094dce5
commit
219916aa4e
2 files changed
+30
-1
No files matched your search
@@ -75,6 +75,8 @@ sdcard_helper_fail:
|
|||||||
|
|
||||||
sdcard_wait_ready:
|
sdcard_wait_ready:
|
||||||
|
|
||||||
|
; XXX if card does not get ready, try to reset it
|
||||||
|
|
||||||
lda SD_CTL
|
lda SD_CTL
|
||||||
; Sometimes we see this result, i.e., sdcard.vhdl thinks it is done,
|
; Sometimes we see this result, i.e., sdcard.vhdl thinks it is done,
|
||||||
; but sdcardio.vhdl thinks not. This means a read error.
|
; but sdcardio.vhdl thinks not. This means a read error.
|
||||||
|
|||||||
@@ -42,23 +42,50 @@ sdcard_writesector_try_loop:
|
|||||||
|
|
||||||
jsr sdcard_writesector_copy_data
|
jsr sdcard_writesector_copy_data
|
||||||
|
|
||||||
|
; Wait till card is ready
|
||||||
|
|
||||||
|
jsr sdcard_wait_ready
|
||||||
|
bcs sdcard_writesector_fail
|
||||||
|
|
||||||
|
; Write command
|
||||||
|
|
||||||
|
lda #CARD_CMD_WRITE ; $03
|
||||||
|
sta SD_CTL
|
||||||
|
|
||||||
|
; Wait for command completion
|
||||||
|
|
||||||
|
jsr sdcard_wait_ready
|
||||||
|
bcs sdcard_writesector_fail
|
||||||
|
|
||||||
|
; Check result
|
||||||
|
|
||||||
|
lda SD_CTL
|
||||||
|
and #$67
|
||||||
|
bne sdcard_writesector_verify
|
||||||
|
|
||||||
|
; Write failed - retry
|
||||||
|
|
||||||
|
jsr sdcard_reset
|
||||||
|
dec CARD_TMP_RETRIES
|
||||||
|
bne sdcard_writesector_try_loop
|
||||||
|
|
||||||
|
; FALLTROUGH
|
||||||
|
|
||||||
sdcard_writesector_fail:
|
sdcard_writesector_fail:
|
||||||
|
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
sdcard_writesector_verify:
|
||||||
|
|
||||||
|
; There is a bug in the SD controller; you have to read between writes,
|
||||||
|
; or it gets really upset
|
||||||
|
|
||||||
|
; XXX
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user