You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

537 lines
24 KiB

<!DOCTYPE html>
<html lang="en" data-bs-theme="auto">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="None">
<link rel="shortcut icon" href="img/favicon.ico">
<title>RomWBW Documentation V3.6</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/fontawesome.min.css" rel="stylesheet">
<link href="css/brands.min.css" rel="stylesheet">
<link href="css/solid.min.css" rel="stylesheet">
<link href="css/v4-font-face.min.css" rel="stylesheet">
<link href="css/base.css" rel="stylesheet">
<link id="hljs-light" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" disabled>
<link id="hljs-dark" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github-dark.min.css" disabled>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script>
</head>
<body class="homepage">
<div class="navbar fixed-top navbar-expand-lg navbar-dark bg-primary">
<div class="container">
<a class="navbar-brand" href=".">RomWBW Documentation V3.6</a>
<!-- Expander button -->
<button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbar-collapse" aria-controls="navbar-collapse" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<!-- Expanded navigation -->
<div id="navbar-collapse" class="navbar-collapse collapse">
<!-- Main navigation -->
<ul class="nav navbar-nav">
<li class="nav-item">
<a href="Introduction/" class="nav-link">Introduction</a>
</li>
<li class="nav-item">
<a href="UserGuide/" class="nav-link">User Guide</a>
</li>
<li class="nav-item">
<a href="SystemGuide/" class="nav-link">System Guide</a>
</li>
<li class="nav-item">
<a href="Applications/" class="nav-link">Applications</a>
</li>
<li class="nav-item">
<a href="Catalog/" class="nav-link">Catalog</a>
</li>
<li class="nav-item">
<a href="Hardware/" class="nav-link">Hardware</a>
</li>
</ul>
<ul class="nav navbar-nav ms-md-auto">
<li class="nav-item">
<a href="#" class="nav-link" data-bs-toggle="modal" data-bs-target="#mkdocs_search_modal">
<i class="fa fa-search"></i> Search
</a>
</li>
<li class="nav-item">
<a href="https://github.com/wwarthen/RomWBW" class="nav-link"><i class="fa-brands fa-github"></i> GitHub</a>
</li>
<li class="nav-item dropdown">
<button id="theme-menu" aria-expanded="false" data-bs-toggle="dropdown" data-bs-display="static" aria-label="Toggle theme" class="nav-link dropdown-toggle">
<i class="fa-solid fa-circle-half-stroke fa-fw"></i>
<span class="d-lg-none ms-2">Toggle theme</span>
</button>
<ul class="dropdown-menu dropdown-menu-end">
<li>
<button class="dropdown-item d-flex align-items-center" data-bs-theme-value="light" aria-pressed="false">
<i class="fa-solid fa-sun fa-fw"></i>
<span class="ms-2">Light</span>
<i class="fa-solid fa-check ms-auto d-none"></i>
</button>
</li>
<li>
<button class="dropdown-item d-flex align-items-center" data-bs-theme-value="dark" aria-pressed="false">
<i class="fa-solid fa-moon fa-fw"></i>
<span class="ms-2">Dark</span>
<i class="fa-solid fa-check ms-auto d-none"></i>
</button>
</li>
<li>
<button class="dropdown-item d-flex align-items-center" data-bs-theme-value="auto" aria-pressed="true">
<i class="fa-solid fa-circle-half-stroke fa-fw"></i>
<span class="ms-2">Auto</span>
<i class="fa-solid fa-check ms-auto"></i>
</button>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
<script src="js/darkmode.js"></script>
<div class="container">
<div class="row">
<div class="col-md-3"><div class="navbar-expand-md bs-sidebar hidden-print affix" role="complementary">
<div class="navbar-header">
<button type="button" class="navbar-toggler collapsed" data-bs-toggle="collapse" data-bs-target="#toc-collapse" title="Table of Contents">
<span class="fa fa-angle-down"></span>
</button>
</div>
<div id="toc-collapse" class="navbar-collapse collapse card bg-body-tertiary">
<ul class="nav flex-column">
<li class="nav-item" data-bs-level="1"><a href="#overview" class="nav-link">Overview</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-bs-level="1"><a href="#acquiring-romwbw" class="nav-link">Acquiring RomWBW</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-bs-level="1"><a href="#installation-operation" class="nav-link">Installation &amp; Operation</a>
<ul class="nav flex-column">
<li class="nav-item" data-bs-level="2"><a href="#documentation" class="nav-link">Documentation</a>
<ul class="nav flex-column">
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-bs-level="1"><a href="#acknowledgments" class="nav-link">Acknowledgments</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-bs-level="1"><a href="#licensing" class="nav-link">Licensing</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-bs-level="1"><a href="#getting-assistance" class="nav-link">Getting Assistance</a>
<ul class="nav flex-column">
</ul>
</li>
</ul>
</div>
</div></div>
<div class="col-md-9" role="main">
<p>$define{doc_title}{ReadMe}$
$include{"Basic.h"}$</p>
<h1 id="overview">Overview</h1>
<p>RomWBW software provides a complete, commercial quality
implementation of CP/M (and workalike) operating systems and
applications for modern Z80/180/280 retro-computing hardware systems.</p>
<p>A wide variety of platforms are supported including those
produced by these developer communities:</p>
<ul>
<li><a href="https://www.retrobrewcomputers.org">RetroBrew Computers</a>
(<a href="https://www.retrobrewcomputers.org">https://www.retrobrewcomputers.org</a>)</li>
<li><a href="https://rc2014.co.uk">RC2014</a> (<a href="https://rc2014.co.uk">https://rc2014.co.uk</a>), \
<a href="https://groups.google.com/g/rc2014-z80">RC2014-Z80</a>
(<a href="https://groups.google.com/g/rc2014-z80">https://groups.google.com/g/rc2014-z80</a>)</li>
<li><a href="https://groups.google.com/g/retro-comp">Retro Computing</a>
(<a href="https://groups.google.com/g/retro-comp">https://groups.google.com/g/retro-comp</a>)</li>
<li><a href="https://smallcomputercentral.com/">Small Computer Central</a>
(<a href="https://smallcomputercentral.com/">https://smallcomputercentral.com/</a>)</li>
</ul>
<p>A complete list of the currently supported platforms is found in the
[Installation] section.</p>
<p>Supported hardware features of RomWBW include:</p>
<ul>
<li>Z80 Family CPUs including Z80, Z180, and Z280</li>
<li>Banked memory services for several banking designs</li>
<li>Disk drivers for RAM, ROM, Floppy, IDE ATA/ATAPI, CF, SD, USB, Zip, Iomega</li>
<li>Serial drivers including UART (16550-like), ASCI, ACIA, SIO</li>
<li>Video drivers including TMS9918, SY6545, MOS8563, HD6445</li>
<li>Keyboard (PS/2) drivers via VT8242 or PPI interfaces</li>
<li>Real time clock drivers including DS1302, BQ4845</li>
<li>Support for CP/NET networking using Wiznet, MT011 or Serial</li>
<li>Built-in VT-100 terminal emulation support</li>
</ul>
<p>RomWBW is distributed as both source code and pre-built ROM and disk
images. Some of the provided software can be launched directly from the
ROM firmware itself:</p>
<ul>
<li>System Monitor</li>
<li>Operating Systems (CP/M 2.2, ZSDOS)</li>
<li>ROM BASIC (Nascom BASIC and Tasty BASIC)</li>
<li>ROM Forth</li>
</ul>
<p>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 accessible storage on a single device,
with up to 128MB accessible at any one time.</p>
<p>The pre-built ROM firmware images are generally suitable for most
users. However, 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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<h1 id="acquiring-romwbw">Acquiring RomWBW</h1>
<p>The <a href="https://github.com/wwarthen/RomWBW">RomWBW Repository</a>
(<a href="https://github.com/wwarthen/RomWBW">https://github.com/wwarthen/RomWBW</a>) on GitHub is the official
distribution location for all project source and documentation.
The fully-built distribution releases are available on the
<a href="https://github.com/wwarthen/RomWBW/releases">RomWBW Releases Page</a>
(<a href="https://github.com/wwarthen/RomWBW/releases">https://github.com/wwarthen/RomWBW/releases</a>) 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.</p>
<p>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.</p>
<p>All source code and distributions are maintained on GitHub. Code
contributions are very welcome.</p>
<h1 id="installation-operation">Installation &amp; Operation</h1>
<p>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.</p>
<p>Complete instructions for installation and operation of RomWBW are
found in the $doc_user$. It is also a good idea to review the
<a href="https://github.com/wwarthen/RomWBW/blob/master/RELEASE_NOTES.md">Release Notes</a>
for helpful release-specific information.</p>
<h2 id="documentation">Documentation</h2>
<p>Documentation for $doc_product$ includes:</p>
<ul>
<li>$doc_intro$</li>
<li>$doc_user$</li>
<li>$doc_sys$</li>
<li>$doc_apps$</li>
<li>$doc_catalog$</li>
<li>$doc_hardware$</li>
</ul>
<h1 id="acknowledgments">Acknowledgments</h1>
<p>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!</p>
<ul>
<li>
<p>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.</p>
</li>
<li>
<p>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.</p>
</li>
<li>
<p>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.</p>
</li>
<li>
<p>Sergey Kiselev created several hardware platforms for RomWBW
including the very popular Zeta.</p>
</li>
<li>
<p>David Giles created support for the Z180 CSIO which is now included
SD Card driver.</p>
</li>
<li>
<p>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.</p>
</li>
<li>
<p>Ed Brindley contributed some of the code that supports the RCBus
platform.</p>
</li>
<li>
<p>Spencer Owen created the RC2014 series of hobbyist kit computers
which has exponentially increased RomWBW usage. Some of his kits
include RomWBW.</p>
</li>
<li>
<p>Stephen Cousins has likewise created a series of hobbyist kit
computers at Small Computer Central and is distributing RomWBW
with many of them.</p>
</li>
<li>
<p>Alan Cox has contributed some driver code and has provided a great
deal of advice.</p>
</li>
<li>
<p>The CP/NET client files were developed by Douglas Miller.</p>
</li>
<li>
<p>Phillip Stevens contributed support for FreeRTOS.</p>
</li>
<li>
<p>Curt Mayer contributed the original Linux / MacOS build process.</p>
</li>
<li>
<p>UNA BIOS and FDISK80 are the products of John Coffman.</p>
</li>
<li>
<p>FLASH4 is a product of Will Sowerbutts.</p>
</li>
<li>
<p>CLRDIR is a product of Max Scane.</p>
</li>
<li>
<p>Tasty Basic is a product of Dimitri Theulings.</p>
</li>
<li>
<p>Dean Netherton contributed eZ80 CPU support, the sound driver
interface, and the SN76489 sound driver.</p>
</li>
<li>
<p>The RomWBW Disk Catalog document was produced by Mykl Orders.</p>
</li>
<li>
<p>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.</p>
</li>
<li>
<p>Martin R has provided substantial help reviewing and improving the
User Guide and Applications documents.</p>
</li>
<li>
<p>Mark Pruden has made a wide variety of contributions including:</p>
</li>
<li>significant content in the Disk Catalog and User Guide</li>
<li>creation of the Introduction and Hardware documents</li>
<li>Z3PLUS operating system disk image</li>
<li>COPYSL and SLABEL utility</li>
<li>a feature for RomWBW configuration by NVRAM</li>
<li>
<p>the /B bulk mode of disk assignment to the ASSIGN utility</p>
</li>
<li>
<p>Jacques Pelletier has contributed the DS1501 RTC driver code.</p>
</li>
<li>
<p>Jose Collado has contributed enhancements to the TMS driver
including compatibility with standard TMS register configuration.</p>
</li>
<li>
<p>Kevin Boone has contributed a generic HBIOS date/time utility (WDATE).</p>
</li>
<li>
<p>Matt Carroll has contributed a fix to XM.COM that corrects the
port specification when doing a send.</p>
</li>
<li>
<p>Dean Jenkins enhanced the build process to accommodate the
Raspberry Pi 4.</p>
</li>
<li>
<p>Tom Plano has contributed a new utility (HTALK) to allow talking
directly to HBIOS COM ports.</p>
</li>
<li>
<p>Lars Nelson has contributed several generic utilities such as
a universal (OS agnostic) UNARC application.</p>
</li>
<li>
<p>Dylan Hall added support for specifying a secondary console.</p>
</li>
<li>
<p>Bill Shen has contributed boot loaders for several of his
systems.</p>
</li>
<li>
<p>Laszlo Szolnoki has contributed an EF9345 video display
controller driver.</p>
</li>
<li>
<p>Ladislau Szilagyi has contributed an enhanced version of
CP/M Cowgol that leverages RomWBW memory banking.</p>
</li>
<li>
<p>Les Bird has contributed support for the NABU w/ Option Board</p>
</li>
</ul>
<p>Contributions of all kinds to RomWBW are very welcome.</p>
<h1 id="licensing">Licensing</h1>
<p>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.</p>
<p>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.</p>
<p>You should have received a copy of the GNU General Public License
along with RomWBW. If not, see <a href="https://www.gnu.org/licenses/">https://www.gnu.org/licenses/</a>.</p>
<p>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.</p>
<p>If anyone feels their work is being used outside of its intended
licensing, please notify:</p>
<blockquote>
<p>$doc_author$ \
<a href="mailto:$doc_authmail$">$doc_authmail$</a></p>
</blockquote>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>All contributions to RomWBW are subject to this license.</p>
<h1 id="getting-assistance">Getting Assistance</h1>
<p>The best way to get assistance with RomWBW or any aspect of the
RetroBrew Computers projects is via one of the community forums:</p>
<ul>
<li><a href="https://www.retrobrewcomputers.org/forum/">RetroBrew Computers Forum</a></li>
<li><a href="https://groups.google.com/forum/#!forum/rc2014-z80">RC2014 Google Group</a></li>
<li><a href="https://groups.google.com/forum/#!forum/retro-comp">retro-comp Google Group</a></li>
</ul>
<p>Submission of issues and bugs are welcome at the
<a href="https://github.com/wwarthen/RomWBW">RomWBW GitHub Repository</a>.</p>
<p>Also feel free to email $doc_author$ at <a href="mailto:$doc_authmail$">$doc_authmail$</a>.</p></div>
</div>
</div>
<footer class="col-md-12">
<hr>
<p>Documentation built with <a href="https://www.mkdocs.org/">MkDocs</a>.</p>
</footer>
<script src="js/bootstrap.bundle.min.js"></script>
<script>
var base_url = ".",
shortcuts = {"help": 191, "next": 78, "previous": 80, "search": 83};
</script>
<script src="js/base.js"></script>
<script src="search/main.js"></script>
<div class="modal" id="mkdocs_search_modal" tabindex="-1" role="dialog" aria-labelledby="searchModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="searchModalLabel">Search</h4>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<p>From here you can search these documents. Enter your search terms below.</p>
<form>
<div class="form-group">
<input type="search" class="form-control" placeholder="Search..." id="mkdocs-search-query" title="Type search term here">
</div>
</form>
<div id="mkdocs-search-results" data-no-results-text="No results found"></div>
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div><div class="modal" id="mkdocs_keyboard_modal" tabindex="-1" role="dialog" aria-labelledby="keyboardModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="keyboardModalLabel">Keyboard Shortcuts</h4>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<table class="table">
<thead>
<tr>
<th style="width: 20%;">Keys</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<td class="help shortcut"><kbd>?</kbd></td>
<td>Open this help</td>
</tr>
<tr>
<td class="next shortcut"><kbd>n</kbd></td>
<td>Next page</td>
</tr>
<tr>
<td class="prev shortcut"><kbd>p</kbd></td>
<td>Previous page</td>
</tr>
<tr>
<td class="search shortcut"><kbd>s</kbd></td>
<td>Search</td>
</tr>
</tbody>
</table>
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div>
</body>
</html>
<!--
MkDocs version : 1.6.1
Build Date UTC : 2025-05-31 02:24:55.812478+00:00
-->