Support for the Classics

I'm an avid collector of "classic" 8-bit microprocessors. These are the original personal computers that pre-date the so-called IBM "PC". I have Cromemco systems, Xerox 820-I's, Kaypros, Zenith HZ-100's, a CompuPro, a SD Systems micro that I built from kits, NorthStar, and many others. The majority of these old microprocessors use the Z80 CPU which was sort of a standard back then. Some of these "relics" can be best considered "single board computers", others are based on the S-100 bus. S-100 bus systems started out with CPU, memory, disk controller, and console interface on separate S-100 cards, roughly 6" x 10". As technology progressed, more of these functional units could be placed on a single card. In early S-100 bus systems, it was not unusual to find a Z80 CPU with bus interface on one card, and several memory cards with 64 static memory chips on each. Early static memory was 1k by 1 >bit< per chip, so one of these cards was 8k bytes of memory. That's right, 8k memory on one whole card! 16, 24, or 32k byte systems were fairly common. In those days, a 64k byte ("full boat", a Z80 can only address 64k bytes of memory) system was only for those who could afford to purchase, and run, 8 memory cards. Other than the obvious geometric differences between the S-100 bus and the buses that we see in current "PC"s (i.e. ISA, VESA, PCI, etc.), the other major difference is the S-100 system power supply places unregulated voltages of +8v and +/-16v on the bus. Each card contains its own voltage regulators that produce regulated +5v, and regulated +/-12v (if necessary) from the bus. The power supplies are usually linear rather than the switched mode supplies that are so common today. These linear supplies were usually large and heavy, so S-100 bus systems often earned the name "boat anchor". As you would imagine, they also produced a great deal of heat.

In addition to repairing and maintaining the classics, I have also been designing a faster, more current version of a Z80-based system that could be used to run all of this great old classic Z80-CP/M software. I have two prototypes running now, one uses an 8 MHz clock and the other a 10 MHz clock. Eventually they will have RAMdisk support and perhaps interfaces to the IDE disk and CDROM devices that are so common these days.

I have to admit that I'm tired of "chasing" floppy technology for these old systems only to have it disappear before my eyes. Many of my old systems that are based on 8" drives are almost impossible to keep running because working drives, and diskettes for them, are hard to find. I've converted some to 5.25" drives, others have been such a nightmare to try to convert that I ran out of patience. 5.25" HD drives seemed like a good alternative to 8" for a time, but then the PC industry dumped them, and now drives of that type, and media for them, are getting hard to find. I started to look at 3.5" drives as potential replacements, but now it seems that they are also going the way of the 8" and 5" technology. Everything is now CD and DVD. Even the Zip stuff is archaic (100 and 250 MB both).

Enough! No more struggling to keep older systems working with regular floppies. As with any electro-mechanical device, they are difficult to maintain, and they disappear from the scene way too quickly. Today there are a number of flash memory based devices that offer legacy serial interfaces (RS-232). I've tried one that offers a RS-232 interface to a compact flash module. It seems that it was designed for data logging, and was easy to use. Unfortunately, there is no handshake capability, so timing of the interface software is critical and tricky. Future Technology Devices International, Ltd., makes a similar device that utilizes a USB "thumb drive". Their "vdrive2" has extensive handshaking, but it requires programming for hardware flow control. I found it difficult to use. The device that is the best I've encountered is the uDrive-USD-G1 from 4DSystems. It uses a micro-SD card. There are detailed descriptions of my experience with it elsewhere on this site, along with software that can be used to read from, write to, and display a directory of the flash card.

Who's to say that this wouldn't work as mass storage on older CP/M systems? What CP/M system worth it's salt doesn't have at least one spare RS-232 port that will run at 9,600 baud, or better? There are a number of ways to configure file transfers with the uDrive. The one used in the software posted here has a 32 byte "packet size". It works quite well.

In fact, why not develop a "RAM disk" that could be adapted to these older systems, and use it as primary storage, and then have a flash memory based device as a secondary, high-capacity "disk"? Even if loading files from the flash memory to RAM disk is a little slow, once they are on RAM disk, access would be very fast. Anybody notice that 512k x 8 SRAM is now available in a 34-pin DIP package for about $6.00 ? A RAM disk based on two of these chips could serve as a lightning fast alternative for a floppy. Use a flash memory device as backing store for the RAM disk, and "manage" the CP/M files on the flash chip from your Linux box. I bet it would work!

