|
|
@ -308,6 +308,7 @@ MATS2: LD B,0 ; WE GOT A MATCH FROM THE MENU TABLE. POINT |
|
|
; |
|
|
; |
|
|
MATD: LD B,A |
|
|
MATD: LD B,A |
|
|
LD A,C ; IF INPUT WAS SERIAL |
|
|
LD A,C ; IF INPUT WAS SERIAL |
|
|
|
|
|
LD (BL_INPFLG),A ; SAVE INPUT FLAG |
|
|
DEC C ; CONVERT TO FROM. |
|
|
DEC C ; CONVERT TO FROM. |
|
|
LD A,B ; ASCII TO DECIMAL. |
|
|
LD A,B ; ASCII TO DECIMAL. |
|
|
JR Z,MATD1 ; DSKY NUMBERS ARE |
|
|
JR Z,MATD1 ; DSKY NUMBERS ARE |
|
|
@ -562,9 +563,53 @@ GOROM2: LD B,BF_SYSSETCPY ; HBIOS FUNC: SETUP BANK COPY |
|
|
;================================================================================================== |
|
|
;================================================================================================== |
|
|
; |
|
|
; |
|
|
GOBOOTDISK: |
|
|
GOBOOTDISK: |
|
|
LD (BL_BOOTID),A |
|
|
|
|
|
|
|
|
LD (BL_BOOTID),A ; SAVE INCOMING BOOTID |
|
|
|
|
|
; |
|
|
|
|
|
; SET THE INITIAL BOOT UNIT AND SLICE |
|
|
|
|
|
;LD A,(BL_BOOTID) ; GET BOOTID |
|
|
|
|
|
LD (BL_DEVICE),A ; STORE IT |
|
|
|
|
|
XOR A ; LU DEFAULTS TO 0 |
|
|
|
|
|
LD (BL_LU),A ; STORE IT |
|
|
|
|
|
; |
|
|
|
|
|
#IF (BIOS == BIOS_WBW) |
|
|
|
|
|
; |
|
|
|
|
|
LD A,(BL_INPFLG) ; GET INPUT FLAG |
|
|
|
|
|
CP 1 ; DSKY? |
|
|
|
|
|
JR Z,GOBOOTDISK1 ; IF SO, SLICE 0 IS ASSUMED |
|
|
|
|
|
; |
|
|
|
|
|
LD A,(BL_DEVICE) ; GET BOOT DEVICE |
|
|
|
|
|
LD C,A ; PUT IN C |
|
|
|
|
|
LD B,BF_DIODEVICE ; HBIOS: DIO DEVICE FUNC |
|
|
|
|
|
RST 08 |
|
|
|
|
|
LD A,D ; DEVICE TYPE TO A |
|
|
|
|
|
CP DIODEV_IDE ; HARD DISK DEVICE? |
|
|
|
|
|
JR C,GOBOOTDISK1 ; NOT SLICE WORTHY, SKIP AHEAD |
|
|
|
|
|
; |
|
|
|
|
|
LD DE,STR_SLICESEL ; SLICE SELECTION STRING |
|
|
|
|
|
CALL WRITESTR ; DISPLAY IT |
|
|
|
|
|
CALL CINUC ; GET THE KEY |
|
|
|
|
|
CALL COUT ; ECHO KEY |
|
|
|
|
|
; |
|
|
|
|
|
LD DE,STR_INVALID ; SETUP IN CASE OF INVALID |
|
|
|
|
|
CP 13 ; ENTER? |
|
|
|
|
|
JR Z,GOBOOTDISK1 ; IF SO, DONE |
|
|
|
|
|
CP '0' ; START OF RANGE? |
|
|
|
|
|
JP C,MENU ; BACK TO MENU IF TOO LOW |
|
|
|
|
|
CP '9' + 1 ; END OF RANGE |
|
|
|
|
|
JP NC,MENU ; BACK TO MENU IF TOO HIGH |
|
|
|
|
|
SUB '0' ; CONVERT TO BINARY |
|
|
|
|
|
LD (BL_LU),A ; AND SAVE IT |
|
|
|
|
|
GOBOOTDISK1: |
|
|
|
|
|
; |
|
|
|
|
|
#ENDIF |
|
|
|
|
|
; |
|
|
LD DE,STR_BOOTDISK |
|
|
LD DE,STR_BOOTDISK |
|
|
CALL WRITESTR |
|
|
CALL WRITESTR |
|
|
|
|
|
LD A,(BL_DEVICE) |
|
|
|
|
|
CALL PRTDECB |
|
|
|
|
|
LD DE,STR_BOOTDISK1 |
|
|
|
|
|
CALL WRITESTR |
|
|
|
|
|
LD A,(BL_LU) |
|
|
CALL PRTDECB |
|
|
CALL PRTDECB |
|
|
PRTS("...$") |
|
|
PRTS("...$") |
|
|
#IF (DSKYENABLE) |
|
|
#IF (DSKYENABLE) |
|
|
@ -572,7 +617,7 @@ GOBOOTDISK: |
|
|
CALL DSKY_SHOWSEG ; DISPLAY MESSAGE |
|
|
CALL DSKY_SHOWSEG ; DISPLAY MESSAGE |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
LD DE,STR_BOOTDISK1 ; DISK BOOT MESSAGE |
|
|
|
|
|
|
|
|
LD DE,STR_BOOTREAD ; DISK BOOT MESSAGE |
|
|
CALL WRITESTR ; PRINT IT |
|
|
CALL WRITESTR ; PRINT IT |
|
|
; |
|
|
; |
|
|
#IF (BIOS == BIOS_UNA) |
|
|
#IF (BIOS == BIOS_UNA) |
|
|
@ -601,12 +646,6 @@ GOBOOTDISK: |
|
|
POP AF ; RESTORE BOOT DEVICE |
|
|
POP AF ; RESTORE BOOT DEVICE |
|
|
CP E ; CHECK MAX (INDEX - COUNT) |
|
|
CP E ; CHECK MAX (INDEX - COUNT) |
|
|
JP NC,DB_NODISK ; HANDLE INVALID SELECTION |
|
|
JP NC,DB_NODISK ; HANDLE INVALID SELECTION |
|
|
; |
|
|
|
|
|
; SET THE BOOT UNIT AND SLICE |
|
|
|
|
|
LD A,(BL_BOOTID) ; GET BOOTID |
|
|
|
|
|
LD (BL_DEVICE),A ; STORE IT |
|
|
|
|
|
XOR A ; LU ALWAYS ZERO |
|
|
|
|
|
LD (BL_LU),A ; STORE IT |
|
|
|
|
|
; |
|
|
; |
|
|
; SENSE MEDIA |
|
|
; SENSE MEDIA |
|
|
LD A,(BL_DEVICE) ; GET DEVICE/UNIT |
|
|
LD A,(BL_DEVICE) ; GET DEVICE/UNIT |
|
|
@ -938,14 +977,16 @@ DEV15 .EQU DEVUNK |
|
|
; |
|
|
; |
|
|
STR_BANNER .DB "\r\n\r\n", PLATFORM_NAME, " Boot Loader$" |
|
|
STR_BANNER .DB "\r\n\r\n", PLATFORM_NAME, " Boot Loader$" |
|
|
STR_BOOTSEL .DB "\r\n\r\nBoot Selection? $" |
|
|
STR_BOOTSEL .DB "\r\n\r\nBoot Selection? $" |
|
|
|
|
|
STR_SLICESEL .DB " Slice(0-9)[0]? $" |
|
|
STR_BOOTDISK .DB "\r\n\r\nBooting Disk Unit $" |
|
|
STR_BOOTDISK .DB "\r\n\r\nBooting Disk Unit $" |
|
|
|
|
|
STR_BOOTDISK1 .DB ", Slice $" |
|
|
STR_BOOTROM .DB "\r\n\r\nLoading $" |
|
|
STR_BOOTROM .DB "\r\n\r\nLoading $" |
|
|
STR_REBOOT .DB "\r\n\r\nRestarting System...$" |
|
|
STR_REBOOT .DB "\r\n\r\nRestarting System...$" |
|
|
STR_INVALID .DB "\r\n\r\n*** Invalid Selection ***$" |
|
|
STR_INVALID .DB "\r\n\r\n*** Invalid Selection ***$" |
|
|
STR_NODISK .DB "\r\n\r\nNo disk!$" |
|
|
STR_NODISK .DB "\r\n\r\nNo disk!$" |
|
|
STR_NOBOOT .DB "\r\n\r\nDisk not bootable!$" |
|
|
STR_NOBOOT .DB "\r\n\r\nDisk not bootable!$" |
|
|
STR_BOOTERR .DB "\r\n\r\nBoot failure!$" |
|
|
STR_BOOTERR .DB "\r\n\r\nBoot failure!$" |
|
|
STR_BOOTDISK1 .DB "\r\n\r\nReading disk information...$" |
|
|
|
|
|
|
|
|
STR_BOOTREAD .DB "\r\n\r\nReading disk information...$" |
|
|
STR_LOADING .DB "\r\n\r\nLoading...$" |
|
|
STR_LOADING .DB "\r\n\r\nLoading...$" |
|
|
; |
|
|
; |
|
|
#IF (DSKYENABLE) |
|
|
#IF (DSKYENABLE) |
|
|
@ -1132,6 +1173,7 @@ SLACK: .EQU ($8000 + LDR_SIZ - $) |
|
|
.DS 64 ; 32 LEVEL STACK |
|
|
.DS 64 ; 32 LEVEL STACK |
|
|
BL_STACK .EQU $ ; ... TOP IS HERE |
|
|
BL_STACK .EQU $ ; ... TOP IS HERE |
|
|
; |
|
|
; |
|
|
|
|
|
BL_INPFLG .DS 1 ; INPUT FLAG, 1=DSKY, 2=SERIAL |
|
|
BL_COUNT .DS 1 ; LOAD COUNTER |
|
|
BL_COUNT .DS 1 ; LOAD COUNTER |
|
|
BL_TIMEOUT .DS 2 ; AUTOBOOT TIMEOUT COUNTDOWN COUNTER |
|
|
BL_TIMEOUT .DS 2 ; AUTOBOOT TIMEOUT COUNTDOWN COUNTER |
|
|
BL_BOOTID .DS 1 ; BOOT DEVICE ID CHOSEN BY USER |
|
|
BL_BOOTID .DS 1 ; BOOT DEVICE ID CHOSEN BY USER |
|
|
|