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.

Hidden Control Panel ModeBooting 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 IM6100­based 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 WorksThe 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 ConsoleWorking 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 DiagramA 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 DiagramThe 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.

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:

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.

Power SupplyIt 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.

Disk DriveI 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 PinAlas, 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 AdapterIt 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 CableAll 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 CardOf 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 :)

Thanks for the info AND PHOTO regarding the Key Pin for the Syba SD-ADA45006. At first I thought I'd bought the wrong thing (too many pins!) and then I read some sites saying to cut the key pin, but they didn't explain which one to cut! You're a life saver!

Posted by
Steve L.

February 11, 2014 - 07:52 pm

Congratulations Garrett! Kind of you to let us know.

Posted by
Garrett

February 11, 2014 - 06:28 pm

My SBC powered up and POSTed yesterday for the first time. Thanks again for this info, it was definitely a big help!

Posted by
Garrett

February 05, 2014 - 05:10 pm

Great, thanks, Steve! I spent way too much time agonizing over that, comparing your stuff (which I've used heavily, by the way) and Bob's latest documentation. I found photos of a few boards on the web, of course, and it seemed that there were some one way and some the other.

Posted by
Steve L.

February 04, 2014 - 09:14 am

Hi Garrett, Investigating R6 and R8 closely, I find that they are not swapped in the parts list (PL) developed here. However, there has been some ambiguity in the values for those. Both are non-critical pullup resistors and either value (10K or 4.7K) will work fine for either. At the time our PL was created, the existing second-edition manual parts list had the values reversed from those in the schematic. Since R8 is for the IDE interface, and that standard mentioned a 10K value, we went with that. For R6, we went with 4.7K, because it would provide faster response. So our PL matched the PL in the second edition manual and not the schematic.

In the third edition manual, the values have been swapped, and now match the schematic. Since either set of values will work, we will eventually change our PL to match the order in the third edition manual. A close study of the IDE spec reveals that, in fact, it calls for the pullup resistors to be in the DRIVES and not in the host at all! Lowering R8 to 4.7K to match the third edition manual would be going further in the wrong direction. Nevertheless, it will work fine, as the drivers have plenty of capability to sink the extra current.

The bottom line: The values we have are theoretically better but the previous ambiguity in the documentation has been removed in favor of the opposite order. Since either order is fine, we will eventually change to match the new SBC documentation. Thank you for your question.