|
|
|
@ -173,7 +173,7 @@ SD_DO .EQU %00100000 ; UART MSR:5 IS DATA OUT (CARD -> CPU) |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
#IF (SDMODE == SDMODE_DSD) ; DUAL SD |
|
|
|
SD_DEVCNT .EQU 2 ; NUMBER OF PHYSICAL UNITS (SOCKETS) |
|
|
|
SD_DEVCNT .EQU SDCNT ; NUMBER OF PHYSICAL UNITS (SOCKETS) |
|
|
|
SD_OPRREG .EQU $08 ; DEDICATED OPERATIONS REGISTER |
|
|
|
SD_OPRDEF .EQU %00000001 ; QUIESCENT STATE |
|
|
|
SD_INPREG .EQU SD_OPRREG ; INPUT REGISTER IS OPRREG |
|
|
|
@ -195,10 +195,11 @@ SD_TRDR .EQU Z180_TRDR |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
#IF (SDMODE == SDMODE_SC) ; SC |
|
|
|
SD_DEVCNT .EQU 1 ; NUMBER OF PHYSICAL UNITS (SOCKETS) |
|
|
|
SD_DEVCNT .EQU SDCNT ; NUMBER OF PHYSICAL UNITS (SOCKETS) |
|
|
|
SD_OPRREG .EQU RTCIO ; USES RTC LATCHES FOR OPERATION |
|
|
|
SD_OPRDEF .EQU %00001100 ; QUIESCENT STATE (/CS1 & /CS2 DEASSERTED) |
|
|
|
SD_CS .EQU %00000100 ; RTC:2 IS SELECT FOR PRIMARY SPI CARD |
|
|
|
SD_CS0 .EQU %00000100 ; RTC:2 IS SELECT FOR PRIMARY SPI CARD |
|
|
|
SD_CS1 .EQU %00001000 ; RTC:3 IS SELECT FOR SECONDARY SPI CARD |
|
|
|
SD_CNTR .EQU Z180_CNTR |
|
|
|
SD_TRDR .EQU Z180_TRDR |
|
|
|
#ENDIF |
|
|
|
@ -1464,7 +1465,23 @@ SD_CHKWP: |
|
|
|
SD_SELECT: |
|
|
|
LD A,(SD_OPRVAL) |
|
|
|
#IF ((SDMODE == SDMODE_PPI) | (SDMODE == SDMODE_UART) | (SDMODE == SDMODE_SC)) |
|
|
|
#IF (SDMODE == SDMODE_SC) |
|
|
|
LD A,(IY+SD_DEV) ; GET CURRENT DEVICE |
|
|
|
OR A ; SET FLAGS |
|
|
|
LD A,(SD_OPRVAL) ; GET CURRENT OPRVAL BACK |
|
|
|
JR NZ,SD_SELECT1 ; IF NOT ZERO, DO SECONDARY |
|
|
|
; ASSERT PRIMARY CS, DEASSERT SECONDARY |
|
|
|
AND ~SD_CS0 |
|
|
|
OR SD_CS1 |
|
|
|
JR SD_SELECT2 |
|
|
|
SD_SELECT1: |
|
|
|
; DEASSERT PRIMARY CS, ASSERT SECONDARY |
|
|
|
OR SD_CS0 |
|
|
|
AND ~SD_CS1 |
|
|
|
SD_SELECT2: |
|
|
|
#ELSE |
|
|
|
AND ~SD_CS ; SET SD_CS (CHIP SELECT) |
|
|
|
#ENDIF |
|
|
|
#ELSE |
|
|
|
OR SD_CS ; SET SD_CS (CHIP SELECT) |
|
|
|
#ENDIF |
|
|
|
@ -1477,7 +1494,12 @@ SD_SELECT: |
|
|
|
SD_DESELECT: |
|
|
|
LD A,(SD_OPRVAL) |
|
|
|
#IF ((SDMODE == SDMODE_PPI) | (SDMODE == SDMODE_UART) | (SDMODE == SDMODE_SC)) |
|
|
|
#IF (SDMODE == SDMODE_SC) |
|
|
|
OR SD_CS0 ; RESET PRIMARY CHIP SELECT |
|
|
|
OR SD_CS1 ; RESET SECONDARY CHIP SELECT |
|
|
|
#ELSE |
|
|
|
OR SD_CS ; RESET SD_CS (CHIP SELECT) |
|
|
|
#ENDIF |
|
|
|
#ELSE |
|
|
|
AND ~SD_CS ; RESET SD_CS (CHIP SELECT) |
|
|
|
#ENDIF |
|
|
|
|