Browse Source

Merge pull request #580 from kiwisincebirth/map/romldr-fix

Rom loader Improvements
pull/586/head
Wayne Warthen 7 months ago
committed by GitHub
parent
commit
666e7717f8
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. BIN
      Doc/RomWBW Applications.pdf
  2. BIN
      Doc/RomWBW User Guide.pdf
  3. 862
      ReadMe.md
  4. 882
      ReadMe.txt
  5. 89
      Source/Doc/Applications.md
  6. 6
      Source/Doc/UserGuide.md
  7. 41
      Source/HBIOS/romldr.asm
  8. 35
      Source/HBIOS/sysconf.asm

BIN
Doc/RomWBW Applications.pdf

Binary file not shown.

BIN
Doc/RomWBW User Guide.pdf

Binary file not shown.

862
ReadMe.md

@ -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.

882
ReadMe.txt

@ -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.

89
Source/Doc/Applications.md

@ -94,14 +94,17 @@ After pressing H or ? at the boot prompt the user will be presented with
the following list of available commands: the following list of available commands:
``` ```
L - List ROM Applications
D - Device Inventory
S - Slice Inventory
R - Reboot System
W - RomWBW Configure
I <u> [<c>] - Set Console Interface/Baud code
V [<n>] - View/Set HBIOS Diagnostic Verbosity
<u>[.<s>] - Boot Disk Unit/Slice
Boot [H=Help]: H
L - List ROM Applications
D - Device Inventory
S - Slice Inventory
R - Reboot System
W - RomWBW Configure
I <u> [<c>] - Set Console Interface/Baud code
V [<n>] - View/Set HBIOS Diagnostic Verbosity
N - Network Boot
<u>[.<s>] - Boot Disk Unit/Slice
``` ```
The function performed by each command is described below: The function performed by each command is described below:
@ -142,12 +145,21 @@ I:
optionally the Baud rate. This could be used to allow the system to be optionally the Baud rate. This could be used to allow the system to be
operated from a second console. operated from a second console.
V: V:
: Enables the display of invalid RomWBW HBIOS API calls. This option : Enables the display of invalid RomWBW HBIOS API calls. This option
is very unlikely to be used by a user and is used for development is very unlikely to be used by a user and is used for development
purposes. purposes.
N:
: Boot into CP/M via an RCBus Wiznet MT011 network module if configured.
Section 10 of the $doc_user$ provides complete instructions for setting
up a CP/NET based network under RomWBW including network booting.
And, finally, the system may be booted by specifying the unit number, And, finally, the system may be booted by specifying the unit number,
and optional slice, separated by a period('.'), of where the disk operating and optional slice, separated by a period('.'), of where the disk operating
system software is located - eg 2, 4.1, 5.3 system software is located - eg 2, 4.1, 5.3
@ -165,16 +177,19 @@ first displaying the menu.
The ROM applications available from the boot prompt are: The ROM applications available from the boot prompt are:
``` ```
M: Monitor
C: CP/M 2.2
Z: Z-System
B: BASIC
T: Tasty BASIC
F: Forth
P: Play a Game
N: Network Boot
X: XModem Flash Updater
U: User App
Boot [H=Help]: L
ROM Applications:
M: Monitor
Z: Z-System
C: CP/M 2.2
F: Forth
B: BASIC
T: Tasty BASIC
P: Play a Game
X: XModem Flash Updater
U: User App
``` ```
Each of these will now be described in greater detail. Each of these will now be described in greater detail.
@ -655,19 +670,6 @@ This is how I lost this game:
Press Q at any time to bring up the option to Quit or Restart the game. Press Q at any time to bring up the option to Quit or Restart the game.
## Network Boot
If your RomWBW system is equipped with an RCBus MT011 module, it is
possible to boot into CP/M 2.2 directly from a CP/NET network server.
This means that the operating system will be loaded directly from the
network server and all of your drive letters will be provided by the
network server.
This function requires substantial knowledge of CP/NET and it's
implementation within RomWBW. Section 10 of the $doc_user$ provides
complete instructions for setting up a CP/NET based network under RomWBW
including a section on network booting.
## Xmodem Flash Updater ## Xmodem Flash Updater
The RomWBW Xmodem flash updater provides the capability to update RomWBW The RomWBW Xmodem flash updater provides the capability to update RomWBW
@ -732,6 +734,7 @@ options to set to and revert from a recommended speed.
See the RomWBW Applications guide for additional information on performing upgrades. See the RomWBW Applications guide for additional information on performing upgrades.
### Console Options ### Console Options
Option ( C ) - Set Console Device Option ( C ) - Set Console Device
Option ( S ) - Set Serial Device Option ( S ) - Set Serial Device
@ -2155,7 +2158,7 @@ discover ports that are 'write-only'.
## SYSCONF (System Configuration) ## SYSCONF (System Configuration)
| SURVEY | |
| SYSCONF | |
| --------------------|---| | --------------------|---|
| ROM-based |Yes| | ROM-based |Yes|
| Disk-based |Yes| | Disk-based |Yes|
@ -2163,8 +2166,8 @@ discover ports that are 'write-only'.
System Configuration (`SYSCONF`) is a utility that allows system configuration to System Configuration (`SYSCONF`) is a utility that allows system configuration to
be set, dynamically and stored in NVRAM provided by an RTC chip. be set, dynamically and stored in NVRAM provided by an RTC chip.
(`SYSCONF`) is both a ROM application ('W' Menu option), and a CP/M utility.
Noting however the CP/M utility is not included on an disk image, it is found in
(`SYSCONF`) is both a ROM utility ('W' Menu option), and a CP/M application.
Noting however the CP/M application is not included on an disk image, it is found in
the `Binary/Applications` folder of the RomWBW distribution. the `Binary/Applications` folder of the RomWBW distribution.
The section "Setting NVRAM Options" in the $doc_user$ has additional information The section "Setting NVRAM Options" in the $doc_user$ has additional information
@ -2195,7 +2198,7 @@ Commands:
(S)et {SW} {val}[,{val}[,{val}]]- Set a switch value(s) (S)et {SW} {val}[,{val}[,{val}]]- Set a switch value(s)
(R)eset - Init NVRAM to Defaults (R)eset - Init NVRAM to Defaults
(H)elp [{SW}] - This help menu, or help on a switch (H)elp [{SW}] - This help menu, or help on a switch
(Q)uit - Quit
e(X)it - Exit Configuration
$ $
``` ```
@ -2220,13 +2223,13 @@ To exit from the application use the (Q)uit command.
The following are the accepted commands, unless otherwise specified a "Space" The following are the accepted commands, unless otherwise specified a "Space"
character is used to delimit parameters in the command. character is used to delimit parameters in the command.
| Command | Argument(s) | Description |
|------------|------------------|-----------------------------------------------|
| (P)rint | -none- | Display a list of the current switch value(s) |
| (S)et | {SW} {val},... | Sets an Switch {SW} with specific values(s) |
| (R)eset | -none- | Reset all setting to default |
| (H)elp | {SW} | Provides help on the syntax (values) |
| (Q)uit | -none- | Exit the application |
| Command | Argument(s) | Description |
|-----------|------------------|-----------------------------------------------|
| (P)rint | -none- | Display a list of the current switch value(s) |
| (S)et | {SW} {val},... | Sets an Switch {SW} with specific values(s) |
| (R)eset | -none- | Reset all setting to default |
| (H)elp | {SW} | Provides help on the syntax (values) |
| e(X)it | -none- | Exit the application |
**Where** **Where**
@ -2288,7 +2291,7 @@ Making changes to boot options has no affect until the next reboot.
#### Etymology #### Etymology
The `SYSCONF` utility is an original product specifc to RomWBW, source code is included.
The `SYSCONF` utility is an original product specific to RomWBW, source code is included.
`SYSCONF` was contributed by Mark Pruden. `SYSCONF` was contributed by Mark Pruden.
`\clearpage`{=latex} `\clearpage`{=latex}