Toward that end, I've been working on rebuilding a basic Z80 computer with RAM disk instead of a floppy interface. Here is a picture of a working floppy-based prototype that uses a WD-2793 FDC (lower right-center in the photo). Most of the stuff on the right-most two plug boards support the floppy interface. The group of 17 red wires on the far right are the signal side of a standard 34 conductor floppy cable. It is set up to be connected to a pair of 5.25" HD (1.2 MB) drives. For memory, there is one 32k x 8 EPROM and two 32k x 8 SRAMs (upper center in the photo). The EPROM and one SRAM occupy the lower half of the Z80 address space, and a write to a port address bank selects between the two. The red/green LED pair (lower left) indicate the current occupant (EPROM or SRAM) of the lower half of the address space. The CPU is a Zilog Z84C50 (upper left), which is capable of running at up to 10 MHz with on-chip wait state generators to accommodate slower peripherals, if necessary. It comes up running with three wait states, but this can be changed on-the-fly via a write to port 0EEh. The "console" is either a PC running a comm. program (such as minicom), or an RS-232 terminal (Wyse, for example). The advantage of using minicom is that the firmware has a function to download .hex files to Z80 memory. The RS-232 interface on the prototype is implemented with a Z80A SIO/2 (lower center). The basic computer (without the floppy interface) can be built with about 15 readily available components. That count could be reduced quite a bit with programmable logic, but then there's the problem of supporting those custom devices.

I'm going to try to build another prototype without the WD-2793, and replace it with a RAM disk, based on two 512k x 8 SRAM chips. If I can get that to work, I'll then see if I can find a practical way to incorporate a uDrive as an easy way to transport data to and from the system.

A few weeks later:

So, here it is. This is the basic Z80 CPU (same as described above), with a RAM disk. The basic CPU is on the left-most 3 plug boards, and the RAM disk is on the right two. This one uses a Z80H (8 MHz) that doesn't have some of the nice features of the Z84C50. Otherwise, it is nearly identical to the floppy based prototype. For now, the RAM disk is based on two 128x8 static rams (lower right), but 512x8 SRAM is on order and should be here soon. The interface to the SRAM is implemented with three 74LS374 "registers" (there might be a 74HCT374, or two, in there too). A CBIOS has been written that allows CP/M to run with this hardware. Once the capacity of the RAM disk is increased to 1 MB, I plan to get a "vdrive2" to see if that can be used as a practical way to provide access to a conventional "thumb drive".

The CPU has now been upgraded to a Z84C0010PEG (available from Mouser Electronics), and the project is running at 10 MHz. Also, two 512k x 8 SRAMs were substituted for the smaller memory chips in the RAM disk. It all works, and a custom version of 64k CP/M 2.2 is lightning fast! I'm able to download .hex versions of CP/M applications right now, but I'm working on more direct download from flash devices. Stay tuned.

May 1,2008: The good news is that I built an IDE interface (see designed by Phil Ruston (thanks Phil!). It works great, and that in combination with a 1MB RAMdisk makes for an excellent and responsive system. This is the CBIOS that I'm using. And, this is my modification of the directory utility "D" so that it will work as advertised with large disks (I also translated the 8080 mnemonics to Z80).

Nov. 2008: With a great deal of help from James Moxham, the prototype design was captured as a 2 PCB layout. It works now (there were some errors that had to be fixed). This is the CPU board, and this is both boards in an old floppy enclosure (for a power supply). Then, I mounted the prototyped system, along with an IDE hard drive and dual D cell batteries (for battery back-up of the RAMdisk) in the floppy drive bay of an old Kaypro II. There are still some issues to be worked out, including slow scroll of the Kaypro II (dropped characters), and power supply that may be too small for the "R-Pro". Anybody know how to fix the Boschert switchers that were in early Kaypros? Anyway, this seems to work fine (the Kaypro part just serves as a terminal for my Z80). I am not using the floppy interface of the old Kaypro at all. Here are a couple of pictures: one and two.

Finally! Here is a true single board computer with IDE interface and a battery backed 1 MB RAMdisk. It has a socket for insertion of a uDrive ( for file transfer. The uDrive uses micro SD cards that can be up to 2 GB. in capacity. The Z80 CPU runs at 10 MHz. System memory is two 32k x 8 SRAMs with a 27C256 shadowing the lower 32k. It contains a monitor plus a CP/M image (including ZCPR), along with a few critical applications that can be loaded into the RAMdisk very easily. The entire package is very responsive, and easy to use. The IDE interface is based on the Phil Ruston design (see link above). I am currently using an IDE adapter with a compact flash module which contains two CP/M partitions, B: and C:. The RAMdisk is A:.

Here are schematics for the basic system, as described above, with an additional WD2793 floppy interface. Caution!!! I have not had a chance to fabricate this board yet. I've posted the board that I've built and tested extensively along with these schematics. It was hand routed. The SBC with the floppy interface was machine routed.

This is the hand routed fully tested board (basically corresponds to schematic sheets#1-4 below):

Click on any of the images to see a larger view.

These schematics are for the board shown (machine routed), but it has NOT yet been fabricated and tested.

This design has now been fabricated. See it here and here. The basic computer is the same as the previous prototype, i.e. 10 MHz Z80 with 64k SRAM memory with the lower 32k shadowed by a 27C256 EPROM. It also has a 1MB RAMdisk, an IDE interface, and provision for the 4D Systems uDrive. It works great. I have not built up the floppy interface yet, so that hasn't been tested. Also, there is an expansion header (2x20) that brings out the buffered address and data buses, as well as critical Z80 signals for those who might want to experiment with hardware add-ons. There was one problem with the machine routed layout (trace clearance) that has been patched with a jumper.

I'd love to hear comments or suggestions. Fire away!

Back to home page.