mirror of https://github.com/wwarthen/RomWBW.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
2.6 KiB
121 lines
2.6 KiB
;___BOOTAPP____________________________________________________________________________________________________________
|
|
;
|
|
; APPLICATION BOOT MANAGER
|
|
;
|
|
; USED TO LOAD AN APPLICATION IMAGE BASED COPY OF THE SYSTEM
|
|
; REFER TO BANKEDBIOS.TXT FOR MORE INFORMATION.
|
|
;______________________________________________________________________________________________________________________
|
|
;
|
|
; MEMORY MAP
|
|
;
|
|
; LOC LEN DESC
|
|
; ----- ----- --------------
|
|
; $0000 $1000 BOOTAPP CODE
|
|
; $1000 $1000 DBGMON IMAGE
|
|
; $2000 $3000 CPM IMAGE
|
|
; $5000 $3000 ZSYS IMAGE
|
|
; $8000 *** END ***
|
|
;
|
|
#INCLUDE "std.asm"
|
|
;
|
|
.ORG $100
|
|
;
|
|
DI ; NO INTERRUPTS
|
|
IM 1 ; INTERRUPT MODE 1
|
|
LD SP,STACK ; PRIVATE STACK
|
|
;
|
|
; BANNER
|
|
CALL NEWLINE
|
|
LD DE,STR_BANNER
|
|
CALL WRITESTR
|
|
;
|
|
MENU:
|
|
CALL NEWLINE
|
|
CALL NEWLINE
|
|
LD DE,STR_BOOTMENU
|
|
CALL WRITESTR
|
|
CALL CINUC
|
|
CP 'M' ; MONITOR
|
|
JP Z,GOMON
|
|
CP 'C' ; CP/M BOOT FROM ROM
|
|
JP Z,GOCPM
|
|
CP 'Z' ; ZSYSTEM BOOT FROM ROM
|
|
JP Z,GOZSYS
|
|
;
|
|
LD DE,STR_INVALID
|
|
CALL WRITESTR
|
|
JR MENU
|
|
;
|
|
GOMON:
|
|
LD DE,STR_BOOTMON
|
|
CALL WRITESTR
|
|
LD HL,$1000
|
|
LD DE,$C000
|
|
LD BC,$1000
|
|
LDIR
|
|
JP MON_SERIAL
|
|
;
|
|
GOCPM:
|
|
LD DE,STR_BOOTCPM
|
|
CALL WRITESTR
|
|
LD HL,$2000
|
|
LD DE,CPM_LOC
|
|
LD BC,$3000 - $400
|
|
LDIR
|
|
#IF (PLATFORM == PLT_UNA)
|
|
LD DE,$0100 ; BOOT DEV/UNIT/LU=0 (ROM DRIVE)
|
|
#ELSE
|
|
LD DE,$0000 ; BOOT DEV/UNIT/LU=0 (ROM DRIVE)
|
|
#ENDIF
|
|
JP CPM_ENT
|
|
;
|
|
GOZSYS:
|
|
LD DE,STR_BOOTZSYS
|
|
CALL WRITESTR
|
|
LD HL,$5000
|
|
LD DE,CPM_LOC
|
|
LD BC,$3000 - $400
|
|
LDIR
|
|
#IF (PLATFORM == PLT_UNA)
|
|
LD DE,$0100 ; BOOT DEV/UNIT/LU=0 (ROM DRIVE)
|
|
#ELSE
|
|
LD DE,$0000 ; BOOT DEV/UNIT/LU=0 (ROM DRIVE)
|
|
#ENDIF
|
|
JP CPM_ENT
|
|
;
|
|
; READ A CONSOLE CHARACTER AND CONVERT TO UPPER CASE
|
|
;
|
|
CINUC:
|
|
CALL CIN
|
|
AND 7FH ; STRIP HI BIT
|
|
CP 'A' ; KEEP NUMBERS, CONTROLS
|
|
RET C ; AND UPPER CASE
|
|
CP 7BH ; SEE IF NOT LOWER CASE
|
|
RET NC
|
|
AND 5FH ; MAKE UPPER CASE
|
|
RET
|
|
;
|
|
#DEFINE CIOMODE_HBIOS
|
|
#INCLUDE "util.asm"
|
|
;
|
|
; STRINGS
|
|
;_____________________________________________________________________________________________________________________________
|
|
;
|
|
STR_BOOTMON .DB "START MONITOR\r\n$"
|
|
STR_BOOTCPM .DB "BOOT CPM FROM ROM\r\n$"
|
|
STR_BOOTZSYS .DB "BOOT ZSYSTEM FROM ROM\r\n$"
|
|
STR_INVALID .DB "INVALID SELECTION\r\n$"
|
|
;
|
|
STR_BANNER .DB "\r\n", PLATFORM_NAME, " Boot Loader$"
|
|
STR_BOOTMENU .DB "\r\nBoot: (C)PM, (Z)System, (M)onitor,\r\n"
|
|
.DB " (L)ist devices, or Device ID ===> $"
|
|
;
|
|
;______________________________________________________________________________________________________________________
|
|
;
|
|
; PAD OUT REMAINDER
|
|
;
|
|
.FILL $1000 - $,$FF ; PAD OUT REMAINDER
|
|
;
|
|
STACK .EQU $ ; STACK IN SLACK SPACE
|
|
;
|
|
.END
|
|
|