6
Source/Doc/UserGuide.md

@ -340,14 +340,16 @@ enter the command followed by ***\<enter\>***.
For example, typing `H<enter>` will display a short command summary: For example, typing `H<enter>` will display a short command summary:
``` ```
Boot [H=Help]: h
Boot [H=Help]: H
L - List ROM Applications L - List ROM Applications
D - Device Inventory D - Device Inventory
S - Slice Inventory
R - Reboot System R - Reboot System
W - RomWBW Configure W - RomWBW Configure
I <u> [<c>] - Set Console Interface/Baud Rate I <u> [<c>] - Set Console Interface/Baud Rate
V [<n>] - View/Set HBIOS Diagnostic Verbosity V [<n>] - View/Set HBIOS Diagnostic Verbosity
N - Network Boot
<u>[.<s>] - Boot Disk Unit/Slice <u>[.<s>] - Boot Disk Unit/Slice
``` ```
@ -366,7 +368,6 @@ ROM Applications:
B: BASIC B: BASIC
T: Tasty BASIC T: Tasty BASIC
P: Play a Game P: Play a Game
N: Network Boot
X: XModem Flash Updater X: XModem Flash Updater
U: User App U: User App
``` ```
@ -410,7 +411,6 @@ prompt:
| BASIC | Microsoft ROM BASIC | | BASIC | Microsoft ROM BASIC |
| Tasty&nbsp;BASIC | Dimitri Theuling's Tiny BASIC implementation | | Tasty&nbsp;BASIC | Dimitri Theuling's Tiny BASIC implementation |
| Play | A simple video game (requires ANSI terminal emulation) | | Play | A simple video game (requires ANSI terminal emulation) |
| Network&nbsp;Boot | Boot system via Wiznet MT011 device |
| Flash&nbsp;Update | Upload and flash a new ROMWBW image using xmodem | | Flash&nbsp;Update | Upload and flash a new ROMWBW image using xmodem |
| User App | User written application placeholder | | User App | User written application placeholder |

