One of my greatest learning experiences began in 1975 when I started designing and building a microcomputer. At the time a few computer kits were available but I wanted to understand all aspects of design and construction. Over the next six years I built and extended the hardware, and developed the software necessary to run it. In 1981 the IBM Personal Computer was announced. I ordered one on the first day of availability and my homebuilt computer was never turned on again.
This learning experience was incredible and gave me insights that were helpful throughout my career. I experienced first-hand the tremendously powerful paradigm of building with components - something the electronics industry learned in the 70's and the software industry is yet to experience successfully.
Here are a few photos of the computer itself and some of the manuals I created. I could not assemble the entire computer as the television monitor is buried somewhere in the garage, and the keyboard and other bits are boxed away in the attic. The best I could do is one old photo.
Initially I had only one card – the CPU card with some read-only memory and very little RAM. My I/O was a Model 15 Teletype with a serial interface.
Over the years I added additional EPROM, RAM cards, serial and parallel interfaces, cassette tape I/O, and a CRT display adapter.
I was in the process of designing a disk adapter when the IBM PC arrived.
I wanted a full front panel so I could monitor and control everything just like on the IBM S/360 mainframe computers. I displayed the address, I/O, and data buses, and all CPU status and operational signals, as well as each power supply.
Controls included instruction step, clock step, and address compare stop. I could also enable/disable the interrupt timer and the EPROM programmer.
These controls were absolutely essential for debugging hardware and software, especially the clock step mode. In clock step mode I could see each of the CPU control lines go up and down as the CPU decoded the current instruction.
The underside of the chassis consisted of power supplies on the left and the “motherboard” on the right. The power supplies were +5v, -5v, +12v, and -12v.
The “motherboard” is 2/3 of a backplane board from an IBM S/360 Model 40 mainframe. I used a skill saw to cut 1/3 off and then insured that the none of the internal voltage supply planes were shorted.
The main power transformer is from a copier I found in a junk yard. It seemed heavy enough and contributes most of the weight of the computer, which is quite heavy.
Just above the main power transformer is where the 25A bridge rectifier goes for the +5v supply. The rectifier had blown and I had not installed a new one when my IBM PC arrived.
The “bus” consists of wire-wrap interconnections between the card slots on the motherboard.
The S-100 bus became popular after I started building this one but I never felt the need to convert.
On the topside of the chassis is main power on the left and the motherboard on the right. The +5v power supply took much of the space between the transformer, filter capacitor, and pass transistors on their heatsink.
A fan on the back behind the motherboard pulled air through from holes on the left side of the cabinet so air flow was over the power supply heat-sink then the logic cards.
A speaker allowed me to sound beeps and also to play computer generated music – one of my first applications.
The cards were IBM prototyping cards salvaged from the trash can. One had an internal short between voltage planes that took me quite a while to find and repair.
This is the CPU card. The CPU is a Signetics 2650. I chose the 2650 for two reasons: 1) it has a very straight-forward and easy to work with architecture. It supports several addressing modes and each mode is available on almost every instruction. It was very easy to remember and program in machine language. 2) the Signetics sales rep lived down the road and I thought he would be a good supply of sample parts – but that never worked out.
The crystal oscillator is just to the left of the CPU chip. The CPU ran at 1 MHz.
The EPROMs are on the right. I initially used 5204 chips, which were 512K bytes each as I recall. I switched to 2708 chips which were 1K bytes and easier to program and erase. The 5204 was erased using ultra-violet light. Each chip had a small glass window which was kept covered with black tape when not being erased. I used a low-wattage ultra-violet lamp from a Sears clothes dryer. It would take about 10-20 minutes of UV exposure to erase a 5204 chip reliably. The 2708 could be erased electronically so it was much more convenient.
This is the 4K RAM card. Lots of wasted space!
The 8K RAM card using 2102 and 21L02 (low power) non-volatile RAM chips. Each chip is 1024 x 1 bit – 8 chips provide 1K bytes.
This was the 2nd RAM card I built. The 4K RAM card was built first. I decided there was too much wasted space on the 4K card so I packed in the chips on this one.
This is the wiring side of the 8K RAM card. All wiring was done using the wire-wrap technique – wrapping multiple turns of wire stripped at each end around a post.
This is the I/O card. The primary circuit is based around a UART (universal asynchronous receiver transmitter) used for tape I/O. There were many additional control, front panel, and I/O circuits on this card.
This is the CRT display card. It provides 24 lines by 64 columns of character display. The main chip is a character generator – MCM6571. The switch on the top allowed me to select either black characters on a white background or white characters on a black background.
This is the only circuit I did not design – it was copied from a BYTE magazine article, but I was constantly modifying it to get better results, remove “snow” generated while the processor was writing to the data bus, etc.
One of my first Applications – a program to play single-tone music on the built-in speaker.
The resulting pitch value table covering 4 octaves.
“Waltzing Matilda” coded in duration/pitch pairs.