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
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$"
;

Loading…
Cancel
Save