HalBower's Home Page

(updated 29 Dec 2007)

Recovering vinyl records under Linux

My favorite Korean Music

8-bit Computers and Software

My Mods to Asus' EeePC


Mail address is: HalBower [at sign] worldnet [dot] att [dot] net


While the 8-bit CP/M computers may be fading, some of us dinosaurs still keep programming for them. In the process of preparing files for release of the Banked and portable (B/P) Bios, several Y2K and related problems have been uncovered. Fixes for some of the more critical ones (along with some corrected and new Z-System utilities) are available here as well as some other related donations.

In spite of the derision received from those dealing with larger word sizes, 8-bitters are up to many tasks such as this YASBEC-based laptop with the computer controlling an ISA 8-bit LCD controller with Z-System termcap emulation. A 40 MB SCSI hard drive and 3.5" HD floppy are included. Power is regulated internally with National Semi "Simple Switcher" circuits from a nominal 12 vdc source.

Table of Page Contents:

NOTE: Due to some problems with MIME types when using some browser/OS combinations (e.g. Netscape/Windows), .LBR files here will be transferred with a name of ".lbr.bin" to insure that "application/octet-stream" is used. Rename the file as/after you download to ".lbr".

Programming Languages


(22 Sep 2002) Peter Hochstrasser has released his "Modula-2 System for Z80 CP/M" per the following message fragment:

    From: "Peter Hochstrasser"
    Date: Thu, 19 Sep 2002 15:29:58 +0200
    X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2910.0)

    Having mulled over this for much too long, I say, let's do it. Just put it on the sites you find OK. As stated below, no support is available, and, as I'm sad to say, not even the manual text is available - it was done using WordStar, MagicBind and a Visual-100 terminal with programmable function keys, using command macros for most of the formatting. It was easy to create at that time...

    Yours truly
    Peter Hochstrasser

Many thanks to Peter for this action, and I will try, over time, to add documentation here to make up for the loss of manual sources. Here is a portion of the Users Guide in Ascii which should permit you to get started with this fine system.

In the future I will be adding some samples of converting assembly programs to Modula-2 Modules, as well as modules for accessing ZCPR3 Termcap and more.

The Modula-2 System for Z80 CP/M was distributed on three 8-inch diskettes in standard CP/M format. I first ordered a copy in 1985 directly from Peter in Switzerland. The three diskettes from that order bear the following label data:

    Modula-2 System for Z80 CP/M Version 2.0
    Serial No. 20-00026 - Disk No. 1 (thru 3)
    SS SD, 77 Tracks, 26 Sectors/Track, 128 Bytes/Sector

Disk #1 from that order was defective, and was replaced with one bearing the same label, but with Serial Number 20-00064. Files from that replacement along with files from the other two original diskettes are provided here for a complete "Modula-2 System for Z80 CP/M".

Files on each of these three diskettes were consolidated into one with a version of ZIP utilities that allows extraction with the "UNZIP.COM" program available on the Walnut Creek CP/M CDROM (and other places). This way, you can extract them on native CP/M 2.2 and compatible systems.

    DISK1.ZIP - Executable (.COM) programs (1985)
    DISK2.ZIP - Module (.MRL) and Symbol (.MSY) files (1985)
    DISK3.ZIP - Sample programs and library sources (1985)

(22 Sep 2002) Al Hawley has authorized the free distribution of his ZMAC Z80/Z180 Assembler/Linker/Librarian package in the following message snippet:

    From: Al Hawley
    Date: Sat, 25 May 2002 22:04:09 -0700
    X-Mailer: KMail [version 1.2]
    Hal, as far as I am concerned, ZMAC and ZML can be distributed freely with no strings attached. I am pretty sure that I will have little to do with them,
    (rest snipped)

The files comprising the complete distribution disk (ZMAC assembler, ZML linker, ZMLIB librarian) are available here in one .ZIP file. Also in the file is documentation and the Z-System configuration utility for option settings (used to configure many Z-System utilities). Extracting this file under MSDOS or Linux creates a subdirectory (HAWLEY1) containing four more subdirectories with files to go in four User Areas (USER0..USER3) on the CP/M diskette. A 'README' file in each user area explains the contents and necessary instructions.

    ZMAC.ZIP - Al Hawley's Z80/Z180 Assembler/Linker/Librarian
