Z-System on RomWBW
Z-System is a somewhat general name that refers to a series of CP/M-80 2.2
This file is a log of the work done to adapt the ZSDOS distribution to the N8VEM platforms under RomWBW. I strongly recommend reviewing the zsdos.pdf file in the Doc directory.
The starting point was the general public release of ZSDOS that is generally available. The first line of the README file is “ZSDOS-GP. General Public Release of the ZSDOS 1.x Operating System.”
The actual ZSDOS source code was minimally modified to achieve TASM assembler compatibility. In order to minimize the number of changes to the source, I created a “wrapper” that defines a bunch of helper macros to improve compatibility. The wrapper uses a #INCLUDE to imbed the actual ZSDOS source.
ZSDOS is really two things. ZSDOS and ZDDOS. It is the same source file, an equate determines which variation you want to build. The wrapper mentioned above can be changed to pick either one. Basically, ZSDOS has more features. ZDDOS has less features, but inlcudes date stamping code. Refer to the zsdos.pdf file for more information. I have chosen to use ZSDOS to pick up the maximum number of features. DateStamping is still available, it just uses memory outside of the OS.
The source also allows you to compile the OS code as either v1.1 or v1.2 via an equate. This can be controled by the wrapper just like the choice of ZSDOS/ZDDOS. Version 1.2 has only a couple of small changes versus v1.1 (apparently a minor bug fix). However, there are warnings in the source that compiling the DOS as v1.2 will make it incompatible with existing overlays and applications. I encountered this myself with the date stamping code – won't work with v1.2 because it does a version check. For now, I have chosen to use v1.1 to maximize compatibility (seems to be what everyone is doing). Ultimately, I may go back and try to rebuild everything in the distribution to bring it all up to v1.2. That is for the future though.
As I worked through the files in the distribution, it became clear that there were problems with the distribution. For example, the .CFG files for some apps (like FILEDATE) are not acceptable to ZCNFG. Additionally, the STAMPS.DAT file contains code that simply does not work. In all of these cases, I found updated or fixed versions of the files. However, the point is that I concluded I would need to go through the distribution file-by-file and validate everything, replacing anything that was not working as needed. See the notes below for what I did.
Beyond the construction and integration of the actual DOS itself, the majority of the work has been to update the distribution files as needed to get them all functional. Then, as appropriate, I have added application files to the ROM Disk for the ZSystem builds.
The remainder of this document details the changes I made as I went along. In all cases, my goal was to keep the result as close to the original distribution as possible. I started by copying all of the files from the distribution (contained in zsdos2.zip) into Support\ZSDOS. From there I tested, modified, updated, and customized as documented below. Finally, I cherry picked files that made sense to include on the ZSystem ROM disks.
- CLOCKS.DAT has been updated to include the N8VEM clock drivers, N8VEMCLK AND N8CLK. I have also added the SIMHCLOK clock driver.
- STAMPS.DAT has been replaced with an updated version. The update was called STAMPS11.DAT and was found on the Walnut Creek CP/M CDROM. The original version has a bug that prevents RSX (resident system extension) mode to fail to load properly.
- The original LDTIMD and LDTIMP were built against ZSDOS 1.0 and refused to load under ZSDOS 1.1. Used SETUPZST to recreate LDTIMD and LDTIMP for compatibility with ZSDOS 1.1. They were built exactly the same as previously: Relative Clock driver and RSX mode loading.
- Updated FILEDATE.COM and FILEDATE.CFG from original v1.7 to v2.1. The FILEDATE.CFG originally supplied was invalid.
- Updated COPY.CFG. The original one was invalid and appeared to be for a much oder version of COPY.
- Updated FILEATTR to v1.6A. Original FILEATTR.CFG was invalid. FILEATTR.CFG replaced with FA16.CFG. Added associated files FA16.DOC, FA16A.FOR, FA16CFG.TXT.
- ZSDOS has a concept of fast relog of drives. This means that after a warm start, it avoids the overhead of relogging all the disk drives. There are times when this causes issues. After using tools like CLRDIR or MAP, you may need to run “RELOG” to get the drive properly recognized by ZSDOS.
- ZSVSTAMP expects to be running under the ZCPR 3.X command processor. By default, RomWBW uses ZCPR 1.0 (intentionally, to reduce space usage) and ZSVSTAMP will just abort in this case. It will work fine if you implement NZCOM. ZSVSTAMP is included solely to facilitate usage if/when you install NZCOM.
- FILEDATE only works with DateStamper style date stamping. If you run it on a drive that is not initialized for DateStamper, it will complain “FILEDATE, !!!TIME&.DAT missing”. This is normal and just means that you have not initialized that drive for DateStamper (using PUTDS).
- ZXD will handle either DateStamper or P2DOS type date stamping. However, it MUST be configured appropriately. As distributed, it will look for P2DOS date stamps. Use ZCNFG to reconfigure it for P2DOS if that is what you are using.
- Many of the tools can be configured (using either ZCNFG or DSCONFIG). The configuration process modifies the actual application file itself. This will fail if you try to modify one that is on the ROM disk because it will not be able to update the image.
- DATSWEEP can be configured using DSCONFIG. However, DSCONFIG itself needs to be configured first for proper terminal emulation by using SETTERM. So, run SETTERM on DSCONFIG before using DSCONFIG to configure DATSWEEP!
- After using PUTDS to initialize a directory for ZDS date stamping, I am finding that it is necessary to run RELOG before the stamping routines will actually start working.
- Generic CP/M PIP and ZSDOS path searching do not mix well if you use PIP to copy to or from a directory in the ZSDOS search path. Best to use COPY from the ZSDOS distribution.