From 891893c0e5ffadb21469b5fb92fa93520e61cf49 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Tue, 9 Nov 2021 20:25:38 -0800 Subject: [PATCH] Fix DSD Driver - Dual SD support in sd.asm was broken for two cards when the SC126 dual SD card support was added. This should fix all scenarios. --- Source/HBIOS/sd.asm | 18 ++++++++++++------ Source/ver.inc | 2 +- Source/ver.lib | 2 +- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/Source/HBIOS/sd.asm b/Source/HBIOS/sd.asm index 1bd0f951..e81baf5d 100644 --- a/Source/HBIOS/sd.asm +++ b/Source/HBIOS/sd.asm @@ -1742,26 +1742,32 @@ SD_SELECT: ; CALL SD_WAITTX ;#ENDIF ; +#IF (SDMODE == SDMODE_SC) LD A,(IY+SD_DEV) ; GET CURRENT DEVICE OR A ; SET FLAGS LD A,(SD_OPRVAL) ; GET CURRENT OPRVAL BACK JR NZ,SD_SELECT1 ; IF NOT ZERO, DO SECONDARY ; ASSERT PRIMARY CS, DEASSERT SECONDARY (IF ANY) OR SD_CS0 -#IF (SD_DEVCNT > 1) + #IF (SD_DEVCNT > 1) AND ~SD_CS1 -#ENDIF + #ENDIF JR SD_SELECT2 SD_SELECT1: ; DEASSERT PRIMARY CS, ASSERT SECONDARY (IF ANY) AND ~SD_CS0 -#IF (SD_DEVCNT > 1) + #IF (SD_DEVCNT > 1) OR SD_CS1 + #ENDIF +#ELSE + LD A,(SD_OPRVAL) ; GET CURRENT OPRVAL BACK + OR SD_CS0 #ENDIF +; SD_SELECT2: ; ADJUST BIT(S) FOR INTERFACES USING INVERTED CS BITS #IF ((SDMODE == SDMODE_PPI) | (SDMODE == SDMODE_UART) | (SDMODE == SDMODE_SC)) - #IF (SD_DEVCNT > 1) + #IF ((SDMODE == SDMODE_SC) & (SD_DEVCNT > 1)) XOR SD_CS0 | SD_CS1 #ELSE XOR SD_CS0 @@ -1794,14 +1800,14 @@ SD_DESELECT: #ENDIF ; LD A,(SD_OPRVAL) -#IF (SD_DEVCNT > 1) +#IF ((SDMODE == SDMODE_SC) & (SD_DEVCNT > 1)) AND ~(SD_CS0 | SD_CS1) #ELSE AND ~SD_CS0 #ENDIF ; ADJUST BIT(S) FOR INTERFACES USING INVERTED CS BITS #IF ((SDMODE == SDMODE_PPI) | (SDMODE == SDMODE_UART) | (SDMODE == SDMODE_SC)) - #IF (SD_DEVCNT > 1) + #IF ((SDMODE == SDMODE_SC) & (SD_DEVCNT > 1)) XOR SD_CS0 | SD_CS1 #ELSE XOR SD_CS0 diff --git a/Source/ver.inc b/Source/ver.inc index 5a9f50a1..eff51670 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,4 +2,4 @@ #DEFINE RMN 1 #DEFINE RUP 1 #DEFINE RTP 0 -#DEFINE BIOSVER "3.1.1-pre.137" +#DEFINE BIOSVER "3.1.1-pre.138" diff --git a/Source/ver.lib b/Source/ver.lib index 96a49209..ef0d476e 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 1 rup equ 1 rtp equ 0 biosver macro - db "3.1.1-pre.137" + db "3.1.1-pre.138" endm