diff --git a/Source/HBIOS/sd.asm b/Source/HBIOS/sd.asm index 0acc1cc6..6c2c545a 100644 --- a/Source/HBIOS/sd.asm +++ b/Source/HBIOS/sd.asm @@ -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