mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:33:12 -06:00
Drive letter assignment enhancement
Drive letters are now only pre-assigned to hard disk type devices that have media inserted. Media can still be inserted on-the-fly and drive letters assigned using ASSIGN.
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
#DEFINE RMN 9
|
||||
#DEFINE RUP 2
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "2.9.2-pre.28"
|
||||
#DEFINE BIOSVER "2.9.2-pre.29"
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
#DEFINE RMN 9
|
||||
#DEFINE RUP 2
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "2.9.2-pre.28"
|
||||
#DEFINE BIOSVER "2.9.2-pre.29"
|
||||
|
||||
@@ -3,5 +3,5 @@ rmn equ 9
|
||||
rup equ 2
|
||||
rtp equ 0
|
||||
biosver macro
|
||||
db "2.9.2-pre.28"
|
||||
db "2.9.2-pre.29"
|
||||
endm
|
||||
|
||||
@@ -140,7 +140,7 @@ Function Concat($InputFileList, $OutputFile)
|
||||
|
||||
#
|
||||
# Since TASM has no mechanism to include files dynamically based on variables, a file
|
||||
# if built on-the-fly here for imbedding in the build process. This file is basically
|
||||
# is built on-the-fly here for imbedding in the build process. This file is basically
|
||||
# just used to include the platform and config files. It also passes in some values
|
||||
# from the build to include in the build.
|
||||
|
||||
|
||||
@@ -990,14 +990,17 @@ PPIDE_RESET:
|
||||
LD DE,150000/16 ; ~???MS
|
||||
CALL VDELAY
|
||||
;
|
||||
CALL PPIDE_INITUNIT ; INIT CURRENT UNIT
|
||||
; INITIALIZE THE INDIVIDUAL UNITS (MASTER AND SLAVE).
|
||||
; BASED ON TESTING, IT APPEARS THAT THE MASTER UNIT MUST
|
||||
; BE DONE FIRST OR THIS BEHAVES BADLY.
|
||||
PUSH IY ; SAVE CFG PTR
|
||||
CALL PPIDE_GOPARTNER ; POINT TO PARTNER
|
||||
BIT 0,(IY+PPIDE_ACC) ; MASTER?
|
||||
CALL Z,PPIDE_GOPARTNER ; IF NOT, SWITCH TO MASTER
|
||||
CALL PPIDE_INITUNIT ; INIT CURRENT UNIT
|
||||
CALL PPIDE_GOPARTNER ; POINT TO SLAVE
|
||||
CALL PPIDE_INITUNIT ; INIT PARTNER UNIT
|
||||
POP IY ; RECOVER ORIG CFG PTR
|
||||
;
|
||||
RET
|
||||
|
||||
;
|
||||
;
|
||||
;
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
#DEFINE RMN 9
|
||||
#DEFINE RUP 2
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "2.9.2-pre.28"
|
||||
#DEFINE BIOSVER "2.9.2-pre.29"
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
#DEFINE RMN 9
|
||||
#DEFINE RUP 2
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "2.9.2-pre.28"
|
||||
#DEFINE BIOSVER "2.9.2-pre.29"
|
||||
|
||||
Reference in New Issue
Block a user