From 04df028ce4c5647a37564fdcc534a20775638b15 Mon Sep 17 00:00:00 2001
From: wwarthen RomWBW Applications Guide \
Version 3.6 \
MartinR \& Phillip Summers () \
-22 Oct 2025
RomWBW is supplied with a suite of software applications that enhance the use of the system. Some of these applications have been written @@ -625,7 +625,7 @@ contents in hexadecimal.
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
+will be echoed back to the terminal. File downloads will be echoed as
well while this facility is ‘on’.
L - Load a Intel Hex data via the terminal program. The load
@@ -647,8 +647,8 @@ operation and is the companion to the I operation. Use clip leaded LEDs
to confirm the data written.
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.
The limitation around programming memory is that it must be entered in 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.
@@ -739,14 +739,13 @@ directory.TastyBASIC offers a minimal implementation of BASIC that is only 2304 bytes in size. It originates from Li-Chen Wang’s Palo Alto Tiny BASIC -from around 1976. It’s small size is suited the tiny memory capacities -of the time. This implementation is by Dimitri Theulings and his -original source can be found at -https://github.com/dimitrit/tastybasic.
+from around 1976. It’s small size suited the tiny memory capacities of +the time. This implementation is by Dimitri Theulings and his original +source can be found at https://github.com/dimitrit/tastybasic.When your console is the serial device used for the transfer, no progress information is displayed as this would disrupt the x-modem file -transfer. If you use an alternate character-input/output devices as the +transfer. If you use an alternate character-input/output device as the serial device for the transfer then progress information will be displayed on the console device.
-Due to different platform processor speeds, serials speeds and flow +
Due to different platform processor speeds, serial speeds and flow control capabilities the default console or serial device speed may need to be reduced for a successful transfer and flash to occur. The Set Console Interface/Baud code option at the Boot Loader can be used to @@ -1060,12 +1059,12 @@ that progress information can be displayed during the transfer.
Option ( \< ) - Revert to Original Baud Rate
Option ( U ) - Begin Update
-The will begin the update process. The updater will expect to start +
This will begin the update process. The updater will expect to start receiving an x-modem file on the serial device unit.
X-modem sends the file in packets of 128 bytes. The updater will cache 32 packets which is 1 flash sector and then write that sector to the flash device.
-If using separate console, bank and sector progress information will +
If using separate console, bank and sector progress information will be shown
BANK 00 s00 s01 s02 s03 s04 s05 s06 s06 s07
BANK 01 s00 s01 s02 s03 s04 s05 s06 s06 s07
@@ -1105,7 +1104,7 @@ ROM. Option ( 3 ) - Calculate and display CRC32 of a 1024k (2x512Kb)
ROM.
Can be used to verify if a ROM image has been transferred and flashed
correctly. Refer to the Tera Term section below for details on
-configuring the automatic display of a files CRC after it has been
+configuring the automatic display of a file’s CRC after it has been
transferred.
In Windows, right clicking on a file should also give you a context menu
option CRC SHA which will allow you to select a CRC32 calculation to be
@@ -1120,7 +1119,7 @@ be worthwhile if you are:
Doing development on RomWBW drivers
Macros can be used to automate sending ROM updates or images and for my
-own purposed I have set up a separate macro for transferring each of the
+own purpose I have set up a separate macro for transferring each of the
standard build ROM, my own custom configuration ROM and update ROM.
An example macro file to send an *.upd file, using checksum mode and
display the crc32 value of the transmitted file:
@@ -1217,13 +1216,17 @@ following guidelines.
table if desired. Feedback to the RomWBW developers on these guidelines
would be appreciated.
Notes
-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
+
+- 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
+
User Application
RomWBW provides the facility for a user to build, include and execute
their own custom application directly from the applications menu at
@@ -1252,7 +1255,7 @@ from the templated code.
If required, the user application may make use of the Z80 interrupt
system but if the user application wishes to rely on HBIOS functionality
then it must adhere to the HBIOS framework for managing interupts.
-Alternatively, if the user appliction has no need for the HBIOS then it
+Alternatively, if the user application has no need for the HBIOS then it
may use its own custom code for handling interrupts. In that case, a
hard reset, rather than an HBIOS warm start, would be necessary to
return control to RomWBW.
@@ -1447,12 +1450,12 @@ all contain essentially the same set of applications.
For systems starting CP/M from a disk created from an image file, there
are a small number of additional applications stored in the USER 2
area of the disk. These applications do not form part of CP/M, but
-rather are small utilities used for test purposes during develpment
-work. They may, or may not, fuction correctly with any given hardware or
-software configuration. Documentation for these untilities is very
-limited, though the source files maybe found in the /Source folder. Note
-that these utiltites are not available when starting CP/M from the ROM
-image or from a floppy disk.
+rather are small utilities used for test purposes during development
+work. They may, or may not, function correctly with any given hardware
+or software configuration. Documentation for these utilities is very
+limited, though the source files may be found in the /Source folder.
+Note that these utiltites are not available when starting CP/M from the
+ROM image or from a floppy disk.
A number of the CP/M applications available are described in more detail
in the following sections, each with an indication as to whether that
application may be found on the ROM-disk, a boot-disk, or both.
@@ -1825,21 +1828,20 @@ reboot of the system.
The functionality is highly dependent on the capabilities of your
system.
Syntax
-CPUSPD [<speed>[,[<memws>][,[<iows>]]]
+
CPUSPD [\<speed>[,[\<memws>][,[\<iows>]]]
CPUSPD (W)armBoot
CPUSPD (C)oldBoot
-<speed> is one of (H)alf, (F)ull, (D)ouble, or (Q)uad. <memws>
-is a number specifying the desired memory wait states. <iows> is a
-number specifying the desired I/O wait states.
+\<speed> is one of (H)alf, (F)ull, (D)ouble, or (Q)uad.
+\<memws> is a number specifying the desired memory wait states.
+\<iows> is a number specifying the desired I/O wait states.
Usage
Entering CPUSPD with no parameters will display the current CPU speed
and wait state information of the running system. Wait state information
is not available for all systems.
-To modify the running speed of a system, you can specify the
-** parameter. To modify either or both of the wait states,
-you can enter the desired number. Either or both of the wait state
-parameters may be omitted and the current wait state settings will
-remain in effect.
+To modify the running speed of a system, you can specify the \<speed>
+parameter. To modify either or both of the wait states, you can enter
+the desired number. Either or both of the wait state parameters may be
+omitted and the current wait state settings will remain in effect.
Notes
The ability to modify the running speed and wait states of a system
varies widely depending on the hardware capabilities and the HBIOS
@@ -1914,18 +1916,18 @@ not operate correctly on non-RomWBW systems.
The purpose of this utility is to allow the copying of whole disk slices
from one disk slice to another slice
-This tool is only supported by RomWBW HBIOS, it uses HBIOS for all its
+
This tool is only supported by RomWBW HBIOS; it uses HBIOS for all its
disk IO. UNA UBIOS is not supported by this tool.
This tool is running on CP/M 2.2 or 3.0 and has access to full 64kb of
RAM, with a minimum of 48kb TPA
-This tool only works with hard disk devices, other media types like
+
This tool only works with hard disk devices; other media types like
floppy, are not supported at this time. This tool works across different
hard disk device types, even of different physical type
Both hd1k and hd512 are fully supported, however copying from one layout
type to the other is not supported.
-During operation data is copied in a single read/write pass, data is not
-verified by default. If there is a write error, it will be reported, and
-operation will stop.
+During operation, data is copied in a single read/write pass; data is
+not verified by default. If there is a write error, it will be reported,
+and operation will stop.
Syntax
This tool operates at the disk level via RomWBW, thus all disk
identifiers are in the RomWBW \<disk>.\<unit> format.
@@ -1941,7 +1943,7 @@ unattended mode, so you will not be asked to confirm the copy operation.
U - Unattended. Will complete copy without confirmation from the user.
V - Verify. Does an additional read and verify after write.
Usage
-When run COPYSL will perform command line argument validation and
+
When run, COPYSL will perform command line argument validation and
display an error if they are illegal. Also any disk IO errors will cause
COPYSL to exit.
When specifying slice number(s) a check is made that the slice number is
@@ -2203,7 +2205,7 @@ in the RomWBW distribution.
Most of the hardware platforms that run RomWBW support the use of
-EEPROMs – Electronically Erasable Programmable ROMs. The FLASH
+EEPROMs – Electrically Erasable Programmable ROMs. The FLASH
application can be used to reprogram such ROMS in-situ (in-place), thus
making it possible to upgrade ROMs without a programmer or even removing
the ROM from your system.
@@ -2228,7 +2230,7 @@ file
/N8VEMSBC: Force N8VEM SBC (v1, v2), Zeta (v1) SBC bank switching
Usage
To program your EEPROM ROM chip, first transfer the file to your RomWBW
-system. Then use the command FLASH WRITE *`*. The
+system. Then use the command FLASH WRITE\<filename>. The
application will auto-detect the type of EEPROM chip you have, program
it, and verify it.
You can use the FLASH READ form of the command to read the ROM image
@@ -2546,7 +2548,7 @@ support most of the hardware variations included with RomWBW.
Display or change the label of a disk slice.
-The label applied is only used as informational purposes, displayed by
+
The label applied is only used for 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
@@ -2569,7 +2571,7 @@ 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
+OS that 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”.
Etymology
@@ -2642,7 +2644,7 @@ may fail to discover ports that are ‘write-only’.
System Configuration (SYSCONF) is a utility that allows system
-configuration to be set, dynamically and stored in NVRAM provided by an
+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
@@ -2672,8 +2674,6 @@ Commands:
(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
@@ -2688,7 +2688,7 @@ itself.
To exit from the application use the (Q)uit command.
The following are the accepted commands, unless otherwise specified a +
The following are the accepted commands, unless otherwise specified. A “Space” character is used to delimit parameters in the command.
| - | Timout | +Timeout | Timeout in seconds in the range 0-15, 0 = immediate |
| COLOR VDU TEST | |||
Z80TYPE.COM |
+Z80 Chip Variant Detection | +||
ZEXALL.COM |
Z80 Instruction Set Exerciser |
`{=latex}
The system comprises a Z80 retro computer board, and optonal VGA text video card, and PIO Keyboard and Sound Card. The system uses a custom 60 @@ -4316,13 +4320,25 @@ discovered by RomWBW in your system.
RomWBW Introduction \ Version 3.6 \ Wayne Warthen (wwarthen@gmail.com) \ -22 Oct 2025
+29 Oct 2025RomWBW software provides a complete, commercial quality implementation of CP/M (and work-alike) operating systems and applications for modern diff --git a/SystemGuide/index.html b/SystemGuide/index.html index ee40db5e..e793ae32 100644 --- a/SystemGuide/index.html +++ b/SystemGuide/index.html @@ -659,7 +659,7 @@
RomWBW System Guide \ Version 3.6 \ Wayne Warthen (wwarthen@gmail.com) \ -22 Oct 2025
+29 Oct 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 af843fb1..3779c784 100644 --- a/UserGuide/index.html +++ b/UserGuide/index.html @@ -527,7 +527,7 @@
RomWBW User Guide \ Version 3.6 \ Wayne Warthen (wwarthen@gmail.com) \ -22 Oct 2025
+29 Oct 2025This document is a general usage guide for the RomWBW software and is generally the best place to start with RomWBW.
diff --git a/index.html b/index.html index 10a80886..fd8065f8 100644 --- a/index.html +++ b/index.html @@ -179,7 +179,7 @@RomWBW Introduction \ Version 3.6 \ Wayne Warthen (wwarthen@gmail.com) \ -22 Oct 2025
+29 Oct 2025RomWBW software provides a complete, commercial quality implementation of CP/M (and work-alike) operating systems and applications for modern @@ -704,5 +704,5 @@ control system to ensure their contributions are clearly documented.
diff --git a/search/search_index.json b/search/search_index.json index 4434bd46..61bc3846 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 ) \\ 22 Oct 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, Microsoft Fortran, and Microsoft COBOL 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 multiple components: eZ80 CPU support Sound driver infrastructure SN76489 sound driver Native USB driver (keyboard, floppy, mass storage) 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 Infocom text adventure game disk image COPYSL, and SLABEL utilities Display of bootable slices via \u201cS\u201d command during startup Optimisations of HBIOS and CBIOS to reduce overall code size 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. Marshall Gates has contriubed sample program source files for all of the language disk images. Randy Merkel provided the ZSDOS Programmer\u2019s Manual as translated by Wayne Hortensius. Henk Berends added support for the MSX platform. 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, Microsoft Fortran, and Microsoft COBOL 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 multiple components: eZ80 CPU support Sound driver infrastructure SN76489 sound driver Native USB driver (keyboard, floppy, mass storage) 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 Infocom text adventure game disk image COPYSL, and SLABEL utilities Display of bootable slices via \u201cS\u201d command during startup Optimisations of HBIOS and CBIOS to reduce overall code size 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. Marshall Gates has contriubed sample program source files for all of the language disk images. Randy Merkel provided the ZSDOS Programmer\u2019s Manual as translated by Wayne Hortensius. Henk Berends added support for the MSX platform.","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 ( ) \\ 22 Oct 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. 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 (