|
|
|
@ -18,7 +18,7 @@ companion documents you should refer to as appropriate: |
|
|
|
with RomWBW including the monitor, programming languages, etc. |
|
|
|
|
|
|
|
* $doc_catalog$ is a reference for the contents of the disk images |
|
|
|
provided with RomWBW. It is not entirely up-to-date. |
|
|
|
provided with RomWBW. It is somewhat out of date at this time. |
|
|
|
|
|
|
|
* $doc_errata$ is updated as needed to document issues or anomalies |
|
|
|
discovered in the current software distribution. |
|
|
|
@ -52,7 +52,7 @@ A wide variety of platforms are supported including those |
|
|
|
produced by these developer communities: |
|
|
|
|
|
|
|
* [RetroBrew Computers](https://www.retrobrewcomputers.org) |
|
|
|
* [RC2014](https://rc2014.co.uk) |
|
|
|
* [RC2014](https://rc2014.co.uk), [RC2014-Z80](https://groups.google.com/g/rc2014-z80) |
|
|
|
* [retro-comp](https://groups.google.com/forum/#!forum/retro-comp) |
|
|
|
* [Small Computer Central](https://smallcomputercentral.com/) |
|
|
|
|
|
|
|
@ -64,7 +64,7 @@ General features include: |
|
|
|
* Video drivers including TMS9918, SY6545, MOS8563, HD6445 |
|
|
|
* Keyboard (PS/2) drivers via VT8242 or PPI interfaces |
|
|
|
* Real time clock drivers including DS1302, BQ4845 |
|
|
|
* OS Adaptations of CP/M 2.2, ZSDOS, CP/M 3, NZ-COM, ZPM3, QPM, p-System, and FreeRTOS |
|
|
|
* OSes: CP/M 2.2, ZSDOS, CP/M 3, NZ-COM, ZPM3, QPM, p-System, and FreeRTOS |
|
|
|
* Built-in VT-100 terminal emulation support |
|
|
|
|
|
|
|
RomWBW is distributed as both source code and pre-built ROM and disk |
|
|
|
@ -78,7 +78,7 @@ ROM firmware itself: |
|
|
|
|
|
|
|
A dynamic disk drive letter assignment mechanism allows mapping |
|
|
|
operating system drive letters to any available disk media. |
|
|
|
Additionally, mass media devices (IDE Disk, CF Card, SD Card) support |
|
|
|
Additionally, mass storage devices (IDE Disk, CF Card, SD Card) support |
|
|
|
the use of multiple slices (up to 256 per device). Each slice contains |
|
|
|
a complete CP/M filesystem and can be mapped independently to any |
|
|
|
drive letter. This overcomes the inherent size limitations in legacy |
|
|
|
@ -105,10 +105,10 @@ such that all of the operating systems and applications on a disk |
|
|
|
will run on any RomWBW-based system. To put it simply, you can take |
|
|
|
a disk (or CF/SD Card) and move it between systems transparently. |
|
|
|
|
|
|
|
A tool is provided that allows you to access a FAT-12/16/32 filesystem. |
|
|
|
The FAT filesystem may be coresident on the same disk media as RomWBW slices |
|
|
|
or on stand-alone media. This makes exchanging files with modern OSes |
|
|
|
such as Windows, MacOS, and Linux very easy. |
|
|
|
A tool is provided that allows you to access a FAT-12/16/32 filesystem. |
|
|
|
The FAT filesystem may be coresident on the same disk media as RomWBW |
|
|
|
slices or on stand-alone media. This makes exchanging files with modern |
|
|
|
OSes such as Windows, MacOS, and Linux very easy. |
|
|
|
|
|
|
|
# Getting Started |
|
|
|
|
|
|
|
@ -188,24 +188,24 @@ below, **carefully** pick the appropriate ROM image for your hardware. |
|
|
|
| RC/BP80 Bus Z180 w/ native banking | RCZ180_nat.rom | 115200 | |
|
|
|
| RC/BP80 Bus Z280 w/ external banking | RCZ180_ext.rom | 115200 | |
|
|
|
| RC/BP80 Bus Z280 w/ native banking | RCZ180_nat.rom | 115200 | |
|
|
|
| Sergey Kiselev's Easy Z80 SBC w/ RC Bus | EZZ80_std.rom | 115200 | |
|
|
|
| Sergey Kiselev's Tiny EIPC Z80 SBC w/ RC Bus | EZZ80_tz80.rom | 115200 | |
|
|
|
| Sergey Kiselev's Z80-512K Module for RC Bus | EZZ80_skz.rom | 115200 | |
|
|
|
| Stephen Cousin's SC126 Z180 SBC w/ BP80 Bus | SCZ180_126.rom | 115200 | |
|
|
|
| Stephen Cousin's SC130 Z180 SBC w/ RC Bus | SCZ180_130.rom | 115200 | |
|
|
|
| Stephen Cousin's SC131 Z180 Pocket Computer | SCZ180_131.rom | 115200 | |
|
|
|
| Stephen Cousin's SC140 Z180 for Z50Bus | SCZ180_140.rom | 115200 | |
|
|
|
| Sergey Kiselev's Easy Z80 SBC w/ RCBus | EZZ80_std.rom | 115200 | |
|
|
|
| Sergey Kiselev's Tiny EIPC Z80 SBC w/ RCBus | EZZ80_tz80.rom | 115200 | |
|
|
|
| Sergey Kiselev's Z80-512K Module for RCBus | EZZ80_skz.rom | 115200 | |
|
|
|
| Stephen Cousins' SC126 Z180 SBC w/ BP80 Bus | SCZ180_126.rom | 115200 | |
|
|
|
| Stephen Cousins' SC130 Z180 SBC w/ RCBus | SCZ180_130.rom | 115200 | |
|
|
|
| Stephen Cousins' SC131 Z180 Pocket Computer | SCZ180_131.rom | 115200 | |
|
|
|
| Stephen Cousins' SC140 Z180 for Z50Bus | SCZ180_140.rom | 115200 | |
|
|
|
| Steve Garcia's Z180 Dyno SBC w/ Dyno Bus | DYNO_std.rom | 38400 | |
|
|
|
| Andrew Lynch's Nhyodyne Z80 MBC | MBC_std.rom | 38400 | |
|
|
|
| Andrew Lynch's Rhyophyre Z180 SBC | RPH_std.rom | 38400 | |
|
|
|
| Bill Shen's Z80 ZRC for RC Bus | RCZ80_zrc.rom | 115200 | |
|
|
|
| Bill Shen's Z280 ZZRCC for RC Bus | RCZ280_nat_zzr.rom | 115200 | |
|
|
|
| Bill Shen's Z280 ZZ80MB SBC w/ RC Bus | RCZ280_nat_zz.rom | 115200 | |
|
|
|
| Bill Shen's Z80 ZRC for RCBus | RCZ80_zrc.rom | 115200 | |
|
|
|
| Bill Shen's Z280 ZZRCC for RCBus | RCZ280_nat_zzr.rom | 115200 | |
|
|
|
| Bill Shen's Z280 ZZ80MB SBC w/ RCBus | RCZ280_nat_zz.rom | 115200 | |
|
|
|
|
|
|
|
RC Bus refers to Spencer Owen's RC2014 bus specification. BP80 Bus is |
|
|
|
RCBus refers to Spencer Owen's RC2014 bus specification. BP80 Bus is |
|
|
|
an enhanced 80-pin version of the RC2014 bus. |
|
|
|
|
|
|
|
The RC Bus Z180 & Z280 require a separate RAM/ROM memory module. There |
|
|
|
The RCBus Z180 & Z280 require a separate RAM/ROM memory module. There |
|
|
|
are two types of these modules and you must pick the correct ROM for |
|
|
|
your type of memory module. The first option is the same as the 512K |
|
|
|
RAM/ROM module for RC/BP80 Bus. This is called external ("ext") because |
|
|
|
@ -1717,20 +1717,30 @@ disk slice from the boot loader prompt. See the instructions in |
|
|
|
|
|
|
|
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 |
|
|
|
any hardware supported by RomWBW. As a result, there are now 8 |
|
|
|
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 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 will not be maintained. |
|
|
|
By design, the operating systems provided with RomWBW are original and |
|
|
|
unmodified from their original distribution. Patches published by the |
|
|
|
authors are generally included or applied. The various enhancements |
|
|
|
RomWBW provides (such as hard disk slices) are implemented entirely |
|
|
|
within the system adaptation component of each operating system (e.g., |
|
|
|
CP/M CBIOS). As a result, each operating system should function |
|
|
|
exactly as documented by the authors and retain maximum compatibility |
|
|
|
with original applications. |
|
|
|
|
|
|
|
Note that all of the operating systems included with RomWBW support the |
|
|
|
same basic filesystem format from DRI CP/M 2.2 (except for p-System). 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 will not be |
|
|
|
maintained. |
|
|
|
|
|
|
|
The following sections briefly describe the operating system options |
|
|
|
currently available. |
|
|
|
currently available and brief operating notes. |
|
|
|
|
|
|
|
## Digital Research CP/M 2.2 |
|
|
|
|
|
|
|
@ -1741,12 +1751,7 @@ operating systems including those listed below. |
|
|
|
|
|
|
|
If you are new to the CP/M world, I would recommend using this CP/M |
|
|
|
variant to start with simply because it is the most stable and you are |
|
|
|
less likely to encounter problems. |
|
|
|
|
|
|
|
The RomWBW CP/M 2.2 CBIOS has been enhanced to allow automatic |
|
|
|
execution of a `PROFILE.SUB` submit file at startup. The CP/M 2.2 |
|
|
|
code components from DRI were not changed -- this was implemented in |
|
|
|
the machine specific CBIOS. |
|
|
|
less likely to encounter compatibility issues. |
|
|
|
|
|
|
|
#### Documentation |
|
|
|
|
|
|
|
@ -1768,6 +1773,10 @@ call "CPM.SYS". For example: |
|
|
|
ctrl-C. This is a CP/M 2.2 constraint and is well documented |
|
|
|
in the DRI manual. |
|
|
|
|
|
|
|
* `SUBMIT.COM` has been patched per DRI to always place submit |
|
|
|
files on A:. This ensures the submitted file will always be |
|
|
|
properlly executed. |
|
|
|
|
|
|
|
* The original versions of DDT, DDTZ, and ZSID used the RST 38 |
|
|
|
vector which conflicts with interrupt mode 1 use of this vector. |
|
|
|
The DDT, DDTZ, and ZSID applications in RomWBW have been modified |
|
|
|
@ -1784,17 +1793,16 @@ version of CP/M and should run all CP/M 2.2 applications. It is |
|
|
|
optimized for the Z80 CPU (as opposed to 8080 for CP/M) and has some |
|
|
|
significant improvements such as date/time stamping of files. |
|
|
|
|
|
|
|
Z-System is a somewhat ambiguous term because there are multiple |
|
|
|
generations of this software. RomWBW uses ZCPR-DJ and ZSDOS 1.1 |
|
|
|
when referring to Z-System. The latest version of Z-System (ZCPR 3.4) |
|
|
|
is also provided with RomWBW via NZ-COM (see below). |
|
|
|
|
|
|
|
Like CP/M 2.2, RomWBW includes the ability to autorun a `PROFILE.SUB` |
|
|
|
submit file at startup. |
|
|
|
Z-System is a somewhat ambiguous term because there are multiple |
|
|
|
generations of this software. RomWBW Z-System is a combination of both |
|
|
|
ZCPR-DJ (the CCP) and ZSDOS 1.1 (the BDOS) when referring to Z-System. |
|
|
|
The latest version of Z-System (ZCPR 3.4) is also provided with RomWBW |
|
|
|
via the NZ-COM adaptation (see below). |
|
|
|
|
|
|
|
#### Documentation |
|
|
|
|
|
|
|
* [ZCPR Manual]($doc_root$/ZCPR Manual.pdf) |
|
|
|
* [ZCPR-DJ]($doc_root$/ZCPR-DJ.doc) |
|
|
|
* [ZSDOS Manual]($doc_root$/ZSDOS Manual.pdf) |
|
|
|
|
|
|
|
#### Boot Disk |
|
|
|
@ -2026,7 +2034,7 @@ tool if you want to perform a fresh installation. |
|
|
|
## UCSD p-System |
|
|
|
|
|
|
|
This is a full implementation of the UCSD p-System IV.0 for Z80 |
|
|
|
running under RomWBW. Unlike the OSes above, p-System uses it's |
|
|
|
running under RomWBW. Unlike the OSes above, p-System uses its |
|
|
|
own unique filesystem and is not interoperable with other OSes. |
|
|
|
|
|
|
|
It was derived from the p-System Adaptable Z80 System. Unlike |
|
|
|
@ -2091,7 +2099,7 @@ You can also contact Phillip for detailed information on the Z180 |
|
|
|
implementation of FreeRTOS for RomWBW. |
|
|
|
[feilipu](https://github.com/feilipu) |
|
|
|
|
|
|
|
# RomWBW Custom Applications |
|
|
|
# Custom Applications |
|
|
|
|
|
|
|
The operation of the RomWBW hosted operating systems is enhanced through |
|
|
|
several custom applications. You have already read about one of these -- |
|
|
|
@ -2143,6 +2151,494 @@ directory of the distribution. |
|
|
|
| FAT | Access MS-DOS FAT filesystems from RomWBW (based on FatFs). | |
|
|
|
| INTTEST | Test interrupt vector hooking. | |
|
|
|
|
|
|
|
# FAT Filesystem |
|
|
|
|
|
|
|
The FAT filesystem format that originated with MS-DOS has been almost |
|
|
|
ubiquitous across modern computers. Virtually all operating systems |
|
|
|
now support reading and writing files to a FAT filesystem. For this |
|
|
|
reason, RomWBW now has the ability to read and write files on FAT |
|
|
|
filesystems. |
|
|
|
|
|
|
|
This is accomplished by running a RomWBW custom application called `FAT`. |
|
|
|
This application understands both FAT filesystems as well as CP/M filesystems. |
|
|
|
|
|
|
|
* Files can be copied between a FAT filesystem and a CP/M filesystem, |
|
|
|
but you cannot execute files directly from a FAT filesystem. |
|
|
|
* FAT12, FAT16, and FAT32 formats are supported. |
|
|
|
* Long filenames are not supported. Files with long filenames will |
|
|
|
show up with their names truncated into the older 8.3 convention. |
|
|
|
* A FAT filesystem can be located on floppy or hard disk media. For |
|
|
|
hard disk media, the FAT filesystem must be located within a valid |
|
|
|
FAT partition. |
|
|
|
|
|
|
|
## FAT Filesystem Preparation |
|
|
|
|
|
|
|
In general, you can create media formatted with a FAT filesystem on |
|
|
|
your RomWBW computer or on your modern computer. We will only be |
|
|
|
discussing the RomWBW-based approach here. |
|
|
|
|
|
|
|
In the case of a floppy disk, you can use the `FAT` application to |
|
|
|
format the floppy disk. For example, if your floppy disk is on RomWBW |
|
|
|
disk unit 2, you could use `FAT FORMAT 2:`. This will overwrite the |
|
|
|
floppy with a FAT filesystem and all previous contents will be lost. |
|
|
|
Once formatted this way, the floppy disk can be used in a floppy drive |
|
|
|
attached to a modern computer or it can be used on RomWBW using the |
|
|
|
other `FAT` tool commands. |
|
|
|
|
|
|
|
In the case of hard disk media, it is necessary to have a FAT |
|
|
|
partition. If you prepared your RomWBW hard disk media using the |
|
|
|
disk image process, then this partition will already be present and |
|
|
|
you do not need to recreate it. This default FAT partition is located |
|
|
|
at approximately 512MB from the start of your disk and it is 384MB in |
|
|
|
size. So, your hard disk media must be 1GB or greater to use this |
|
|
|
default FAT partition. |
|
|
|
|
|
|
|
You can confirm the existence of the FAT partition with `FDISK80` by |
|
|
|
using the 'P' command to show the current partition table. Here is an |
|
|
|
example of a partition table listing from `FDISK80` that includes the |
|
|
|
FAT partition (labeled "FAT16"): |
|
|
|
|
|
|
|
``` |
|
|
|
Capacity of disk 4: ( 4G) 7813120 Geom 77381010 |
|
|
|
Nr ---Type- A -- Start End LBA start LBA count Size |
|
|
|
1 RomWBW 2e 8:0:1 1023:15:16 2048 1048576 512M |
|
|
|
2 FAT16 06 1023:0:1 1023:15:16 1050624 786432 384M |
|
|
|
3 00 *** empty *** |
|
|
|
4 00 *** empty *** |
|
|
|
``` |
|
|
|
|
|
|
|
If your hard disk media does not have a FAT partition already defined, |
|
|
|
you will need to define one using FDISK80 by using the 'N' command. |
|
|
|
Ensure that the location and size of the FAT partition does not |
|
|
|
overlap any of the CP/M slice area and that it fits within the szie |
|
|
|
of your media. |
|
|
|
|
|
|
|
Once the partition is defined, you will still need to format it. Just |
|
|
|
as with a floppy disk, you use the `FAT` tool to do this. If your |
|
|
|
hard disk media is on RomWBW disk unit 4, you would use `FAT FORMAT 4:`. |
|
|
|
This will look something like this: |
|
|
|
|
|
|
|
``` |
|
|
|
E>fat format 4: |
|
|
|
|
|
|
|
About to format FAT Filesystem on Disk Unit #4. |
|
|
|
All existing FAT partition data will be destroyed!!! |
|
|
|
|
|
|
|
Continue (y/n)? |
|
|
|
|
|
|
|
Formatting... Done |
|
|
|
``` |
|
|
|
|
|
|
|
Your FAT filesystem is now ready to use. |
|
|
|
|
|
|
|
If your RomWBW system has multiple disk drives/slots, you can also just |
|
|
|
create a disk with your modern computer that is a dedicated FAT |
|
|
|
filesystem disk. You can use your modern computer to format the disk |
|
|
|
(floppy, CF Card, SD Card, etc.), then insert the disk in your RomWBW |
|
|
|
computer and access if using `FAT` based on it's RomWBW unit number. |
|
|
|
|
|
|
|
## FAT Application Usage |
|
|
|
|
|
|
|
Complete instructions for the `FAT` application are found in $doc_apps$. |
|
|
|
Here, we will just provide a couple of simple examples. Note that the |
|
|
|
FAT application is not on the ROM disk because it is too large to |
|
|
|
include there. |
|
|
|
|
|
|
|
The most important thing to understand about the `FAT` application is |
|
|
|
how it refers to FAT filesystems vs. CP/M filesystems. It infers this |
|
|
|
based on the file specification provided. If you use a specification |
|
|
|
like `C:SAMPLE.TXT`, it will use the C: drive of your CP/M operating |
|
|
|
system. If you use a specification like `4:SAMPLE.TXT`, it will use |
|
|
|
the FAT filesystem on the disk in RomWBW disk unit 4. Basically, if |
|
|
|
you start your file or directory specification with a number followed |
|
|
|
by a colon, it means FAT filesystem. Anything else will mean CP/M |
|
|
|
filesystem. |
|
|
|
|
|
|
|
Here are a few examples. This first example shows how to get a FAT |
|
|
|
directory listing from RomWBW disk unit 4: |
|
|
|
|
|
|
|
``` |
|
|
|
E>fat dir 4: |
|
|
|
|
|
|
|
Directory of 4: |
|
|
|
|
|
|
|
|
|
|
|
E> |
|
|
|
``` |
|
|
|
|
|
|
|
As you can see, there are currently no files there. Now let's copy |
|
|
|
a file from CP/M to the FAT directory: |
|
|
|
|
|
|
|
``` |
|
|
|
E>fat copy sample.txt 4: |
|
|
|
|
|
|
|
Copying... |
|
|
|
|
|
|
|
SAMPLE.TXT ==> 4:/SAMPLE.TXT ... [OK] |
|
|
|
|
|
|
|
1 File(s) Copied |
|
|
|
``` |
|
|
|
|
|
|
|
If we list the FAT directory again, you will see the file: |
|
|
|
|
|
|
|
``` |
|
|
|
E>fat dir 4: |
|
|
|
|
|
|
|
Directory of 4: |
|
|
|
|
|
|
|
01/30/2023 17:50:14 29952 ---A SAMPLE.TXT |
|
|
|
|
|
|
|
``` |
|
|
|
|
|
|
|
Now let's copy the file from the FAT filesystem back to CP/M. This |
|
|
|
time we will get a warning about overwriting the file. For this |
|
|
|
example, we don't want to do that, so we abort and reissue the |
|
|
|
command specifying a new filename to use: |
|
|
|
|
|
|
|
``` |
|
|
|
E>fat copy 4:sample.txt e: |
|
|
|
|
|
|
|
Copying... |
|
|
|
|
|
|
|
4:/SAMPLE.TXT ==> E:SAMPLE.TXT Overwrite? (Y/N) [Skipped] |
|
|
|
|
|
|
|
0 File(s) Copied |
|
|
|
|
|
|
|
E>fat copy 4:sample.txt e:sample2.txt |
|
|
|
|
|
|
|
Copying... |
|
|
|
|
|
|
|
4:/SAMPLE.TXT ==> E:SAMPLE2.TXT ... [OK] |
|
|
|
|
|
|
|
1 File(s) Copied |
|
|
|
``` |
|
|
|
|
|
|
|
Finally, let's try using wildcards: |
|
|
|
|
|
|
|
``` |
|
|
|
E>fat copy sample*.* 4: |
|
|
|
|
|
|
|
Copying... |
|
|
|
|
|
|
|
SAMPLE.TXT ==> 4:/SAMPLE.TXT Overwrite? (Y/N) ... [OK] |
|
|
|
SAMPLE2.TXT ==> 4:/SAMPLE2.TXT ... [OK] |
|
|
|
|
|
|
|
2 File(s) Copiedd |
|
|
|
``` |
|
|
|
|
|
|
|
# CP/NET Networking |
|
|
|
|
|
|
|
Digital Research created a simple network file sharing system called |
|
|
|
CP/NET. This allowed a network server running CP/NOS to host files |
|
|
|
available to network attached CP/M computers. Essentially, the host |
|
|
|
becomes a simple file sharing server. |
|
|
|
|
|
|
|
RomWBW disk images include an adaptation of the DRI CP/NET client |
|
|
|
software provided by Douglas Miller. RomWBW does not support operation |
|
|
|
as a network server itself. However, Douglas has also developed a |
|
|
|
Java-based implementation of the DRI network server that can be used to |
|
|
|
provide host services from a modern computer. |
|
|
|
|
|
|
|
Both CP/NET 1.2 and 3.0 clients are provided. Version 1.2 is for use |
|
|
|
with CP/M 2.2 and compatible OSes. Version 3.0 is for use with CP/M 3 |
|
|
|
and compatible OSes. |
|
|
|
|
|
|
|
The CP/NET client software provided with RomWBW is specifically for the |
|
|
|
MT011 Module developed by Mark T for the RCBus. The client software |
|
|
|
interacts directly with this hardware. In a future version of RomWBW, I |
|
|
|
hope to add a generic networking API that will allow a greater range of |
|
|
|
network hardware to be used. |
|
|
|
|
|
|
|
To use CP/NET effectively, you will want to review the documentation |
|
|
|
provided by Douglas on his |
|
|
|
[cpnet-z80 GitHub Project](https://github.com/durgadas311/cpnet-z80). |
|
|
|
Additionally, you should consult the DRI documentation which is not |
|
|
|
included with RomWBW, but is available on the |
|
|
|
[cpnet-z80](https://github.com/durgadas311/cpnet-z80) site. |
|
|
|
|
|
|
|
Below, I will provide the general steps involved in setting up a |
|
|
|
network using MT011 with RomWBW. The examples are all based on |
|
|
|
Z-System. |
|
|
|
|
|
|
|
## CP/NET Client Setup |
|
|
|
|
|
|
|
The CP/NET client files are included on the RomWBW disk images, but |
|
|
|
they are found in user area 4. They are placed there to avoid |
|
|
|
confusing anyone that is not specifically trying to run a network |
|
|
|
client. |
|
|
|
|
|
|
|
First, you need to merge the files from user area 4 into user area 0. |
|
|
|
After booting into Z-System (disk boot), you can copy the files |
|
|
|
using the following command: |
|
|
|
|
|
|
|
`COPY 4:*.* 0:` |
|
|
|
|
|
|
|
You will be asked if you want to overwrite `README.TXT`. It doesn't |
|
|
|
really matter, but I suggest you do not overwrite it. |
|
|
|
|
|
|
|
The MT011 Module uses a WizNet network module. At this point, you will |
|
|
|
need to configure it for your local network. The definitive guide to |
|
|
|
the use of `WIZCFG` is on the |
|
|
|
[cpnet-z80](https://github.com/durgadas311/cpnet-z80) site in the |
|
|
|
document called "CPNET-WIZ850io.pdf". Here is an example of the commands |
|
|
|
needed to configure the WizNet: |
|
|
|
|
|
|
|
| | | |
|
|
|
|------------------------------------|----------------------------------------| |
|
|
|
| `wizcfg w n F0` | set CP/NET node id | |
|
|
|
| `wizcfg w i 192.168.1.201` | set WizNet IP address | |
|
|
|
| `wizcfg w g 192.168.1.1` | set local network gateway IP address | |
|
|
|
| `wizcfg w s 255.255.255.0` | set WizNet subnet mask | |
|
|
|
| `wizcfg w 0 00 192.168.1.3 31100` | set server node ID, IP address, & port | |
|
|
|
|
|
|
|
You will need to use values appropriate for your local network. You can |
|
|
|
use the command `wiznet w` to display the current values which is |
|
|
|
useful to confirm they have been set as intended. |
|
|
|
|
|
|
|
``` |
|
|
|
A>wizcfg w |
|
|
|
Node ID: F0H |
|
|
|
IP Addr: 192.168.1.201 |
|
|
|
Gateway: 192.168.1.1 |
|
|
|
Subnet: 255.255.255.0 |
|
|
|
MAC: 98:76:B6:11:00:C4 |
|
|
|
Socket 0: 00H 192.168.1.3 31100 0 |
|
|
|
``` |
|
|
|
|
|
|
|
You will need to reapply these commands every time you power cycle |
|
|
|
your RomWBW computer, so I recommend putting them into a `SUBMIT` file. |
|
|
|
|
|
|
|
After applying these commands, you should be able ping the WizNet from |
|
|
|
another computer on the local network. If this works, then the |
|
|
|
client-side is ready. |
|
|
|
|
|
|
|
## CP/NET Sever Setup |
|
|
|
|
|
|
|
These instructions will assume you are using Douglas' CpnetSocketServer |
|
|
|
as the server on your network. The definitive guide to this software |
|
|
|
is also on the [cpnet-z80](https://github.com/durgadas311/cpnet-z80) |
|
|
|
site and is called "CpnetSocketServer.pdf". |
|
|
|
|
|
|
|
The software is a Java application, so it can generally run anywhere |
|
|
|
there is a Java runtime environment available. I have normally used |
|
|
|
it on a Linux system and have had good results with that. |
|
|
|
|
|
|
|
You will need to download the application called "CpnetSocketServer.jar" |
|
|
|
from the [cpnet-z80](https://github.com/durgadas311/cpnet-z80) site. The |
|
|
|
application uses a configuration file. My configuration file is called |
|
|
|
"cpnet00.rc" and has these contents: |
|
|
|
|
|
|
|
``` |
|
|
|
cpnetserver_host = 192.168.1.3 |
|
|
|
cpnetserver_port = 31100 |
|
|
|
cpnetserver_temp = P |
|
|
|
cpnetserver_sid = 00 |
|
|
|
cpnetserver_max = 16 |
|
|
|
cpnetserver_root_dir = /home/wayne/cpnet/root |
|
|
|
``` |
|
|
|
|
|
|
|
You will also need to setup a directory structure with the drive |
|
|
|
letters per the documentation. |
|
|
|
|
|
|
|
To start the server, you would use a command like this: |
|
|
|
|
|
|
|
`java -jar CpnetSocketServer.jar conf=cpnet00.rc` |
|
|
|
|
|
|
|
At this point, the server should start and you should see the following: |
|
|
|
|
|
|
|
``` |
|
|
|
CpnetSocketServer v1.3 |
|
|
|
Using config in cpnet00.rc |
|
|
|
Server 00 Listening on 192.168.1.3 port 31100 debug false |
|
|
|
``` |
|
|
|
|
|
|
|
Your CP/NET server should now be ready to accept client connections. |
|
|
|
|
|
|
|
## CP/NET Usage |
|
|
|
|
|
|
|
With both the client and server configured, you are ready to load and |
|
|
|
use CP/NET on your RomWBW system. CP/NET documentation is available |
|
|
|
on the [cpnet-z80](https://github.com/durgadas311/cpnet-z80) site. |
|
|
|
The document is called "dri-cpnet.pdf". |
|
|
|
|
|
|
|
After booting your computer, you will always need to start CP/NET using |
|
|
|
the `CPNETLDR` command. If that works, you can map network drives as |
|
|
|
local drives using the `NETWORK` command. The `CPNETSTS` command is |
|
|
|
useful for displaying the current status. Here is a sample session: |
|
|
|
|
|
|
|
``` |
|
|
|
A>cpnetldr |
|
|
|
|
|
|
|
|
|
|
|
CP/NET 1.2 Loader |
|
|
|
================= |
|
|
|
|
|
|
|
BIOS E600H 1A00H |
|
|
|
BDOS D800H 0E00H |
|
|
|
SNIOS SPR D400H 0400H |
|
|
|
NDOS SPR C800H 0C00H |
|
|
|
TPA 0000H C800H |
|
|
|
|
|
|
|
CP/NET 1.2 loading complete. |
|
|
|
|
|
|
|
A>network k:=c:[0] |
|
|
|
|
|
|
|
A>dir k: |
|
|
|
K: TELNET COM : ZDENST COM : CLRDIR COM : RTC COM |
|
|
|
K: DDTZ COM : MBASIC COM : XSUBNET COM : NETWORK COM |
|
|
|
K: WGET COM : UNCR COM : FLASH COM : PIP COM |
|
|
|
K: TIMEZONE COM : COMPARE COM : ZAP COM |
|
|
|
|
|
|
|
A>cpnetsts |
|
|
|
|
|
|
|
CP/NET 1.2 Status |
|
|
|
================= |
|
|
|
Requester ID = F0H |
|
|
|
Network Status Byte = 10H |
|
|
|
Disk device status: |
|
|
|
Drive A: = LOCAL |
|
|
|
Drive B: = LOCAL |
|
|
|
Drive C: = LOCAL |
|
|
|
Drive D: = LOCAL |
|
|
|
Drive E: = LOCAL |
|
|
|
Drive F: = LOCAL |
|
|
|
Drive G: = LOCAL |
|
|
|
Drive H: = LOCAL |
|
|
|
Drive I: = LOCAL |
|
|
|
Drive J: = LOCAL |
|
|
|
Drive K: = Drive C: on Network Server ID = 00H |
|
|
|
Drive L: = LOCAL |
|
|
|
Drive M: = LOCAL |
|
|
|
Drive N: = LOCAL |
|
|
|
Drive O: = LOCAL |
|
|
|
Drive P: = LOCAL |
|
|
|
Console Device = LOCAL |
|
|
|
List Device = LOCAL |
|
|
|
``` |
|
|
|
|
|
|
|
You will see some additional messages on your server when clients |
|
|
|
connect. Here are the messages issued by the server in the above |
|
|
|
example: |
|
|
|
|
|
|
|
``` |
|
|
|
Connection from 192.168.1.201 (31100) |
|
|
|
Remote 192.168.1.201 is f0 |
|
|
|
Creating HostFileBdos 00 device with root dir /home/wayne/cpnet/root |
|
|
|
``` |
|
|
|
|
|
|
|
At this point CP/NET is ready for general use. |
|
|
|
|
|
|
|
## Network Boot |
|
|
|
|
|
|
|
It is possible to boot your MT011 equipped RomWBW system directly |
|
|
|
from a network server. This means that the operating system will be |
|
|
|
loaded directly from the network server and all of your drive letters |
|
|
|
will be provided by the network server. |
|
|
|
|
|
|
|
It is important to understand that the operating system that is loaded |
|
|
|
in this case is **not** a RomWBW enhanced operating system. Some |
|
|
|
commands (such as the `ASSIGN` command) will not be possible. Also, |
|
|
|
you will only have access to drives provided by the network server -- |
|
|
|
no local disk drives will be available. |
|
|
|
|
|
|
|
In order to do this, your MT011 Module must be enhanced with an NVRAM |
|
|
|
SPI FRAM mini-board. The NVRAM is used to store your WizNet |
|
|
|
configuration values so they do not need to be re-entered every time you |
|
|
|
cold boot your system. |
|
|
|
|
|
|
|
Using the same values from the previous example, you would |
|
|
|
issue the WizNet commands: |
|
|
|
|
|
|
|
``` |
|
|
|
wizcfg n F0 |
|
|
|
wizcfg i 192.168.1.201 |
|
|
|
wizcfg g 192.168.1.1 |
|
|
|
wizcfg s 255.255.255.0 |
|
|
|
wizcfg 0 00 192.168.1.3 31100 |
|
|
|
``` |
|
|
|
|
|
|
|
Note that the 'w' parameter is now omitted which causes these values to |
|
|
|
be written to NVRAM. |
|
|
|
|
|
|
|
As before, your network server will need to be running |
|
|
|
CpnetSocketServer. However, you will need to setup a directory that |
|
|
|
contains some files that will be sent to your RomWBW system when the |
|
|
|
Network boot is performed. By default the directory will be |
|
|
|
`~/NetBoot`. In this directory you need to place the following files: |
|
|
|
|
|
|
|
* `cpnos-wbw.sys` found in the Binary directory of RomWBW |
|
|
|
* `ndos.spr` found in the Source/Images/cpnet12 directory of RomWBW |
|
|
|
* `snios.spr` found in the Source/Images/cpnet12 directory of RomWBW |
|
|
|
|
|
|
|
You also need to make sure CpnetSocketServer is configured with an 'A' |
|
|
|
drive and that drive must contain (at an absolute minimum) the following |
|
|
|
file: |
|
|
|
|
|
|
|
* `ccp.spr` found in the Source/Images/cpnet12 directory of RomWBW |
|
|
|
|
|
|
|
Finally, you need to add the following line to your CpnetSocketServer |
|
|
|
configuration file: |
|
|
|
|
|
|
|
`netboot_default = cpnos-wbw.sys` |
|
|
|
|
|
|
|
To perform the network boot, you start your RomWBW system normally which |
|
|
|
should leave you at the Boot Loader prompt. The 'N' command will |
|
|
|
initiate the network boot. Here is an example of what this looks like: |
|
|
|
|
|
|
|
``` |
|
|
|
RC2014 [RCZ180_nat_wbw] Boot Loader |
|
|
|
|
|
|
|
Boot [H=Help]: n |
|
|
|
|
|
|
|
Loading Network Boot... |
|
|
|
MT011 WizNET Network Boot |
|
|
|
|
|
|
|
WBWBIOS SPR FD00 0100 |
|
|
|
COBDOS SPR FA00 0300 |
|
|
|
SNIOS SPR F600 0400 |
|
|
|
NDOS SPR EA00 0C00 |
|
|
|
|
|
|
|
58K TPA |
|
|
|
|
|
|
|
A> |
|
|
|
``` |
|
|
|
|
|
|
|
The CP/M operating system and the CP/NET components have been loaded |
|
|
|
directly from the network server. All of your drive letters are |
|
|
|
automatically mapped directly to the drive letters configured with |
|
|
|
CpnetSocketServer. |
|
|
|
|
|
|
|
``` |
|
|
|
A>cpnetsts |
|
|
|
|
|
|
|
CP/NET 1.2 Status |
|
|
|
================= |
|
|
|
Requester ID = F0H |
|
|
|
Network Status Byte = 10H |
|
|
|
Disk device status: |
|
|
|
Drive A: = Drive A: on Network Server ID = 00H |
|
|
|
Drive B: = Drive B: on Network Server ID = 00H |
|
|
|
Drive C: = Drive C: on Network Server ID = 00H |
|
|
|
Drive D: = Drive D: on Network Server ID = 00H |
|
|
|
Drive E: = Drive E: on Network Server ID = 00H |
|
|
|
Drive F: = Drive F: on Network Server ID = 00H |
|
|
|
Drive G: = Drive G: on Network Server ID = 00H |
|
|
|
Drive H: = Drive H: on Network Server ID = 00H |
|
|
|
Drive I: = Drive I: on Network Server ID = 00H |
|
|
|
Drive J: = Drive J: on Network Server ID = 00H |
|
|
|
Drive K: = Drive K: on Network Server ID = 00H |
|
|
|
Drive L: = Drive L: on Network Server ID = 00H |
|
|
|
Drive M: = Drive M: on Network Server ID = 00H |
|
|
|
Drive N: = Drive N: on Network Server ID = 00H |
|
|
|
Drive O: = Drive O: on Network Server ID = 00H |
|
|
|
Drive P: = Drive P: on Network Server ID = 00H |
|
|
|
Console Device = LOCAL |
|
|
|
List Device = LOCAL |
|
|
|
``` |
|
|
|
|
|
|
|
At this point you can use CP/M and CP/NET normally, but all disk |
|
|
|
access will be to/from the network drives. |
|
|
|
|
|
|
|
# Transferring Files |
|
|
|
|
|
|
|
Transferring files between your modern computer and your RomWBW |
|
|
|
@ -2216,33 +2712,35 @@ detail in the Source\\Images directory of the distribution. |
|
|
|
|
|
|
|
## FAT Filesystem Transfers |
|
|
|
|
|
|
|
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 |
|
|
|
The ability to interact with FAT filesystems was covered in [FAT |
|
|
|
Filesystem]. This capability 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, be sure to pick |
|
|
|
the FAT filesystem. NTFS and other filesystems will not work. |
|
|
|
|
|
|
|
On your RomWBW computer you can use the `FAT` application to access |
|
|
|
the FAT media. The `FAT` application allows you to read files, write |
|
|
|
files, list a directory, and erase files on the FAT media. It can |
|
|
|
handle subdirectories as well. It will only see 8.3 character |
|
|
|
filenames however. Longer filenames will show up as a truncated |
|
|
|
version. |
|
|
|
|
|
|
|
The `FAT` application is not on your ROM disk because it is too large |
|
|
|
to fit. You will find it on all of the pre-built disk images as well |
|
|
|
as in the Binary\\Apps directory of the distribution. |
|
|
|
|
|
|
|
For advanced users, it is possible to create a hybrid disk that |
|
|
|
contains CP/M slices at the beginning and a FAT filesystem after. |
|
|
|
Such a hybrid disk can be used to boot an operating system and still |
|
|
|
have access to FAT files on the FAT portion of the disk. David Reese |
|
|
|
has prepared a document describing how to do this. It is called |
|
|
|
"SC126_How-To_No_2_Preparing_an_SD_Card_for_Use_with_SC126_Rev_1-5.pdf" |
|
|
|
and can be found in the Doc\\Contrib directory of the distribution. |
|
|
|
When formatting the media on your modern computer, be sure to pick the |
|
|
|
FAT filesystem. NTFS and other filesystems will not work. As previously |
|
|
|
mentioned, the `FAT` application does not understand long filenames, |
|
|
|
only the traditional 8.3 filenames. If you have files on your modern |
|
|
|
computer with long filenames, it is usually easiest to rename them on |
|
|
|
the modern computer. |
|
|
|
|
|
|
|
To copy files from your modern computer to your RomWBW computer, start |
|
|
|
by putting the disk media with the FAT filesystem in your modern |
|
|
|
computer. The modern computer should recognize it. Then copy the files |
|
|
|
you want to get to your RomWBW computer onto this media. Once done, |
|
|
|
remove the media from your modern computer and insert it in the RomWBW |
|
|
|
computer. Finally, use the `FAT` tool to copy the files onto a CP/M |
|
|
|
drive. |
|
|
|
|
|
|
|
This process works just fine in reverse if you want to copy files from a |
|
|
|
CP/M filesystem to your modern computer. |
|
|
|
|
|
|
|
**WARNING**: If you are using media that contains both a FAT partition |
|
|
|
and a RomWBW partition, your modern computer may be confused by the |
|
|
|
RomWBW partition. In some cases, it will prompt you to format the |
|
|
|
RomWBW partition because it doesn't know what it is. You will be |
|
|
|
prompted before it does this -- just be careful not to allow it. |
|
|
|
|
|
|
|
# Customizing RomWBW |
|
|
|
|
|
|
|
@ -2533,6 +3031,8 @@ please let me know if I missed you! |
|
|
|
computers at Small Computer Central and is distributing RomWBW |
|
|
|
with many of them. |
|
|
|
|
|
|
|
* The CP/NET client files were developed by Douglas Miller. |
|
|
|
|
|
|
|
* Phillip Stevens contributed support for FreeRTOS. |
|
|
|
|
|
|
|
* Curt Mayer contributed the original Linux / MacOS build process. |
|
|
|
@ -2610,54 +3110,58 @@ Submission of issues and bugs are welcome at the |
|
|
|
|
|
|
|
Also feel free to email $doc_author$ at [$doc_authmail$](mailto:$doc_authmail$). |
|
|
|
|
|
|
|
# Appendix A - Device Summary |
|
|
|
# Appendixes |
|
|
|
|
|
|
|
`\newpage`{=latex} |
|
|
|
|
|
|
|
## Appendix A - Device Summary |
|
|
|
|
|
|
|
The table below briefly describes each of the possible devices that |
|
|
|
may be discovered by RomWBW in your system. |
|
|
|
|
|
|
|
| ID | Unit Type | Description | |
|
|
|
|---------- | ---------- | -------------------------------------------- | |
|
|
|
| ACIA | Character | ? Serial Interface | |
|
|
|
| ASCI | Character | Z180 built-in serial ports| |
|
|
|
| AY | Audio | | |
|
|
|
| BQRTC | RTC | | |
|
|
|
| CTC | System | | |
|
|
|
| CVDU | Video | | |
|
|
|
| DMA | System | | |
|
|
|
| DS1307 | RTC | | |
|
|
|
| DS1501RTC | RTC | | |
|
|
|
| DSKY | System | | |
|
|
|
| DSRTC | RTC | | |
|
|
|
| DUART | Character | | |
|
|
|
| FD | Disk | | |
|
|
|
| GDC | Video | | |
|
|
|
| HDSK | Disk | | |
|
|
|
| IDE | Disk | | |
|
|
|
| INTRTC | RTC | | |
|
|
|
| KBD | Keyboard | | |
|
|
|
| KIO | System | | |
|
|
|
| LPT | Character | | |
|
|
|
| MD | Disk | | |
|
|
|
| MSXKYB | Keyboard | | |
|
|
|
| I2C | System | | |
|
|
|
| PIO | Character | | |
|
|
|
| PPIDE | Disk | | |
|
|
|
| PPK | Keyboard | | |
|
|
|
| PPPSD | Disk | | |
|
|
|
| PPPCON | Serial | | |
|
|
|
| PRPSD | Disk | | |
|
|
|
| PRPCON | Serial | | |
|
|
|
| RF | Disk | | |
|
|
|
| RP5C01 | RTC | | |
|
|
|
| SD | Disk | | |
|
|
|
| SIMRTC | | |
|
|
|
| SIO | Character | | |
|
|
|
| SN76489 | Sound | | |
|
|
|
| SPK | Sound | | |
|
|
|
| TMS | Video | | |
|
|
|
| UART | Character | | |
|
|
|
| USB-FIFO | Character | | |
|
|
|
| VDU | Video | | |
|
|
|
| VGA | Video | | |
|
|
|
| YM | Audio | | |
|
|
|
| Z2U | Character | | |
|
|
|
| ID | Type | Description | |
|
|
|
|---------- | ------- | ------------------------------------------------------ | |
|
|
|
| ACIA | Char | MC68B50 Asynchronous Communications Interface Adapter | |
|
|
|
| ASCI | Char | Z180 Built-in Serial Ports | |
|
|
|
| AY | Audio | AY-3-8910/YM2149 Programmable Sound Generator | |
|
|
|
| BQRTC | RTC | BQ4845P Real Time Clock | |
|
|
|
| CTC | System | Zilog Clock/Timer | |
|
|
|
| CVDU | Video | MC8563-based Video Display Controller | |
|
|
|
| DMA | System | Zilog DMA Controller | |
|
|
|
| DS1307 | RTC | Maxim DS1307 PCF I2C Real-Time Clock w/ NVRAM | |
|
|
|
| DS1501RTC | RTC | Maxim DS1501/DS1511 Watchdog Real-Time Clock | |
|
|
|
| DSKY | System | Keypad & Display | |
|
|
|
| DSRTC | RTC | Maxim DS1302 Real-Time Clock w/ NVRAM | |
|
|
|
| DUART | Char | SCC2681 or compatible Dual UART | |
|
|
|
| FD | Disk | 8272 of compatible Floppy Disk Controller | |
|
|
|
| GDC | Video | uPD7220 Video Display Controller | |
|
|
|
| HDSK | Disk | SIMH Simulator Hard Disk | |
|
|
|
| IDE | Disk | IDE/ATA Hard Disk Interface | |
|
|
|
| INTRTC | RTC | Interrupt-based Real Time Clock | |
|
|
|
| KBD | Kbd | 8242 PS/2 Keyboard Controller | |
|
|
|
| KIO | System | Zilog Serial/ Parallel Counter/Timer | |
|
|
|
| LPT | Char | Parallel I/O Controller | |
|
|
|
| MD | Disk | ROM/RAM Disk | |
|
|
|
| MSXKYB | Kbd | MSX Compliant Matrix Keyboard | |
|
|
|
| I2C | System | I2C Interface | |
|
|
|
| PIO | Char | Zilog Parallel Interface Controller | |
|
|
|
| PPIDE | Disk | 8255 IDE/ATA Hard Disk Interface | |
|
|
|
| PPK | Kbd | Matrix Keyboard | |
|
|
|
| PPPSD | Disk | ParPortProp SD Card Interface | |
|
|
|
| PPPCON | Serial | ParPortProp Serial Console Interface | |
|
|
|
| PRPSD | Disk | PropIO SD Card Interface | |
|
|
|
| PRPCON | Serial | PropIO Serial Console Interface | |
|
|
|
| RF | Disk | RAM Floppy Disk Interface | |
|
|
|
| RP5C01 | RTC | Ricoh RPC01A Real-Time Clock w/ NVRAM | |
|
|
|
| SD | Disk | SD Card Interface | |
|
|
|
| SIMRTC | RTC | SIMH Simulator Real-Time Clock | |
|
|
|
| SIO | Char | Zilog Serial Port Interface | |
|
|
|
| SN76489 | Sound | SN76489 Programmable Sound Generator | |
|
|
|
| SPK | Sound | Bit-bang Speaker | |
|
|
|
| TMS | Video | TMS9918/38/58 Video Display Controller | |
|
|
|
| UART | Char | 16C550 Family Serial Interface | |
|
|
|
| USB-FIFO | Char | FT232H-based ECB USB FIFO | |
|
|
|
| VDU | Video | MC6845 Family Video Display Controller | |
|
|
|
| VGA | Video | HD6445CP4-based Video Display Controller | |
|
|
|
| YM | Audio | YM2612 Programmable Sound Generator | |
|
|
|
| Z2U | Char | Zilog Z280 Built-in Serial Ports | |
|
|
|
|