|
|
|
@ -133,13 +133,13 @@ MENU_L: PUSH HL ; SAVE CURRENT RECORD POSITION |
|
|
|
POP DE |
|
|
|
|
|
|
|
PUSH BC ; POINT HL TO THE MENU KEY |
|
|
|
LD BC,10 |
|
|
|
LD BC,MENU_O |
|
|
|
ADD HL,BC |
|
|
|
POP BC |
|
|
|
|
|
|
|
WRITEM1:LD A,(DE) ; DE STEPS THROUGH THE MENU NAMES |
|
|
|
CP '$' ; TEST FOR STRING TERMINATOR |
|
|
|
JP Z,WRITEM2 |
|
|
|
JR Z,WRITEM2 |
|
|
|
|
|
|
|
CP (HL) ; DO WE HAVE A MATCH WITH MENU |
|
|
|
JR NZ,WRITEM3 |
|
|
|
@ -152,12 +152,13 @@ WRITEM1:LD A,(DE) ; DE STEPS THROUGH THE MENU NAMES |
|
|
|
WRITEM3:CALL COUT |
|
|
|
INC DE |
|
|
|
JR WRITEM1 |
|
|
|
WRITEM2: |
|
|
|
|
|
|
|
POP HL ; RECALL THE PREVIOUS RECORD |
|
|
|
WRITEM2:POP HL ; RECALL THE PREVIOUS RECORD |
|
|
|
LD DE,MENU_V ; SAVED AT MENU_L |
|
|
|
ADD HL,DE ; MOVE TO NEXT RECORD |
|
|
|
|
|
|
|
LD A,' ' |
|
|
|
CALL COUT |
|
|
|
|
|
|
|
DJNZ MENU_L ; NEXT MENU ITEM |
|
|
|
|
|
|
|
CALL NEWLINE ; DISPLAY AVAILABLE DRIVES |
|
|
|
@ -248,16 +249,16 @@ DB_INVALID: |
|
|
|
; |
|
|
|
; name menu exec dest-exec source dest-addr img-size source-bank dest desc |
|
|
|
; DB DB DW DB DW DW DW DW DB DB |
|
|
|
MENU_S: MENU_L("MONITOR $$", "M", GOROM, MON_SERIAL, 1000h, MON_LOC, MON_SIZ, BID_BIOSIMG, BID_USR, "Monitor$12345") |
|
|
|
MENU_1: MENU_L("CP/M $ $", "C", GOROM, CPM_ENT, 2000h, CPM_LOC, CPM_SIZ, BID_BIOSIMG, BID_USR, "CP/M 80 2.2$ ") |
|
|
|
MENU_L("Z-SYSTEM $", "Z", GOROM, CPM_ENT, 5000h, CPM_LOC, CPM_SIZ, BID_BIOSIMG, BID_USR, "ZSDOS V1.1 $ ") |
|
|
|
MENU_L("$ $", "E", GOROM, EGG_LOC, 0E00h, EGG_LOC, EGG_SIZ, BID_BIOSIMG, BID_USR, "Easter Egg $ ") |
|
|
|
MENU_L("FORTH $ $", "F", GOROM, FTH_LOC, 0000h, FTH_LOC, FTH_SIZ, BID_OSIMG, BID_USR, "Camel Forth$ ") |
|
|
|
MENU_L("BASIC $ $", "B", GOROM, BAS_LOC, 1700h, BAS_LOC, BAS_SIZ, BID_OSIMG, BID_USR, "Nascom BASIC$") |
|
|
|
MENU_L("T-BASIC $$", "T", GOROM, TBC_LOC, 3700h, TBC_LOC, TBC_SIZ, BID_OSIMG, BID_USR, "Tasty BASIC$ ") |
|
|
|
MENU_S: MENU_L("MONITOR$ $", "M", GOROM, MON_SERIAL, 1000h, MON_LOC, MON_SIZ, BID_BIOSIMG, BID_USR, "Monitor$12345") |
|
|
|
MENU_1: MENU_L("CP/M$ $", "C", GOROM, CPM_ENT, 2000h, CPM_LOC, CPM_SIZ, BID_BIOSIMG, BID_USR, "CP/M 80 2.2$ ") |
|
|
|
MENU_L("Z-SYSTEM$$", "Z", GOROM, CPM_ENT, 5000h, CPM_LOC, CPM_SIZ, BID_BIOSIMG, BID_USR, "ZSDOS V1.1$ ") |
|
|
|
MENU_L("$ $", "E", GOROM, EGG_LOC, 0E00h, EGG_LOC, EGG_SIZ, BID_BIOSIMG, BID_USR, "Easter Egg$ ") |
|
|
|
MENU_L("FORTH$ $", "F", GOROM, FTH_LOC, 0000h, FTH_LOC, FTH_SIZ, BID_OSIMG, BID_USR, "Camel Forth$ ") |
|
|
|
MENU_L("BASIC$ $", "B", GOROM, BAS_LOC, 1700h, BAS_LOC, BAS_SIZ, BID_OSIMG, BID_USR, "Nascom BASIC$") |
|
|
|
MENU_L("T-BASIC$ $", "T", GOROM, TBC_LOC, 3700h, TBC_LOC, TBC_SIZ, BID_OSIMG, BID_USR, "Tasty BASIC$ ") |
|
|
|
|
|
|
|
#IF (DSKYENABLE) |
|
|
|
MENU_L("DSKY-MON $", "D", GOROM, MON_DSKY, 1000h, MON_LOC, MON_SIZ, BID_BIOSIMG, BID_USR,"DSKY Monitor$") |
|
|
|
MENU_L("DSKY-MON $", "D", GOROM, MON_DSKY, 1000h, MON_LOC, MON_SIZ, BID_BIOSIMG, BID_USR, "DSKY Monitor$") |
|
|
|
#ENDIF |
|
|
|
|
|
|
|
.DB "REBOOT$ ", "R" |
|
|
|
@ -266,13 +267,13 @@ MENU_1: MENU_L("CP/M $ $", "C", GOROM, CPM_ENT, 2000h, CPM_LOC, CPM_SI |
|
|
|
MENU_E: |
|
|
|
MENU_V .EQU MENU_1-MENU_S ; LENGTH OF EACH MENU RECORD |
|
|
|
MENU_N .EQU ((MENU_E-MENU_S)/MENU_V)+1 ; NUMBER OF MENU ITEMS |
|
|
|
MENU_O .EQU 10 ; OFFSET TO MENU KEY FROM NAME |
|
|
|
; |
|
|
|
; BOOT OPTION PROCESSING |
|
|
|
; |
|
|
|
GOROM: EX DE,HL ; |
|
|
|
|
|
|
|
LD B,5 ; PUT NEXT FOUR ADDRESSES ON STACK |
|
|
|
GOROMB1:INC HL ; |
|
|
|
GOROM: EX DE,HL |
|
|
|
LD B,5 ; PUT NEXT FIVE ADDRESSES ON STACK |
|
|
|
GOROMB1:INC HL |
|
|
|
LD E,(HL) ; EXEC |
|
|
|
INC HL ; SOURCE |
|
|
|
LD D,(HL) ; DEST |
|
|
|
@ -281,53 +282,31 @@ GOROMB1:INC HL ; |
|
|
|
|
|
|
|
POP DE ; BANKS |
|
|
|
POP HL ; SIZE |
|
|
|
|
|
|
|
; LD A,D |
|
|
|
; CALL PRTHEXBYTE |
|
|
|
; CALL NEWLINE |
|
|
|
; LD A,E |
|
|
|
; CALL PRTHEXBYTE |
|
|
|
; CALL NEWLINE |
|
|
|
|
|
|
|
LD B,BF_SYSSETCPY ; HBIOS FUNC: SETUP BANK COPY |
|
|
|
; LD D,BID_USR ; D = DEST BANK = USER BANK |
|
|
|
; LD E,BID_OSIMG ; E = SRC BANK = BIOS BANK |
|
|
|
RST 08 |
|
|
|
RST 08 ; DO IT |
|
|
|
|
|
|
|
POP DE ; DEST |
|
|
|
POP HL ; SOURCE |
|
|
|
|
|
|
|
; LD B,D |
|
|
|
; LD C,E |
|
|
|
; CALL PRTHEXWORD |
|
|
|
; LD B,H |
|
|
|
; LD C,L |
|
|
|
; CALL PRTHEXWORD |
|
|
|
; CALL NEWLINE |
|
|
|
|
|
|
|
LD B,BF_SYSBNKCPY ; HBIOS FUNC: PERFORM BANK COPY |
|
|
|
RST 08 ; DO IT |
|
|
|
|
|
|
|
CHAIN: ; EXPECT EXEC ADDRESS ON TOP OF STACK |
|
|
|
|
|
|
|
|
|
|
|
; |
|
|
|
; EXEC ADDRESS ON TOP OF STACK |
|
|
|
; |
|
|
|
#IF (PLATFORM == PLT_UNA) |
|
|
|
LD BC,$00FB ; GET LOWER PAGE ID |
|
|
|
RST 08 ; DE := LOWER PAGE ID == BOOT ROM PAGE |
|
|
|
LD L,1 ; BOOT DISK UNIT IS ROM (UNIT ID = 1) |
|
|
|
LD BC,$01FC ; UNA FUNC: SET BOOTSTRAP HISTORY |
|
|
|
RST 08 ; CALL UNA |
|
|
|
; |
|
|
|
|
|
|
|
; HL IS ALREADY ON STACK AS REQUIRED BY UNA EXEC CHAIN CALL |
|
|
|
|
|
|
|
LD DE,BID_USR ; TARGET BANK ID |
|
|
|
PUSH DE ; ... ON STACK |
|
|
|
DI ; ENTER WITH INTS DISABLED |
|
|
|
JP $FFF7 ; UNA INTER-PAGE EXEC CHAIN |
|
|
|
#ELSE |
|
|
|
LD A,(HB_CURBNK) ; GET CURRENT BANK ID FROM PROXY DATA |
|
|
|
; CALL PRTHEXBYTE |
|
|
|
|
|
|
|
|
|
|
|
LD B,BF_SYSSET ; HB FUNC: SET HBIOS PARAMETER |
|
|
|
LD C,BF_SYSSET_BOOTINFO ; HB SUBFUNC: SET BOOT INFO |
|
|
|
LD L,A ; ... AND SAVE AS BOOT BANK |
|
|
|
@ -582,14 +561,13 @@ PRTALL1: ; LOOP THRU ALL UNITS AVAILABLE |
|
|
|
PRTDRV: |
|
|
|
PUSH BC ; SAVE UNIT |
|
|
|
PUSH DE ; SAVE DISK TYPE |
|
|
|
LD DE,STR_PREFIX ; NEWLINE AND SPACING |
|
|
|
CALL WRITESTR ; PRINT IT |
|
|
|
LD A,'(' ; NEWLINE AND SPACING |
|
|
|
CALL COUT ; PRINT IT |
|
|
|
LD A,B ; DRIVE LETTER TO A |
|
|
|
ADD A,'0' ; MAKE IT DISPLAY NUMERIC |
|
|
|
CALL COUT ; PRINT IT |
|
|
|
LD A,')' ; DRIVE LETTER COLON |
|
|
|
CALL COUT ; PRINT IT |
|
|
|
; CALL PC_SPACE |
|
|
|
POP DE ; RECOVER DISK TYPE |
|
|
|
LD A,D ; DISK TYPE TO A |
|
|
|
CP $40 ; RAM/ROM? |
|
|
|
@ -653,14 +631,13 @@ PRTALL: |
|
|
|
LD C,0 ; INIT DEVICE INDEX |
|
|
|
; |
|
|
|
PRTALL1: |
|
|
|
LD DE,STR_PREFIX ; FORMATTING |
|
|
|
CALL WRITESTR ; PRINT IT |
|
|
|
LD A,'(' ; FORMATTING |
|
|
|
CALL COUT ; PRINT IT |
|
|
|
LD A,C ; INDEX TO A |
|
|
|
ADD A,'0' ; MAKE NUMERIC CHAR |
|
|
|
CALL COUT ; PRINT IT |
|
|
|
LD A,')' ; FORMATTING |
|
|
|
CALL COUT ; PRINT IT |
|
|
|
; CALL PC_SPACE ; SPACING |
|
|
|
PUSH BC ; SAVE LOOP CONTROL |
|
|
|
LD B,BF_DIODEVICE ; HBIOS FUNC: REPORT DEVICE INFO |
|
|
|
RST 08 ; CALL HBIOS |
|
|
|
@ -741,13 +718,11 @@ STR_CPMLOC .DB "LOC=$" |
|
|
|
STR_CPMEND .DB "END=$" |
|
|
|
STR_CPMENT .DB "ENT=$" |
|
|
|
STR_LABEL .DB "LABEL=$" |
|
|
|
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_BANNER .DB "\r\n", PLATFORM_NAME, " Boot Loader" |
|
|
|
STR_NL .DB "\r\n$" |
|
|
|
STR_BANNER .DB "\r\n", PLATFORM_NAME, " Boot Loader\r\n$" |
|
|
|
; |
|
|
|
#IF (DSKYENABLE) |
|
|
|
; b o o t . . |
|
|
|
|