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.
186 lines
9.2 KiB
186 lines
9.2 KiB
BPBIOS for RomWBW / HBIOS
|
|
-------------------------
|
|
|
|
The build process included in this directory constructs multiple BPBIOS OS images that
|
|
can be loaded dynamically on a running RomWBW CP/M-like system. Normally, you would
|
|
boot CP/M and then load the desired variant. On a running system, you would enter
|
|
something like "LDSYS BP34". This document describes the specifics of the build
|
|
process and the image variations which are identified by naming convention.
|
|
|
|
Each image is composed of three basic components: Command Processor (CCP), Disk
|
|
Operating System (DOS), and Basic I/O System (BIOS). The CCP and DOS components
|
|
are pre-built, relocatable binaries. The BIOS (BPBIOS) is assembled into a relocatable
|
|
binary by the build, then the build links together all three components to form the
|
|
final loadable image (.IMG) file. The linking process is performed by the custom BPBIOS
|
|
linker (BPBUILD.COM). In addition to linking the 3 components, BPBUILD also sets
|
|
adjusts the ZCPR environment configuration.
|
|
|
|
BPBUILD is designed to be run interactively. However, it can be started with an
|
|
existing OS image to edit an existing image file. In order to achieve an automated
|
|
build process with no interaction, this directory contains several template image (.DAT)
|
|
files that have environment configurations defined below. The build process passes the desired
|
|
tempate file to BPBUILD on the command line and uses input redirection to automate the
|
|
running of BPBUILD.
|
|
|
|
The CCP can be ZCPR 3.3 (ZCPR33?.REL), ZCPR 3.4 (Z34.REL), or ZCPR 4.1 (Z41.ZRL). ZCPR 3.3
|
|
uses static references to the ZCPR segments, so a custom version of it must be assembled.
|
|
The ZCPR33 subdirectory provides a build process for doing this. It produces a specific
|
|
version for each of the memory segment configurations (ZCPR33T.REL & ZCPR33N.REL).
|
|
|
|
The DOS can be ZSDOS 1.1 (ZSDOS.ZRL) or ZSDOS 2.03 (ZS203.ZRL). These are both pre-built
|
|
relocatable binaries. Note that only certain version combinations of ZSDOS and ZCPR are
|
|
possible as indicated below. Additionally, ZSDOS 2.X requires a banked BIOS.
|
|
|
|
ZCPR 3.X == ZSDOS 1.X
|
|
ZCPR 4.X == ZSDOS 2.X
|
|
|
|
BPBIOS must be assembled for the target configuration. BPBIOS includes a DEF-WW-???????.LIB
|
|
file during assembly which sets various equates to contol the features and behavior of
|
|
BPBIOS. The relevant settings are:
|
|
|
|
BANKED: If YES, BPBIOS implements memory banking features
|
|
ZSDOS2: If YES, BPBIOS is built to utilize ZSDOS 2.X specifics features
|
|
|
|
The table below illustrates the target build configurations along with the
|
|
.DAT and .LIB files which are utilized for the specific configuration. The "?"
|
|
is replaced with a letter that represents one of the ZCPR memory segment configurations
|
|
described later in this document.
|
|
|
|
BP33.DAT DEF-WW-Z33.LIB Non-Banked BPBIOS w/ ZCPR 3.3 & ZSDOS 1.1
|
|
BP33BNK.DAT DEF-WW-Z33BNK.LIB Banked BPBIOS w/ ZCPR 3.3 & ZSDOS 1.1
|
|
BP34.DAT DEF-WW-Z34.LIB Non-Banked BPBIOS w/ ZCPR 3.4 & ZSDOS 1.1
|
|
BP34BNK.DAT DEF-WW-Z34BNK.LIB Banked BPBIOS w/ ZCPR 3.4 & ZSDOS 1.1
|
|
BP41BNK.DAT DEF-WW-Z41BNK.LIB Banked BPBIOS w/ ZCPR 4.1 & ZSDOS 2.X
|
|
|
|
The table below illustrates the BPBIOS equates used and the specific CCP/DOS/BIOS
|
|
components that are used to generate each configuration. As above, the "?" is
|
|
replaced with a letter that represents one of the ZCPR memory segment configurations
|
|
described later in this document.
|
|
|
|
BP33 BP33BNK BP34 BP34BNK BP41BNK
|
|
-------------- -------------- -------------- -------------- -------------- --------------
|
|
BANKED NO YES NO YES YES
|
|
ZSDOS2 NO NO NO NO YES
|
|
-------------- -------------- -------------- -------------- -------------- --------------
|
|
CCP ZCPR33.REL ZCPR33.REL Z34.REL Z34.REL Z41.ZRL
|
|
DOS ZSDOS.ZRL ZSDOS.ZRL ZSDOS.ZRL ZSDOS.ZRL ZS227G.ZRL
|
|
BIOS BP33.REL BP33BNK.REL BP34.REL BP34BNK.REL BP41BNK.REL
|
|
-------------- -------------- -------------- -------------- -------------- --------------
|
|
|
|
In addition to the configuration options above, ZCPR also utilizes a
|
|
defined set of memory segments in upper memory. The location and
|
|
size of these segments have many ramifications and general ZCPR /
|
|
BPBIOS documents should be consulted to understand these. The build
|
|
process used here produces a custom configuration appropriate for
|
|
RomWBW. The original distributed memory segment configuration occupies
|
|
the top of memory which, unfortunately, conflicts with the RomWBW
|
|
HBIOS need to occupy this space.
|
|
|
|
Although RomWBW HBIOS is implemented in it's own dedicated memory
|
|
bank, it requires a small proxy at the top of memory which acts as a
|
|
mechansim to route calls to HBIOS. The proxy occupies FE00H-FFFFH and
|
|
implements all of the HBIOS routing code.
|
|
|
|
Taking the above into account, the build process implements a memory
|
|
segment configuration that is compatible with RomWBW HBIOS.
|
|
Essentially, this configuration rearranges the ZCPR memory segments to
|
|
free up the area required by the HBIOS proxy. Note that this is a bit
|
|
complicated because there are some constraints on the locations of
|
|
certain segments.
|
|
|
|
BPBIOS is assembled as relocatable code. Subsequently, the BPBUILD tool
|
|
is used to link BPBIOS with the CCP and DOS relocatable code to produce
|
|
the loadable image (.IMG file). Note that BPBUILD does more than just
|
|
linking. As part of it's work, BPBUILD adjusts the built-in environment
|
|
segment to customize the final image for the desired location and size
|
|
of Z-System segments.
|
|
|
|
The following table summarizes the original memory segment configuration and the
|
|
new configuration utilized by this build process. As indicated above, the
|
|
original configuration is incompatible with RomWBW HBIOS because it occupies the
|
|
very top of memory. The original configuration is shown below purely to
|
|
document the original distributed configuration.
|
|
|
|
SEGMENT Original RomWBW Config
|
|
-------------- -------------- --------------
|
|
Environment FE00 FC00
|
|
# Recs 2 2
|
|
Flow Ctl Pkg FA00 F700
|
|
# Recs 4 4
|
|
I/O Pkg EC00 EF00
|
|
# Recs 12 0
|
|
Res Cmd Pkg F200 EF00
|
|
# Recs 16 16
|
|
Cmd Line FF00 FD00
|
|
# Bytes 203 251
|
|
Named Dirs FC00 F900
|
|
# Ents 14 25
|
|
Ext Path FDF4 FBF4
|
|
# Ents 5 5
|
|
Shell Stack FD00 FB00
|
|
# Ents 4 4
|
|
Ent Size 32 32
|
|
Msg Buffer FD80 FB80
|
|
Ext FCB FDD0 FBD0
|
|
Ext Stack FFD0 FAD0
|
|
|
|
User Space E900 EC00
|
|
Size 300 300
|
|
|
|
Wheel Byte FDFF FBFF
|
|
|
|
The sections below provide a more detailed description of the memory
|
|
segment configurations.
|
|
|
|
=============================================================================
|
|
ORIGINAL DISTRIBUTION CONFIGURATION (NO HBIOS):
|
|
This is the original distribution configuration of BPBIOS which
|
|
occupies all upper RAM (to FFFFH). So, there is no room for the
|
|
HBIOS proxy and, therefore, is not compatibile with RomWBW. This
|
|
configuration is documented only for reference. It is not built
|
|
by the build process and is not compatible with RomWBW HBIOS.
|
|
-----------------------------------------------------------------------------
|
|
A - Environment - FE00H F - Named Dirs - FC00H
|
|
Size (# recs)- 2 # of Entries - 14
|
|
B - Flow Ctrl Pkg - FA00H G - External Path - FDF4H
|
|
Size (# recs)- 4 # of Entries - 5
|
|
C - I/O Package - EC00H H - Shell Stack - FD00H
|
|
Size (# recs)- 12 # of Entries - 4
|
|
D - Res Cmd Proc - F200H Entry Size - 32
|
|
Size (# recs)- 16 I - Msg Buffer - FD80H
|
|
E - Command Line - FF00H J - Ext. FCB - FDD0H
|
|
Size (bytes) - 203 K - Ext. Stack - FFD0H
|
|
=============================================================================
|
|
|
|
=============================================================================
|
|
ROMWBW CONFIGURATION (HBIOS PROXY @ FE00-FFFF):
|
|
-----------------------------------------------------------------------------
|
|
A - Environment - FC00H F - Named Dirs - F900H
|
|
Size (# recs)- 2 # of Entries - 25
|
|
B - Flow Ctrl Pkg - F700H G - External Path - FBF4H
|
|
Size (# recs)- 4 # of Entries - 5
|
|
C - I/O Package - EF00H H - Shell Stack - FB00H
|
|
Size (# recs)- 0 # of Entries - 4
|
|
D - Res Cmd Proc - EF00H Entry Size - 32
|
|
Size (# recs)- 16 I - Msg Buffer - FB80H
|
|
E - Command Line - FD00H J - Ext. FCB - FBD0H
|
|
Size (bytes) - 251 K - Ext. Stack - FAD0H
|
|
=============================================================================
|
|
|
|
BPBIOS is designed to invoke a command at startup (autostart command). There
|
|
are 3 ZEX command files customized for this build. They are ZSTT.ZEX, ZSTN.ZEX,
|
|
and ZSTF.ZEX. BPBIOS is customized to launch the ZEX command file corresponding
|
|
to the version of ZCPR being linked with it.
|
|
|
|
The table below summarizes the loadable image files created by the build
|
|
process:
|
|
|
|
ZCPR ZSDOS BPBIOS STARTUP HBIOS PROXY IMAGE
|
|
------ ------ -------------- -------------- -------------- --------------
|
|
v3.3 v1.1 NON-BANKED ZST.ZEX EXTERNAL BP33.IMG
|
|
v3.3 v1.1 BANKED ZST.ZEX EXTERNAL BP33BNK.IMG
|
|
v3.4 v1.1 NON-BANKED ZST.ZEX EXTERNAL BP34.IMG
|
|
v3.4 v1.1 BANKED ZST.ZEX EXTERNAL BP34BNK.IMG
|
|
v4.1 v2.03 BANKED ZSTF.ZEX EXTERNAL BP41BNK.IMG
|
|
|
|
--WBW 1:34 PM 10/7/2021
|