Want to experience a taste of what it was like to do personal computing in 1970? How about stepping into a time machine to return to an era when you could understand how the operating system worked? Well, here ya go...
For over ten years now, Bob Armstrong of Spare Time Gizmos has been providing a great kit for hobbyists and educators, which recreates something akin to the DEC PDP-8/e minicomputer. The kit only becomes available from time-to-time, when a new batch is created. I was fortunate to get in on the most recent run of thirty, which closed on Kickstarter, in February 2013. This article will relate tips and techniques I found during the construction, to help others following this path or who are otherwise interested in this fascinating project.
The system is structured as two partial kits: the SBC6120 computer and the FP6120 front panel subsystem. [hereafter “SBC” and “FP”] These kits include the most difficult to obtain parts, such as the Harris HD1-6120 CPU chip, silk screened front panel and programmed devices. It’s up to the builder to source the 73 or so remaining part types and to provide an enclosure. (That count includes hardware and compact flash mass storage support but nothing for the enclosure.) More on procuring parts in a moment.
I should also mention that there were a couple of other options for the system: There was a RAM disk daughter board and an IOB6120 kit, which were once available. Today, the RAM disk doesn’t seem needed, with the speed of the compact flash IDE “disk.” The IOB kit could be useful to some and is described in detail here. It’s developer, Jim Kearney, no longer supplies kits, parts or assembled units. However, some people on the Yahoo SpareTimeGizmos group might be building these boards from time to time. This article will address only the SBC and FP units.
Overview of the SBC6120/FP6120 system
With the bottom of the computer opened at right, you can see the large FP board mounted on the acrylic faceplate. The SBC board, mounted on the back of the FP board, is partially hidden by the IDE and serial cables connected to it. The power connector and switch on the back panel go to the power connector on the FP.
Single Board Computer
Key features of the SBC6120 board (below right) include:
- PDP-8/e compatible, 5-MHz CPU (12-bit instructions), based-on the Harris HD1-6120 chip
- 64K x 12-bit RAM, 8K x 12-bit monitor PROM
- IDE Disk interface, compatible with OS/8
- Serial Port, compatible with PDP-8/e software
- 50-pin expansion bus
Hidden Control Panel Mode
Booting up programs on the SBC is made much easier by the provision of an EPROM monitor program, which is named BTS6120. By the way, “BTS” comes from the term, “bootstrap,” as it started life in 1983 as a bootstrap program for a planned IM6100based system. With DEC PDP-8 computers, the classic way to get going is to key-in instructions bit-by-bit, to create a loader program. An important feature of the SBC system is the fact that the operation of the monitor program is normally hidden from ordinary PDP-8 programs. This is accomplished by the CPU chip’s control panel mode and Armstrong’s programmed logic hardware. Control panel mode is entered when a HLT instruction is executed, a RESET occurs or the CPREQ line is activated by the FP hardware. It can also be invoked by two special instructions, used to call ROM functions and set breakpoints. A separate 32K RAM and EPROM address space is enabled when the monitor is running. When a normal PDP-8 program is running, it has its own 32K RAM, unobstructed by the monitor code.
How OS/8 Compatible Disk Access Works
The system is nimble enough, so that calls to ROM functions from normal address space execute efficiently. This allows the ROM code to supplement the disk handlers which Armstrong has provided for OS/8. Those are needed because it would be difficult to make the IDE interface hardware appear to be real DEC disk interface hardware. Notoriously, OS/8 only allows device handlers to be 128 to 256-words long. That would make even software emulation difficult if it weren’t for the fact that ROM functions can be invoked, which have access to their own, separate memory. The result is that the IDE disk connected to the SBC looks to OS/8, much like an original DEC disk. The only difference is that whereas you might have referred to a disk as RKA1: on a DEC system, it could be IDA1: on the SBC.
OS/8 Compatible Serial Console
Working with the standard CPU input-output-transfer (hereafter “IOT”) support, the SBC control logic implements a serial interface which is directly compatible with traditional PDP-8 software. That includes the eight console IOT instructions, such as KSF (skip if the console receive flag is set), for example. As an extension, special instructions are provided to allow the console device codes to be changed to their secondary values. Also, at startup, the BTS6120 software automatically detects whether an external console device is present and configures the SBC6120 onboard serial port accordingly. That allows the IOB6120 option to substitute its VT52 terminal emulator for the console.
SBC6120 Block Diagram
A block diagram of the SBC6120 is shown at right. The CPU multiplexes address and data on the Data Bus. Address is latched externally. Memory logic handles control panel and user modes, dividing usage of the 64K RAM between them and enabling the EPROM as appropriate.
A 50-pin expansion bus includes the data, address and EMA buses, along with logic signals and power. Physically, the female expansion header connector is on the top of the SBC board, to support daughter boards, such as the RAM disk, mentioned above. When the SBC is mounted on the FP board, this means that the SBC component side must face the solder side of the FP. Also, the FP must have relatively long pins to reach the SBC connector.
The IDE Port is implemented with a standard parallel interface chip, which provides three, 8-bit ports. For this application, four bits of the processor’s 12-bit word are unused. As described above, a custom OS/8 handler, working in concert with ROM function calls, makes the IDE disk look like a standard DEC disk to the operating system. Of course, the space on modern disks far exceeds the maximum 1M x 12-bit (hereafter “1Mwd” for “one mega-word”) device size supported by OS/8. (Hey, who could ever need that much space, anyway? :) Accordingly, the BTS6120 ROM software provides for partitioning the IDE drive into 1Mwd logical drives.
Front Panel Subsystem
The SBC is a complete, self-contained computer and does not require the FP6120 front panel subsystem (shown at right) to operate. With the FP however, you get almost all of the functionality, fun and excitement that made the PDP-8 such a lovable computer. The FP lets you toggle-in programs and step through them, examine and change memory locations, display registers and flags, as well as start and halt execution, just like the PDP-8/e. It also provides a special Boot key, which reboots the operating system, when pressed twice. Please note that I did not install the power switch or the panel lock switch but you can see their silkscreen outlines on the bottom edge of the board. They would face downward and require holes in the bottom of the case, to be accessible.
FP6120 Block Diagram
The block diagram of the FP is shown below right. The big story is that the hardware of the FP does not do the main work which gives the user interface functionality. Rather, it serves as an interface to the lights and switches, so that the monitor software can provide the functions. So in a sense, it’s really a virtual front panel, as opposed to the hardware front panel in the actual PDP-8/e.
For example, when a user program is being executed and encounters a HLT (halt) instruction, the CPU chip switches to control panel mode and begins executing the monitor program. That software saves the CPU registers and displays them on the FP. If you then press the CONTinue key on the FP, the monitor senses that, restores the contents of the CPU registers and execute the user program in user mode, where it left off. To all outward appearances though, it operates like the PDP-8/e front panel (except for a few changes which are declared in the manual).
Links to Documentation
Make sure you are using the Third Edition of the SBC6120 User’s Manual. The link has been updated recently.
SBC6120 / FP6120 Website
SBC6120 PCB Front
SBC6120 PCB Back
FP6120 PCB Front
FP6120 PCB Back
Procuring the Parts
Updated Parts Lists
After receiving the partial kit, I have spent quite a bit of time developing an updated and annotated parts list, which should be useful to other builders. Some of the efforts included:
- Merging the SBC and FP parts lists, where they overlap, maintaining individual part names.
- Graying-out parts provided in the partial kits or which aren’t used.
- Putting the parts list into a spreadsheet, so that it can be easily sorted and edited.
- Beginning descriptions with a noun, allowing sorting by component type.
- Updating and filling-in most part numbers and stock numbers.
- Reducing the number of vendors by one.
- Finding substitutes for obsolete parts.
- Adding parts to cover the compact flash subsystem, power and hardware.
- Checking the parts against the schematic and resolving differences.
- Making some minor improvements: Added sockets for small DIPs. Improved bypassing around the switching regulator. Added hardware. Increased LED current from 5mA to 8mA (still within chip specs).
- Working out details related to being compatible with a case.
- Adding notes documenting changes and making clarifications.
You can download the new parts list here in Excel (2002) and pdf versions. Having it in spreadsheet format lets you sort it the way you want, make changes and add columns for things like prices and checkoffs:
SBC-FP Parts List in Excel format, in original order
SBC-FP Parts List in PDF format, in original order
SBC-FP Parts List in PDF format sorted by Supplier and then Description
SBC-FP Parts List in PDF format sorted by Board (SBC/FP) and then Description
The merchandise total for all four orders came to about $194. Caveats about that include:
- Since then I have revised the parts list somewhat, resolving problems that I had with the ordered parts.
- I had some parts on hand and thus didn’t order them.
- In some places, I bumped-up the quantities of line items. For example, in recognition of Mouser’s hobbyist-friendly no-minimum policy, I keep line items on their orders at $1 or more. I also take advantage of quantity discounts if the item is something good for stocking and the break point is low enough.
- I tend to add one or two extras to significant quantities of small items.
Packaging, Power and Disk Drive
The choice of an enclosure, power supply and IDE disk drive are left to the builder. To complete the parts list, I needed to work these out. My plan was to make a wooden case like the sketch at right. The interior lines are routed slots to hold the front panel and an aluminum rear panel. Rubber feet on the bottom complete the package.
One consideration was that if the power switch on the FP board were used, it would protrude at the bottom of the board. Instead, the plan was to install a panel mount power switch on the back cover. A jumper replaces the power switch on the FP board. There is also provision for a panel lock switch at the bottom of the FP board but I left that out. (No jumper is needed.) Note however, that the parts lists above contain the PCB mount switches for these functions. If you wish to do it like I did, you will need to delete the two PCB switches and add a panel mount switch.
It was easy enough to find an appropriate wall transformer (right) to supply unregulated 12V power to the FP board. Though the SBC also has a power connector, it gets power from the FP via the 50-pin bus connection. (More on using that power connector in a moment.) The board-mount DC connector on the FP board is not in a convenient position for external connection when installed in a case. I installed a panel mount DC connector on the rear panel and wired it to a connector which mates with the FP board. That allows easy removal and testing of the electronics. The FP board connector faces down and has perhaps less than one inch clearance from the case, so I needed to use a right angle DC connector (at left) there.
I will be using a compact flash (CF) card instead of an actual IDE disk drive, primarily so I can easily move the card to a PC to write files, such as the operating system. The idea was that it would be lower power, quieter, hopefully more reliable and smaller. There were complications, though. The IDE connector faces the bottom of the case, with only an inch or so of clearance. My first thought was to use a right-angle type adapter for the CF card and just mount it directly. That didn’t work out, though. So I decided to mount the CF adapter on the FP board, using the holes provided there. Trouble is, the regular CF adapters don’t have standard hole locations and I couldn’t find one which matched the FP holes provided specifically for a CF card adapter. However, there are also holes there to mount a standard 2.5” disk drive. I found a CF adapter which mounts on that form factor and decided to use the Syba SD-ADA45006 shown at right.
Clipping the Key Pin
Alas, there is a small mod that you need to do to the Syba adapter, as shown below. They neglected to clip the keying pin on the IDE connector.
Other adapters and cables have that hole blocked on their female IDE connectors, so they won’t mate with this Syba product, without the mod. Just cut the indicated pin, close to the base, with side-angle cutters. With the drive turned so the screw holes are facing up as shown, it’s the tenth pin from the left in the top row.
44-pin to 40-pin IDE Adapter
It turns out that there are two IDE interfaces: 40-pin (as used on the SBC6120) for 3.5” drives and 44-pin for 2.5” drives. Naturally, the CF adapter having the 2.5” drive form factor has the 44-pin interface. So I found a Kinamax ADP-IDE23 adapter to convert to the 40-pin interface for the SBC (at right). Note that the 40-pin connector is larger than the 44-pin connector. One of the features of the 44-pin version is that it includes a power connection, so on the 40-pin side the adapter offers a pigtail with a drive power connector on it. I decided to plug that into the unused power connector of the SBC board, where it will supply power, instead of receiving it. Trouble is, the SBC connector is male and so is the adapter pigtail. So I swapped the pigtail connector for a female version. That also gave me an opportunity to adjust the length of the DC connection. To me, the easiest source of the connector turns out to be cutting one from a drive power Y-adapter. Alternatively, you could buy a Molex housing, receptacles and crimp the wires.
A note about fitting the 44/40-pin adapter to the Syba CF/IDE adapter: The bottom row of pins on the Syba is very close to the PCB, so the connector that you plug onto it may be blocked by the edge of the PCB. After pushing the connector onto the pins, simply lift up a little to pull the connector and pins away from the PCB and it will slide on easily. By the way, the connector might not seem to be fully seated because you see about 1/16” of the pins still showing. That’s normal because the depth of the 44/40-pin adapter connector is shallower than the length of the pins on the Syba, so it’s okay that some of the pin metal is showing.
40-pin IDE Cable
All that is needed to complete the storage system hardware is a common 40-pin female-female IDE cable to go from the Kinamax adapter to the SBC. A short one would be nice to minimize extraneous cabling. I noticed that round IDE cables come in lengths as short as 10”. However, they seem to protrude pretty far from the point of connection and don’t look as flexible as ribbon cables. I was concerned that it might not work in the physical constraints and took the safe route of specifying a common ribbon cable. The shortest I could find was 18” but that could be neatly folded up.
Choosing a Compact Flash Card
Of course, you need to add a CF card. Virtually any modern CF should be large enough. It doesn’t look like speed is much of an issue either. I plan to use a 256MB Kingston card which has been in my camera bag for ten years. It’s read/write speeds test at 4.6/1.2MB/s. The transfer rate of the RK05 disk drive originally used with the PDP-8/e was just 0.18MB/s. So the old card is plenty fast enough. The only real issue I find with today’s CF cards is reliability. It looks like a horror story, with new-unit failure rates anecdotally reported as perhaps as high as 5-8%, even for some name brands.
For the parts list, I found the Transcend TS1GCF80 CF card, which at $20 for 1GB seems like a spectacularly poor deal. However, its user ratings at Egghead seemed to stand out from the crowd and it was in use in some critical applications. I took that as encouraging and figured that in view of the overall $800 cost of the project, it’s worth an extra $15 to get a better disk drive substitute. My old Kingston card was purchased back in the days when it cost perhaps $80, so that gives me some encouragement that they had the margin and incentive to maintain quality. I see that the Kingston CF/256 does still seem to be available from an Amazon seller, though the last user review was nine years ago :)
The completed CF-IDE subsystem is shown at right.
Links to Suppliers
Now at Part I - Overview, Documentation and Parts
Continue with Part II - PCB Assembly, Software and Testing >>>
Jump to Part III - Building the Enclosure >>>
Jump to Part IV - Final Assembly and Support Software >>>
Copyright © 2013 by Stephen H. Lafferty. All rights reserved.