|
|
|
@ -112,14 +112,14 @@ ESPSD_STNOTRDY .EQU -4 |
|
|
|
; |
|
|
|
; PER DEVICE DATA OFFSETS IN CFG BLOCK |
|
|
|
; |
|
|
|
ESPSD_DEV .EQU 0 ; OFFSET OF DEVICE NUMBER (BYTE) |
|
|
|
ESPSD_ROLE .EQU 1 ; 0=PRIMARY, 1=SECONDARY |
|
|
|
ESPSD_IOBASE .EQU 2 ; IO BASE ADDRESS (BYTE) |
|
|
|
ESPSD_STAT .EQU 3 ; LAST STATUS (BYTE) |
|
|
|
ESPSD_MEDCAP .EQU 4 ; MEDIA CAPACITY (DWORD) |
|
|
|
ESPSD_LBA .EQU 8 ; OFFSET OF LBA (DWORD) |
|
|
|
; |
|
|
|
ESPSD_CFGSIZ .EQU 12 ; SIZE OF CFG TBL ENTRIES |
|
|
|
ESPSD_DEV .EQU 0 ; OFFSET OF DEVICE NUMBER (BYTE) |
|
|
|
ESPSD_ROLE .EQU 1 ; 0=PRIMARY, 1=SECONDARY |
|
|
|
ESPSD_IOBASE .EQU 2 ; IO BASE ADDRESS (BYTE) |
|
|
|
ESPSD_STAT .EQU 3 ; LAST STATUS (BYTE) |
|
|
|
ESPSD_MEDCAP .EQU 4 ; MEDIA CAPACITY (DWORD) |
|
|
|
ESPSD_LBA .EQU 8 ; OFFSET OF LBA (DWORD) |
|
|
|
; |
|
|
|
ESPSD_CFGSIZ .EQU 12 ; SIZE OF CFG TBL ENTRIES |
|
|
|
; |
|
|
|
ESPSD_CFGTBL: |
|
|
|
; |
|
|
|
@ -205,7 +205,7 @@ ESPSD_INIT: |
|
|
|
; |
|
|
|
XOR A ; ZERO ACCUM |
|
|
|
LD (ESPSD_DEVNUM),A ; INIT DEV UNIT NUM FOR DYNAMIC ASSIGNMENT |
|
|
|
LD IY,ESPSD_CFGTBL ; POINT TO START OF CONFIG TABLE |
|
|
|
LD IY,ESPSD_CFGTBL ; POINT TO START OF CONFIG TABLE |
|
|
|
; |
|
|
|
ESPSD_INIT1: |
|
|
|
LD A,(IY) ; LOAD FIRST BYTE TO CHECK FOR END |
|
|
|
@ -216,14 +216,14 @@ ESPSD_INIT1: |
|
|
|
; |
|
|
|
ESPSD_INIT2: |
|
|
|
CALL NEWLINE ; FORMATTING |
|
|
|
PRTS("ESPSD:$") ; TAG |
|
|
|
PRTS("ESPSD:$") ; TAG |
|
|
|
; |
|
|
|
PRTS(" IO=0x$") ; LABEL FOR IO ADDRESS |
|
|
|
LD A,(IY+ESPSD_IOBASE) ; GET IO BASE ADDRES |
|
|
|
CALL PRTHEXBYTE ; DISPLAY IT |
|
|
|
; |
|
|
|
BIT 0,(IY+ESPSD_ROLE) ; GET ROLE BIT |
|
|
|
JR NZ,ESPSD_INIT2A ; JUMP IF SECONDARY |
|
|
|
JR NZ,ESPSD_INIT2A ; JUMP IF SECONDARY |
|
|
|
PRTS(" PRIMARY$") ; SHOW PRIMATY |
|
|
|
JR ESPSD_INIT2B ; JUMP AHEAD |
|
|
|
ESPSD_INIT2A: |
|
|
|
@ -238,7 +238,7 @@ ESPSD_INIT3: |
|
|
|
CALL ESPSD_INIT5 ; REGISTER & INIT DEVICE |
|
|
|
; |
|
|
|
ESPSD_INIT4: |
|
|
|
LD DE,ESPSD_CFGSIZ ; SIZE OF CFG TABLE ENTRY |
|
|
|
LD DE,ESPSD_CFGSIZ ; SIZE OF CFG TABLE ENTRY |
|
|
|
ADD IY,DE ; BUMP POINTER |
|
|
|
JP ESPSD_INIT1 ; AND LOOP |
|
|
|
; |
|
|
|
@ -261,7 +261,7 @@ ESPSD_INIT5: |
|
|
|
#ENDIF |
|
|
|
RET NZ |
|
|
|
; |
|
|
|
CALL ESPSD_PRTPREFIX ; TAG FOR ACTIVE DEVICE |
|
|
|
CALL ESPSD_PRTPREFIX ; TAG FOR ACTIVE DEVICE |
|
|
|
; |
|
|
|
; PRINT STORAGE CAPACITY (BLOCK COUNT) |
|
|
|
PRTS(" BLOCKS=0x$") ; PRINT FIELD LABEL |
|
|
|
@ -304,7 +304,7 @@ ESPSD_FNTBL: |
|
|
|
ESPSD_VERIFY: |
|
|
|
ESPSD_FORMAT: |
|
|
|
ESPSD_DEFMED: |
|
|
|
SYSCHKERR(ERR_NOTIMPL) ; NOT IMPLEMENTED |
|
|
|
SYSCHKERR(ERR_NOTIMPL) ; NOT IMPLEMENTED |
|
|
|
RET |
|
|
|
; |
|
|
|
; |
|
|
|
@ -418,7 +418,7 @@ ESPSD_GEOM: |
|
|
|
;;;CALL COUT |
|
|
|
; FOR LBA, WE SIMULATE CHS ACCESS USING 16 HEADS AND 16 SECTORS |
|
|
|
; RETURN HS:CC -> DE:HL, SET HIGH BIT OF D TO INDICATE LBA CAPABLE |
|
|
|
CALL ESPSD_CAP ; GET TOTAL BLOCKS IN DE:HL, BLOCK SIZE TO BC |
|
|
|
CALL ESPSD_CAP ; GET TOTAL BLOCKS IN DE:HL, BLOCK SIZE TO BC |
|
|
|
LD L,H ; DIVIDE BY 256 FOR # TRACKS |
|
|
|
LD H,E ; ... HIGH BYTE DISCARDED, RESULT IN HL |
|
|
|
LD D,16 | $80 ; HEADS / CYL = 16, SET LBA CAPABILITY BIT |
|
|
|
@ -637,7 +637,7 @@ ESPSD_BLKWRITE1: |
|
|
|
LD A,E ; RESULT TO ACCUM |
|
|
|
OR A ; SET FLAGS |
|
|
|
RET Z ; GOOD RETURN |
|
|
|
LD A,ESPSD_STIOERR ; CALL THIS AN IO ERROR |
|
|
|
LD A,ESPSD_STIOERR ; CALL THIS AN IO ERROR |
|
|
|
OR A ; SET FLAGS |
|
|
|
RET ; DONE |
|
|
|
; |
|
|
|
@ -649,7 +649,7 @@ ESPSD_BLKWRITE1: |
|
|
|
; |
|
|
|
ESPSD_CMD: |
|
|
|
PUSH DE |
|
|
|
LD E,$33 |
|
|
|
LD E,$33 ; COMMAND PREFIX BYTE |
|
|
|
CALL ESPSD_PUTBYTE |
|
|
|
POP DE |
|
|
|
RET NZ |
|
|
|
@ -659,7 +659,7 @@ ESPSD_CMD: |
|
|
|
; |
|
|
|
ESPSD_CMD_SLOW: |
|
|
|
PUSH DE |
|
|
|
LD E,$33 |
|
|
|
LD E,$33 ; COMMAND PREFIX BYTE |
|
|
|
CALL ESPSD_PUTBYTE_SLOW |
|
|
|
POP DE |
|
|
|
RET NZ |
|
|
|
@ -699,7 +699,9 @@ ESPSD_PUTBYTE2: |
|
|
|
; |
|
|
|
ESPSD_PUTBYTE_SLOW: |
|
|
|
PUSH HL |
|
|
|
LD HL,50 * CPUMHZ ; CPU SPEED SCALED TIMEOUT |
|
|
|
;;;LD HL,50 * 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: |
|
|
|
PUSH HL |
|
|
|
@ -751,7 +753,9 @@ ESPSD_GETBYTE2: |
|
|
|
; |
|
|
|
ESPSD_GETBYTE_SLOW: |
|
|
|
PUSH HL |
|
|
|
LD HL,50 * CPUMHZ ; CPU SPEED SCALED TIMEOUT |
|
|
|
;;;LD HL,50 * 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: |
|
|
|
PUSH HL |
|
|
|
|