|
|
|
@ -302,7 +302,7 @@ BOOT: |
|
|
|
LD SP,STACK ; STACK FOR INITIALIZATION |
|
|
|
|
|
|
|
; |
|
|
|
; COPY INITIALIZATION CODE TO RUNNINT LOCATION $8000 |
|
|
|
; COPY INITIALIZATION CODE TO RUNNING LOCATION $8000 |
|
|
|
LD HL,BUFPOOL |
|
|
|
LD DE,$8000 |
|
|
|
LD BC,CBIOS_END - BUFPOOL |
|
|
|
@ -2014,7 +2014,7 @@ AUTOSUB: |
|
|
|
INC A ; CHECK FOR ERR, $FF --> $00 |
|
|
|
RET Z ; ERR, DO NOT ATTEMPT AUTO SUBMIT |
|
|
|
; |
|
|
|
LD HL,CMD ; ADDRESS OF STARTUP COMMAND |
|
|
|
LD HL,CMD ; ADDRESS OF STARTUP COMMANDs |
|
|
|
LD DE,CCP_LOC + 7 ; START OF COMMAND BUFFER IN CCP |
|
|
|
LD BC,CMDLEN ; LENGTH OF AUTOSTART COMMAND |
|
|
|
LDIR ; PATCH COMMAND LINE INTO CCP |
|
|
|
@ -2398,7 +2398,11 @@ DRV_INIT: |
|
|
|
LD (DRVMAPADR),HL ; SAVE AS DRVMAP ADDRESS |
|
|
|
LD (HEAPTOP),HL ; AND AS NEW HEAP TOP |
|
|
|
; |
|
|
|
; SETUP TO LOOP THROUGH AVAILABLE DEVICES |
|
|
|
; SETUP TO LOOP THROUGH AVAILABLE DEVICES BUILDING LIST OF |
|
|
|
; ACTIVE UNITS AND COUNTING NUMBER OF ACTIVE HARD DISK |
|
|
|
; DEVICES. NON-HARD DISK UNITS ARE ALWAYS CONSIDERED |
|
|
|
; ACTIVE, BUT HARD DISK UNITS ARE ONLY CONSIDERED ACTIVE |
|
|
|
; IF THERE IS MEDIA IN THE DRIVE. |
|
|
|
LD B,BF_SYSGET |
|
|
|
LD C,BF_SYSGET_DIOCNT |
|
|
|
RST 08 ; E := DISK UNIT COUNT |
|
|
|
@ -2408,31 +2412,76 @@ DRV_INIT: |
|
|
|
RET Z ; HANDLE ZERO DEVICES (ALBEIT POORLY) |
|
|
|
; |
|
|
|
; LOOP THRU DEVICES TO COUNT TOTAL HARD DISK VOLUMES |
|
|
|
PUSH BC ; SAVE THE DEVICE COUNT |
|
|
|
LD C,0 ; USE C AS DEVICE LIST INDEX |
|
|
|
LD E,0 ; INIT E FOR HARD DISK VOLUME COUNT |
|
|
|
LD C,0 ; INIT C AS DEVICE LIST INDEX |
|
|
|
LD D,0 ; INIT D AS TOTAL DEVICE COUNT |
|
|
|
LD E,0 ; INIT E FOR HARD DISK DEVICE COUNT |
|
|
|
LD HL,DRVLST ; INIT HL PTR TO DRIVE LIST |
|
|
|
; |
|
|
|
DRV_INIT2: |
|
|
|
PUSH BC ; SAVE LOOP CONTROL |
|
|
|
CALL DRV_INIT3 ; CHECK DRIVE |
|
|
|
POP BC ; RESTORE LOOP CONTROL |
|
|
|
INC C ; NEXT UNIT |
|
|
|
DJNZ DRV_INIT2 ; LOOP |
|
|
|
POP BC ; RESTORE UNIT COUNT IN B |
|
|
|
LD A,D ; TOTAL DEVICE COUNT TO D |
|
|
|
LD (DRVLSTC),A ; SAVE THE COUNT |
|
|
|
JR DRV_INIT4 ; CONTINUE |
|
|
|
; |
|
|
|
DRV_INIT3: |
|
|
|
PUSH DE ; SAVE DE (HARD DISK VOLUME COUNTER) |
|
|
|
PUSH HL ; SAVE DRIVE LIST PTR |
|
|
|
PUSH BC ; SAVE LOOP CONTROL |
|
|
|
LD B,BF_DIODEVICE ; HBIOS FUNC: REPORT DEVICE INFO |
|
|
|
RST 08 ; CALL HBIOS, UNIT TO C |
|
|
|
LD A,D ; DEVICE TYPE TO A |
|
|
|
POP BC ; RESTORE LOOP CONTROL |
|
|
|
POP HL ; RESTORE DRIVE LIST PTR |
|
|
|
POP DE ; RESTORE DE |
|
|
|
CP DIODEV_IDE ; HARD DISK DEVICE? |
|
|
|
RET C ; NOPE, RETURN |
|
|
|
JR NC,DRV_INIT3A ; IF SO, HANDLE SPECIAL |
|
|
|
LD (HL),C ; SAVE UNIT NUM IN LIST |
|
|
|
INC HL ; BUMP PTR |
|
|
|
INC D ; INC TOTAL DEVICE COUNT |
|
|
|
RET |
|
|
|
; |
|
|
|
DRV_INIT3A: |
|
|
|
; CHECK FOR ACTIVE AND RETURN IF NOT |
|
|
|
PUSH DE ; SAVE DE (HARD DISK VOLUME COUNTER) |
|
|
|
PUSH HL ; SAVE DRIVE LIST PTR |
|
|
|
PUSH BC ; SAVE LOOP CONTROL |
|
|
|
|
|
|
|
LD B,BF_DIOMEDIA ; HBIOS FUNC: SENSE MEDIA |
|
|
|
LD E,1 ; PERFORM MEDIA DISCOVERY |
|
|
|
RST 08 |
|
|
|
|
|
|
|
POP BC ; RESTORE LOOP CONTROL |
|
|
|
POP HL ; RESTORE DRIVE LIST PTR |
|
|
|
POP DE ; RESTORE DE |
|
|
|
|
|
|
|
RET NZ ; IF NO MEDIA, JUST RETURN |
|
|
|
|
|
|
|
; IF ACTIVE... |
|
|
|
LD (HL),C ; SAVE UNIT NUM IN LIST |
|
|
|
INC HL ; BUMP PTR |
|
|
|
INC D ; INC TOTAL DEVICE COUNT |
|
|
|
INC E ; INCREMENT HARD DISK COUNT |
|
|
|
RET ; AND RETURN |
|
|
|
; |
|
|
|
DRV_INIT4: ; SET SLICES PER VOLUME (HDSPV) BASED ON HARD DISK VOLUME COUNT |
|
|
|
|
|
|
|
; ; *** DEBUG *** |
|
|
|
; CALL NEWLINE2 |
|
|
|
; LD A,(DRVLSTC) |
|
|
|
; LD B,A |
|
|
|
; CALL PRTHEXBYTE |
|
|
|
; LD A,' ' |
|
|
|
; CALL COUT |
|
|
|
; LD HL,DRVLST |
|
|
|
;TEMP1: |
|
|
|
; LD A,(HL) |
|
|
|
; INC HL |
|
|
|
; CALL PRTHEXBYTE |
|
|
|
; DJNZ TEMP1 |
|
|
|
; ; *** DEBUG *** |
|
|
|
|
|
|
|
LD A,E ; HARD DISK VOLUME COUNT TO A |
|
|
|
LD E,8 ; ASSUME 8 SLICES PER VOLUME |
|
|
|
DEC A ; DEC ACCUM TO CHECK FOR COUNT = 1 |
|
|
|
@ -2446,14 +2495,20 @@ DRV_INIT5: |
|
|
|
LD A,E ; SLICES PER VOLUME VALUE TO ACCUM |
|
|
|
LD (HDSPV),A ; SAVE IT |
|
|
|
; |
|
|
|
; SETUP TO ENUMERATE DEVICES TO BUILD DRVMAP |
|
|
|
LD B,BF_SYSGET |
|
|
|
LD C,BF_SYSGET_DIOCNT |
|
|
|
RST 08 ; E := DISK UNIT COUNT |
|
|
|
LD B,E ; COUNT TO B |
|
|
|
LD C,0 ; USE C AS DEVICE LIST INDEX |
|
|
|
; ; SETUP TO ENUMERATE DEVICES TO BUILD DRVMAP |
|
|
|
; LD B,BF_SYSGET |
|
|
|
; LD C,BF_SYSGET_DIOCNT |
|
|
|
; RST 08 ; E := DISK UNIT COUNT |
|
|
|
; LD B,E ; COUNT TO B |
|
|
|
; LD C,0 ; USE C AS DEVICE LIST INDEX |
|
|
|
; |
|
|
|
LD A,(DRVLSTC) ; ACTIVE DRIVE LIST COUNT TO ACCUM |
|
|
|
LD B,A ; ... AND MOVE TO B FOR LOOP COUNTER |
|
|
|
LD HL,DRVLST ; HL IS PTR TO ACTIVE DRIVE LIST |
|
|
|
; |
|
|
|
DRV_INIT6: ; LOOP THRU ALL UNITS AVAILABLE |
|
|
|
PUSH HL ; PRESERVE DRIVE LIST PTR |
|
|
|
LD C,(HL) ; GET UNIT NUM FROM LIST |
|
|
|
PUSH BC ; PRESERVE LOOP CONTROL |
|
|
|
LD B,BF_DIODEVICE ; HBIOS FUNC: REPORT DEVICE INFO |
|
|
|
RST 08 ; CALL HBIOS, D := DEVICE TYPE |
|
|
|
@ -2462,6 +2517,8 @@ DRV_INIT6: ; LOOP THRU ALL UNITS AVAILABLE |
|
|
|
CALL DRV_INIT7 ; MAKE DRIVE MAP ENTRY(S) |
|
|
|
POP BC ; RESTORE LOOP CONTROL |
|
|
|
INC C ; INCREMENT LIST INDEX |
|
|
|
POP HL ; RESTORE DRIVE LIST PTR |
|
|
|
INC HL ; INCREMENT ACTIVE DRIVE LIST PTR |
|
|
|
DJNZ DRV_INIT6 ; LOOP AS NEEDED |
|
|
|
RET ; FINISHED |
|
|
|
; |
|
|
|
@ -2880,6 +2937,8 @@ HEAPTOP .DW BUFPOOL ; CURRENT TOP OF HEAP |
|
|
|
BOOTVOL .DW 0 ; BOOT VOLUME, MSB=BOOT UNIT, LSB=BOOT SLICE |
|
|
|
BNKRAMD .DB 0 ; STARTING BANK ID FOR RAM DRIVE |
|
|
|
HDSPV .DB 2 ; SLICES PER VOLUME FOR HARD DISKS (MUST BE >= 1) |
|
|
|
DRVLST .FILL 32 ; ACTIVE DRIVE LIST USED DURINT DRV_INIT |
|
|
|
DRVLSTC .DB 0 ; ENTRY COUNT FOR ACTIVE DRIVE LIST |
|
|
|
; |
|
|
|
CMD .DB CMDLEN - 2 |
|
|
|
.TEXT "SUBMIT PROFILE" |
|
|
|
|