mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:13:13 -06:00
Multi-boot fixes
This commit is contained in:
@@ -1886,10 +1886,6 @@ INIT:
|
||||
LD A,DEF_IOBYTE ; LOAD DEFAULT IOBYTE
|
||||
LD (IOBYTE),A ; STORE IT
|
||||
|
||||
; INIT DEFAULT DRIVE TO A: FOR NOW
|
||||
XOR A ; ZERO
|
||||
LD (DEFDRIVE),A ; STORE IT
|
||||
|
||||
; CBIOS BANNER
|
||||
CALL NEWLINE2 ; FORMATTING
|
||||
LD DE,STR_BANNER ; POINT TO BANNER
|
||||
@@ -1998,23 +1994,49 @@ AUTOSUB:
|
||||
;
|
||||
; SETUP AUTO SUBMIT COMMAND (IF REQUIRED FILES EXIST)
|
||||
LD A,(DEFDRIVE) ; GET DEFAULT DRIVE
|
||||
|
||||
;CALL PRTHEXBYTE
|
||||
|
||||
PUSH AF
|
||||
|
||||
INC A ; CONVERT FROM DRIVE NUM TO FCB DRIVE CODE
|
||||
LD (FCB_SUB),A ; SET DRIVE OF SUBMIT.COM FCB
|
||||
LD (FCB_PRO),A ; SET DRIVE OF PROFILE.SUB FCB
|
||||
;
|
||||
LD C,13 ; RESET DISK SYSTEM
|
||||
CALL BDOS
|
||||
|
||||
;CALL PC_PERIOD
|
||||
|
||||
POP AF
|
||||
;
|
||||
;DEC A ; BACK TO ZERO INDEX
|
||||
|
||||
;LD E,A ; PUT IN E
|
||||
;LD C,14 ; SELECT DISK FUNCTION
|
||||
;CALL BDOS ; DO IT
|
||||
|
||||
;CALL PC_PERIOD
|
||||
;
|
||||
LD C,17 ; BDOS FUNCTION: FIND FIRST
|
||||
LD DE,FCB_SUB ; CHECK FOR SUBMIT.COM
|
||||
CALL BDOS ; INVOKE BDOS TO LOOK FOR FILE
|
||||
|
||||
;CALL PRTHEXBYTE
|
||||
|
||||
INC A ; CHECK FOR ERR, $FF --> $00
|
||||
RET Z ; ERR, DO NOT ATTEMPT AUTO SUBMIT
|
||||
;
|
||||
LD C,17 ; BDOS FUNCTION: FIND FIRST
|
||||
LD DE,FCB_PRO ; CHECK FOR PROFILE.SUB
|
||||
CALL BDOS ; INVOKE BDOS TO LOOK FOR FILE
|
||||
|
||||
;CALL PRTHEXBYTE
|
||||
|
||||
INC A ; CHECK FOR ERR, $FF --> $00
|
||||
RET Z ; ERR, DO NOT ATTEMPT AUTO SUBMIT
|
||||
;
|
||||
LD HL,CMD ; ADDRESS OF STARTUP COMMANDs
|
||||
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
|
||||
@@ -2273,6 +2295,9 @@ CLRRAM3:
|
||||
#IFDEF PLTUNA
|
||||
;
|
||||
DRV_INIT:
|
||||
; INIT DEFAULT DRIVE TO A: FOR NOW
|
||||
XOR A ; ZERO
|
||||
LD (DEFDRIVE),A ; STORE IT
|
||||
;
|
||||
; PERFORM UBIOS SPECIFIC INITIALIZATION
|
||||
; BUILD DRVMAP BASED ON AVAILABLE UBIOS DISK DEVICE LIST
|
||||
@@ -2391,6 +2416,14 @@ 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
|
||||
@@ -2502,6 +2535,14 @@ DRV_INIT5:
|
||||
; LD B,E ; COUNT TO B
|
||||
; LD C,0 ; USE C AS DEVICE LIST INDEX
|
||||
;
|
||||
LD DE,(HCB + HCB_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
|
||||
;
|
||||
DRV_INIT5A:
|
||||
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
|
||||
@@ -2532,7 +2573,21 @@ DRV_INIT7: ; PROCESS UNIT
|
||||
LD A,(HDSPV) ; GET SLICES PER VOLUME TO ACCUM
|
||||
LD B,A ; MOVE TO B FOR LOOP COUNTER
|
||||
;
|
||||
DRV_INIT8: ; SLICE CREATION LOOP
|
||||
DRV_INIT8:
|
||||
; SLICE CREATION LOOP
|
||||
; DE=UNIT/SLICE, B=SLICE CNT
|
||||
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
|
||||
CP E ; COMPARE TO CUR SLICE
|
||||
JR NZ,DRV_INIT8A ; IF NE, OK TO CONTINUE
|
||||
INC E ; IS BOOT DU/SLICE, SKIP IT
|
||||
JR DRV_INIT8 ; AND RESTART LOOP
|
||||
;
|
||||
DRV_INIT8A: ; ENTRY POINT TO SKIP BOOT DISK/LU CHECK
|
||||
;
|
||||
; INC DRVMAP ENTRY COUNT AND ENFORCE FOR 16 ENTRY MAXIMUM
|
||||
LD HL,(DRVMAPADR) ; POINT TO DRIVE MAP
|
||||
@@ -2615,20 +2670,20 @@ DPH_INIT1:
|
||||
CALL PRTDRV ; PRINT DRIVE INFO
|
||||
LD A,D ; A := UNIT
|
||||
PUSH HL ; SAVE DRIVE MAP POINTER
|
||||
PUSH AF ; SAVE UNIT
|
||||
; MATCH AND SAVE DEFAULT DRIVE BASED ON BOOT UNIT/SLICE
|
||||
LD HL,BOOTVOL + 1 ; POINT TO BOOT UNIT
|
||||
LD A,D ; LOAD CURRENT UNIT
|
||||
CP (HL) ; MATCH?
|
||||
JR NZ,DPH_INIT1A ; BYPASS IF NOT BOOT UNIT
|
||||
DEC HL ; POINT TO BOOT SLICE
|
||||
LD A,E ; LOAD CURRENT SLICE
|
||||
CP (HL) ; MATCH?
|
||||
JR NZ,DPH_INIT1A ; BYPASS IF NOT BOOT SLICE
|
||||
LD A,C ; LOAD THE CURRENT DRIVE NUM
|
||||
LD (DEFDRIVE),A ; SAVE AS DEFAULT
|
||||
;PUSH AF ; SAVE UNIT
|
||||
;; MATCH AND SAVE DEFAULT DRIVE BASED ON BOOT UNIT/SLICE
|
||||
;LD HL,BOOTVOL + 1 ; POINT TO BOOT UNIT
|
||||
;LD A,D ; LOAD CURRENT UNIT
|
||||
;CP (HL) ; MATCH?
|
||||
;JR NZ,DPH_INIT1A ; BYPASS IF NOT BOOT UNIT
|
||||
;DEC HL ; POINT TO BOOT SLICE
|
||||
;LD A,E ; LOAD CURRENT SLICE
|
||||
;CP (HL) ; MATCH?
|
||||
;JR NZ,DPH_INIT1A ; BYPASS IF NOT BOOT SLICE
|
||||
;LD A,C ; LOAD THE CURRENT DRIVE NUM
|
||||
;LD (DEFDRIVE),A ; SAVE AS DEFAULT
|
||||
DPH_INIT1A:
|
||||
POP AF ; RESTORE UNIT
|
||||
;POP AF ; RESTORE UNIT
|
||||
LD DE,(DPHTOP) ; GET ADDRESS OF NEXT DPH
|
||||
PUSH DE ; ... AND SAVE IT
|
||||
; INVOKE THE DPH BUILD ROUTINE
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
#DEFINE RMN 9
|
||||
#DEFINE RUP 2
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "2.9.2-pre.31"
|
||||
#DEFINE BIOSVER "2.9.2-pre.32"
|
||||
|
||||
Reference in New Issue
Block a user