diff --git a/Source/HBIOS/Build.cmd b/Source/HBIOS/Build.cmd index 505aa599..5f86f255 100644 --- a/Source/HBIOS/Build.cmd +++ b/Source/HBIOS/Build.cmd @@ -17,8 +17,8 @@ set CPMDIR80=%TOOLS%/cpm/ :: :: This PowerShell script validates the build variables passed in. If -:: necessary, the user is prmopted to pick the variables. It then creates -:: an include file that is imbedded in the HBIOS assembly (build.inc). +:: necessary, the user is prompted to pick the variables. It then creates +:: an include file that is embedded in the HBIOS assembly (build.inc). :: It also creates a batch command file that sets environment variables :: for use by the remainder of this batch file (build_env.cmd). :: @@ -97,7 +97,6 @@ call :asm nascom || exit /b call :asm game || exit /b call :asm usrrom || exit /b call :asm updater || exit /b -call :asm imgpad2 || exit /b :: Sysconf builds as both BIN and COM files tasm -t%CPUType% -g3 -fFF -dROMWBW sysconf.asm sysconf.bin sysconf_bin.lst || exit /b @@ -106,30 +105,32 @@ tasm -t%CPUType% -g3 -fFF -dCPM sysconf.asm sysconf.com sysconf_com.lst || exit :: :: Create additional ROM bank images by assembling components into :: 32K chunks which can be concatenated later. Note that -:: osimg_small is a special case because it is 20K in size. This +:: appboot is a special case because it is 20K in size. This :: image is subsequently used to generate the .com loadable file. :: -copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_wbw.bin + ..\cpm22\cpm_wbw.bin osimg.bin || exit /b -copy /b ..\Forth\camel80.bin + nascom.bin + ..\tastybasic\src\tastybasic.bin + game.bin + eastaegg.bin + %NETBOOT% + updater.bin + sysconf.bin + usrrom.bin osimg1.bin || exit /b +copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_wbw.bin + ..\cpm22\cpm_wbw.bin rom1.bin || exit /b +copy /b ..\Forth\camel80.bin + nascom.bin + ..\tastybasic\src\tastybasic.bin + game.bin + eastaegg.bin + %NETBOOT% + updater.bin + sysconf.bin + usrrom.bin rom2.bin || exit /b if %Platform%==S100 ( zxcc slr180 -s100mon/fh zxcc mload25 -s100mon || exit /b - copy /b s100mon.com osimg2.bin || exit /b + copy /b s100mon.com rom3.bin || exit /b ) else ( - copy /b imgpad2.bin osimg2.bin || exit /b + copy nul rom3.bin ) -copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_wbw.bin osimg_small.bin || exit /b +copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_wbw.bin appboot.bin || exit /b :: :: Inject one byte checksum at the last byte of all 4 ROM bank image files. -:: This means that computing a checksum over any of the 32K osimg banks -:: should yield a result of zero. +:: This means that computing a checksum over any of the 32K rom banks +:: should yield a result of zero. Any bank image file that is not +:: 32K will be automatically normalized to 32K by the srec_cat +:: formula (extended or truncated)!!! :: -for %%f in (hbios_rom.bin osimg.bin osimg1.bin osimg2.bin) do ( +for %%f in (hbios_rom.bin rom1.bin rom2.bin rom3.bin) do ( "%TOOLS%\srecord\srec_cat.exe" %%f -Binary -Crop 0 0x7FFF -Checksum_Negative_Big_Endian 0x7FFF 1 1 -o %%f -Binary || exit /b ) @@ -150,13 +151,13 @@ for %%f in (hbios_rom.bin osimg.bin osimg1.bin osimg2.bin) do ( :: if %ROMSize% gtr 0 ( - copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin + ..\RomDsk\rom%ROMDiskSize%_wbw.dat %ROMName%.rom || exit /b - copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin %ROMName%.upd || exit /b - copy /b hbios_app.bin + osimg_small.bin %ROMName%.com || exit /b + copy /b hbios_rom.bin + rom1.bin + rom2.bin + rom3.bin + ..\RomDsk\rom%ROMDiskSize%_wbw.dat %ROMName%.rom || exit /b + copy /b hbios_rom.bin + rom1.bin + rom2.bin + rom3.bin %ROMName%.upd || exit /b + copy /b hbios_app.bin + appboot.bin %ROMName%.com || exit /b ) else ( - copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin + ..\RomDsk\rom%RAMDiskSize%_wbw.dat %ROMName%.rom || exit /b - copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin %ROMName%.upd || exit /b - copy /b hbios_app.bin + osimg_small.bin %ROMName%.com || exit /b + copy /b hbios_rom.bin + rom1.bin + rom2.bin + rom3.bin + ..\RomDsk\rom%RAMDiskSize%_wbw.dat %ROMName%.rom || exit /b + copy /b hbios_rom.bin + rom1.bin + rom2.bin + rom3.bin %ROMName%.upd || exit /b + copy /b hbios_app.bin + appboot.bin %ROMName%.com || exit /b ) :: @@ -187,14 +188,14 @@ call :asm dbgmon || exit /b call :asm romldr || exit /b :: Create the OS bank -copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_una.bin + ..\cpm22\cpm_una.bin osimg.bin || exit /b +copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_una.bin + ..\cpm22\cpm_una.bin rom2.bin || exit /b :: Copy OS Bank and ROM Disk image files to output -copy /b osimg.bin ..\..\Binary\UNA_WBW_SYS.bin || exit /b +copy /b rom2.bin ..\..\Binary\UNA_WBW_SYS.bin || exit /b copy /b ..\RomDsk\rom%ROMDiskSize%_una.dat ..\..\Binary\UNA_WBW_ROM%ROMDiskSize%.bin || exit /b :: Create the final ROM image -copy /b ..\UBIOS\UNA-BIOS.BIN + osimg.bin + ..\UBIOS\FSFAT.BIN + ..\RomDsk\rom%ROMDiskSize%_una.dat %ROMName%.rom || exit /b +copy /b ..\UBIOS\UNA-BIOS.BIN + rom2.bin + ..\UBIOS\FSFAT.BIN + ..\RomDsk\rom%ROMDiskSize%_una.dat %ROMName%.rom || exit /b :: Copy to output copy %ROMName%.rom ..\..\Binary || exit /b diff --git a/Source/HBIOS/Makefile b/Source/HBIOS/Makefile index 3e5cb57e..771732d4 100644 --- a/Source/HBIOS/Makefile +++ b/Source/HBIOS/Makefile @@ -1,7 +1,7 @@ MOREDIFF = game.bin hbios_rom.bin nascom.bin usrrom.bin \ - dbgmon.bin hbios_app.bin imgpad2.bin osimg1.bin osimg2.bin romldr.bin \ - eastaegg.bin hbios_img.bin osimg.bin game.bin updater.bin usrrom.bin + dbgmon.bin hbios_app.bin imgpad2.bin rom2.bin rom3.bin romldr.bin \ + eastaegg.bin hbios_img.bin rom1.bin game.bin updater.bin usrrom.bin DEST = ../../Binary TOOLS =../../Tools @@ -58,37 +58,37 @@ ROMNAME=${ROM_PLATFORM}_${ROM_CONFIG} # $(info TASM=$(TASM)) $(OBJECTS) : $(ROMDEPS) - @cat romldr.bin dbgmon.bin ../ZSDOS/zsys_$(BIOS).bin ../CPM22/cpm_$(BIOS).bin >osimg.bin - cat romldr.bin dbgmon.bin ../ZSDOS/zsys_$(BIOS).bin >osimg_small.bin + @cat romldr.bin dbgmon.bin ../ZSDOS/zsys_$(BIOS).bin ../CPM22/cpm_$(BIOS).bin >rom1.bin + cat romldr.bin dbgmon.bin ../ZSDOS/zsys_$(BIOS).bin >appboot.bin if [ $(ROM_PLATFORM) = DUO ] ; then \ cat netboot-duo.mod >netboot.mod ; \ else \ cat netboot-mt.mod >netboot.mod ; \ fi if [ $(ROM_PLATFORM) != UNA ] ; then \ - cat camel80.bin nascom.bin tastybasic.bin game.bin eastaegg.bin netboot.mod updater.bin sysconf.bin usrrom.bin >osimg1.bin ; \ + cat camel80.bin nascom.bin tastybasic.bin game.bin eastaegg.bin netboot.mod updater.bin sysconf.bin usrrom.bin >rom2.bin ; \ if [ $(ROM_PLATFORM) = S100 ] ; then \ - cat s100mon.bin >osimg2.bin ; \ + cat s100mon.bin >rom3.bin ; \ else \ - cat imgpad2.bin >osimg2.bin ; \ + >rom3.bin ; \ fi ; \ - for f in hbios_rom.bin osimg.bin osimg1.bin osimg2.bin ; do \ + for f in hbios_rom.bin rom1.bin rom2.bin rom3.bin ; do \ srec_cat $$f -Binary -Crop 0 0x7FFF -Checksum_Negative_Big_Endian 0x7FFF 1 1 -o $$f -Binary ; \ done \ fi if [ $(ROM_PLATFORM) = UNA ] ; then \ - cp osimg.bin $(DEST)/UNA_WBW_SYS.bin ; \ + cp rom1.bin $(DEST)/UNA_WBW_SYS.bin ; \ cp ../RomDsk/rom$(ROMDISKSIZE)_una.dat $(DEST)/UNA_WBW_ROM$(ROMDISKSIZE).bin ; \ - cat ../UBIOS/UNA-BIOS.BIN osimg.bin ../UBIOS/FSFAT.BIN ../RomDsk/rom$(ROMDISKSIZE)_una.dat >$(ROMNAME).rom ; \ + cat ../UBIOS/UNA-BIOS.BIN rom1.bin ../UBIOS/FSFAT.BIN ../RomDsk/rom$(ROMDISKSIZE)_una.dat >$(ROMNAME).rom ; \ else \ if [ $(ROMSIZE) -gt 0 ] ; then \ - cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin ../RomDsk/rom$(ROMDISKSIZE)_wbw.dat >$(ROMNAME).rom ; \ - cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin >$(ROMNAME).upd ; \ - cat hbios_app.bin osimg_small.bin > $(ROMNAME).com ; \ + cat hbios_rom.bin rom1.bin rom2.bin rom3.bin ../RomDsk/rom$(ROMDISKSIZE)_wbw.dat >$(ROMNAME).rom ; \ + cat hbios_rom.bin rom1.bin rom2.bin rom3.bin >$(ROMNAME).upd ; \ + cat hbios_app.bin appboot.bin > $(ROMNAME).com ; \ else \ - cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin ../RomDsk/rom$(RAMDISKSIZE)_wbw.dat >$(ROMNAME).rom ; \ - cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin >$(ROMNAME).upd ; \ - cat hbios_app.bin osimg_small.bin > $(ROMNAME).com ; \ + cat hbios_rom.bin rom1.bin rom2.bin rom3.bin ../RomDsk/rom$(RAMDISKSIZE)_wbw.dat >$(ROMNAME).rom ; \ + cat hbios_rom.bin rom1.bin rom2.bin rom3.bin >$(ROMNAME).upd ; \ + cat hbios_app.bin appboot.bin > $(ROMNAME).com ; \ fi \ fi diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index efaea809..e12fd369 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -522,8 +522,9 @@ HB_HCB_END .EQU $ ; THE FOLLOWING CODE IS RELOCATED TO THE TOP OF MEMORY TO HANDLE INVOCATION DISPATCHING ; HB_PROXY_BEG .EQU $ +HBX_IMG .EQU $ ; LOC OF HBX IMAGE IN HBIOS IMAGE BANK ; - .FILL (HBX_IMG - $) ; FILL TO START OF PROXY IMAGE START +;;; .FILL (HBX_IMG - $) ; FILL TO START OF PROXY IMAGE START .ORG HBX_LOC ; ADJUST FOR RELOCATION ; ; MEMORY LAYOUT: diff --git a/Source/HBIOS/layout.inc b/Source/HBIOS/layout.inc index e2fd12ae..79fdb6d1 100644 --- a/Source/HBIOS/layout.inc +++ b/Source/HBIOS/layout.inc @@ -1,146 +1,224 @@ ; -; The was extracted out of STD.ASM, so can be included -; in BIOS apps that are NOT in HBIOS directory! +;================================================================================================== +; ROMWBW CPU MEMORY AND ROM BANK LAYOUT DEFINITIONS +;================================================================================================== ; -; ============= -; MEMORY LAYOUT -; ============= +; 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. ; -SYS_SIZ .EQU $3000 ; COMBINED SIZE OF SYSTEM AREA (OS + HBIOS PROXY) -HBBUF_SIZ .EQU 1024 ; INVARIANT HBIOS PHYSICAL DISK BUFFER, 1K -HBX_SIZ .EQU $200 ; HBIOS PROXY SIZE (SUBJECT TO CHANGE) -CPM_SIZ .EQU SYS_SIZ - HBX_SIZ ; NET SIZE OF ALL OS COMPONENTS (EXCLUDING HBIOS PROXY) -CCP_SIZ .EQU $800 ; INVARIANT SIZE OF CCP -BDOS_SIZ .EQU $E00 ; INVARIANT SIZE OF BDOS -CBIOS_SIZ .EQU CPM_SIZ - CCP_SIZ - BDOS_SIZ ; CBIOS IS THE REMAINDER +; 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_IMG .EQU $200 ; LOC OF HBX IMAGE IN HBIOS IMAGE BANK -; -HBBUF_END .EQU BNKTOP ; END OF PHYSICAL DISK BUFFER IN HBIOS -HBBUF_LOC .EQU HBBUF_END - HBBUF_SIZ ; START OF PHYSICAL DISK BUFFER -HBX_END .EQU MEMTOP ; END OF HBIOS PROXY -HBX_LOC .EQU HBX_END - HBX_SIZ ; START OF HBIOS PROXY -CPM_END .EQU HBX_LOC ; END OF CPM COMPONENTS (INCLUDING CBIOS) -CPM_LOC .EQU CPM_END - CPM_SIZ ; START OF CPM COMPONENTS -CBIOS_END .EQU HBX_LOC ; END OF CBIOS -CBIOS_LOC .EQU CBIOS_END - CBIOS_SIZ ; START OF CBIOS +HBX_SIZ .EQU $200 ; HBIOS PROXY SIZE (SUBJECT TO CHANGE) +HBX_LOC .EQU MEMTOP - HBX_SIZ ; RUNNING LOCATION OF HBIOS PROXY ; -CPM_ENT .EQU CBIOS_LOC ; CPM ENTRY POINT (IN CBIOS) +CPM_LOC .EQU $D000 ; START OF CPM COMPONENTS +CPM_SIZ .EQU HBX_LOC - CPM_LOC ; NET SIZE OF ALL OS COMPONENTS (EXCLUDING HBIOS PROXY) ; -CPM_IMGSIZ .EQU $3000 +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 ; -; ============================= -; ROM BANK 0 (hbios_rom.bin) -; ============================= +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 ; -; See hbios.asm for content of Bank 0 +CPM_ENT .EQU CBIOS_LOC ; CPM ENTRY POINT (IN CBIOS) ; -; ============================= -; ROM BANK 1 LAYOUT (osimg.bin) -; ============================= +; 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 ; -LDR_LOC .EQU $0000 ; ROM LOADER -LDR_SIZ .EQU $1000 -LDR_END .EQU LDR_LOC +LDR_SIZ -LDR_IMGLOC .EQU $0000 +;-------------------------------------------------------------------------------------------------- +; ROM BANK 0 (BID_BOOT) LAYOUT (ROM0.BIN) +;-------------------------------------------------------------------------------------------------- ; -MON_LOC .EQU $EE00 ; LOCATION OF MONITOR FOR RUNNING SYSTEM -MON_SIZ .EQU $1000 ; SIZE OF MONITOR BINARY IMAGE -MON_END .EQU MON_LOC + MON_SIZ ; END OF MONITOR -MON_IMGLOC .EQU LDR_IMGLOC + LDR_SIZ +; SEE HBIOS.ASM FOR CONTENT OF BANK 0 ; -ZSYS_IMGLOC .EQU MON_IMGLOC + MON_SIZ ; ZSDOS / Z-System +;-------------------------------------------------------------------------------------------------- +; ROM BANK 1 (BID_IMG0) LAYOUT (ROM1.BIN) +;-------------------------------------------------------------------------------------------------- ; -CPM_IMGLOC .EQU ZSYS_IMGLOC + CPM_IMGSIZ ; CP/M 2.2 +BNK_NXTLOC .EQU $0000 ; RESET TO START OF BANK +BNK_CUR .EQU 1 ; THIS IS ROM BANK 1 (BID_IMG0) ; -BNK1_IMGEND .EQU CPM_IMGLOC + CPM_IMGSIZ ; END OF BANK -BNK1_REMAIN .EQU BNKTOP - BNK1_IMGEND ; REMAINING +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 ; -; ============================== -; ROM BANK 2 LAYOUT (osimg1.bin) -; ============================== +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 $0000 - +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 FTH_IMGLOC + FTH_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 BAS_IMGLOC + BAS_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 TBC_IMGLOC + TBC_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 GAM_IMGLOC + GAM_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 EGG_IMGLOC + EGG_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 NET_IMGLOC + NET_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 UPD_IMGLOC + UPD_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 NVR_IMGLOC + NVR_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) +;-------------------------------------------------------------------------------------------------- ; -BNK2_IMGEND .EQU USR_IMGLOC + USR_SIZ ; END OF BANK -BNK2_REMAIN .EQU BNKTOP - BNK2_IMGEND ; REMAINING +BNK_NXTLOC .SET $0000 ; RESET TO START OF BANK +BNK_CUR .SET 3 ; THIS IS ROM BANK 3 (BID_IMG2) ; -; ============================== -; ROM BANK 3 LAYOUT (osimg2.bin) -; ============================== +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 ; -; not defined here, see build files -; optionally contains S100 monitor +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 \tREMAIN \n" + .ECHO "ROM BANK INFO \tLENGTH \tSLACK \n" .ECHO "---------------\t-------\t-------\n" - .ECHO "BANK1 BID_IMG0 \t" \ .ECHO BNK1_IMGEND \ .ECHO "\t" \ .ECHO BNK1_REMAIN \ .ECHO "\n" - .ECHO "BANK2 BID_IMG1 \t" \ .ECHO BNK2_IMGEND \ .ECHO "\t" \ .ECHO BNK2_REMAIN \ .ECHO "\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_IMGEND > BNKTOP) - .ECHO "*** BANK 1 IS TOO BIG!!!\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_IMGEND > BNKTOP) - .ECHO "*** BANK 2 IS TOO BIG!!!\n" +; + #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 - - - - diff --git a/Source/HBIOS/romldr.asm b/Source/HBIOS/romldr.asm index 84177edb..12470dbf 100644 --- a/Source/HBIOS/romldr.asm +++ b/Source/HBIOS/romldr.asm @@ -1553,7 +1553,7 @@ s100mon1: ; Launch S100 Monitor from ROM Bank 3 call ldelay ; wait for UART buf to empty di ; suspend interrupts - ld a,BID_IMG2 ; S100 monitor bank + ld a,HWMON_BNK ; S100 monitor bank ld ix,0 ; execution resumes here jp HB_BNKCALL ; do it ; @@ -2629,31 +2629,32 @@ ra_ent .equ 12 ; ra_tbl: ; -; Name Key Dsky Bank Src Dest Size Entry -; --------- ------- ----- -------- ----- ------- ------- ---------- -ra_ent(str_mon, 'M', KY_CL, BID_IMG0, MON_IMGLOC, MON_LOC, MON_SIZ, MON_SERIAL) -ra_entsiz .equ $ - ra_tbl -#if (BIOS == BIOS_WBW) - #if (PLATFORM == PLT_S100) -ra_ent(str_smon, 'S', $FF, bid_cur , $8000, $8000, $0001, s100mon) - #endif -#endif -ra_ent(str_cpm22, 'C', KY_BK, BID_IMG0, CPM_IMGLOC, CPM_LOC, CPM_SIZ, CPM_ENT) -ra_ent(str_zsys, 'Z', KY_FW, BID_IMG0, ZSYS_IMGLOC, CPM_LOC, CPM_SIZ, CPM_ENT) -#if (BIOS == BIOS_WBW) -ra_ent(str_bas, 'B', KY_DE, BID_IMG1, BAS_IMGLOC, BAS_LOC, BAS_SIZ, BAS_LOC) -ra_ent(str_tbas, 'T', KY_EN, BID_IMG1, TBC_IMGLOC, TBC_LOC, TBC_SIZ, TBC_LOC) -ra_ent(str_fth, 'F', KY_EX, BID_IMG1, FTH_IMGLOC, FTH_LOC, FTH_SIZ, FTH_LOC) -ra_ent(str_play, 'P', $FF, BID_IMG1, GAM_IMGLOC, GAM_LOC, GAM_SIZ, GAM_LOC) -ra_ent(str_net, 'N', $FF, BID_IMG1, NET_IMGLOC, NET_LOC, NET_SIZ, NET_LOC) -ra_ent(str_upd, 'X', $FF, BID_IMG1, UPD_IMGLOC, UPD_LOC, UPD_SIZ, UPD_LOC) -ra_ent(str_nvr, 'W'+$80, $FF, BID_IMG1, NVR_IMGLOC, NVR_LOC, NVR_SIZ, NVR_LOC) -ra_ent(str_user, 'U', $FF, BID_IMG1, USR_IMGLOC, USR_LOC, USR_SIZ, USR_LOC) +; Name Key Dsky Bank Src Dest Size Entry +; --------- ------- ----- -------- ----- ------- ------- ---------- +ra_ent(str_mon, 'M', KY_CL, MON_BNK, MON_IMGLOC, MON_LOC, MON_SIZ, MON_SERIAL) +ra_entsiz .equ $ - ra_tbl +#if (BIOS == BIOS_WBW) + #if (PLATFORM == PLT_S100) +ra_ent(str_smon, 'S', $FF, bid_cur, $8000, $8000, $0001, s100mon) + #endif +#endif +ra_ent(str_cpm22, 'C', KY_BK, CPM22_BNK, CPM22_IMGLOC, CPM_LOC, CPM_SIZ, CPM_ENT) +ra_ent(str_zsys, 'Z', KY_FW, ZSYS_BNK, ZSYS_IMGLOC, CPM_LOC, CPM_SIZ, CPM_ENT) +#if (BIOS == BIOS_WBW) +ra_ent(str_bas, 'B', KY_DE, BAS_BNK, BAS_IMGLOC, BAS_LOC, BAS_SIZ, BAS_LOC) +ra_ent(str_tbas, 'T', KY_EN, TBC_BNK, TBC_IMGLOC, TBC_LOC, TBC_SIZ, TBC_LOC) +ra_ent(str_fth, 'F', KY_EX, FTH_BNK, FTH_IMGLOC, FTH_LOC, FTH_SIZ, FTH_LOC) +ra_ent(str_play, 'P', $FF, GAM_BNK, GAM_IMGLOC, GAM_LOC, GAM_SIZ, GAM_LOC) +ra_ent(str_net, 'N', $FF, NET_BNK, NET_IMGLOC, NET_LOC, NET_SIZ, NET_LOC) +ra_ent(str_upd, 'X', $FF, UPD_BNK, UPD_IMGLOC, UPD_LOC, UPD_SIZ, UPD_LOC) +ra_ent(str_nvr, 'W'+$80, $FF, NVR_BNK, NVR_IMGLOC, NVR_LOC, NVR_SIZ, NVR_LOC) +ra_ent(str_user, 'U', $FF, USR_BNK, USR_IMGLOC, USR_LOC, USR_SIZ, USR_LOC) #endif #if (DSKYENABLE) -ra_ent(str_dsky, 'Y'+$80, KY_GO, BID_IMG0, MON_IMGLOC, MON_LOC, MON_SIZ, MON_DSKY) +ra_ent(str_dsky, 'Y'+$80, KY_GO, MON_BNK, MON_IMGLOC, MON_LOC, MON_SIZ, MON_DSKY) #endif -ra_ent(str_egg, 'E'+$80, $FF, BID_IMG1, EGG_IMGLOC, EGG_LOC, EGG_SIZ, EGG_LOC) +ra_ent(str_egg, 'E'+$80, $FF, EGG_BNK, EGG_IMGLOC, EGG_LOC, EGG_SIZ, EGG_LOC) +; .dw 0 ; table terminator ; ra_tbl_app: @@ -2665,6 +2666,7 @@ ra_ent(str_zsys, 'Z', KY_FW, bid_cur, ZSYS_IMGLOC, CPM_LOC, CPM_SIZ, CPM_EN #if (DSKYENABLE) ra_ent(str_dsky, 'Y'+$80, KY_GO, bid_cur, MON_IMGLOC, MON_LOC, MON_SIZ, MON_DSKY) #endif +; .dw 0 ; table terminator ; str_mon .db "Monitor",0 diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index 87bdd7f9..274f0199 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -881,8 +881,8 @@ ROMD_BNKS .SET 0 ; -- TYPICAL -- BID_BOOT .EQU BID_ROM0 + 0 ; BOOT BANK 0x00 BID_IMG0 .EQU BID_ROM0 + 1 ; ROM LOADER AND FIRST IMAGES BANK 0x01 -BID_IMG1 .EQU BID_ROM0 + 2 ; SECOND IMAGES BANK 0x02 -BID_IMG2 .EQU BID_ROM0 + 3 ; RESERVED 0x03 +BID_IMG1 .EQU BID_ROM0 + 2 ; ROM APPS IMAGES BANK 0x02 +BID_IMG2 .EQU BID_ROM0 + 3 ; ROM UTILITIES IMAGES BANK 0x03 BID_ROMD0 .EQU BID_ROM0 + 4 ; FIRST ROM DRIVE BANK 0x04 BID_BIOS .EQU BID_RAM0 + 0 ; HBIOS BANK 0x80 BID_RAMD0 .EQU BID_RAM0 + 1 ; FIRST RAM DRIVE BANK 0x81 @@ -899,8 +899,8 @@ BID_COM .EQU BID_RAMN - 0 ; COMMON BANK, UPPER 32K 0x8F ; -- TYPICAL -- BID_BOOT .EQU BID_RAM0 + 0 ; BOOT BANK 0x80 BID_IMG0 .EQU BID_RAM0 + 1 ; ROM LOADER AND FIRST IMAGES BANK 0x81 -BID_IMG1 .EQU BID_RAM0 + 2 ; SECOND IMAGES BANK 0x82 -BID_IMG2 .EQU BID_RAM0 + 3 ; RESERVED 0x83 +BID_IMG1 .EQU BID_RAM0 + 2 ; ROM APPS IMAGES BANK 0x82 +BID_IMG2 .EQU BID_RAM0 + 3 ; ROM UTILITIES IMAGES BANK 0x83 BID_RAMD0 .EQU BID_RAM0 + 4 ; FIRST RAM DRIVE BANK 0x84 BID_APP0 .EQU BID_RAMD0 + RAMD_BNKS ; FIRST APP BANK 0x89 BID_BUF .EQU BID_RAMN - 3 ; OS BUFFERS (CP/M3) 0x8C @@ -1093,8 +1093,8 @@ INT_PIO1B .EQU 12 ; ZILOG PIO 1, CHANNEL B #ENDIF -#DEFINE IVT(INTX) HB_IVT+(INTX * 4)+1 -#DEFINE VEC(INTX) INTX*2 +#DEFINE IVT(INTX) HB_IVT + (INTX * 4) + 1 +#DEFINE VEC(INTX) INTX * 2 ; ; SET DEFAULT CSIO SPEED (INTERNAL CLOCK, SLOW AS POSSIBLE)