back to Table of Contents


NEW - (28 Dec 2002): Hector Peraza has run with the UZI180 beta package, and significantly enhanced it for the P112 platform (fixing some serious bugs in the process). He has produced this large package which barely fits on a 1.44 MB floppy and released it under the GPL, as was the original UZI180. Be forewarned that it is a 'zip' of 'zip'-files, and is amenable to extraction under Linux as well as MSDOS.

    UZI180.ZIP - Hector Peraza's Uzi180 for the P112 (Z182)

For the time being, these old Beta packages will stay up, primarily for the multiplatform references, but will be replaced in the future by mods to Hector's package above. These are the original Beta modules with little updating. Three .ZIP files comprise the release which needs only a Z180-based CP/M (or compatible) computer, and the CP/M version of the Hi-Tech C development system from the CP/M CDROM or download sites (the one Hi-Tech released for individual use in 1987) to compile, link and make a multi-user, multi-tasking *nix system for 8-bit computers.

    KERNEL.ZIP - Kernel source for YASBEC (Z180) and P112 (Z182)
    UTILS.ZIP - Utilities supporting the UZI180 system
    APPS.ZIP - Some small sample UZI180 applications
back to Table of Contents

Y2K Fixes


The utility to extract elements from .LBR libraries with create and modify date preservation improperly displays the year (last two) digits for years > 1999 ('01' shows as 'A1'). A new option was also added so that the default date presentation will be either 'dd.mm.yy' or 'mm/dd/yy'. Since this is the recommended program for accessing the remaining packages, the .COM file alone is provided, defaulting to automatically decompress files when extracting. You might want to rename this simply 'LBREXT.COM'.

    LBREXT.COM - CP/M Library Extractor (default is decompress)
    The .LBR file contains source, docs, history and a Config file for the ZCNFG24 utility. ZSLIB, Z3LIB and SYSLIB are required for linking. LBREXT36.LBR - Complete package.


Version 1.6 (the last one released) of the Z-System Editor (ZDE) does not retain the creation date for files greater than one extent. Since no source for this program was released, only a patch file is available for correction. A configuration flag was also added to set the default 'Auto-Indent' feature for Non-Documents (it currently is always ON when files are first opened). Before you apply this patch, insure that your source ZDE16.COM matches the 'was:' code to avoid corruption (and other interesting side effects).

    ZDE16A.PAT - Assembly patch to fix/modify ZDE16.COM


The CP/M 2.2 version (at least) of DosDisk(tm) does not correctly convert Dates to MSDOS format when copying files to 5.25" '360k' formatted disks for transferring to MSDOS machines for years > 1999. 2000 will be converted to '80' and 2001 to '29' with additional corruption to the month value (17 July 2001 appears as 17th day, 15th month, 2029 :^) This Assembly patch corrects the problem and _should_ be good until 31 Dec 2076 when the rest of DateStamper(tm) and ZSDOS stamps will fail. WARNING: This has only been tested for the CP/M 2.2 version of DosDisk in the final 1.0 release version with subdirectory support enabled. Check the 'was:' code in the patch source before applying to avoid problems.

    DOSDISK.PAT - Assembly patch for DOSDISK.COM (CP/M 2.2)


The COPY.COM utility provided with ZSDOS, B/P Bios and on old RBBS systems has a cosmetic Y2K glitch when copying a file where the file already exists at the destination (1999 is 'newer' than 2001). This package corrects the problem.

    COPY173.LBR - Complete package for Copy utility with date preservation


It is possible that a buggy version of the ZXD Directory listing program has been released since late 1993 and which would not display dates for certain files. This updated package corrects the problem, and also automatically sizes the screen(s) of data (lines and columns) to values in the ZCPR3 Termcap (if one is detected). It also clears up the printed output then the '/p' toggle is passed. NOTE: I usually rename the executable to 'D.COM', set defaults to desired values, place it with other utilities in A15: and set the 'SYStem' and 'PUBlic' bits for fast and easy access.

    ZXD22.LBR - Complete package for Z-System Directory Lister
back to Table of Contents

ZsDOS, GPL Release and Utilities


