mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
CamelForth ROMWBW in OSIMG1
This commit is contained in:
@@ -190,9 +190,8 @@ Concat 'prefix.bin','cpm.bin' 'cpm.sys'
|
||||
Concat 'prefix.bin','zsys.bin' 'zsys.sys'
|
||||
|
||||
# Build 32K OS chunk containing the loader, debug monitor, and OS images
|
||||
Concat 'romldr.bin', 'dbgmon.bin','cpm.bin','zsys.bin', 'eastaegg.bin', 'imgpad.bin' osimg.bin
|
||||
Concat 'nascom.bin', 'tastybasic.bin', 'camel80.bin', 'imgpad0.bin' osimg1.bin
|
||||
|
||||
Concat 'romldr.bin', 'dbgmon.bin', 'cpm.bin', 'zsys.bin', 'eastaegg.bin', 'imgpad.bin' osimg.bin
|
||||
Concat 'camel80.bin', 'nascom.bin', 'tastybasic.bin', 'imgpad0.bin' osimg1.bin
|
||||
#
|
||||
# Now the ROM disk image is created. This is done by starting with a
|
||||
# blank ROM disk image of the correct size, then cpmtools is used to
|
||||
|
||||
@@ -9,4 +9,4 @@ MON_STACK .EQU $
|
||||
.ECHO SLACK
|
||||
.ECHO " bytes.\n"
|
||||
|
||||
.END
|
||||
.END
|
||||
|
||||
@@ -17,9 +17,9 @@ EGGIMG .EQU $7A00 ;SIZE 0200 > 7A00-7C00
|
||||
;
|
||||
; osimg1.bin
|
||||
;
|
||||
BASIMG .EQU $0000 ;SIZE 2000 > 0000-2000
|
||||
TBCIMG .EQU $2000 ;SIZE 0900 > 2000-2900
|
||||
FTHIMG .EQU $2900 ;SIZE 1600 > 2900-3F00
|
||||
FTHIMG .EQU $0000 ;SIZE 1700 > 0000-1700
|
||||
BASIMG .EQU $1700 ;SIZE 2000 > 1700-3700
|
||||
TBCIMG .EQU $3700 ;SIZE 0900 > 3700-4000
|
||||
;
|
||||
INT_IM1 .EQU $FF00
|
||||
;
|
||||
@@ -164,6 +164,8 @@ DB_BOOTLOOP:
|
||||
JP Z,GOCPM
|
||||
CP 'E' ; CP/M BOOT FROM ROM
|
||||
JP Z,GOEASTA
|
||||
CP 'F' ; FORTH
|
||||
JP Z,GOFORTH
|
||||
CP 'M' ; MONITOR
|
||||
JP Z,GOMONSER
|
||||
; CP 'L' ; LIST DRIVES
|
||||
@@ -228,6 +230,8 @@ DB_DSKYEND:
|
||||
JP Z,GOCPM
|
||||
CP 'E' ; CP/M BOOT FROM ROM
|
||||
JP Z,GOEASTA
|
||||
CP 'F' ; FORTH
|
||||
JP Z,GOFORTH
|
||||
CP 'M' ; MONITOR
|
||||
JP Z,GOMONSER
|
||||
; CP 'L' ; LIST DRIVES
|
||||
@@ -297,12 +301,12 @@ GOEASTA:
|
||||
LD BC,EGG_SIZ ; BC := BASIC SIZE
|
||||
LDIR ; COPY BASIC CODE TO EXEC ADDRESS
|
||||
POP HL ; RECOVER ENTRY ADDRESS
|
||||
JR CHAIN ; AND CHAIN TO IT
|
||||
JP CHAIN ; AND CHAIN TO IT
|
||||
|
||||
GOTBAS:
|
||||
LD DE,STR_BOOTTBC ; DE POINTS TO MESSAGE
|
||||
CALL WRITESTR ; WRITE IT TO CONSOLE
|
||||
; COPY BASIC FROM BASIC FROM OSIMG0 IN ROM BANK TO THIS RAM BANKS
|
||||
; COPY BASIC FROM OSIMG0 IN ROM BANK TO THIS RAM BANKS
|
||||
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
|
||||
@@ -330,6 +334,38 @@ GOTBAS:
|
||||
; LDIR ; COPY BASIC CODE TO EXEC ADDRESS
|
||||
; POP HL ; RECOVER ENTRY ADDRESS
|
||||
; JR CHAIN ; AND CHAIN TO IT
|
||||
|
||||
GOFORTH:
|
||||
LD DE,STR_BOOTFTH ; DE POINTS TO MESSAGE
|
||||
CALL WRITESTR ; WRITE IT TO CONSOLE
|
||||
; COPY FORTH FROM OSIMG0 IN ROM BANK TO THIS RAM BANKS
|
||||
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
|
||||
LD HL,FTH_SIZ ; HL = COPY LEN = 1 PAGE = 256 BYTES
|
||||
RST 08 ; DO IT
|
||||
LD DE,STR_LOADING
|
||||
CALL WRITESTR ; WRITE IT TO CONSOLE
|
||||
LD B,BF_SYSBNKCPY ; HBIOS FUNC: PERFORM BANK COPY
|
||||
LD HL,FTHIMG ; COPY FROM
|
||||
LD DE,FTH_LOC ; COPY TO
|
||||
RST 08 ; DO IT
|
||||
LD DE,STR_LAUNCH
|
||||
CALL WRITESTR
|
||||
LD HL,FTH_LOC
|
||||
JP CHAIN
|
||||
|
||||
; LD HL,FTH_LOC ; FIRST BANK CODE
|
||||
; PUSH HL
|
||||
; LD DE,STR_BOOTFTH ; DE POINTS TO MESSAGE
|
||||
; CALL WRITESTR ; WRITE IT TO CONSOLE
|
||||
; ; COPY IMAGE TO EXEC ADDRESS
|
||||
; LD HL,FTHIMG ; HL := BASIC IMAGE ADDRESS
|
||||
; LD DE,FTH_LOC ; DE := BASIC EXEC ADDRESS
|
||||
; LD BC,FTH_SIZ ; BC := BASIC SIZE
|
||||
; LDIR ; COPY BASIC CODE TO EXEC ADDRESS
|
||||
; POP HL ; RECOVER ENTRY ADDRESS
|
||||
; JR CHAIN ; AND CHAIN TO IT
|
||||
|
||||
GOMONSER:
|
||||
LD HL,MON_SERIAL ; MONITOR SERIAL INTERFACE ENTRY ADDRESS TO HL
|
||||
@@ -852,6 +888,7 @@ STR_BOOTDISK .DB "BOOT FROM DISK\r\n$"
|
||||
STR_BOOTDISK1 .DB "\r\nReading disk information...$"
|
||||
STR_BOOTMON .DB "START MONITOR FROM ROM\r\n$"
|
||||
STR_BOOTBAS .DB "START BASIC FROM ROM\r\n$"
|
||||
STR_BOOTFTH .DB "START FORTH FROM ROM\r\n$"
|
||||
STR_BOOTTBC .DB "START TASTYBASIC FROM ROM\r\n$"
|
||||
STR_BOOTCPM .DB "BOOT CPM FROM ROM\r\n$"
|
||||
STR_BOOTZSYS .DB "BOOT ZSYSTEM FROM ROM\r\n$"
|
||||
@@ -875,7 +912,7 @@ STR_LAUNCH .DB "\r\nLaunching ...$"
|
||||
;
|
||||
STR_BANNER .DB "\r\n", PLATFORM_NAME, " Boot Loader$"
|
||||
STR_BOOTMENU .DB "\r\n"
|
||||
.DB "\r\nROM Boot: (B)ASIC, (C)PM, (M)onitor, (T)ASTYBASIC, (Z)System.\r\n"
|
||||
.DB "\r\nROM Boot: (B)ASIC, (C)PM, (F)ORTH, (M)onitor, (T)ASTYBASIC, (Z)System.\r\n"
|
||||
.DB "Disk Boot: $"
|
||||
;
|
||||
.IF DSKYENABLE
|
||||
|
||||
@@ -383,7 +383,7 @@ EGG_SIZ .EQU $0200
|
||||
EGG_END .EQU EGG_LOC + EGG_SIZ
|
||||
|
||||
FTH_LOC .EQU $0A00 ; CAMEL FORTH
|
||||
FTH_SIZ .EQU $1600
|
||||
FTH_SIZ .EQU $1700
|
||||
FTH_END .EQU FTH_LOC + FTH_SIZ
|
||||
|
||||
MON_DSKY .EQU MON_LOC + (0 * 3) ; MONITOR ENTRY (DSKY)
|
||||
|
||||
@@ -1539,7 +1539,7 @@ chkio:
|
||||
POP HL
|
||||
POP DE
|
||||
POP BC
|
||||
ret z ; no, return
|
||||
RET Z ; no, return
|
||||
PUSH BC
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
|
||||
Reference in New Issue
Block a user