Browse Source

Update sd.asm

Significantly improve compatibility of SD Cards w/ Z180 -K CPU.
pull/119/head
Wayne Warthen 6 years ago
parent
commit
a457e797ee
  1. 19
      Source/HBIOS/sd.asm

19
Source/HBIOS/sd.asm

@ -1335,7 +1335,19 @@ SD_EXECCMD1:
; THE FIRST FILL BYTE IS DISCARDED! THIS HACK IS REQUIRED BY
; STUPID SD CARD ADAPTERS THAT NOW OMIT THE MISO PULL-UP. SEE
; COMMENTS AT TOP OF THIS FILE.
CALL SD_GET ; GET A BYTE AND DISCARD IT
;
;CALL SD_GET ; GET A BYTE AND DISCARD IT
;
; THE Z180 -K REVISION CSIO DOES NOT KEEP MOSI HIGH WHEN
; RECEIVING VIA MISO. INSTEAD MOSI IS LEFT AT WHICHEVER LOGIC
; LEVEL IT WAS LAST SET TO. THIS CAUSES SOME SD CARDS A PROBLEM
; BECAUSE THEY EXPECT MOSI TO BE CONSISTENTLY HIGH WHEN IDLE.
; BY USING A PUT INSTEAD OF A GET, WE CAN FORCE MOSI TO BE
; LEFT AT THE PROPER LOGIC LEVEL. THE SD CARD DOES NOT CARE
; IF A PUT OR A GET IS USED TO IGNORE THE BYTE BECAUSE THE
; CLOCK RUNS IN EITHER CASE.
LD A,$FF ; KEEP MOSI HI
CALL SD_PUT ; SEND 8 CLOCKS
#ENDIF
;
; GET RESULT
@ -1661,6 +1673,11 @@ SD_SELECT2:
#ENDIF
LD (SD_OPRVAL),A
OUT (SD_OPRREG),A
;;
;#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC))
; CALL DLY32 ; DELAY FOR FINAL BIT
;#ENDIF
;
RET
;
; DESELECT CARD

Loading…
Cancel
Save