From 49de66fb85c01d66392db4a71e6bb2c0491ddd92 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Sat, 9 Jan 2021 10:39:29 -0800 Subject: [PATCH 1/5] SD Card Driver Compatibility Improvement Handle SD Cards that do not support ACMD41 by using CMD1 instead. --- Source/HBIOS/Makefile | 2 +- Source/HBIOS/sd.asm | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Source/HBIOS/Makefile b/Source/HBIOS/Makefile index 6a45ea2c..ea32f1c1 100644 --- a/Source/HBIOS/Makefile +++ b/Source/HBIOS/Makefile @@ -3,7 +3,7 @@ ifndef ROM_CONFIG endif ifdef ROM_PLATFORM - OBJECTS = ${ROM_PLATFORM}_${ROM_CONFIG}.rom ${ROM_PLATFORM}_${ROM_CONFIG}.com + OBJECTS = ${ROM_PLATFORM}_${ROM_CONFIG}.rom ${ROM_PLATFORM}_${ROM_CONFIG}.com ${ROM_PLATFORM}_${ROM_CONFIG}.upd else OBJECTS += DYNO_std.rom DYNO_std.com DYNO_std.upd OBJECTS += EZZ80_std.rom EZZ80_std.com EZZ80_std.upd diff --git a/Source/HBIOS/sd.asm b/Source/HBIOS/sd.asm index f9b92a2a..0ae34c9e 100644 --- a/Source/HBIOS/sd.asm +++ b/Source/HBIOS/sd.asm @@ -946,7 +946,16 @@ SD_INITCARD3: LD A,$40 ; P0 = $40 INDICATES WE SUPPORT V2 CARDS LD (SD_CMDP0),A ; SET COMMAND PARM 0 CALL SD_EXECCMDND ; EXEC COMMAND W/ NO DATA RETURNED + ;RET NZ ; ABORT ON ERROR + JR Z,SD_INITCARD3AA ; IF GOOD SKIP AHEAD + ; SOME CARDS DON'T SUPPORT ACMD41, SO TRY CMD1 AS ALTERNATIVE + LD A,SD_CMD_SEND_OP_COND ; SD_CMD_SEND_OP_COND + CALL SD_INITCMD ; SETUP COMMAND BUFFER + LD A,$40 ; P0 = $40 INDICATES WE SUPPORT V2 CARDS + LD (SD_CMDP0),A ; SET COMMAND PARM 0 + CALL SD_EXECCMDND ; EXEC COMMAND W/ NO DATA RETURNED RET NZ ; ABORT ON ERROR +SD_INITCARD3AA: ; CHECK FOR IDLE, EXIT LOOP IF IDLE CLEARED LD A,(SD_RC) ; GET CARD RESULT CODE OR A ; SET FLAGS From 92374ab879d60f24cb6f69c5db53b470b18edfc2 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Sat, 9 Jan 2021 11:01:20 -0800 Subject: [PATCH 2/5] Bump Version --- Source/ver.inc | 2 +- Source/ver.lib | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/ver.inc b/Source/ver.inc index c328bb6f..d2b2aede 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.24" +#DEFINE BIOSVER "3.1.1-pre.25" diff --git a/Source/ver.lib b/Source/ver.lib index 09a3a0df..7d1a2b36 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.24" + db "3.1.1-pre.25" endm From 430bbd2ccfa7ebbf85c34832b040d5b2dc9aed6c Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Sat, 9 Jan 2021 17:13:49 -0800 Subject: [PATCH 3/5] Another SD Card Driver Tweak --- Source/HBIOS/sd.asm | 13 ++++--------- Source/ver.inc | 2 +- Source/ver.lib | 2 +- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/Source/HBIOS/sd.asm b/Source/HBIOS/sd.asm index 0ae34c9e..16ebed91 100644 --- a/Source/HBIOS/sd.asm +++ b/Source/HBIOS/sd.asm @@ -947,15 +947,10 @@ SD_INITCARD3: LD (SD_CMDP0),A ; SET COMMAND PARM 0 CALL SD_EXECCMDND ; EXEC COMMAND W/ NO DATA RETURNED ;RET NZ ; ABORT ON ERROR - JR Z,SD_INITCARD3AA ; IF GOOD SKIP AHEAD - ; SOME CARDS DON'T SUPPORT ACMD41, SO TRY CMD1 AS ALTERNATIVE - LD A,SD_CMD_SEND_OP_COND ; SD_CMD_SEND_OP_COND - CALL SD_INITCMD ; SETUP COMMAND BUFFER - LD A,$40 ; P0 = $40 INDICATES WE SUPPORT V2 CARDS - LD (SD_CMDP0),A ; SET COMMAND PARM 0 - CALL SD_EXECCMDND ; EXEC COMMAND W/ NO DATA RETURNED - RET NZ ; ABORT ON ERROR -SD_INITCARD3AA: + CP SD_STCMDERR ; COMMAND ERROR? + JR Z,SD_INITCARD3A ; IF SO, TRY MMC CARD INIT + OR A ; SET FLAGS + RET NZ ; ABORT IF ANY OTHER ERROR ; CHECK FOR IDLE, EXIT LOOP IF IDLE CLEARED LD A,(SD_RC) ; GET CARD RESULT CODE OR A ; SET FLAGS diff --git a/Source/ver.inc b/Source/ver.inc index d2b2aede..3df45cbb 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.25" +#DEFINE BIOSVER "3.1.1-pre.26" diff --git a/Source/ver.lib b/Source/ver.lib index 7d1a2b36..5cb9993b 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.25" + db "3.1.1-pre.26" endm From e4cdc3d1679daaffce46430425d26a2f76608598 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Sun, 10 Jan 2021 10:18:30 -0800 Subject: [PATCH 4/5] More SD Card Compatibility Changes Based on a logic analyzer trace from Andy Cooper, it appears that some SD cards want the unused CRC byte of the command packet to be 0xFF instead of the 0x00 filler I was using. Changed to put 0xFF in the CRC byte when unused. --- Source/HBIOS/sd.asm | 2 ++ Source/ver.inc | 2 +- Source/ver.lib | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Source/HBIOS/sd.asm b/Source/HBIOS/sd.asm index 16ebed91..b8df9f64 100644 --- a/Source/HBIOS/sd.asm +++ b/Source/HBIOS/sd.asm @@ -1320,6 +1320,8 @@ SD_INITCMD1: INC HL ; POINT TO NEXT BYTE LD (HL),A ; CLEAR IT DJNZ SD_INITCMD1 ; LOOP TILL DONE + DEC A ; $FF TO ACCUM + LD (SD_CMDCRC),A ; PUT $FF IN CRC POSITION RET ; ; EXECUTE APP COMMAND diff --git a/Source/ver.inc b/Source/ver.inc index 3df45cbb..29bea73d 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.26" +#DEFINE BIOSVER "3.1.1-pre.27" diff --git a/Source/ver.lib b/Source/ver.lib index 5cb9993b..b773165e 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.26" + db "3.1.1-pre.27" endm From 2987c4950ef4f40c454f70fdb16f1b9e79a84aa2 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Sun, 10 Jan 2021 11:21:39 -0800 Subject: [PATCH 5/5] Update md.asm Preserve AF across calls to BNKSEL in Flash Filesystem. --- Source/HBIOS/md.asm | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/Source/HBIOS/md.asm b/Source/HBIOS/md.asm index 53363889..2a899669 100644 --- a/Source/HBIOS/md.asm +++ b/Source/HBIOS/md.asm @@ -916,6 +916,9 @@ MD_FIDEN_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY ; RET ; MD_I_SZ .EQU $-MD_FIDEN_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED + .ECHO "MD_FIDEN_R occupies " + .ECHO MD_I_SZ + .ECHO " bytes.\n" ; ;====================================================================== ; ERASE FLASH SECTOR. @@ -979,6 +982,9 @@ MD_WT6: EX AF,AF' ; RETURN TO ORIGINAL BANK ; RET ; MD_S_SZ .EQU $-MD_FERAS_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED + .ECHO "MD_FERAS_R occupies " + .ECHO MD_S_SZ + .ECHO " bytes.\n" ; ;====================================================================== ; FLASH READ SECTOR. @@ -1003,14 +1009,16 @@ MD_FREAD_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY LD L,D ; ADDRESS ; EX AF,AF' ; PUT DESTINATION BANK IN AF' - LD A,B ; PUT SOURCE BANK IN AF ; MD_FRD1: + LD A,B ; PUT SOURCE BANK IN AF CALL HBX_BNKSEL ; READ ; SWITCH TO SOURCE BANK LD C,(HL) ; BYTE ; EX AF,AF' ; SELECT BANK ; SWITCH DESTINATION BANK + PUSH AF CALL HBX_BNKSEL ; TO WRITE + POP AF LD (IX+0),C ; WRITE BYTE EX AF,AF' ; ; PUT SOURCE BANK IN AF ; @@ -1024,6 +1032,9 @@ MD_FRD1: RET ; MD_R_SZ .EQU $-MD_FREAD_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED + .ECHO "MD_FREAD_R occupies " + .ECHO MD_R_SZ + .ECHO " bytes.\n" ; ;====================================================================== ; FLASH VERIFY SECTOR. @@ -1054,7 +1065,9 @@ MD_FVE1: LD A,(HL) ; READ BYTE ; EX AF,AF' ; SELECT BANK ; SWITCH TO RAM BANK + PUSH AF CALL HBX_BNKSEL ; TO VERIFY AGAINST + POP AF EX AF,AF' ; SUB (IX+0) ; COMPARE BYTE @@ -1074,6 +1087,9 @@ MD_FVE2: RET ; MD_V_SZ .EQU $-MD_FVERI_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED + .ECHO "MD_FVERI_R occupies " + .ECHO MD_V_SZ + .ECHO " bytes.\n" ; ;====================================================================== ; FLASH WRITE SECTOR. @@ -1097,7 +1113,9 @@ MD_FWRIT_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY LD L,D ; ADDRESS ; MD_FWRI1: + PUSH AF CALL HBX_BNKSEL ; SELECT BANK TO READ + POP AF EX AF,AF' ; SAVE CURRENT BANK ; LD C,(IX+0) ; READ IN BYTE @@ -1136,6 +1154,9 @@ MD_FW7: LD A,(HL) ; FROM THE SAME FLASH ADDRESS. ; RET ; MD_W_SZ .EQU $-MD_FWRIT_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED + .ECHO "MD_FWRIT_R occupies " + .ECHO MD_W_SZ + .ECHO " bytes.\n" ; ;====================================================================== ;