|
|
@ -708,10 +708,26 @@ SD_IO: |
|
|
LD (SD_BLKCNT),A ; ... AND SAVE IT |
|
|
LD (SD_BLKCNT),A ; ... AND SAVE IT |
|
|
OR A ; SET FLAGS |
|
|
OR A ; SET FLAGS |
|
|
RET Z ; ZERO SECTOR I/O, RETURN W/ E=0 & A=0 |
|
|
RET Z ; ZERO SECTOR I/O, RETURN W/ E=0 & A=0 |
|
|
|
|
|
; |
|
|
|
|
|
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC)) |
|
|
|
|
|
; CONSIDER CAPTURING CURRENT CNTR VALUE HERE AND USE IT |
|
|
|
|
|
; IN SD_CSIO_DEF |
|
|
|
|
|
|
|
|
|
|
|
; SET CSIO FOR HIGH SPEED OPERATION |
|
|
|
|
|
CALL SD_WAITTX ; MAKE SURE WE ARE DONE SENDING |
|
|
|
|
|
CALL DLY32 ; WAIT A BIT MORE FOR FINAL BIT |
|
|
|
|
|
XOR A ; ZERO MEANS MAX SPEED |
|
|
|
|
|
OUT0 (SD_CNTR),A ; NOW SET CSIO PORT |
|
|
|
|
|
; HOOK RETURN TO RESTORE CSIO TO DEFAULT SPEED |
|
|
|
|
|
LD HL,SD_CSIO_DEF ; ROUTE RETURN |
|
|
|
|
|
PUSH HL ; ... THRU CSIO RESTORE |
|
|
|
|
|
#ENDIF |
|
|
|
|
|
; |
|
|
#IF (SDTRACE == 1) |
|
|
#IF (SDTRACE == 1) |
|
|
LD HL,SD_PRTERR ; SET UP SD_PRTERR |
|
|
LD HL,SD_PRTERR ; SET UP SD_PRTERR |
|
|
PUSH HL ; ... TO FILTER ALL EXITS |
|
|
PUSH HL ; ... TO FILTER ALL EXITS |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
|
|
|
; |
|
|
CALL SD_SELUNIT ; HARDWARE SELECTION OF TARGET UNIT |
|
|
CALL SD_SELUNIT ; HARDWARE SELECTION OF TARGET UNIT |
|
|
RET NZ ; ABORT ON ERROR |
|
|
RET NZ ; ABORT ON ERROR |
|
|
LD A,(SD_CMDVAL) ; GET COMMAND VALUE |
|
|
LD A,(SD_CMDVAL) ; GET COMMAND VALUE |
|
|
@ -871,6 +887,10 @@ SD_INITCARD: |
|
|
; |
|
|
; |
|
|
CALL SD_CHKCD ; CHECK CARD DETECT |
|
|
CALL SD_CHKCD ; CHECK CARD DETECT |
|
|
JP Z,SD_NOMEDIA ; Z=NO MEDIA, HANDLE IF SO |
|
|
JP Z,SD_NOMEDIA ; Z=NO MEDIA, HANDLE IF SO |
|
|
|
|
|
; |
|
|
|
|
|
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC)) |
|
|
|
|
|
CALL SD_CSIO_DEF ; ENSURE CSIO AT DEFAULT SPEED |
|
|
|
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
; WAKE UP THE CARD, KEEP DIN HI (ASSERTED) AND /CS HI (DEASSERTED) |
|
|
; WAKE UP THE CARD, KEEP DIN HI (ASSERTED) AND /CS HI (DEASSERTED) |
|
|
LD B,$10 ; MIN 74 CLOCKS REQUIRED, WE USE 128 ($10 * 8) |
|
|
LD B,$10 ; MIN 74 CLOCKS REQUIRED, WE USE 128 ($10 * 8) |
|
|
@ -916,9 +936,6 @@ SD_INITCARD3: |
|
|
CALL VDELAY ; CPU SPEED NORMALIZED DELAY |
|
|
CALL VDELAY ; CPU SPEED NORMALIZED DELAY |
|
|
; SEND APP CMD INTRODUCER |
|
|
; SEND APP CMD INTRODUCER |
|
|
CALL SD_EXECACMD ; SEND APP COMMAND INTRODUCER |
|
|
CALL SD_EXECACMD ; SEND APP COMMAND INTRODUCER |
|
|
;#IF (SDMODE == SDMODE_MT) |
|
|
|
|
|
; CALL NZ,SD_EXECACMD ; retry any fail |
|
|
|
|
|
;#ENDIF |
|
|
|
|
|
CP SD_STCMDERR ; COMMAND ERROR? |
|
|
CP SD_STCMDERR ; COMMAND ERROR? |
|
|
JR Z,SD_INITCARD3A ; IF SO, TRY MMC CARD INIT |
|
|
JR Z,SD_INITCARD3A ; IF SO, TRY MMC CARD INIT |
|
|
OR A ; SET FLAGS |
|
|
OR A ; SET FLAGS |
|
|
@ -1039,14 +1056,16 @@ SD_INITCARD5: |
|
|
CALL SD_EXECCMDND ; EXEC COMMAND W/ NO DATA |
|
|
CALL SD_EXECCMDND ; EXEC COMMAND W/ NO DATA |
|
|
RET NZ ; ABORT ON ERROR |
|
|
RET NZ ; ABORT ON ERROR |
|
|
|
|
|
|
|
|
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC)) |
|
|
|
|
|
; PER SPEC, THE CARD SHOULD NOW BE ABLE TO HANDLE FULL SPEED OPERATION |
|
|
|
|
|
; SO, FOR CSIO OPERATION, WE SET CSIO TO MAXIMUM SPEED |
|
|
|
|
|
CALL SD_WAITTX ; MAKE SURE WE ARE DONE SENDING |
|
|
|
|
|
CALL DLY32 ; WAIT A BIT MORE FOR FINAL BIT |
|
|
|
|
|
XOR A ; ZERO MEANS MAX SPEED |
|
|
|
|
|
OUT (Z180_CNTR),A ; NOW SET CSIO PORT |
|
|
|
|
|
#ENDIF |
|
|
|
|
|
|
|
|
; HIGH SPEED CSIO OPERATION IS NOW SET AT THE START OF SD_IO |
|
|
|
|
|
; |
|
|
|
|
|
;#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC)) |
|
|
|
|
|
; ; PER SPEC, THE CARD SHOULD NOW BE ABLE TO HANDLE FULL SPEED OPERATION |
|
|
|
|
|
; ; SO, FOR CSIO OPERATION, WE SET CSIO TO MAXIMUM SPEED |
|
|
|
|
|
; CALL SD_WAITTX ; MAKE SURE WE ARE DONE SENDING |
|
|
|
|
|
; CALL DLY32 ; WAIT A BIT MORE FOR FINAL BIT |
|
|
|
|
|
; XOR A ; ZERO MEANS MAX SPEED |
|
|
|
|
|
; OUT0 (SD_CNTR),A ; NOW SET CSIO PORT |
|
|
|
|
|
;#ENDIF |
|
|
; |
|
|
; |
|
|
; ISSUE SEND_CSD (TO DERIVE CARD CAPACITY) |
|
|
; ISSUE SEND_CSD (TO DERIVE CARD CAPACITY) |
|
|
LD A,SD_CMD_SEND_CSD ; SEND_CSD |
|
|
LD A,SD_CMD_SEND_CSD ; SEND_CSD |
|
|
@ -1808,11 +1827,11 @@ SD_GET: |
|
|
#ELSE |
|
|
#ELSE |
|
|
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC)) |
|
|
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC)) |
|
|
CALL SD_WAITTX ; MAKE SURE WE ARE DONE SENDING |
|
|
CALL SD_WAITTX ; MAKE SURE WE ARE DONE SENDING |
|
|
IN0 A,(Z180_CNTR) ; GET CSIO STATUS |
|
|
|
|
|
|
|
|
IN0 A,(SD_CNTR) ; GET CSIO STATUS |
|
|
SET 5,A ; START RECEIVER |
|
|
SET 5,A ; START RECEIVER |
|
|
OUT0 (Z180_CNTR),A |
|
|
|
|
|
|
|
|
OUT0 (SD_CNTR),A |
|
|
CALL SD_WAITRX |
|
|
CALL SD_WAITRX |
|
|
IN0 A,(Z180_TRDR) ; GET RECEIVED BYTE |
|
|
|
|
|
|
|
|
IN0 A,(SD_TRDR) ; GET RECEIVED BYTE |
|
|
CALL MIRROR ; MSB<-->LSB MIRROR BITS |
|
|
CALL MIRROR ; MSB<-->LSB MIRROR BITS |
|
|
LD A,C ; KEEP RESULT |
|
|
LD A,C ; KEEP RESULT |
|
|
#ELSE |
|
|
#ELSE |
|
|
@ -1849,6 +1868,23 @@ SD_GET1: |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
RET |
|
|
RET |
|
|
; |
|
|
; |
|
|
|
|
|
; SET CSIO TO DEFAULT SPEED |
|
|
|
|
|
; |
|
|
|
|
|
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC)) |
|
|
|
|
|
; |
|
|
|
|
|
SD_CSIO_DEF: |
|
|
|
|
|
; SET CSIO FOR DEFAULT OPERATION |
|
|
|
|
|
PUSH AF ; PRESERVE AF |
|
|
|
|
|
CALL SD_WAITTX ; MAKE SURE WE ARE DONE SENDING |
|
|
|
|
|
CALL DLY32 ; WAIT A BIT MORE FOR FINAL BIT |
|
|
|
|
|
LD A,Z180_CNTR_DEF ; DIV 1280, 14KHZ @ 18MHZ CLK |
|
|
|
|
|
OUT0 (SD_CNTR),A ; DO IT |
|
|
|
|
|
POP AF ; RESTORE AF |
|
|
|
|
|
RET |
|
|
|
|
|
; |
|
|
|
|
|
#ENDIF |
|
|
|
|
|
; |
|
|
|
|
|
; |
|
|
;============================================================================= |
|
|
;============================================================================= |
|
|
; ERROR HANDLING AND DIAGNOSTICS |
|
|
; ERROR HANDLING AND DIAGNOSTICS |
|
|
;============================================================================= |
|
|
;============================================================================= |
|
|
|