@ -2174,23 +2174,42 @@ INIT2:
# IFDEF PLTWBW
;
; IF WE HAVE MULTIPLE DRIVES AND THE FIRST DRIVE IS RAM DRIVE
; AND THE SECOND DRIVE IS ROM DRIVE OR FLASH DRIVE
; THEN MAKE OUR DEFAULT STARTUP DRIVE THE SECOND DRIVE (B:)
;
; CHECK FOR 2+ DRIVES
LD HL ,( DRVMAPADR ) ; POINT TO DRIVE MAP
DEC HL ; BUMP BACK TO DRIVE COUNT
LD A ,( HL ) ; GET IT
CP 2 ; COMPARE TO 2
JR C , INIT2X ; IF LESS THAN 2, THEN DONE
;
; CHECK IF FIRST UNIT IS RAM
LD B , BF_DIODEVICE ; HBIOS FUNC: REPORT DEVICE INFO
INC HL ; POINT TO UNIT FIELD
LD C ,( HL ) ; ... OF FIRST DRIVE
INC HL ; POINT TO UNIT FIELD OF FIRST DRIVE
LD C ,( HL ) ; PUT UNIT NUM IN C
RST 08 ; CALL HBIOS
LD A , D ; DEVICE TYPE TO A
CP DI ODEV_MD ; MEMORY DISK DEVICE?
JR NZ , INIT2X ; IF NOT, THEN DONE
LD A , C ; GET ATTRIBUTES
AND % 00111000 ; ISOLATE TYPE BITS
CP % 00101000 ; TYPE = RAM?
JR NZ , INIT2X ; IF NOT THEN DONE
;
; CHECK IF SECOND UNIT IS ROM OR FLASH
LD B , BF_DIODEVICE ; HBIOS FUNC: REPORT DEVICE INFO
LD HL ,( DRVMAPADR ) ; POINT TO DRIVE MAP
LD A , 4 ; 4 BYTES PER ENTRY
CALL ADDHLA ; POINT TO UNIT FIELD OF SECOND DRIVE
LD C ,( HL ) ; PUT UNIT NUM IN C
RST 08 ; CALL HBIOS
LD A , C ; GET ATTRIBUTES
AND % 00111000 ; ISOLATE TYPE BITS
CP % 00100000 ; TYPE = ROM?
JR Z , INIT2A ; IF SO, ADJUST DEF DRIVE
CP % 00111000 ; TYPE = FLASH?
JR NZ , INIT2X ; IF NOT THEN DONE
;
INIT2A:
; CRITERIA MET, ADJUST DEF DRIVE TO B:
LD A , 1 ; USE SECOND DRIVE AS DEFAULT
LD ( DEFDRIVE ), A ; RECORD DEFAULT DRIVE
;
@ -2712,14 +2731,6 @@ DRV_INIT:
; GET BOOT UNIT/SLICE INFO
LD DE ,( HCB + HCB_BOOTVOL ) ; BOOT VOLUME (UNIT, SLICE)
LD ( BOOTVOL ), DE ; D -> UNIT, E -> SLICE
;;
; ; INIT DEFAULT
; LD A,D ; BOOT UNIT?
; CP 1 ; IF ROM BOOT, DEF DRIVE SHOULD BE B:
; JR Z,DRV_INIT1 ; ... SO LEAVE AS IS AND SKIP AHEAD
; XOR A ; ELSE FORCE TO DRIVE A:
;DRV_INIT1:
; LD (DEFDRIVE),A ; STORE IT
;
; SETUP THE DRVMAP STRUCTURE
LD HL ,( HEAPTOP ) ; GET CURRENT HEAP TOP
@ -2808,11 +2819,8 @@ DRV_INIT5:
LD A , E ; SLICES PER VOLUME VALUE TO ACCUM
LD ( HDSPV ), A ; SAVE IT
LD DE ,( BOOTVOL ) ; BOOT VOLUME (UNIT, SLICE)
LD A , 1 ; ROM DISK UNIT?
CP D ; CHECK IT
JR Z , DRV_INIT5A ; IF SO, SKIP BOOT DRIVE
LD B , 1 ; JUST ONE SLICE PLEASE
CALL DRV_INIT8A ; DO THE BOOT DEVICE
CALL DRV_INIT8A ; DO THE BOOT UNIT & SLICE FIRST
;
DRV_INIT5A:
LD A ,( DRVLSTC ) ; ACTIVE DRIVE LIST COUNT TO ACCUM
@ -2848,9 +2856,10 @@ DRV_INIT7: ; PROCESS UNIT
DRV_INIT8:
; SLICE CREATION LOOP
; DE=UNIT/SLICE, B=SLICE CNT
;
; FIRST, CHECK TO SEE IF THIS IS THE BOOT VOL & SLICE.
; IF SO, IT HAS ALREADY BEEN PROCESSED ABOVE, SO SKIP IT HERE.
LD A ,( BOOTVOL + 1 ) ; GET BOOT UNIT
CP 1 ; ROM BOOT?
JR Z , DRV_INIT8A ; IF SO, OK TO CONTINUE
CP D ; COMPARE TO CUR UNIT
JR NZ , DRV_INIT8A ; IF NE, OK TO CONTINUE
LD A ,( BOOTVOL ) ; GET BOOT SLICE