mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
General cleanup and refactoring of the ROM bank layout mechanism in the build scripts. This will make it easier to add and adjust the components in the ROM banks. This commit does not yet implement the pending bank layout changes. Those will be part of the next commit.
225 lines
8.9 KiB
PHP
225 lines
8.9 KiB
PHP
;
|
|
;==================================================================================================
|
|
; ROMWBW CPU MEMORY AND ROM BANK LAYOUT DEFINITIONS
|
|
;==================================================================================================
|
|
;
|
|
; THIS FILE DEFINES THE MEMORY LAYOUT OF THE CPU ADDRESS SPACE AND
|
|
; THE LAYOUT OF CODE IMAGES IN ROM. THIS FILE IS INTENDED TO BE
|
|
; INCLUDED IN SOURCE FILES AS NEEDED TO ADAPT TO THE ROMWBW BUILD
|
|
; CONFIGURATION.
|
|
;
|
|
; THE FIRST 4 BANKS OF ROMWBW ROMS CONTAIN ROMWBW SOFTWARE COMPONENTS.
|
|
; THE REMAINING BANKS ARE USED AS ROM DISK CONTENTS.
|
|
;
|
|
; ROM BANK SUMMARY
|
|
; ----------------
|
|
;
|
|
; ROM BANK BANK ID DESCRIPTION
|
|
; -------- -------- ----------------------------------------
|
|
; 0 (ROM0) BID_BOOT HBIOS KERNEL (HBIOS.ASM)
|
|
; 1 (ROM1) BID_IMG0 MONITOR, BOOT LOADER, ROM OS IMAGES
|
|
; 2 (ROM2) BID_IMG1 ROM APPLICATIONS
|
|
; 3 (ROM3) BID_IMG2 ROM UTILITIES
|
|
;
|
|
;--------------------------------------------------------------------------------------------------
|
|
; CPU ADDRESS SPACE MEMORY LAYOUT
|
|
;--------------------------------------------------------------------------------------------------
|
|
;
|
|
MEMTOP .EQU $10000 ; INVARIANT TOP OF Z80 ADDRESSABLE MEMORY
|
|
BNKTOP .EQU $8000 ; BANK MEMORY BARRIER
|
|
;
|
|
HBX_SIZ .EQU $200 ; HBIOS PROXY SIZE (SUBJECT TO CHANGE)
|
|
HBX_LOC .EQU MEMTOP - HBX_SIZ ; RUNNING LOCATION OF HBIOS PROXY
|
|
;
|
|
CPM_LOC .EQU $D000 ; START OF CPM COMPONENTS
|
|
CPM_SIZ .EQU HBX_LOC - CPM_LOC ; NET SIZE OF ALL OS COMPONENTS (EXCLUDING HBIOS PROXY)
|
|
;
|
|
CCP_SIZ .EQU $0800 ; INVARIANT SIZE OF CCP
|
|
BDOS_SIZ .EQU $0E00 ; INVARIANT SIZE OF BDOS
|
|
CBIOS_SIZ .EQU CPM_SIZ - CCP_SIZ - BDOS_SIZ ; REMAINDER IS CBIOS SIZE
|
|
;
|
|
CBIOS_LOC .EQU HBX_LOC - CBIOS_SIZ ; START OF CBIOS
|
|
BDOS_LOC .EQU CBIOS_LOC - BDOS_SIZ ; START OF BDOS
|
|
CCP_LOC .EQU BDOS_LOC - CCP_SIZ ; START OF CCP
|
|
;
|
|
CPM_ENT .EQU CBIOS_LOC ; CPM ENTRY POINT (IN CBIOS)
|
|
;
|
|
; THE SIZE OF THE CPM IMAGE STORED ON A ROM BANK IS GREATER THAN THE
|
|
; SIZE TO BE LOADED. THE FORMER INCLUDES HBIOS SPACE AND THE LATTER
|
|
; DOES NOT. USE CPM_IMGSIZ WHEN REFERRING TO IMAGE SIZE STORED ON ROM.
|
|
CPM_IMGSIZ .EQU $3000 ; CPM IMAGE SIZE ON ROM
|
|
;
|
|
;--------------------------------------------------------------------------------------------------
|
|
; ROM BANK 0 (BID_BOOT) LAYOUT (ROM0.BIN)
|
|
;--------------------------------------------------------------------------------------------------
|
|
;
|
|
; SEE HBIOS.ASM FOR CONTENT OF BANK 0
|
|
;
|
|
;--------------------------------------------------------------------------------------------------
|
|
; ROM BANK 1 (BID_IMG0) LAYOUT (ROM1.BIN)
|
|
;--------------------------------------------------------------------------------------------------
|
|
;
|
|
BNK_NXTLOC .EQU $0000 ; RESET TO START OF BANK
|
|
BNK_CUR .EQU 1 ; THIS IS ROM BANK 1 (BID_IMG0)
|
|
;
|
|
LDR_BNK .EQU BNK_CUR
|
|
LDR_LOC .EQU $0000 ; RUNNING LOCATION OF BOOT LOADER
|
|
LDR_SIZ .EQU $1000 ; SIZE OF BOOT LOADER BINARY IMAGE
|
|
LDR_END .EQU LDR_LOC + LDR_SIZ ; ENDING ADDRESS OF RUNNING BOOT LOADER
|
|
LDR_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
|
BNK_NXTLOC .SET LDR_IMGLOC + LDR_SIZ ; IMG LOC OF NEXT COMPONENT
|
|
;
|
|
MON_BNK .EQU BNK_CUR
|
|
MON_LOC .EQU $EE00 ; RUNNING LOCATION OF MONITOR
|
|
MON_SIZ .EQU $1000 ; SIZE OF MONITOR BINARY IMAGE
|
|
MON_END .EQU MON_LOC + MON_SIZ ; ENDING ADDRESS OF RUNNING MONITOR
|
|
MON_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
|
BNK_NXTLOC .SET MON_IMGLOC + MON_SIZ ; IMG LOC OF NEXT COMPONENT
|
|
;
|
|
ZSYS_BNK .EQU BNK_CUR
|
|
ZSYS_LOC .EQU CPM_LOC ; RUNNING LOCATION OF ZSYSTEM
|
|
ZSYS_SIZ .EQU CPM_SIZ ; SIZE OF ZSYSTEM BINARY IMAGE
|
|
ZSYS_END .EQU ZSYS_LOC + ZSYS_SIZ ; ENDING ADDRESS OF RUNNING ZSYSTEM
|
|
ZSYS_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
|
ZSYS_IMGSIZ .EQU CPM_IMGSIZ ; SIZE OF LOAD IMAGE IN BANK
|
|
BNK_NXTLOC .SET ZSYS_IMGLOC + ZSYS_IMGSIZ ; IMG LOC OF NEXT COMPONENT
|
|
;
|
|
CPM22_BNK .EQU BNK_CUR
|
|
CPM22_LOC .EQU CPM_LOC ; RUNNING LOCATION OF CPM 2.2
|
|
CPM22_SIZ .EQU CPM_SIZ ; SIZE OF CPM 2.2 BINARY IMAGE
|
|
CPM22_END .EQU CPM22_LOC + CPM22_SIZ ; ENDING ADDRESS OF RUNNING CPM 2.2
|
|
CPM22_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
|
CPM22_IMGSIZ .EQU CPM_IMGSIZ ; SIZE OF LOAD IMAGE IN BANK
|
|
BNK_NXTLOC .SET CPM22_IMGLOC + CPM22_IMGSIZ ; IMG LOC OF NEXT COMPONENT
|
|
;
|
|
BNK1_LEN .EQU BNK_NXTLOC ; SIZE OF BANK CONTENTS
|
|
BNK1_SLACK .EQU BNKTOP - BNK_NXTLOC ; REMAINING BANK SPACE
|
|
;
|
|
;--------------------------------------------------------------------------------------------------
|
|
; ROM BANK 2 (BID_IMG1) LAYOUT (ROM2.BIN)
|
|
;--------------------------------------------------------------------------------------------------
|
|
;
|
|
BNK_NXTLOC .SET $0000 ; RESET TO START OF BANK
|
|
BNK_CUR .SET 2 ; THIS IS ROM BANK 2 (BID_IMG1)
|
|
;
|
|
; NOTE FOLLOWING ARE COPY/PASTED INTO camel80.azm !!!!!!!!
|
|
FTH_BNK .EQU BNK_CUR
|
|
FTH_LOC .EQU $0200 ; CAMEL FORTH
|
|
FTH_SIZ .EQU $1700
|
|
FTH_END .EQU FTH_LOC + FTH_SIZ
|
|
FTH_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
|
BNK_NXTLOC .SET FTH_IMGLOC + FTH_SIZ ; IMG LOC OF NEXT COMPONENT
|
|
;
|
|
BAS_BNK .EQU BNK_CUR
|
|
BAS_LOC .EQU $0200 ; NASCOM BASIC
|
|
BAS_SIZ .EQU $2000
|
|
BAS_END .EQU BAS_LOC + BAS_SIZ
|
|
BAS_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
|
BNK_NXTLOC .SET BAS_IMGLOC + BAS_SIZ ; IMG LOC OF NEXT COMPONENT
|
|
;
|
|
; NOTE FOLLOWING ARE COPY/PASTED INTO tastybasic.asm !!!!!!!!
|
|
TBC_BNK .EQU BNK_CUR
|
|
TBC_LOC .EQU $0A00 ; TASTYBASIC
|
|
TBC_SIZ .EQU $0A00
|
|
TBC_END .EQU TBC_LOC + TBC_SIZ
|
|
TBC_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
|
BNK_NXTLOC .SET TBC_IMGLOC + TBC_SIZ ; IMG LOC OF NEXT COMPONENT
|
|
;
|
|
GAM_BNK .EQU BNK_CUR
|
|
GAM_LOC .EQU $0200 ; GAME 2048
|
|
GAM_SIZ .EQU $0900
|
|
GAM_END .EQU GAM_LOC + GAM_SIZ
|
|
GAM_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
|
BNK_NXTLOC .SET GAM_IMGLOC + GAM_SIZ ; IMG LOC OF NEXT COMPONENT
|
|
;
|
|
EGG_BNK .EQU BNK_CUR
|
|
EGG_LOC .EQU $F000 ; EASTER EGG
|
|
EGG_SIZ .EQU $0200
|
|
EGG_END .EQU EGG_LOC + EGG_SIZ
|
|
EGG_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
|
BNK_NXTLOC .SET EGG_IMGLOC + EGG_SIZ ; IMG LOC OF NEXT COMPONENT
|
|
;
|
|
NET_BNK .EQU BNK_CUR
|
|
NET_LOC .EQU $0100 ; NETWORK BOOT
|
|
NET_SIZ .EQU $1000
|
|
NET_END .EQU NET_LOC + NET_SIZ
|
|
NET_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
|
BNK_NXTLOC .SET NET_IMGLOC + NET_SIZ ; IMG LOC OF NEXT COMPONENT
|
|
;
|
|
UPD_BNK .EQU BNK_CUR
|
|
UPD_LOC .EQU $0200 ; ROM UPDATER
|
|
UPD_SIZ .EQU $0D00
|
|
UPD_END .EQU UPD_LOC + UPD_SIZ
|
|
UPD_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
|
BNK_NXTLOC .SET UPD_IMGLOC + UPD_SIZ ; IMG LOC OF NEXT COMPONENT
|
|
;
|
|
NVR_BNK .EQU BNK_CUR
|
|
NVR_LOC .EQU $0100 ; NVRAM CONFIG
|
|
NVR_SIZ .EQU $0800
|
|
NVR_END .EQU NVR_LOC + NVR_SIZ
|
|
NVR_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
|
BNK_NXTLOC .SET NVR_IMGLOC + NVR_SIZ ; IMG LOC OF NEXT COMPONENT
|
|
;
|
|
USR_BNK .EQU BNK_CUR
|
|
USR_LOC .EQU $0200 ; USER
|
|
USR_SIZ .EQU $0200
|
|
USR_END .EQU USR_LOC + USR_SIZ
|
|
USR_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
|
BNK_NXTLOC .SET USR_IMGLOC + USR_SIZ ; IMG LOC OF NEXT COMPONENT
|
|
;
|
|
BNK2_LEN .EQU BNK_NXTLOC ; SIZE OF BANK CONTENTS
|
|
BNK2_SLACK .EQU BNKTOP - BNK_NXTLOC ; REMAINING BANK SPACE
|
|
;
|
|
;--------------------------------------------------------------------------------------------------
|
|
; ROM BANK 3 (BID_IMG2) LAYOUT (ROM3.BIN)
|
|
;--------------------------------------------------------------------------------------------------
|
|
;
|
|
BNK_NXTLOC .SET $0000 ; RESET TO START OF BANK
|
|
BNK_CUR .SET 3 ; THIS IS ROM BANK 3 (BID_IMG2)
|
|
;
|
|
HWMON_BNK .EQU BNK_CUR
|
|
HWMON_LOC .EQU $E000
|
|
HWMON_SIZ .EQU $2000
|
|
HWMON_END .EQU HWMON_LOC + HWMON_SIZ
|
|
HWMON_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
|
BNK_NXTLOC .SET HWMON_IMGLOC + HWMON_SIZ ; IMG LOC OF NEXT COMPONENT
|
|
;
|
|
FONTS_BNK .EQU BNK_CUR
|
|
;;;FONTS_LOC .EQU $E000
|
|
FONTS_SIZ .EQU $2000
|
|
;;;FONTS_END .EQU FONTS_LOC + FONTS_SIZ
|
|
FONTS_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
|
BNK_NXTLOC .SET FONTS_IMGLOC + FONTS_SIZ ; IMG LOC OF NEXT COMPONENT
|
|
;
|
|
BNK3_LEN .EQU BNK_NXTLOC ; SIZE OF BANK CONTENTS
|
|
BNK3_SLACK .EQU BNKTOP - BNK_NXTLOC ; REMAINING BANK SPACE
|
|
;
|
|
;--------------------------------------------------------------------------------------------------
|
|
;
|
|
#IFDEF BNKINFO
|
|
;
|
|
.ECHO "-------------------------------\n"
|
|
.ECHO "ROM BANK INFO \tLENGTH \tSLACK \n"
|
|
.ECHO "---------------\t-------\t-------\n"
|
|
.ECHO "BANK1 BID_IMG0 \t" \ .ECHO BNK1_LEN \ .ECHO "\t" \ .ECHO BNK1_SLACK \ .ECHO "\n"
|
|
.ECHO "BANK2 BID_IMG1 \t" \ .ECHO BNK2_LEN \ .ECHO "\t" \ .ECHO BNK2_SLACK \ .ECHO "\n"
|
|
.ECHO "BANK3 BID_IMG2 \t" \ .ECHO BNK3_LEN \ .ECHO "\t" \ .ECHO BNK3_SLACK \ .ECHO "\n"
|
|
.ECHO "-------------------------------\n"
|
|
;
|
|
#IF (BNK1_LEN > BNKTOP)
|
|
.ECHO "*** ROM BANK 1 IS TOO BIG!!!\n"
|
|
!!! ; FORCE AN ASSEMBLY ERROR IF BANK SIZE EXCEEDS SPACE
|
|
#ENDIF
|
|
;
|
|
#IF (BNK2_LEN > BNKTOP)
|
|
.ECHO "*** ROM BANK 2 IS TOO BIG!!!\n"
|
|
!!! ; FORCE AN ASSEMBLY ERROR IF BANK SIZE EXCEEDS SPACE
|
|
#ENDIF
|
|
;
|
|
#IF (BNK3_LEN > BNKTOP)
|
|
.ECHO "*** ROM BANK 3 IS TOO BIG!!!\n"
|
|
!!! ; FORCE AN ASSEMBLY ERROR IF BANK SIZE EXCEEDS SPACE
|
|
#ENDIF
|
|
;
|
|
#ENDIF
|