|
|
@ -27,30 +27,27 @@ |
|
|
; FOR STATUS AND THE SECOND IS FOR COMMAND & DATA EXCHANGE. |
|
|
; FOR STATUS AND THE SECOND IS FOR COMMAND & DATA EXCHANGE. |
|
|
; |
|
|
; |
|
|
; === STATUS REGISTER (READ) === |
|
|
; === STATUS REGISTER (READ) === |
|
|
; |
|
|
|
|
|
; 7 6 5 4 3 2 1 0 |
|
|
|
|
|
; +-------+-------+-------+-------+-------+-------+-------+-------+ |
|
|
|
|
|
; | XIN | ERR | DSW | CS1 | CS0 | CD1 | CD0 | XOUT | |
|
|
|
|
|
; +-------+-------+-------+-------+-------+-------+-------+-------+ |
|
|
|
|
|
; |
|
|
|
|
|
; XIN: DATA READ FROM ESP32 PENDING |
|
|
|
|
|
; ERR: ERROR ACTIVE |
|
|
|
|
|
; DSW: OLED DISPLAY ACTIVATION SWITCH |
|
|
|
|
|
; CS1: SD CARD 1 CHIP SELECT |
|
|
|
|
|
; CS0: SD CARD 0 CHIP SELECT |
|
|
|
|
|
; CD1: SD CARD 1 MEDIA PRESENT (CARD DETECT) |
|
|
|
|
|
; CD0: SD CARD 0 MEDIA PRESENT (CARD DETECT) |
|
|
|
|
|
; XOUT: DATA WRITE TO ESP32 PENDING |
|
|
|
|
|
; |
|
|
|
|
|
; === STATUS REGISTER (WRITE) === |
|
|
|
|
|
; |
|
|
|
|
|
; 7 6 5 4 3 2 1 0 |
|
|
|
|
|
; +-------+-------+-------+-------+-------+-------+-------+-------+ |
|
|
|
|
|
; | XIN | | | | | | | XOUT | |
|
|
|
|
|
; +-------+-------+-------+-------+-------+-------+-------+-------+ |
|
|
|
|
|
; |
|
|
|
|
|
; XIN: UNUSED??? |
|
|
|
|
|
; XOUT: ACTIVATE WRITE TO ESP32 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; BIT 2SD 2CF+1SD |
|
|
|
|
|
; ------ --------- --------- |
|
|
|
|
|
; BIT-0 SENDACT SENDACT |
|
|
|
|
|
; BIT-1 SD0_CD SD1_CD |
|
|
|
|
|
; BIT-2 SD1_CD RCV |
|
|
|
|
|
; BIT-3 SD0_CS GPIO3 |
|
|
|
|
|
; BIT-4 SD1_CS ERROR |
|
|
|
|
|
; BIT-5 DIAG SD1_CS |
|
|
|
|
|
; BIT-6 ERROR GPIO47 |
|
|
|
|
|
; BIT-7 RCVRDY RCVRDY |
|
|
|
|
|
; |
|
|
|
|
|
; SENDACT: DATA OUTPUT TO ESP32 PENDING, XMIT REGISTER FULL |
|
|
|
|
|
; RCVRDY: DATA FROM ESP32 READY TO READ |
|
|
|
|
|
; SD0_CD: SD0 CARD DETECT |
|
|
|
|
|
; SD1_CD: SD1 CARD DETECT |
|
|
|
|
|
; SD0_CS: SD0 CHIP SELECT |
|
|
|
|
|
; SD1_CS: SD1 CHIP SELECT |
|
|
|
|
|
; ERROR: ERROR INDICATOR |
|
|
|
|
|
; DIAG: DIAGNOSTIC SWITCH |
|
|
|
|
|
; GPIOX: GPIO BIT LEVEL |
|
|
; |
|
|
; |
|
|
; COMMAND/DATA EXCHANGES |
|
|
; COMMAND/DATA EXCHANGES |
|
|
; ---------------------- |
|
|
; ---------------------- |
|
|
@ -65,17 +62,18 @@ |
|
|
; ->CMD_FORMAT, <-STATUS |
|
|
; ->CMD_FORMAT, <-STATUS |
|
|
; ->CMD_RESET |
|
|
; ->CMD_RESET |
|
|
; |
|
|
; |
|
|
; NEW/PROPOSED: |
|
|
|
|
|
; |
|
|
|
|
|
; ->CMD_FWVER, <-[Version: Major (byte), Minor (byte)], <-STATUS |
|
|
|
|
|
|
|
|
; ADDED IN V1.4: |
|
|
|
|
|
; ->CMD_FWVER, <-[BoardID (byte), Ver-Major (byte), Ver-Minor (byte)], <-STATUS |
|
|
; ->CMD_SETLBA, ->[LBA value (4 bytes, MS first)], <-STATUS |
|
|
; ->CMD_SETLBA, ->[LBA value (4 bytes, MS first)], <-STATUS |
|
|
; ->CMD_TYPE, <-[SD Card Type (1 byte)], <-STATUS |
|
|
; ->CMD_TYPE, <-[SD Card Type (1 byte)], <-STATUS |
|
|
; ->CMD_CAP, <-[Sector Count (4 bytes, MS first)], <-STATUS |
|
|
; ->CMD_CAP, <-[Sector Count (4 bytes, MS first)], <-STATUS |
|
|
; ->CMD_CID, <-[CID Data (16 bytes), <-STATUS |
|
|
; ->CMD_CID, <-[CID Data (16 bytes), <-STATUS |
|
|
; ->CMD_CSD, <-[CSD Data (16 bytes), <-STATUS |
|
|
; ->CMD_CSD, <-[CSD Data (16 bytes), <-STATUS |
|
|
|
|
|
; ->CMD_DISP, ->[null terminated string], <-STATUS |
|
|
|
|
|
; ->CMD_ECHO, ->[null terminated string], <-[null terminated string], <-STATUS |
|
|
; |
|
|
; |
|
|
; IF AN ERROR OCCURS IN ANY COMMAND THAT RETURNS DATA BEFORE THE |
|
|
; IF AN ERROR OCCURS IN ANY COMMAND THAT RETURNS DATA BEFORE THE |
|
|
; STATUS BYTE, THEN DUMMY PADDING DATA MUST BE SENT BEFORE THE |
|
|
|
|
|
|
|
|
; STATUS BYTE, THEN DUMMY PADDING DATA IS SENT BEFORE THE |
|
|
; ERROR STATUS. |
|
|
; ERROR STATUS. |
|
|
; |
|
|
; |
|
|
ESPSD_IO_STATUS .EQU 0 ; OFFSET OF STATUS PORT FROM BASE I/O ADDRESS |
|
|
ESPSD_IO_STATUS .EQU 0 ; OFFSET OF STATUS PORT FROM BASE I/O ADDRESS |
|
|
@ -96,10 +94,17 @@ ESPSD_CMD_TYPE .EQU $92 ; REPORT CARD TYPE OF SELECTED SD CARD |
|
|
ESPSD_CMD_CAP .EQU $93 ; REPORT CAPACITY (SECTORS) OF SELECTED SD CARD |
|
|
ESPSD_CMD_CAP .EQU $93 ; REPORT CAPACITY (SECTORS) OF SELECTED SD CARD |
|
|
ESPSD_CMD_CID .EQU $94 ; REPORT CID DATA OF SELECTED SD CARD |
|
|
ESPSD_CMD_CID .EQU $94 ; REPORT CID DATA OF SELECTED SD CARD |
|
|
ESPSD_CMD_CSD .EQU $95 ; REPORT CSD DATA OF SELECTED SD CARD |
|
|
ESPSD_CMD_CSD .EQU $95 ; REPORT CSD DATA OF SELECTED SD CARD |
|
|
|
|
|
ESPSD_CMD_DISP .EQU $96 ; REPORT CSD DATA OF SELECTED SD CARD |
|
|
|
|
|
ESPSD_CMD_ECHO .EQU $97 ; REPORT CSD DATA OF SELECTED SD CARD |
|
|
; |
|
|
; |
|
|
ESPSD_STAT_OK .EQU $00 ; OPERATION COMPLETED OK |
|
|
ESPSD_STAT_OK .EQU $00 ; OPERATION COMPLETED OK |
|
|
ESPSD_STAT_ERR .EQU $1A ; OPERATION FAILED |
|
|
ESPSD_STAT_ERR .EQU $1A ; OPERATION FAILED |
|
|
; |
|
|
; |
|
|
|
|
|
; BOARD IDS |
|
|
|
|
|
; |
|
|
|
|
|
ESPSD_BOARD_2CF1SD .EQU 1 ; 2CF+1SD |
|
|
|
|
|
ESPSD_BOARD_2SD .EQU 2 ; 2SD |
|
|
|
|
|
; |
|
|
; ESPSD DEVICE STATUS CODES |
|
|
; ESPSD DEVICE STATUS CODES |
|
|
; |
|
|
; |
|
|
ESPSD_STOK .EQU 0 |
|
|
ESPSD_STOK .EQU 0 |
|
|
@ -235,6 +240,31 @@ ESPSD_INIT2B: |
|
|
JR ESPSD_INIT4 ; SKIP CFG ENTRY |
|
|
JR ESPSD_INIT4 ; SKIP CFG ENTRY |
|
|
; |
|
|
; |
|
|
ESPSD_INIT3: |
|
|
ESPSD_INIT3: |
|
|
|
|
|
CALL PC_SPACE ; FORMATTING |
|
|
|
|
|
CALL ESPSD_FWVER ; GET BOARD ID AND F/W VER |
|
|
|
|
|
JR NZ,ESPSD_INIT3D ; HANDLE ERROR (IGNORE IT) |
|
|
|
|
|
LD A,E ; BOARD ID |
|
|
|
|
|
CP ESPSD_BOARD_2CF1SD ; 2CF+1SD? |
|
|
|
|
|
JR NZ,ESPSD_INIT3A ; IF NOT, CHECK MORE |
|
|
|
|
|
LD DE,ESPSD_STR_2CF1SD ; LOAD STRING |
|
|
|
|
|
JR ESPSD_INIT3C ; SKIP TO PRINT |
|
|
|
|
|
ESPSD_INIT3A: |
|
|
|
|
|
CP ESPSD_BOARD_2SD ; 2SD? |
|
|
|
|
|
JR NZ,ESPSD_INIT3B ; NOPE |
|
|
|
|
|
LD DE,ESPSD_STR_2SD ; LOAD STRING |
|
|
|
|
|
JR ESPSD_INIT3C ; SKIP TO PRINT |
|
|
|
|
|
ESPSD_INIT3B: |
|
|
|
|
|
LD DE,ESPSD_STR_UNKNOWN ; UNKNOWN BOARD |
|
|
|
|
|
ESPSD_INIT3C: |
|
|
|
|
|
CALL WRITESTR ; PRINT BOARD NAME |
|
|
|
|
|
PRTS(" F/W V$") |
|
|
|
|
|
LD A,H ; GET MAJOR VER |
|
|
|
|
|
CALL PRTDEC8 ; PRINT IT |
|
|
|
|
|
CALL PC_PERIOD ; SEPARATOR |
|
|
|
|
|
LD A,L ; GET MINOR VER |
|
|
|
|
|
CALL PRTDEC8 ; PRINT IT |
|
|
|
|
|
; |
|
|
|
|
|
ESPSD_INIT3D: |
|
|
CALL ESPSD_INIT5 ; REGISTER & INIT DEVICE |
|
|
CALL ESPSD_INIT5 ; REGISTER & INIT DEVICE |
|
|
; |
|
|
; |
|
|
ESPSD_INIT4: |
|
|
ESPSD_INIT4: |
|
|
@ -432,9 +462,18 @@ ESPSD_GEOM: |
|
|
; ON RETURN, ZF SET INDICATES HARDWARE FOUND |
|
|
; ON RETURN, ZF SET INDICATES HARDWARE FOUND |
|
|
; |
|
|
; |
|
|
ESPSD_DETECT: |
|
|
ESPSD_DETECT: |
|
|
; WE USE A DUMMY SETLBA COMMAND TO TEST FOR PRESENCE |
|
|
|
|
|
LD HL,0 ; IRRELEVANT |
|
|
|
|
|
JP ESPSD_SETLBA ; PASS OFF TO SETLBA |
|
|
|
|
|
|
|
|
; WE USE A DUMMY SELECT COMMAND TO TEST FOR PRESENCE |
|
|
|
|
|
LD A,ESPSD_CMD_SEL0 |
|
|
|
|
|
ADD A,(IY+ESPSD_ROLE) |
|
|
|
|
|
LD E,A |
|
|
|
|
|
CALL ESPSD_CMD_SLOW |
|
|
|
|
|
RET NZ |
|
|
|
|
|
LD E,0 |
|
|
|
|
|
CALL ESPSD_PUTBYTE_SLOW |
|
|
|
|
|
RET NZ |
|
|
|
|
|
CALL ESPSD_PUTBYTE_SLOW |
|
|
|
|
|
RET NZ |
|
|
|
|
|
JP ESPSD_GETRESULT |
|
|
; |
|
|
; |
|
|
; INITIALIZE DEVICE |
|
|
; INITIALIZE DEVICE |
|
|
; |
|
|
; |
|
|
@ -453,10 +492,6 @@ ESPSD_INITDEV1: |
|
|
; |
|
|
; |
|
|
CALL ESPSD_INITCARD ; PERFORM DEVICE INIT |
|
|
CALL ESPSD_INITCARD ; PERFORM DEVICE INIT |
|
|
JP NZ,ESPSD_NOMEDIA ; CONVERT TO NO MEDIA ERROR |
|
|
JP NZ,ESPSD_NOMEDIA ; CONVERT TO NO MEDIA ERROR |
|
|
; |
|
|
|
|
|
; GET CAPACITY |
|
|
|
|
|
; NOT CURRENTLY AVAILABLE IN ESP32 API |
|
|
|
|
|
; CAPACITY IS HARD-CODED ABOVE AT API MAX OF $10000 BLOCKS |
|
|
|
|
|
; |
|
|
; |
|
|
; RESET STATUS |
|
|
; RESET STATUS |
|
|
LD A,ESPSD_STOK |
|
|
LD A,ESPSD_STOK |
|
|
@ -480,17 +515,13 @@ ESPSD_IO: |
|
|
; SELECT PRI/SEC DEVICE |
|
|
; SELECT PRI/SEC DEVICE |
|
|
CALL ESPSD_SELECT ; SELECT DEVICE |
|
|
CALL ESPSD_SELECT ; SELECT DEVICE |
|
|
JP NZ,ESPSD_ERR ; ON ERROR, RECORD AND BAIL OUT |
|
|
JP NZ,ESPSD_ERR ; ON ERROR, RECORD AND BAIL OUT |
|
|
;CALL LDELAY ; *DEBUG* |
|
|
|
|
|
; |
|
|
; |
|
|
; SET LBA |
|
|
; SET LBA |
|
|
LD A,ESPSD_LBA ; OFFSET OF LBA VALUE |
|
|
LD A,ESPSD_LBA ; OFFSET OF LBA VALUE |
|
|
CALL LDHLIYA ; HL := IY + A, REG A TRASHED |
|
|
CALL LDHLIYA ; HL := IY + A, REG A TRASHED |
|
|
CALL HB_DSKACT ; SHOW ACTIVITY |
|
|
CALL HB_DSKACT ; SHOW ACTIVITY |
|
|
CALL LD32 ; LOAD IT TO DE:HL, AF IS TRASHED |
|
|
|
|
|
CALL ESPSD_SETLBA ; SEND LBA TO DEVICE |
|
|
CALL ESPSD_SETLBA ; SEND LBA TO DEVICE |
|
|
;JP ESPSD_IOERR ; *DEBUG* |
|
|
|
|
|
JP NZ,ESPSD_ERR ; ON ERROR, RECORD AND BAIL OUT |
|
|
JP NZ,ESPSD_ERR ; ON ERROR, RECORD AND BAIL OUT |
|
|
;CALL LDELAY ; *DEBUG* |
|
|
|
|
|
; |
|
|
; |
|
|
; PERFORM BLOCK READ/WRITE |
|
|
; PERFORM BLOCK READ/WRITE |
|
|
LD HL,(ESPSD_DSKBUF) ; RECOVER THE DISK BUFFER ADR |
|
|
LD HL,(ESPSD_DSKBUF) ; RECOVER THE DISK BUFFER ADR |
|
|
@ -503,7 +534,6 @@ ESPSD_IO2: |
|
|
CALL ESPSD_BLKWRITE ; DO THE WRITE |
|
|
CALL ESPSD_BLKWRITE ; DO THE WRITE |
|
|
ESPSD_IO3: |
|
|
ESPSD_IO3: |
|
|
JP NZ,ESPSD_ERR ; ON ERROR, RECORD AND BAIL OUT |
|
|
JP NZ,ESPSD_ERR ; ON ERROR, RECORD AND BAIL OUT |
|
|
;CALL LDELAY ; *DEBUG* |
|
|
|
|
|
; |
|
|
; |
|
|
; INCREMENT LBA |
|
|
; INCREMENT LBA |
|
|
LD A,ESPSD_LBA ; LBA OFFSET |
|
|
LD A,ESPSD_LBA ; LBA OFFSET |
|
|
@ -529,7 +559,57 @@ ESPSD_IO3: |
|
|
ESPSD_INITCARD: |
|
|
ESPSD_INITCARD: |
|
|
LD A,ESPSD_CMD_INIT0 ; INIT PRIMARY DEVICE |
|
|
LD A,ESPSD_CMD_INIT0 ; INIT PRIMARY DEVICE |
|
|
ADD A,(IY+ESPSD_ROLE) ; ADJUST FOR PRI/SEC |
|
|
ADD A,(IY+ESPSD_ROLE) ; ADJUST FOR PRI/SEC |
|
|
JR ESPSD_RUNCMD ; USE COMMON CMD ROUTINE |
|
|
|
|
|
|
|
|
CALL ESPSD_RUNCMD ; USE COMMON CMD ROUTINE |
|
|
|
|
|
RET NZ ; HANDLE ERROR |
|
|
|
|
|
; |
|
|
|
|
|
; GET CAPACITY |
|
|
|
|
|
LD E,ESPSD_CMD_CAP ; GET CAPACITY COMMAND |
|
|
|
|
|
CALL ESPSD_CMD_SLOW ; SEND IT |
|
|
|
|
|
RET NZ ; HANDLE ERROR |
|
|
|
|
|
; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LD A,ESPSD_MEDCAP ; OFFSET TO CAPACITY FIELD |
|
|
|
|
|
CALL LDHLIYA ; HL := IY + A, REG A TRASHED |
|
|
|
|
|
LD A,4 ; START AT END FOR LITTLE ENDIAN |
|
|
|
|
|
CALL ADDHLA ; BUMP PTR TO END OF DWORD |
|
|
|
|
|
LD B,4 ; LOOP FOR 4 BYTES |
|
|
|
|
|
; |
|
|
|
|
|
ESPSD_INITCARD1: |
|
|
|
|
|
DEC HL ; DEC POINTER |
|
|
|
|
|
PUSH BC ; SAVE LOOP CONTROL |
|
|
|
|
|
CALL ESPSD_GETBYTE_SLOW ; FIRST BYTE (MSB) |
|
|
|
|
|
POP BC ; RESTORE LOOP CONTROL |
|
|
|
|
|
RET NZ ; HANDLE ERROR |
|
|
|
|
|
LD (HL),E ; SAVE IT |
|
|
|
|
|
DJNZ ESPSD_INITCARD1 ; LOOP AS NEEDED |
|
|
|
|
|
; |
|
|
|
|
|
JR ESPSD_GETRESULT ; EXIT VIA CMD RESULT HANDLER |
|
|
|
|
|
; |
|
|
|
|
|
; GET BOARD ID AND FIRMWARE VERSION |
|
|
|
|
|
; |
|
|
|
|
|
ESPSD_FWVER: |
|
|
|
|
|
LD E,ESPSD_CMD_FWVER ; FWVER COMMAND |
|
|
|
|
|
CALL ESPSD_CMD_SLOW ; SEND IT |
|
|
|
|
|
RET NZ ; HANDLE ERROR |
|
|
|
|
|
CALL ESPSD_GETBYTE_SLOW ; GET BOARD ID |
|
|
|
|
|
RET NZ ; HANDLE ERROR |
|
|
|
|
|
LD D,E ; SAVE IN D |
|
|
|
|
|
CALL ESPSD_GETBYTE_SLOW ; GET VER MAJOR |
|
|
|
|
|
RET NZ ; HANDLE ERROR |
|
|
|
|
|
LD H,E ; PUT IN H |
|
|
|
|
|
CALL ESPSD_GETBYTE_SLOW ; GET VER MINOR |
|
|
|
|
|
RET NZ ; HANDLE ERROR |
|
|
|
|
|
LD L,E ; PUT IN H |
|
|
|
|
|
CALL ESPSD_GETBYTE_SLOW ; GET RESULT |
|
|
|
|
|
RET NZ ; HANDLE ERROR |
|
|
|
|
|
LD A,E ; RESULT TO ACCUM |
|
|
|
|
|
LD E,D ; BOARD ID BACK TO E |
|
|
|
|
|
OR A ; SET FLAGS |
|
|
|
|
|
RET Z ; RETURN SUCCESS |
|
|
|
|
|
LD A,ESPSD_STIOERR ; CALL THIS AN I/O ERR |
|
|
|
|
|
OR A ; SET FLAGS |
|
|
|
|
|
RET ; DONE |
|
|
; |
|
|
; |
|
|
; (RE)SELECT DEVICE |
|
|
; (RE)SELECT DEVICE |
|
|
; |
|
|
; |
|
|
@ -544,6 +624,7 @@ ESPSD_RUNCMD: |
|
|
LD E,A ; PUT IN E |
|
|
LD E,A ; PUT IN E |
|
|
CALL ESPSD_CMD_SLOW ; SEND COMMAND |
|
|
CALL ESPSD_CMD_SLOW ; SEND COMMAND |
|
|
RET NZ ; HANDLE ERROR |
|
|
RET NZ ; HANDLE ERROR |
|
|
|
|
|
ESPSD_GETRESULT: |
|
|
CALL ESPSD_GETBYTE_SLOW ; GET RESULT |
|
|
CALL ESPSD_GETBYTE_SLOW ; GET RESULT |
|
|
RET NZ ; HANDLE ERROR |
|
|
RET NZ ; HANDLE ERROR |
|
|
LD A,E ; RESULT TO ACCUM |
|
|
LD A,E ; RESULT TO ACCUM |
|
|
@ -558,17 +639,24 @@ ESPSD_RUNCMD: |
|
|
; A 16-BIT LBA. |
|
|
; A 16-BIT LBA. |
|
|
; |
|
|
; |
|
|
ESPSD_SETLBA: |
|
|
ESPSD_SETLBA: |
|
|
LD E,ESPSD_CMD_SETTRKSEC |
|
|
|
|
|
CALL ESPSD_CMD_SLOW |
|
|
|
|
|
RET NZ |
|
|
|
|
|
LD E,H |
|
|
|
|
|
CALL ESPSD_PUTBYTE_SLOW |
|
|
|
|
|
RET NZ |
|
|
|
|
|
LD E,L |
|
|
|
|
|
CALL ESPSD_PUTBYTE_SLOW |
|
|
|
|
|
RET NZ |
|
|
|
|
|
CALL ESPSD_GETBYTE_SLOW |
|
|
|
|
|
RET NZ |
|
|
|
|
|
|
|
|
LD E,ESPSD_CMD_SETLBA ; SETLBA COMMAND |
|
|
|
|
|
CALL ESPSD_CMD_SLOW ; SEND IT |
|
|
|
|
|
RET NZ ; HANDLE ERROR |
|
|
|
|
|
LD A,4 ; LITTLE ENDIAN |
|
|
|
|
|
CALL ADDHLA ; BUMP TO END OF LBA BYTES |
|
|
|
|
|
LD B,4 ; LOOP TO SEND 4 BYTES |
|
|
|
|
|
; |
|
|
|
|
|
ESPSD_SETLBA1: |
|
|
|
|
|
DEC HL ; DEC POINTER |
|
|
|
|
|
LD E,(HL) ; GET NEXT BYTE TO SEND |
|
|
|
|
|
PUSH BC ; SAVE LOOP CONTROL |
|
|
|
|
|
CALL ESPSD_PUTBYTE_SLOW ; SEND BYTE |
|
|
|
|
|
POP BC ; RESTORE LOOP CONTROL |
|
|
|
|
|
RET NZ ; HANDLE ERROR |
|
|
|
|
|
DJNZ ESPSD_SETLBA1 ; LOOP AS NEEDED |
|
|
|
|
|
; |
|
|
|
|
|
CALL ESPSD_GETBYTE_SLOW ; GET RESULT |
|
|
|
|
|
RET NZ ; HANDLE ERROR |
|
|
LD A,E ; RESULT TO ACCUM |
|
|
LD A,E ; RESULT TO ACCUM |
|
|
OR A ; SET FLAGS |
|
|
OR A ; SET FLAGS |
|
|
RET Z ; GOOD RETURN |
|
|
RET Z ; GOOD RETURN |
|
|
@ -602,7 +690,6 @@ ESPSD_BLKREAD1: |
|
|
CALL ESPSD_GETBYTE_SLOW ; GET RESULT |
|
|
CALL ESPSD_GETBYTE_SLOW ; GET RESULT |
|
|
RET NZ ; HANDLE ERROR |
|
|
RET NZ ; HANDLE ERROR |
|
|
LD A,E ; RESULT TO ACCUM |
|
|
LD A,E ; RESULT TO ACCUM |
|
|
;;;CALL PRTHEXBYTE ; *DEBUG* |
|
|
|
|
|
OR A ; SET FLAGS |
|
|
OR A ; SET FLAGS |
|
|
RET Z ; GOOD RETURN |
|
|
RET Z ; GOOD RETURN |
|
|
LD A,ESPSD_STIOERR ; CALL THIS AN IO ERROR |
|
|
LD A,ESPSD_STIOERR ; CALL THIS AN IO ERROR |
|
|
@ -678,7 +765,6 @@ ESPSD_PUTBYTE1: |
|
|
IN A,(C) |
|
|
IN A,(C) |
|
|
BIT 0,A |
|
|
BIT 0,A |
|
|
JR Z,ESPSD_PUTBYTE2 |
|
|
JR Z,ESPSD_PUTBYTE2 |
|
|
;JR ESPSD_PUTBYTE1 ; *DEBUG* |
|
|
|
|
|
DJNZ ESPSD_PUTBYTE1 |
|
|
DJNZ ESPSD_PUTBYTE1 |
|
|
LD A,ESPSD_STTO |
|
|
LD A,ESPSD_STTO |
|
|
OR A |
|
|
OR A |
|
|
@ -699,10 +785,7 @@ ESPSD_PUTBYTE2: |
|
|
; |
|
|
; |
|
|
ESPSD_PUTBYTE_SLOW: |
|
|
ESPSD_PUTBYTE_SLOW: |
|
|
PUSH HL |
|
|
PUSH HL |
|
|
;;;LD HL,50 * CPUMHZ ; CPU SPEED SCALED TIMEOUT |
|
|
|
|
|
LD HL,100 * CPUMHZ ; CPU SPEED SCALED TIMEOUT |
|
|
LD HL,100 * CPUMHZ ; CPU SPEED SCALED TIMEOUT |
|
|
;;;LD HL,1000 * CPUMHZ ; CPU SPEED SCALED TIMEOUT |
|
|
|
|
|
;;;LD HL,0 ; *DEBUG* |
|
|
|
|
|
ESPSD_PUTBYTE_SLOW1: |
|
|
ESPSD_PUTBYTE_SLOW1: |
|
|
PUSH HL |
|
|
PUSH HL |
|
|
CALL ESPSD_PUTBYTE |
|
|
CALL ESPSD_PUTBYTE |
|
|
@ -753,10 +836,7 @@ ESPSD_GETBYTE2: |
|
|
; |
|
|
; |
|
|
ESPSD_GETBYTE_SLOW: |
|
|
ESPSD_GETBYTE_SLOW: |
|
|
PUSH HL |
|
|
PUSH HL |
|
|
;;;LD HL,50 * CPUMHZ ; CPU SPEED SCALED TIMEOUT |
|
|
|
|
|
LD HL,100 * CPUMHZ ; CPU SPEED SCALED TIMEOUT |
|
|
LD HL,100 * CPUMHZ ; CPU SPEED SCALED TIMEOUT |
|
|
;;;LD HL,1000 * CPUMHZ ; CPU SPEED SCALED TIMEOUT |
|
|
|
|
|
;;;LD HL,0 ; *DEBUG* |
|
|
|
|
|
ESPSD_GETBYTE_SLOW1: |
|
|
ESPSD_GETBYTE_SLOW1: |
|
|
PUSH HL |
|
|
PUSH HL |
|
|
CALL ESPSD_GETBYTE |
|
|
CALL ESPSD_GETBYTE |
|
|
@ -885,6 +965,10 @@ ESPSD_STR_STTO .TEXT "TIMEOUT$" |
|
|
ESPSD_STR_STNOTRDY .TEXT "NOT READY$" |
|
|
ESPSD_STR_STNOTRDY .TEXT "NOT READY$" |
|
|
ESPSD_STR_STUNK .TEXT "UNKNOWN ERROR$" |
|
|
ESPSD_STR_STUNK .TEXT "UNKNOWN ERROR$" |
|
|
; |
|
|
; |
|
|
|
|
|
ESPSD_STR_2CF1SD .TEXT "2CF+1SD$" |
|
|
|
|
|
ESPSD_STR_2SD .TEXT "2SD$" |
|
|
|
|
|
ESPSD_STR_UNKNOWN .TEXT "BOARD?$" |
|
|
|
|
|
; |
|
|
;============================================================================= |
|
|
;============================================================================= |
|
|
; DATA STORAGE |
|
|
; DATA STORAGE |
|
|
;============================================================================= |
|
|
;============================================================================= |
|
|
|