|
|
@ -251,10 +251,10 @@ DEVMAP: |
|
|
; +----8+-----8+------8+-+-16+-----8+------8+-+-16+ +-----8+------8+-+-16+ |
|
|
; +----8+-----8+------8+-+-16+-----8+------8+-+-16+ +-----8+------8+-+-16+ |
|
|
; | | | |
|
|
; | | | |
|
|
; +--------------------+ +-> [DPH] +-> [DPH] |
|
|
; +--------------------+ +-> [DPH] +-> [DPH] |
|
|
; | |
|
|
|
|
|
; V-----+-------+-------+-------+--------+-----+-----+-----+ |
|
|
|
|
|
; DPH: | XLT | 0000H | 0000H | 0000H | DIRBUF | DPB | CSV | ALV | |
|
|
|
|
|
; +---16+-----16+-----16+-----16+------16+-+-16+-+-16+-+-16+ |
|
|
|
|
|
|
|
|
; | |
|
|
|
|
|
; V-----+-------+-------+-------+--------+-----+-----+-----+ |
|
|
|
|
|
; DPH: | XLT | 0000H | 0000H | 0000H | DIRBUF | DPB | CSV | ALV | |
|
|
|
|
|
; +---16+-----16+-----16+-----16+------16+-+-16+-+-16+-+-16+ |
|
|
; (ONE DPH PER DRIVE) | | | |
|
|
; (ONE DPH PER DRIVE) | | | |
|
|
; | | +----------+ |
|
|
; | | +----------+ |
|
|
; | | | |
|
|
; | | | |
|
|
@ -263,9 +263,9 @@ DEVMAP: |
|
|
; | +-------------+ +-------------+ |
|
|
; | +-------------+ +-------------+ |
|
|
; | (CSZ BYTES) (ASZ BYTES) |
|
|
; | (CSZ BYTES) (ASZ BYTES) |
|
|
; | |
|
|
; | |
|
|
; +-----+-----+-----V-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ |
|
|
|
|
|
; DPB: | CSZ | ASZ | BLS | SPT | BSH | BLM | EXM | DSM | DRM | AL0 | AL1 | CKS | OFF | |
|
|
|
|
|
; +---16+---16+----8+---16+----8+----8+----8+---16+---16+----8+----8+---16+---16+ |
|
|
|
|
|
|
|
|
; +-----+-----+-----V-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ |
|
|
|
|
|
; DPB: | CSZ | ASZ | BLS | SPT | BSH | BLM | EXM | DSM | DRM | AL0 | AL1 | CKS | OFF | |
|
|
|
|
|
; +---16+---16+----8+---16+----8+----8+----8+---16+---16+----8+----8+---16+---16+ |
|
|
; |<--- PREFIX ---->|<------------------- STANDARD CP/M DPB ------------------->| |
|
|
; |<--- PREFIX ---->|<------------------- STANDARD CP/M DPB ------------------->| |
|
|
; |
|
|
; |
|
|
;================================================================================================== |
|
|
;================================================================================================== |
|
|
@ -353,7 +353,7 @@ WBOOT: |
|
|
LD DE,(BNKBIOS) ; UBIOS_PAGE (SEE PAGES.INC) |
|
|
LD DE,(BNKBIOS) ; UBIOS_PAGE (SEE PAGES.INC) |
|
|
RST 08 ; DO IT |
|
|
RST 08 ; DO IT |
|
|
PUSH DE ; SAVE PREVIOUS BANK |
|
|
PUSH DE ; SAVE PREVIOUS BANK |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LD HL,(CCPBUF) ; ADDRESS OF CCP BUF IN BIOS MEM |
|
|
LD HL,(CCPBUF) ; ADDRESS OF CCP BUF IN BIOS MEM |
|
|
LD DE,CCP_LOC ; ADDRESS IN HI MEM OF CCP |
|
|
LD DE,CCP_LOC ; ADDRESS IN HI MEM OF CCP |
|
|
LD BC,CCP_SIZ ; SIZE OF CCP |
|
|
LD BC,CCP_SIZ ; SIZE OF CCP |
|
|
@ -383,11 +383,11 @@ WBOOT: |
|
|
LD BC,6 |
|
|
LD BC,6 |
|
|
XOR A |
|
|
XOR A |
|
|
CALL FILL |
|
|
CALL FILL |
|
|
; |
|
|
|
|
|
|
|
|
; |
|
|
CALL RESCPM ; RESET CPM |
|
|
CALL RESCPM ; RESET CPM |
|
|
JR GOCPM ; THEN OFF TO CP/M WE GO... |
|
|
JR GOCPM ; THEN OFF TO CP/M WE GO... |
|
|
; |
|
|
; |
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
RESCPM: |
|
|
RESCPM: |
|
|
; |
|
|
; |
|
|
LD A,$C3 ; LOAD A WITH 'JP' INSTRUCTION (USED BELOW) |
|
|
LD A,$C3 ; LOAD A WITH 'JP' INSTRUCTION (USED BELOW) |
|
|
@ -406,7 +406,7 @@ RESCPM: |
|
|
; LD ($0038),A |
|
|
; LD ($0038),A |
|
|
; LD HL,PANIC ; PANIC ROUTINE ADDRESS |
|
|
; LD HL,PANIC ; PANIC ROUTINE ADDRESS |
|
|
; LD ($0039),HL ; POKE IT |
|
|
; LD ($0039),HL ; POKE IT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; CALL 5 -> INVOKE BDOS |
|
|
; CALL 5 -> INVOKE BDOS |
|
|
LD ($0005),A ; JP OPCODE AT $0005 |
|
|
LD ($0005),A ; JP OPCODE AT $0005 |
|
|
LD HL,BDOS_LOC + 6 ; GET BDOS ENTRY ADDRESS |
|
|
LD HL,BDOS_LOC + 6 ; GET BDOS ENTRY ADDRESS |
|
|
@ -427,7 +427,7 @@ RESCPM: |
|
|
; |
|
|
; |
|
|
RET |
|
|
RET |
|
|
; |
|
|
; |
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
GOCPM: |
|
|
GOCPM: |
|
|
; |
|
|
; |
|
|
; ENSURE VALID DISK AND JUMP TO CCP |
|
|
; ENSURE VALID DISK AND JUMP TO CCP |
|
|
@ -444,7 +444,7 @@ GOCCP: |
|
|
LD C,A ; SETUP C WITH CURRENT USER/DISK, ASSUME IT IS OK |
|
|
LD C,A ; SETUP C WITH CURRENT USER/DISK, ASSUME IT IS OK |
|
|
JP CCP_LOC ; JUMP TO COMMAND PROCESSOR |
|
|
JP CCP_LOC ; JUMP TO COMMAND PROCESSOR |
|
|
; |
|
|
; |
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
GOMON: |
|
|
GOMON: |
|
|
CALL PANIC |
|
|
CALL PANIC |
|
|
; |
|
|
; |
|
|
@ -460,7 +460,7 @@ GOMON: |
|
|
; LD BC,MON_SIZ |
|
|
; LD BC,MON_SIZ |
|
|
; LDIR |
|
|
; LDIR |
|
|
; CALL RAMPGZ |
|
|
; CALL RAMPGZ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; ; JUMP TO MONITOR WARM ENTRY |
|
|
; ; JUMP TO MONITOR WARM ENTRY |
|
|
; JP MON_UART |
|
|
; JP MON_UART |
|
|
; |
|
|
; |
|
|
@ -479,7 +479,7 @@ CONST: |
|
|
LD HL,CIOST ; HL = ADDRESS OF COMPLETION ROUTINE |
|
|
LD HL,CIOST ; HL = ADDRESS OF COMPLETION ROUTINE |
|
|
JR CONIO |
|
|
JR CONIO |
|
|
; |
|
|
; |
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
CONIN: |
|
|
CONIN: |
|
|
; CONSOLE CHARACTER INTO REGISTER A |
|
|
; CONSOLE CHARACTER INTO REGISTER A |
|
|
; |
|
|
; |
|
|
@ -487,7 +487,7 @@ CONIN: |
|
|
LD HL,CIOIN ; HL = ADDRESS OF COMPLETION ROUTINE |
|
|
LD HL,CIOIN ; HL = ADDRESS OF COMPLETION ROUTINE |
|
|
JR CONIO |
|
|
JR CONIO |
|
|
|
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
CONOUT: |
|
|
CONOUT: |
|
|
; CONSOLE CHARACTER OUTPUT FROM REGISTER C |
|
|
; CONSOLE CHARACTER OUTPUT FROM REGISTER C |
|
|
; |
|
|
; |
|
|
@ -496,7 +496,7 @@ CONOUT: |
|
|
LD E,C ; E = CHARACTER TO SEND |
|
|
LD E,C ; E = CHARACTER TO SEND |
|
|
; JR CONIO ; COMMENTED OUT, FALL THROUGH OK |
|
|
; JR CONIO ; COMMENTED OUT, FALL THROUGH OK |
|
|
; |
|
|
; |
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
CONIO: |
|
|
CONIO: |
|
|
; |
|
|
; |
|
|
LD A,(IOBYTE) ; GET IOBYTE |
|
|
LD A,(IOBYTE) ; GET IOBYTE |
|
|
@ -504,8 +504,8 @@ CONIO: |
|
|
;OR $00 ; PUT LOGICAL DEVICE IN BITS 2-3 (CON:=$00, RDR:=$04, PUN:=$08, LST:=$0C |
|
|
;OR $00 ; PUT LOGICAL DEVICE IN BITS 2-3 (CON:=$00, RDR:=$04, PUN:=$08, LST:=$0C |
|
|
JR CIO_DISP |
|
|
JR CIO_DISP |
|
|
; |
|
|
; |
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
LIST: |
|
|
|
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
LIST: |
|
|
; LIST CHARACTER FROM REGISTER C |
|
|
; LIST CHARACTER FROM REGISTER C |
|
|
; |
|
|
; |
|
|
LD B,BF_CIOOUT ; B = FUNCTION |
|
|
LD B,BF_CIOOUT ; B = FUNCTION |
|
|
@ -513,7 +513,7 @@ LIST: |
|
|
LD E,C ; E = CHARACTER TO SEND |
|
|
LD E,C ; E = CHARACTER TO SEND |
|
|
JR LISTIO |
|
|
JR LISTIO |
|
|
; |
|
|
; |
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
LISTST: |
|
|
LISTST: |
|
|
; RETURN LIST STATUS (0 IF NOT READY, 1 IF READY) |
|
|
; RETURN LIST STATUS (0 IF NOT READY, 1 IF READY) |
|
|
; |
|
|
; |
|
|
@ -521,7 +521,7 @@ LISTST: |
|
|
LD HL,CIOST ; HL = ADDRESS OF COMPLETION ROUTINE |
|
|
LD HL,CIOST ; HL = ADDRESS OF COMPLETION ROUTINE |
|
|
;JR LISTIO ; COMMENTED OUT, FALL THROUGH OK |
|
|
;JR LISTIO ; COMMENTED OUT, FALL THROUGH OK |
|
|
; |
|
|
; |
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
LISTIO: |
|
|
LISTIO: |
|
|
; |
|
|
; |
|
|
LD A,(IOBYTE) ; GET IOBYTE |
|
|
LD A,(IOBYTE) ; GET IOBYTE |
|
|
@ -531,7 +531,7 @@ LISTIO: |
|
|
OR $0C ; PUT LOGICAL DEVICE IN BITS 2-3 (CON:=$00, RDR:=$04, PUN:=$08, LST:=$0C |
|
|
OR $0C ; PUT LOGICAL DEVICE IN BITS 2-3 (CON:=$00, RDR:=$04, PUN:=$08, LST:=$0C |
|
|
JR CIO_DISP |
|
|
JR CIO_DISP |
|
|
; |
|
|
; |
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
PUNCH: |
|
|
PUNCH: |
|
|
; PUNCH CHARACTER FROM REGISTER C |
|
|
; PUNCH CHARACTER FROM REGISTER C |
|
|
; |
|
|
; |
|
|
@ -540,7 +540,7 @@ PUNCH: |
|
|
LD E,C ; E = CHARACTER TO SEND |
|
|
LD E,C ; E = CHARACTER TO SEND |
|
|
;JR PUNCHIO ; COMMENTED OUT, FALL THROUGH OK |
|
|
;JR PUNCHIO ; COMMENTED OUT, FALL THROUGH OK |
|
|
; |
|
|
; |
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
PUNCHIO: |
|
|
PUNCHIO: |
|
|
; |
|
|
; |
|
|
LD A,(IOBYTE) ; GET IOBYTE |
|
|
LD A,(IOBYTE) ; GET IOBYTE |
|
|
@ -552,7 +552,7 @@ PUNCHIO: |
|
|
OR $08 ; PUT LOGICAL DEVICE IN BITS 2-3 (CON:=$00, RDR:=$04, PUN:=$08, LST:=$0C |
|
|
OR $08 ; PUT LOGICAL DEVICE IN BITS 2-3 (CON:=$00, RDR:=$04, PUN:=$08, LST:=$0C |
|
|
JR CIO_DISP |
|
|
JR CIO_DISP |
|
|
; |
|
|
; |
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
READER: |
|
|
READER: |
|
|
; READ CHARACTER INTO REGISTER A FROM READER DEVICE |
|
|
; READ CHARACTER INTO REGISTER A FROM READER DEVICE |
|
|
; |
|
|
; |
|
|
@ -560,7 +560,7 @@ READER: |
|
|
LD HL,CIOIN ; HL = ADDRESS OF COMPLETION ROUTINE |
|
|
LD HL,CIOIN ; HL = ADDRESS OF COMPLETION ROUTINE |
|
|
JR READERIO |
|
|
JR READERIO |
|
|
; |
|
|
; |
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
READERST: |
|
|
READERST: |
|
|
; RETURN READER STATUS (0 IF NOT READY, 1 IF READY) |
|
|
; RETURN READER STATUS (0 IF NOT READY, 1 IF READY) |
|
|
; |
|
|
; |
|
|
@ -568,7 +568,7 @@ READERST: |
|
|
LD HL,CIOST ; HL = ADDRESS OF COMPLETION ROUTINE |
|
|
LD HL,CIOST ; HL = ADDRESS OF COMPLETION ROUTINE |
|
|
; JR READERIO ; COMMENTED OUT, FALL THROUGH OK |
|
|
; JR READERIO ; COMMENTED OUT, FALL THROUGH OK |
|
|
; |
|
|
; |
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
READERIO: |
|
|
READERIO: |
|
|
; |
|
|
; |
|
|
LD A,(IOBYTE) ; GET IOBYTE |
|
|
LD A,(IOBYTE) ; GET IOBYTE |
|
|
@ -578,20 +578,20 @@ READERIO: |
|
|
OR $04 ; PUT LOGICAL DEVICE IN BITS 2-3 (CON:=$00, RDR:=$04, PUN:=$08, LST:=$0C |
|
|
OR $04 ; PUT LOGICAL DEVICE IN BITS 2-3 (CON:=$00, RDR:=$04, PUN:=$08, LST:=$0C |
|
|
JR CIO_DISP |
|
|
JR CIO_DISP |
|
|
; |
|
|
; |
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
CIOIN: |
|
|
CIOIN: |
|
|
; COMPLETION ROUTINE FOR CHARACTER INPUT FUNCTIONS |
|
|
; COMPLETION ROUTINE FOR CHARACTER INPUT FUNCTIONS |
|
|
; |
|
|
; |
|
|
LD A,E ; MOVE CHARACTER RETURNED TO A |
|
|
LD A,E ; MOVE CHARACTER RETURNED TO A |
|
|
RET ; FALL THRU |
|
|
RET ; FALL THRU |
|
|
;; |
|
|
;; |
|
|
;;__________________________________________________________________________________________________ |
|
|
|
|
|
|
|
|
;;__________________________________________________________________________________________________ |
|
|
;CIOOUT: |
|
|
;CIOOUT: |
|
|
;; COMPLETION ROUTINE FOR CHARACTER OUTPUT FUNCTIONS |
|
|
;; COMPLETION ROUTINE FOR CHARACTER OUTPUT FUNCTIONS |
|
|
;; |
|
|
;; |
|
|
; RET |
|
|
; RET |
|
|
; |
|
|
; |
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
CIOST: |
|
|
CIOST: |
|
|
; COMPLETION ROUTINE FOR CHARACTER STATUS FUNCTIONS (IST/OST) |
|
|
; COMPLETION ROUTINE FOR CHARACTER STATUS FUNCTIONS (IST/OST) |
|
|
; |
|
|
; |
|
|
@ -621,7 +621,7 @@ CIO_DISP: |
|
|
|
|
|
|
|
|
LD HL,DEVMAP ; HL = ADDRESS OF DEVICE MAP |
|
|
LD HL,DEVMAP ; HL = ADDRESS OF DEVICE MAP |
|
|
CALL ADDHLA ; ADD OFFSET |
|
|
CALL ADDHLA ; ADD OFFSET |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LD A,(HL) ; LOOKUP DEVICE CODE |
|
|
LD A,(HL) ; LOOKUP DEVICE CODE |
|
|
#IFDEF PLTUNA |
|
|
#IFDEF PLTUNA |
|
|
LD C,B ; MOVE FUNCTION TO C |
|
|
LD C,B ; MOVE FUNCTION TO C |
|
|
@ -695,13 +695,13 @@ SELDSK: |
|
|
; |
|
|
; |
|
|
JP DSK_SELECT |
|
|
JP DSK_SELECT |
|
|
; |
|
|
; |
|
|
;__________________________________________________________________________________________________ |
|
|
|
|
|
|
|
|
;__________________________________________________________________________________________________ |
|
|
HOME: |
|
|
HOME: |
|
|
; SELECT TRACK 0 (BC = 0) AND FALL THRU TO SETTRK |
|
|
; SELECT TRACK 0 (BC = 0) AND FALL THRU TO SETTRK |
|
|
#IF DSKTRACE |
|
|
#IF DSKTRACE |
|
|
CALL PRTHOME |
|
|
CALL PRTHOME |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
|
|
|
|
|
|
; |
|
|
LD A,(HSTWRT) ; CHECK FOR PENDING WRITE |
|
|
LD A,(HSTWRT) ; CHECK FOR PENDING WRITE |
|
|
OR A ; SET FLAGS |
|
|
OR A ; SET FLAGS |
|
|
JR NZ,HOMED ; BUFFER IS DIRTY |
|
|
JR NZ,HOMED ; BUFFER IS DIRTY |
|
|
@ -764,7 +764,7 @@ BLKRES: |
|
|
XOR A |
|
|
XOR A |
|
|
LD (HSTACT),A ; BUFFER NO LONGER VALID |
|
|
LD (HSTACT),A ; BUFFER NO LONGER VALID |
|
|
LD (UNACNT),A ; CLEAR UNALLOC COUNT |
|
|
LD (UNACNT),A ; CLEAR UNALLOC COUNT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RET |
|
|
RET |
|
|
;__________________________________________________________________________________________________ |
|
|
;__________________________________________________________________________________________________ |
|
|
; |
|
|
; |
|
|
@ -812,7 +812,7 @@ BLKRW: |
|
|
XOR A ; ZERO TO A |
|
|
XOR A ; ZERO TO A |
|
|
LD (WRTYPE),A ; SET WRITE TYPE = 0 (WRT_ALC) TO ENSURE READ OCCURS |
|
|
LD (WRTYPE),A ; SET WRITE TYPE = 0 (WRT_ALC) TO ENSURE READ OCCURS |
|
|
LD (UNACNT),A ; SET UNACNT TO ABORT SEQ WRITE PROCESSING |
|
|
LD (UNACNT),A ; SET UNACNT TO ABORT SEQ WRITE PROCESSING |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
JR BLKRW4 ; GO TO I/O |
|
|
JR BLKRW4 ; GO TO I/O |
|
|
|
|
|
|
|
|
BLKRW1: |
|
|
BLKRW1: |
|
|
@ -821,7 +821,7 @@ BLKRW1: |
|
|
LD A,(WRTYPE) ; GET WRITE TYPE |
|
|
LD A,(WRTYPE) ; GET WRITE TYPE |
|
|
CP WRT_UNA ; IS IT WRITE TO UNALLOC? |
|
|
CP WRT_UNA ; IS IT WRITE TO UNALLOC? |
|
|
JR NZ,BLKRW2 ; NOPE, BYPASS |
|
|
JR NZ,BLKRW2 ; NOPE, BYPASS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; INITIALIZE START OF SEQUENTIAL WRITING TO UNALLOCATED BLOCK |
|
|
; INITIALIZE START OF SEQUENTIAL WRITING TO UNALLOCATED BLOCK |
|
|
; AND THEN TREAT SUBSEQUENT PROCESSING AS A NORMAL WRITE |
|
|
; AND THEN TREAT SUBSEQUENT PROCESSING AS A NORMAL WRITE |
|
|
CALL UNA_INI ; INITIALIZE SEQUENTIAL WRITE TRACKING |
|
|
CALL UNA_INI ; INITIALIZE SEQUENTIAL WRITE TRACKING |
|
|
@ -835,11 +835,11 @@ BLKRW2: |
|
|
|
|
|
|
|
|
CALL UNA_CHK ; CHECK FOR CONTINUATION OF SEQ WRITES TO UNALLOCATED BLOCK |
|
|
CALL UNA_CHK ; CHECK FOR CONTINUATION OF SEQ WRITES TO UNALLOCATED BLOCK |
|
|
JR NZ,BLKRW3 ; NOPE, ABORT |
|
|
JR NZ,BLKRW3 ; NOPE, ABORT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; WE MATCHED EVERYTHING, TREAT AS WRITE TO UNALLOCATED BLOCK |
|
|
; WE MATCHED EVERYTHING, TREAT AS WRITE TO UNALLOCATED BLOCK |
|
|
LD A,WRT_UNA ; WRITE TO UNALLOCATED |
|
|
LD A,WRT_UNA ; WRITE TO UNALLOCATED |
|
|
LD (WRTYPE),A ; SAVE WRITE TYPE |
|
|
LD (WRTYPE),A ; SAVE WRITE TYPE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CALL UNA_INC ; INCREMENT SEQUENTIAL WRITE TRACKING |
|
|
CALL UNA_INC ; INCREMENT SEQUENTIAL WRITE TRACKING |
|
|
JR BLKRW4 ; PROCEED TO I/O PROCESSING |
|
|
JR BLKRW4 ; PROCEED TO I/O PROCESSING |
|
|
|
|
|
|
|
|
@ -870,16 +870,16 @@ BLKRW4: |
|
|
|
|
|
|
|
|
; IMPLEMENT THE TRANSLATED VALUES |
|
|
; IMPLEMENT THE TRANSLATED VALUES |
|
|
CALL BLK_SAV ; SAVE XLAT VALUES: XLT... -> HST... |
|
|
CALL BLK_SAV ; SAVE XLAT VALUES: XLT... -> HST... |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; IF WRITE TO UNALLOC BLOCK, BYPASS READ, LEAVES BUFFER UNDEFINED |
|
|
; IF WRITE TO UNALLOC BLOCK, BYPASS READ, LEAVES BUFFER UNDEFINED |
|
|
LD A,(WRTYPE) |
|
|
LD A,(WRTYPE) |
|
|
CP 2 |
|
|
CP 2 |
|
|
JR Z,BLKRW6 |
|
|
JR Z,BLKRW6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; DO THE ACTUAL READ |
|
|
; DO THE ACTUAL READ |
|
|
CALL DSK_READ ; READ PHYSICAL SECTOR INTO BUFFER |
|
|
CALL DSK_READ ; READ PHYSICAL SECTOR INTO BUFFER |
|
|
JR Z,BLKRW6 ; GOOD READ, CONTINUE |
|
|
JR Z,BLKRW6 ; GOOD READ, CONTINUE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; IF READ FAILED, RESET (DE)BLOCKING ALGORITHM AND RETURN ERROR |
|
|
; IF READ FAILED, RESET (DE)BLOCKING ALGORITHM AND RETURN ERROR |
|
|
PUSH AF ; SAVE ERROR STATUS |
|
|
PUSH AF ; SAVE ERROR STATUS |
|
|
CALL BLKRES ; INVALIDATE (DE)BLOCKING BUFFER |
|
|
CALL BLKRES ; INVALIDATE (DE)BLOCKING BUFFER |
|
|
@ -896,7 +896,7 @@ BLKRW6: |
|
|
CALL BLK_DEBLOCK ; EXTRACT DATA FROM BLOCK |
|
|
CALL BLK_DEBLOCK ; EXTRACT DATA FROM BLOCK |
|
|
XOR A ; NO ERROR |
|
|
XOR A ; NO ERROR |
|
|
RET ; ALL DONE |
|
|
RET ; ALL DONE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BLKRW7: |
|
|
BLKRW7: |
|
|
; THIS IS A WRITE OPERATION, INSERT DATA INTO BLOCK |
|
|
; THIS IS A WRITE OPERATION, INSERT DATA INTO BLOCK |
|
|
CALL BLK_BLOCK ; INSERT DATA INTO BLOCK |
|
|
CALL BLK_BLOCK ; INSERT DATA INTO BLOCK |
|
|
@ -904,7 +904,7 @@ BLKRW7: |
|
|
; MARK THE BUFFER AS WRITTEN |
|
|
; MARK THE BUFFER AS WRITTEN |
|
|
LD A,TRUE ; BUFFER DIRTY = TRUE |
|
|
LD A,TRUE ; BUFFER DIRTY = TRUE |
|
|
LD (HSTWRT),A ; SAVE IT |
|
|
LD (HSTWRT),A ; SAVE IT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; CHECK WRITE TYPE, IF WRT_DIR, FORCE THE PHYSICAL WRITE |
|
|
; CHECK WRITE TYPE, IF WRT_DIR, FORCE THE PHYSICAL WRITE |
|
|
LD A,(WRTYPE) ; GET WRITE TYPE |
|
|
LD A,(WRTYPE) ; GET WRITE TYPE |
|
|
CP WRT_DIR ; 1 = DIRECTORY WRITE |
|
|
CP WRT_DIR ; 1 = DIRECTORY WRITE |
|
|
@ -974,24 +974,24 @@ UNA_INC: |
|
|
; DECREMENT THE BLOCK RECORD COUNT |
|
|
; DECREMENT THE BLOCK RECORD COUNT |
|
|
LD HL,UNACNT |
|
|
LD HL,UNACNT |
|
|
DEC (HL) |
|
|
DEC (HL) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; INCREMENT THE SECTOR |
|
|
; INCREMENT THE SECTOR |
|
|
LD DE,(UNASEC) |
|
|
LD DE,(UNASEC) |
|
|
INC DE |
|
|
INC DE |
|
|
LD (UNASEC),DE |
|
|
LD (UNASEC),DE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; CHECK FOR END OF TRACK |
|
|
; CHECK FOR END OF TRACK |
|
|
LD HL,(UNASPT) |
|
|
LD HL,(UNASPT) |
|
|
XOR A |
|
|
XOR A |
|
|
SBC HL,DE |
|
|
SBC HL,DE |
|
|
RET NZ |
|
|
RET NZ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; HANDLE END OF TRACK |
|
|
; HANDLE END OF TRACK |
|
|
LD (UNASEC),HL ; SECTOR BACK TO 0 (NOTE: HL=0 AT THIS POINT) |
|
|
LD (UNASEC),HL ; SECTOR BACK TO 0 (NOTE: HL=0 AT THIS POINT) |
|
|
LD HL,(UNATRK) ; GET CURRENT TRACK |
|
|
LD HL,(UNATRK) ; GET CURRENT TRACK |
|
|
INC HL ; BUMP IT |
|
|
INC HL ; BUMP IT |
|
|
LD (UNATRK),HL ; SAVE IT |
|
|
LD (UNATRK),HL ; SAVE IT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RET |
|
|
RET |
|
|
#ELSE |
|
|
#ELSE |
|
|
; |
|
|
; |
|
|
@ -1022,15 +1022,15 @@ BLKRW1: |
|
|
CALL BLK_DEBLOCK ; EXTRACT DATA FROM BLOCK |
|
|
CALL BLK_DEBLOCK ; EXTRACT DATA FROM BLOCK |
|
|
XOR A ; NO ERROR |
|
|
XOR A ; NO ERROR |
|
|
RET ; ALL DONE |
|
|
RET ; ALL DONE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BLKRW2: |
|
|
BLKRW2: |
|
|
CALL BLK_BLOCK ; INSERT DATA INTO BLOCK |
|
|
CALL BLK_BLOCK ; INSERT DATA INTO BLOCK |
|
|
CALL DSK_WRITE ; WRITE PHYSICAL SECTOR FROM BUFFER |
|
|
CALL DSK_WRITE ; WRITE PHYSICAL SECTOR FROM BUFFER |
|
|
RET NZ ; BAIL OUT ON ERROR |
|
|
RET NZ ; BAIL OUT ON ERROR |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LD A,TRUE ; BUFFER IS NOW VALID |
|
|
LD A,TRUE ; BUFFER IS NOW VALID |
|
|
LD (HSTACT),A ; SAVE IT |
|
|
LD (HSTACT),A ; SAVE IT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
XOR A ; ALL IS WELL, SET RETURN CODE 0 |
|
|
XOR A ; ALL IS WELL, SET RETURN CODE 0 |
|
|
RET ; RETURN |
|
|
RET ; RETURN |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
@ -1247,7 +1247,7 @@ DSK_SELECT: |
|
|
LD E,(HL) ; DEREFERENCE HL... |
|
|
LD E,(HL) ; DEREFERENCE HL... |
|
|
INC HL ; INTO DE... |
|
|
INC HL ; INTO DE... |
|
|
LD D,(HL) ; DE = ADDRESS OF DESIRED DPB |
|
|
LD D,(HL) ; DE = ADDRESS OF DESIRED DPB |
|
|
; |
|
|
|
|
|
|
|
|
; |
|
|
; PLUG DPB INTO THE ACTIVE DPH |
|
|
; PLUG DPB INTO THE ACTIVE DPH |
|
|
LD HL,(SEKDPH) |
|
|
LD HL,(SEKDPH) |
|
|
LD BC,10 ; OFFSET OF DPB IN DPH |
|
|
LD BC,10 ; OFFSET OF DPB IN DPH |
|
|
@ -1272,7 +1272,7 @@ DSK_STATUS: |
|
|
; C HAS CPM DRIVE, LOOKUP UNIT AND CHECK FOR INVALID DRIVE |
|
|
; C HAS CPM DRIVE, LOOKUP UNIT AND CHECK FOR INVALID DRIVE |
|
|
CALL DSK_GETINF ; B := UNIT |
|
|
CALL DSK_GETINF ; B := UNIT |
|
|
RET NZ ; INVALID DRIVE ERROR |
|
|
RET NZ ; INVALID DRIVE ERROR |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; VALID DRIVE, DISPATCH TO DRIVER |
|
|
; VALID DRIVE, DISPATCH TO DRIVER |
|
|
LD C,D ; C := UNIT |
|
|
LD C,D ; C := UNIT |
|
|
LD B,BF_DIOSTATUS ; B := FUNCTION: STATUS |
|
|
LD B,BF_DIOSTATUS ; B := FUNCTION: STATUS |
|
|
@ -1360,7 +1360,7 @@ CHS: |
|
|
; |
|
|
; |
|
|
; FLOPPY SPECIFIC TRANSLATION ASSUMES FLOPPY IS DOUBLE-SIDED AND |
|
|
; FLOPPY SPECIFIC TRANSLATION ASSUMES FLOPPY IS DOUBLE-SIDED AND |
|
|
; USES LOW ORDER BIT OF TRACK AS HEAD VALUE |
|
|
; USES LOW ORDER BIT OF TRACK AS HEAD VALUE |
|
|
; |
|
|
|
|
|
|
|
|
; |
|
|
; HBIOS SEEK: HL=CYLINDER, D=HEAD, E=SECTOR |
|
|
; HBIOS SEEK: HL=CYLINDER, D=HEAD, E=SECTOR |
|
|
; |
|
|
; |
|
|
LD DE,(HSTSEC) ; SECTOR -> DE, HEAD(D) BECOMES ZERO |
|
|
LD DE,(HSTSEC) ; SECTOR -> DE, HEAD(D) BECOMES ZERO |
|
|
@ -1846,12 +1846,12 @@ INIT: |
|
|
LD DE,(BNKBIOS) ; UBIOS_PAGE (SEE PAGES.INC) |
|
|
LD DE,(BNKBIOS) ; UBIOS_PAGE (SEE PAGES.INC) |
|
|
CALL $FFFD ; DO IT (RST 08 NOT YET INSTALLED) |
|
|
CALL $FFFD ; DO IT (RST 08 NOT YET INSTALLED) |
|
|
PUSH DE ; SAVE PREVIOUS BANK |
|
|
PUSH DE ; SAVE PREVIOUS BANK |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LD HL,0 ; FROM ADDRESS 0 (PAGE ZERO) |
|
|
LD HL,0 ; FROM ADDRESS 0 (PAGE ZERO) |
|
|
LD DE,SECBUF ; USE SECBUF AS BOUNCE BUFFER |
|
|
LD DE,SECBUF ; USE SECBUF AS BOUNCE BUFFER |
|
|
LD BC,256 ; ONE PAGE IS 256 BYTES |
|
|
LD BC,256 ; ONE PAGE IS 256 BYTES |
|
|
LDIR ; DO IT |
|
|
LDIR ; DO IT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LD BC,$01FB ; UNA FUNC = SET BANK |
|
|
LD BC,$01FB ; UNA FUNC = SET BANK |
|
|
POP DE ; RECOVER OPERATING BANK |
|
|
POP DE ; RECOVER OPERATING BANK |
|
|
CALL $FFFD ; DO IT (RST 08 NOT YET INSTALLED) |
|
|
CALL $FFFD ; DO IT (RST 08 NOT YET INSTALLED) |
|
|
@ -1860,7 +1860,7 @@ INIT: |
|
|
LD DE,0 ; TO PAGE ZERO OF OPERATING BANK |
|
|
LD DE,0 ; TO PAGE ZERO OF OPERATING BANK |
|
|
LD BC,256 ; ONE PAGE IS 256 BYTES |
|
|
LD BC,256 ; ONE PAGE IS 256 BYTES |
|
|
LDIR ; DO IT |
|
|
LDIR ; DO IT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; INSTALL UNA INVOCATION VECTOR FOR RST 08 |
|
|
; INSTALL UNA INVOCATION VECTOR FOR RST 08 |
|
|
LD A,$C3 ; JP INSTRUCTION |
|
|
LD A,$C3 ; JP INSTRUCTION |
|
|
LD (8),A ; STORE AT 0x0008 |
|
|
LD (8),A ; STORE AT 0x0008 |
|
|
@ -1880,7 +1880,7 @@ INIT: |
|
|
; SOFT RESET HBIOS |
|
|
; SOFT RESET HBIOS |
|
|
LD B,BF_SYSRESET ; HB FUNC: RESET |
|
|
LD B,BF_SYSRESET ; HB FUNC: RESET |
|
|
RST 08 ; DO IT |
|
|
RST 08 ; DO IT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; CREATE A TEMP COPY OF THE HBIOS CONFIG BLOCK (HCB) |
|
|
; CREATE A TEMP COPY OF THE HBIOS CONFIG BLOCK (HCB) |
|
|
; FOR REFERENCE USE DURING INIT |
|
|
; FOR REFERENCE USE DURING INIT |
|
|
LD B,BF_SYSSETCPY ; HBIOS FUNC: SETUP BANK COPY |
|
|
LD B,BF_SYSSETCPY ; HBIOS FUNC: SETUP BANK COPY |
|
|
@ -1891,7 +1891,7 @@ INIT: |
|
|
LD HL,HCB_LOC ; COPY FROM FIXED LOCATION IN HB BANK |
|
|
LD HL,HCB_LOC ; COPY FROM FIXED LOCATION IN HB BANK |
|
|
LD DE,HCB ; TO TEMP LOCATION IN USR BANK |
|
|
LD DE,HCB ; TO TEMP LOCATION IN USR BANK |
|
|
RST 08 ; DO IT |
|
|
RST 08 ; DO IT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; CAPTURE RAM DRIVE STARTING BANK |
|
|
; CAPTURE RAM DRIVE STARTING BANK |
|
|
LD A,(HCB + HCB_BIDRAMD0) |
|
|
LD A,(HCB + HCB_BIDRAMD0) |
|
|
LD (BNKRAMD),A |
|
|
LD (BNKRAMD),A |
|
|
@ -1905,7 +1905,7 @@ INIT: |
|
|
CALL NEWLINE2 ; FORMATTING |
|
|
CALL NEWLINE2 ; FORMATTING |
|
|
LD DE,STR_BANNER ; POINT TO BANNER |
|
|
LD DE,STR_BANNER ; POINT TO BANNER |
|
|
CALL WRITESTR ; DISPLAY IT |
|
|
CALL WRITESTR ; DISPLAY IT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#IFDEF PLTUNA |
|
|
#IFDEF PLTUNA |
|
|
; SAVE COMMAND PROCESSOR IMAGE TO MALLOCED CACHE IN UNA BIOS PAGE |
|
|
; SAVE COMMAND PROCESSOR IMAGE TO MALLOCED CACHE IN UNA BIOS PAGE |
|
|
LD C,$F7 ; UNA MALLOC |
|
|
LD C,$F7 ; UNA MALLOC |
|
|
@ -1978,7 +1978,7 @@ INIT: |
|
|
CALL PRTDEC ; PRINT IT |
|
|
CALL PRTDEC ; PRINT IT |
|
|
LD DE,STR_MEMFREE ; ADD DESCRIPTION |
|
|
LD DE,STR_MEMFREE ; ADD DESCRIPTION |
|
|
CALL WRITESTR ; AND PRINT IT |
|
|
CALL WRITESTR ; AND PRINT IT |
|
|
; |
|
|
|
|
|
|
|
|
; |
|
|
LD A,(DEFDRIVE) ; GET DEFAULT DRIVE |
|
|
LD A,(DEFDRIVE) ; GET DEFAULT DRIVE |
|
|
LD (CDISK),A ; ... AND SETUP CDISK |
|
|
LD (CDISK),A ; ... AND SETUP CDISK |
|
|
; |
|
|
; |
|
|
@ -1997,7 +1997,7 @@ INIT2: |
|
|
CALL PRTDECB ; PRINT IT |
|
|
CALL PRTDECB ; PRINT IT |
|
|
CALL PC_PERIOD ; DECIMAL POINT |
|
|
CALL PC_PERIOD ; DECIMAL POINT |
|
|
LD A,0 + (((BDOS_LOC % 1024) * 100) / 1024) |
|
|
LD A,0 + (((BDOS_LOC % 1024) * 100) / 1024) |
|
|
CALL PRTDECB ; MANTISSA |
|
|
|
|
|
|
|
|
CALL PRTDECB ; MANTISSA |
|
|
LD DE,STR_TPA2 ; AND TPA SUFFIX |
|
|
LD DE,STR_TPA2 ; AND TPA SUFFIX |
|
|
CALL WRITESTR |
|
|
CALL WRITESTR |
|
|
CALL NEWLINE ; FORMATTING |
|
|
CALL NEWLINE ; FORMATTING |
|
|
@ -2510,7 +2510,7 @@ DRV_INIT3A: |
|
|
PUSH DE ; SAVE DE (HARD DISK VOLUME COUNTER) |
|
|
PUSH DE ; SAVE DE (HARD DISK VOLUME COUNTER) |
|
|
PUSH HL ; SAVE DRIVE LIST PTR |
|
|
PUSH HL ; SAVE DRIVE LIST PTR |
|
|
PUSH BC ; SAVE LOOP CONTROL |
|
|
PUSH BC ; SAVE LOOP CONTROL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LD B,BF_DIOMEDIA ; HBIOS FUNC: SENSE MEDIA |
|
|
LD B,BF_DIOMEDIA ; HBIOS FUNC: SENSE MEDIA |
|
|
LD E,1 ; PERFORM MEDIA DISCOVERY |
|
|
LD E,1 ; PERFORM MEDIA DISCOVERY |
|
|
RST 08 |
|
|
RST 08 |
|
|
@ -2518,9 +2518,9 @@ DRV_INIT3A: |
|
|
POP BC ; RESTORE LOOP CONTROL |
|
|
POP BC ; RESTORE LOOP CONTROL |
|
|
POP HL ; RESTORE DRIVE LIST PTR |
|
|
POP HL ; RESTORE DRIVE LIST PTR |
|
|
POP DE ; RESTORE DE |
|
|
POP DE ; RESTORE DE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RET NZ ; IF NO MEDIA, JUST RETURN |
|
|
RET NZ ; IF NO MEDIA, JUST RETURN |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; IF ACTIVE... |
|
|
; IF ACTIVE... |
|
|
LD (HL),C ; SAVE UNIT NUM IN LIST |
|
|
LD (HL),C ; SAVE UNIT NUM IN LIST |
|
|
INC HL ; BUMP PTR |
|
|
INC HL ; BUMP PTR |
|
|
@ -2677,7 +2677,7 @@ DPH_INIT1: |
|
|
CALL PRTDRV ; PRINT DRIVE INFO |
|
|
CALL PRTDRV ; PRINT DRIVE INFO |
|
|
LD A,D ; A := UNIT |
|
|
LD A,D ; A := UNIT |
|
|
PUSH HL ; SAVE DRIVE MAP POINTER |
|
|
PUSH HL ; SAVE DRIVE MAP POINTER |
|
|
DPH_INIT1A: |
|
|
|
|
|
|
|
|
DPH_INIT1A: |
|
|
LD DE,(DPHTOP) ; GET ADDRESS OF NEXT DPH |
|
|
LD DE,(DPHTOP) ; GET ADDRESS OF NEXT DPH |
|
|
PUSH DE ; ... AND SAVE IT |
|
|
PUSH DE ; ... AND SAVE IT |
|
|
; INVOKE THE DPH BUILD ROUTINE |
|
|
; INVOKE THE DPH BUILD ROUTINE |
|
|
@ -2776,7 +2776,7 @@ MAKDPH1: |
|
|
POP HL ; HL := START OF DPH |
|
|
POP HL ; HL := START OF DPH |
|
|
LD A,8 ; SIZE OF DPH RESERVED AREA |
|
|
LD A,8 ; SIZE OF DPH RESERVED AREA |
|
|
CALL ADDHLA ; LEAVE IT ALONE (ZERO FILLED) |
|
|
CALL ADDHLA ; LEAVE IT ALONE (ZERO FILLED) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LD BC,(DIRBUF) ; ADDRESS OF DIRBUF |
|
|
LD BC,(DIRBUF) ; ADDRESS OF DIRBUF |
|
|
LD (HL),C ; PLUG DIRBUF |
|
|
LD (HL),C ; PLUG DIRBUF |
|
|
INC HL ; ... INTO DPH |
|
|
INC HL ; ... INTO DPH |
|
|
@ -2813,7 +2813,7 @@ MAKDPH2: |
|
|
LD (HL),C ; SAVE CKS/ALS BUF |
|
|
LD (HL),C ; SAVE CKS/ALS BUF |
|
|
INC HL ; ... ADDRESS IN |
|
|
INC HL ; ... ADDRESS IN |
|
|
LD (HL),B ; ... DPH AND BUMP |
|
|
LD (HL),B ; ... DPH AND BUMP |
|
|
INC HL ; ... TO NEXT DPH ENTRY |
|
|
|
|
|
|
|
|
INC HL ; ... TO NEXT DPH ENTRY |
|
|
XOR A ; SIGNAL SUCCESS |
|
|
XOR A ; SIGNAL SUCCESS |
|
|
RET |
|
|
RET |
|
|
; |
|
|
; |
|
|
@ -2831,9 +2831,9 @@ ALLOC: |
|
|
EX DE,HL ; DE=NEW HEAPTOP, HL=HEAPLIM |
|
|
EX DE,HL ; DE=NEW HEAPTOP, HL=HEAPLIM |
|
|
SBC HL,DE ; HEAPLIM - HEAPTOP |
|
|
SBC HL,DE ; HEAPLIM - HEAPTOP |
|
|
JR C,ALLOCX ; C SET ON OVERFLOW ERROR |
|
|
JR C,ALLOCX ; C SET ON OVERFLOW ERROR |
|
|
; ALLOCATION SUCCEEDED, COMMIT NEW HEAPTOP |
|
|
|
|
|
|
|
|
; ALLOCATION SUCCEEDED, COMMIT NEW HEAPTOP |
|
|
LD (HEAPTOP),DE ; SAVE NEW HEAPTOP |
|
|
LD (HEAPTOP),DE ; SAVE NEW HEAPTOP |
|
|
ALLOCX: |
|
|
|
|
|
|
|
|
ALLOCX: |
|
|
POP HL ; RETURN VALUE TO HL |
|
|
POP HL ; RETURN VALUE TO HL |
|
|
POP DE ; RECOVER DE |
|
|
POP DE ; RECOVER DE |
|
|
RET |
|
|
RET |
|
|
@ -2862,15 +2862,15 @@ PRTDRV: |
|
|
PUSH BC ; PRESERVE BC |
|
|
PUSH BC ; PRESERVE BC |
|
|
PUSH DE ; PRESERVE DE |
|
|
PUSH DE ; PRESERVE DE |
|
|
PUSH HL ; PRESERVE HL |
|
|
PUSH HL ; PRESERVE HL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LD B,D ; B := UNIT |
|
|
LD B,D ; B := UNIT |
|
|
LD C,$48 ; UNA FUNC: GET DISK TYPE |
|
|
LD C,$48 ; UNA FUNC: GET DISK TYPE |
|
|
CALL $FFFD ; CALL UNA |
|
|
CALL $FFFD ; CALL UNA |
|
|
LD A,D ; DISK TYPE TO A |
|
|
LD A,D ; DISK TYPE TO A |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CP $40 |
|
|
CP $40 |
|
|
JR Z,PRTDRV1 ; IF SO, HANDLE RAM/ROM |
|
|
JR Z,PRTDRV1 ; IF SO, HANDLE RAM/ROM |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LD DE,DEVIDE ; IDE STRING |
|
|
LD DE,DEVIDE ; IDE STRING |
|
|
CP $41 ; IDE? |
|
|
CP $41 ; IDE? |
|
|
JR Z,PRTDRVX ; IF YES, PRINT |
|
|
JR Z,PRTDRVX ; IF YES, PRINT |
|
|
|