|
|
|
@ -212,9 +212,9 @@ SD_OPRDEF .EQU %00100000 ; QUIESCENT STATE |
|
|
|
SD_CD0 .EQU %00000001 ; IN/OUT:SD_OPREG:0 = CD0, PMOD pull CD0 low |
|
|
|
SD_CD1 .EQU %00000010 ; IN:SD_OPREG:1 = CD1, IN=0 Card detect switch |
|
|
|
SD_CD2 .EQU %00000100 ; IN:SD_OPREG:2 = CD2, IN=0 Card detect switch |
|
|
|
SD_CS0 .EQU %00010000 ; IN/OUT:SD_OPREG:3 = CS0, PMOD SPI CS |
|
|
|
SD_CS1 .EQU %00010000 ; IN/OUT:SD_OPREG:4 = CS1, SDCARD1 CS, IN=1 Card present |
|
|
|
SD_CS2 .EQU %00010000 ; IN/OUT:SD_OPREG:5 = CS2, SDCARD2 CS, IN=1 Card present |
|
|
|
ENETCS0 .EQU %00001000 ; IN/OUT:SD_OPREG:3 = CS0, PMOD SPI CS |
|
|
|
SDCS1 .EQU %00010000 ; IN/OUT:SD_OPREG:4 = CS1, SDCARD1 CS, IN=1 Card present |
|
|
|
PARK .EQU %00100000 ; IN/OUT:SD_OPREG:5 = CS2, SDCARD2 CS, IN=1 Card present |
|
|
|
SD_WRTR .EQU %01011100 ; Write data and transfer |
|
|
|
SD_RDTR .EQU %01011101 ; Read data and transfer |
|
|
|
SD_RDNTR .EQU %01011100 ; Read data and NO transfer |
|
|
|
@ -1337,15 +1337,11 @@ SD_EXECCMD1: |
|
|
|
#IF (SDMODE == SDMODE_MT) |
|
|
|
; 256 loops might not be long enough timeout |
|
|
|
; when only IN is required to read data |
|
|
|
; LD DE,$7FFF ; INIT TIMEOUT LOOP COUNTER |
|
|
|
LD E,0 ; INIT TIMEOUT LOOP COUNTER |
|
|
|
SD_EXECCMD2: |
|
|
|
IN A,(SD_RDTR) ; GET A BYTE FROM THE CARD |
|
|
|
OR A ; SET FLAGS |
|
|
|
JP P,SD_EXECCMD3 ; IF HIGH BIT IS 0, WE HAVE RESULT |
|
|
|
; DEC DE |
|
|
|
; BIT 7,D |
|
|
|
; JR Z,SD_EXECCMD2 ; KEEP TRYING UNTIL TIMEOUT |
|
|
|
DEC E ; OTHERWISE DECREMENT LOOP COUNTER |
|
|
|
JR NZ,SD_EXECCMD2 ; AND LOOP UNTIL TIMEOUT |
|
|
|
#ELSE |
|
|
|
@ -1670,18 +1666,7 @@ SD_SELECT2: |
|
|
|
#ENDIF |
|
|
|
#ELSE |
|
|
|
#IF (SDMODE == SDMODE_MT) |
|
|
|
IN A,(SD_OPRREG) |
|
|
|
BIT 0,(IY+SD_DEV) ; DEVICE 0 OR 1 |
|
|
|
JR NZ,SD_SELECT1 |
|
|
|
AND SD_CS1 ; DEVICE 0 |
|
|
|
JR SD_SELECT2 |
|
|
|
SD_SELECT1: |
|
|
|
AND SD_CS2 ; DEVICE 1 |
|
|
|
SD_SELECT2: |
|
|
|
JR NZ,SD_SELECT3 ; NZ if CS input high |
|
|
|
POP DE ; return address of call to SD_SELECT |
|
|
|
POP DE ; return address of call to SD_WAITRDY |
|
|
|
JR SD_NOMEDIA |
|
|
|
LD A,SDCS1 |
|
|
|
SD_SELECT3: |
|
|
|
LD D,A |
|
|
|
LD A,(SD_OPRVAL) |
|
|
|
@ -1707,7 +1692,7 @@ SD_DESELECT: |
|
|
|
#ENDIF |
|
|
|
#ELSE |
|
|
|
#IF (SDMODE == SDMODE_MT) |
|
|
|
AND ~(SD_CS1 + SD_CS2) ; RESET SD_CS1 and SD_CS2 (CHIP SELECT) |
|
|
|
LD A,PARK ; WHY IS PARK (CS2) BEING ASSERTED HERE??? |
|
|
|
#ELSE |
|
|
|
AND ~SD_CS ; RESET SD_CS (CHIP SELECT) |
|
|
|
#ENDIF |
|
|
|
|