|
|
|
@ -288,8 +288,9 @@ ESPSD_INIT5: |
|
|
|
CALL ESPSD_INITDEV ; INITIALIZE DEVICE |
|
|
|
#IF (ESPSDTRACE < 2) |
|
|
|
JP NZ,ESPSD_PRTSTAT |
|
|
|
#ENDIF |
|
|
|
#ELSE |
|
|
|
RET NZ |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
CALL ESPSD_PRTPREFIX ; TAG FOR ACTIVE DEVICE |
|
|
|
; |
|
|
|
@ -345,7 +346,7 @@ ESPSD_READ: |
|
|
|
;;;LD A,'R' |
|
|
|
;;;CALL COUT |
|
|
|
;;;CALL PRTHEXWORDHL |
|
|
|
LD A,ESPSD_CMD_READ ; SETUP FOR BLOCK READ CMD |
|
|
|
LD E,ESPSD_CMD_READ ; SETUP FOR BLOCK READ CMD |
|
|
|
JP ESPSD_IO ; CONTINUE TO GENERIC IO ROUTINE |
|
|
|
; |
|
|
|
; |
|
|
|
@ -356,7 +357,7 @@ ESPSD_WRITE: |
|
|
|
;;;LD A,'W' |
|
|
|
;;;CALL COUT |
|
|
|
;;;CALL PRTHEXWORDHL |
|
|
|
LD A,ESPSD_CMD_WRITE ; SETUP FOR BLOCK WRITE CMD |
|
|
|
LD E,ESPSD_CMD_WRITE ; SETUP FOR BLOCK WRITE CMD |
|
|
|
JP ESPSD_IO ; CONTINUE TO GENERIC IO ROUTINE |
|
|
|
; |
|
|
|
; |
|
|
|
@ -501,15 +502,23 @@ ESPSD_INITDEV1: |
|
|
|
; COMMON SECTOR I/O |
|
|
|
; |
|
|
|
ESPSD_IO: |
|
|
|
LD (ESPSD_CMDVAL),A ; SAVE THE COMMAND |
|
|
|
LD (ESPSD_DSKBUF),HL ; SAVE DISK BUFFER ADDRESS |
|
|
|
; |
|
|
|
; CHECK FOR ERROR STATUS AND REINIT? |
|
|
|
; |
|
|
|
#IF (ESPSDTRACE == 1) |
|
|
|
LD HL,ESPSD_PRTERR ; SET UP SD_PRTERR |
|
|
|
PUSH HL ; ... TO FILTER ALL EXITS |
|
|
|
PUSH HL |
|
|
|
LD HL,ESPSD_PRTERR ; SET UP ESPSD_PRTERR |
|
|
|
EX (SP),HL ; ... TO FILTER ALL EXITS |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
PUSH DE |
|
|
|
PUSH HL |
|
|
|
CALL ESPSD_CHKERR ; CHECK FOR ERR STATUS AND RESET IF SO |
|
|
|
POP HL |
|
|
|
POP DE |
|
|
|
RET NZ ; BAIL OUT ON ERROR |
|
|
|
; |
|
|
|
LD A,E ; COMMAND TO ACCUM |
|
|
|
LD (ESPSD_CMDVAL),A ; SAVE THE COMMAND |
|
|
|
LD (ESPSD_DSKBUF),HL ; SAVE DISK BUFFER ADDRESS |
|
|
|
; |
|
|
|
; SELECT PRI/SEC DEVICE |
|
|
|
CALL ESPSD_SELECT ; SELECT DEVICE |
|
|
|
@ -532,7 +541,7 @@ ESPSD_IO: |
|
|
|
ESPSD_IO2: |
|
|
|
CALL ESPSD_BLKWRITE ; DO THE WRITE |
|
|
|
ESPSD_IO3: |
|
|
|
JP NZ,ESPSD_ERR ; ON ERROR, RECORD AND BAIL OUT |
|
|
|
JR NZ,ESPSD_IO4 ; IF ERROR, SKIP INCREMENT |
|
|
|
; |
|
|
|
; INCREMENT LBA |
|
|
|
LD A,ESPSD_LBA ; LBA OFFSET |
|
|
|
@ -544,11 +553,24 @@ ESPSD_IO3: |
|
|
|
INC (HL) ; BUMP DMA BY |
|
|
|
INC (HL) ; ... 512 BYTES |
|
|
|
; |
|
|
|
; CLEAN UP |
|
|
|
LD HL,(ESPSD_DSKBUF) ; CURRENT DMA TO HL |
|
|
|
XOR A ; SIGNAL SUCCESS |
|
|
|
ESPSD_IO4: |
|
|
|
LD HL,(ESPSD_DSKBUF) ; CURRENT DMA TO HL |
|
|
|
OR A ; SET FLAGS |
|
|
|
RET Z ; DONE IF NO ERROR |
|
|
|
LD A,ERR_IO ; SIGNAL IO ERROR |
|
|
|
OR A ; SET FLAGS |
|
|
|
RET ; AND DONE |
|
|
|
; |
|
|
|
; CHECK CURRENT DEVICE FOR ERROR STATUS AND ATTEMPT TO RECOVER |
|
|
|
; VIA RESET IF DEVICE IS IN ERROR. |
|
|
|
; |
|
|
|
ESPSD_CHKERR: |
|
|
|
LD A,(IY+ESPSD_STAT) ; GET STATUS |
|
|
|
OR A ; SET FLAGS |
|
|
|
CALL NZ,ESPSD_RESET ; IF ERROR STATUS, RESET BUS |
|
|
|
RET |
|
|
|
; |
|
|
|
;============================================================================= |
|
|
|
; COMMAND PROCESSING |
|
|
|
;============================================================================= |
|
|
|
@ -568,11 +590,9 @@ ESPSD_INITCARD: |
|
|
|
; |
|
|
|
; GET CAPACITY |
|
|
|
LD E,ESPSD_CMD_CAP ; GET CAPACITY COMMAND |
|
|
|
CALL ESPSD_CMD_SLOW ; SEND IT |
|
|
|
CALL ESPSD_CMD ; 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 |
|
|
|
@ -582,7 +602,7 @@ ESPSD_INITCARD: |
|
|
|
ESPSD_INITCARD1: |
|
|
|
DEC HL ; DEC POINTER |
|
|
|
PUSH BC ; SAVE LOOP CONTROL |
|
|
|
CALL ESPSD_GETBYTE_SLOW ; FIRST BYTE (MSB) |
|
|
|
CALL ESPSD_GETBYTE ; FIRST BYTE (MSB) |
|
|
|
POP BC ; RESTORE LOOP CONTROL |
|
|
|
RET NZ ; HANDLE ERROR |
|
|
|
LD (HL),E ; SAVE IT |
|
|
|
@ -594,18 +614,18 @@ ESPSD_INITCARD1: |
|
|
|
; |
|
|
|
ESPSD_FWVER: |
|
|
|
LD E,ESPSD_CMD_FWVER ; FWVER COMMAND |
|
|
|
CALL ESPSD_CMD_SLOW ; SEND IT |
|
|
|
CALL ESPSD_CMD ; SEND IT |
|
|
|
RET NZ ; HANDLE ERROR |
|
|
|
CALL ESPSD_GETBYTE_SLOW ; GET BOARD ID |
|
|
|
CALL ESPSD_GETBYTE ; GET BOARD ID |
|
|
|
RET NZ ; HANDLE ERROR |
|
|
|
LD D,E ; SAVE IN D |
|
|
|
CALL ESPSD_GETBYTE_SLOW ; GET VER MAJOR |
|
|
|
CALL ESPSD_GETBYTE ; GET VER MAJOR |
|
|
|
RET NZ ; HANDLE ERROR |
|
|
|
LD H,E ; PUT IN H |
|
|
|
CALL ESPSD_GETBYTE_SLOW ; GET VER MINOR |
|
|
|
CALL ESPSD_GETBYTE ; GET VER MINOR |
|
|
|
RET NZ ; HANDLE ERROR |
|
|
|
LD L,E ; PUT IN H |
|
|
|
CALL ESPSD_GETBYTE_SLOW ; GET RESULT |
|
|
|
CALL ESPSD_GETBYTE ; GET RESULT |
|
|
|
RET NZ ; HANDLE ERROR |
|
|
|
LD A,E ; RESULT TO ACCUM |
|
|
|
LD E,D ; BOARD ID BACK TO E |
|
|
|
@ -626,10 +646,10 @@ ESPSD_SELECT: |
|
|
|
; |
|
|
|
ESPSD_RUNCMD: |
|
|
|
LD E,A ; PUT IN E |
|
|
|
CALL ESPSD_CMD_SLOW ; SEND COMMAND |
|
|
|
CALL ESPSD_CMD ; SEND COMMAND |
|
|
|
RET NZ ; HANDLE ERROR |
|
|
|
ESPSD_GETRESULT: |
|
|
|
CALL ESPSD_GETBYTE_SLOW ; GET RESULT |
|
|
|
CALL ESPSD_GETBYTE ; GET RESULT |
|
|
|
RET NZ ; HANDLE ERROR |
|
|
|
LD A,E ; RESULT TO ACCUM |
|
|
|
OR A ; SET FLAGS |
|
|
|
@ -644,7 +664,7 @@ ESPSD_GETRESULT: |
|
|
|
; |
|
|
|
ESPSD_SETLBA: |
|
|
|
LD E,ESPSD_CMD_SETLBA ; SETLBA COMMAND |
|
|
|
CALL ESPSD_CMD_SLOW ; SEND IT |
|
|
|
CALL ESPSD_CMD ; SEND IT |
|
|
|
RET NZ ; HANDLE ERROR |
|
|
|
LD A,4 ; LITTLE ENDIAN |
|
|
|
CALL ADDHLA ; BUMP TO END OF LBA BYTES |
|
|
|
@ -654,12 +674,12 @@ 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 |
|
|
|
CALL ESPSD_PUTBYTE ; SEND BYTE |
|
|
|
POP BC ; RESTORE LOOP CONTROL |
|
|
|
RET NZ ; HANDLE ERROR |
|
|
|
DJNZ ESPSD_SETLBA1 ; LOOP AS NEEDED |
|
|
|
; |
|
|
|
CALL ESPSD_GETBYTE_SLOW ; GET RESULT |
|
|
|
CALL ESPSD_GETBYTE ; GET RESULT |
|
|
|
RET NZ ; HANDLE ERROR |
|
|
|
LD A,E ; RESULT TO ACCUM |
|
|
|
OR A ; SET FLAGS |
|
|
|
@ -672,7 +692,7 @@ ESPSD_SETLBA1: |
|
|
|
; |
|
|
|
ESPSD_BLKREAD: |
|
|
|
LD E,ESPSD_CMD_READ |
|
|
|
CALL ESPSD_CMD_SLOW |
|
|
|
CALL ESPSD_CMD |
|
|
|
RET NZ |
|
|
|
; |
|
|
|
LD B,0 ; LOOP COUNTER |
|
|
|
@ -680,13 +700,13 @@ ESPSD_BLKREAD: |
|
|
|
#IF FALSE |
|
|
|
ESPSD_BLKREAD1: |
|
|
|
PUSH BC |
|
|
|
CALL ESPSD_GETBYTE_SLOW |
|
|
|
CALL ESPSD_GETBYTE |
|
|
|
POP BC |
|
|
|
RET NZ |
|
|
|
LD (HL),E |
|
|
|
INC HL |
|
|
|
PUSH BC |
|
|
|
CALL ESPSD_GETBYTE_SLOW |
|
|
|
CALL ESPSD_GETBYTE |
|
|
|
POP BC |
|
|
|
RET NZ |
|
|
|
LD (HL),E |
|
|
|
@ -699,14 +719,13 @@ ESPSD_BLKREAD1: |
|
|
|
CALL ESPSD_BLKREAD2 ; DO SECOND 256 BYTES |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
CALL ESPSD_GETBYTE_SLOW ; GET RESULT |
|
|
|
CALL ESPSD_GETBYTE ; GET RESULT |
|
|
|
RET NZ ; HANDLE ERROR |
|
|
|
LD A,E ; RESULT TO ACCUM |
|
|
|
OR A ; SET FLAGS |
|
|
|
RET Z ; GOOD RETURN |
|
|
|
LD A,ESPSD_STIOERR ; CALL THIS AN IO ERROR |
|
|
|
OR A ; SET FLAGS |
|
|
|
RET ; DONE |
|
|
|
JP NZ,ESPSD_IOERR ; HANDLE AS IO ERROR |
|
|
|
XOR A ; SIGNAL SUCCESS |
|
|
|
RET ; AND DONE |
|
|
|
; |
|
|
|
ESPSD_BLKREAD2: |
|
|
|
; READ BYTES FAST (NO TIMEOUT CHECK) |
|
|
|
@ -726,7 +745,7 @@ ESPSD_BLKREAD2A: |
|
|
|
; |
|
|
|
ESPSD_BLKWRITE: |
|
|
|
LD E,ESPSD_CMD_WRITE |
|
|
|
CALL ESPSD_CMD_SLOW |
|
|
|
CALL ESPSD_CMD |
|
|
|
RET NZ |
|
|
|
; |
|
|
|
LD B,0 ; LOOP COUNTER |
|
|
|
@ -736,13 +755,13 @@ ESPSD_BLKWRITE1: |
|
|
|
LD E,(HL) |
|
|
|
INC HL |
|
|
|
PUSH BC |
|
|
|
CALL ESPSD_PUTBYTE_SLOW |
|
|
|
CALL ESPSD_PUTBYTE |
|
|
|
POP BC |
|
|
|
RET NZ |
|
|
|
LD E,(HL) |
|
|
|
INC HL |
|
|
|
PUSH BC |
|
|
|
CALL ESPSD_PUTBYTE_SLOW |
|
|
|
CALL ESPSD_PUTBYTE |
|
|
|
POP BC |
|
|
|
RET NZ |
|
|
|
DJNZ ESPSD_BLKWRITE1 |
|
|
|
@ -753,14 +772,13 @@ ESPSD_BLKWRITE1: |
|
|
|
CALL ESPSD_BLKWRITE2 ; DO SECOND 256 BYTES |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
CALL ESPSD_GETBYTE_SLOW ; GET RESULT |
|
|
|
CALL ESPSD_GETBYTE ; GET RESULT |
|
|
|
RET NZ ; HANDLE ERROR |
|
|
|
LD A,E ; RESULT TO ACCUM |
|
|
|
OR A ; SET FLAGS |
|
|
|
RET Z ; GOOD RETURN |
|
|
|
LD A,ESPSD_STIOERR ; CALL THIS AN IO ERROR |
|
|
|
OR A ; SET FLAGS |
|
|
|
RET ; DONE |
|
|
|
JP NZ,ESPSD_IOERR ; HANDLE AS IO ERROR |
|
|
|
XOR A ; SIGNAL SUCCESS |
|
|
|
RET ; AND DONE |
|
|
|
; |
|
|
|
ESPSD_BLKWRITE2: |
|
|
|
; WRITE BYTES FAST (NO TIMEOUT CHECK) |
|
|
|
@ -791,126 +809,103 @@ ESPSD_CMD: |
|
|
|
RET NZ |
|
|
|
JR ESPSD_PUTBYTE |
|
|
|
; |
|
|
|
; SEND COMMAND BYTE IN E TO ESP32 |
|
|
|
; |
|
|
|
ESPSD_CMD_SLOW: |
|
|
|
PUSH DE |
|
|
|
LD E,$33 ; COMMAND PREFIX BYTE |
|
|
|
CALL ESPSD_PUTBYTE_SLOW |
|
|
|
POP DE |
|
|
|
RET NZ |
|
|
|
JR ESPSD_PUTBYTE_SLOW |
|
|
|
; |
|
|
|
; WRITE BYTE IN E TO ESP32 |
|
|
|
; RETURN STATUS IN A (0=SUCCESS) |
|
|
|
; BC IS DESTROYED |
|
|
|
; |
|
|
|
ESPSD_PUTBYTE: |
|
|
|
#IF (ESPSDTRACE >= 3) |
|
|
|
CALL PC_GT |
|
|
|
#ENDIF |
|
|
|
LD B,0 |
|
|
|
|
|
|
|
PUSH HL ; PRESERVE HL |
|
|
|
LD C,(IY+ESPSD_IOBASE) |
|
|
|
ESPSD_PUTBYTE1: |
|
|
|
LD HL,100 * CPUMHZ ; SETUP OUTER LOOP COUNTER |
|
|
|
; |
|
|
|
ESPSD_PUTBYTE1: ; OUTER LOOP |
|
|
|
LD B,0 ; SETUP INNER LOOP COUNTER |
|
|
|
; |
|
|
|
ESPSD_PUTBYTE2: ; INNER LOOP |
|
|
|
#IF (PLATFORM == PLT_SZ180) |
|
|
|
IN A,(C) ; EXTRA READ FOR Z180 STABILITY |
|
|
|
#ENDIF |
|
|
|
IN A,(C) |
|
|
|
BIT 0,A |
|
|
|
JR Z,ESPSD_PUTBYTE2 |
|
|
|
DJNZ ESPSD_PUTBYTE1 |
|
|
|
LD A,ESPSD_STTO |
|
|
|
OR A |
|
|
|
RET |
|
|
|
ESPSD_PUTBYTE2: |
|
|
|
; NOPS NEEDED FOR RELIABILITY |
|
|
|
IN A,(C) ; READ STATUS |
|
|
|
BIT 0,A ; ISOLATE SENDACT (TXF) |
|
|
|
JR Z,ESPSD_PUTBYTE3 ; IF NOT ACTIVE, GO TO SEND BYTE |
|
|
|
DJNZ ESPSD_PUTBYTE2 ; LOOP SOME MORE |
|
|
|
; |
|
|
|
DEC HL ; DEC OUTER LOOP COUNTER |
|
|
|
LD A,H ; TEST COUNTER |
|
|
|
OR L ; ... FOR ZERO |
|
|
|
JR NZ,ESPSD_PUTBYTE1 ; IF NOT ZERO, LOOP MORE |
|
|
|
; |
|
|
|
; HANDLE TIMEOUT |
|
|
|
POP HL ; RECOVER HL |
|
|
|
JP ESPSD_TO ; RETURN VIA ERROR HANDLER |
|
|
|
; |
|
|
|
ESPSD_PUTBYTE3: |
|
|
|
POP HL ; RECOVER HL |
|
|
|
; SEND THE DATA BYTE |
|
|
|
; NOPS NEEDED FOR RELIABILITY??? |
|
|
|
;NOP \ NOP \ NOP \ NOP \ NOP \ NOP |
|
|
|
INC C |
|
|
|
OUT (C),E |
|
|
|
INC C ; BUMP TO DATA PORT |
|
|
|
OUT (C),E ; SEND IT |
|
|
|
; |
|
|
|
#IF (ESPSDTRACE >= 3) |
|
|
|
LD A,E |
|
|
|
CALL PRTHEXBYTE |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
XOR A |
|
|
|
RET |
|
|
|
; |
|
|
|
; WRITE BYTE TO ESP32 FROM E WITH EXTRA LONG TIMEOUT |
|
|
|
; |
|
|
|
ESPSD_PUTBYTE_SLOW: |
|
|
|
PUSH HL |
|
|
|
LD HL,100 * CPUMHZ ; CPU SPEED SCALED TIMEOUT |
|
|
|
ESPSD_PUTBYTE_SLOW1: |
|
|
|
PUSH HL |
|
|
|
CALL ESPSD_PUTBYTE |
|
|
|
POP HL |
|
|
|
JR Z,ESPSD_PUTBYTE_SLOW_Z |
|
|
|
DEC HL |
|
|
|
LD A,H |
|
|
|
OR L |
|
|
|
JR NZ,ESPSD_PUTBYTE_SLOW1 |
|
|
|
LD A,ESPSD_STTO |
|
|
|
ESPSD_PUTBYTE_SLOW_Z: |
|
|
|
;CALL PC_SPACE ; *DEBUG* |
|
|
|
;CALL PRTHEXWORDHL ; *DEBUG* |
|
|
|
POP HL |
|
|
|
OR A ; SET FLAGS |
|
|
|
RET |
|
|
|
XOR A ; SIGNAL SUCCESS |
|
|
|
RET ; DONE |
|
|
|
; |
|
|
|
; READ BYTE FROM ESP32 INTO E |
|
|
|
; RETURN STATUS IN A (0=SUCCESS) |
|
|
|
; BC IS DESTROYED |
|
|
|
; |
|
|
|
ESPSD_GETBYTE: |
|
|
|
#IF (ESPSDTRACE >= 3) |
|
|
|
CALL PC_LT |
|
|
|
#ENDIF |
|
|
|
LD B,0 |
|
|
|
|
|
|
|
PUSH HL ; PRESERVE HL |
|
|
|
LD C,(IY+ESPSD_IOBASE) |
|
|
|
ESPSD_GETBYTE1: |
|
|
|
LD HL,100 * CPUMHZ ; SETUP OUTER LOOP COUNTER |
|
|
|
; |
|
|
|
ESPSD_GETBYTE1: ; OUTER LOOP |
|
|
|
LD B,0 ; SETUP INNER LOOP COUNTER |
|
|
|
; |
|
|
|
ESPSD_GETBYTE2: ; INNER LOOP |
|
|
|
#IF (PLATFORM == PLT_SZ180) |
|
|
|
IN A,(C) ; EXTRA READ FOR Z180 STABILITY |
|
|
|
#ENDIF |
|
|
|
IN A,(C) |
|
|
|
JP M,ESPSD_GETBYTE2 |
|
|
|
DJNZ ESPSD_GETBYTE1 |
|
|
|
LD A,ESPSD_STTO |
|
|
|
OR A |
|
|
|
RET |
|
|
|
ESPSD_GETBYTE2: |
|
|
|
; NOPS NEEDED FOR RELIABILITY |
|
|
|
IN A,(C) ; READ STATUS |
|
|
|
JP M,ESPSD_GETBYTE3 ; IF RCV READY, GO TO GET BYTE |
|
|
|
DJNZ ESPSD_GETBYTE2 ; LOOP SOME MORE |
|
|
|
; |
|
|
|
DEC HL ; DEC OUTER LOOP COUNTER |
|
|
|
LD A,H ; TEST COUNTER |
|
|
|
OR L ; ... FOR ZERO |
|
|
|
JR NZ,ESPSD_GETBYTE1 ; IF NOT ZERO, LOOP MORE |
|
|
|
; |
|
|
|
; HANDLE TIMEOUT |
|
|
|
POP HL ; RECOVER HL |
|
|
|
JP ESPSD_TO ; RETURN VIA ERROR HANDLER |
|
|
|
; |
|
|
|
ESPSD_GETBYTE3: |
|
|
|
POP HL ; RECOVER HL |
|
|
|
; NOPS NEEDED FOR RELIABILITY??? |
|
|
|
;NOP \ NOP \ NOP \ NOP \ NOP \ NOP |
|
|
|
INC C |
|
|
|
IN E,(C) |
|
|
|
INC C ; BUMP TO DATA PORT |
|
|
|
IN E,(C) ; GET DATA BYTE |
|
|
|
; |
|
|
|
#IF (ESPSDTRACE >= 3) |
|
|
|
LD A,E |
|
|
|
CALL PRTHEXBYTE |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
XOR A |
|
|
|
RET |
|
|
|
; |
|
|
|
; READ BYTE FROM ESP32 INTO E WITH EXTRA LONG TIMEOUT |
|
|
|
; |
|
|
|
ESPSD_GETBYTE_SLOW: |
|
|
|
PUSH HL |
|
|
|
LD HL,100 * CPUMHZ ; CPU SPEED SCALED TIMEOUT |
|
|
|
ESPSD_GETBYTE_SLOW1: |
|
|
|
PUSH HL |
|
|
|
CALL ESPSD_GETBYTE |
|
|
|
POP HL |
|
|
|
JR Z,ESPSD_GETBYTE_SLOW_Z |
|
|
|
DEC HL |
|
|
|
LD A,H |
|
|
|
OR L |
|
|
|
JR NZ,ESPSD_GETBYTE_SLOW1 |
|
|
|
LD A,ESPSD_STTO |
|
|
|
ESPSD_GETBYTE_SLOW_Z: |
|
|
|
;CALL PC_SPACE ; *DEBUG* |
|
|
|
;CALL PRTHEXWORDHL ; *DEBUG* |
|
|
|
POP HL |
|
|
|
OR A ; SET FLAGS |
|
|
|
RET |
|
|
|
XOR A ; SIGNAL SUCCESS |
|
|
|
RET ; DONE |
|
|
|
; |
|
|
|
;============================================================================= |
|
|
|
; ERROR HANDLING AND DIAGNOSTICS |
|
|
|
|