|
|
|
@ -434,11 +434,23 @@ SD_INITUNIT2: |
|
|
|
SD_PROBE: |
|
|
|
; |
|
|
|
#IF (SDMODE == SDMODE_DSD) |
|
|
|
LD A,$03 ; SET BIT 0 & 1 |
|
|
|
OUT (SD_SELREG),A ; WRITE TO SELECT REG |
|
|
|
IN A,(SD_SELREG) ; READ BACK, BIT 1 IS ALWAYS 0 |
|
|
|
CP $01 ; ... SO SHOULD READ BACK AS $01 |
|
|
|
RET |
|
|
|
; ON DSD, SELREG, BIT 0 IS READ BACK AS WRITTEN, BIT 1 |
|
|
|
; IS ALWAYS READ AS ZERO. TO TEST FOR EXISTENCE, WE |
|
|
|
; WRITE 00 AND MAKE SURE IT READS BACK AS 00, THEN WE |
|
|
|
; WRITE 11 AND MAKE SURE IT READS BACK AS 01. |
|
|
|
LD C,SD_SELREG ; USE C TO ADDRESS PORT |
|
|
|
XOR A ; A := 0 |
|
|
|
OUT (C),A ; SELREG := 0 |
|
|
|
IN A,(C) ; READ SELREG BACK |
|
|
|
AND $03 ; ISOLATE 2 LOWEST BITS |
|
|
|
CP $00 ; BOTH BITS SHOULD BE 0 |
|
|
|
RET NZ ; FAIL IF NOT |
|
|
|
LD A,$03 ; SET 2 LOWEST BITS |
|
|
|
OUT (C),A ; DO IT |
|
|
|
IN A,(C) ; READ SELREG BACK |
|
|
|
AND $03 ; ISOLATE 2 LOWEST BITS |
|
|
|
CP $01 ; SHOULD READ BACK AS $01 |
|
|
|
RET ; RETURN W/ ZF SET AS NEEDED |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
XOR A ; SIGNAL SUCCESS |
|
|
|
@ -1728,7 +1740,7 @@ SD_DPTRIMP: |
|
|
|
; MSB<-->LSB MIRROR BITS IN A, RESULT IN C |
|
|
|
; |
|
|
|
MIRROR: |
|
|
|
#IF (SDCSIOFAST) ; SLOW SPEED, LEAST CODE SPACE |
|
|
|
#IF (((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4)) & SDCSIOFAST) |
|
|
|
LD BC,MIRTAB ; 256 BYTE MIRROR TABLE |
|
|
|
ADD A,C ; ADD OFFSET |
|
|
|
LD C,A |
|
|
|
|