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

;___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