mirror of https://github.com/wwarthen/RomWBW.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
224 lines
8.9 KiB
224 lines
8.9 KiB
;
|
|
;==================================================================================================
|
|
; 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 $0000
|
|
FONTS_SIZ .EQU $4000
|
|
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"
|
|
;
|
|
#ENDIF
|
|
;
|
|
#IF (BNK1_SLACK < 0)
|
|
.ECHO "*** ROM BANK 1 IS TOO BIG!!!\n"
|
|
!!! ; FORCE AN ASSEMBLY ERROR IF BANK SIZE EXCEEDS SPACE
|
|
#ENDIF
|
|
;
|
|
#IF (BNK2_SLACK < 0)
|
|
.ECHO "*** ROM BANK 2 IS TOO BIG!!!\n"
|
|
!!! ; FORCE AN ASSEMBLY ERROR IF BANK SIZE EXCEEDS SPACE
|
|
#ENDIF
|
|
;
|
|
#IF (BNK3_SLACK < 0)
|
|
.ECHO "*** ROM BANK 3 IS TOO BIG!!!\n"
|
|
!!! ; FORCE AN ASSEMBLY ERROR IF BANK SIZE EXCEEDS SPACE
|
|
#ENDIF
|
|
|