From dcc1bd8cb78a377260fa73a60084fa76dd236d59 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Tue, 16 Jul 2019 15:31:45 -0700 Subject: [PATCH] Improved SD Error Messaging Convert SD error to NO MEDIA when initial command fails. --- Doc/ChangeLog.txt | 1 + Source/HBIOS/sd.asm | 14 +++----------- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index d19c3301..73203f6b 100644 --- a/Doc/ChangeLog.txt +++ b/Doc/ChangeLog.txt @@ -3,6 +3,7 @@ Version 2.9.2 - PMS: Fixed DS1210-related issue resulting in "Invalid BIOS" errors - SCC: Support for SC126 motherboard - WBW: Enable Auto-CTS/DCD in SIO driver for pacing output data +- WBW: Support missing pull-up resistors in SD driver (a common occurence) Version 2.9.1 ------------- diff --git a/Source/HBIOS/sd.asm b/Source/HBIOS/sd.asm index 5f93cf38..f9fe2500 100644 --- a/Source/HBIOS/sd.asm +++ b/Source/HBIOS/sd.asm @@ -756,12 +756,6 @@ SD_GEOM: ; (RE)INITIALIZE CARD ; SD_INITCARD: -; - ;; CLEAR OUT UNIT SPECIFIC DATA - ;SD_DPTR(0) ; SET HL TO START OF UNIT DATA - ;LD BC,SD_UNITDATALEN - ;XOR A - ;CALL FILL ; CALL SD_CHKCD ; CHECK CARD DETECT JP Z,SD_NOMEDIA ; Z=NO MEDIA, HANDLE IF SO @@ -777,7 +771,7 @@ SD_INITCARD1: ; ; PUT CARD IN IDLE STATE CALL SD_GOIDLE ; GO TO IDLE - RET NZ ; ABORT IF FAILED + JP NZ,SD_NOMEDIA ; CONVERT ERROR TO NO MEDIA ; SD_INITCARD2: LD (IY+SD_TYPE),SD_TYPESDSC ; ASSUME SDSC CARD TYPE @@ -1155,13 +1149,11 @@ SD_GOIDLE1: LD A,$95 ; CRC FOR GO_IDLE_STATE COMMAND IS $95 LD (SD_CMDCRC),A ; SET CRC CALL SD_EXECCMDND ; EXECUTE COMMAND W/ NO DATA RETURNED - RET NZ ; ABORT ON ERROR LD A,(SD_RC) ; GET CARD RESULT DEC A ; MAP EXPECTED $01 -> $00 - RET Z ; ALL IS GOOD, RETURN WITH Z=0 AND Z SET - LD A,SD_STCMDERR ; SET COMMAND ERROR VALUE, NZ ALREADY SET - RET ; AND RETURN + RET Z ; ALL IS GOOD, RETURN WITH A=0 AND Z SET + JP SD_ERRCMD ; SET COMMAND ERROR VALUE ; ; INITIALIZE COMMAND BUFFER ; COMMAND BYTE IN ACCUM