diff --git a/Applications/index.html b/Applications/index.html index 867912f2..cecb099c 100644 --- a/Applications/index.html +++ b/Applications/index.html @@ -128,14 +128,6 @@
RomWBW Applications Guide \ Version 3.6 \ MartinR \& Phillip Summers () \ -27 Jun 2025
+30 Jun 2025RomWBW is supplied with a suite of software applications that enhance the use of the system. Some of these applications have been written @@ -503,8 +415,17 @@ User Guide, and for the sake of completeness there is some overlap here.
When a RomWBW system is started the user is presented with a sign-on message at the default console detailing the RomWBW version and build date. The system follows this with the list of hardware that it has -discovered, a list of devices and the system units assigned to them, -before finally inviting the to select a boot device with the prompt:
+discovered, a list of devices and the system units assigned to them. +If autoboot is configured then the message (below) will count down and +once 0 is reached the system will automatically boot with the configured +options
+AutoBoot in 3 Seconds (<esc> aborts, <enter> now)...
+
+Pressing esc - will bypass the auto boot process going immediately to
+the Boot prompt, or pressing enter - will proceed with autoboot
+immediately. Auto boot is configured using the W boot menu option.
If autoboot is bypassed (or not configured) the user is asked to select +a boot device with the prompt:
Boot [H=Help]:
At this point, the user may specify a unit, optionally with a slice, to @@ -516,15 +437,20 @@ commands. A menu of which may be displayed by pressing the H or ? keys prompt.
This start-up process is described in some detailed in the RomWBW User Guide, and there is some overlap here.
-After pressing H or ? at the boot prompt the user will be presented with the following list of available commands:
-L - List ROM Applications
-D - Device Inventory
-R - Reboot System
-I <u> [<c>] - Set Console Interface/Baud code
-V [<n>] - View/Set HBIOS Diagnostic Verbosity
-<u>[.<s>] - Boot Disk Unit/Slice
+Boot [H=Help]: H
+
+ L - List ROM Applications
+ D - Device Inventory
+ S - Slice Inventory
+ R - Reboot System
+ W - RomWBW Configure
+ I <u> [<c>] - Set Console Interface/Baud code
+ V [<n>] - View/Set HBIOS Diagnostic Verbosity
+ N - Network Boot
+ <u>[.<s>] - Boot Disk Unit/Slice
The function performed by each command is described below:
L:
@@ -533,9 +459,17 @@ RomWBW ROM - e.g., low-level monitor utility, CP/M, or BASIC.
D:
Displays the list of system devices that was first displayed when the
system was started.
+S:
+Displays the list of disk Slices that contain a label indicating that
+they may be bootable. See SLABEL (Slice Label)
+for more details about labels.
R:
Will restart the system. Note that this does not reset hardware devices
in the same way that power-on or pressing the reset button would.
+W:
+Runs the SYSCONF (System Configuration)
+utility allowing RomWBW configuration stored in Non Volatile memory to
+be changed.
I:
Allows the user to select the interface connected to the console, and
optionally the Baud rate. This could be used to allow the system to be
@@ -543,28 +477,36 @@ operated from a second console.
V:
Enables the display of invalid RomWBW HBIOS API calls. This option is
very unlikely to be used by a user and is used for development purposes.
+N:
+Boot into CP/M via an RCBus Wiznet MT011 network module if configured.
+Section 10 of the RomWBW User Guide provides complete
+instructions for setting up a CP/NET based network under RomWBW
+including network booting.
And, finally, the system may be booted by specifying the unit number,
and optional slice, separated by a period(‘.’), of where the disk
operating system software is located - eg 2, 4.1, 5.3
Alternatively, a RomWBW ROM application may be started by pressing the
appropriate key from the applications menu, shown in the following
section.
-List ROM Applications
+List ROM Applications
If the user presses the L key at the Boot Loader prompt then the system
will display the list of ROM applications that are built into RomWBW. If
a command letter is known, then it may be entered directly at the prompt
rather than first displaying the menu.
The ROM applications available from the boot prompt are:
-M: Monitor
-C: CP/M 2.2
-Z: Z-System
-B: BASIC
-T: Tasty BASIC
-F: Forth
-P: Play a Game
-N: Network Boot
-X: XModem Flash Updater
-U: User App
+Boot [H=Help]: L
+
+ROM Applications:
+
+ M: Monitor
+ Z: Z-System
+ C: CP/M 2.2
+ F: Forth
+ B: BASIC
+ T: Tasty BASIC
+ P: Play a Game
+ X: XModem Flash Updater
+ U: User App
Each of these will now be described in greater detail.
ROM Applications
@@ -617,7 +559,7 @@ default “User” bank. The S command is provided to allow selecti
alternate banks.
There now follows a more detailed guide to using the RomWBW Monitor
program:
-Command Summary
+Monitor Commands
? - Will display a summary of the available commands.
Monitor Commands (all values in hex):
B - Boot system
@@ -637,11 +579,11 @@ U - Set bank to previous bank
T xxxx - X-modem transfer to memory location xxxx
X - Exit monitor
-Cold Boot
+Cold Boot
B - Performs a cold boot of the RomWBW system. A complete
re-initialization of the system is performed and the system returns to
the Boot Loader prompt.
-Dump Memory
+Dump Memory
D xxxx [yyyy] - Dump memory from hex location xxxx to yyyy on the
screen as lines of 16 hexadecimal bytes with their ASCII equivalents (if
within a set range, else a ‘.’ is printed). If the end address is
@@ -666,26 +608,26 @@ details for chip configurations and execution paths.
01E0: AB 01 32 AD 01 3A 5E 00 FE 20 28 05 D6 30 32 AC «.2.:^.þ (.Ö02¬
01F0: 01 C5 01 F0 F8 CF E5 26 00 0E 0A CD 39 02 7D 3C .Å.ðøÏå&...Í9.}<
-Fill Memory
+Fill Memory
F xxxx yyyy zz - Fill memory from hex xxxx to yyyy with a single
value of zz over the full range. The Dump command can be used to confirm
that the fill completed as expected. A good way to zero out memory areas
before writing machine data for debug purposes.
-Halt System
+Halt System
H - Halt system. A Z80 HALT instruction is executed. The system
remains in the halt state until the system is physically rebooted.
Interrupts will not restart the system. On systems that support a HALT
status LED, the LED will be illuminated.
-Input from Port
+Input from Port
I xxxx - Input data from port xxxx and display to the screen. This
command is used to read values from hardware I/O ports and display the
contents in hexadecimal.
-Keyboard Echo
+Keyboard Echo
K - Echo any key-presses from the terminal. Press ‘ESC’ key to
quit. This facility provides that any key stroke sent to the computer
will be echoed back to the terminal. File down loads will be echoed as
well while this facility is ‘on’.
-Load Hex
+Load Hex
L - Load a Intel Hex data via the terminal program. The load
address is defined in the hex file of the assembled code.
The terminal emulator program should be configured to give a delay at
@@ -693,17 +635,17 @@ the end of each line to allow the monitor enough time to parse the line
and move the data to memory.
Keep in mind that this will be transient unless the system supports
battery backed memory. Saving to memory drive is not supported.
-Move Memory
+Move Memory
M xxxx yyyy zzzz - Move hex memory block xxxx to yyyy to memory
starting at hex location zzzz. Care should be taken to insure that there
is enough memory at the destination so that code does not get
over-written or memory wrapped around.
-Output to Port
+Output to Port
O xxxx yy - Output data byte xx to port xxxx. This command is used
to send hexadecimal values to hardware I/O ports to verify their
operation and is the companion to the I operation. Use clip leaded LEDs
to confirm the data written.
-Program Memory
+Program Memory
P xxxx - Program memory location xxxx. This routine will allow you
to program a hexadecimal value ‘into memory starting at location xxxx.
Press ’Enter’ on a blank line to return to the Monitor prompt.
@@ -712,13 +654,13 @@ hexadecimal. An alternative is to use the L command to load a program
that has been assembled to a hex file on the remote computer.
An excellent online resource for looking up opcodes for entry can be
found here: https://clrhome.org/table.
-Run Program
+Run Program
R xxxx [[yy] [zzzz]] - Run program at location xxxx. If optional
arguments yy and zzzz are entered they are loaded into the A and BC
register respectively. The return address of the Monitor is saved on the
stack so the program can return to the monitor. On return to the
monitor, the contents of the A, HL, DE and BC registers are displayed.
-Set Bank
+Set Bank
S xx - Set the physical memory bank to the RomWBW Bank Id
indicated by xx. Memory addresses 0x0000-0x7FFF (i.e. bottom 32k) are
affected. Because the interrupt vectors are stored in the bottom page of
@@ -735,215 +677,15 @@ memory bank back to the previously selected one.
Section 4 of the RomWBW System Guide provides detail
on how Bank Ids map to the physical memory of the system and also how
specific banks are utilized by RomWBW.
-Undo Bank
+Undo Bank
U - Change the bank in memory back to the previously selected
bank. This command should be used in conjunction with the S command.
-X-Modem Transfer
+X-Modem Transfer
T xxxx - Receive an X-modem file transfer and load it into memory
starting at location xxxx.
128 byte blocks and checksum mode is the only supported protocol.
-Exit Monitor
+Exit Monitor
X - Exit the monitor program back to the main boot menu.
-RomWBW System Configuration
-System Configuration (SYSCONF) is a utility that allows system
-configuration to be set, dynamically and stored in NVRAM provided by an
-RTC chip.
-(SYSCONF) is both a ROM application (‘W’ Menu option), and a CP/M
-utility. Noting however the CP/M utility is not included on an disk
-image, it is found in the Binary/Applications folder of the RomWBW
-distribution.
-The RomWBW User Guide has additional information on the
-use of NVRAM to set your system configuration.
-Basic Operation
-The application is an interactive application; it does not have a
-command line syntax. Instead commands are executed from within the
-application in a command line structure.
-When you first start the (SYSCONF) utility it will display the current
-switches followed by a command listing.
-When you first run the (SYSCONF) utility the NVRAM will be
-uninitialised, and can be initialised using the (R)eset command, which
-writes default values to NVRAM.
-Updates are done immediately to NVRAM as you enter them, i.e. there is
-no confirm changes step. If you make any incorrect changes, you simply
-need to enter a new command to set the Switch value correctly.
-Once a change has been made it is available, however it may not take
-effect until the next system reboot. This is dependent on the Switch
-itself.
-If no NVRAM is provided by your hardware, then running this application
-will just report the missing hardware and exit immediately.
-To exit from the application use the (Q)uit command.
-Commands and Syntax
-The following are the accepted commands, unless otherwise specified a
-“Space” character is used to delimit parameters in the command.
-
-
-
-Command
-Argument(s)
-Description
-
-
-
-
-(P)rint
--none-
-Display a list of the current switch value(s)
-
-
-(S)et
-{SW} {val},…
-Sets an Switch {SW} with specific values(s)
-
-
-(R)eset
--none-
-Reset all setting to default
-
-
-(H)elp
-{SW}
-Provides help on the syntax (values)
-
-
-(Q)uit
--none-
-Exit the application
-
-
-
-Where
-
-
-
-Argument
-Description
-
-
-
-
-{SW}
-Switch ID, typically this is 2 character name to identify the switch
-
-
-{val},…
-a “Comma” separated list of values to set into the switch
-
-
-
-Switch Options
-Auto Boot (AB)
-This switch will define if the system will perform auto boot at the
-RomWBW boot prompt. Enabling this will not prevent a user from typing a
-boot command, so long as the timeout is not exceeded. When configured
-this replaces the (AUTO_CMD) variable defined in build configuration.
-Making changes to auto boot has no affect until the next reboot.
-Arguments
-
-
-
-Type
-Arguments
-Description
-
-
-
-
-Enable
-‘E’
-Auto Boot. eg. “E,10” will auto boot, after 10 seconds
-
-
-
-Timout
-Timeout in seconds in the range 0-15, 0 = immediate
-
-
-Disabled
-‘D’
-No Auto Boot. e.g. “D” will disable autoboot
-
-
-
-Examples
-
-
-
-Command
-Description
-
-
-
-
-S AB E,10
-Enable Auto Boot with 10 second delay
-
-
-S AB D
-Disable Auto Boot
-
-
-
-Boot Options (BO)
-This switch will define the boot command to be executed when auto boot
-is enabled. When configured this replaces the (AUTO_CMD) variable
-defined in the ROM build configuration.
-Making changes to boot options has no affect until the next reboot.
-Arguments
-
-
-
-Type
-Arguments
-Description
-
-
-
-
-Disk
-‘D’
-Disk Boot. eg. “D,2,14” will boot, disk unit 2, slice 14
-
-
-
-Disk Unit Number
-Unit number in the range 0-127
-
-
-
-Disk Slice
-Slice in the range 0-255, use 0 for floppy boot
-
-
-ROM
-‘R’
-ROM App. e.g. “R,M” will boot the Monitor App
-
-
-
-Rom App Name
-single character used on the Menu to identify the app
-
-
-
-Examples
-
-
-
-Command
-Description
-
-
-
-
-S BO D,2,14
-Set the default boot from Disk; Unit 2, Slice 14
-
-
-S BO R,M
-Set the default boot to be the (M)onitor Rom Application
-
-
-
CP/M 2.2
This option will boot the CP/M 2.2 disk operating system from an image
contained within the ROM. Please refer to the CPM User Manual in the
@@ -1158,8 +900,7 @@ distribution are:
-Play a Game
-2048
+Play a Game (2048)
2048 is a puzzle game that can be both mindless and challenging. It
appears deceptively simple but failure can creep up on you suddenly.
It requires an ANSI/VT-100 compatible colour terminal to play.
@@ -1218,17 +959,6 @@ Move 4 - Left Move 5 - Up Move 6 - Right Move 7 - Up
+---+---+---+---+
Press Q at any time to bring up the option to Quit or Restart the game.
-If your RomWBW system is equipped with an RCBus MT011 module, it is -possible to boot into CP/M 2.2 directly from a CP/NET network server. -This means that the operating system will be loaded directly from the -network server and all of your drive letters will be provided by the -network server.
-This function requires substantial knowledge of CP/NET and it’s -implementation within RomWBW. Section 10 of the RomWBW User -Guide provides complete instructions for setting up a -CP/NET based network under RomWBW including a section on network -booting.
The RomWBW Xmodem flash updater provides the capability to update RomWBW from the boot loader using an x-modem file transfer. It offers similar @@ -1439,8 +1169,8 @@ some of the results identified during testing.
All testing was done with Tera Term x-modem, Forcing checksum mode using -macros was found to give the most reliable transfer. Partial writes can -be completed with 39SF040 chips. Other chips require entire flash to be -erased before being written. An SBC V2-005 MegaFlash or Z80 MBC required -for 1mb flash support. The Updater assumes both chips are same type -Failure handling has not been tested. Timing broadly calibrated on a Z80 -SBC-v2 Unabios not supported
+Notes * All testing was done with Tera Term x-modem, Forcing checksum
+mode using macros was found to give the most reliable transfer. *
+Partial writes can be completed with 39SF040 chips. Other chips
+require entire flash to be erased before being written. * An SBC V2-005
+MegaFlash or Z80 MBC required for 1mb flash support. The Updater assumes
+both chips are same type * Failure handling has not been tested. *
+Timing broadly calibrated on a Z80 SBC-v2 * Unabios not supported
RomWBW provides the facility for a user to build, include and execute their own custom application directly from the applications menu at @@ -2735,159 +2465,399 @@ set the time and registers of the RTC.
S)etS)etR)awL)oopC)hargeN)ochargeD)elayI)nitG)etP)utB)ootH)elpWhen using Get and Put options, the register number to read/write is +entered in hex. The non-volatile ram register numbers are 0x20-0x3F.
+When entering values, you must enter exactly two hex characters. The +backspace key is not supported. You do not use enter after entering the +two hex characters. Yes, this should be improved.
+The RTC application interacts directly with the RTC hardware bypassing
+HBIOS.
The RTC application was originally written by Andrew Lynch as part of
+the original ECB SBC board development. It has since been modified to
+support most of the hardware variations included with RomWBW.
| SLABEL | ++ |
|---|---|
| ROM-based | +No | +
| Disk-based | +Yes | +
Display or change the label of a disk slice.
+The label applied is only used as informational purposes, displayed by
+RomWBW when an OS is booted. It has no correlation with any OS volume
+label scheme that may exist. i.e. It does not affect the CP/M 3 disk
+label as applied by the SET command
SLABEL [unit.slice=label] [/?]
unit.slice the disk unit and slice number to apply the new label to.
+This is in the same format as when booting the system to a disk
label is the new disk label to apply to the disk
SLABEL with no arguments will list All existing labels across All
+disks
SLABEL 2.5=MYDRIVE will set the disk label of the 6th slice of disk
+unit 2
SLABEL /? (or other unrecognised parameters) will display a usage
+message.
There is no capability to update a label onto media that currently does +not have existing media information in the third sector, typically this +means only bootable media.
+This will only display labels for the first 64 slices of any device. +Slices higher than this are currently ignored.
+Only bootable RomWBW disk images have a label, which is defined by the +OS which is booted. i.e. NZ-COM has a label of “ZSDOS 1.1” since that is +the booted OS. Prior to RomWBW 3.5 all disk images were defined with the +label “Unlabeled”.
+The SLABEL application was custom written for RomWBW and contributed
+by Mark Pruden.
| SURVEY | ++ |
|---|---|
| ROM-based | +Yes | +
| Disk-based | +Yes | +
The SURVEY command interrogates the system for information on disk
+usage, memory usage and I/O ports used, and reports it to the user.
The SURVEY command takes no arguments.
SURVEY
The results presented by SURVEY include:
Information about any drives, within the first eight (ie A: to H:), + which have been logged by the system. This includes: the total + number of files; the storage capacity occupied by those files; and + the capacity remaining on that drive.
+Information about the the 64KByte CP/M memory map, which is shown + diagramatically, and includes: locations and sizes of the TPA + (Transient Program Area), CP/M’s CCP (Console Command Processor),and + BDOS (Basic Disk Operating System).
+The addresses of active CPU I/O ports.
+The mechanism by which SURVEY discovers I/O ports is very conservative
+and therefore the list returned may not be exhaustive. In particular, it
+may fail to discover ports that are ‘write-only’.
| SYSCONF | ++ |
|---|---|
| ROM-based | +Yes | +
| Disk-based | +Yes | +
System Configuration (SYSCONF) is a utility that allows system
+configuration to be set, dynamically and stored in NVRAM provided by an
+RTC chip.
(SYSCONF) is both a ROM utility (‘W’ Menu option), and a CP/M
+application. Noting however the CP/M application is not included on an
+disk image, it is found in the Binary/Applications folder of the
+RomWBW distribution.
The section “Setting NVRAM Options” in the RomWBW User +Guide has additional information on the use of NVRAM to +set your system configuration.
+The application is an interactive application; it does not have a
+command line syntax. Instead commands are executed from within the
+application in a command line structure. SYSCONF command takes no
+arguments.
SYSCONF
When you first start the (SYSCONF) utility it will display the current
+switches followed by a command listing. e.g.
RomWBW System Config Utility
+
+Current Configuration:
+ [BO] / Boot Options: ROM (App = "H")
+ [AB] / Auto Boot: Disabled
+
+Commands:
+ (P)rint - Display Current settings
+ (S)et {SW} {val}[,{val}[,{val}]]- Set a switch value(s)
+ (R)eset - Init NVRAM to Defaults
+ (H)elp [{SW}] - This help menu, or help on a switch
+ e(X)it - Exit Configuration
+
+$
+
+When you run (SYSCONF) for the first time the NVRAM will be
+uninitialised, and can be initialised using the (R)eset command, which
+writes default values to NVRAM.
Updates are done immediately to NVRAM as you enter them, i.e. there is +no confirm changes step. If you make any incorrect changes, you simply +need to enter a new command to set the Switch value correctly.
+Once a change has been made it is available, however it may not take +effect until the next system reboot. This is dependent on the Switch +itself.
+If no NVRAM is provided by your hardware, then running this application +will just report the missing hardware and exit immediately.
+To exit from the application use the (Q)uit command.
+The following are the accepted commands, unless otherwise specified a +“Space” character is used to delimit parameters in the command.
+| Command | +Argument(s) | +Description | +
|---|---|---|
| (P)rint | +-none- | +Display a list of the current switch value(s) | +
| (S)et | +{SW} {val},… | +Sets an Switch {SW} with specific values(s) | +
| (R)eset | +-none- | +Reset all setting to default | +
| (H)elp | +{SW} | +Provides help on the syntax (values) | +
| e(X)it | +-none- | +Exit the application |
Where
+R)aw |
-will read the minute/second of the RTC clock iteratively every time the space key is pressed. Press enter to end. | +Argument | +Description |
|---|---|---|---|
L)oop |
-will read the full date/time of the RTC clock iteratively every time the space key is pressed. Press enter to end. | +{SW} | +Switch ID, typically this is 2 character name to identify the switch |
C)harge |
-will enable the battery charging function of the RTC. | +{val},… | +a “Comma” separated list of values to set into the switch |
This switch will define if the system will perform auto boot at the
+RomWBW boot prompt. Enabling this will not prevent a user from typing a
+boot command, so long as the timeout is not exceeded. When configured
+this replaces the (AUTO_CMD) variable defined in build configuration.
Making changes to auto boot has no affect until the next reboot.
+Arguments
+N)ocharge |
-will disable the battery charging function of the RTC. | +Type | +Arguments | +Description |
|---|---|---|---|---|
D)elay |
-allows you to test the built-in timing delay in the program. It is not unusual for it to be wrong. | +Enable | +‘E’ | +Auto Boot. eg. “E,10” will auto boot, after 10 seconds |
I)nit |
-allows you to enter a date/time value for subsequent programming of the RTC using the S)et option. | ++ | Timout | +Timeout in seconds in the range 0-15, 0 = immediate |
G)et |
-allows you to read the value of a non-volatile register in the RTC. | +Disabled | +‘D’ | +No Auto Boot. e.g. “D” will disable autoboot |
Examples
+P)ut |
-allows you to write the value of a non-volatile register in the RTC. | +Command | +Description |
|---|---|---|---|
B)oot |
-will reboot your system. | +S AB E,10 | +Enable Auto Boot with 10 second delay |
H)elp |
-displays brief help. | +S AB D | +Disable Auto Boot |
When using Get and Put options, the register number to read/write is -entered in hex. The non-volatile ram register numbers are 0x20-0x3F.
-When entering values, you must enter exactly two hex characters. The -backspace key is not supported. You do not use enter after entering the -two hex characters. Yes, this should be improved.
-The RTC application interacts directly with the RTC hardware bypassing
-HBIOS.
The RTC application was originally written by Andrew Lynch as part of
-the original ECB SBC board development. It has since been modified to
-support most of the hardware variations included with RomWBW.
This switch will define the boot command to be executed when auto boot
+is enabled. When configured this replaces the (AUTO_CMD) variable
+defined in the ROM build configuration.
Making changes to boot options has no affect until the next reboot.
+Arguments
| SLABEL | -+ | Type | +Arguments | +Description |
|---|---|---|---|---|
| ROM-based | -No | +Disk | +‘D’ | +Disk Boot. eg. “D,2,14” will boot, disk unit 2, slice 14 |
| Disk-based | -Yes | ++ | Disk Unit Number | +Unit number in the range 0-127 | +
| + | Disk Slice | +Slice in the range 0-255, use 0 for floppy boot | +||
| ROM | +‘R’ | +ROM App. e.g. “R,M” will boot the Monitor App | +||
| + | Rom App Name | +single character used on the Menu to identify the app |
Display or change the label of a disk slice.
-The label applied is only used as informational purposes, displayed by
-RomWBW when an OS is booted. It has no correlation with any OS volume
-label scheme that may exist. i.e. It does not affect the CP/M 3 disk
-label as applied by the SET command
SLABEL [unit.slice=label] [/?]
unit.slice the disk unit and slice number to apply the new label to.
-This is in the same format as when booting the system to a disk
label is the new disk label to apply to the disk
SLABEL with no arguments will list All existing labels across All
-disks
SLABEL 2.5=MYDRIVE will set the disk label of the 6th slice of disk
-unit 2
SLABEL /? (or other unrecognised parameters) will display a usage
-message.
There is no capability to update a label onto media that currently does -not have existing media information in the third sector, typically this -means only bootable media.
-This will only display labels for the first 64 slices of any device. -Slices higher than this are currently ignored.
-Only bootable RomWBW disk images have a label, which is defined by the -OS which is booted. i.e. NZ-COM has a label of “ZSDOS 1.1” since that is -the booted OS. Prior to RomWBW 3.5 all disk images were defined with the -label “Unlabeled”.
-The SLABEL application was custom written for RomWBW and contributed
-by Mark Pruden.
Examples
| SURVEY | -+ | Command | +Description |
|---|---|---|---|
| ROM-based | -Yes | +S BO D,2,14 | +Set the default boot from Disk; Unit 2, Slice 14 |
| Disk-based | -Yes | +S BO R,M | +Set the default boot to be the (M)onitor Rom Application |
The SURVEY command interrogates the system for information on disk
-usage, memory usage and I/O ports used, and reports it to the user.
The SURVEY command takes no arguments.
SURVEY
The results presented by SURVEY include:
Information about any drives, within the first eight (ie A: to H:), - which have been logged by the system. This includes: the total - number of files; the storage capacity occupied by those files; and - the capacity remaining on that drive.
-Information about the the 64KByte CP/M memory map, which is shown - diagramatically, and includes: locations and sizes of the TPA - (Transient Program Area), CP/M’s CCP (Console Command Processor),and - BDOS (Basic Disk Operating System).
-The addresses of active CPU I/O ports.
-The mechanism by which SURVEY discovers I/O ports is very conservative
-and therefore the list returned may not be exhaustive. In particular, it
-may fail to discover ports that are ‘write-only’.
The SYSCONF utility is an original product specific to RomWBW, source
+code is included. SYSCONF was contributed by Mark Pruden.
Tasty Basic is a basic interpreter for CP/M and RomWBW based on the Z80 port of Palo Alto Tiny Basic.
-TBASIC [\<filename>]
Tasty Basic is provided on RomWBW as both a ROM implementation and as a CP/M application. The CP/M version should be used if you wish to save Tasty Basic files.
-The implementation of Tasty Basic included in RomWBW is the work of Dimitri Theulings. The primary distribution site for this work is https://github.com/dimitrit/tastybasic.
@@ -3066,9 +3036,9 @@ Dimitri Theulings. The primary distribution site for this work isMost RomWBW systems have a 50Hz periodic system timer. A counter is
incremented every time a timer tick occurs. The TIMER application
displays the value of the counter.
TIMER TIMER /? TIMER /C
Use TIMER to display the current value of the counter.
Use TIMER /C to display the value of the counter continuously.
The display of the counter will be something like this:
@@ -3085,7 +3055,7 @@ rollover. All values are in hex. functionality of your system.In theory, you could capture the value before and after some process you want to time.
-The TIMER command is an original product and the source code is
provided in the RomWBW distribution.
TUNE application to play PT or
sound files.
Note: TUNE will detect an AY-3-8910/YM2149 Sound Module re-gardless of whether support for it is included in the RomWBW HBIOS configuration
-TUNE<filename> **
<filename> is the name of a sound file ending in .PT2, .PT3, or .MYM
The +t and -t options apply only to HBIOS mode operation. The -MSX,
-RC, and --HBIOS options are mutually exclusive. See Notes below.
The TUNE application supports PT and YM sound file formats. It determines the format of the file from the extension of the file, so your tune filenames should end in .PT2, .PT3, or .MYM.
@@ -3218,7 +3188,7 @@ implement everything that the sound card can do. For best fidelity, useTUNE without the --HBIOS option.
All RomWBW operating system boot disks include a selection of sound files in user area 3.
-The TUNE application was custom written for RomWBW. All of the
hardware interface code is specific to RomWBW. The sound file decoding
software was adapted and embedded from pre-existing sources. The YM
@@ -3265,10 +3235,10 @@ file that can be played is around 52Kb.
VGMPLAY supports playback of files with multiple combinations of these chips.
-VGMPLAY<filename>
<filename> is the name of a sound file ending in .VGM
VGMPLAY does not automatically detect the hardware platform or sound hardware that you are using. This means a version customized for your system must be assembled before use. However, the version as distributed @@ -3385,12 +3355,12 @@ usually store a day-of-week value, but it’s useless in this application for two reasons: first, the BIOS does not expose it. Second, there is no universally-accepted way to interpret it (which day does the week start on? Is ‘0’ a valid day of the week?)
-WDATE
WDATE <hr> <min>
WDATE <hr> <min> <sec>
WDATE <year> <month> <day> <hr> <min> <sec>
A> wdate
Saturday 27 May 13:14:39 2023
@@ -3423,7 +3393,7 @@ numbers, as RTC chips themselves usually do. wdate works in decimal, so
that it can check that the user input makes sense. A substantial part of
the program’s code is taken up by number format conversion and range
checking.
-The WDATE application was written and contributed by Kevin Boone. The
source code is available on GitHub at
https://github.com/kevinboone/wdate-cpm.
An adaptation of Ward Christensen’s X-Modem protocol for transferring files between systems using a serial port.
-XM S<filename>
XM SK<filename>
XM L<library> <filename>
@@ -3464,7 +3434,7 @@ operations) | X: Force 128-byte protocol (receive operations) |
For example, the following command will receive a file using checksums
on HBIOS character unit 3 and will name the received file MYFILE.TXT.
XM RC3 MYFILE.TXT
To transfer a file from your host computer to your RomWBW computer, do the following:
The XM application provided in RomWBW is an adaptation of a
pre-existing XModem application. Based on the source code comments, it
was originally adapted from Ward Christensen’s MODEM2 by Keith Petersen
@@ -3539,7 +3509,7 @@ driver.
NOTE: ZMD does not do ZModem transfers. The Z in ZMD refers to Z-System compatibility.
-ZMD \<mode>\<protocol>\<unit> [\<filename>]
where \<mode> can be:
S - Send file from BBS
@@ -3555,7 +3525,7 @@ Z-System compatibility.
K - Ymodem 1024 byte blocks (CRC only)
and \<unit> can specify a single digit (0-9) that specifies the RomWBW Character Unit to use for the file transfer.
-To transfer a file from your host computer to your RomWBW computer, do the following:
ZMD v1.50 was produced by Robert Kramer. The RomWBW adaptation just uses the RomWBW HBIOS serial API.
ZMP.
-ZMD [\<unit>]
\<unit> can specify a single digit (0-9) indicating the RomWBW Character Unit to use for the modem port.
-Refer to the file ZMP.DOC found on all disk images that include the
ZMP application.
ZMP. Instead, you should configure the HBIOS Charact
Unit using the RomWBW MODE command before launching ZMP.
ZMP is written in C. As a result, file transfers will be noticeably
slower than other assembly language file transfer tools.
ZMP was produced by Ron Murray and was based on HMODEM II. Wayne Hortensius updated the source to compile with the latest version of Hi-Tech C and implemented a few enhancements.
diff --git a/Catalog/index.html b/Catalog/index.html index 5445e1d7..f820a64f 100644 --- a/Catalog/index.html +++ b/Catalog/index.html @@ -332,7 +332,7 @@RomWBW Disk Catalog \ Version 3.6 \ Mark Pruden \& Mykl Orders () \ -27 Jun 2025
+30 Jun 2025This document is a reference to the files found on the disk media distributed with RomWBW. Specifically, RomWBW provides a set of floppy diff --git a/Hardware/index.html b/Hardware/index.html index 0c078416..065bf877 100644 --- a/Hardware/index.html +++ b/Hardware/index.html @@ -384,7 +384,7 @@
RomWBW Hardware \ Version 3.6 \ Wayne Warthen (wwarthen@gmail.com) \ -27 Jun 2025
+30 Jun 2025This section contains a summary of the system configuration target for diff --git a/Introduction/index.html b/Introduction/index.html index e82433dd..116e54b2 100644 --- a/Introduction/index.html +++ b/Introduction/index.html @@ -189,7 +189,7 @@
RomWBW Introduction \ Version 3.6 \ Wayne Warthen (wwarthen@gmail.com) \ -27 Jun 2025
+30 Jun 2025RomWBW software provides a complete, commercial quality implementation of CP/M (and work-alike) operating systems and applications for modern @@ -494,8 +494,8 @@ let me know if I missed you!
the /B bulk mode of disk assignment to the ASSIGN utility
diff --git a/SystemGuide/index.html b/SystemGuide/index.html index d6e58f97..ce158ce0 100644 --- a/SystemGuide/index.html +++ b/SystemGuide/index.html @@ -659,7 +659,7 @@RomWBW System Guide \ Version 3.6 \ Wayne Warthen (wwarthen@gmail.com) \ -27 Jun 2025
+30 Jun 2025The objective of RomWBW is to provide firmware, operating systems, and applications targeting the Z80 family of CPUs. The firmware, in the form diff --git a/UserGuide/index.html b/UserGuide/index.html index 47e88569..cba26666 100644 --- a/UserGuide/index.html +++ b/UserGuide/index.html @@ -535,7 +535,7 @@
RomWBW User Guide \ Version 3.6 \ Wayne Warthen (wwarthen@gmail.com) \ -27 Jun 2025
+30 Jun 2025This document is a general usage guide for the RomWBW software and is generally the best place to start with RomWBW.
@@ -834,14 +834,16 @@ any of the RomWBW operating systems or ROM applications. It also allows you to manage some basic settings of the system. To enter a command, just enter the command followed by \<enter>.For example, typing H<enter> will display a short command summary:
Boot [H=Help]: h
+Boot [H=Help]: H
L - List ROM Applications
D - Device Inventory
+ S - Slice Inventory
R - Reboot System
W - RomWBW Configure
I <u> [<c>] - Set Console Interface/Baud Rate
V [<n>] - View/Set HBIOS Diagnostic Verbosity
+ N - Network Boot
<u>[.<s>] - Boot Disk Unit/Slice
Likewise the L command (List ROM Applications) will display the list
@@ -857,7 +859,6 @@ ROM Applications:
B: BASIC
T: Tasty BASIC
P: Play a Game
- N: Network Boot
X: XModem Flash Updater
U: User App
@@ -922,10 +923,6 @@ prompt:
RomWBW Introduction \ Version 3.6 \ Wayne Warthen (wwarthen@gmail.com) \ -27 Jun 2025
+30 Jun 2025RomWBW software provides a complete, commercial quality implementation of CP/M (and work-alike) operating systems and applications for modern @@ -484,8 +484,8 @@ let me know if I missed you!
the /B bulk mode of disk assignment to the ASSIGN utility
@@ -684,5 +684,5 @@ control system to ensure their contributions are clearly documented. diff --git a/search/search_index.json b/search/search_index.json index 0103b377..e7bf489b 100644 --- a/search/search_index.json +++ b/search/search_index.json @@ -1 +1 @@ -{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"RomWBW Introduction \\ Version 3.6 \\ Wayne Warthen ( wwarthen@gmail.com ) \\ 27 Jun 2025 Overview RomWBW software provides a complete, commercial quality implementation of CP/M (and work-alike) operating systems and applications for modern Z80/180/280 retro-computing hardware systems. A wide variety of platforms are supported including those produced by these developer communities: RetroBrew Computers ( https://www.retrobrewcomputers.org ) RC2014 ( https://rc2014.co.uk ), RC2014-Z80 ( https://groups.google.com/g/rc2014-z80 ) Retro Computing ( https://groups.google.com/g/retro-comp ) Small Computer Central ( https://smallcomputercentral.com/ ) A complete list of the currently supported platforms is found in RomWBW Hardware . Description Primary Features By design, RomWBW isolates all of the hardware specific functions in the ROM chip itself. The ROM provides a hardware abstraction layer such that all of the operating systems and applications on a disk will run on any RomWBW-based system. To put it simply, you can take a disk (or CF/SD/USB Card) and move it between systems transparently. Supported hardware features of RomWBW include: Z80 Family CPUs including Z80, Z180, and Z280 Banked memory services for several banking designs Disk drivers for RAM, ROM, Floppy, IDE ATA/ATAPI, CF, SD, USB, Zip, Iomega Serial drivers including UART (16550-like), ASCI, ACIA, SIO Video drivers including TMS9918, SY6545, MOS8563, HD6445, Xosera Keyboard (PS/2) drivers via VT8242 or PPI interfaces Real time clock drivers including DS1302, BQ4845 Support for CP/NET networking using Wiznet, MT011 or Serial Built-in VT-100 terminal emulation support A dynamic disk drive letter assignment mechanism allows mapping operating system drive letters to any available disk media. Additionally, mass storage devices (IDE Disk, CF Card, SD Card, etc.) support the use of multiple slices (up to 256 per device). Each slice contains a complete CP/M filesystem and can be mapped independently to any drive letter. This overcomes the inherent size limitations in legacy OSes and allows up to 2GB of addressable storage on a single device, with up to 128MB accessible at any one time. Included Software Multiple disk images are provided in the distribution. Most disk images contain a complete, bootable, ready-to-run implementation of a specific operating system. A \u201ccombo\u201d disk image contains multiple slices, each with a full operating system implementation. If you use this disk image, you can easily pick whichever operating system you want to boot without changing media. Some of the included software: Operating Systems (CP/M 2.2, ZSDOS, NZ-COM, CP/M 3, ZPM3, Z3PLUS, QPM ) Support for other operating systems, p-System, FreeRTOS, and FUZIX. Programming Tools (Z80ASM, Turbo Pascal, Forth, Cowgol) C Compiler\u2019s including Aztec-C, and HI-TECH C Microsoft Basic Compiler, and Microsoft Fortran Some games such as Colossal Cave, Zork, etc Wordstar Word processing software Some of the provided software can be launched directly from the ROM firmware itself: System Monitor Operating Systems (CP/M 2.2, ZSDOS) ROM BASIC (Nascom BASIC and Tasty BASIC) ROM Forth A tool is provided that allows you to access a FAT-12/16/32 filesystem. The FAT filesystem may be coresident on the same disk media as RomWBW slices or on stand-alone media. This makes exchanging files with modern OSes such as Windows, MacOS, and Linux very easy. ROM Distribution The RomWBW Repository ( https://github.com/wwarthen/RomWBW ) on GitHub is the official distribution location for all project source and documentation. RomWBW is distributed as both source code and pre-built ROM and disk images. The pre-built ROM images distributed with RomWBW are based on the default system configurations as determined by the hardware provider/designer. The pre-built ROM firmware images are generally suitable for most users. The fully-built distribution releases are available on the RomWBW Releases Page ( https://github.com/wwarthen/RomWBW/releases ) of the repository. On this page, you will normally see a Development Snapshot as well as recent stable releases. Unless you have a specific reason, I suggest you stick to the most recent stable release. The asset named RomWBW-vX.X.X-Package.zip includes all pre-built ROM and Disk images as well as full source code. The other assets contain only source code and do not have the pre-built ROM or disk images. Distribution Directory Layout The RomWBW distribution is a compressed zip archive file organized in a set of directories. Each of these directories has its own ReadMe.txt file describing the contents in detail. In summary, these directories are: Directory Description Binary The final output files of the build process are placed here. Most importantly, the ROM images with the file names ending in \u201c.rom\u201d and disk images ending in .img. Doc Contains various detailed documentation, both RomWBW specifically as well as the operating systems and applications. Source Contains the source code files used to build the software and ROM images. Tools Contains the programs that are used by the build process or that may be useful in setting up your system. Building from Source It is also very easy to modify and build custom ROM images that fully tailor the firmware to your specific preferences. All tools required to build custom ROM firmware under Windows are included \u2013 no need to install assemblers, etc. The firmware can also be built using Linux or MacOS after confirming a few standard tools have been installed. Installation & Operation In general, installation of RomWBW on your platform is very simple. You just need to program your ROM with the correct ROM image from the RomWBW distribution. Subsequently, you can write disk images on your disk drives (IDE disk, CF Card, SD Card, etc.) which then provides even more functionality. Complete instructions for installation and operation of RomWBW are found in the RomWBW User Guide . It is also a good idea to review the Release Notes for helpful release-specific information. Documentation There are several documents that form the core of the RomWBW documentation: RomWBW User Guide is the main user guide for RomWBW, it covers the major topics of how to install, manage and use RomWBW, and includes additional guidance to the use of some of the operating systems supported by RomWBW RomWBW Hardware contains a description of all the hardware platforms, and devices supported by RomWBW. RomWBW Applications is a reference for the ROM-hosted and OS-hosted applications created or customized to enhance the operation of RomWBW. RomWBW Disk Catalog is a reference for the contents of the disk images provided with RomWBW, with a description of many of the files on each image RomWBW System Guide discusses much of the internal design and construction of RomWBW. It includes a reference for the RomWBW HBIOS API functions. An online HTML version of this documentation is hosted at https://wwarthen.github.io/RomWBW . Each of the operating systems and ROM applications included with RomWBW are sophisticated tools in their own right. It is not reasonable to fully document their usage. However, you will find complete manuals in PDF format in the Doc directory of the distribution. The intention of this documentation is to describe the operation of RomWBW and the ways in which it enhances the operation of the included applications and operating systems. Since RomWBW is purely a software product for many different platforms, the documentation does not cover hardware construction, configuration, or troubleshooting \u2013 please see your hardware provider for this information. Support Getting Assistance The best way to get assistance with RomWBW or any aspect of the RetroBrew Computers projects is via one of the community forums: RetroBrew Computers Forum RC2014 Google Group retro-comp Google Group Submission of issues and bugs are welcome at the RomWBW GitHub Repository . Also feel free to email Wayne Warthen at wwarthen@gmail.com . I am happy to provide support adapting RomWBW to new or modified systems Contributions All source code and distributions are maintained on GitHub. Contributions of all kinds to RomWBW are very welcome. Acknowledgments I want to acknowledge that a great deal of the code and inspiration for RomWBW has been provided by or derived from the work of others in the RetroBrew Computers Community. I sincerely appreciate all of their contributions. The list below is probably missing many names \u2013 please let me know if I missed you! Andrew Lynch started it all when he created the N8VEM Z80 SBC which became the first platform RomWBW supported. Some of his original code can still be found in RomWBW. Dan Werner wrote much of the code from which RomWBW was originally derived and he has always been a great source of knowledge and advice. Douglas Goodall contributed code, time, testing, and advice in \u201cthe early days\u201d. He created an entire suite of application programs to enhance the use of RomWBW. Unfortunately, they have become unusable due to internal changes within RomWBW. As of RomWBW 2.6, these applications are no longer provided. Sergey Kiselev created several hardware platforms for RomWBW including the very popular Zeta. David Giles created support for the Z180 CSIO which is now included SD Card driver. Phil Summers contributed the Forth and BASIC adaptations in ROM, the AY-3-8910 sound driver, DMA support, and a long list of general code and documentation enhancements. Ed Brindley contributed some of the code that supports the RCBus platform. Spencer Owen created the RC2014 series of hobbyist kit computers which has exponentially increased RomWBW usage. Some of his kits include RomWBW. Stephen Cousins has likewise created a series of hobbyist kit computers at Small Computer Central and is distributing RomWBW with many of them. Alan Cox has contributed some driver code and has provided a great deal of advice. The CP/NET client files were developed by Douglas Miller. Phillip Stevens contributed support for FreeRTOS. Curt Mayer contributed the original Linux / MacOS build process. UNA BIOS and FDISK80 are the products of John Coffman. FLASH4 is a product of Will Sowerbutts. CLRDIR is a product of Max Scane. Tasty Basic is a product of Dimitri Theulings. Dean Netherton contributed eZ80 CPU support, the sound driver interface, and the SN76489 sound driver. The RomWBW Disk Catalog document was produced by Mykl Orders. Rob Prouse has created many of the supplemental disk images including Aztec C, HiTech C, SLR Z80ASM, Turbo Pascal, Microsoft BASIC Compiler, Microsoft Fortran Compiler, and a Games compendium. Martin R has provided substantial help reviewing and improving the User Guide and Applications documents. Mark Pruden has made a wide variety of contributions including: significant content in the Disk Catalog and User Guide creation of the Introduction and Hardware documents Z3PLUS operating system disk image COPYSL utility SLABEL utility a feature for RomWBW configuration by NVRAM the /B bulk mode of disk assignment to the ASSIGN utility Jacques Pelletier has contributed the DS1501 RTC driver code. Jose Collado has contributed enhancements to the TMS driver including compatibility with standard TMS register configuration. Kevin Boone has contributed a generic HBIOS date/time utility (WDATE). Matt Carroll has contributed a fix to XM.COM that corrects the port specification when doing a send. Dean Jenkins enhanced the build process to accommodate the Raspberry Pi 4. Tom Plano has contributed a new utility (HTALK) to allow talking directly to HBIOS COM ports. Lars Nelson has contributed several generic utilities such as a universal (OS agnostic) UNARC application. Dylan Hall added support for specifying a secondary console. Bill Shen has contributed boot loaders for several of his systems. Laszlo Szolnoki has contributed an EF9345 video display controller driver. Ladislau Szilagyi has contributed an enhanced version of CP/M Cowgol that leverages RomWBW memory banking. Les Bird has contributed support for the NABU w/ Option Board Rob Gowin created an online documentation site via MkDocs, and contributed a driver for the Xosera FPGA-based video controller. J\u00f6rg Linder has contributed disassembled and nicely commented source for ZSDOS2 and the BPBIOS utilities. Related Projects Outside of the hardware platforms adapted to RomWBW, there are a variety of projects that either target RomWBW specifically or provide a RomWBW-specific variation. These efforts are greatly appreciated and are listed below. Please contact the author if there are any other such projects that are not listed. Z88DK Z88DK is a software powerful development kit for Z80 computers supporting both C and assembly language. This kit now provides specific library support for RomWBW HBIOS. The Z88DK project is hosted at https://github.com/z88dk/z88dk . Paleo Editor Steve Garcia has created a Windows-hosted IDE that is tailored to development of RomWBW. The project can be found at https://github.com/alloidian/PaleoEditor . Z80 fig-FORTH Dimitri Theulings\u2019 implementation of fig-FORTH for the Z80 has a RomWBW-specific variant. The project is hosted at https://github.com/dimitrit/figforth . Assembly Language Programming for the RC2014 Zed Bruce Hall has written a very nice document that describes how to develop assembly language applications on RomWBW. It begins with the setup and configuration of a new RC2014 Zed system running RomWBW. It describes not only generic CP/M application development, but also RomWBW HBIOS programming and bare metal programming. The latest copy of this document is hosted at http://w8bh.net/Assembly for RC2014Z.pdf . Licensing License Terms RomWBW is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. RomWBW is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with RomWBW. If not, see https://www.gnu.org/licenses/ . Portions of RomWBW were created by, contributed by, or derived from the work of others. It is believed that these works are being used in accordance with the intentions and/or licensing of their creators. If anyone feels their work is being used outside of its intended licensing, please notify: Wayne Warthen wwarthen@gmail.com RomWBW is an aggregate work. It is composed of many individual, standalone programs that are distributed as a whole to function as a cohesive system. Each program may have its own licensing which may be different from other programs within the aggregate. In some cases, a single program (e.g., CP/M Operating System) is composed of multiple components with different licenses. It is believed that in all such cases the licenses are compatible with GPL version 3. RomWBW encourages code contributions from others. Contributors may assert their own copyright in their contributions by annotating the contributed source code appropriately. Contributors are further encouraged to submit their contributions via the RomWBW source code control system to ensure their contributions are clearly documented. All contributions to RomWBW are subject to this license.","title":"Home"},{"location":"#overview","text":"RomWBW software provides a complete, commercial quality implementation of CP/M (and work-alike) operating systems and applications for modern Z80/180/280 retro-computing hardware systems. A wide variety of platforms are supported including those produced by these developer communities: RetroBrew Computers ( https://www.retrobrewcomputers.org ) RC2014 ( https://rc2014.co.uk ), RC2014-Z80 ( https://groups.google.com/g/rc2014-z80 ) Retro Computing ( https://groups.google.com/g/retro-comp ) Small Computer Central ( https://smallcomputercentral.com/ ) A complete list of the currently supported platforms is found in RomWBW Hardware .","title":"Overview"},{"location":"#description","text":"","title":"Description"},{"location":"#primary-features","text":"By design, RomWBW isolates all of the hardware specific functions in the ROM chip itself. The ROM provides a hardware abstraction layer such that all of the operating systems and applications on a disk will run on any RomWBW-based system. To put it simply, you can take a disk (or CF/SD/USB Card) and move it between systems transparently. Supported hardware features of RomWBW include: Z80 Family CPUs including Z80, Z180, and Z280 Banked memory services for several banking designs Disk drivers for RAM, ROM, Floppy, IDE ATA/ATAPI, CF, SD, USB, Zip, Iomega Serial drivers including UART (16550-like), ASCI, ACIA, SIO Video drivers including TMS9918, SY6545, MOS8563, HD6445, Xosera Keyboard (PS/2) drivers via VT8242 or PPI interfaces Real time clock drivers including DS1302, BQ4845 Support for CP/NET networking using Wiznet, MT011 or Serial Built-in VT-100 terminal emulation support A dynamic disk drive letter assignment mechanism allows mapping operating system drive letters to any available disk media. Additionally, mass storage devices (IDE Disk, CF Card, SD Card, etc.) support the use of multiple slices (up to 256 per device). Each slice contains a complete CP/M filesystem and can be mapped independently to any drive letter. This overcomes the inherent size limitations in legacy OSes and allows up to 2GB of addressable storage on a single device, with up to 128MB accessible at any one time.","title":"Primary Features"},{"location":"#included-software","text":"Multiple disk images are provided in the distribution. Most disk images contain a complete, bootable, ready-to-run implementation of a specific operating system. A \u201ccombo\u201d disk image contains multiple slices, each with a full operating system implementation. If you use this disk image, you can easily pick whichever operating system you want to boot without changing media. Some of the included software: Operating Systems (CP/M 2.2, ZSDOS, NZ-COM, CP/M 3, ZPM3, Z3PLUS, QPM ) Support for other operating systems, p-System, FreeRTOS, and FUZIX. Programming Tools (Z80ASM, Turbo Pascal, Forth, Cowgol) C Compiler\u2019s including Aztec-C, and HI-TECH C Microsoft Basic Compiler, and Microsoft Fortran Some games such as Colossal Cave, Zork, etc Wordstar Word processing software Some of the provided software can be launched directly from the ROM firmware itself: System Monitor Operating Systems (CP/M 2.2, ZSDOS) ROM BASIC (Nascom BASIC and Tasty BASIC) ROM Forth A tool is provided that allows you to access a FAT-12/16/32 filesystem. The FAT filesystem may be coresident on the same disk media as RomWBW slices or on stand-alone media. This makes exchanging files with modern OSes such as Windows, MacOS, and Linux very easy.","title":"Included Software"},{"location":"#rom-distribution","text":"The RomWBW Repository ( https://github.com/wwarthen/RomWBW ) on GitHub is the official distribution location for all project source and documentation. RomWBW is distributed as both source code and pre-built ROM and disk images. The pre-built ROM images distributed with RomWBW are based on the default system configurations as determined by the hardware provider/designer. The pre-built ROM firmware images are generally suitable for most users. The fully-built distribution releases are available on the RomWBW Releases Page ( https://github.com/wwarthen/RomWBW/releases ) of the repository. On this page, you will normally see a Development Snapshot as well as recent stable releases. Unless you have a specific reason, I suggest you stick to the most recent stable release. The asset named RomWBW-vX.X.X-Package.zip includes all pre-built ROM and Disk images as well as full source code. The other assets contain only source code and do not have the pre-built ROM or disk images.","title":"ROM Distribution"},{"location":"#distribution-directory-layout","text":"The RomWBW distribution is a compressed zip archive file organized in a set of directories. Each of these directories has its own ReadMe.txt file describing the contents in detail. In summary, these directories are: Directory Description Binary The final output files of the build process are placed here. Most importantly, the ROM images with the file names ending in \u201c.rom\u201d and disk images ending in .img. Doc Contains various detailed documentation, both RomWBW specifically as well as the operating systems and applications. Source Contains the source code files used to build the software and ROM images. Tools Contains the programs that are used by the build process or that may be useful in setting up your system.","title":"Distribution Directory Layout"},{"location":"#building-from-source","text":"It is also very easy to modify and build custom ROM images that fully tailor the firmware to your specific preferences. All tools required to build custom ROM firmware under Windows are included \u2013 no need to install assemblers, etc. The firmware can also be built using Linux or MacOS after confirming a few standard tools have been installed.","title":"Building from Source"},{"location":"#installation-operation","text":"In general, installation of RomWBW on your platform is very simple. You just need to program your ROM with the correct ROM image from the RomWBW distribution. Subsequently, you can write disk images on your disk drives (IDE disk, CF Card, SD Card, etc.) which then provides even more functionality. Complete instructions for installation and operation of RomWBW are found in the RomWBW User Guide . It is also a good idea to review the Release Notes for helpful release-specific information.","title":"Installation & Operation"},{"location":"#documentation","text":"There are several documents that form the core of the RomWBW documentation: RomWBW User Guide is the main user guide for RomWBW, it covers the major topics of how to install, manage and use RomWBW, and includes additional guidance to the use of some of the operating systems supported by RomWBW RomWBW Hardware contains a description of all the hardware platforms, and devices supported by RomWBW. RomWBW Applications is a reference for the ROM-hosted and OS-hosted applications created or customized to enhance the operation of RomWBW. RomWBW Disk Catalog is a reference for the contents of the disk images provided with RomWBW, with a description of many of the files on each image RomWBW System Guide discusses much of the internal design and construction of RomWBW. It includes a reference for the RomWBW HBIOS API functions. An online HTML version of this documentation is hosted at https://wwarthen.github.io/RomWBW . Each of the operating systems and ROM applications included with RomWBW are sophisticated tools in their own right. It is not reasonable to fully document their usage. However, you will find complete manuals in PDF format in the Doc directory of the distribution. The intention of this documentation is to describe the operation of RomWBW and the ways in which it enhances the operation of the included applications and operating systems. Since RomWBW is purely a software product for many different platforms, the documentation does not cover hardware construction, configuration, or troubleshooting \u2013 please see your hardware provider for this information.","title":"Documentation"},{"location":"#support","text":"","title":"Support"},{"location":"#getting-assistance","text":"The best way to get assistance with RomWBW or any aspect of the RetroBrew Computers projects is via one of the community forums: RetroBrew Computers Forum RC2014 Google Group retro-comp Google Group Submission of issues and bugs are welcome at the RomWBW GitHub Repository . Also feel free to email Wayne Warthen at wwarthen@gmail.com . I am happy to provide support adapting RomWBW to new or modified systems","title":"Getting Assistance"},{"location":"#contributions","text":"All source code and distributions are maintained on GitHub. Contributions of all kinds to RomWBW are very welcome.","title":"Contributions"},{"location":"#acknowledgments","text":"I want to acknowledge that a great deal of the code and inspiration for RomWBW has been provided by or derived from the work of others in the RetroBrew Computers Community. I sincerely appreciate all of their contributions. The list below is probably missing many names \u2013 please let me know if I missed you! Andrew Lynch started it all when he created the N8VEM Z80 SBC which became the first platform RomWBW supported. Some of his original code can still be found in RomWBW. Dan Werner wrote much of the code from which RomWBW was originally derived and he has always been a great source of knowledge and advice. Douglas Goodall contributed code, time, testing, and advice in \u201cthe early days\u201d. He created an entire suite of application programs to enhance the use of RomWBW. Unfortunately, they have become unusable due to internal changes within RomWBW. As of RomWBW 2.6, these applications are no longer provided. Sergey Kiselev created several hardware platforms for RomWBW including the very popular Zeta. David Giles created support for the Z180 CSIO which is now included SD Card driver. Phil Summers contributed the Forth and BASIC adaptations in ROM, the AY-3-8910 sound driver, DMA support, and a long list of general code and documentation enhancements. Ed Brindley contributed some of the code that supports the RCBus platform. Spencer Owen created the RC2014 series of hobbyist kit computers which has exponentially increased RomWBW usage. Some of his kits include RomWBW. Stephen Cousins has likewise created a series of hobbyist kit computers at Small Computer Central and is distributing RomWBW with many of them. Alan Cox has contributed some driver code and has provided a great deal of advice. The CP/NET client files were developed by Douglas Miller. Phillip Stevens contributed support for FreeRTOS. Curt Mayer contributed the original Linux / MacOS build process. UNA BIOS and FDISK80 are the products of John Coffman. FLASH4 is a product of Will Sowerbutts. CLRDIR is a product of Max Scane. Tasty Basic is a product of Dimitri Theulings. Dean Netherton contributed eZ80 CPU support, the sound driver interface, and the SN76489 sound driver. The RomWBW Disk Catalog document was produced by Mykl Orders. Rob Prouse has created many of the supplemental disk images including Aztec C, HiTech C, SLR Z80ASM, Turbo Pascal, Microsoft BASIC Compiler, Microsoft Fortran Compiler, and a Games compendium. Martin R has provided substantial help reviewing and improving the User Guide and Applications documents. Mark Pruden has made a wide variety of contributions including: significant content in the Disk Catalog and User Guide creation of the Introduction and Hardware documents Z3PLUS operating system disk image COPYSL utility SLABEL utility a feature for RomWBW configuration by NVRAM the /B bulk mode of disk assignment to the ASSIGN utility Jacques Pelletier has contributed the DS1501 RTC driver code. Jose Collado has contributed enhancements to the TMS driver including compatibility with standard TMS register configuration. Kevin Boone has contributed a generic HBIOS date/time utility (WDATE). Matt Carroll has contributed a fix to XM.COM that corrects the port specification when doing a send. Dean Jenkins enhanced the build process to accommodate the Raspberry Pi 4. Tom Plano has contributed a new utility (HTALK) to allow talking directly to HBIOS COM ports. Lars Nelson has contributed several generic utilities such as a universal (OS agnostic) UNARC application. Dylan Hall added support for specifying a secondary console. Bill Shen has contributed boot loaders for several of his systems. Laszlo Szolnoki has contributed an EF9345 video display controller driver. Ladislau Szilagyi has contributed an enhanced version of CP/M Cowgol that leverages RomWBW memory banking. Les Bird has contributed support for the NABU w/ Option Board Rob Gowin created an online documentation site via MkDocs, and contributed a driver for the Xosera FPGA-based video controller. J\u00f6rg Linder has contributed disassembled and nicely commented source for ZSDOS2 and the BPBIOS utilities.","title":"Acknowledgments"},{"location":"#related-projects","text":"Outside of the hardware platforms adapted to RomWBW, there are a variety of projects that either target RomWBW specifically or provide a RomWBW-specific variation. These efforts are greatly appreciated and are listed below. Please contact the author if there are any other such projects that are not listed.","title":"Related Projects"},{"location":"#z88dk","text":"Z88DK is a software powerful development kit for Z80 computers supporting both C and assembly language. This kit now provides specific library support for RomWBW HBIOS. The Z88DK project is hosted at https://github.com/z88dk/z88dk .","title":"Z88DK"},{"location":"#paleo-editor","text":"Steve Garcia has created a Windows-hosted IDE that is tailored to development of RomWBW. The project can be found at https://github.com/alloidian/PaleoEditor .","title":"Paleo Editor"},{"location":"#z80-fig-forth","text":"Dimitri Theulings\u2019 implementation of fig-FORTH for the Z80 has a RomWBW-specific variant. The project is hosted at https://github.com/dimitrit/figforth .","title":"Z80 fig-FORTH"},{"location":"#assembly-language-programming-for-the-rc2014-zed","text":"Bruce Hall has written a very nice document that describes how to develop assembly language applications on RomWBW. It begins with the setup and configuration of a new RC2014 Zed system running RomWBW. It describes not only generic CP/M application development, but also RomWBW HBIOS programming and bare metal programming. The latest copy of this document is hosted at http://w8bh.net/Assembly for RC2014Z.pdf .","title":"Assembly Language Programming for the RC2014 Zed"},{"location":"#licensing","text":"","title":"Licensing"},{"location":"#license-terms","text":"RomWBW is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. RomWBW is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with RomWBW. If not, see https://www.gnu.org/licenses/ . Portions of RomWBW were created by, contributed by, or derived from the work of others. It is believed that these works are being used in accordance with the intentions and/or licensing of their creators. If anyone feels their work is being used outside of its intended licensing, please notify: Wayne Warthen wwarthen@gmail.com RomWBW is an aggregate work. It is composed of many individual, standalone programs that are distributed as a whole to function as a cohesive system. Each program may have its own licensing which may be different from other programs within the aggregate. In some cases, a single program (e.g., CP/M Operating System) is composed of multiple components with different licenses. It is believed that in all such cases the licenses are compatible with GPL version 3. RomWBW encourages code contributions from others. Contributors may assert their own copyright in their contributions by annotating the contributed source code appropriately. Contributors are further encouraged to submit their contributions via the RomWBW source code control system to ensure their contributions are clearly documented. All contributions to RomWBW are subject to this license.","title":"License Terms"},{"location":"Applications/","text":"RomWBW Applications Guide \\ Version 3.6 \\ MartinR \\& Phillip Summers ( ) \\ 27 Jun 2025 Summary RomWBW is supplied with a suite of software applications that enhance the use of the system. Some of these applications have been written entirely from scratch for RomWBW. Others are pre-existing software that has been customized for the RomWBW environment. This document serves as a reference for these RomWBW-specific applications. The primary usage documentation for RomWBW is the RomWBW User Guide . It is assumed that the reader is generally familiar with this document. RomWBW also includes many generic software applications that have not been modified for RomWBW (e.g., MSBASIC). These generic applications are not documented here. Please refer to the application specific documentation for these generic applications. The documentation for some of these generic applications is included in the Doc folder of the RomWBW distribution. The applications described in this document fall into two general categories. ROM Applications are software applications that are loaded from the the ROM memory of your RomWBW system. CP/M Applications are software applications that are loaded from disk using a previously loaded CP/M (or CP/M like) operating system using its command line. Note that some applications are available in both forms. For example, Microsoft BASIC is available as a ROM application and as an application that runs under CP/M. Only the ROM variant is documented here because the CP/M variant is not RomWBW-specific. You will see that two of the RomWBW operating systems are included here as ROM Applications. Although operating systems are normally loaded from disk, RomWBW does include a way to launch CP/M 2.2 and Z-System directly from ROM. Most RomWBW systems include a ROM disk. A running operating system can load applications from the ROM disk just like a floppy or hard disk. Applications loaded from the ROM disk by CP/M are considered to be CP/M applications, not ROM applications. Boot Menu The system start-up process is described in some detail in the RomWBW User Guide, and for the sake of completeness there is some overlap here. When a RomWBW system is started the user is presented with a sign-on message at the default console detailing the RomWBW version and build date. The system follows this with the list of hardware that it has discovered, a list of devices and the system units assigned to them, before finally inviting the to select a boot device with the prompt: Boot [H=Help]: At this point, the user may specify a unit, optionally with a slice, to boot from. Note that it is not possible to boot from from the serial (ASCI) or memory disk (MD) devices. Alternatively the user may select one of the built-in Boot Loader commands. A menu of which may be displayed by pressing the H or ? keys (for Help). Furthermore, a ROM application may also be started from this prompt. This start-up process is described in some detailed in the RomWBW User Guide, and there is some overlap here. Help After pressing H or ? at the boot prompt the user will be presented with the following list of available commands: L - List ROM Applications D - Device Inventory R - Reboot System I [