ZSDOS (Z-System DOS) and the Companion ZDDOS (Z-System DOS with Embedded DateStamper) are enhanced replacements for the CP/M 2.2 Basic Disk Operating System. ZSDOS was a commercial product sold from 1988 through 1998 when the complete package (including source code) was released under the GNU General Public License. These four packages comprise the GPL release:

    ZSDOS3.ZIP - Ascii version of Manual (Formfeeds delimit pages)

(24 Feb 2002) Local Area Networking can be performed on 8-bit systems as well as larger computers. It can be added to systems running the banked version of ZSDOS with minimal hardware, and just a little software. Here is a package originally developed in the mid- 1980s for a class I was taking, and polished to this form in 1985 for the Trenton Computer Festival presentation.


To apply .HEX patches (such as the ZDE16 and DosDisk Y2K fixes), a utility such as the venerable MLOAD is usually used. Unfortunately, that program does not work with odd sizes of BDOS and CCP/CPR which are common with the B/P Bios (which allow banking of much of the code) so I wrote one a number of years ago called MYLOAD. This is a re- release of that package, and as with most other utilities, built-in help is available by entering 'MYLOAD //' at the CP/M prompt.

Banked and Portable (B/P) Bios, GPL Release


B/P Bios was developed to provide a common interface for CP/M 2.2 compatible systems with provisions to manage more than 64k of physical memory. With permission of Jay Sage, a banked Command Processor Replacement based on ZCPR 3.4 was added with many built-in commands; ZSDOS was banked and extended to include multiple file date/time stamp formats (courtesy of Bridger Mitchell and Joe Wright) and optional directory hashing to speed access. Five hardware platforms were ultimately supported in the commercial release which was sold from 1992 through 1999.

Packages will be added as they are updated, tested and built.

    BP-MAN.ZIP - Ascii version of manual with embedded FormFeeds (500 kB unzipped)

Each platform supported by the B/P Bios system was distributed on a single 800k or two 400k diskettes depending on the hardware in the destination system. For convenience in this GPL release, the common run-time support, configuration, data and some ZCPR3 common utilities are provided in a library of libraries. RUNDISK.LBR contains separate libraries for each user area except that normally holding the Bios Source, which was machine-dependant. LBREXT or equivalent (depending on your system) will be needed to extract the individual members and uncompress them (using the LZH algorithm).

    RUNDISK.LBR - User Areas 0, 2, 10, 14 and 15 of B/P distribution disk (.LBRs)


D-X DESIGNS PTY LTD Project 112 (P112).