41
Source/HBIOS/romldr.asm

@ -174,12 +174,15 @@ start1:
; ;
; For app mode startup, use alternate table ; For app mode startup, use alternate table
ld hl,ra_tbl ; assume ROM application table ld hl,ra_tbl ; assume ROM application table
ld de,str_help ; assume ROM help menu
ld a,(bootmode) ; get boot mode ld a,(bootmode) ; get boot mode
cp BM_ROMBOOT ; ROM boot? cp BM_ROMBOOT ; ROM boot?
jr z,start2 ; if so, ra_tbl OK, skip ahead jr z,start2 ; if so, ra_tbl OK, skip ahead
ld hl,ra_tbl_app ; switch to RAM application table ld hl,ra_tbl_app ; switch to RAM application table
ld de,str_help_app ; switch to RAM help menu
start2: start2:
ld (ra_tbl_loc),hl ; and overlay pointer ld (ra_tbl_loc),hl ; and overlay pointer
ld (str_help_loc),de ; and overlay help menu pointer
; ;
; Copy original page zero into user page zero ; Copy original page zero into user page zero
; ;
@ -627,6 +630,8 @@ runcmd0:
#if (BIOS == BIOS_WBW) #if (BIOS == BIOS_WBW)
cp 'S' ; S = Slice Inventory cp 'S' ; S = Slice Inventory
jp z,slclst ; if so, do it jp z,slclst ; if so, do it
cp 'W' ; W = Rom WBW NVR Config Rom App
jp z,nvrconfig ; if so, do it
cp 'I' ; C = set console interface cp 'I' ; C = set console interface
jp z,setcon ; if so, do it jp z,setcon ; if so, do it
cp 'V' ; V = diagnostic verbosity cp 'V' ; V = diagnostic verbosity
@ -850,7 +855,7 @@ dskycmd1:
; Display Help ; Display Help
; ;
help: help:
ld hl,str_help ; point to help string
ld hl,(str_help_loc) ; point to help string
call pstr ; display it call pstr ; display it
ret ret
; ;
@ -903,6 +908,12 @@ slclst:
ld a,'S' ; "S"lice Inv App ld a,'S' ; "S"lice Inv App
jp romcall ; Call a Rom App with Return jp romcall ; Call a Rom App with Return
; ;
; RomWBW Config
;
nvrconfig:
ld a,'W' ; "W" Rom WBW Configure App
jp romcall ; Call a Rom App with Return
;
; Set console interface unit ; Set console interface unit
; ;
#if (BIOS == BIOS_WBW) #if (BIOS == BIOS_WBW)
@ -2573,10 +2584,22 @@ str_help .db "\r\n"
.db "\r\n W - RomWBW Configure" .db "\r\n W - RomWBW Configure"
.db "\r\n I <u> [<c>] - Set Console Interface/Baud Rate" .db "\r\n I <u> [<c>] - Set Console Interface/Baud Rate"
.db "\r\n V [<n>] - View/Set HBIOS Diagnostic Verbosity" .db "\r\n V [<n>] - View/Set HBIOS Diagnostic Verbosity"
.db "\r\n N - Network Boot"
#endif #endif
.db "\r\n <u>[.<s>] - Boot Disk Unit/Slice" .db "\r\n <u>[.<s>] - Boot Disk Unit/Slice"
.db 0 .db 0
; ;
str_help_app .db "\r\n"
.db "\r\n L - List ROM Applications"
.db "\r\n R - Reboot System"
#if (BIOS == BIOS_WBW)
.db "\r\n I <u> [<c>] - Set Console Interface/Baud Rate"
.db "\r\n V [<n>] - View/Set HBIOS Diagnostic Verbosity"
#endif
.db "\r\n <u>[.<s>] - Boot Disk Unit/Slice"
.db 0
;
;======================================================================= ;=======================================================================
; DSKY keypad led matrix masks ; DSKY keypad led matrix masks
;======================================================================= ;=======================================================================
@ -2663,12 +2686,12 @@ ra_tbl:
; Name Key Dsky Bank Src Dest Size Entry ; Name Key Dsky Bank Src Dest Size Entry
; --------- ------- ----- -------- ----- ------- ------- ---------- ; --------- ------- ----- -------- ----- ------- ------- ----------
ra_ent(str_mon, 'M', KY_CL, MON_BNK, MON_IMGLOC, MON_LOC, MON_SIZ, MON_SERIAL) ra_ent(str_mon, 'M', KY_CL, MON_BNK, MON_IMGLOC, MON_LOC, MON_SIZ, MON_SERIAL)
ra_entsiz .equ $ - ra_tbl
#if (BIOS == BIOS_WBW)
#if (PLATFORM == PLT_S100)
ra_entsiz .equ $ - ra_tbl
#if (BIOS == BIOS_WBW)
#if (PLATFORM == PLT_S100)
ra_ent(str_smon, 'O', $FF, bid_cur, $8000, $8000, $0001, s100mon) ra_ent(str_smon, 'O', $FF, bid_cur, $8000, $8000, $0001, s100mon)
#endif
#endif
#endif
#endif
ra_ent(str_cpm22, 'C', KY_BK, CPM22_BNK, CPM22_IMGLOC, CPM_LOC, CPM_SIZ, CPM_ENT) ra_ent(str_cpm22, 'C', KY_BK, CPM22_BNK, CPM22_IMGLOC, CPM_LOC, CPM_SIZ, CPM_ENT)
ra_ent(str_zsys, 'Z', KY_FW, ZSYS_BNK, ZSYS_IMGLOC, CPM_LOC, CPM_SIZ, CPM_ENT) ra_ent(str_zsys, 'Z', KY_FW, ZSYS_BNK, ZSYS_IMGLOC, CPM_LOC, CPM_SIZ, CPM_ENT)
#if (BIOS == BIOS_WBW) #if (BIOS == BIOS_WBW)
@ -2676,9 +2699,9 @@ ra_ent(str_bas, 'B', KY_DE, BAS_BNK, BAS_IMGLOC, BAS_LOC, BAS_SIZ, BAS_
ra_ent(str_tbas, 'T', KY_EN, TBC_BNK, TBC_IMGLOC, TBC_LOC, TBC_SIZ, TBC_LOC) ra_ent(str_tbas, 'T', KY_EN, TBC_BNK, TBC_IMGLOC, TBC_LOC, TBC_SIZ, TBC_LOC)
ra_ent(str_fth, 'F', KY_EX, FTH_BNK, FTH_IMGLOC, FTH_LOC, FTH_SIZ, FTH_LOC) ra_ent(str_fth, 'F', KY_EX, FTH_BNK, FTH_IMGLOC, FTH_LOC, FTH_SIZ, FTH_LOC)
ra_ent(str_play, 'P', $FF, GAM_BNK, GAM_IMGLOC, GAM_LOC, GAM_SIZ, GAM_LOC) ra_ent(str_play, 'P', $FF, GAM_BNK, GAM_IMGLOC, GAM_LOC, GAM_SIZ, GAM_LOC)
ra_ent(str_net, 'N', $FF, NET_BNK, NET_IMGLOC, NET_LOC, NET_SIZ, NET_LOC)
ra_ent(str_net, 'N'+$80, $FF, NET_BNK, NET_IMGLOC, NET_LOC, NET_SIZ, NET_LOC)
ra_ent(str_upd, 'X', $FF, UPD_BNK, UPD_IMGLOC, UPD_LOC, UPD_SIZ, UPD_LOC) ra_ent(str_upd, 'X', $FF, UPD_BNK, UPD_IMGLOC, UPD_LOC, UPD_SIZ, UPD_LOC)
ra_ent(str_nvr, 'W'+$80, $FF, NVR_BNK, NVR_IMGLOC, NVR_LOC, NVR_SIZ, NVR_LOC)
ra_ent(str_blnk, 'W'+$80, $FF, NVR_BNK, NVR_IMGLOC, NVR_LOC, NVR_SIZ, NVR_LOC)
ra_ent(str_blnk, 'S'+$80, $FF, SLC_BNK, SLC_IMGLOC, SLC_LOC, SLC_SIZ, SLC_LOC) ra_ent(str_blnk, 'S'+$80, $FF, SLC_BNK, SLC_IMGLOC, SLC_LOC, SLC_SIZ, SLC_LOC)
ra_ent(str_user, 'U', $FF, USR_BNK, USR_IMGLOC, USR_LOC, USR_SIZ, USR_LOC) ra_ent(str_user, 'U', $FF, USR_BNK, USR_IMGLOC, USR_LOC, USR_SIZ, USR_LOC)
#endif #endif
@ -2710,7 +2733,6 @@ str_bas .db "BASIC",0
str_tbas .db "Tasty BASIC",0 str_tbas .db "Tasty BASIC",0
str_play .db "Play a Game",0 str_play .db "Play a Game",0
str_upd .db "XModem Flash Updater",0 str_upd .db "XModem Flash Updater",0
str_nvr .db "RomWBW Configure", 0
str_user .db "User App",0 str_user .db "User App",0
str_blnk .db "",0 str_blnk .db "",0
str_net .db "Network Boot",0 str_net .db "Network Boot",0
@ -2740,6 +2762,7 @@ mediaid .db 0 ; media id
; ;
bootmode .db 0 ; ROM, APP, or IMG boot bootmode .db 0 ; ROM, APP, or IMG boot
ra_tbl_loc .dw 0 ; points to active ra_tbl ra_tbl_loc .dw 0 ; points to active ra_tbl
str_help_loc .dw 0 ; points to active str_help
bootunit .db 0 ; boot disk unit bootunit .db 0 ; boot disk unit
bootslice .db 0 ; boot disk slice bootslice .db 0 ; boot disk slice
loadcnt .db 0 ; num disk sectors to load loadcnt .db 0 ; num disk sectors to load

35
Source/HBIOS/sysconf.asm

@ -8,7 +8,7 @@
; and RomWBW Operation. Write to RTC NVRAM to store config ; and RomWBW Operation. Write to RTC NVRAM to store config
; is reliant on HBIOS ; is reliant on HBIOS
; ;
; NOTE: This program is built as both a CP/M COM and Rom WBW Applicaton
; NOTE: This program is built as both a CP/M COM and Rom WBW Application
; ;
; ROM APPLICATION THAT IS AUTOMATICALLY INCLUDED IN THE ROMWBW ROM. ; ROM APPLICATION THAT IS AUTOMATICALLY INCLUDED IN THE ROMWBW ROM.
; IT IS INVOKED FROM THE BOOT LOADER USING THE 'W' OPTION. (See RomLDR) ; IT IS INVOKED FROM THE BOOT LOADER USING THE 'W' OPTION. (See RomLDR)
@ -18,7 +18,16 @@
; BASED ON USEROM.ASM ; BASED ON USEROM.ASM
; THANKS AND CREDIT TO MARTIN R. FOR PROVIDING THIS APPLICATION! ; THANKS AND CREDIT TO MARTIN R. FOR PROVIDING THIS APPLICATION!
; Also Based on The Tasty Basic Configuration ; Also Based on The Tasty Basic Configuration
; Utilitity function were also copied from RomLdr, Assign.
; Utility function were also copied from RomLdr, Assign.
;
;-----------------------------------------------------------------------
;
; Change Log:
; 2024-11-08 [MAP] Initial v1.0 release
; 2024-12-06 [WBW] Misc Fixes Improvements after initial release
; 2025-06-30 [MAP] 1.1 Changed to be invoked in CALL RET fashion from RomLdr
;
;-----------------------------------------------------------------------
; ;
#include "../ver.inc" #include "../ver.inc"
#include "hbios.inc" #include "hbios.inc"
@ -56,8 +65,9 @@ DEL .EQU 127 ; ASCII del/rubout
.ORG NVR_LOC .ORG NVR_LOC
; ;
#ifdef ROMWBW #ifdef ROMWBW
; Reuse the stack provided by Rom LDR
; PLACE STACK AT THE TOP OF AVAILABLE RAM (JUST BELOW THE HBIOS PROXY). ; PLACE STACK AT THE TOP OF AVAILABLE RAM (JUST BELOW THE HBIOS PROXY).
LD SP,HBX_LOC
; LD SP,HBX_LOC
#endif #endif
#ifdef CPM #ifdef CPM
; setup stack (save old value) ; setup stack (save old value)
@ -75,9 +85,10 @@ exit:
; call crlf ; formatting ; call crlf ; formatting
; ;
#ifdef ROMWBW #ifdef ROMWBW
LD B,BF_SYSRESET ; SYSTEM RESTART
LD C,BF_SYSRES_WARM ; WARM START
RST 08 ; CALL HBIOS (DOES NOT RETURN)
RET ; Return to Rom LDR
; LD B,BF_SYSRESET ; SYSTEM RESTART
; LD C,BF_SYSRES_WARM ; WARM START
; RST 08 ; CALL HBIOS (DOES NOT RETURN)
#endif #endif
#ifdef CPM #ifdef CPM
; ;
@ -205,7 +216,7 @@ helpandloop: ; HELP MENU
JR z,printmainhelp ; if empty line, print main help JR z,printmainhelp ; if empty line, print main help
call upcase call upcase
; ;
; the folloiwng is just testing a single charater
; the following is just testing a single character
cp 'A' ; Auto Boot help menu cp 'A' ; Auto Boot help menu
JP Z,HELP_AB JP Z,HELP_AB
cp 'B' ; Boot Options help menu cp 'B' ; Boot Options help menu
@ -234,7 +245,7 @@ setvalueandloop:
JR z,setvalueerror ; if empty line, print ? JR z,setvalueerror ; if empty line, print ?
call upcase call upcase
; ;
; the folloiwng is just testing a single charater
; the following is just testing a single character
cp 'A' ; Auto Boot help menu cp 'A' ; Auto Boot help menu
JP Z,SET_AB JP Z,SET_AB
cp 'B' ; Boot Options help menu cp 'B' ; Boot Options help menu
@ -265,7 +276,7 @@ PRT_STATUS:
LD BC,BC_SYSGET_SWITCH LD BC,BC_SYSGET_SWITCH
LD D,$FF ; check for existence of switches LD D,$FF ; check for existence of switches
RST 08 RST 08
JR NZ,STAT_NOTFOUND ; error means switchs are not enabled
JR NZ,STAT_NOTFOUND ; error means switches are not enabled
; ;
; print invdividual stats, on all per switch ; print invdividual stats, on all per switch
; ;
@ -499,7 +510,7 @@ err_ret:
;======================================================================= ;=======================================================================
; ;
str_banner .db "\r\n" str_banner .db "\r\n"
.db "RomWBW System Config Utility, Version 1.0 Nov-2024\r\n",0
.db "RomWBW System Config Utility, Version 1.1 June-2025\r\n",0
; ;
MSG_MENU .DB "\r\n" MSG_MENU .DB "\r\n"
.DB "Commands:\r\n" .DB "Commands:\r\n"
@ -507,7 +518,7 @@ MSG_MENU .DB "\r\n"
.DB " (S)et {SW} {val}[,{val}[,{val}]]- Set a switch value(s)\r\n" .DB " (S)et {SW} {val}[,{val}[,{val}]]- Set a switch value(s)\r\n"
.DB " (R)eset - Init NVRAM to Defaults\r\n" .DB " (R)eset - Init NVRAM to Defaults\r\n"
.DB " (H)elp [{SW}] - This help menu, or help on a switch\r\n" .DB " (H)elp [{SW}] - This help menu, or help on a switch\r\n"
.DB " (Q)uit - Quit\r\n"
.DB " e(X)it - Exit Configuration\r\n"
.DB 0 .DB 0
MSG_PROMPT: .DB "\r\n" MSG_PROMPT: .DB "\r\n"
.DB "$", 0 .DB "$", 0
@ -1015,7 +1026,7 @@ CIN: PUSH BC
; ;
stksav .dw 0 ; stack pointer saved at start stksav .dw 0 ; stack pointer saved at start
; ;
cmdbuf: .FILL cmdmax,0 ; cmd inut buffer
cmdbuf: .FILL cmdmax,0 ; cmd input buffer
; ;
.fill stksiz,0 ; stack .fill stksiz,0 ; stack
stack .equ $ ; stack top stack .equ $ ; stack top

Loading…
Cancel
Save