Browse Source

Merge pull request #17 from b1ackmai1er/master

Further optimizations to romldr and update to documentation.
pull/23/head
Wayne Warthen 7 years ago
committed by GitHub
parent
commit
48fa2a027d
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 18
      ReadMe.txt
  2. 45
      Source/HBIOS/Layout.txt
  3. 67
      Source/HBIOS/romldr.asm

18
ReadMe.txt

@ -194,6 +194,24 @@ UNA customization is performed within the ROM setup script.
Complete documentation of the customization process is found in the
ReadMe.txt file in the Source directory.
Inbuild ROM Applications
------------------------
Additonal software other than the CP/M and Z-System application can
be included in the ROM image for execution from the ROM loader.
Current inclusions are:
Monitor - Z80 debug monitor with hexload capability.
Forth - Brad Rodriguez's ANS compatible Forth.
Basic - Nascom 8K BASIC.
Tasty BASIC - Dimitri Theulings Tiny BASIC implementation.
Note: To exit type B in Monitor and BYE in other applications.
Space is available in the ROM image for the inclusion of other software.
Any inbuild application can be set up to launch automatically at startup.
Source Code Respository
-----------------------

45
Source/HBIOS/Layout.txt

@ -4,9 +4,9 @@ Final Output Files
ROM Output File [512K] -> <config>.rom
hbios_rom [32K]
OSIMG [32K]
OSIMG [32K] (used as filler)
OSIMG [32K] (used as filler)
OSIMG [32K]
OSIMG1 [32K]
OSIMG [32K] (used as filler)
romdisk - [384K]
COM Output File -> <config>.com
@ -23,9 +23,17 @@ Intermediate Output Files
OSIMG [32K] -> osimg.bin
romldr [4K] osldr?
dbgmon [4K] tbasic?
dbgmon [4K]
CPM (ccp/bdos/cbios) [12K]
ZSYS (zcpr/zsdos/cbios) [12K]
eastaegg [0.5K]
imagepad [-]
OSIMG1 [32K] -> osimg0.bin
camel80 [5.75K]
nascom [8K]
tastybasic [2.25K]
imagepad0 [-]
CPM [12K] -> cpm.bin
ccp [2K]
@ -74,6 +82,35 @@ dbgmon.asm -> dbgmon.bin:
util.asm
memmgr.asm
dsky.asm
eastaegg.asm -> eastaegg.bin
std.asm
ver.inc
hbios.inc
build.inc
<config>.asm
plt_<platform>.inc
Forth\camel80.azm -> Forth\camel80.bin -> ..\camel80.bin
camel80d.azm
camel80h.azm
nascom.asm -> nascom.bin
std.asm
ver.inc
hbios.inc
build.inc
<config>.asm
plt_<platform>.inc
tastybasic.asm -> tastybasic.bin
std.asm
ver.inc
hbios.inc
build.inc
<config>.asm
plt_<platform>.inc
=======================================================================
HBIOS Loading Modes:

67
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$")
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