mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
Add Reboot menu option. Some optimizations of error message display
This commit is contained in:
@@ -54,10 +54,6 @@ INT_IM1 .EQU $FF00
|
||||
;
|
||||
DI ; NO INTERRUPTS
|
||||
LD SP,BL_STACK ; SETUP STACK
|
||||
;
|
||||
; BANNER
|
||||
LD DE,STR_BANNER
|
||||
CALL WRITESTR
|
||||
|
||||
;
|
||||
#IF (PLATFORM != PLT_UNA)
|
||||
@@ -110,15 +106,13 @@ INT_IM1 .EQU $FF00
|
||||
#ENDIF
|
||||
EI
|
||||
;
|
||||
; RUN THE BOOT LOADER MENU
|
||||
JP DOBOOTMENU
|
||||
;
|
||||
;__DOBOOT________________________________________________________________________________________________________________________
|
||||
;
|
||||
; PERFORM BOOT FRONT PANEL ACTION
|
||||
;________________________________________________________________________________________________________________________________
|
||||
; RUN THE BOOT LOADER MENU
|
||||
;
|
||||
|
||||
LD DE,STR_BANNER ; DISPLAY BOOT BANNER
|
||||
|
||||
DOBOOTMENU:
|
||||
CALL WRITESTR ; DISPLAY MESSAGE OR ERROR
|
||||
CALL NEWLINE
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
@@ -214,9 +208,9 @@ MENU_C: EX DE,HL
|
||||
; CHECK FOR DRIVE EXECUTION
|
||||
|
||||
CP '0' ; 0-9, DISK DEVICE
|
||||
JP C,DB_INVALID
|
||||
JR C,DB_INVALID
|
||||
CP '9' + 1
|
||||
JP NC,DB_INVALID
|
||||
JR NC,DB_INVALID
|
||||
SUB '0'
|
||||
JP GOBOOTDISK
|
||||
|
||||
@@ -229,6 +223,10 @@ MENU_X: CALL NEWLINE
|
||||
EX DE,HL
|
||||
JP (HL) ; JUMP TO THE ROUTINE TO EXECUTE IT
|
||||
|
||||
DB_INVALID:
|
||||
LD DE,STR_INVALID
|
||||
JP DOBOOTMENU
|
||||
|
||||
#DEFINE MENU_L(M1,M2,M3,M4,M5,M6,M7,M8,M9,M10) \
|
||||
#DEFCONT \ .DB M1
|
||||
#DEFCONT \ .DB M2
|
||||
@@ -247,33 +245,27 @@ MENU_S: MENU_L("MONITOR $$", "M", GOROM, BID_BIOSIMG, MON_SERIAL, 0A00h,
|
||||
MENU_1: MENU_L("CP/M $ $", "C", GOROM, BID_BIOSIMG, CPM_ENT, 1A00h, CPM_LOC, CPM_SIZ, BID_USR, "CP/M 80 2.2$ ")
|
||||
MENU_L("Z-SYSTEM $", "Z", GOROM, BID_BIOSIMG, CPM_ENT, 4A00h, CPM_LOC, CPM_SIZ, BID_USR, "ZSDOS V1.1 $ ")
|
||||
MENU_L("$ $", "E", GOROM, BID_BIOSIMG, EGG_LOC, 7A00h, EGG_LOC, EGG_SIZ, BID_USR, "Easter Egg $ ")
|
||||
MENU_L("FORTH $ $", "R", GOROMB, BID_OSIMG, FTH_LOC, 0000h, FTH_LOC, FTH_SIZ, BID_USR, "Camel Forth$ ")
|
||||
MENU_L("FORTH $ $", "F", GOROMB, BID_OSIMG, FTH_LOC, 0000h, FTH_LOC, FTH_SIZ, BID_USR, "Camel Forth$ ")
|
||||
MENU_L("BASIC $ $", "B", GOROMB, BID_OSIMG, BAS_LOC, 1700h, BAS_LOC, BAS_SIZ, BID_USR, "Nascom BASIC$")
|
||||
MENU_L("T-BASIC $$", "T", GOROMB, BID_OSIMG, TBC_LOC, 3700h, TBC_LOC, TBC_SIZ, BID_USR, "Tasty BASIC$ ")
|
||||
|
||||
#IF (DSKYENABLE)
|
||||
MENU_L("DSKY-MON $", "D", GOROM, BID_BIOSIMG, MON_DSKY, 0A00h, MON_LOC, MON_SIZ, BID_USR, DSKY Monitor$")
|
||||
#ENDIF
|
||||
|
||||
|
||||
.DB "REBOOT$ ", "R"
|
||||
.DW REBOOT
|
||||
|
||||
MENU_E:
|
||||
|
||||
MENU_V .EQU MENU_1-MENU_S ; LENGTH OF EACH MENU RECORD
|
||||
MENU_N .EQU (MENU_E-MENU_S)/MENU_V ; NUMBER OF MENU ITEMS
|
||||
;
|
||||
; BOOT OPTION PROCESSING
|
||||
MENU_N .EQU ((MENU_E-MENU_S)/MENU_V)+1; NUMBER OF MENU ITEMS
|
||||
;
|
||||
DB_INVALID:
|
||||
LD DE,STR_INVALID
|
||||
CALL WRITESTR
|
||||
JP DOBOOTMENU
|
||||
; BOOT OPTION PROCESSING
|
||||
;
|
||||
GOROM: EX DE,HL
|
||||
INC HL ; HL POINTS TO source-bank
|
||||
; LD A,(HL)
|
||||
; CP BID_BIOSIMG
|
||||
; JP Z,DOBOOTMENU; ONLY CURRENT BANK SUPPORTED
|
||||
|
||||
LD B,4 ;
|
||||
LD B,4 ; PUT NEXT FOUR ADDRESSES ON STACK
|
||||
GOROM_1:INC HL
|
||||
LD E,(HL)
|
||||
INC HL
|
||||
@@ -289,11 +281,8 @@ GOROM_1:INC HL
|
||||
|
||||
GOROMB: EX DE,HL
|
||||
INC HL ; HL POINTS TO source-bank
|
||||
; LD A,(HL)
|
||||
; CP BID_BIOSIMG
|
||||
; JP Z,DOBOOTMENU; ONLY CURRENT BANK SUPPORTED
|
||||
|
||||
LD B,4
|
||||
LD B,4 ; PUT NEXT FOUR ADDRESSES ON STACK
|
||||
GOROMB1:INC HL
|
||||
LD E,(HL)
|
||||
INC HL
|
||||
@@ -341,11 +330,16 @@ CHAIN: ; EXPECT EXEC ADDRESS ON TOP OF STACK
|
||||
HALT ; WE SHOULD NEVER RETURN!!!
|
||||
#ENDIF
|
||||
;
|
||||
; REBOOT ROMLDR
|
||||
;
|
||||
REBOOT: LD A,BID_BOOT ; BOOT BANK
|
||||
LD HL,0 ; ADDRESS ZERO
|
||||
CALL HB_BNKCALL ; DOES NOT RETURN
|
||||
|
||||
GOBOOTDISK:
|
||||
LD (BL_BOOTID),A
|
||||
LD DE,STR_BOOTDISK
|
||||
CALL WRITESTR
|
||||
; JP BOOTDISK
|
||||
;
|
||||
; BOOT FROM DISK DRIVE
|
||||
;
|
||||
@@ -538,23 +532,19 @@ BOOTDISK:
|
||||
DB_NODISK:
|
||||
; SELDSK DID NOT LIKE DRIVE SELECTION
|
||||
LD DE,STR_NODISK
|
||||
CALL WRITESTR
|
||||
JP DOBOOTMENU
|
||||
|
||||
DB_NOBOOT:
|
||||
; DISK IS NOT BOOTABLE
|
||||
LD DE,STR_NOBOOT
|
||||
CALL WRITESTR
|
||||
JP DOBOOTMENU
|
||||
|
||||
DB_ERR:
|
||||
; I/O ERROR DURING BOOT ATTEMPT
|
||||
LD DE,STR_BOOTERR
|
||||
CALL WRITESTR
|
||||
JP DOBOOTMENU
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
;
|
||||
;
|
||||
;__SEGDISPLAY________________________________________________________________________________________
|
||||
;
|
||||
@@ -777,7 +767,6 @@ DEV15 .EQU DEVUNK
|
||||
;
|
||||
STR_BOOTDISK .DB "BOOT FROM DISK\r\n$"
|
||||
STR_BOOTDISK1 .DB "\r\nReading disk information...$"
|
||||
;STR_LIST .DB "LIST DEVICES\r\n$"
|
||||
STR_INVALID .DB "INVALID SELECTION\r\n$"
|
||||
STR_SETUP .DB "SYSTEM SETUP\r\n$"
|
||||
STR_SIG .DB "SIGNATURE=$"
|
||||
@@ -785,13 +774,11 @@ STR_CPMLOC .DB "LOC=$"
|
||||
STR_CPMEND .DB "END=$"
|
||||
STR_CPMENT .DB "ENT=$"
|
||||
STR_LABEL .DB "LABEL=$"
|
||||
;STR_DRVLIST .DB "\r\nDisk Devices:\r\n$"
|
||||
STR_PREFIX .DB "($"
|
||||
STR_LOADING .DB "\r\nLoading...$"
|
||||
STR_NODISK .DB "\r\nNo disk!$"
|
||||
STR_NOBOOT .DB "\r\nDisk not bootable!$"
|
||||
STR_BOOTERR .DB "\r\nBoot failure!$"
|
||||
;STR_LAUNCH .DB "\r\nLaunching ...$"
|
||||
STR_BANNER .DB "\r\n", PLATFORM_NAME, " Boot Loader"
|
||||
STR_NL .DB "\r\n$"
|
||||
;
|
||||
|
||||
Reference in New Issue
Block a user