Files
open-roms/src/dos_m65/sdcard/sdcard_writesector.s
T

79 lines
749 B
ArmAsm

;
; Writes the sector to the SD card
;
; Based on https://github.com/MEGA65/mega65-libc/blob/master/cc65/src/sdcard.c
; XXX finish, provide documentation
sdcard_writesector:
; XXX check if card initialized and operable
lda SD_CTL
and #$03
bne sdcard_writesector ; XXX add a timer here
; End reset
lda #$01
sta SD_CTL
; Set write address
jsr sdcard_set_addr
jsr sdcard_writesector_copy_data
;
; Helper routines
;
sdcard_writesector_copy_data:
; XXX use DMAgic for this
phz
phx
ldx #$00
ldz #$00
@1:
lda CARD_BUF,x
sta [CARD_BUFPNT],z
inc CARD_BUFPNT+1
lda CARD_BUF+$100,x
sta [CARD_BUFPNT],z
dec CARD_BUFPNT+1
inz
inx
bne @1
; Restore registers and quit
plx
plz
clc
rts