SD Card Compatibility Improvement
- Modified SD driver to keep SD card clock consistently fast after card init. This only seemed to effect a Lexar 32GB uSD Card on CSIO interface. Thanks and credit to Richard Deane for reporting this. - Improved hard disk layout documentation.
This commit is contained in:
Binary file not shown.
@@ -1,144 +0,0 @@
|
||||
SIMH (X)
|
||||
----
|
||||
- Test UART driver
|
||||
- Test HDSK driver
|
||||
|
||||
Zeta 1 (X)
|
||||
------
|
||||
- Test UART driver
|
||||
- Test PPP detection (startup w/ and w/o PPP)
|
||||
- Test boot to CRT
|
||||
- Test PPPSD driver
|
||||
- Test PPPCON driver (video & kbd)
|
||||
- Test FD driver
|
||||
- Test FDU app
|
||||
|
||||
Zeta 2 (X)
|
||||
------
|
||||
- Test UART driver
|
||||
- Test PPP detection (startup w/ and w/o PPP)
|
||||
- Test boot to CRT
|
||||
- Test PPPSD driver
|
||||
- Test PPPCON driver (video & kbd)
|
||||
- Test FD driver
|
||||
- Test FDU app
|
||||
|
||||
RCBus (X)
|
||||
------
|
||||
- Test SIO driver (Serial Module)
|
||||
- Test ACIA driver (Dual Serial Module)
|
||||
- Test IDE driver (Compact Flash Module)
|
||||
- Test PPIDE driver (IDE Module)
|
||||
- Test FD driver (SMC and WDC)
|
||||
- Test FDU app (SMC and WDC)
|
||||
|
||||
N8-2312 (X)
|
||||
-------
|
||||
- Test ASCI driver
|
||||
- Test SD driver (CSIO mode)
|
||||
- Test FD driver
|
||||
- Test FDU app
|
||||
- Test TMS driver (video & kbd)
|
||||
|
||||
N8-2511 (X)
|
||||
-------
|
||||
- Test ASCI driver
|
||||
- Test SD driver (Juha mode)
|
||||
- Test FD driver
|
||||
- Test FDU app
|
||||
- Test TMS driver (video & kbd)
|
||||
|
||||
SBC (X)
|
||||
---
|
||||
- Test UART driver
|
||||
- Test PPIDE driver
|
||||
- Test PPISD driver
|
||||
- Test PRP detection
|
||||
- Test boot to CRT console
|
||||
|
||||
MK4 (X)
|
||||
---
|
||||
- Test ASCI driver
|
||||
- Test IDE driver
|
||||
- Test SD driver
|
||||
- Test PRP detection
|
||||
|
||||
RAMF (X)
|
||||
----
|
||||
- Test RAMF driver
|
||||
|
||||
PRP (X)
|
||||
---
|
||||
- Test PRPSD driver
|
||||
- Test PRPCON driver (video & kbd)
|
||||
|
||||
SCG (X)
|
||||
---
|
||||
- Test TMS driver (video)
|
||||
|
||||
VDU (X)
|
||||
---
|
||||
- Test CVDU driver (video & kbd)
|
||||
|
||||
CVDU (X)
|
||||
----
|
||||
- Test CVDU driver (video & kbd)
|
||||
|
||||
VGA (X)
|
||||
---
|
||||
- Test VGA driver (video & kbd)
|
||||
|
||||
DIO (X)
|
||||
---
|
||||
- Test FD driver
|
||||
- Test FDU app
|
||||
- Test IDE driver
|
||||
|
||||
DIO3 (X)
|
||||
----
|
||||
- Test FD driver
|
||||
- Test FDU app
|
||||
- Test PPIDE driver
|
||||
|
||||
DIDE (X)
|
||||
----
|
||||
- Test FD driver
|
||||
- Test FDU app
|
||||
- Test IDE driver
|
||||
|
||||
DSD (X)
|
||||
---
|
||||
- Test SD driver
|
||||
|
||||
4UART (X)
|
||||
-----
|
||||
- Test UART driver
|
||||
|
||||
|
||||
UNA (X)
|
||||
---
|
||||
- General Startup
|
||||
- Boot from disk functionality
|
||||
- Image loading
|
||||
- Monitor
|
||||
- XM app
|
||||
- ASSIGN app
|
||||
- MODE app
|
||||
- SYSCOPY app
|
||||
- OSLDR app
|
||||
- FDU app
|
||||
- FDISK80 app
|
||||
|
||||
GENERAL (X)
|
||||
-------
|
||||
- Boot to ROM
|
||||
- Boot to Disk
|
||||
- Boot to Monitor
|
||||
- XM app
|
||||
- XM port auto-detect
|
||||
- ASSIGN app
|
||||
- MODE app
|
||||
- SYSCOPY app
|
||||
- FDU app
|
||||
- FDISK80 app
|
||||
- TUNE app
|
||||
Binary file not shown.
Binary file not shown.
@@ -446,6 +446,7 @@ SD_CMD_READ_SNGL_BLK .EQU $40 + 17 ; $51, CMD17 -> R1
|
||||
SD_CMD_WRITE_BLOCK .EQU $40 + 24 ; $58, CMD24 -> R1
|
||||
SD_CMD_APP_CMD .EQU $40 + 55 ; $77, CMD55 -> R1
|
||||
SD_CMD_READ_OCR .EQU $40 + 58 ; $7A, CMD58 -> R3
|
||||
SD_CMD_CRC_ON_OFF .EQU $40 + 59 ; $7B, CMD59 -> R1
|
||||
;
|
||||
; SD CARD APPLICATION COMMANDS (PRECEDED BY APP_CMD COMMAND)
|
||||
;
|
||||
@@ -941,19 +942,12 @@ SD_IO:
|
||||
OR A ; SET FLAGS
|
||||
RET Z ; ZERO SECTOR I/O, RETURN W/ E=0 & A=0
|
||||
;
|
||||
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX))
|
||||
; 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
|
||||
CALL SD_SPD_FAST
|
||||
;
|
||||
; HOOK RETURN TO RESTORE CSIO TO DEFAULT SPEED
|
||||
LD HL,SD_CSIO_DEF ; ROUTE RETURN
|
||||
LD HL,SD_SPD_STD ; ROUTE RETURN
|
||||
PUSH HL ; ... THRU CSIO RESTORE
|
||||
#ENDIF
|
||||
;
|
||||
#IF (SDTRACE == 1)
|
||||
LD HL,SD_PRTERR ; SET UP SD_PRTERR
|
||||
@@ -1045,6 +1039,9 @@ SD_MEDIA:
|
||||
JR NZ,SD_MEDIA1 ; ERROR ACTIVE, GO RIGHT TO RESET
|
||||
;
|
||||
; USE SEND_CSD TO CHECK CARD
|
||||
;;;LD A,'C' ;;;
|
||||
;;;CALL COUT ;;;
|
||||
CALL SD_SPD_FAST ; GO FAST FOR COMPATIBILITY
|
||||
CALL SD_SELUNIT ; SET CUR UNIT
|
||||
LD A,SD_CMD_SEND_CSD ; SEND_CSD
|
||||
CALL SD_INITCMD ; SETUP COMMAND BUFFER
|
||||
@@ -1057,9 +1054,14 @@ SD_MEDIA:
|
||||
JR Z,SD_MEDIA2 ; IF SUCCESS, BYPASS RESET
|
||||
;
|
||||
SD_MEDIA1:
|
||||
;;;LD A,'R' ;;;
|
||||
;;;CALL COUT ;;;
|
||||
CALL SD_RESET ; RESET CARD
|
||||
;
|
||||
SD_MEDIA2:
|
||||
;;;LD A,'D' ;;;
|
||||
;;;CALL COUT ;;;
|
||||
CALL SD_SPD_STD ; BACK TO STD SPEED
|
||||
LD A,(IY+SD_STAT) ; GET STATUS
|
||||
OR A ; SET FLAGS
|
||||
LD D,0 ; NO MEDIA CHANGE DETECTED
|
||||
@@ -1072,7 +1074,6 @@ SD_MEDIA2:
|
||||
;
|
||||
;
|
||||
;
|
||||
;
|
||||
SD_SEEK:
|
||||
BIT 7,D ; CHECK FOR LBA FLAG
|
||||
CALL Z,HB_CHS2LBA ; CLEAR MEANS CHS, CONVERT TO LBA
|
||||
@@ -1120,14 +1121,7 @@ SD_INITCARD:
|
||||
CALL SD_CHKCD ; CHECK CARD DETECT
|
||||
JP Z,SD_NOMEDIA ; Z=NO MEDIA, HANDLE IF SO
|
||||
;
|
||||
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX))
|
||||
CALL SD_CSIO_DEF ; ENSURE CSIO AT DEFAULT SPEED
|
||||
#ENDIF
|
||||
;
|
||||
#IF (SDMODE == SDMODE_FZ80)
|
||||
;;; FORCE SLOW SPEED HERE?
|
||||
;;; CALL SD_SELECT?
|
||||
#ENDIF
|
||||
CALL SD_SPD_SLOW ; SET SLOW SPEED FOR INIT
|
||||
;
|
||||
; WAKE UP THE CARD, KEEP DIN HI (ASSERTED) AND /CS HI (DEASSERTED)
|
||||
LD B,$10 ; MIN 74 CLOCKS REQUIRED, WE USE 128 ($10 * 8)
|
||||
@@ -1138,8 +1132,8 @@ SD_INITCARD1:
|
||||
POP BC ; RESTORE LOOP CONTROL
|
||||
DJNZ SD_INITCARD1 ; LOOP AS NEEDED
|
||||
;
|
||||
; MAKE SURE WE FINISH SENDING
|
||||
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX))
|
||||
; MAKE SURE CSIO IS DONE SENDING DATA
|
||||
CALL SD_WAITTX ; WAIT FOR TE TO CLEAR
|
||||
CALL DLY32 ; WAIT A BIT MORE FOR FINAL BIT
|
||||
#ENDIF
|
||||
@@ -1234,9 +1228,25 @@ SD_INITCARD4:
|
||||
CALL SD_INITCMD ; SETUP COMMAND BUFFER
|
||||
CALL SD_EXECCMD ; EXECUTE COMMAND
|
||||
RET NZ ; ABORT ON ERROR
|
||||
; CMD58 WORKED, GET OCR DATA AND SET CARD TYPE
|
||||
CALL SD_GET ; BITS 31-24
|
||||
CALL SD_DONE ; FINISH THE TRANSACTION
|
||||
; CMD58 WORKED, GET OCR DATA
|
||||
LD B,4 ; 4 BYTES OF OCR
|
||||
LD HL,SD_BUF ; PUT IN OUR PRIVATE BUFFER
|
||||
SD_INITCARD4B:
|
||||
CALL SD_GET ; GET NEXT BYTE
|
||||
LD (HL),A ; SAVE IT
|
||||
INC HL ; BUMP BUF PTR
|
||||
DJNZ SD_INITCARD4B ; LOOP AS NEEDED
|
||||
;
|
||||
#IF (SDTRACE >= 3)
|
||||
; IF TRACING, DUMP THE OCR CONTENTS
|
||||
CALL SD_PRTPREFIX
|
||||
LD DE,SD_STR_OCR
|
||||
CALL WRITESTR
|
||||
LD DE,SD_BUF
|
||||
LD A,4
|
||||
CALL PRTHEXBUF
|
||||
#ENDIF
|
||||
LD A,(SD_BUF) ; FIRST BYTE OF BUF (BITS 31-24 OF OCR)
|
||||
AND $40 ; ISOLATE BIT 30 (CCS)
|
||||
LD C,SD_TYPESDSC ; ASSUME V1 CARD
|
||||
JR Z,SD_INITCARD5 ; IF BIT NOT SET, THIS IS SDSC CARD
|
||||
@@ -1746,8 +1756,11 @@ SD_GETDATA3:
|
||||
LD A,D
|
||||
OR E
|
||||
JR NZ,SD_GETDATA3 ; LOOP FOR ALL BYTES
|
||||
;;;CALL PC_SPACE
|
||||
CALL SD_GET ; DISCARD CRC BYTE 1
|
||||
;;;CALL PRTHEXBYTE
|
||||
CALL SD_GET ; DISCARD CRC BYTE 2
|
||||
;;;CALL PRTHEXBYTE
|
||||
#ENDIF
|
||||
XOR A ; RESULT IS ZERO
|
||||
SD_GETDATA4:
|
||||
@@ -1858,6 +1871,11 @@ SD_DONE:
|
||||
PUSH AF
|
||||
LD A,$FF
|
||||
CALL SD_PUT
|
||||
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX))
|
||||
; MAKE SURE CSIO IS DONE SENDING DATA
|
||||
CALL SD_WAITTX ; WAIT FOR TE TO CLEAR
|
||||
CALL DLY32 ; WAIT A BIT MORE FOR FINAL BIT
|
||||
#ENDIF
|
||||
CALL SD_DESELECT
|
||||
POP AF
|
||||
RET
|
||||
@@ -2306,11 +2324,11 @@ SD_GET1:
|
||||
#ENDIF
|
||||
RET
|
||||
;
|
||||
; SET CSIO TO DEFAULT SPEED
|
||||
; SET STANDARD SPEED (RESTORE SPI INTERFACE TO DEFAULTS)
|
||||
;
|
||||
SD_SPD_STD:
|
||||
;
|
||||
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX))
|
||||
;
|
||||
SD_CSIO_DEF:
|
||||
; SET CSIO FOR DEFAULT OPERATION
|
||||
PUSH AF ; PRESERVE AF
|
||||
CALL SD_WAITTX ; MAKE SURE WE ARE DONE SENDING
|
||||
@@ -2318,9 +2336,38 @@ SD_CSIO_DEF:
|
||||
LD A,Z180_CNTR_DEF ; DIV 1280, 14KHZ @ 18MHZ CLK
|
||||
OUT0 (SD_CNTR),A ; DO IT
|
||||
POP AF ; RESTORE AF
|
||||
#ENDIF
|
||||
RET
|
||||
;
|
||||
; SET SLOW SPEED
|
||||
;
|
||||
SD_SPD_SLOW:
|
||||
;
|
||||
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX))
|
||||
; 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
|
||||
#ENDIF
|
||||
RET
|
||||
;
|
||||
; SET FAST SPEED
|
||||
;
|
||||
SD_SPD_FAST:
|
||||
;
|
||||
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX))
|
||||
; SET CSIO FOR HIGH SPEED OPERATION
|
||||
PUSH AF ; PRESERVE AF
|
||||
CALL SD_WAITTX ; MAKE SURE WE ARE DONE SENDING
|
||||
CALL DLY32 ; WAIT A BIT MORE FOR FINAL BIT
|
||||
XOR A ; 0 IS HIGHEST CLOCK SPEED
|
||||
OUT0 (SD_CNTR),A ; DO IT
|
||||
POP AF ; RESTORE AF
|
||||
#ENDIF
|
||||
RET
|
||||
;
|
||||
;
|
||||
;=============================================================================
|
||||
@@ -2510,6 +2557,7 @@ SD_STR_TOK .TEXT " TOK=$"
|
||||
SD_STR_CSD .TEXT " CSD =$"
|
||||
SD_STR_CID .TEXT " CID =$"
|
||||
SD_STR_SCR .TEXT " SCR =$"
|
||||
SD_STR_OCR .TEXT " OCR =$"
|
||||
SD_STR_SDTYPE .TEXT " SD CARD TYPE ID=$"
|
||||
;
|
||||
SD_STR_STOK .TEXT "OK$"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#DEFINE RMN 5
|
||||
#DEFINE RUP 0
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "3.5.0-dev.65"
|
||||
#DEFINE BIOSVER "3.5.0-dev.66"
|
||||
#define rmj RMJ
|
||||
#define rmn RMN
|
||||
#define rup RUP
|
||||
|
||||
@@ -3,5 +3,5 @@ rmn equ 5
|
||||
rup equ 0
|
||||
rtp equ 0
|
||||
biosver macro
|
||||
db "3.5.0-dev.65"
|
||||
db "3.5.0-dev.66"
|
||||
endm
|
||||
|
||||
Reference in New Issue
Block a user