Browse Source

Documentation Updates

pull/109/head
Wayne Warthen 6 years ago
parent
commit
5264f2f4d2
  1. BIN
      Doc/RomWBW Architecture.pdf
  2. BIN
      Doc/RomWBW Getting Started.pdf
  3. BIN
      Doc/ZCPR Manual.pdf
  4. 340
      ReadMe.md
  5. 315
      ReadMe.txt
  6. 1
      Source/Clean.cmd
  7. 68
      Source/Doc/Architecture.md
  8. 4
      Source/Doc/Common.inc
  9. 173
      Source/Doc/GettingStarted.md
  10. 25
      Source/Doc/ZCPR Manual/Main.ltx
  11. 1384
      Source/Doc/ZCPR Manual/zcpr.ltx
  12. 1
      Source/Makefile

BIN
Doc/RomWBW Architecture.pdf

Binary file not shown.

BIN
Doc/RomWBW Getting Started.pdf

Binary file not shown.

BIN
Doc/ZCPR Manual.pdf

Binary file not shown.

340
ReadMe.md

@ -2,7 +2,8 @@
## Z80/Z180 System Software ## Z80/Z180 System Software
Version 2.9.2 of March 18, 2020
Version 2.9.2
Friday 20 March 2020
Wayne Warthen <wwarthen@gmail.com> Wayne Warthen <wwarthen@gmail.com>
@ -26,7 +27,7 @@ RomWBW provides a complete software system for a wide variety of
hobbyist Z80/Z180 CPU-based systems produced by these developer hobbyist Z80/Z180 CPU-based systems produced by these developer
communities: communities:
- [Retrobrew Computers](https://www.retrobrewcomputers.org)
- [RetroBrew Computers](https://www.retrobrewcomputers.org)
- [RC2014](https://rc2014.co.uk) - [RC2014](https://rc2014.co.uk)
- [retro-comp](https://groups.google.com/forum/#!forum/retro-comp) - [retro-comp](https://groups.google.com/forum/#!forum/retro-comp)
@ -79,11 +80,12 @@ distributions are found on the [releases
page](https://github.com/wwarthen/RomWBW/releases) of the repository. On page](https://github.com/wwarthen/RomWBW/releases) of the repository. On
this page, you will probably see both pre-releases as well as normal this page, you will probably see both pre-releases as well as normal
releases. Unless you have a specific reason, I suggest you stick to the releases. Unless you have a specific reason, I suggest you stick to the
most recent normal (not pre-release) release. Expand the “Assets”
most recent normal release (not pre-release). Expand the “Assets”
drop-down for the release you want to download, then select the asset drop-down for the release you want to download, then select the asset
named RomWBW-vX.X.X-Package.zip. The Package asset includes all named RomWBW-vX.X.X-Package.zip. The Package asset includes all
pre-built ROM and Disk images as well as full source code. The other pre-built ROM and Disk images as well as full source code. The other
assets called Source Code do not have the pre-built ROM or Disk Images.
assets are Source Code only and do not have the pre-built ROM or disk
images.
The pre-built ROM images will automatically detect and support a The pre-built ROM images will automatically detect and support a
reasonable range of devices including serial ports, video adapters, reasonable range of devices including serial ports, video adapters,
@ -109,13 +111,13 @@ directory contains the pre-built ROM and disk images. The ROM image
files all end in “.rom”. Based on the table below, **carefully** pick files all end in “.rom”. Based on the table below, **carefully** pick
the appropriate ROM image: the appropriate ROM image:
| Platform | ROM Image File | Baud | Description |
| ------------- | --------------- | ------ | ----------------------------------------------- |
| SBC V1/V2 | SBC\_std.rom | 38400 | RetroBrew SBC v1 or v2 ECB Z80 |
| Zeta V1 | ZETA\_std.rom | 38400 | RetroBrew Zeta V1 Z80, ParPortProp (optional) |
| Zeta V2 | ZETA2\_std.rom | 38400 | RetroBrew Zeta V2 Z80, ParPortProp (optional) |
| N8 | N8\_std.rom | 38400 | RetroBrew N8 Z180, date code \>= 2312 |
| Mark IV | MK4\_std.rom | 38400 | RetroBrew Mark IV ECB Z180 |
| Platform | ROM Image File | Baud | Description |
| ------------- | --------------- | -----: | ----------------------------------------------- |
| SBC V1/V2 | SBC\_std.rom | 38400 | RetroBrew SBC v1 or v2 ECB Z80 |
| Zeta V1 | ZETA\_std.rom | 38400 | RetroBrew Zeta V1 Z80, ParPortProp (optional) |
| Zeta V2 | ZETA2\_std.rom | 38400 | RetroBrew Zeta V2 Z80, ParPortProp (optional) |
| N8 | N8\_std.rom | 38400 | RetroBrew N8 Z180, date code \>= 2312 |
| Mark IV | MK4\_std.rom | 38400 | RetroBrew Mark IV ECB Z180 |
| RC2014 Z80 | RCZ80\_std.rom | 115200 | RC2014 w/ Z80 CPU, requires 512K RAM/ROM module | | RC2014 Z80 | RCZ80\_std.rom | 115200 | RC2014 w/ Z80 CPU, requires 512K RAM/ROM module |
| RC2014 Z180\* | RCZ180\_ext.rom | 115200 | RC2014 w/ Z180 CPU & 512K banked RAM/ROM module | | RC2014 Z180\* | RCZ180\_ext.rom | 115200 | RC2014 w/ Z180 CPU & 512K banked RAM/ROM module |
| RC2014 Z180\* | RCZ180\_nat.rom | 115200 | RC2014 w/ Z180 CPU & 512K native RAM/ROM module | | RC2014 Z180\* | RCZ180\_nat.rom | 115200 | RC2014 w/ Z180 CPU & 512K native RAM/ROM module |
@ -123,12 +125,12 @@ the appropriate ROM image:
| SC126 | SCZ180\_126.rom | 115200 | Stephen Cousin’s SC126 Z180 | | SC126 | SCZ180\_126.rom | 115200 | Stephen Cousin’s SC126 Z180 |
| SC130 | SCZ180\_130.rom | 115200 | Stephen Cousin’s SC130 Z180 | | SC130 | SCZ180\_130.rom | 115200 | Stephen Cousin’s SC130 Z180 |
| SC131 | SCZ180\_131.rom | 115200 | Stephen Cousin’s SC131 Z180 | | SC131 | SCZ180\_131.rom | 115200 | Stephen Cousin’s SC131 Z180 |
| Dyno | DYNO\_std.rom | 38400 | Steve Garcia’s Z180 Dyno Computer |
| Dyno | DYNO\_std.rom | 38400 | Steve Garcia’s Z180 Dyno Computer |
\*The RC2014 Z180 requires a separate RAM/ROM memory module. There are \*The RC2014 Z180 requires a separate RAM/ROM memory module. There are
two types of these modules and you must pick the ROM for your type of two types of these modules and you must pick the ROM for your type of
memory module. The “ext” ROM supports Spencer’s official 512K RAM/ROM memory module. The “ext” ROM supports Spencer’s official 512K RAM/ROM
banked memory module. The “nat” ROM supports any of the thrid-party Z180
banked memory module. The “nat” ROM supports any of the third-party Z180
native memory modules. native memory modules.
RomWBW will automatically attempt to detect and support typical add-on RomWBW will automatically attempt to detect and support typical add-on
@ -136,8 +138,8 @@ components for each of the systems supported. More information on the
required system configuration and optional supported components for each required system configuration and optional supported components for each
ROM is found in the file called “RomList.txt” in the Binary directory. ROM is found in the file called “RomList.txt” in the Binary directory.
All pre-built ROM images are simple 512KB binary images. If your system All pre-built ROM images are simple 512KB binary images. If your system
utilizes a 1MB ROM, you can just program the image into the first 512KB
of the ROM.
utilizes a larger ROM chip, you can just program the image into the
first 512KB of the ROM.
Connect a serial terminal or computer with terminal emulation software Connect a serial terminal or computer with terminal emulation software
to the primary serial port of your CPU board. You may need to refer to to the primary serial port of your CPU board. You may need to refer to
@ -184,16 +186,19 @@ not been updated and the next time you boot your system, it will revert
to the system image contained in ROM. You may find that you are unable to the system image contained in ROM. You may find that you are unable
to load the .com file because it is too large to fit in available to load the .com file because it is too large to fit in available
application RAM (TPA). Unfortunately, in this case, you will not be able application RAM (TPA). Unfortunately, in this case, you will not be able
to use the .com file to start your system.
to use the .com file mechanism to start your system.
If you do not have easy access to a ROM programmer, it is entirely
If you do not have easy access to a ROM programmer, it is usually
possible to reprogram your system ROM using the FLASH utility from Will possible to reprogram your system ROM using the FLASH utility from Will
Sowerbutts. This application called FLASH.COM can be found on the ROM Sowerbutts. This application called FLASH.COM can be found on the ROM
drive of any running system. In this case, you would need to transfer drive of any running system. In this case, you would need to transfer
the new ROM image (.rom) over to your system using XModem. The ROM image
will be too large to fit on your RAM drive, so you will need to transfer
it to a larger storage drive. Once the ROM image is on your system, you
can use the FLASH application to update your ROM:
the new ROM image (.rom) over to your system using XModem (or one of the
other mechanisms described in the Transferring Files section below). The
ROM image will be too large to fit on your RAM drive, so you will need
to transfer it to a larger storage drive. Once the ROM image is on your
system, you can use the FLASH application to update your ROM. The
following is a typical example of transferring ROM image using XModem
and flashing the chip in-situ.
E>xm r rom.img E>xm r rom.img
@ -226,9 +231,9 @@ device yet. Review the boot messages to see if any issues have occurred.
Once you are satisfied that the ROM is working well, you will need to Once you are satisfied that the ROM is working well, you will need to
update the system images and RomWBW custom applications on your disk update the system images and RomWBW custom applications on your disk
drives. The system images and custom applications are matched to the drives. The system images and custom applications are matched to the
RomWBW ROM firmware in use. If you attempt to use a disk or applications
that have not been updated to match the current ROM firmware, you are
likely to have odd problems.
RomWBW ROM firmware in use. If you attempt to boot a disk or run
applications that have not been updated to match the current ROM
firmware, you are likely to have odd problems.
The simplest way to update your disk media is to just use your modern The simplest way to update your disk media is to just use your modern
computer to overwrite the entire media with the latest disk image of computer to overwrite the entire media with the latest disk image of
@ -272,7 +277,8 @@ The systems supported by RomWBW all have the ability to use persistent
disk media. I am referring to all kinds of disk devices including floppy disk media. I am referring to all kinds of disk devices including floppy
drives, hard disks, CF Cards, and SD Cards. Some systems have disk drives, hard disks, CF Cards, and SD Cards. Some systems have disk
interfaces built-in, while others will require add-in cards. You will interfaces built-in, while others will require add-in cards. You will
need to refer to the documentation for your system.
need to refer to the documentation for your system for your specific
options.
In the RomWBW bootup messages, you will see hardware discovery messages. In the RomWBW bootup messages, you will see hardware discovery messages.
If you have a disk drive interface, you should see messages listing If you have a disk drive interface, you should see messages listing
@ -304,7 +310,7 @@ an example of this:
C:=IDE0:0 C:=IDE0:0
D:=IDE0:1 D:=IDE0:1
You will probably see mroe drive letters than this. The drive letter
You will probably see more drive letters than this. The drive letter
assignment process is described in more detail later in this document. assignment process is described in more detail later in this document.
Be aware that RomWBW will only assign drive letters to disk interfaces Be aware that RomWBW will only assign drive letters to disk interfaces
that actually have media in them. If you do not see drive letters that actually have media in them. If you do not see drive letters
@ -322,13 +328,13 @@ is also explained later in this document.
Once you are seeing drive letters referring to your disk media, you can Once you are seeing drive letters referring to your disk media, you can
follow the instructions below to begin using the disk media with the follow the instructions below to begin using the disk media with the
operating system. Your disk media **must** be initialized prior to be
operating system. Your disk media **must** be initialized prior to being
used. There are two ways to initialize your media for use. used. There are two ways to initialize your media for use.
You can initialize the media in-place using your RomWBW system. This You can initialize the media in-place using your RomWBW system. This
process is described below under Disk Initialization. In this scenario, process is described below under Disk Initialization. In this scenario,
you will need to subsequently copy any files you want to use onto the you will need to subsequently copy any files you want to use onto the
newly initialized disk.
newly initialized disk (see Transferring Files).
Alternatively, you can use your modern Windows, Linux, or Mac computer Alternatively, you can use your modern Windows, Linux, or Mac computer
to copy a disk image onto the disk media. RomWBW comes with a variety of to copy a disk image onto the disk media. RomWBW comes with a variety of
@ -343,40 +349,38 @@ filesystem. On RomWBW, the initialization is done using the CLRDIR
application. For example if your C: drive has been assigned to a storage application. For example if your C: drive has been assigned to a storage
device, you would use `CLRDIR C:` to initialize C: and prepare it hold device, you would use `CLRDIR C:` to initialize C: and prepare it hold
files. Note that CLRDIR will prompt you for confirmation and you must files. Note that CLRDIR will prompt you for confirmation and you must
respond with a **capital** ‘Y’ to confirm. Once CLDIR has completed, you
can copy files onto the drive, for example `COPY *.* C:`. Be very
respond with a **capital** ‘Y’ to confirm. Once `CLDIR` has completed,
you can copy files onto the drive, for example `COPY *.* C:`. Be very
careful to pay attention to your drive letter assignments prior to careful to pay attention to your drive letter assignments prior to
running CLRDIR to avoid accidentally wiping out a filesystem that has
running `CLRDIR` to avoid accidentally wiping out a filesystem that has
data on it. data on it.
Running CLRDIR on a disk device is roughly equivalent to running FORMAT
on MS-DOS. Note that unlike MS-DOS you do **not** partition your mass
storage device. CP/M knows nothing about disk partitions. You may notice
a partitioning application on your ROM disk (FDISK80), but this is
strictly for an advanced technique of adding an MS-DOS FAT filesystem to
your media in addition to the CP/M area. Do not use FDISK80 unless you
are specifically attempting to add an MS-DOS FAT filesystem to your
Running `CLRDIR` on a disk device is roughly equivalent to running
FORMAT on MS-DOS. Note that unlike MS-DOS you do **not** partition your
mass storage device. CP/M knows nothing about disk partitions. You may
notice a partitioning application on your ROM disk (FDISK80), but this
is strictly for an advanced technique of adding an MS-DOS FAT filesystem
to your media in addition to the CP/M area. Do not use FDISK80 unless
you are specifically attempting to add an MS-DOS FAT filesystem to your
media. media.
If you are using a floppy drive, you will need to physically format your If you are using a floppy drive, you will need to physically format your
floppy disk prior to use. This is only required for floppy disks, not floppy disk prior to use. This is only required for floppy disks, not
hard disk, CF Cards, or SD Cards, etc. To format a floppy drive, you can hard disk, CF Cards, or SD Cards, etc. To format a floppy drive, you can
use the interactive application FDU. FDU is not terribly user friendly,
but is generally documented in the file “FDU.txt” found in the Doc
directory of the distribution. It is not necessary to run CLRDIR on a
floppy disk after physically formatting it – the directory is cleared as
part of the formatting.
## Booting Disks
use the interactive application `FDU`. FDU is not terribly user
friendly, but is generally documented in the file “FDU.txt” found in the
Doc directory of the distribution. It is not necessary to run `CLRDIR`
on a floppy disk after physically formatting it – the directory is
cleared as part of the formatting.
Once you have initialized a disk device and copied your desired files Once you have initialized a disk device and copied your desired files
onto it, you may want to boot directly to this disk device at startup.
On CP/M filesystems, you must perform one additional step to make a disk
bootable. Specifically, you need to place a copy of the oeoprating
system on the system tracks of the disk. This is done using the
`SYSCOPY` command. Let’s say you have prepared drive C: by initializing
it with `CLRDIR` and copied some files onto it. You can now make C:
bootable by running the following command:
onto it, you may want to make the disk bootable. On CP/M filesystems,
you must perform one additional step to make a disk bootable.
Specifically, you need to place a copy of the operating system on the
system tracks of the disk. This is done using the `SYSCOPY` command.
Let’s say you have prepared drive C: by initializing it with `CLRDIR`
and copied some files onto it. You can now make C: bootable by running
the following command:
`B>SYSCOPY C:=B:ZSYS.SYS` `B>SYSCOPY C:=B:ZSYS.SYS`
@ -395,49 +399,9 @@ you want CP/M 2.2 instead, you would replace `B:ZSYS.SYS` with
Transfer system image from B:ZSYS.SYS to C: (Y/N)? Y Transfer system image from B:ZSYS.SYS to C: (Y/N)? Y
Reading image... Writing image... Done Reading image... Writing image... Done
After successfully putting the operating system on the disk, you can
restart your system. When you get to the boot loader, notice the line
starting with “Disk:”. This line lists the disk devices that you can
choose to boot directly.
You will notice that you do not have an option to boot a drive letter
here (like C:). This is because the operating system is not yet loaded.
When you ran `SYSCOPY` previously, remember that C: was assigned to
IDE0:0 which means device IDE0, slice 0. So, to boot the disk that you
just setup with SYSCOPY, you would choose option 1. You will then be
prompted for the slice on IDE0 that you want to boot. For now, just
press enter to choose slice 0. Once you are familiar with slices, you
can `SYSCOPY` and boot alternate slices. Here is what you would see when
booting to a disk device:
MARK IV Boot Loader
ROM: (M)onitor (C)P/M (Z)-System (F)orth (B)ASIC (T)-BASIC (P)LAY (U)SER ROM
Disk: (0)MD1 (1)MD0 (2)IDE0 (3)IDE1
Boot Selection? 2 Slice(0-9)[0]?
Booting Disk Unit 2, Slice 0...
Reading disk information...
Loc=D000 End=FE00 Ent=E600 Label=Unlabeled Drive
Loading...
Following this, you would see the normal operating system startup
messages. However, your operating system prompt will be `A>` and when
you look at the drive letter assignments, you should see that A: has
been assigned to the disk you selected to boot.
If you receive the error message “Disk not bootable\!”, you have either
failed to properly run `SYSCOPY` on the target disk or you have selected
the wrong disk/slice.
Note that although MD1 (RAM disk) and MD0 (ROM disk) drives are listed
in the Disk boot line, they are not currently “bootable” disks because
they have no system tracks on them. Attempting to boot to one of them,
will fail with a “Disk not bootable\!” error message and return to the
loader prompt.
Once this process succeeds, you will be able to boot directly to the
disk from the boot loader prompt. See the instructions in Booting Disks
for details on this.
## Disk Images ## Disk Images
@ -447,8 +411,8 @@ It is generally easier to use these disk images instead of copying all
the files over using XModem. You use your modern computer (Windows, the files over using XModem. You use your modern computer (Windows,
Linux, MacOS) to place the disk image onto the disk media, then just Linux, MacOS) to place the disk image onto the disk media, then just
move the media over to your system. In this scenario you **do not** run move the media over to your system. In this scenario you **do not** run
`CLRDIR` or `SYSCOPY` on the drive(s). The directory prepared and the
disk is already bootable, if it is an operating system.
`CLRDIR` or `SYSCOPY` on the drive(s). The directory is prepared and the
disk is already bootable, if it is an operating system boot disk image.
To copy the disk image files onto your actual media (floppy disk, CF To copy the disk image files onto your actual media (floppy disk, CF
Card, SD Card, etc.), you need to use an image writing utility on your Card, SD Card, etc.), you need to use an image writing utility on your
@ -459,7 +423,7 @@ you can use the `dd` command on Linux or MacOS. On Windows, in the
For floppy media, you can use RawWriteWin and for hard disk media, you For floppy media, you can use RawWriteWin and for hard disk media, you
can use Win32DiskImager. In all cases, the image file should be written can use Win32DiskImager. In all cases, the image file should be written
to the media starting at the very first block or sector of the media. to the media starting at the very first block or sector of the media.
This will destroy any other data on the media.
This will **destroy** any other data on the media.
The disk image files are found in the Binary directory of the The disk image files are found in the Binary directory of the
distribution. Floppy disk images are prefixed with “fd\_” and hard disk distribution. Floppy disk images are prefixed with “fd\_” and hard disk
@ -474,11 +438,11 @@ well as real spinning hard disks.
| Floppy | Hard | Description | | Floppy | Hard | Description |
| ------------- | ------------- | ---------------------------- | | ------------- | ------------- | ---------------------------- |
| fd\_cpm22.img | hd\_cpm22.img | DRI CP/M 2.2 bootable disk |
| fd\_zsdos.img | hd\_zsdos.img | ZSDOS 1.1 bootable disk |
| fd\_nzcom.img | hd\_nzcom.img | NZCOM bootable disk |
| fd\_cpm3 | hd\_cpm3.img | DRI CP/M 3 bootable disk |
| fd\_zpm3 | hd\_zpm3.img | ZPM3 bootable disk |
| fd\_cpm22.img | hd\_cpm22.img | DRI CP/M 2.2 boot disk |
| fd\_zsdos.img | hd\_zsdos.img | ZSDOS 1.1 boot disk |
| fd\_nzcom.img | hd\_nzcom.img | NZCOM boot disk |
| fd\_cpm3 | hd\_cpm3.img | DRI CP/M 3 boot disk |
| fd\_zpm3 | hd\_zpm3.img | ZPM3 boot disk |
| fd\_ws4 | hd\_ws4.img | WordStar v4 application disk | | fd\_ws4 | hd\_ws4.img | WordStar v4 application disk |
In addition to the disk images above, there is also a special hard disk In addition to the disk images above, there is also a special hard disk
@ -512,6 +476,52 @@ boot from disk as is. You do not need to run `SYSCOPY` on them to make
them bootable. However, if you upgrade your ROM, you should use them bootable. However, if you upgrade your ROM, you should use
`SYSCOPY` to update the system tracks. `SYSCOPY` to update the system tracks.
## Booting Disks
When starting your system, following the hardware initialization, you
will see the Boot Loader prompt. In addition, to the ROM boot options,
you will see another line listing the Disk boot options. This line lists
the disk devices that you can choose to boot directly.
You will notice that you do not have an option to boot a drive letter
here (like C:). This is because the operating system is not yet loaded.
When you ran `SYSCOPY` previously, remember that C: was assigned to
IDE0:0 which means device IDE0, slice 0. So, to boot the disk that you
just setup with `SYSCOPY`, you would choose option 1. You will then be
prompted for the slice on IDE0 that you want to boot. For now, just
press enter to choose slice 0. Once you are familiar with slices, you
can `SYSCOPY` and boot alternate slices. Here is what you would see when
booting to a disk device:
MARK IV Boot Loader
ROM: (M)onitor (C)P/M (Z)-System (F)orth (B)ASIC (T)-BASIC (P)LAY (U)SER ROM
Disk: (0)MD1 (1)MD0 (2)IDE0 (3)IDE1
Boot Selection? 2 Slice(0-9)[0]?
Booting Disk Unit 2, Slice 0...
Reading disk information...
Loc=D000 End=FE00 Ent=E600 Label=Unlabeled Drive
Loading...
Following this, you would see the normal operating system startup
messages. However, your operating system prompt will be `A>` and when
you look at the drive letter assignments, you should see that A: has
been assigned to the disk you selected to boot.
If you receive the error message “Disk not bootable\!”, you have either
failed to properly run `SYSCOPY` on the target disk or you have selected
the wrong disk/slice.
Note that although MD1 (RAM disk) and MD0 (ROM disk) drives are listed
in the Disk boot line, they are not “bootable” disks because they have
no system tracks on them. Attempting to boot to one of them, will fail
with a “Disk not bootable\!” error message and return to the loader
prompt.
# General Usage # General Usage
Each of the operating systems and ROM applications included with RomWBW Each of the operating systems and ROM applications included with RomWBW
@ -519,18 +529,18 @@ are sophisticated tools in their own right. It is not reasonable to
document their usage here. However, you will find complete manuals in document their usage here. However, you will find complete manuals in
PDF format in the Doc directory of the distribution. The intention of PDF format in the Doc directory of the distribution. The intention of
this section is to document the RomWBW specific enhancements to these this section is to document the RomWBW specific enhancements to these
OSes.
operating systems.
## ROM Disk ## ROM Disk
In addition to the ROM-based operating systems and applications, the ROM In addition to the ROM-based operating systems and applications, the ROM
also contains a ROM disk with a small CP/M filesystem. The contents have
been optimized to provide a core set of tools and applications that are
helpful for either CP/M 2.2 and ZSDOS. Since ZSDOS is CP/M 2.2
compatible, this works fairly well. However, you will find some files on
the ROM disk that will work with ZSDOS, but will not work on CP/M 2.2.
For example, `LDDS`, which loads the ZSDOS date/time stamper will only
run on ZSDOS.
also contains a ROM disk with a small CP/M filesystem. The contents of
the ROM disk have been chosen to provide a core set of tools and
applications that are helpful for either CP/M 2.2 or ZSDOS. Since ZSDOS
is CP/M 2.2 compatible, this works fairly well. However, you will find
some files on the ROM disk that will work with ZSDOS, but will not work
on CP/M 2.2. For example, `LDDS`, which loads the ZSDOS date/time
stamper will only run on ZSDOS.
## Drive Letter Assignment ## Drive Letter Assignment
@ -577,8 +587,8 @@ accessible to any of the operating systems.
Since storage devices today are quite large, RomWBW implements a Since storage devices today are quite large, RomWBW implements a
mechanism called slicing to allow up to 256 8MB filesystems on a single mechanism called slicing to allow up to 256 8MB filesystems on a single
large storage device. This allows up to 2GB of useable space on a single large storage device. This allows up to 2GB of useable space on a single
media. You can think of slices as a way to refer to the first 256 8MB
chunks of space on a single media.
media. You can think of slices as a way to refer to any of the first 256
8MB chunks of space on a single media.
Of course, the problem is that CP/M-like operating systems have only 16 Of course, the problem is that CP/M-like operating systems have only 16
drive letters (A:-P:) available. Under the covers, RomWBW allows you to drive letters (A:-P:) available. Under the covers, RomWBW allows you to
@ -594,10 +604,10 @@ devices, you will see that each device is allocated four drive letters.
Referring to slices within a storage device is done by appending a :n Referring to slices within a storage device is done by appending a :n
where n is the device relative slice number from 0-255. For example, if where n is the device relative slice number from 0-255. For example, if
you have an IDE device, it will show up as IDE0: in the boot message
meaning the first IDE device. To refer to the second slice of IDE0, you
would type “IDE0:1”. So, if I wanted to use drive letter L: to refer to
the second slice of IDE0, I could use the command `ASSIGN L:=IDE0:1`.
you have an IDE device, it will show up as IDE0: in the boot messages
meaning the first IDE device. To refer to the fourth slice of IDE0, you
would type “IDE0:3”. So, if I wanted to use drive letter L: to refer to
the fourth slice of IDE0, I could use the command `ASSIGN L:=IDE0:3`.
There are a couple of rules to be aware of when assigning drive letters. There are a couple of rules to be aware of when assigning drive letters.
First, you may only refer to a specific device/slice with one drive First, you may only refer to a specific device/slice with one drive
@ -618,22 +628,22 @@ so you will know if you make a mistake. There is no tracking of your use
of slices – you will need to keep track of your use of slices yourself. of slices – you will need to keep track of your use of slices yourself.
Nothing automatically initializes a slice as a file system. You must do Nothing automatically initializes a slice as a file system. You must do
that yourself using `CLRDIR`. Since CLRDIR works on drive letters, make
absolutely sure you know what media and slice are assigned to that drive
letter before using `CLRDIR`.
that yourself using `CLRDIR`. Since `CLRDIR` works on drive letters,
make absolutely sure you know what media and slice are assigned to that
drive letter before using `CLRDIR`.
While it probably obvious, you cannot use slices on any media less than
8MB in size. Specifically, you cannot slice RAM disk, ROM disk, floppy
disks, etc.
While it is probably obvious, you cannot use slices on any media less
than 8MB in size. Specifically, you cannot slice RAM disks, ROM disks,
floppy disks, etc.
# Inbuilt ROM Applications # Inbuilt ROM Applications
In addition to CP/M 2.2 and Z-System, there are several additional ROM
applications that can be launched directly from ROM. These applications
are not hosted by an operating system and so they are unable to save
files to disk devices.
In addition to CP/M 2.2 and Z-System, there are several ROM applications
that can be launched directly from ROM. These applications are not
hosted by an operating system and so they are unable to save files to
disk devices.
The following options are available at the boot loader prompt:
The following ROM applications are available at the boot loader prompt:
| Application | | | Application | |
| ----------- | ------------------------------------------------------ | | ----------- | ------------------------------------------------------ |
@ -657,8 +667,8 @@ The operation of the RomWBW hosted operating systems is enhanced through
several custom applications. These applications are functional on all of several custom applications. These applications are functional on all of
the OS variants included with RomWBW. the OS variants included with RomWBW.
The following custom applications are found on the RomWBW ROM disk and
are, therefore, globally available.
The following custom applications are found on the ROM disk and are,
therefore, globally available.
| Application | Description | | Application | Description |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------ | | ----------- | ------------------------------------------------------------------------------------------------------------------------------------ |
@ -672,7 +682,7 @@ are, therefore, globally available.
| FDISK80 | John Coffman’s Z80 hard disk partitioning tool. See documentation in Doc directory. | | FDISK80 | John Coffman’s Z80 hard disk partitioning tool. See documentation in Doc directory. |
| FAT | Access MS-DOS FAT filesystems from RomWBW (based on FatFs). | | FAT | Access MS-DOS FAT filesystems from RomWBW (based on FatFs). |
| FLASH | Will Sowerbutts’ in-situ ROM programming utility. | | FLASH | Will Sowerbutts’ in-situ ROM programming utility. |
| CLRDIR | Format the directory areas of a CP/M disk. |
| CLRDIR | Initialize the directory area of a CP/M disk (Max Scane). |
Some custom applications do not fit on the ROM disk. They are found on Some custom applications do not fit on the ROM disk. They are found on
the disk image files or the individual files can be found in the the disk image files or the individual files can be found in the
@ -697,9 +707,9 @@ identical for all hardware supported by RomWBW because RomWBW hides all
hardware specifics from the operating system. hardware specifics from the operating system.
Note that all of the operating systems included with RomWBW support the Note that all of the operating systems included with RomWBW support the
same basic filesystem format. As as result, a formatted filesystem will
same basic filesystem format. As a result, a formatted filesystem will
be accessible to any operating system. The only possible issue is that be accessible to any operating system. The only possible issue is that
if you turn of date/time stamping using the newer OSes, the older OSes
if you turn on date/time stamping using the newer OSes, the older OSes
will not understand this. Files will not be corrupted, but the date/time will not understand this. Files will not be corrupted, but the date/time
stamps may be lost. stamps may be lost.
@ -748,7 +758,7 @@ OS via an auto command submission process.
This is the Digital Research follow-up product to their very popular This is the Digital Research follow-up product to their very popular
CP/M 2.2 operating system. While highly compatible with CP/M 2.2, it CP/M 2.2 operating system. While highly compatible with CP/M 2.2, it
features many enhancements. It makes better use of banked memory to
features many enhancements. It makes direct use of banked memory to
increase the user program space (TPA). It also has a new suite of increase the user program space (TPA). It also has a new suite of
support tools and help system. support tools and help system.
@ -761,14 +771,14 @@ tracks.
ZPM3 is an interesting combination of the features of both CP/M 3 and ZPM3 is an interesting combination of the features of both CP/M 3 and
ZCPR 3. Essentially, it has the features of and compatibility with both. ZCPR 3. Essentially, it has the features of and compatibility with both.
Like CP/M 3, to make ZPM3 boot disk, you put CPM3.SYS on the system
Like CP/M 3, to make ZPM3 boot disk, you put CPMLDR.SYS on the system
tracks of the disk. tracks of the disk.
## FreeRTOS ## FreeRTOS
Note that Phillip Stevens has also ported FreeRTOS to run under RomWBW. Note that Phillip Stevens has also ported FreeRTOS to run under RomWBW.
FreeRTOS is not provided in the RomWBW distribution, but is available
from Phillip.
FreeRTOS is not provided in the RomWBW distribution. You can contact
Phillip for availability.
# Transferring Files # Transferring Files
@ -790,18 +800,18 @@ file on your RomWBW system. Then, you will use your modern computers
terminal program to complete the process. terminal program to complete the process.
The `XM` application generally tries to detect the hardware you are The `XM` application generally tries to detect the hardware you are
using and adapt to it. However, you must ensure that you have a
realiable serial connection. You must also ensure that the speed of the
connection is not too fast for XModem to handle. Alternatively, you can
ensure that hardware flow control is working properly.
using and adapt to it. However, you must ensure that you have a reliable
serial connection. You must also ensure that the speed of the connection
is not too fast for XModem to service. Alternatively, you can ensure
that hardware flow control is working properly.
There is an odd interaction between XModem and partner terminal programs There is an odd interaction between XModem and partner terminal programs
that can occur. Essentially, after launching `XM`, you must start the that can occur. Essentially, after launching `XM`, you must start the
protocol on your modern computer fairly quickly (usually about 20
protocol on your modern computer fairly quickly (usually in about 20
seconds or so). So, if you do not pick a file on your modern computer seconds or so). So, if you do not pick a file on your modern computer
quickly enough, you will find that the transfer completes about 16K, quickly enough, you will find that the transfer completes about 16K,
then hangs. The interaction that casuses this is beyond the scope of
this document.
then hangs. The interaction that causes this is beyond the scope of this
document.
## Disk Image Transfers ## Disk Image Transfers
@ -823,7 +833,7 @@ computer is:
This process is a little complicated, but it has the benefit of allowing This process is a little complicated, but it has the benefit of allowing
you to get a lot of files over to your RomWBW system quickly and with you to get a lot of files over to your RomWBW system quickly and with
little change of corruption.
little chance of corruption.
The process can be run in reverse to get files from your RomWBW computer The process can be run in reverse to get files from your RomWBW computer
to a modern computer. to a modern computer.
@ -835,14 +845,14 @@ documents.
Note that the build scripts for RomWBW create the default disk images Note that the build scripts for RomWBW create the default disk images
supplied with RomWBW. It is relatively easy to customize the contents of supplied with RomWBW. It is relatively easy to customize the contents of
the disk images that are part of RomWBW. This is described in more the disk images that are part of RomWBW. This is described in more
detail in the Source\\Images driectory of the distribution.
detail in the Source\\Images directory of the distribution.
## FAT Filesystem Transfers ## FAT Filesystem Transfers
RomWBW provides a mechanism that allows it to read and write files on an
RomWBW provides a mechanism that allows it to read and write files on a
FAT formatted disk. This means that you can generally use your modern FAT formatted disk. This means that you can generally use your modern
computer to make an SD Card or CF Card with a standard FAT32 filesystem computer to make an SD Card or CF Card with a standard FAT32 filesystem
on it, then place that media in your RomWBW computer and read/write the
on it, then place that media in your RomWBW computer and access the
files. files.
When formatting the media on your modern computer, but sure to pick the When formatting the media on your modern computer, but sure to pick the
@ -868,23 +878,24 @@ and can be found in the Doc\\Contrib directory of the distribution.
# Startup Command Processing # Startup Command Processing
Each of the operating system supported by RomWBW provide a mechanism to
Each of the operating systems supported by RomWBW provide a mechanism to
run commands at boot. This is similar to the AUTOEXEC.BAT files from run commands at boot. This is similar to the AUTOEXEC.BAT files from
MS-DOS. MS-DOS.
With the exception of ZPM3, all operating system will look for a file
With the exception of ZPM3, all operating systems will look for a file
called `PROFILE.SUB` on the system drive at boot. If it is found, it called `PROFILE.SUB` on the system drive at boot. If it is found, it
will be processed as a standard CP/M submit file. You can read about the will be processed as a standard CP/M submit file. You can read about the
use of the SUBMIT facility in the CP/M manuals included in the RomWBW use of the SUBMIT facility in the CP/M manuals included in the RomWBW
distribution.
distribution. Note that the boot disk must also have a copy of
`SUBMIT.EXE`.
In the case of ZPM3, the file called `STARTZPM.COM` will be run at boot. In the case of ZPM3, the file called `STARTZPM.COM` will be run at boot.
To customize this file, you use the ZCPR ALIAS facility. You will need To customize this file, you use the ZCPR ALIAS facility. You will need
to refer to ZCPR documentation for more information on the ALIAS to refer to ZCPR documentation for more information on the ALIAS
facility. facility.
Note that automatic startup processing generally requires booting to a
disk drive. Since the ROM disk is not writable, there is no simple way
Note that the automatic startup processing generally requires booting to
a disk drive. Since the ROM disk is not writable, there is no simple way
to add/edit a `PROFILE.SUB` file there. If you want to customize your to add/edit a `PROFILE.SUB` file there. If you want to customize your
ROM and add a `PROFILE.SUB` file to the ROM Disk, it will work, but is a ROM and add a `PROFILE.SUB` file to the ROM Disk, it will work, but is a
lot harder than using a boot disk. lot harder than using a boot disk.
@ -900,10 +911,11 @@ a build script, but it is quite easy to do.
Essentially, the creation of a custom ROM is accomplished by updating a Essentially, the creation of a custom ROM is accomplished by updating a
small configuration file, then running a script to compile the software small configuration file, then running a script to compile the software
and generate the custom ROM image. There are build scripts for Windows,
Linux, and MacOS to accommodate virtually all users. All required build
tools (compilers, assemblers, etc.) are included in the distribution, so
it is not necessary to setup a build environment on your computer.
and generate the custom ROM and disk images. There are build scripts for
Windows, Linux, and MacOS to accommodate virtually all users. All
required build tools (compilers, assemblers, etc.) are included in the
distribution, so it is not necessary to setup a build environment on
your computer.
The process for building a custom ROM is documented in the ReadMe.txt The process for building a custom ROM is documented in the ReadMe.txt
file in the Source directory of the distribution. file in the Source directory of the distribution.
@ -951,6 +963,12 @@ for more information on UNA.
# RomWBW Distribution # RomWBW Distribution
All source code and distributions are maintained on GitHub. Code
contributions are very welcome.
[RomWBW GitHub
Repository](https://github.com/wwarthen/RomWBW%7Chttps://github.com/wwarthen/RomWBW)
## Distribution Directory Layout ## Distribution Directory Layout
The RomWBW distribution is a compressed zip archive file organized in a The RomWBW distribution is a compressed zip archive file organized in a
@ -965,14 +983,6 @@ are:
| Source | Contains the source code files used to build the software and ROM images. | | Source | Contains the source code files used to build the software and ROM images. |
| Tools | Contains the MS Windows programs that are used by the build process or that may be useful in setting up your system. | | Tools | Contains the MS Windows programs that are used by the build process or that may be useful in setting up your system. |
## Source Code Respository
All source code and distributions are maintained on GitHub. Code
contributions are very welcome.
[RomWBW GitHub
Repository](https://github.com/wwarthen/RomWBW%7Chttps://github.com/wwarthen/RomWBW)
# Acknowledgements # Acknowledgements
While I have heavily modified much of the code, I want to acknowledge While I have heavily modified much of the code, I want to acknowledge

315
ReadMe.txt

@ -2,7 +2,8 @@ RomWBW
Z80/Z180 System Software Z80/Z180 System Software
Version 2.9.2 of March 18, 2020
Version 2.9.2
Friday 20 March 2020
Wayne Warthen wwarthen@gmail.com Wayne Warthen wwarthen@gmail.com
@ -22,7 +23,7 @@ RomWBW provides a complete software system for a wide variety of
hobbyist Z80/Z180 CPU-based systems produced by these developer hobbyist Z80/Z180 CPU-based systems produced by these developer
communities: communities:
- Retrobrew Computers
- RetroBrew Computers
- RC2014 - RC2014
- retro-comp - retro-comp
@ -73,12 +74,12 @@ The latest RomWBW distribution downloads are maintained on GitHub in the
RomWBW Repository. The fully-built distributions are found on the RomWBW Repository. The fully-built distributions are found on the
releases page of the repository. On this page, you will probably see releases page of the repository. On this page, you will probably see
both pre-releases as well as normal releases. Unless you have a specific both pre-releases as well as normal releases. Unless you have a specific
reason, I suggest you stick to the most recent normal (not pre-release)
release. Expand the “Assets” drop-down for the release you want to
reason, I suggest you stick to the most recent normal release (not
pre-release). Expand the “Assets” drop-down for the release you want to
download, then select the asset named RomWBW-vX.X.X-Package.zip. The download, then select the asset named RomWBW-vX.X.X-Package.zip. The
Package asset includes all pre-built ROM and Disk images as well as full Package asset includes all pre-built ROM and Disk images as well as full
source code. The other assets called Source Code do not have the
pre-built ROM or Disk Images.
source code. The other assets are Source Code only and do not have the
pre-built ROM or disk images.
The pre-built ROM images will automatically detect and support a The pre-built ROM images will automatically detect and support a
reasonable range of devices including serial ports, video adapters, reasonable range of devices including serial ports, video adapters,
@ -105,44 +106,44 @@ files all end in “.rom”. Based on the table below, carefully pick the
appropriate ROM image: appropriate ROM image:
-------------------------------------------------------------------------- --------------------------------------------------------------------------
Platform ROM Image File Baud Description
Platform ROM Image File Baud Description
---------- ---------------- -------- ------------------------------------- ---------- ---------------- -------- -------------------------------------
SBC V1/V2 SBC_std.rom 38400 RetroBrew SBC v1 or v2 ECB Z80
SBC V1/V2 SBC_std.rom 38400 RetroBrew SBC v1 or v2 ECB Z80
Zeta V1 ZETA_std.rom 38400 RetroBrew Zeta V1 Z80, ParPortProp
Zeta V1 ZETA_std.rom 38400 RetroBrew Zeta V1 Z80, ParPortProp
(optional) (optional)
Zeta V2 ZETA2_std.rom 38400 RetroBrew Zeta V2 Z80, ParPortProp
Zeta V2 ZETA2_std.rom 38400 RetroBrew Zeta V2 Z80, ParPortProp
(optional) (optional)
N8 N8_std.rom 38400 RetroBrew N8 Z180, date code >= 2312
N8 N8_std.rom 38400 RetroBrew N8 Z180, date code >= 2312
Mark IV MK4_std.rom 38400 RetroBrew Mark IV ECB Z180
Mark IV MK4_std.rom 38400 RetroBrew Mark IV ECB Z180
RC2014 Z80 RCZ80_std.rom 115200 RC2014 w/ Z80 CPU, requires 512K
RC2014 Z80 RCZ80_std.rom 115200 RC2014 w/ Z80 CPU, requires 512K
RAM/ROM module RAM/ROM module
RC2014 RCZ180_ext.rom 115200 RC2014 w/ Z180 CPU & 512K banked
RC2014 RCZ180_ext.rom 115200 RC2014 w/ Z180 CPU & 512K banked
Z180* RAM/ROM module Z180* RAM/ROM module
RC2014 RCZ180_nat.rom 115200 RC2014 w/ Z180 CPU & 512K native
RC2014 RCZ180_nat.rom 115200 RC2014 w/ Z180 CPU & 512K native
Z180* RAM/ROM module Z180* RAM/ROM module
Easy Z80 EZZ80_std.rom 115200 Sergey Kiselev’s Easy Z80
Easy Z80 EZZ80_std.rom 115200 Sergey Kiselev’s Easy Z80
SC126 SCZ180_126.rom 115200 Stephen Cousin’s SC126 Z180
SC126 SCZ180_126.rom 115200 Stephen Cousin’s SC126 Z180
SC130 SCZ180_130.rom 115200 Stephen Cousin’s SC130 Z180
SC130 SCZ180_130.rom 115200 Stephen Cousin’s SC130 Z180
SC131 SCZ180_131.rom 115200 Stephen Cousin’s SC131 Z180
SC131 SCZ180_131.rom 115200 Stephen Cousin’s SC131 Z180
Dyno DYNO_std.rom 38400 Steve Garcia’s Z180 Dyno Computer
Dyno DYNO_std.rom 38400 Steve Garcia’s Z180 Dyno Computer
-------------------------------------------------------------------------- --------------------------------------------------------------------------
*The RC2014 Z180 requires a separate RAM/ROM memory module. There are *The RC2014 Z180 requires a separate RAM/ROM memory module. There are
two types of these modules and you must pick the ROM for your type of two types of these modules and you must pick the ROM for your type of
memory module. The “ext” ROM supports Spencer’s official 512K RAM/ROM memory module. The “ext” ROM supports Spencer’s official 512K RAM/ROM
banked memory module. The “nat” ROM supports any of the thrid-party Z180
banked memory module. The “nat” ROM supports any of the third-party Z180
native memory modules. native memory modules.
RomWBW will automatically attempt to detect and support typical add-on RomWBW will automatically attempt to detect and support typical add-on
@ -150,8 +151,8 @@ components for each of the systems supported. More information on the
required system configuration and optional supported components for each required system configuration and optional supported components for each
ROM is found in the file called “RomList.txt” in the Binary directory. ROM is found in the file called “RomList.txt” in the Binary directory.
All pre-built ROM images are simple 512KB binary images. If your system All pre-built ROM images are simple 512KB binary images. If your system
utilizes a 1MB ROM, you can just program the image into the first 512KB
of the ROM.
utilizes a larger ROM chip, you can just program the image into the
first 512KB of the ROM.
Connect a serial terminal or computer with terminal emulation software Connect a serial terminal or computer with terminal emulation software
to the primary serial port of your CPU board. You may need to refer to to the primary serial port of your CPU board. You may need to refer to
@ -198,16 +199,19 @@ not been updated and the next time you boot your system, it will revert
to the system image contained in ROM. You may find that you are unable to the system image contained in ROM. You may find that you are unable
to load the .com file because it is too large to fit in available to load the .com file because it is too large to fit in available
application RAM (TPA). Unfortunately, in this case, you will not be able application RAM (TPA). Unfortunately, in this case, you will not be able
to use the .com file to start your system.
to use the .com file mechanism to start your system.
If you do not have easy access to a ROM programmer, it is entirely
If you do not have easy access to a ROM programmer, it is usually
possible to reprogram your system ROM using the FLASH utility from Will possible to reprogram your system ROM using the FLASH utility from Will
Sowerbutts. This application called FLASH.COM can be found on the ROM Sowerbutts. This application called FLASH.COM can be found on the ROM
drive of any running system. In this case, you would need to transfer drive of any running system. In this case, you would need to transfer
the new ROM image (.rom) over to your system using XModem. The ROM image
will be too large to fit on your RAM drive, so you will need to transfer
it to a larger storage drive. Once the ROM image is on your system, you
can use the FLASH application to update your ROM:
the new ROM image (.rom) over to your system using XModem (or one of the
other mechanisms described in the Transferring Files section below). The
ROM image will be too large to fit on your RAM drive, so you will need
to transfer it to a larger storage drive. Once the ROM image is on your
system, you can use the FLASH application to update your ROM. The
following is a typical example of transferring ROM image using XModem
and flashing the chip in-situ.
E>xm r rom.img E>xm r rom.img
@ -240,9 +244,9 @@ device yet. Review the boot messages to see if any issues have occurred.
Once you are satisfied that the ROM is working well, you will need to Once you are satisfied that the ROM is working well, you will need to
update the system images and RomWBW custom applications on your disk update the system images and RomWBW custom applications on your disk
drives. The system images and custom applications are matched to the drives. The system images and custom applications are matched to the
RomWBW ROM firmware in use. If you attempt to use a disk or applications
that have not been updated to match the current ROM firmware, you are
likely to have odd problems.
RomWBW ROM firmware in use. If you attempt to boot a disk or run
applications that have not been updated to match the current ROM
firmware, you are likely to have odd problems.
The simplest way to update your disk media is to just use your modern The simplest way to update your disk media is to just use your modern
computer to overwrite the entire media with the latest disk image of computer to overwrite the entire media with the latest disk image of
@ -286,7 +290,8 @@ The systems supported by RomWBW all have the ability to use persistent
disk media. I am referring to all kinds of disk devices including floppy disk media. I am referring to all kinds of disk devices including floppy
drives, hard disks, CF Cards, and SD Cards. Some systems have disk drives, hard disks, CF Cards, and SD Cards. Some systems have disk
interfaces built-in, while others will require add-in cards. You will interfaces built-in, while others will require add-in cards. You will
need to refer to the documentation for your system.
need to refer to the documentation for your system for your specific
options.
In the RomWBW bootup messages, you will see hardware discovery messages. In the RomWBW bootup messages, you will see hardware discovery messages.
If you have a disk drive interface, you should see messages listing If you have a disk drive interface, you should see messages listing
@ -318,7 +323,7 @@ an example of this:
C:=IDE0:0 C:=IDE0:0
D:=IDE0:1 D:=IDE0:1
You will probably see mroe drive letters than this. The drive letter
You will probably see more drive letters than this. The drive letter
assignment process is described in more detail later in this document. assignment process is described in more detail later in this document.
Be aware that RomWBW will only assign drive letters to disk interfaces Be aware that RomWBW will only assign drive letters to disk interfaces
that actually have media in them. If you do not see drive letters that actually have media in them. If you do not see drive letters
@ -336,13 +341,13 @@ is also explained later in this document.
Once you are seeing drive letters referring to your disk media, you can Once you are seeing drive letters referring to your disk media, you can
follow the instructions below to begin using the disk media with the follow the instructions below to begin using the disk media with the
operating system. Your disk media must be initialized prior to be used.
There are two ways to initialize your media for use.
operating system. Your disk media must be initialized prior to being
used. There are two ways to initialize your media for use.
You can initialize the media in-place using your RomWBW system. This You can initialize the media in-place using your RomWBW system. This
process is described below under Disk Initialization. In this scenario, process is described below under Disk Initialization. In this scenario,
you will need to subsequently copy any files you want to use onto the you will need to subsequently copy any files you want to use onto the
newly initialized disk.
newly initialized disk (see Transferring Files).
Alternatively, you can use your modern Windows, Linux, or Mac computer Alternatively, you can use your modern Windows, Linux, or Mac computer
to copy a disk image onto the disk media. RomWBW comes with a variety of to copy a disk image onto the disk media. RomWBW comes with a variety of
@ -380,16 +385,14 @@ directory of the distribution. It is not necessary to run CLRDIR on a
floppy disk after physically formatting it – the directory is cleared as floppy disk after physically formatting it – the directory is cleared as
part of the formatting. part of the formatting.
Booting Disks
Once you have initialized a disk device and copied your desired files Once you have initialized a disk device and copied your desired files
onto it, you may want to boot directly to this disk device at startup.
On CP/M filesystems, you must perform one additional step to make a disk
bootable. Specifically, you need to place a copy of the oeoprating
system on the system tracks of the disk. This is done using the SYSCOPY
command. Let’s say you have prepared drive C: by initializing it with
CLRDIR and copied some files onto it. You can now make C: bootable by
running the following command:
onto it, you may want to make the disk bootable. On CP/M filesystems,
you must perform one additional step to make a disk bootable.
Specifically, you need to place a copy of the operating system on the
system tracks of the disk. This is done using the SYSCOPY command. Let’s
say you have prepared drive C: by initializing it with CLRDIR and copied
some files onto it. You can now make C: bootable by running the
following command:
B>SYSCOPY C:=B:ZSYS.SYS B>SYSCOPY C:=B:ZSYS.SYS
@ -408,49 +411,9 @@ Here is a full example of this process.
Transfer system image from B:ZSYS.SYS to C: (Y/N)? Y Transfer system image from B:ZSYS.SYS to C: (Y/N)? Y
Reading image... Writing image... Done Reading image... Writing image... Done
After successfully putting the operating system on the disk, you can
restart your system. When you get to the boot loader, notice the line
starting with “Disk:”. This line lists the disk devices that you can
choose to boot directly.
You will notice that you do not have an option to boot a drive letter
here (like C:). This is because the operating system is not yet loaded.
When you ran SYSCOPY previously, remember that C: was assigned to IDE0:0
which means device IDE0, slice 0. So, to boot the disk that you just
setup with SYSCOPY, you would choose option 1. You will then be prompted
for the slice on IDE0 that you want to boot. For now, just press enter
to choose slice 0. Once you are familiar with slices, you can SYSCOPY
and boot alternate slices. Here is what you would see when booting to a
disk device:
MARK IV Boot Loader
ROM: (M)onitor (C)P/M (Z)-System (F)orth (B)ASIC (T)-BASIC (P)LAY (U)SER ROM
Disk: (0)MD1 (1)MD0 (2)IDE0 (3)IDE1
Boot Selection? 2 Slice(0-9)[0]?
Booting Disk Unit 2, Slice 0...
Reading disk information...
Loc=D000 End=FE00 Ent=E600 Label=Unlabeled Drive
Loading...
Following this, you would see the normal operating system startup
messages. However, your operating system prompt will be A> and when you
look at the drive letter assignments, you should see that A: has been
assigned to the disk you selected to boot.
If you receive the error message “Disk not bootable!”, you have either
failed to properly run SYSCOPY on the target disk or you have selected
the wrong disk/slice.
Note that although MD1 (RAM disk) and MD0 (ROM disk) drives are listed
in the Disk boot line, they are not currently “bootable” disks because
they have no system tracks on them. Attempting to boot to one of them,
will fail with a “Disk not bootable!” error message and return to the
loader prompt.
Once this process succeeds, you will be able to boot directly to the
disk from the boot loader prompt. See the instructions in Booting Disks
for details on this.
Disk Images Disk Images
@ -460,8 +423,8 @@ It is generally easier to use these disk images instead of copying all
the files over using XModem. You use your modern computer (Windows, the files over using XModem. You use your modern computer (Windows,
Linux, MacOS) to place the disk image onto the disk media, then just Linux, MacOS) to place the disk image onto the disk media, then just
move the media over to your system. In this scenario you do not run move the media over to your system. In this scenario you do not run
CLRDIR or SYSCOPY on the drive(s). The directory prepared and the disk
is already bootable, if it is an operating system.
CLRDIR or SYSCOPY on the drive(s). The directory is prepared and the
disk is already bootable, if it is an operating system boot disk image.
To copy the disk image files onto your actual media (floppy disk, CF To copy the disk image files onto your actual media (floppy disk, CF
Card, SD Card, etc.), you need to use an image writing utility on your Card, SD Card, etc.), you need to use an image writing utility on your
@ -487,11 +450,11 @@ well as real spinning hard disks.
Floppy Hard Description Floppy Hard Description
-------------- -------------- ------------------------------ -------------- -------------- ------------------------------
fd_cpm22.img hd_cpm22.img DRI CP/M 2.2 bootable disk
fd_zsdos.img hd_zsdos.img ZSDOS 1.1 bootable disk
fd_nzcom.img hd_nzcom.img NZCOM bootable disk
fd_cpm3 hd_cpm3.img DRI CP/M 3 bootable disk
fd_zpm3 hd_zpm3.img ZPM3 bootable disk
fd_cpm22.img hd_cpm22.img DRI CP/M 2.2 boot disk
fd_zsdos.img hd_zsdos.img ZSDOS 1.1 boot disk
fd_nzcom.img hd_nzcom.img NZCOM boot disk
fd_cpm3 hd_cpm3.img DRI CP/M 3 boot disk
fd_zpm3 hd_zpm3.img ZPM3 boot disk
fd_ws4 hd_ws4.img WordStar v4 application disk fd_ws4 hd_ws4.img WordStar v4 application disk
In addition to the disk images above, there is also a special hard disk In addition to the disk images above, there is also a special hard disk
@ -525,6 +488,52 @@ boot from disk as is. You do not need to run SYSCOPY on them to make
them bootable. However, if you upgrade your ROM, you should use SYSCOPY them bootable. However, if you upgrade your ROM, you should use SYSCOPY
to update the system tracks. to update the system tracks.
Booting Disks
When starting your system, following the hardware initialization, you
will see the Boot Loader prompt. In addition, to the ROM boot options,
you will see another line listing the Disk boot options. This line lists
the disk devices that you can choose to boot directly.
You will notice that you do not have an option to boot a drive letter
here (like C:). This is because the operating system is not yet loaded.
When you ran SYSCOPY previously, remember that C: was assigned to IDE0:0
which means device IDE0, slice 0. So, to boot the disk that you just
setup with SYSCOPY, you would choose option 1. You will then be prompted
for the slice on IDE0 that you want to boot. For now, just press enter
to choose slice 0. Once you are familiar with slices, you can SYSCOPY
and boot alternate slices. Here is what you would see when booting to a
disk device:
MARK IV Boot Loader
ROM: (M)onitor (C)P/M (Z)-System (F)orth (B)ASIC (T)-BASIC (P)LAY (U)SER ROM
Disk: (0)MD1 (1)MD0 (2)IDE0 (3)IDE1
Boot Selection? 2 Slice(0-9)[0]?
Booting Disk Unit 2, Slice 0...
Reading disk information...
Loc=D000 End=FE00 Ent=E600 Label=Unlabeled Drive
Loading...
Following this, you would see the normal operating system startup
messages. However, your operating system prompt will be A> and when you
look at the drive letter assignments, you should see that A: has been
assigned to the disk you selected to boot.
If you receive the error message “Disk not bootable!”, you have either
failed to properly run SYSCOPY on the target disk or you have selected
the wrong disk/slice.
Note that although MD1 (RAM disk) and MD0 (ROM disk) drives are listed
in the Disk boot line, they are not “bootable” disks because they have
no system tracks on them. Attempting to boot to one of them, will fail
with a “Disk not bootable!” error message and return to the loader
prompt.
General Usage General Usage
Each of the operating systems and ROM applications included with RomWBW Each of the operating systems and ROM applications included with RomWBW
@ -532,18 +541,18 @@ are sophisticated tools in their own right. It is not reasonable to
document their usage here. However, you will find complete manuals in document their usage here. However, you will find complete manuals in
PDF format in the Doc directory of the distribution. The intention of PDF format in the Doc directory of the distribution. The intention of
this section is to document the RomWBW specific enhancements to these this section is to document the RomWBW specific enhancements to these
OSes.
operating systems.
ROM Disk ROM Disk
In addition to the ROM-based operating systems and applications, the ROM In addition to the ROM-based operating systems and applications, the ROM
also contains a ROM disk with a small CP/M filesystem. The contents have
been optimized to provide a core set of tools and applications that are
helpful for either CP/M 2.2 and ZSDOS. Since ZSDOS is CP/M 2.2
compatible, this works fairly well. However, you will find some files on
the ROM disk that will work with ZSDOS, but will not work on CP/M 2.2.
For example, LDDS, which loads the ZSDOS date/time stamper will only run
on ZSDOS.
also contains a ROM disk with a small CP/M filesystem. The contents of
the ROM disk have been chosen to provide a core set of tools and
applications that are helpful for either CP/M 2.2 or ZSDOS. Since ZSDOS
is CP/M 2.2 compatible, this works fairly well. However, you will find
some files on the ROM disk that will work with ZSDOS, but will not work
on CP/M 2.2. For example, LDDS, which loads the ZSDOS date/time stamper
will only run on ZSDOS.
Drive Letter Assignment Drive Letter Assignment
@ -590,8 +599,8 @@ accessible to any of the operating systems.
Since storage devices today are quite large, RomWBW implements a Since storage devices today are quite large, RomWBW implements a
mechanism called slicing to allow up to 256 8MB filesystems on a single mechanism called slicing to allow up to 256 8MB filesystems on a single
large storage device. This allows up to 2GB of useable space on a single large storage device. This allows up to 2GB of useable space on a single
media. You can think of slices as a way to refer to the first 256 8MB
chunks of space on a single media.
media. You can think of slices as a way to refer to any of the first 256
8MB chunks of space on a single media.
Of course, the problem is that CP/M-like operating systems have only 16 Of course, the problem is that CP/M-like operating systems have only 16
drive letters (A:-P:) available. Under the covers, RomWBW allows you to drive letters (A:-P:) available. Under the covers, RomWBW allows you to
@ -607,10 +616,10 @@ devices, you will see that each device is allocated four drive letters.
Referring to slices within a storage device is done by appending a :n Referring to slices within a storage device is done by appending a :n
where n is the device relative slice number from 0-255. For example, if where n is the device relative slice number from 0-255. For example, if
you have an IDE device, it will show up as IDE0: in the boot message
meaning the first IDE device. To refer to the second slice of IDE0, you
would type “IDE0:1”. So, if I wanted to use drive letter L: to refer to
the second slice of IDE0, I could use the command ASSIGN L:=IDE0:1.
you have an IDE device, it will show up as IDE0: in the boot messages
meaning the first IDE device. To refer to the fourth slice of IDE0, you
would type “IDE0:3”. So, if I wanted to use drive letter L: to refer to
the fourth slice of IDE0, I could use the command ASSIGN L:=IDE0:3.
There are a couple of rules to be aware of when assigning drive letters. There are a couple of rules to be aware of when assigning drive letters.
First, you may only refer to a specific device/slice with one drive First, you may only refer to a specific device/slice with one drive
@ -635,18 +644,18 @@ that yourself using CLRDIR. Since CLRDIR works on drive letters, make
absolutely sure you know what media and slice are assigned to that drive absolutely sure you know what media and slice are assigned to that drive
letter before using CLRDIR. letter before using CLRDIR.
While it probably obvious, you cannot use slices on any media less than
8MB in size. Specifically, you cannot slice RAM disk, ROM disk, floppy
disks, etc.
While it is probably obvious, you cannot use slices on any media less
than 8MB in size. Specifically, you cannot slice RAM disks, ROM disks,
floppy disks, etc.
Inbuilt ROM Applications Inbuilt ROM Applications
In addition to CP/M 2.2 and Z-System, there are several additional ROM
applications that can be launched directly from ROM. These applications
are not hosted by an operating system and so they are unable to save
files to disk devices.
In addition to CP/M 2.2 and Z-System, there are several ROM applications
that can be launched directly from ROM. These applications are not
hosted by an operating system and so they are unable to save files to
disk devices.
The following options are available at the boot loader prompt:
The following ROM applications are available at the boot loader prompt:
Application Application
------------- -------------------------------------------------------- ------------- --------------------------------------------------------
@ -670,8 +679,8 @@ The operation of the RomWBW hosted operating systems is enhanced through
several custom applications. These applications are functional on all of several custom applications. These applications are functional on all of
the OS variants included with RomWBW. the OS variants included with RomWBW.
The following custom applications are found on the RomWBW ROM disk and
are, therefore, globally available.
The following custom applications are found on the ROM disk and are,
therefore, globally available.
-------------------------------------------------------------------------- --------------------------------------------------------------------------
Application Description Application Description
@ -703,7 +712,7 @@ are, therefore, globally available.
FLASH Will Sowerbutts’ in-situ ROM programming utility. FLASH Will Sowerbutts’ in-situ ROM programming utility.
CLRDIR Format the directory areas of a CP/M disk.
CLRDIR Initialize the directory area of a CP/M disk (Max Scane).
-------------------------------------------------------------------------- --------------------------------------------------------------------------
Some custom applications do not fit on the ROM disk. They are found on Some custom applications do not fit on the ROM disk. They are found on
@ -728,9 +737,9 @@ identical for all hardware supported by RomWBW because RomWBW hides all
hardware specifics from the operating system. hardware specifics from the operating system.
Note that all of the operating systems included with RomWBW support the Note that all of the operating systems included with RomWBW support the
same basic filesystem format. As as result, a formatted filesystem will
same basic filesystem format. As a result, a formatted filesystem will
be accessible to any operating system. The only possible issue is that be accessible to any operating system. The only possible issue is that
if you turn of date/time stamping using the newer OSes, the older OSes
if you turn on date/time stamping using the newer OSes, the older OSes
will not understand this. Files will not be corrupted, but the date/time will not understand this. Files will not be corrupted, but the date/time
stamps may be lost. stamps may be lost.
@ -777,7 +786,7 @@ Digital Research CP/M 3
This is the Digital Research follow-up product to their very popular This is the Digital Research follow-up product to their very popular
CP/M 2.2 operating system. While highly compatible with CP/M 2.2, it CP/M 2.2 operating system. While highly compatible with CP/M 2.2, it
features many enhancements. It makes better use of banked memory to
features many enhancements. It makes direct use of banked memory to
increase the user program space (TPA). It also has a new suite of increase the user program space (TPA). It also has a new suite of
support tools and help system. support tools and help system.
@ -790,14 +799,14 @@ Simeon Cran’s ZPM3
ZPM3 is an interesting combination of the features of both CP/M 3 and ZPM3 is an interesting combination of the features of both CP/M 3 and
ZCPR 3. Essentially, it has the features of and compatibility with both. ZCPR 3. Essentially, it has the features of and compatibility with both.
Like CP/M 3, to make ZPM3 boot disk, you put CPM3.SYS on the system
Like CP/M 3, to make ZPM3 boot disk, you put CPMLDR.SYS on the system
tracks of the disk. tracks of the disk.
FreeRTOS FreeRTOS
Note that Phillip Stevens has also ported FreeRTOS to run under RomWBW. Note that Phillip Stevens has also ported FreeRTOS to run under RomWBW.
FreeRTOS is not provided in the RomWBW distribution, but is available
from Phillip.
FreeRTOS is not provided in the RomWBW distribution. You can contact
Phillip for availability.
Transferring Files Transferring Files
@ -819,18 +828,18 @@ your RomWBW system. Then, you will use your modern computers terminal
program to complete the process. program to complete the process.
The XM application generally tries to detect the hardware you are using The XM application generally tries to detect the hardware you are using
and adapt to it. However, you must ensure that you have a realiable
and adapt to it. However, you must ensure that you have a reliable
serial connection. You must also ensure that the speed of the connection serial connection. You must also ensure that the speed of the connection
is not too fast for XModem to handle. Alternatively, you can ensure that
hardware flow control is working properly.
is not too fast for XModem to service. Alternatively, you can ensure
that hardware flow control is working properly.
There is an odd interaction between XModem and partner terminal programs There is an odd interaction between XModem and partner terminal programs
that can occur. Essentially, after launching XM, you must start the that can occur. Essentially, after launching XM, you must start the
protocol on your modern computer fairly quickly (usually about 20
protocol on your modern computer fairly quickly (usually in about 20
seconds or so). So, if you do not pick a file on your modern computer seconds or so). So, if you do not pick a file on your modern computer
quickly enough, you will find that the transfer completes about 16K, quickly enough, you will find that the transfer completes about 16K,
then hangs. The interaction that casuses this is beyond the scope of
this document.
then hangs. The interaction that causes this is beyond the scope of this
document.
Disk Image Transfers Disk Image Transfers
@ -852,7 +861,7 @@ computer is:
This process is a little complicated, but it has the benefit of allowing This process is a little complicated, but it has the benefit of allowing
you to get a lot of files over to your RomWBW system quickly and with you to get a lot of files over to your RomWBW system quickly and with
little change of corruption.
little chance of corruption.
The process can be run in reverse to get files from your RomWBW computer The process can be run in reverse to get files from your RomWBW computer
to a modern computer. to a modern computer.
@ -864,14 +873,14 @@ documents.
Note that the build scripts for RomWBW create the default disk images Note that the build scripts for RomWBW create the default disk images
supplied with RomWBW. It is relatively easy to customize the contents of supplied with RomWBW. It is relatively easy to customize the contents of
the disk images that are part of RomWBW. This is described in more the disk images that are part of RomWBW. This is described in more
detail in the Source\Images driectory of the distribution.
detail in the Source\Images directory of the distribution.
FAT Filesystem Transfers FAT Filesystem Transfers
RomWBW provides a mechanism that allows it to read and write files on an
RomWBW provides a mechanism that allows it to read and write files on a
FAT formatted disk. This means that you can generally use your modern FAT formatted disk. This means that you can generally use your modern
computer to make an SD Card or CF Card with a standard FAT32 filesystem computer to make an SD Card or CF Card with a standard FAT32 filesystem
on it, then place that media in your RomWBW computer and read/write the
on it, then place that media in your RomWBW computer and access the
files. files.
When formatting the media on your modern computer, but sure to pick the When formatting the media on your modern computer, but sure to pick the
@ -897,23 +906,24 @@ and can be found in the Doc\Contrib directory of the distribution.
Startup Command Processing Startup Command Processing
Each of the operating system supported by RomWBW provide a mechanism to
Each of the operating systems supported by RomWBW provide a mechanism to
run commands at boot. This is similar to the AUTOEXEC.BAT files from run commands at boot. This is similar to the AUTOEXEC.BAT files from
MS-DOS. MS-DOS.
With the exception of ZPM3, all operating system will look for a file
With the exception of ZPM3, all operating systems will look for a file
called PROFILE.SUB on the system drive at boot. If it is found, it will called PROFILE.SUB on the system drive at boot. If it is found, it will
be processed as a standard CP/M submit file. You can read about the use be processed as a standard CP/M submit file. You can read about the use
of the SUBMIT facility in the CP/M manuals included in the RomWBW of the SUBMIT facility in the CP/M manuals included in the RomWBW
distribution.
distribution. Note that the boot disk must also have a copy of
SUBMIT.EXE.
In the case of ZPM3, the file called STARTZPM.COM will be run at boot. In the case of ZPM3, the file called STARTZPM.COM will be run at boot.
To customize this file, you use the ZCPR ALIAS facility. You will need To customize this file, you use the ZCPR ALIAS facility. You will need
to refer to ZCPR documentation for more information on the ALIAS to refer to ZCPR documentation for more information on the ALIAS
facility. facility.
Note that automatic startup processing generally requires booting to a
disk drive. Since the ROM disk is not writable, there is no simple way
Note that the automatic startup processing generally requires booting to
a disk drive. Since the ROM disk is not writable, there is no simple way
to add/edit a PROFILE.SUB file there. If you want to customize your ROM to add/edit a PROFILE.SUB file there. If you want to customize your ROM
and add a PROFILE.SUB file to the ROM Disk, it will work, but is a lot and add a PROFILE.SUB file to the ROM Disk, it will work, but is a lot
harder than using a boot disk. harder than using a boot disk.
@ -929,10 +939,11 @@ a build script, but it is quite easy to do.
Essentially, the creation of a custom ROM is accomplished by updating a Essentially, the creation of a custom ROM is accomplished by updating a
small configuration file, then running a script to compile the software small configuration file, then running a script to compile the software
and generate the custom ROM image. There are build scripts for Windows,
Linux, and MacOS to accommodate virtually all users. All required build
tools (compilers, assemblers, etc.) are included in the distribution, so
it is not necessary to setup a build environment on your computer.
and generate the custom ROM and disk images. There are build scripts for
Windows, Linux, and MacOS to accommodate virtually all users. All
required build tools (compilers, assemblers, etc.) are included in the
distribution, so it is not necessary to setup a build environment on
your computer.
The process for building a custom ROM is documented in the ReadMe.txt The process for building a custom ROM is documented in the ReadMe.txt
file in the Source directory of the distribution. file in the Source directory of the distribution.
@ -978,6 +989,11 @@ Please refer to the UNA BIOS Firmware Page for more information on UNA.
RomWBW Distribution RomWBW Distribution
All source code and distributions are maintained on GitHub. Code
contributions are very welcome.
RomWBW GitHub Repository
Distribution Directory Layout Distribution Directory Layout
The RomWBW distribution is a compressed zip archive file organized in a The RomWBW distribution is a compressed zip archive file organized in a
@ -1002,13 +1018,6 @@ are:
process or that may be useful in setting up your system. process or that may be useful in setting up your system.
-------------------------------------------------------------------------- --------------------------------------------------------------------------
Source Code Respository
All source code and distributions are maintained on GitHub. Code
contributions are very welcome.
RomWBW GitHub Repository
Acknowledgements Acknowledgements
While I have heavily modified much of the code, I want to acknowledge While I have heavily modified much of the code, I want to acknowledge

1
Source/Clean.cmd

@ -13,6 +13,5 @@ setlocal & cd Forth && call Clean.cmd & endlocal
setlocal & cd Fonts && call Clean.cmd & endlocal setlocal & cd Fonts && call Clean.cmd & endlocal
setlocal & cd BPBIOS && call Clean.cmd & endlocal setlocal & cd BPBIOS && call Clean.cmd & endlocal
setlocal & cd HBIOS && call Clean.cmd & endlocal setlocal & cd HBIOS && call Clean.cmd & endlocal
setlocal & cd Doc && call Clean.cmd & endlocal
setlocal & cd Images && call Clean & endlocal setlocal & cd Images && call Clean & endlocal
setlocal & cd Prop && call Clean & endlocal setlocal & cd Prop && call Clean & endlocal

68
Source/Doc/Architecture.md

@ -1,22 +1,21 @@
!include(Common.inc) !include(Common.inc)
!def(name)(Architecture)
!def(document)(Architecture)
--- ---
title: RomWBW !name
title: |
| !product
|
| !document
author: !author (mailto:!authmail) author: !author (mailto:!authmail)
date: !date date: !date
institution: !orgname institution: !orgname
documentclass: book documentclass: book
classoption:
- oneside
toc: true toc: true
toc-depth: 1 toc-depth: 1
numbersections: true numbersections: true
secnumdepth: 1 secnumdepth: 1
classoption:
- oneside
papersize: letter papersize: letter
fontsize: 12pt
graphics: yes
fontfamily: helvet
# fontfamilyoptions: scaled
geometry: geometry:
- top=1in - top=1in
- bottom=1in - bottom=1in
@ -26,7 +25,8 @@ geometry:
# - pass # - pass
linestretch: 1.25 linestretch: 1.25
colorlinks: true colorlinks: true
#pagestyle: empty
fontfamily: helvet
fontsize: 12pt
header-includes: header-includes:
- \setlength{\headheight}{15pt} - \setlength{\headheight}{15pt}
- | - |
@ -35,8 +35,6 @@ header-includes:
\usepackage{xcolor} \usepackage{xcolor}
\usepackage{xhfill} \usepackage{xhfill}
\renewcommand*{\familydefault}{\sfdefault} \renewcommand*{\familydefault}{\sfdefault}
\renewcommand{\bfdefault}{b}
\renewcommand{\contentsname}{Table of Contents}
\renewcommand{\maketitle}{ \renewcommand{\maketitle}{
\begin{titlepage} \begin{titlepage}
\centering \centering
@ -45,8 +43,8 @@ header-includes:
\includegraphics[width=\paperwidth]{Graphics/Logo.pdf} \par \includegraphics[width=\paperwidth]{Graphics/Logo.pdf} \par
\vfill \vfill
\raggedleft \raggedleft
{\scshape \bfseries \fontsize{48pt}{56pt} \selectfont RomWBW \par}
{\bfseries \fontsize{32pt}{36pt} \selectfont !name \par}
{\scshape \bfseries \fontsize{48pt}{56pt} \selectfont !product \par}
{\bfseries \fontsize{32pt}{36pt} \selectfont !document \par}
\vspace{24pt} \vspace{24pt}
{\huge Version !ver \\ !date \par} {\huge Version !ver \\ !date \par}
\vspace{24pt} \vspace{24pt}
@ -71,7 +69,7 @@ include-before:
```{=latex} ```{=latex}
\clearpage \clearpage
\pagenumbering{arabic} \pagenumbering{arabic}
\lhead{\fancyplain{}{\nouppercase{\footnotesize \bfseries \leftmark \hfill RomWBW !name}}}
\lhead{\fancyplain{}{\nouppercase{\footnotesize \bfseries \leftmark \hfill !product !document}}}
``` ```
Overview Overview
@ -419,7 +417,7 @@ bits are defined as YXXXX.
| C: Serial Device Unit Number | C: Serial Device Unit Number
| _Exit Results_ | _Exit Results_
| A: Status
| A: Status (0=OK, else error)
| E: Character Received | E: Character Received
Read a character from the device unit specified in register C and return the character Read a character from the device unit specified in register C and return the character
@ -433,7 +431,7 @@ value in E. If no character(s) are available, this function will wait indefinite
| E: Character to Send | E: Character to Send
| _Exit Results_ | _Exit Results_
| A: Status
| A: Status (0=OK, else error)
Send character value in register E to device specified in register C. If device is Send character value in register E to device specified in register C. If device is
not ready to send, function will wait indefinitely. not ready to send, function will wait indefinitely.
@ -445,7 +443,7 @@ not ready to send, function will wait indefinitely.
| C: Serial Device Unit Number | C: Serial Device Unit Number
| _Exit Results_ | _Exit Results_
| A: Status
| A: Bytes Pending
Return the number of characters available to read in the input buffer of the unit Return the number of characters available to read in the input buffer of the unit
specified. If the device has no input buffer, it is acceptable to return simply 0 or specified. If the device has no input buffer, it is acceptable to return simply 0 or
@ -459,7 +457,7 @@ least one character available to read.
| C: Serial Device Unit Number | C: Serial Device Unit Number
| _Exit Results_ | _Exit Results_
| A: Status
| A: Output Buffer Bytes Available
Return the space available in the output buffer expressed as a character count. If a Return the space available in the output buffer expressed as a character count. If a
16 byte output buffer contained 6 characters waiting to be sent, this function would 16 byte output buffer contained 6 characters waiting to be sent, this function would
@ -475,7 +473,7 @@ busy and 1 means the port is ready to output a character.
| DE: Line Characteristics | DE: Line Characteristics
| _Exit Results_ | _Exit Results_
| A: Status
| A: Status (0=OK, else error)
Setup line characteristics (baudrate, framing, etc.) of the specified unit. Register Setup line characteristics (baudrate, framing, etc.) of the specified unit. Register
pair DE specifies line characteristics. If DE contains -1 (0xFFFF), then the device pair DE specifies line characteristics. If DE contains -1 (0xFFFF), then the device
@ -489,7 +487,7 @@ is returned in A with zero indicating success.
| C: Serial Device Unit Number | C: Serial Device Unit Number
| _Exit Results_ | _Exit Results_
| A: Status
| A: Status (0=OK, else error)
| DE: Line Characteristics | DE: Line Characteristics
Reports the line characteristics (baudrate, framing, etc.) of the specified unit. Reports the line characteristics (baudrate, framing, etc.) of the specified unit.
@ -502,7 +500,7 @@ Register pair DE contains the line characteristics upon return.
| C: Serial Device Unit Number | C: Serial Device Unit Number
| _Exit Results_ | _Exit Results_
| A: Status
| A: Status (0=OK, else error)
| C: Serial Device Attributes | C: Serial Device Attributes
| D: Serial Device Type | D: Serial Device Type
| E: Serial Device Number | E: Serial Device Number
@ -556,7 +554,7 @@ MID\_FD111 | 9 | 8" 1.11M Floppy
| B: 0x10 | B: 0x10
| _Exit Results_ | _Exit Results_
| A: Status (0=OK, 1=Error)
| A: Status (0=OK, else error)
### Function 0x11 -- Disk Status (DIORESET) ### Function 0x11 -- Disk Status (DIORESET)
@ -565,7 +563,7 @@ MID\_FD111 | 9 | 8" 1.11M Floppy
| C: Disk Device Unit ID | C: Disk Device Unit ID
| _Exit Results_ | _Exit Results_
| A: Status (0=OK, 1=Error)
| A: Status (0=OK, else error)
Reset the physical interface associated with the specified unit. Flag Reset the physical interface associated with the specified unit. Flag
all units associated with the interface for unit initialization at next all units associated with the interface for unit initialization at next
@ -588,7 +586,7 @@ associated units of the physical interface.
| DE:HL: Block Address | DE:HL: Block Address
| _Exit Results_ | _Exit Results_
| A: Status (0=OK, 1=Error)
| A: Status (0=OK, else error)
Update target CHS or LBA for next I/O request on designated unit. Update target CHS or LBA for next I/O request on designated unit.
Physical seek is typically deferred until subsequent I/O Physical seek is typically deferred until subsequent I/O
@ -614,7 +612,7 @@ determine if the device supports LBA addressing.
| HL: Buffer Address | HL: Buffer Address
| _Exit Results_ | _Exit Results_
| A: Status (0=OK, 1=Error)
| A: Status (0=OK, else error)
| E: Blocks Reaad | E: Blocks Reaad
Read Block Count sectors to buffer address starting at current target Read Block Count sectors to buffer address starting at current target
@ -636,7 +634,7 @@ sectors requested, and 2) entire buffer area resides in upper 32K of memory.
| HL: Buffer Address | HL: Buffer Address
| _Exit Results_ | _Exit Results_
| A: Status (0=OK, 1=Error)
| A: Status (0=OK, else error)
| E: Blocks Written | E: Blocks Written
Write Block Count sectors to buffer address starting at current target Write Block Count sectors to buffer address starting at current target
@ -659,7 +657,7 @@ sectors being written, and 2) entire buffer area resides in upper 32K of memory.
| E: Block Count | E: Block Count
| _Exit Results_ | _Exit Results_
| A: Status (0=OK, 1=Error)
| A: Status (0=OK, else error)
| E: Blocks Verified | E: Blocks Verified
\*\*\*Not Implemented\*\*\* \*\*\*Not Implemented\*\*\*
@ -674,7 +672,7 @@ sectors being written, and 2) entire buffer area resides in upper 32K of memory.
| HL: Cylinder | HL: Cylinder
| _Exit Results_ | _Exit Results_
| A: Status (0=OK, 1=Error)
| A: Status (0=OK, else error)
\*\*\*Not Implemented\*\*\* \*\*\*Not Implemented\*\*\*
@ -685,7 +683,7 @@ sectors being written, and 2) entire buffer area resides in upper 32K of memory.
| C: Disk Device Unit ID | C: Disk Device Unit ID
| _Exit Results_ | _Exit Results_
| A: Status (0=OK, 1=Error)
| A: Status (0=OK, else error)
| C: Attributes | C: Attributes
| D: Device Type | D: Device Type
| E: Device Number | E: Device Number
@ -734,12 +732,12 @@ etc.) which is identified by a device type id from the table below.
| E0: Enable Media Discovery | E0: Enable Media Discovery
| _Exit Results_ | _Exit Results_
| A: Status (0=OK, 1=Error)
| A: Status (0=OK, else error)
| E: Media ID | E: Media ID
Report the media definition for media in specified unit. If bit 0 of E is Report the media definition for media in specified unit. If bit 0 of E is
set, then perform media discovery or verification. If no media in device, set, then perform media discovery or verification. If no media in device,
return no media error.
function will return an error status.
### Function 0x19 -- Disk Define Media (DIODEFMED) ### Function 0x19 -- Disk Define Media (DIODEFMED)
@ -749,7 +747,7 @@ return no media error.
| E: Media ID | E: Media ID
| _Exit Results_ | _Exit Results_
| A: Status (0=OK, 1=Error)
| A: Status (0=OK, else error)
\*\*\* Not implemented \*\*\* \*\*\* Not implemented \*\*\*
@ -761,7 +759,7 @@ return no media error.
| HL: Buffer Address | HL: Buffer Address
| _Exit Results_ | _Exit Results_
| A: Status (0=OK, 1=Error)
| A: Status (0=OK, else error)
| DE:HL: Blocks on Device | DE:HL: Blocks on Device
| BC: Block Size | BC: Block Size
@ -776,7 +774,7 @@ block size. If media is unknown, an error will be returned.
| C: Disk Device Unit ID | C: Disk Device Unit ID
| _Exit Results_ | _Exit Results_
| A: Status (0=OK, 1=Error)
| A: Status (0=OK, else error)
| HL: Cylinders | HL: Cylinders
| D7: LBA Capability | D7: LBA Capability
| BC: Block Size | BC: Block Size
@ -1199,7 +1197,7 @@ contains a negative number, then reverse scroll should be performed.
| C: Video Device Unit ID | C: Video Device Unit ID
| _Exit Results_ | _Exit Results_
| A: Status (# Key Codes in Keyboard Buffer)
| A:Count of Key Codes in Keyboard Buffer
Return a count of the number of key codes in the keyboard buffer. If it Return a count of the number of key codes in the keyboard buffer. If it
is not possible to determine the actual number in the buffer, it is is not possible to determine the actual number in the buffer, it is

4
Source/Doc/Common.inc

@ -1,6 +1,6 @@
!def(ver)(2.9.2) !def(ver)(2.9.2)
!def(date)(March 18, 2020)
!def(name)(RomWBW)
!def(date)(!mdate)
!def(product)(RomWBW)
!def(author)(Wayne Warthen) !def(author)(Wayne Warthen)
!def(authmail)(wwarthen@gmail.com) !def(authmail)(wwarthen@gmail.com)
!def(orgname)(RetroBrew Computers Group) !def(orgname)(RetroBrew Computers Group)

173
Source/Doc/GettingStarted.md

@ -1,14 +1,17 @@
!include(Common.inc) !include(Common.inc)
!def(name)(Getting Started)
!def(document)(Getting Started)
--- ---
title: RomWBW !name
title: |
| !product
|
| !document
author: !author (mailto:!authmail) author: !author (mailto:!authmail)
date: !date date: !date
institution: !orgname institution: !orgname
documentclass: article documentclass: article
toc: true
classoption: classoption:
- oneside - oneside
toc: true
papersize: letter papersize: letter
geometry: geometry:
- top=1in - top=1in
@ -24,16 +27,18 @@ header-includes:
- | - |
```{=latex} ```{=latex}
\renewcommand*{\familydefault}{\sfdefault} \renewcommand*{\familydefault}{\sfdefault}
\setstretch{1.25} % for TOC
``` ```
--- ---
`\clearpage`{=latex}
`\clearpage % new page after TOC`{=latex}
# RomWBW # RomWBW
## Z80/Z180 System Software ## Z80/Z180 System Software
Version !ver of !date
| Version !ver
| !date
!author() [!authmail](mailto:!authmail) !author() [!authmail](mailto:!authmail)
@ -51,7 +56,7 @@ Version !ver of !date
RomWBW provides a complete software system for a wide variety of hobbyist Z80/Z180 CPU-based systems produced by these developer communities: RomWBW provides a complete software system for a wide variety of hobbyist Z80/Z180 CPU-based systems produced by these developer communities:
* [Retrobrew Computers](https://www.retrobrewcomputers.org)
* [RetroBrew Computers](https://www.retrobrewcomputers.org)
* [RC2014](https://rc2014.co.uk) * [RC2014](https://rc2014.co.uk)
* [retro-comp](https://groups.google.com/forum/#!forum/retro-comp) * [retro-comp](https://groups.google.com/forum/#!forum/retro-comp)
@ -80,7 +85,7 @@ Multiple disk images are provided in the distribution. Most disk images contain
# Installation # Installation
The latest RomWBW distribution downloads are maintained on GitHub in the [RomWBW Repository](https://github.com/wwarthen/RomWBW). The fully-built distributions are found on the [releases page](https://github.com/wwarthen/RomWBW/releases) of the repository. On this page, you will probably see both pre-releases as well as normal releases. Unless you have a specific reason, I suggest you stick to the most recent normal (not pre-release) release. Expand the "Assets" drop-down for the release you want to download, then select the asset named RomWBW-vX.X.X-Package.zip. The Package asset includes all pre-built ROM and Disk images as well as full source code. The other assets called Source Code do not have the pre-built ROM or Disk Images.
The latest RomWBW distribution downloads are maintained on GitHub in the [RomWBW Repository](https://github.com/wwarthen/RomWBW). The fully-built distributions are found on the [releases page](https://github.com/wwarthen/RomWBW/releases) of the repository. On this page, you will probably see both pre-releases as well as normal releases. Unless you have a specific reason, I suggest you stick to the most recent normal release (not pre-release). Expand the "Assets" drop-down for the release you want to download, then select the asset named RomWBW-vX.X.X-Package.zip. The Package asset includes all pre-built ROM and Disk images as well as full source code. The other assets are Source Code only and do not have the pre-built ROM or disk images.
The pre-built ROM images will automatically detect and support a reasonable range of devices including serial ports, video adapters, on-board disk interfaces, and PropIO/ParPortProp boards without building a custom ROM. The distribution is a .zip archive. After downloading it to a working directory on your modern computer (Windows/Linux/Mac) use any zip tool to extract the contents of the archive. The pre-built ROM images will automatically detect and support a reasonable range of devices including serial ports, video adapters, on-board disk interfaces, and PropIO/ParPortProp boards without building a custom ROM. The distribution is a .zip archive. After downloading it to a working directory on your modern computer (Windows/Linux/Mac) use any zip tool to extract the contents of the archive.
@ -89,7 +94,7 @@ In general, you will just program your system's ROM chip with the appropriate RO
Looking at the extracted distribution archive, You will see that the distribution is broken up into a few sub-directories. The Binary directory contains the pre-built ROM and disk images. The ROM image files all end in ".rom". Based on the table below, **carefully** pick the appropriate ROM image: Looking at the extracted distribution archive, You will see that the distribution is broken up into a few sub-directories. The Binary directory contains the pre-built ROM and disk images. The ROM image files all end in ".rom". Based on the table below, **carefully** pick the appropriate ROM image:
| Platform | ROM Image File | Baud | Description | | Platform | ROM Image File | Baud | Description |
| --------------| --------------------- | --------- | ------------------------------------------------ |
| --------------| --------------------- | --------: | ------------------------------------------------ |
| SBC V1/V2 | SBC_std.rom | 38400 | RetroBrew SBC v1 or v2 ECB Z80 | | SBC V1/V2 | SBC_std.rom | 38400 | RetroBrew SBC v1 or v2 ECB Z80 |
| Zeta V1 | ZETA_std.rom | 38400 | RetroBrew Zeta V1 Z80, ParPortProp (optional) | | Zeta V1 | ZETA_std.rom | 38400 | RetroBrew Zeta V1 Z80, ParPortProp (optional) |
| Zeta V2 | ZETA2_std.rom | 38400 | RetroBrew Zeta V2 Z80, ParPortProp (optional) | | Zeta V2 | ZETA2_std.rom | 38400 | RetroBrew Zeta V2 Z80, ParPortProp (optional) |
@ -104,9 +109,9 @@ Looking at the extracted distribution archive, You will see that the distributio
| SC131 | SCZ180_131.rom | 115200 | Stephen Cousin's SC131 Z180 | | SC131 | SCZ180_131.rom | 115200 | Stephen Cousin's SC131 Z180 |
| Dyno | DYNO_std.rom | 38400 | Steve Garcia's Z180 Dyno Computer | | Dyno | DYNO_std.rom | 38400 | Steve Garcia's Z180 Dyno Computer |
\*The RC2014 Z180 requires a separate RAM/ROM memory module. There are two types of these modules and you must pick the ROM for your type of memory module. The "ext" ROM supports Spencer's official 512K RAM/ROM banked memory module. The "nat" ROM supports any of the thrid-party Z180 native memory modules.
\*The RC2014 Z180 requires a separate RAM/ROM memory module. There are two types of these modules and you must pick the ROM for your type of memory module. The "ext" ROM supports Spencer's official 512K RAM/ROM banked memory module. The "nat" ROM supports any of the third-party Z180 native memory modules.
RomWBW will automatically attempt to detect and support typical add-on components for each of the systems supported. More information on the required system configuration and optional supported components for each ROM is found in the file called "RomList.txt" in the Binary directory. All pre-built ROM images are simple 512KB binary images. If your system utilizes a 1MB ROM, you can just program the image into the first 512KB of the ROM.
RomWBW will automatically attempt to detect and support typical add-on components for each of the systems supported. More information on the required system configuration and optional supported components for each ROM is found in the file called "RomList.txt" in the Binary directory. All pre-built ROM images are simple 512KB binary images. If your system utilizes a larger ROM chip, you can just program the image into the first 512KB of the ROM.
Connect a serial terminal or computer with terminal emulation software to the primary serial port of your CPU board. You may need to refer to your hardware provider's documentation for details. A null-modem connection may be required. Set the baud rate as indicated in the table above. Set the line characteristics to 8 data bits, 1 stop bit, no parity, and no flow control. If possible, select VT-100 terminal emulation. Connect a serial terminal or computer with terminal emulation software to the primary serial port of your CPU board. You may need to refer to your hardware provider's documentation for details. A null-modem connection may be required. Set the baud rate as indicated in the table above. Set the line characteristics to 8 data bits, 1 stop bit, no parity, and no flow control. If possible, select VT-100 terminal emulation.
@ -118,9 +123,9 @@ Initially, you should try the ROM boot options. By selecting either CP/M 2.2 or
Upgrading to a newer release of RomWBW is essentially just a matter of updating the ROM chip in your system. If you have spare ROM chips for your system and a ROM programmer, it is always safest to keep your existing, working ROM chip and program a new one with the new firmware. If the new one fails to boot, you can easily return to the known working ROM. Upgrading to a newer release of RomWBW is essentially just a matter of updating the ROM chip in your system. If you have spare ROM chips for your system and a ROM programmer, it is always safest to keep your existing, working ROM chip and program a new one with the new firmware. If the new one fails to boot, you can easily return to the known working ROM.
Prior to attempting to reprogram your actual ROM chip, you may wish to "try" the upgrade. With RomWBW, you can upload a new system image and load it from the command line. For each ROM image file (.rom) in the Binary directory, you will also find a corresponding application file (.com). For example, for SBC_std.rom, there is also an SBC_std.com file. You can upload the .com file to your system using XModem, then simply run the .com file. You will see your system go through the normal startup process just like it was started from ROM. However, your ROM has not been updated and the next time you boot your system, it will revert to the system image contained in ROM. You may find that you are unable to load the .com file because it is too large to fit in available application RAM (TPA). Unfortunately, in this case, you will not be able to use the .com file to start your system.
Prior to attempting to reprogram your actual ROM chip, you may wish to "try" the upgrade. With RomWBW, you can upload a new system image and load it from the command line. For each ROM image file (.rom) in the Binary directory, you will also find a corresponding application file (.com). For example, for SBC_std.rom, there is also an SBC_std.com file. You can upload the .com file to your system using XModem, then simply run the .com file. You will see your system go through the normal startup process just like it was started from ROM. However, your ROM has not been updated and the next time you boot your system, it will revert to the system image contained in ROM. You may find that you are unable to load the .com file because it is too large to fit in available application RAM (TPA). Unfortunately, in this case, you will not be able to use the .com file mechanism to start your system.
If you do not have easy access to a ROM programmer, it is entirely possible to reprogram your system ROM using the FLASH utility from Will Sowerbutts. This application called FLASH.COM can be found on the ROM drive of any running system. In this case, you would need to transfer the new ROM image (.rom) over to your system using XModem. The ROM image will be too large to fit on your RAM drive, so you will need to transfer it to a larger storage drive. Once the ROM image is on your system, you can use the FLASH application to update your ROM:
If you do not have easy access to a ROM programmer, it is usually possible to reprogram your system ROM using the FLASH utility from Will Sowerbutts. This application called FLASH.COM can be found on the ROM drive of any running system. In this case, you would need to transfer the new ROM image (.rom) over to your system using XModem (or one of the other mechanisms described in the Transferring Files section below). The ROM image will be too large to fit on your RAM drive, so you will need to transfer it to a larger storage drive. Once the ROM image is on your system, you can use the FLASH application to update your ROM. The following is a typical example of transferring ROM image using XModem and flashing the chip in-situ.
``` ```
E>xm r rom.img E>xm r rom.img
@ -149,7 +154,7 @@ Obviously, there is some risk to this approach since any issues with the program
To confirm your ROM chip has been successfully updated, restart your system and boot an operating system from ROM. Do not boot from a disk device yet. Review the boot messages to see if any issues have occurred. To confirm your ROM chip has been successfully updated, restart your system and boot an operating system from ROM. Do not boot from a disk device yet. Review the boot messages to see if any issues have occurred.
Once you are satisfied that the ROM is working well, you will need to update the system images and RomWBW custom applications on your disk drives. The system images and custom applications are matched to the RomWBW ROM firmware in use. If you attempt to use a disk or applications that have not been updated to match the current ROM firmware, you are likely to have odd problems.
Once you are satisfied that the ROM is working well, you will need to update the system images and RomWBW custom applications on your disk drives. The system images and custom applications are matched to the RomWBW ROM firmware in use. If you attempt to boot a disk or run applications that have not been updated to match the current ROM firmware, you are likely to have odd problems.
The simplest way to update your disk media is to just use your modern computer to overwrite the entire media with the latest disk image of your choice. This process is described below in the Disk Images section. If you wish to update existing disk media in your system, you need to perform the following steps. The simplest way to update your disk media is to just use your modern computer to overwrite the entire media with the latest disk image of your choice. This process is described below in the Disk Images section. If you wish to update existing disk media in your system, you need to perform the following steps.
@ -175,7 +180,7 @@ For example: `B>COPY ASSIGN.COM C:`
While the RAM/ROM disks provide a functional system, they are not useful in the long term because you cannot save data across power cycles. They are also constrained by limited space. While the RAM/ROM disks provide a functional system, they are not useful in the long term because you cannot save data across power cycles. They are also constrained by limited space.
The systems supported by RomWBW all have the ability to use persistent disk media. I am referring to all kinds of disk devices including floppy drives, hard disks, CF Cards, and SD Cards. Some systems have disk interfaces built-in, while others will require add-in cards. You will need to refer to the documentation for your system.
The systems supported by RomWBW all have the ability to use persistent disk media. I am referring to all kinds of disk devices including floppy drives, hard disks, CF Cards, and SD Cards. Some systems have disk interfaces built-in, while others will require add-in cards. You will need to refer to the documentation for your system for your specific options.
In the RomWBW bootup messages, you will see hardware discovery messages. If you have a disk drive interface, you should see messages listing device types like FD:, IDE:, PPIDE:, SD:. Additionally, you will see messages indicating the media that has been found on the interfaces. As an example, here are the messages you might see if you have an IDE interface in your system with a single CF Card inserted in the primary side of the interface: In the RomWBW bootup messages, you will see hardware discovery messages. If you have a disk drive interface, you should see messages listing device types like FD:, IDE:, PPIDE:, SD:. Additionally, you will see messages indicating the media that has been found on the interfaces. As an example, here are the messages you might see if you have an IDE interface in your system with a single CF Card inserted in the primary side of the interface:
@ -198,27 +203,25 @@ Configuring Drives...
D:=IDE0:1 D:=IDE0:1
``` ```
You will probably see mroe drive letters than this. The drive letter assignment process is described in more detail later in this document. Be aware that RomWBW will only assign drive letters to disk interfaces that actually have media in them. If you do not see drive letters assigned as expected, refer to the prior system boot messages to ensure media has been detected in the interface. Actually, there is one exception to this rule: floppy drives will be assigned a drive letter regardless of whether there is any media inserted at boot.
You will probably see more drive letters than this. The drive letter assignment process is described in more detail later in this document. Be aware that RomWBW will only assign drive letters to disk interfaces that actually have media in them. If you do not see drive letters assigned as expected, refer to the prior system boot messages to ensure media has been detected in the interface. Actually, there is one exception to this rule: floppy drives will be assigned a drive letter regardless of whether there is any media inserted at boot.
Notice how each drive letter refers back to a specific disk hardware interface like IDE0. This is important as it is telling you what each drive letter refers to. Also notice that mass storage disks (like IDE) will normally have multiple drive letters assigned. The extra drive letters refer to additional "slices" on the disk. The concept of slices is also explained later in this document. Notice how each drive letter refers back to a specific disk hardware interface like IDE0. This is important as it is telling you what each drive letter refers to. Also notice that mass storage disks (like IDE) will normally have multiple drive letters assigned. The extra drive letters refer to additional "slices" on the disk. The concept of slices is also explained later in this document.
Once you are seeing drive letters referring to your disk media, you can follow the instructions below to begin using the disk media with the operating system. Your disk media **must** be initialized prior to be used. There are two ways to initialize your media for use.
Once you are seeing drive letters referring to your disk media, you can follow the instructions below to begin using the disk media with the operating system. Your disk media **must** be initialized prior to being used. There are two ways to initialize your media for use.
You can initialize the media in-place using your RomWBW system. This process is described below under Disk Initialization. In this scenario, you will need to subsequently copy any files you want to use onto the newly initialized disk.
You can initialize the media in-place using your RomWBW system. This process is described below under Disk Initialization. In this scenario, you will need to subsequently copy any files you want to use onto the newly initialized disk (see Transferring Files).
Alternatively, you can use your modern Windows, Linux, or Mac computer to copy a disk image onto the disk media. RomWBW comes with a variety of disk images that are ready to use and have a much more complete set of files than you will find on the ROM disk. This process is covered below under Disk Images. Alternatively, you can use your modern Windows, Linux, or Mac computer to copy a disk image onto the disk media. RomWBW comes with a variety of disk images that are ready to use and have a much more complete set of files than you will find on the ROM disk. This process is covered below under Disk Images.
## Disk Initialization ## Disk Initialization
To use a disk device, you will need to initialize the directory of the filesystem. On RomWBW, the initialization is done using the CLRDIR application. For example if your C: drive has been assigned to a storage device, you would use `CLRDIR C:` to initialize C: and prepare it hold files. Note that CLRDIR will prompt you for confirmation and you must respond with a **capital** 'Y' to confirm. Once CLDIR has completed, you can copy files onto the drive, for example `COPY *.* C:`. Be very careful to pay attention to your drive letter assignments prior to running CLRDIR to avoid accidentally wiping out a filesystem that has data on it.
To use a disk device, you will need to initialize the directory of the filesystem. On RomWBW, the initialization is done using the CLRDIR application. For example if your C: drive has been assigned to a storage device, you would use `CLRDIR C:` to initialize C: and prepare it hold files. Note that CLRDIR will prompt you for confirmation and you must respond with a **capital** 'Y' to confirm. Once `CLDIR` has completed, you can copy files onto the drive, for example `COPY *.* C:`. Be very careful to pay attention to your drive letter assignments prior to running `CLRDIR` to avoid accidentally wiping out a filesystem that has data on it.
Running CLRDIR on a disk device is roughly equivalent to running FORMAT on MS-DOS. Note that unlike MS-DOS you do **not** partition your mass storage device. CP/M knows nothing about disk partitions. You may notice a partitioning application on your ROM disk (FDISK80), but this is strictly for an advanced technique of adding an MS-DOS FAT filesystem to your media in addition to the CP/M area. Do not use FDISK80 unless you are specifically attempting to add an MS-DOS FAT filesystem to your media.
Running `CLRDIR` on a disk device is roughly equivalent to running FORMAT on MS-DOS. Note that unlike MS-DOS you do **not** partition your mass storage device. CP/M knows nothing about disk partitions. You may notice a partitioning application on your ROM disk (FDISK80), but this is strictly for an advanced technique of adding an MS-DOS FAT filesystem to your media in addition to the CP/M area. Do not use FDISK80 unless you are specifically attempting to add an MS-DOS FAT filesystem to your media.
If you are using a floppy drive, you will need to physically format your floppy disk prior to use. This is only required for floppy disks, not hard disk, CF Cards, or SD Cards, etc. To format a floppy drive, you can use the interactive application FDU. FDU is not terribly user friendly, but is generally documented in the file "FDU.txt" found in the Doc directory of the distribution. It is not necessary to run CLRDIR on a floppy disk after physically formatting it -- the directory is cleared as part of the formatting.
## Booting Disks
If you are using a floppy drive, you will need to physically format your floppy disk prior to use. This is only required for floppy disks, not hard disk, CF Cards, or SD Cards, etc. To format a floppy drive, you can use the interactive application `FDU`. FDU is not terribly user friendly, but is generally documented in the file "FDU.txt" found in the Doc directory of the distribution. It is not necessary to run `CLRDIR` on a floppy disk after physically formatting it -- the directory is cleared as part of the formatting.
Once you have initialized a disk device and copied your desired files onto it, you may want to boot directly to this disk device at startup. On CP/M filesystems, you must perform one additional step to make a disk bootable. Specifically, you need to place a copy of the oeoprating system on the system tracks of the disk. This is done using the `SYSCOPY` command. Let's say you have prepared drive C: by initializing it with `CLRDIR` and copied some files onto it. You can now make C: bootable by running the following command:
Once you have initialized a disk device and copied your desired files onto it, you may want to make the disk bootable. On CP/M filesystems, you must perform one additional step to make a disk bootable. Specifically, you need to place a copy of the operating system on the system tracks of the disk. This is done using the `SYSCOPY` command. Let's say you have prepared drive C: by initializing it with `CLRDIR` and copied some files onto it. You can now make C: bootable by running the following command:
`B>SYSCOPY C:=B:ZSYS.SYS` `B>SYSCOPY C:=B:ZSYS.SYS`
@ -234,37 +237,13 @@ Transfer system image from B:ZSYS.SYS to C: (Y/N)? Y
Reading image... Writing image... Done Reading image... Writing image... Done
``` ```
After successfully putting the operating system on the disk, you can restart your system. When you get to the boot loader, notice the line starting with "Disk:". This line lists the disk devices that you can choose to boot directly.
You will notice that you do not have an option to boot a drive letter here (like C:). This is because the operating system is not yet loaded. When you ran `SYSCOPY` previously, remember that C: was assigned to IDE0:0 which means device IDE0, slice 0. So, to boot the disk that you just setup with SYSCOPY, you would choose option 1. You will then be prompted for the slice on IDE0 that you want to boot. For now, just press enter to choose slice 0. Once you are familiar with slices, you can `SYSCOPY` and boot alternate slices. Here is what you would see when booting to a disk device:
```
MARK IV Boot Loader
ROM: (M)onitor (C)P/M (Z)-System (F)orth (B)ASIC (T)-BASIC (P)LAY (U)SER ROM
Disk: (0)MD1 (1)MD0 (2)IDE0 (3)IDE1
Boot Selection? 2 Slice(0-9)[0]?
Booting Disk Unit 2, Slice 0...
Reading disk information...
Loc=D000 End=FE00 Ent=E600 Label=Unlabeled Drive
Loading...
```
Following this, you would see the normal operating system startup messages. However, your operating system prompt will be `A>` and when you look at the drive letter assignments, you should see that A: has been assigned to the disk you selected to boot.
If you receive the error message "Disk not bootable!", you have either failed to properly run `SYSCOPY` on the target disk or you have selected the wrong disk/slice.
Note that although MD1 (RAM disk) and MD0 (ROM disk) drives are listed in the Disk boot line, they are not currently "bootable" disks because they have no system tracks on them. Attempting to boot to one of them, will fail with a "Disk not bootable!" error message and return to the loader prompt.
Once this process succeeds, you will be able to boot directly to the disk from the boot loader prompt. See the instructions in Booting Disks for details on this.
## Disk Images ## Disk Images
As mentioned previously, RomWBW includes a variety of disk images that contain a full set of applications for the operating systems supported. It is generally easier to use these disk images instead of copying all the files over using XModem. You use your modern computer (Windows, Linux, MacOS) to place the disk image onto the disk media, then just move the media over to your system. In this scenario you **do not** run `CLRDIR` or `SYSCOPY` on the drive(s). The directory prepared and the disk is already bootable, if it is an operating system.
As mentioned previously, RomWBW includes a variety of disk images that contain a full set of applications for the operating systems supported. It is generally easier to use these disk images instead of copying all the files over using XModem. You use your modern computer (Windows, Linux, MacOS) to place the disk image onto the disk media, then just move the media over to your system. In this scenario you **do not** run `CLRDIR` or `SYSCOPY` on the drive(s). The directory is prepared and the disk is already bootable, if it is an operating system boot disk image.
To copy the disk image files onto your actual media (floppy disk, CF Card, SD Card, etc.), you need to use an image writing utility on your modern computer. Your modern computer will need to have an appropriate interface or slot that accepts the media. To actually copy the image, you can use the `dd` command on Linux or MacOS. On Windows, in the "Tools" directory of the distribution there are two tools you can use. For floppy media, you can use RawWriteWin and for hard disk media, you can use Win32DiskImager. In all cases, the image file should be written to the media starting at the very first block or sector of the media. This will destroy any other data on the media.
To copy the disk image files onto your actual media (floppy disk, CF Card, SD Card, etc.), you need to use an image writing utility on your modern computer. Your modern computer will need to have an appropriate interface or slot that accepts the media. To actually copy the image, you can use the `dd` command on Linux or MacOS. On Windows, in the "Tools" directory of the distribution there are two tools you can use. For floppy media, you can use RawWriteWin and for hard disk media, you can use Win32DiskImager. In all cases, the image file should be written to the media starting at the very first block or sector of the media. This will **destroy** any other data on the media.
The disk image files are found in the Binary directory of the distribution. Floppy disk images are prefixed with "fd_" and hard disk images are prefixed with "hd_". The floppy images are specifically for 1.44M floppy media only. Each disk image has the complete set of normal applications and tools distributed with the associated operating system or application suite. The disk image files are found in the Binary directory of the distribution. Floppy disk images are prefixed with "fd_" and hard disk images are prefixed with "hd_". The floppy images are specifically for 1.44M floppy media only. Each disk image has the complete set of normal applications and tools distributed with the associated operating system or application suite.
@ -272,11 +251,11 @@ The following table shows the disk image files available. Note that the images
| Floppy | Hard | Description | | Floppy | Hard | Description |
| --------------- | --------------- | -------------------------------------- | | --------------- | --------------- | -------------------------------------- |
| fd_cpm22.img | hd_cpm22.img | DRI CP/M 2.2 bootable disk |
| fd_zsdos.img | hd_zsdos.img | ZSDOS 1.1 bootable disk |
| fd_nzcom.img | hd_nzcom.img | NZCOM bootable disk |
| fd_cpm3 | hd_cpm3.img | DRI CP/M 3 bootable disk |
| fd_zpm3 | hd_zpm3.img | ZPM3 bootable disk |
| fd_cpm22.img | hd_cpm22.img | DRI CP/M 2.2 boot disk |
| fd_zsdos.img | hd_zsdos.img | ZSDOS 1.1 boot disk |
| fd_nzcom.img | hd_nzcom.img | NZCOM boot disk |
| fd_cpm3 | hd_cpm3.img | DRI CP/M 3 boot disk |
| fd_zpm3 | hd_zpm3.img | ZPM3 boot disk |
| fd_ws4 | hd_ws4.img | WordStar v4 application disk | | fd_ws4 | hd_ws4.img | WordStar v4 application disk |
In addition to the disk images above, there is also a special hard disk image called hd_combo.img. This image contains all of the images above, but in a single image with 6 slices (see below for information on disk slices). At the boot loader prompt, you can choose a disk with the combo image, then select the specific slice you want. This allows a single disk to have all of the possible operating system options. In addition to the disk images above, there is also a special hard disk image called hd_combo.img. This image contains all of the images above, but in a single image with 6 slices (see below for information on disk slices). At the boot loader prompt, you can choose a disk with the combo image, then select the specific slice you want. This allows a single disk to have all of the possible operating system options.
@ -296,13 +275,41 @@ Note that unlike the ROM firmware, you do **not** need to choose a disk image sp
All of the disk images that indicate they are bootable (boot disk) will boot from disk as is. You do not need to run `SYSCOPY` on them to make them bootable. However, if you upgrade your ROM, you should use `SYSCOPY` to update the system tracks. All of the disk images that indicate they are bootable (boot disk) will boot from disk as is. You do not need to run `SYSCOPY` on them to make them bootable. However, if you upgrade your ROM, you should use `SYSCOPY` to update the system tracks.
## Booting Disks
When starting your system, following the hardware initialization, you will see the Boot Loader prompt. In addition, to the ROM boot options, you will see another line listing the Disk boot options. This line lists the disk devices that you can choose to boot directly.
You will notice that you do not have an option to boot a drive letter here (like C:). This is because the operating system is not yet loaded. When you ran `SYSCOPY` previously, remember that C: was assigned to IDE0:0 which means device IDE0, slice 0. So, to boot the disk that you just setup with `SYSCOPY`, you would choose option 1. You will then be prompted for the slice on IDE0 that you want to boot. For now, just press enter to choose slice 0. Once you are familiar with slices, you can `SYSCOPY` and boot alternate slices. Here is what you would see when booting to a disk device:
```
MARK IV Boot Loader
ROM: (M)onitor (C)P/M (Z)-System (F)orth (B)ASIC (T)-BASIC (P)LAY (U)SER ROM
Disk: (0)MD1 (1)MD0 (2)IDE0 (3)IDE1
Boot Selection? 2 Slice(0-9)[0]?
Booting Disk Unit 2, Slice 0...
Reading disk information...
Loc=D000 End=FE00 Ent=E600 Label=Unlabeled Drive
Loading...
```
Following this, you would see the normal operating system startup messages. However, your operating system prompt will be `A>` and when you look at the drive letter assignments, you should see that A: has been assigned to the disk you selected to boot.
If you receive the error message "Disk not bootable!", you have either failed to properly run `SYSCOPY` on the target disk or you have selected the wrong disk/slice.
Note that although MD1 (RAM disk) and MD0 (ROM disk) drives are listed in the Disk boot line, they are not "bootable" disks because they have no system tracks on them. Attempting to boot to one of them, will fail with a "Disk not bootable!" error message and return to the loader prompt.
# General Usage # General Usage
Each of the operating systems and ROM applications included with RomWBW are sophisticated tools in their own right. It is not reasonable to document their usage here. However, you will find complete manuals in PDF format in the Doc directory of the distribution. The intention of this section is to document the RomWBW specific enhancements to these OSes.
Each of the operating systems and ROM applications included with RomWBW are sophisticated tools in their own right. It is not reasonable to document their usage here. However, you will find complete manuals in PDF format in the Doc directory of the distribution. The intention of this section is to document the RomWBW specific enhancements to these operating systems.
## ROM Disk ## ROM Disk
In addition to the ROM-based operating systems and applications, the ROM also contains a ROM disk with a small CP/M filesystem. The contents have been optimized to provide a core set of tools and applications that are helpful for either CP/M 2.2 and ZSDOS. Since ZSDOS is CP/M 2.2 compatible, this works fairly well. However, you will find some files on the ROM disk that will work with ZSDOS, but will not work on CP/M 2.2. For example, `LDDS`, which loads the ZSDOS date/time stamper will only run on ZSDOS.
In addition to the ROM-based operating systems and applications, the ROM also contains a ROM disk with a small CP/M filesystem. The contents of the ROM disk have been chosen to provide a core set of tools and applications that are helpful for either CP/M 2.2 or ZSDOS. Since ZSDOS is CP/M 2.2 compatible, this works fairly well. However, you will find some files on the ROM disk that will work with ZSDOS, but will not work on CP/M 2.2. For example, `LDDS`, which loads the ZSDOS date/time stamper will only run on ZSDOS.
## Drive Letter Assignment ## Drive Letter Assignment
@ -318,25 +325,25 @@ When performing a ROM boot of an operating system, note that A: will be your RAM
The vintage operating systems included with RomWBW were produced at a time when mass storage devices were quite small. CP/M 2.2 could only handle filesystems up to 8MB. In order to achieve compatibility across all of the operating systems supported by RomWBW, the hard disk filesystem format used is 8MB. This ensures any filesystem will be accessible to any of the operating systems. The vintage operating systems included with RomWBW were produced at a time when mass storage devices were quite small. CP/M 2.2 could only handle filesystems up to 8MB. In order to achieve compatibility across all of the operating systems supported by RomWBW, the hard disk filesystem format used is 8MB. This ensures any filesystem will be accessible to any of the operating systems.
Since storage devices today are quite large, RomWBW implements a mechanism called slicing to allow up to 256 8MB filesystems on a single large storage device. This allows up to 2GB of useable space on a single media. You can think of slices as a way to refer to the first 256 8MB chunks of space on a single media.
Since storage devices today are quite large, RomWBW implements a mechanism called slicing to allow up to 256 8MB filesystems on a single large storage device. This allows up to 2GB of useable space on a single media. You can think of slices as a way to refer to any of the first 256 8MB chunks of space on a single media.
Of course, the problem is that CP/M-like operating systems have only 16 drive letters (A:-P:) available. Under the covers, RomWBW allows you to use any drive letter to refer to any slice of any media. The `ASSIGN` command is provided to allow you to view or change the drive letter mappings at any time. At startup, the operating system will automatically allocate a reasonable number of drive letters to the available storage devices. The allocation will depend on the number of large storage devices available at boot. For example, if you have only one hard disk type media, you will see that 8 drive letters are assigned to the first 8 slices of that media. If you have two large storage devices, you will see that each device is allocated four drive letters. Of course, the problem is that CP/M-like operating systems have only 16 drive letters (A:-P:) available. Under the covers, RomWBW allows you to use any drive letter to refer to any slice of any media. The `ASSIGN` command is provided to allow you to view or change the drive letter mappings at any time. At startup, the operating system will automatically allocate a reasonable number of drive letters to the available storage devices. The allocation will depend on the number of large storage devices available at boot. For example, if you have only one hard disk type media, you will see that 8 drive letters are assigned to the first 8 slices of that media. If you have two large storage devices, you will see that each device is allocated four drive letters.
Referring to slices within a storage device is done by appending a :n where n is the device relative slice number from 0-255. For example, if you have an IDE device, it will show up as IDE0: in the boot message meaning the first IDE device. To refer to the second slice of IDE0, you would type "IDE0:1". So, if I wanted to use drive letter L: to refer to the second slice of IDE0, I could use the command `ASSIGN L:=IDE0:1`.
Referring to slices within a storage device is done by appending a :n where n is the device relative slice number from 0-255. For example, if you have an IDE device, it will show up as IDE0: in the boot messages meaning the first IDE device. To refer to the fourth slice of IDE0, you would type "IDE0:3". So, if I wanted to use drive letter L: to refer to the fourth slice of IDE0, I could use the command `ASSIGN L:=IDE0:3`.
There are a couple of rules to be aware of when assigning drive letters. First, you may only refer to a specific device/slice with one drive letter. Said another way, you cannot have multiple drive letters referring to a single device/slice at the same time. Second, there must always be a drive assigned to A:. Any attempt to violate these rules will be blocked by the `ASSIGN` command. There are a couple of rules to be aware of when assigning drive letters. First, you may only refer to a specific device/slice with one drive letter. Said another way, you cannot have multiple drive letters referring to a single device/slice at the same time. Second, there must always be a drive assigned to A:. Any attempt to violate these rules will be blocked by the `ASSIGN` command.
Unlike MS-DOS partitions, slices are not allocated -- there is no partitioning of slices. Think of every hard disk type device as having a pre-allocated set of 256 8MB slices at the start of the media. You can refer to any of them simply by assigning a drive letter. RomWBW will not check to see if there is anything else on the hard disk in the slice you are referring to, nor will it verify that the hard disk media is large enough to have a slice at the location you refer to. If you attempt to write past the end of your media, you will get an I/O error displayed, so you will know if you make a mistake. There is no tracking of your use of slices -- you will need to keep track of your use of slices yourself. Unlike MS-DOS partitions, slices are not allocated -- there is no partitioning of slices. Think of every hard disk type device as having a pre-allocated set of 256 8MB slices at the start of the media. You can refer to any of them simply by assigning a drive letter. RomWBW will not check to see if there is anything else on the hard disk in the slice you are referring to, nor will it verify that the hard disk media is large enough to have a slice at the location you refer to. If you attempt to write past the end of your media, you will get an I/O error displayed, so you will know if you make a mistake. There is no tracking of your use of slices -- you will need to keep track of your use of slices yourself.
Nothing automatically initializes a slice as a file system. You must do that yourself using `CLRDIR`. Since CLRDIR works on drive letters, make absolutely sure you know what media and slice are assigned to that drive letter before using `CLRDIR`.
Nothing automatically initializes a slice as a file system. You must do that yourself using `CLRDIR`. Since `CLRDIR` works on drive letters, make absolutely sure you know what media and slice are assigned to that drive letter before using `CLRDIR`.
While it probably obvious, you cannot use slices on any media less than 8MB in size. Specifically, you cannot slice RAM disk, ROM disk, floppy disks, etc.
While it is probably obvious, you cannot use slices on any media less than 8MB in size. Specifically, you cannot slice RAM disks, ROM disks, floppy disks, etc.
# Inbuilt ROM Applications # Inbuilt ROM Applications
In addition to CP/M 2.2 and Z-System, there are several additional ROM applications that can be launched directly from ROM. These applications are not hosted by an operating system and so they are unable to save files to disk devices.
In addition to CP/M 2.2 and Z-System, there are several ROM applications that can be launched directly from ROM. These applications are not hosted by an operating system and so they are unable to save files to disk devices.
The following options are available at the boot loader prompt:
The following ROM applications are available at the boot loader prompt:
| Application | | | Application | |
| ----------- | -------------------------------------------------------------- | | ----------- | -------------------------------------------------------------- |
@ -354,7 +361,7 @@ Space is available in the ROM image for the inclusion of other software. Any inb
The operation of the RomWBW hosted operating systems is enhanced through several custom applications. These applications are functional on all of the OS variants included with RomWBW. The operation of the RomWBW hosted operating systems is enhanced through several custom applications. These applications are functional on all of the OS variants included with RomWBW.
The following custom applications are found on the RomWBW ROM disk and are, therefore, globally available.
The following custom applications are found on the ROM disk and are, therefore, globally available.
| Application | Description | | Application | Description |
| ----------- | -------------------------------------------------------------- | | ----------- | -------------------------------------------------------------- |
@ -368,7 +375,7 @@ The following custom applications are found on the RomWBW ROM disk and are, ther
| FDISK80 | John Coffman's Z80 hard disk partitioning tool. See documentation in Doc directory. | | FDISK80 | John Coffman's Z80 hard disk partitioning tool. See documentation in Doc directory. |
| FAT | Access MS-DOS FAT filesystems from RomWBW (based on FatFs). | | FAT | Access MS-DOS FAT filesystems from RomWBW (based on FatFs). |
| FLASH | Will Sowerbutts' in-situ ROM programming utility. | | FLASH | Will Sowerbutts' in-situ ROM programming utility. |
| CLRDIR | Format the directory areas of a CP/M disk. |
| CLRDIR | Initialize the directory area of a CP/M disk (Max Scane). |
Some custom applications do not fit on the ROM disk. They are found on the disk image files or the individual files can be found in the Binary\\Apps directory of the distribution. Some custom applications do not fit on the ROM disk. They are found on the disk image files or the individual files can be found in the Binary\\Apps directory of the distribution.
@ -383,7 +390,7 @@ There is additional documentation on some of these applications at the [RomWBW A
One of the primary goals of RomWBW is to expose a set of generic hardware functions that make it easy to adapt operating systems to any hardware supported by RomWBW. As a result, there are now 5 operating systems that have been adapted to run under RomWBW. The adaptations are identical for all hardware supported by RomWBW because RomWBW hides all hardware specifics from the operating system. One of the primary goals of RomWBW is to expose a set of generic hardware functions that make it easy to adapt operating systems to any hardware supported by RomWBW. As a result, there are now 5 operating systems that have been adapted to run under RomWBW. The adaptations are identical for all hardware supported by RomWBW because RomWBW hides all hardware specifics from the operating system.
Note that all of the operating systems included with RomWBW support the same basic filesystem format. As as result, a formatted filesystem will be accessible to any operating system. The only possible issue is that if you turn of date/time stamping using the newer OSes, the older OSes will not understand this. Files will not be corrupted, but the date/time stamps may be lost.
Note that all of the operating systems included with RomWBW support the same basic filesystem format. As a result, a formatted filesystem will be accessible to any operating system. The only possible issue is that if you turn on date/time stamping using the newer OSes, the older OSes will not understand this. Files will not be corrupted, but the date/time stamps may be lost.
The following sections briefly describe the operating system options currently available. The following sections briefly describe the operating system options currently available.
@ -403,7 +410,7 @@ To use, NZCOM, you must run through a simple configuration process. This is wel
## Digital Research CP/M 3 ## Digital Research CP/M 3
This is the Digital Research follow-up product to their very popular CP/M 2.2 operating system. While highly compatible with CP/M 2.2, it features many enhancements. It makes better use of banked memory to increase the user program space (TPA). It also has a new suite of support tools and help system.
This is the Digital Research follow-up product to their very popular CP/M 2.2 operating system. While highly compatible with CP/M 2.2, it features many enhancements. It makes direct use of banked memory to increase the user program space (TPA). It also has a new suite of support tools and help system.
Note that to make a CP/M 3 boot disk, you actually place CPMLDR.SYS on the system tracks of the disk. You do not place CPM3.SYS on the system tracks. Note that to make a CP/M 3 boot disk, you actually place CPMLDR.SYS on the system tracks of the disk. You do not place CPM3.SYS on the system tracks.
@ -411,11 +418,11 @@ Note that to make a CP/M 3 boot disk, you actually place CPMLDR.SYS on the syste
ZPM3 is an interesting combination of the features of both CP/M 3 and ZCPR 3. Essentially, it has the features of and compatibility with both. ZPM3 is an interesting combination of the features of both CP/M 3 and ZCPR 3. Essentially, it has the features of and compatibility with both.
Like CP/M 3, to make ZPM3 boot disk, you put CPM3.SYS on the system tracks of the disk.
Like CP/M 3, to make ZPM3 boot disk, you put CPMLDR.SYS on the system tracks of the disk.
## FreeRTOS ## FreeRTOS
Note that Phillip Stevens has also ported FreeRTOS to run under RomWBW. FreeRTOS is not provided in the RomWBW distribution, but is available from Phillip.
Note that Phillip Stevens has also ported FreeRTOS to run under RomWBW. FreeRTOS is not provided in the RomWBW distribution. You can contact Phillip for availability.
# Transferring Files # Transferring Files
@ -427,9 +434,9 @@ RomWBW provides an serial file transfer program called XModem that has been adap
You can type `XM` by itself to get usage information. In general, you will run `XM` with parameters to indicate you want to send or receive a file on your RomWBW system. Then, you will use your modern computers terminal program to complete the process. You can type `XM` by itself to get usage information. In general, you will run `XM` with parameters to indicate you want to send or receive a file on your RomWBW system. Then, you will use your modern computers terminal program to complete the process.
The `XM` application generally tries to detect the hardware you are using and adapt to it. However, you must ensure that you have a realiable serial connection. You must also ensure that the speed of the connection is not too fast for XModem to handle. Alternatively, you can ensure that hardware flow control is working properly.
The `XM` application generally tries to detect the hardware you are using and adapt to it. However, you must ensure that you have a reliable serial connection. You must also ensure that the speed of the connection is not too fast for XModem to service. Alternatively, you can ensure that hardware flow control is working properly.
There is an odd interaction between XModem and partner terminal programs that can occur. Essentially, after launching `XM`, you must start the protocol on your modern computer fairly quickly (usually about 20 seconds or so). So, if you do not pick a file on your modern computer quickly enough, you will find that the transfer completes about 16K, then hangs. The interaction that casuses this is beyond the scope of this document.
There is an odd interaction between XModem and partner terminal programs that can occur. Essentially, after launching `XM`, you must start the protocol on your modern computer fairly quickly (usually in about 20 seconds or so). So, if you do not pick a file on your modern computer quickly enough, you will find that the transfer completes about 16K, then hangs. The interaction that causes this is beyond the scope of this document.
## Disk Image Transfers ## Disk Image Transfers
@ -442,17 +449,17 @@ The general process to get files from your modern computer to a RomWBW computer
3. Use a disk imaging tool to copy the RomWBW filesystem image onto the media. 3. Use a disk imaging tool to copy the RomWBW filesystem image onto the media.
4. Move the media back to the RomWBW computer. 4. Move the media back to the RomWBW computer.
This process is a little complicated, but it has the benefit of allowing you to get a lot of files over to your RomWBW system quickly and with little change of corruption.
This process is a little complicated, but it has the benefit of allowing you to get a lot of files over to your RomWBW system quickly and with little chance of corruption.
The process can be run in reverse to get files from your RomWBW computer to a modern computer. The process can be run in reverse to get files from your RomWBW computer to a modern computer.
The exact use of these tools is a bit too much for this document, but the tools are all included in the RomWBW distribution along with usage documents. The exact use of these tools is a bit too much for this document, but the tools are all included in the RomWBW distribution along with usage documents.
Note that the build scripts for RomWBW create the default disk images supplied with RomWBW. It is relatively easy to customize the contents of the disk images that are part of RomWBW. This is described in more detail in the Source\\Images driectory of the distribution.
Note that the build scripts for RomWBW create the default disk images supplied with RomWBW. It is relatively easy to customize the contents of the disk images that are part of RomWBW. This is described in more detail in the Source\\Images directory of the distribution.
## FAT Filesystem Transfers ## FAT Filesystem Transfers
RomWBW provides a mechanism that allows it to read and write files on an FAT formatted disk. This means that you can generally use your modern computer to make an SD Card or CF Card with a standard FAT32 filesystem on it, then place that media in your RomWBW computer and read/write the files.
RomWBW provides a mechanism that allows it to read and write files on a FAT formatted disk. This means that you can generally use your modern computer to make an SD Card or CF Card with a standard FAT32 filesystem on it, then place that media in your RomWBW computer and access the files.
When formatting the media on your modern computer, but sure to pick the FAT filesystem. NTFS and other filesystems will not work. When formatting the media on your modern computer, but sure to pick the FAT filesystem. NTFS and other filesystems will not work.
@ -464,19 +471,19 @@ For advanced users, it is possible to create a hybrid disk that contains CP/M sl
# Startup Command Processing # Startup Command Processing
Each of the operating system supported by RomWBW provide a mechanism to run commands at boot. This is similar to the AUTOEXEC.BAT files from MS-DOS.
Each of the operating systems supported by RomWBW provide a mechanism to run commands at boot. This is similar to the AUTOEXEC.BAT files from MS-DOS.
With the exception of ZPM3, all operating system will look for a file called `PROFILE.SUB` on the system drive at boot. If it is found, it will be processed as a standard CP/M submit file. You can read about the use of the SUBMIT facility in the CP/M manuals included in the RomWBW distribution.
With the exception of ZPM3, all operating systems will look for a file called `PROFILE.SUB` on the system drive at boot. If it is found, it will be processed as a standard CP/M submit file. You can read about the use of the SUBMIT facility in the CP/M manuals included in the RomWBW distribution. Note that the boot disk must also have a copy of `SUBMIT.EXE`.
In the case of ZPM3, the file called `STARTZPM.COM` will be run at boot. To customize this file, you use the ZCPR ALIAS facility. You will need to refer to ZCPR documentation for more information on the ALIAS facility. In the case of ZPM3, the file called `STARTZPM.COM` will be run at boot. To customize this file, you use the ZCPR ALIAS facility. You will need to refer to ZCPR documentation for more information on the ALIAS facility.
Note that automatic startup processing generally requires booting to a disk drive. Since the ROM disk is not writable, there is no simple way to add/edit a `PROFILE.SUB` file there. If you want to customize your ROM and add a `PROFILE.SUB` file to the ROM Disk, it will work, but is a lot harder than using a boot disk.
Note that the automatic startup processing generally requires booting to a disk drive. Since the ROM disk is not writable, there is no simple way to add/edit a `PROFILE.SUB` file there. If you want to customize your ROM and add a `PROFILE.SUB` file to the ROM Disk, it will work, but is a lot harder than using a boot disk.
# ROM Customization # ROM Customization
The pre-built ROM images are configured for the basic capabilities of each platform. Additionally, some of the typical add-on hardware for each platform will be automatically detected and used. If you want to go beyond this, RomWBW provides a very flexible configuration mechanism based on configuration files. Creating a customized ROM requires running a build script, but it is quite easy to do. The pre-built ROM images are configured for the basic capabilities of each platform. Additionally, some of the typical add-on hardware for each platform will be automatically detected and used. If you want to go beyond this, RomWBW provides a very flexible configuration mechanism based on configuration files. Creating a customized ROM requires running a build script, but it is quite easy to do.
Essentially, the creation of a custom ROM is accomplished by updating a small configuration file, then running a script to compile the software and generate the custom ROM image. There are build scripts for Windows, Linux, and MacOS to accommodate virtually all users. All required build tools (compilers, assemblers, etc.) are included in the distribution, so it is not necessary to setup a build environment on your computer.
Essentially, the creation of a custom ROM is accomplished by updating a small configuration file, then running a script to compile the software and generate the custom ROM and disk images. There are build scripts for Windows, Linux, and MacOS to accommodate virtually all users. All required build tools (compilers, assemblers, etc.) are included in the distribution, so it is not necessary to setup a build environment on your computer.
The process for building a custom ROM is documented in the ReadMe.txt file in the Source directory of the distribution. The process for building a custom ROM is documented in the ReadMe.txt file in the Source directory of the distribution.
@ -503,6 +510,10 @@ Please refer to the [UNA BIOS Firmware Page](https://www.retrobrewcomputers.org/
# RomWBW Distribution # RomWBW Distribution
All source code and distributions are maintained on GitHub. Code contributions are very welcome.
[RomWBW GitHub Repository](https://github.com/wwarthen/RomWBW|https://github.com/wwarthen/RomWBW)
## Distribution Directory Layout ## Distribution Directory Layout
The RomWBW distribution is a compressed zip archive file organized in a set of directories. Each of these directories has it's own ReadMe.txt file describing the contents in detail. In summary, these directories are: The RomWBW distribution is a compressed zip archive file organized in a set of directories. Each of these directories has it's own ReadMe.txt file describing the contents in detail. In summary, these directories are:
@ -514,12 +525,6 @@ The RomWBW distribution is a compressed zip archive file organized in a set of d
| Source | Contains the source code files used to build the software and ROM images. | | Source | Contains the source code files used to build the software and ROM images. |
| Tools | Contains the MS Windows programs that are used by the build process or that may be useful in setting up your system. | | Tools | Contains the MS Windows programs that are used by the build process or that may be useful in setting up your system. |
## Source Code Respository
All source code and distributions are maintained on GitHub. Code contributions are very welcome.
[RomWBW GitHub Repository](https://github.com/wwarthen/RomWBW|https://github.com/wwarthen/RomWBW)
# Acknowledgements # Acknowledgements
While I have heavily modified much of the code, I want to acknowledge that much of the work is derived from the work of others in the RetroBrew Computers Community including Andrew Lynch, Dan Werner, Max Scane, David Giles, John Coffman, and probably many others I am not clearly aware of (let me know if I omitted someone!). While I have heavily modified much of the code, I want to acknowledge that much of the work is derived from the work of others in the RetroBrew Computers Community including Andrew Lynch, Dan Werner, Max Scane, David Giles, John Coffman, and probably many others I am not clearly aware of (let me know if I omitted someone!).

25
Source/Doc/ZCPR Manual/Main.ltx

@ -1,25 +0,0 @@
\documentclass[letterpaper,10pt,oneside]{book}
\usepackage[T1]{fontenc}
%\usepackage[defaultmono]{droidmono}
\usepackage[scaled]{beramono}
\usepackage{fancyvrb}
\usepackage{geometry}
\usepackage{pdflscape}
%\usepackage{showframe} % Diagnostic
% Suppress headers and footers completely
\pagestyle{empty}
% 66 lines per page, portrait
\geometry{top=0.0in, bottom=0.0in, left=1.5in, right=1.5in}
\RecustomVerbatimCommand{\VerbatimInput}{VerbatimInput}
{
commandchars=\\\{\}
}
\begin{document}
\VerbatimInput{zcpr.ltx}
\end{document}

1384
Source/Doc/ZCPR Manual/zcpr.ltx

File diff suppressed because it is too large

1
Source/Makefile

@ -1,7 +1,6 @@
# #
# order is actually important, because of build dependencies # order is actually important, because of build dependencies
# #
NOTDONE = Doc
SUBDIRS = Prop SUBDIRS = Prop
SUBDIRS += Apps SUBDIRS += Apps
SUBDIRS += CBIOS SUBDIRS += CBIOS

Loading…
Cancel
Save