.export _SD_command .importzp sp .autoimport on ; void SD_command(uint8_t cmd, uint32_t arg, uint8_t crc) ; The plan: push crc to stack, load arg into tmp1 through 4 .proc _SD_command: near pha ; Push CRC to cpu stack ldy #$04 lda (sp),y ; Load CMD ora #$40 ; start bit jsr _spi_exchange dey arg_loop: ; send ARG lda (sp),y jsr _spi_exchange dey bpl arg_loop pla ; Pull CRC from stack ora #$01 ; stop bit jsr _spi_exchange jsr incsp5 ; pop all off stack rts .endproc