This Platform was designed and produced by Dave Brooks in 1996. The photo shows a P112 mounted on a 3.5" floppy drive with an 80 MB 2.5" hard drive (in 3.5" adapter) in the foreground, and a homemade GIDE controller detatched to show the bottom wiring details. A switching regulator (National Semi "Simple Switcher") provides 5 vdc from a 12 vdc (nominal) source which is currently a wet-cell NiCd array charged by Solar cells. B/P Bios supports the hardware as indicated:

Z80182 CPU (Z8S180 core CPU, MMU, DMA)

  • ESCC #1 (COM1 Serial port w/handshake, RS-232)
  • ESCC #2 (available on header, coded as expansion serial)
  • ASCI0,ASCI1 (Serial Async, available on header, expansion)
  • CTC1 (Optional "Heartbeat" clock, General Purpose Timer)

SMC FDC37C665 Multifunction System Support Chip

  • Enhanced 765-derivative Floppy Disk Controller (HD capable)
  • COM2 (16550-compatible Serial port, RS-232)
  • PAR1 (PC-'type' Parallel Printer port)

Dallas DS-1202/1302 Realtime Clock

  • Primary Real Time Clock
  • Non-volatile battery0backed RAM (Configuration data)

28F256 Flash ROM (Boot Code, Device initialization)

32/128/512 kB Static RAM (up to 1MB)

This release also supports add-on Hard Disk interfaces with two subsystems as Bios assembly-time options:

  • SCSI - National DP8490/DP5280 (NCR 5380) Interfaced per plans on Dave Brooks' web page
  • IDE - Tilmann Reh's Generic IDE (GIDE) interface.
  • BPBIO-DX.LBR - Z180 Assembly Source code to P112 version of B/P Bios.


Yet Another Single Board Eight-bit Computer (YASBEC)

This Platform was designed and produced by Paul Chidley beginning in 1991. B/P Bios was specifically designed for this system and was the primary OS hosted on it. The photo shows a stock YASBEC modified with a National DP8743 Floppy controller modification that I described in The Computer Journal (See Gaby's archived) for "high-density" floppy support. The YASBEC hardware is supported as indicated:

Z80180/Z8S180 CPU (Z180 core CPU, MMU, DMA)

  • ASCI0 (Serial Async, RS-232 as AUX port)
  • ASCI1 (Serial Async, RS-232 as CON port)
  • CTC1 (Optional "Heartbeat" clock, General Purpose Timer)

WD1771/1772 Double-Density Floppy Disk Controller

National DP8490/NCR5380 SCSI Controller (both Polled and Int/DMA modes)

Dallas DS-1216E Hardware Clock (aka No-Slot-Clock / Smartwatch)

74HC474/74HC74 Minimal Parallel Printer Output, Interrupt ACK

128-1024 kB Static RAM (with appropriate decode PAL)


In the mid-1990s, Jim Thale produced an optional accessory board for the YASBEC, the YASMIO, which added additional capabilities which are supported by B/P Bios as:

  • National DP8473 - Enhanced 765-derivative Floppy Disk Controller (integrated as third and fourth floppy drives, High-Density capable)
  • Exar 88C681 - Dual Sync/Async High-Speed Serial Ports, RS-232


In the late '90s, I adapted the DP8473 FDC to completely replace the Western Digital controller on the YASBEC and described the design in a TCJ article. This modification is also accomodated as an option in B/P Bios with a separate DP8473-only Floppy Disk driver module.

    BPBIO-YS.LBR - Z180 Assembly Source code to YASBEC version of B/P Bios.


MicroMint SB180-FX (SB180L02).

This single-board computer was sold by MicroMint from 1986/7 until just a few years ago. It is uses the HD64180/Z (Z180) CPU, and was sold with a few variations over the years in clock rates (6.144 and 9.216 MHz) and on-board memory complement (256/512kB).

With some minor trace cutting and re-jumpering, this system can use some of the newer "high-density" floppy drives in all but the first position (the boot drive) without a ROM modification. Notes in the FDC-FX.Z80 module describe the procedure, and a .NOT file is provided with tested drive models. Since the controller chip used can not read/write to the floppy drive at 300 kbps, only 5.25" drives which can change the spindle speed between 300 and 360 rpm can be used.

B/P Bios supports the SB180-FX hardware as indicated:

HD64180/Z CPU (Z180 core CPU, MMU, DMA)

  • ASCI0 (Serial Async, RS-232 as AUX port)
  • ASCI1 (Serial Async, RS-232 as CON port)
  • CTC1 (Optional "Heartbeat" clock, General Purpose Timer)

SMC 9266 Double-Density 5.25" and 8" Floppy Disk Controller

National NCR5380 SCSI Controller in Polled IO mode

Dallas DS-1216E Hardware Clock (aka No-Slot-Clock / Smartwatch)

74LS273/74LS74 Minimal Parallel Printer Output, Interrupt ACK

256 kB and 512 kB Dynamic RAM (with assembly flag to disable refresh if Static RAM used)

Up to 4MB RAM disk with FX-2MME memory expansion boards (untested)

    BPBIO-FX.LBR - Z180 Assembly Source code to SB180-FX version of B/P Bios.


MicroMint SB-180.

This single-board computer was sold by MicroMint in the early/mid 1980s and was described by Steve Ciarcia in Byte magazine. It uses the Hitachi HD64180 CPU in a DIP package. The board used a 12.288 MHz crystal for a clock frequency of 6.144 MHz and contained 256kB of dynamic RAM onboard along with an SMC 9266 (NEC 765 derivative) Floppy Disk Controller for 5.25 and 8" drives, two serial ports and a parallel printer port.

Micromint sold a couple of expansion boards for the SB-180, among them being a 5380-based SCSI controller for hard drives. ETS Technologies of Frederick Maryland produced an expansion board late 1980s which was compatible with the Micromint SCSI controller but also featured two more serial ports with complete handshaking and a Real-Time Clock with battery backup. All of these units plugged into a limited DIP header on the SB-180.

The SB-180 was a minimal computer and featured many hardware compromises which limited expansion capabilities. For example, "High-Density" floppy disks are not directly supported by any known kit, and the 9266 controller is not capable of handling the data rates which would allow compatibility without directly varying the motor spindle speed on 5.25" drives.

In 2002, Scott Coburn (scotttt@optonline.net) modified a SB-180 by replacing the HD64180 with a Zilog Z8S180, replaced the 256k x 1 DRAM chips with fast Static RAM and managed to crank the speed up to 22 MHz. B/P Bios modifications from Scott's efforts are included with his permission.

B/P Bios supports the SB180 hardware with Assembly time options as:

HD64180 or Z8S180 (Scott Coburn's mod) CPU (Z180 core CPU, MMU, DMA)

  • ASCI0 (Serial Async, RS-232 as AUX port)
  • ASCI1 (Serial Async, RS-232 as CON port)
  • CTC1 (Optional "Heartbeat" clock, General Purpose Timer)

SMC 9266 Double-Density 5.25" and 8" Floppy Disk Controller

74LS273/74LS74 Minimal Parallel Printer Output, Interrupt ACK

256 kB Dynamic RAM (with assembly flag to disable refresh if Static RAM used)


The following items are supported from the ETS180IO+ Expansion board:

  • Epson 62421/72421 Real-Time Clock/Calendar
  • National NCR5380 SCSI Controller in Polled IO mode
  • Exar 88C681 DUART for two hi-speed serial ports w/handshaking


Other additions supported in this package are:

Tilmann Reh's GIDE interface for IDE Disk Drives

Dallas DS-1216E Hardware Clock (aka No-Slot-Clock / Smartwatch)

    BPBIO-18.ZIP - Z180 Assembly Source code to SB-180 version of B/P Bios.


B/P-specific Utilities. These programs are intended to support or be used in a B/P Bios-based system. These packages contain source code needed to build the respective program.
    HDIAG - SCSI and IDE Utility/Diagnostic.
    ALIEN - Library of Floppy Disk Formats.
back to Table of Contents

Z-System Libraries


Many (if not most) programs written for the ZCPR3.x-based systems, ZSDOS, the B/P Bios, and more used pre-assembled libraries of routines originated by Richard Conn. The basic SYSLIB was augmented with Z3LIB for the ZCPR3 Command Processor Replacement, and VLIB which added generic terminal support to applications.

I picked up maintenance for these libraries and their associated Help files in the late 1980s. From that time until the last updates, all routines were optimized for Z80s, and a fourth library, DSLIB, was added to support generic file date stamping. The last updates were made in December 1993 and are available here:

    LIBS45A.LBR - SYSLIB, Z3LIB, VLIB, DSLIB Vers 4.5A in MS REL and SLR REL formats.


When the Z-System Libraries were being actively developed, I wrote a small demonstration program to use the primative character-based windowing features in Version 4 of VLIB as a shell instead of command line interaction. At that time, two versions were produced; one using the multiple command line of ZCPR3, the other using the shell stack. Both versions were combined in 1997 with an assembly option dictating which mechanism is used. This library contains the source, executable and documentation. It is hereby released into the public domain...

    PDMSHELL.LBR - Pull-Down Menu Shell demo program for Z-Systems
back to Table of Contents

Programs and Utilities

(1 May 2005): This Audio Player program has been updated to work with ATAPI overlay for ATA drives connected with Tilmann Reh's GIDE inteface. It has been tested with three ATAPI drives, and should still function with the earlier SCSI overlays. This version features a standard driver file format shared with the CDZSWP CD-ROM Data Utility.

    PLAY03.ZIP - CD Audio Player for CP/M Systems with SCSI or ATAPI CD-ROMs


Rather than access the CDROMs from 'big' machines and then transfer files to CP/M 2.2 machines, a native utility was needed. Thanks to Duncan Elvin who allowed me to use his C code (after converting to assembly...naturally), the CDZSWP Z-System utility was produced. This updated release corrects minor bugs and adjusts things to use a common driver for both the Audio Play program and this Data Sweep program. This program is inspired by other 'SWEEP'-style programs and uses the ZCPR3 Termcap definitions for screen attributes and the 'WordStar Diamond' for movement.

back to Table of Contents