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' Concat 'prefix.bin','zsys.bin' 'zsys.sys'
# Build 32K OS chunk containing the loader, debug monitor, and OS images # 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 # 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 # 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 SLACK
.ECHO " bytes.\n" .ECHO " bytes.\n"
.END
.END

49
Source/HBIOS/romldr.asm

@ -17,9 +17,9 @@ EGGIMG .EQU $7A00 ;SIZE 0200 > 7A00-7C00
; ;
; osimg1.bin ; 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 INT_IM1 .EQU $FF00
; ;
@ -164,6 +164,8 @@ DB_BOOTLOOP:
JP Z,GOCPM JP Z,GOCPM
CP 'E' ; CP/M BOOT FROM ROM CP 'E' ; CP/M BOOT FROM ROM
JP Z,GOEASTA JP Z,GOEASTA
CP 'F' ; FORTH
JP Z,GOFORTH
CP 'M' ; MONITOR CP 'M' ; MONITOR
JP Z,GOMONSER JP Z,GOMONSER
; CP 'L' ; LIST DRIVES ; CP 'L' ; LIST DRIVES
@ -228,6 +230,8 @@ DB_DSKYEND:
JP Z,GOCPM JP Z,GOCPM
CP 'E' ; CP/M BOOT FROM ROM CP 'E' ; CP/M BOOT FROM ROM
JP Z,GOEASTA JP Z,GOEASTA
CP 'F' ; FORTH
JP Z,GOFORTH
CP 'M' ; MONITOR CP 'M' ; MONITOR
JP Z,GOMONSER JP Z,GOMONSER
; CP 'L' ; LIST DRIVES ; CP 'L' ; LIST DRIVES
@ -297,12 +301,12 @@ GOEASTA:
LD BC,EGG_SIZ ; BC := BASIC SIZE LD BC,EGG_SIZ ; BC := BASIC SIZE
LDIR ; COPY BASIC CODE TO EXEC ADDRESS LDIR ; COPY BASIC CODE TO EXEC ADDRESS
POP HL ; RECOVER ENTRY ADDRESS POP HL ; RECOVER ENTRY ADDRESS
JR CHAIN ; AND CHAIN TO IT
JP CHAIN ; AND CHAIN TO IT
GOTBAS: GOTBAS:
LD DE,STR_BOOTTBC ; DE POINTS TO MESSAGE LD DE,STR_BOOTTBC ; DE POINTS TO MESSAGE
CALL WRITESTR ; WRITE IT TO CONSOLE 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 B,BF_SYSSETCPY ; HBIOS FUNC: SETUP BANK COPY
LD D,BID_USR ; D = DEST BANK = USER BANK LD D,BID_USR ; D = DEST BANK = USER BANK
LD E,BID_OSIMG ; E = SRC BANK = BIOS BANK LD E,BID_OSIMG ; E = SRC BANK = BIOS BANK
@ -330,6 +334,38 @@ GOTBAS:
; LDIR ; COPY BASIC CODE TO EXEC ADDRESS ; LDIR ; COPY BASIC CODE TO EXEC ADDRESS
; POP HL ; RECOVER ENTRY ADDRESS ; POP HL ; RECOVER ENTRY ADDRESS
; JR CHAIN ; AND CHAIN TO IT ; 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: GOMONSER:
LD HL,MON_SERIAL ; MONITOR SERIAL INTERFACE ENTRY ADDRESS TO HL 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_BOOTDISK1 .DB "\r\nReading disk information...$"
STR_BOOTMON .DB "START MONITOR FROM ROM\r\n$" STR_BOOTMON .DB "START MONITOR FROM ROM\r\n$"
STR_BOOTBAS .DB "START BASIC 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_BOOTTBC .DB "START TASTYBASIC FROM ROM\r\n$"
STR_BOOTCPM .DB "BOOT CPM FROM ROM\r\n$" STR_BOOTCPM .DB "BOOT CPM FROM ROM\r\n$"
STR_BOOTZSYS .DB "BOOT ZSYSTEM 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_BANNER .DB "\r\n", PLATFORM_NAME, " Boot Loader$"
STR_BOOTMENU .DB "\r\n" 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: $" .DB "Disk Boot: $"
; ;
.IF DSKYENABLE .IF DSKYENABLE

2
Source/HBIOS/std.asm

@ -383,7 +383,7 @@ EGG_SIZ .EQU $0200
EGG_END .EQU EGG_LOC + EGG_SIZ EGG_END .EQU EGG_LOC + EGG_SIZ
FTH_LOC .EQU $0A00 ; CAMEL FORTH FTH_LOC .EQU $0A00 ; CAMEL FORTH
FTH_SIZ .EQU $1600
FTH_SIZ .EQU $1700
FTH_END .EQU FTH_LOC + FTH_SIZ FTH_END .EQU FTH_LOC + FTH_SIZ
MON_DSKY .EQU MON_LOC + (0 * 3) ; MONITOR ENTRY (DSKY) MON_DSKY .EQU MON_LOC + (0 * 3) ; MONITOR ENTRY (DSKY)

2
Source/HBIOS/tastybasic.asm

@ -1539,7 +1539,7 @@ chkio:
POP HL POP HL
POP DE POP DE
POP BC POP BC
ret z ; no, return
RET Z ; no, return
PUSH BC PUSH BC
PUSH DE PUSH DE
PUSH HL PUSH HL

Loading…
Cancel
Save