Browse Source

Add Reboot menu option. Some optimizations of error message display

pull/17/head
b1ackmai1er 7 years ago
committed by GitHub
parent
commit
7c302ba456
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 65
      Source/HBIOS/romldr.asm

65
Source/HBIOS/romldr.asm

@ -54,10 +54,6 @@ INT_IM1 .EQU $FF00
; ;
DI ; NO INTERRUPTS DI ; NO INTERRUPTS
LD SP,BL_STACK ; SETUP STACK LD SP,BL_STACK ; SETUP STACK
;
; BANNER
LD DE,STR_BANNER
CALL WRITESTR
; ;
#IF (PLATFORM != PLT_UNA) #IF (PLATFORM != PLT_UNA)
@ -110,15 +106,13 @@ INT_IM1 .EQU $FF00
#ENDIF #ENDIF
EI 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: DOBOOTMENU:
CALL WRITESTR ; DISPLAY MESSAGE OR ERROR
CALL NEWLINE CALL NEWLINE
; ;
#IF (DSKYENABLE) #IF (DSKYENABLE)
@ -214,9 +208,9 @@ MENU_C: EX DE,HL
; CHECK FOR DRIVE EXECUTION ; CHECK FOR DRIVE EXECUTION
CP '0' ; 0-9, DISK DEVICE CP '0' ; 0-9, DISK DEVICE
JP C,DB_INVALID
JR C,DB_INVALID
CP '9' + 1 CP '9' + 1
JP NC,DB_INVALID
JR NC,DB_INVALID
SUB '0' SUB '0'
JP GOBOOTDISK JP GOBOOTDISK
@ -229,6 +223,10 @@ MENU_X: CALL NEWLINE
EX DE,HL EX DE,HL
JP (HL) ; JUMP TO THE ROUTINE TO EXECUTE IT 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) \ #DEFINE MENU_L(M1,M2,M3,M4,M5,M6,M7,M8,M9,M10) \
#DEFCONT \ .DB M1 #DEFCONT \ .DB M1
#DEFCONT \ .DB M2 #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_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("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("$ $", "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("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$ ") MENU_L("T-BASIC $$", "T", GOROMB, BID_OSIMG, TBC_LOC, 3700h, TBC_LOC, TBC_SIZ, BID_USR, "Tasty BASIC$ ")
#IF (DSKYENABLE) #IF (DSKYENABLE)
MENU_L("DSKY-MON $", "D", GOROM, BID_BIOSIMG, MON_DSKY, 0A00h, MON_LOC, MON_SIZ, BID_USR, DSKY Monitor$") MENU_L("DSKY-MON $", "D", GOROM, BID_BIOSIMG, MON_DSKY, 0A00h, MON_LOC, MON_SIZ, BID_USR, DSKY Monitor$")
#ENDIF #ENDIF
.DB "REBOOT$ ", "R"
.DW REBOOT
MENU_E: MENU_E:
MENU_V .EQU MENU_1-MENU_S ; LENGTH OF EACH MENU RECORD 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 GOROM: EX DE,HL
INC HL ; HL POINTS TO source-bank 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 GOROM_1:INC HL
LD E,(HL) LD E,(HL)
INC HL INC HL
@ -289,11 +281,8 @@ GOROM_1:INC HL
GOROMB: EX DE,HL GOROMB: EX DE,HL
INC HL ; HL POINTS TO source-bank 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 GOROMB1:INC HL
LD E,(HL) LD E,(HL)
INC HL INC HL
@ -341,11 +330,16 @@ CHAIN: ; EXPECT EXEC ADDRESS ON TOP OF STACK
HALT ; WE SHOULD NEVER RETURN!!! HALT ; WE SHOULD NEVER RETURN!!!
#ENDIF #ENDIF
; ;
; REBOOT ROMLDR
;
REBOOT: LD A,BID_BOOT ; BOOT BANK
LD HL,0 ; ADDRESS ZERO
CALL HB_BNKCALL ; DOES NOT RETURN
GOBOOTDISK: GOBOOTDISK:
LD (BL_BOOTID),A LD (BL_BOOTID),A
LD DE,STR_BOOTDISK LD DE,STR_BOOTDISK
CALL WRITESTR CALL WRITESTR
; JP BOOTDISK
; ;
; BOOT FROM DISK DRIVE ; BOOT FROM DISK DRIVE
; ;
@ -538,23 +532,19 @@ BOOTDISK:
DB_NODISK: DB_NODISK:
; SELDSK DID NOT LIKE DRIVE SELECTION ; SELDSK DID NOT LIKE DRIVE SELECTION
LD DE,STR_NODISK LD DE,STR_NODISK
CALL WRITESTR
JP DOBOOTMENU JP DOBOOTMENU
DB_NOBOOT: DB_NOBOOT:
; DISK IS NOT BOOTABLE ; DISK IS NOT BOOTABLE
LD DE,STR_NOBOOT LD DE,STR_NOBOOT
CALL WRITESTR
JP DOBOOTMENU JP DOBOOTMENU
DB_ERR: DB_ERR:
; I/O ERROR DURING BOOT ATTEMPT ; I/O ERROR DURING BOOT ATTEMPT
LD DE,STR_BOOTERR LD DE,STR_BOOTERR
CALL WRITESTR
JP DOBOOTMENU JP DOBOOTMENU
; ;
#IF (DSKYENABLE) #IF (DSKYENABLE)
;
; ;
;__SEGDISPLAY________________________________________________________________________________________ ;__SEGDISPLAY________________________________________________________________________________________
; ;
@ -777,7 +767,6 @@ DEV15 .EQU DEVUNK
; ;
STR_BOOTDISK .DB "BOOT FROM DISK\r\n$" STR_BOOTDISK .DB "BOOT FROM DISK\r\n$"
STR_BOOTDISK1 .DB "\r\nReading disk information...$" STR_BOOTDISK1 .DB "\r\nReading disk information...$"
;STR_LIST .DB "LIST DEVICES\r\n$"
STR_INVALID .DB "INVALID SELECTION\r\n$" STR_INVALID .DB "INVALID SELECTION\r\n$"
STR_SETUP .DB "SYSTEM SETUP\r\n$" STR_SETUP .DB "SYSTEM SETUP\r\n$"
STR_SIG .DB "SIGNATURE=$" STR_SIG .DB "SIGNATURE=$"
@ -785,13 +774,11 @@ STR_CPMLOC .DB "LOC=$"
STR_CPMEND .DB "END=$" STR_CPMEND .DB "END=$"
STR_CPMENT .DB "ENT=$" STR_CPMENT .DB "ENT=$"
STR_LABEL .DB "LABEL=$" STR_LABEL .DB "LABEL=$"
;STR_DRVLIST .DB "\r\nDisk Devices:\r\n$"
STR_PREFIX .DB "($" STR_PREFIX .DB "($"
STR_LOADING .DB "\r\nLoading...$" STR_LOADING .DB "\r\nLoading...$"
STR_NODISK .DB "\r\nNo disk!$" STR_NODISK .DB "\r\nNo disk!$"
STR_NOBOOT .DB "\r\nDisk not bootable!$" STR_NOBOOT .DB "\r\nDisk not bootable!$"
STR_BOOTERR .DB "\r\nBoot failure!$" STR_BOOTERR .DB "\r\nBoot failure!$"
;STR_LAUNCH .DB "\r\nLaunching ...$"
STR_BANNER .DB "\r\n", PLATFORM_NAME, " Boot Loader" STR_BANNER .DB "\r\n", PLATFORM_NAME, " Boot Loader"
STR_NL .DB "\r\n$" STR_NL .DB "\r\n$"
; ;

Loading…
Cancel
Save