Browse Source

SCSI and ESPSD Driver Cleaning

- Improved error handling flow
- Simplified ESPSD I/O timeout handling
pull/640/head
Wayne Warthen 2 months ago
parent
commit
5014a47a64
No known key found for this signature in database GPG Key ID: 8B34ED29C07EEB0A
  1. 245
      Source/HBIOS/espsd.asm
  2. 87
      Source/HBIOS/scsi.asm
  3. 2
      Source/ver.inc
  4. 2
      Source/ver.lib

245
Source/HBIOS/espsd.asm

@ -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

87
Source/HBIOS/scsi.asm

@ -167,7 +167,11 @@ SCSI_INIT3:
CALL PRTDEC8 ; DISPLAY IT
;
CALL SCSI_INITDEV ; INITIALIZE DEVICE
#IF (SCSITRACE < 2)
JP NZ,SCSI_PRTSTATSTR ; IF ERROR, EXIT VIA PRINT
#ELSE
RET NZ
#ENDIF
;
; PRINT STORAGE CAPACITY (BLOCK COUNT)
PRTS(" BLOCKS=0x$") ; PRINT FIELD LABEL
@ -230,14 +234,14 @@ SCSI_DEFMED:
;
SCSI_READ:
CALL HB_DSKREAD ; HOOK HBIOS DISK READ SUPERVISOR
LD A,SCSI_CMD_READ ; SETUP READ COMMAND
LD E,SCSI_CMD_READ ; SETUP READ COMMAND
JP SCSI_IO ; DO THE IO
;
;
;
SCSI_WRITE:
CALL HB_DSKWRITE ; HOOK HBIOS DISK WRITE SUPERVISOR
LD A,SCSI_CMD_WRITE ; SETUP WRITE COMMAND
LD E,SCSI_CMD_WRITE ; SETUP WRITE COMMAND
JP SCSI_IO ; DO THE IO
;
;
@ -362,8 +366,23 @@ SCSI_INITDEV:
;
;
SCSI_IO:
;
#IF (ESPSDTRACE == 1)
PUSH HL
LD HL,SCSI_PRTERR ; SET UP ESPSD_PRTERR
EX (SP),HL ; ... TO FILTER ALL EXITS
#ENDIF
;
LD (SCSI_DSKBUF),HL ; SAVE DISK BUFFER ADDRESS
PUSH DE ; SAVE COMMAND BYTE
PUSH HL ; SAVE BUFFER ADDRESS
CALL SCSI_CHKERR ; CHECK FOR ERR STATUS AND RESET IF SO
POP HL ; RESTORE BUFFER ADDRESS
POP DE ; RESTORE COMMAND BYTE
RET NZ ; BAIL OUT ON ERROR
;
; SETUP SCSI COMMAND
LD A,E
LD (SCSI_S_CDB),A ; SET SCSI COMMAND
; SETUP DISK BUFFER POINTERS
LD (SCSI_BUF_OUT),HL ; INPUT BUFFER
@ -386,12 +405,7 @@ SCSI_IO:
LD A,(IY+SCSI_LBA+0) ; LBA MID
LD (SCSI_CUR_LBN+1),A ; PUT IN CDB
; DO THE SCSI TRANSACTION
PUSH IX ; SAVE IX
LD IX,SCSI_S_IOT ; SET POINTER
CALL SCSI_GO ; DO THE SCSI TRANSACTION
POP IX ; RESTORE IX
AND %00111110 ; IGNORE RESERVED BITS OF STATUS
CALL NZ,SCSI_IOERR ; DIAGNOSE/RECORD ERRORS
JR NZ,SCSI_IO1 ; IF ERROR, SKIP INCREMENT
; INCREMENT LBA
LD A,SCSI_LBA ; LBA OFFSET
@ -410,12 +424,14 @@ SCSI_IO1:
OR A ; SET FLAGS
RET ; AND DONE
;
; CHECK FOR DEVICE EXISTENCE
; CHECK CURRENT DEVICE FOR ERROR STATUS AND ATTEMPT TO RECOVER
; VIA RESET IF DEVICE IS IN ERROR.
;
SCSI_TSTRDY:
XOR A ; SIGNAL SUCCESS
SCSI_CHKERR:
LD A,(IY+SCSI_STAT) ; GET STATUS
OR A ; SET FLAGS
CALL NZ,SCSI_RESET ; IF ERROR STATUS, RESET BUS
RET
;
; ISSUE SCSI INQUIRY COMMAND
; ON INPUT, HL POINTS TO OUTPUT DATA BUFFER
@ -434,13 +450,7 @@ SCSI_INQUIRY:
RRCA ; ...
LD (SCSI_INQ_LUN),A ; PUT IN INQ CDB
; DO THE SCSI TRANSACTION
PUSH IX ; SAVE IX
LD IX,SCSI_S_IOT ; SET POINTER
CALL SCSI_GO ; DO THE SCSI TRANSACTION
POP IX ; RESTORE IX
AND %00111110 ; IGNORE RESERVED BITS OF STATUS
JP NZ,SCSI_IOERR ; HANDLE ERROR
RET ; DONE
JP SCSI_GO ; DO THE SCSI TRANSACTION
;
; ISSUE SCSI CAPACITY COMMAND AND CAPTURE
; RESULTS AS DEVICE CAPACITY
@ -460,12 +470,8 @@ SCSI_CAPACITY:
RRCA ; ...
LD (SCSI_CAP_LUN),A ; PUT IN INQ CDB
; DO THE SCSI TRANSACTION
PUSH IX ; SAVE IX
LD IX,SCSI_S_IOT ; SET POINTER
CALL SCSI_GO ; DO THE SCSI TRANSACTION
POP IX ; RESTORE IX
AND %00111110 ; IGNORE RESERVED BITS OF STATUS
JP NZ,SCSI_IOERR ; HANDLE ERROR
RET NZ ; ABORT ON ERROR
;
; RETURNED LBA IS BIG ENDIAN. CONVERT TO A STANDARD 32-BIT
; INTEGER IN DE:HL
@ -501,35 +507,22 @@ SCSI_CAPACITY:
; COMMAND PROCESSING
;=============================================================================
;
;----------------------------------------------------------------
;WRITE LOGICAL BLOCK TO DISK
;CUR_TID,CUR_LUN,CUR_LBN ALREADY SET
;EXIT WITH ZERO STATUS IF OK
;----------------------------------------------------------------
; WRAPPER FOR HBIOS INVOCATION
;
WR_PHY:
LD A,0AH ;WRITE COMMAND
JR PHY_COM ;FINISH SAME AS READ
;----------------------------------------------------------------
;READ LOGICAL BLOCK FROM DISK
;CUR_TID,CUR_LUN,CUR_LBN ALREADY SET
;EXIT WITH ZERO STATUS IF OK
;----------------------------------------------------------------
SCSI_GO:
PUSH IX ; PRESERVE IX
LD IX,SCSI_S_IOT ; POINT TO IO TABLE
CALL SCSI_GO1 ; RUN THE TRANSACTION
POP IX ; RESTORE IX
AND %00111110 ; IGNORE RESERVED BITS OF STATUS
JP NZ,SCSI_IOERR ; HANDLE ERROR
RET ; DONE
;
RD_PHY:
LD A,8 ;READ COMMAND
PHY_COM:
LD (SCSI_S_CDB),A ;SET IN COMMAND BLOCK
LD IX,SCSI_S_IOT ;POINT TO IO TABLE
CALL SCSI_GO
AND 02H ;MASK TO ERROR BIT
RET
;-------------------------------------------------------------------------------
;DO SCSI TRANSACTION
; IX=SCSI IO BLOCK
;-------------------------------------------------------------------------------
SCSI_GO:
;
SCSI_GO1:
LD A,$FF ;PRESET ERROR STATUS
LD L,(IX+4) ;POINT TO STATUS ADDRESS
LD H,(IX+5) ;POINT TO STATUS ADDRESS

2
Source/ver.inc

@ -2,7 +2,7 @@
#DEFINE RMN 6
#DEFINE RUP 0
#DEFINE RTP 0
#DEFINE BIOSVER "3.6.0-dev.46"
#DEFINE BIOSVER "3.6.0-dev.47"
#define rmj RMJ
#define rmn RMN
#define rup RUP

2
Source/ver.lib

@ -3,5 +3,5 @@ rmn equ 6
rup equ 0
rtp equ 0
biosver macro
db "3.6.0-dev.46"
db "3.6.0-dev.47"
endm

Loading…
Cancel
Save