Monthly Archives:

September 2021

On the Road to CP/M

September 1, 2021

CP/M and S-100 Systems

Over the past 2-3 weeks I have been unpacking and sorting the computers, S-100 parts and systems I recently moved to my new home in West Los Angeles. I have collected quite a few systems and boards – 3 IMSAI-8080, 2 IMSAI/Fulcrum, Z2-Cromemco, 2 Heath/Zenith H100 series, 2 Northstar Horizon. Several floppy subsystems (5.25″ and 8″), disk controllers, memory, I/O boards. And 2 DEC VT-420 ASCII Terminals. Plus a number of Apple ][, Commodore 64, and Commodore 128 systems. I also have been building some more recent Z80 based single board computers, including the RC2014. And lets not forget the IMSAI-8080 ESP-32 based simulator from Australia (which runs CP/M!). Plus of course my original 3 Computer Automation Alpha LSI-2/20’s.

A few commonalities across all (or most) of these systems  (except for the LSI-2’s ) –

1, They all run (or can run)  CP/M
2.  All support RS-232 serial IO – The Commodores and Apples have video screen graphics and keyboards built in – as does the Heath/Zenith, but they can do serial IO.
3. Almost all are based on the Z80/8080 CPU (except Apple & Commodore with the 6502, but both have Z80 options for CP/M). The Heath/Zenith also has an added 8086 CPU. And the ESP-32 IMSAI emulates Z80.
4. They were all designed and built between 1975 and 1985 (except the SBCs and ESP-32).
5. Many support 2 or more OS’s or runtime environments.

My original project was to restore the LSI-2 system(s) — both hardware and software — to running state. However, I have had a number of obstacles as mentioned below and I was getting frustrated with the slow progress — given my limited time as I still have a full time job. I felt working on 8 bit CP/M systems could help my restoration of the LSI-2 system(s). The big advantage is the wide array of emulators and disk based tools for CP/M, as well as assemblers and debuggers. Plus the ability to develop on a modern PC and then test on the target platform easily.

I have had some difficulty getting software loaded into the LSI-2 and running, even though the hardware seems to work in tests so far.  I do not have original media (paper tape or disks) so everything has to be bootstrapped from scratch, including PC based software loaders from archive formats.  That means coding on DOS and LSI-2 in assembly. It may even mean creating a simple LSI-2 assembler to run on MSDOS.

Therefore, I wanted to restore some of these systems and refresh my memory on 8 bit assembly coding and CP/M and possibly use some of the same techniques on the LSI-2 systems.

Getting a CP/M S-100 System Running

Since I have several goals, I have been using several platforms in parallel to move forward. Most important is to get hardware working first. I now have a working PC Altair emulator running CP/M on Windows 10.  This is a good development environment because it is fast and file transfers between OS’s is easy. I also have a couple of Commodore 128’s working with CP/M and floppy drives. This can be useful because Commodore included the ability to read almost all 1980’s vendors 5.25″ soft sector CP/M disk formats. Osborne, Kaypro, etc. XModem allows me to transfer files to the PC over a serial connection.

The Heath/Zenith H110 system I found recently – which is completely working so far – runs MSDOS, CP/M 80, and CP/M 86 with 5.25″ soft sector floppies. It can also support 8″ drives – a very useful feature.

One of my original IMSAI-8080’s (above photo) was supposed to be running CP/M – but it has Micropolis drives and controller  – which use a pre-standards 100 tpi/16 hard sector 5.25″ diskette format. It is not really an interchangeable format and disks are expensive and hard to find. Same issue with the Northstar Horizon – rare 10 hard sector 5.25″ floppy disks and a very difficult to find or bootstrap implementation of CP/M.

Getting CP/M running on an “normal” S-100 system with 8″ drives was my goal. I had previously spent a few weeks working with the Fulcrum I-8080 replica/clone before my move and had not had a lot of success – again too many unknown issues and variables with ROMs, CPU, Memory, and IO – along with the issues caused by an IMSAI front panel on the bus.

I decided to start over after my move. I took the original IMSAI-8080 that had the Micropolis  drives and removed everything – including the front panel. I wanted to start from scratch and build up the system. I selected a California Computer Systems (CCS) 2810 Z80 CPU card with onboard monitor, and a 64k static ram board that had been in the Micropolis system, and connected a VT-420 ASCII serial terminal to the RS-232 port on the CPU. The board was missing the UART, so I found an INS 8250, put it in the socket and crossed my fingers.  I turned on the power and the CPU status lights came on! Yay! I hit return several times and it worked!!

Note: Apologies for the poor lighting – I don’t have my pro camera and studio lights unpacked yet.

I saw the CCS Monitor sign on – MOSS VERS 2.2

I had a working S-100 CPU and Memory board. With terminal I/O. Finally! A solid starting point for testing and building out the disk system. The monitor allows testing many parts of the system and since I have 2716 EPROMs and a burner, and the assembly source of the MOSS 2.2 monitor, at last I had something to work with. I celebrated and went to bed with much satisfaction.

At my next work session with the system, I decided to do some more testing. I turned the computer on and “BANG!!!” sparks, smoke, and burning parts. One or more Tantalum filter capacitors on the CPU board had given up and released the magic smoke. I turned off all power and looked for burning embers. I was crushed that my working system had died so soon. Also, even with all my vintage computer work, this was the first time capacitors had exploded in my systems.

I had a spare untested CCS 2810 CPU, so I loaded a UART and EPROM copy, checked the jumpers and plugged it in the test system. This time when I turned on the power, “BANG!!!  BANG!!!” sparks, smoke, and more burning parts. The same Tantalum filter capacitors on the CPU board had given up again – this time two of them on first power up. It seems that 40 year old parts do fail sometimes.

I turned everything off and went to my day computer to order new parts from Digikey – Z80’s, dc regulators, and new Tantalum capacitors with higher voltage ratings for longer life. (The yellow ones in the bag are the new ones).

The death toll was 12 Tantalums replaced, a 7805 regulator, and two dead vintage Z80 CPUs. After all the work the first board returned to life, but the untested board still had issues, so it will need extended testing. With a working board available, I can A-B test signals and hopefully get the dead board working quickly.

Dead CCS 2810  Z80 CPU card

Finally, I added the CCS 2822 Floppy Disk Controller card (shown in the chassis above between CPU and Memory). It also has a version of the MOSS 2.2 monitor modified for accessing the Disk controller I/O routines. It uses Phantom to disable the CPU EPROM and overlay the same address space. So it is possible to do a simple board test of the controller by accessing the monitor and issuing a “Boot” disk command. If it hangs (with no drives installed) it is running on the EPROM of the disk controller. If it errors out it is running on the CPU EPROM. I got the error with the controller not installed and after I plugged in the controller I got the “hang”, and if I don’t use the “Boot” command the monitor runs normally on the controller card. So the basic controller seems to work accessing the bus.


I need a bootable CP/M disk with the CCS BIOS for this hardware – I must either make one from an archive image file or find someone who can write a copy disk from their system. Or worst case bootstrap one from an unmodified CP/M using the controller code from other sources and creating a disk api EPROM.

Luckily, once again I met a wonderful Canadian hobbyist from Toronto who offered to make me a CCS boot disk from his system (and a spare Morrow Disk Jockey 2D/B  boot disk as well). This is the third time a Canadian computer hobbyist has helped me on these projects with hard-to-find software. I am just waiting for it to arrive in the mail.

Hopefully in my next post I will have a working CP/M S-100 system running.