Browse Source

CamelForth ROMWBW in OSIMG1

pull/16/head
b1ackmai1er 7 years ago
committed by GitHub
parent
commit
5f7f902ba1
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 5
      Source/HBIOS/Build.ps1
  2. 2
      Source/HBIOS/imgpad.asm
  3. 49
      Source/HBIOS/romldr.asm
  4. 2
      Source/HBIOS/std.asm
  5. 2
      Source/HBIOS/tastybasic.asm

5
Source/HBIOS/Build.ps1

@ -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

2
Source/HBIOS/imgpad.asm

@ -9,4 +9,4 @@ MON_STACK .EQU $
.ECHO SLACK
.ECHO " bytes.\n"
.END
.END

49
Source/HBIOS/romldr.asm

@ -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

2
Source/HBIOS/std.asm

@ -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)

2
Source/HBIOS/tastybasic.asm

@ -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

Loading…
Cancel
Save