; ;================================================================================================== ; 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 ; ;-------------------------------------------------------------------------------------------------- ; LAYOUT CHANGES WARNINGS ;-------------------------------------------------------------------------------------------------- ; ; IF THE ROM LAYOUT CHANGES, IT IS CRITICAL THAT THE ROMWBW BUILD PROCESS ; IS ADJUSTED. THE BUILD PROCESS CONCATENATES THE ROM COMPONENTS. THE ; ORDER AND SIZE OF THE COMPONENTS MUST MATCH THIS FILE. ; ; THE EZ512 SUPPLEMENTAL BUILD PROCESS REMOVES COMPONENTS OF THE ROM ; TO ALLOW IT TO BE COMPRESSED INTO 64K. IF THE LAYOUT OF THE ROM ; COMPONENTS CHANGES, YOU MAY NEED TO UPDATE .../Source/EZ512/Build.cmd ; AND .../Source/EZ512/Makefile. ; ;-------------------------------------------------------------------------------------------------- ; 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 0 ; BANK OFFSET FROM 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 ; MON_DSKY .EQU MON_LOC + (0 * 3) ; MONITOR ENTRY (DSKY) MON_SERIAL .EQU MON_LOC + (1 * 3) ; MONITOR ENTRY (SERIAL PORT) ; 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 1 ; BANK OFFSET FROM BID_IMG0 ; ; 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 2 ; BANK OFFSET FROM BID_IMG0 ; HWMON_BNK .EQU BNK_CUR HWMON_LOC .EQU $0000 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 ; ; Device Inventory Application DEV_BNK .EQU BNK_CUR DEV_LOC .EQU $0200 ; LOAD LOCATION DEV_SIZ .EQU $0B00 ; SIZE OF IMAGE DEV_END .EQU DEV_LOC + DEV_SIZ ; END LOCATION DEV_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK BNK_NXTLOC .SET DEV_IMGLOC + DEV_SIZ ; IMG LOC OF NEXT COMPONENT ; ; Slice Inventory Application SLC_BNK .EQU BNK_CUR SLC_LOC .EQU $0200 ; LOAD LOCATION SLC_SIZ .EQU $0200 ; SIZE OF IMAGE SLC_END .EQU SLC_LOC + SLC_SIZ ; END LOCATION SLC_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK BNK_NXTLOC .SET SLC_IMGLOC + SLC_SIZ ; IMG LOC OF NEXT COMPONENT ; FONTS_BNK .EQU BNK_CUR FONTS_LOC .EQU BNK_NXTLOC 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" ; #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