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. Recently, Future Technology Devices International, Ltd., announced a new chip that can serve as an inexpensive interface to USB flash devices, called the "Vinculum". FTDI developed a "Vinculum" based circuit that has an interface to the USB devices popularly called "thumb drives" at one end, and a standard RS-232 interface at the other. Anybody seen this? It is called the "vdrive2". It appears that one can be purchased for under $30. Their firmware supports a basic command set to read and write files from/to the flash device via the RS-232. There is every indication that it might be able to be adapted to serve as a high-capacity replacement for a floppy drive. I'm willing to bet that most of the worthwhile CP/M software that has ever been written would fit on a single 512MB or 1GB thumb drive that can be purchased for not much money these days.

Who's to say that this wouldn't work as mass storage on older CP/M systems? I've not tried one out yet, but I'm going to. 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? Is downloading a small file at 9,600 baud faster or slower than reading it from a floppy drive? I'm going to find out.

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 "vdrive2" as a secondary, high-capacity "disk"? Even if loading files from the "vdrive2" to RAM disk should prove to be 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 $13.00 ? A RAM disk based on two of these chips could serve as a lightning fast alternative for a floppy. Use a "vdrive2" as backing store for the RAM disk, and "manage" the CP/M files on the thumb drive 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.

Circuit diagrams of the basic computer will appear here.

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 "vdrive2" as high capacity back-up storage to work with it.

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: There's good news and bad news. The bad news is that I've had zero luck getting the Vinculum "VDrive" to work as a means of adding on-line storage via RS-232. The good news is that I built an IDE interface (see www.retroleum.co.uk) 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.

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

[More pictures and circuit diagrams to follow.]

Back to home page.