The January 1975 issue of Popular Electronics magazine had a breakthrough project on the cover. The Altair 8800 -- World's First Microcomputer Kit to Rival Commercial Models". (Click on the link to read the original article.)
One thing that struck me about microcomputers back then was how big they were. Big impressive boxes (with big impressive marketing claims) seemed to be the norm -- even when the boxes (and marketing claims) were mostly full of hot air. Conventional wisdom says that they had to be big, due to the limitations of the technology at the time.
But, is that really true? We had pocket calculators before the Altair. They are all microcomputers, too. The HP-35 scientific calculator came out 3 years before the Altair, and had considerably more computing power at a lower price. And... it fit in your shirt pocket!
So I got to wondering... Could we have built an 8080 microcomputer, like the famous Altair 8800, but in a pocket-sized package? No modern parts; no PICs or Atmels or other modern micro "wizard behind the curtain" to make it work. It's got to be built with vintage parts and through-hole technology; just as it would have been back then. It must be user programmable; not simply running a fixed program like the HP-35. And, it's got to have a real front panel, like the Altair with its classic switches and blinkie-lights! I set out to try.
I had previously built a reproduction of the August 1976 Popular Electronics "COSMAC Elf microcomputer" in an Altoids tin. I called it the 1802 Membership Card. It used the RCA 1802 microprocessor, which is a natural for battery operation. That project turned out very well. I made it available in kit form, and hundreds have been sold (click the link for details).
But the 8080 proved to be a much harder "nut" to crack. It isn't quite a complete CPU by itself; it needed a few support chips to finish the job. It also needed three supply voltages; +5v, +12v, and -5v. That made it tough to power it from a single-voltage power supply or battery.
I couldn't find a way to pack it all in without "cheating" (using modern parts or construction technology). So I backed off, and designed a version of the Membership Card around the Z80 instead. The Z80 is a derivitive of the 8080 (runs the same software) and is much simpler to use hardware-wise. It was successful, so the Z80 Membership Card is also available (click link for details).
But I kept thinking and "schematicizing". I couldn't fit the 8080, its support circuitry, memory, and I/O onto one Altoid-sized board (like my 1802 and Z80 versions). It was Josh Bensadon that provided the "aha!" idea. He said, "You'll need a second Front Panel board anyway. So put the CPU on the front panel, so everyone can see that it's a real 8080. It can be the 'CPU board' as well as the 'Front Panel board'. Put the memory and I/O on the second board."
That worked! The "CPU board" has the 8080, its support chips, and a switchmode power supply to provide the 3 voltages needed. That left room to include the "Front Panel" switches and lights. Borrowing from the Heathkit H8 (another classic 8080 microcomputer from the 1970's), I used software to drive the Front Panel for improved functionality and to save parts. I managed to lay it out, and get it built.
The second board has the memory and I/O. The bus interface between the two is the same as the Z80 Membership Card. Like the old Altair S-100 bus, cards can be interchanged between them, and new cards can be designed that will work with both.
This card has the rest of the circuitry needed to make a complete working computer like the original Altair 8800. At the time the photo was taken, a few parts still hadn't been installed.
Here is a description of the software as it exists today (version 0.5). On power-up, the Monitor program runs, and responds to the Front Panel switches, and commands on the serial input. Front panel operation:
Keys: 8 DATA keys - Press to toggle the respective bit in Data, Addr.HI, or Addr.LO. 1 RESET key - Press and hold 2 seconds to reset the 8080. 1 MODE key - Steps the display between Data, High Address, and Low Address. LEDs flash for the group selected. 1 NEXT key - Increments the address to the next location. Press D7 and NEXT to decrement address to previous location. Hold down NEXT to auto-repeat. 1 RUN key - Turns on RUN LED and jumps to (executes) program at the current address. LEDs: 16 - Address LEDs 8 - Data LEDs 4 - Mode LEDs (User, Monitor, Disk read, Disk write)
The serial monitor starts up at 38.4K baud. To select a different baud rate, hold D4 for 9600, D5 for 19.2K, D6 for 38.4K, or D7 for 38.4K (the default), and press the RESET key. Commands are:
MENU> The monitor's prompt, when it is waiting for your input. B - set BAUD rate. 1=9600, 2=19.2K, 3=38.4K, 4=38.4K may be faster but miss characters. C - go to CP/M. D xxxx yyyy - Dump memory from address xxxx to address yyyy. E xxxx - Edit memory starting at address xxxx. Press ESC key to exit, or ENTER key to continue. xxxx : yy address xxxx and its contents yy. Press ENTER for next, xxxx : yy zz zz or a new value zz, then ENTER to change it. The value is read and displayed again to confirm the write. F - Format RAM disk K - Checksum RAM disk M - RAM/ROM Select G xxxx - Go (Execute) program at address xxxx O xx yy - Output yy to port xx I xx - Input from port xx R xxxx - Read Sector xxxx (from 0-0DFF is RAM, 0E00-0E4F is ROM) W xxxx - Write Sector xxxx (same range) X R or S - XMODEM R=receive, S=send T - Toggle timer on/off L - Toggle Front Panel on/off V - View address and its contents on Front Panel
With a 32k ROM and 512K RAM, the Altaid 8800 runs the CP/M operating system with a 61K TPA and 448K RAM-disk with battery backup. Two standard CP/M transient programs, PIP.COM and XM.COM (XMODEM) are pre-loaded. XMODEM can be used to load or save files or entire disk images from a host computer.
The current CPU card is rev.C, and the current MIO card is rev.B. Here are the changes to update the previous cards, for developers who have the earlier revisions.
CPU card rev.A: 1. These changes reduce the negative supply from -6.2v to -5v. - replace D02 (1N4148) with 1N5241 (an 11v zener). - replace C7 (was 0.1uF) with 0.01uF. - replace C3 (was 4.7uF) with 0.1uF. 2. These changes add an OR gate to force /MREQ=1 when SYNC=1. - bend out U4 pins 10-11-12-13 to not go to holes on the PCB. - bend out U5 pins 5-6 to not go to the holes on the PCB. - connect U4 pin 10 to U4 pin 11 - connect U4 pin 12 to SYNC (8080 pin 19) - connect U4 pin 13 to U5 pin 5 - connect U5 pin 6 to /MREQ (header P1 pin 15) The current CPU rev.C card has all these changes in place. MIO card rev.A: 1. This change prevents a disconnected or "floating" serial input from generating spurious interrupts. - add diode D6 1N4148, cathode to GND, anode to the junction of C3, R5, and D1. - a "work-around" is to just tie the RX serial input high when you don't have a serial terminal connected. 2. Change the memory mapping jumpers at W7-W8-W9-W10 to match that shown on the MIO rev.B schematic. They configure memory as required for the current EPROM and CP/M. 3. Change capacitor C10 from 0.56uF to 0.22uF. This raises the multiplexing frequency for the LEDs to eliminate flicker. 4. Change R1 from 1.8K to 2.7K. This lowers the RAM write-protect voltage to about 4v (to retain RAM data when power is removed). These changes are all in place on the current MIO rev.B card.
The Altaid 8800 uses RST7 for its hardware interrupts (serial, switches, LEDs, and timer). But CP/M's DDT debugger also uses RST7 for its breakpoint marker. You can't use the same interrupt for both! CP/M's creator provided a patch for DDT (Application Note #07) to use RST6 instead. This is DDT6.COM, which is on the downloadable Altaid 8800 disk image.
This is still a "work in progress"; but should give you an idea of where we're at. If you look at the Z80 Membership Card, you'll also see where we're going! Feel free to contact us with comments, critiques, or complaints.
By Lee A. Hart. Last update 4/18/2020.
Go to TOP ........ Go to HOME ........ Questions? Comments? Email me for details.
Web hosting provided by Innovative Computers.