mirror of https://github.com/wwarthen/RomWBW.git
6 changed files with 921 additions and 918 deletions
Binary file not shown.
Binary file not shown.
@ -1,431 +1,431 @@ |
|||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
**RomWBW Introduction** \ |
|
||||
Version 3.6 \ |
|
||||
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \ |
|
||||
19 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) |
|
||||
(<https://www.retrobrewcomputers.org>) |
|
||||
- [RC2014](https://rc2014.co.uk) (<https://rc2014.co.uk>), |
|
||||
[RC2014-Z80](https://groups.google.com/g/rc2014-z80) |
|
||||
(<https://groups.google.com/g/rc2014-z80>) |
|
||||
- [Retro Computing](https://groups.google.com/g/retro-comp) |
|
||||
(<https://groups.google.com/g/retro-comp>) |
|
||||
- [Small Computer Central](https://smallcomputercentral.com/) |
|
||||
(<https://smallcomputercentral.com/>) |
|
||||
|
|
||||
A complete list of the currently supported platforms is found in [RomWBW |
|
||||
Hardware](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20Hardware.pdf) |
|
||||
. |
|
||||
|
|
||||
# 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 “combo” 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’s 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) |
|
||||
(<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) |
|
||||
(<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 “.rom” 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 – 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](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20User%20Guide.pdf). |
|
||||
It is also a good idea to review the [Release |
|
||||
Notes](https://github.com/wwarthen/RomWBW/blob/master/RELEASE_NOTES.md) |
|
||||
for helpful release-specific information. |
|
||||
|
|
||||
## Documentation |
|
||||
|
|
||||
There are several documents that form the core of the RomWBW |
|
||||
documentation: |
|
||||
|
|
||||
- [RomWBW User |
|
||||
Guide](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20User%20Guide.pdf) |
|
||||
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](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20Hardware.pdf) |
|
||||
contains a description of all the hardware platforms, and devices |
|
||||
supported by RomWBW. |
|
||||
|
|
||||
- [RomWBW |
|
||||
Applications](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20Applications.pdf) |
|
||||
is a reference for the ROM-hosted and OS-hosted applications created |
|
||||
or customized to enhance the operation of RomWBW. |
|
||||
|
|
||||
- [RomWBW Disk |
|
||||
Catalog](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20Disk%20Catalog.pdf) |
|
||||
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](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20System%20Guide.pdf) |
|
||||
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 – 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](https://www.retrobrewcomputers.org/forum/) |
|
||||
- [RC2014 Google |
|
||||
Group](https://groups.google.com/forum/#!forum/rc2014-z80) |
|
||||
- [retro-comp Google |
|
||||
Group](https://groups.google.com/forum/#!forum/retro-comp) |
|
||||
|
|
||||
Submission of issues and bugs are welcome at the [RomWBW GitHub |
|
||||
Repository](https://github.com/wwarthen/RomWBW). |
|
||||
|
|
||||
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 – 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 “the |
|
||||
early days”. 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örg 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’ 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](http://w8bh.net/Assembly%20for%20RC2014Z.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. |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
**RomWBW Introduction** \ |
||||
|
Version 3.6 \ |
||||
|
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \ |
||||
|
29 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) |
||||
|
(<https://www.retrobrewcomputers.org>) |
||||
|
- [RC2014](https://rc2014.co.uk) (<https://rc2014.co.uk>), |
||||
|
[RC2014-Z80](https://groups.google.com/g/rc2014-z80) |
||||
|
(<https://groups.google.com/g/rc2014-z80>) |
||||
|
- [Retro Computing](https://groups.google.com/g/retro-comp) |
||||
|
(<https://groups.google.com/g/retro-comp>) |
||||
|
- [Small Computer Central](https://smallcomputercentral.com/) |
||||
|
(<https://smallcomputercentral.com/>) |
||||
|
|
||||
|
A complete list of the currently supported platforms is found in [RomWBW |
||||
|
Hardware](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20Hardware.pdf) |
||||
|
. |
||||
|
|
||||
|
# 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 “combo” 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’s 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) |
||||
|
(<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) |
||||
|
(<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 “.rom” 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 – 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](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20User%20Guide.pdf). |
||||
|
It is also a good idea to review the [Release |
||||
|
Notes](https://github.com/wwarthen/RomWBW/blob/master/RELEASE_NOTES.md) |
||||
|
for helpful release-specific information. |
||||
|
|
||||
|
## Documentation |
||||
|
|
||||
|
There are several documents that form the core of the RomWBW |
||||
|
documentation: |
||||
|
|
||||
|
- [RomWBW User |
||||
|
Guide](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20User%20Guide.pdf) |
||||
|
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](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20Hardware.pdf) |
||||
|
contains a description of all the hardware platforms, and devices |
||||
|
supported by RomWBW. |
||||
|
|
||||
|
- [RomWBW |
||||
|
Applications](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20Applications.pdf) |
||||
|
is a reference for the ROM-hosted and OS-hosted applications created |
||||
|
or customized to enhance the operation of RomWBW. |
||||
|
|
||||
|
- [RomWBW Disk |
||||
|
Catalog](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20Disk%20Catalog.pdf) |
||||
|
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](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20System%20Guide.pdf) |
||||
|
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 – 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](https://www.retrobrewcomputers.org/forum/) |
||||
|
- [RC2014 Google |
||||
|
Group](https://groups.google.com/forum/#!forum/rc2014-z80) |
||||
|
- [retro-comp Google |
||||
|
Group](https://groups.google.com/forum/#!forum/retro-comp) |
||||
|
|
||||
|
Submission of issues and bugs are welcome at the [RomWBW GitHub |
||||
|
Repository](https://github.com/wwarthen/RomWBW). |
||||
|
|
||||
|
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 – 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 “the |
||||
|
early days”. 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, and SLABEL utilities |
||||
|
- Display of bootable slices via “S” command during startup |
||||
|
- 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örg 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’ 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](http://w8bh.net/Assembly%20for%20RC2014Z.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. |
||||
|
|||||
@ -1,441 +1,441 @@ |
|||||
RomWBW Introduction |
|
||||
Wayne Warthen (wwarthen@gmail.com) |
|
||||
19 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 “combo” 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’s 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 “.rom” 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 – 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 – 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 – 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 “the |
|
||||
early days”. 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örg 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’ 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. |
|
||||
|
RomWBW Introduction |
||||
|
Wayne Warthen (wwarthen@gmail.com) |
||||
|
29 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 “combo” 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’s 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 “.rom” 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 – 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 – 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 – 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 “the |
||||
|
early days”. 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, and SLABEL utilities |
||||
|
- Display of bootable slices via “S” command during startup |
||||
|
- 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örg 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’ 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. |
||||
|
|||||
Loading…
Reference in new issue