Click Here – for the SpinRite 6.1 video walkthrough.
DEC PDP-8DEC PDP-8
Digital Equipment Corporation's PDP-8

Celebrating the world's first minicomputer, and
the machine that taught me assembly language.
divider

The 12-bit PDP-8 contained a single 12-bit accumulator (AC),
a 1-bit "Link" (L), and a 12-bit program counter (PC):

Original photo credit: Gerhard Kreuzer

Later models (the /e, /f, /m & /a) added a 12-bit multiplier quotient (MQ) register.

The term “minicomputer” was not coined to mean miniature, it
was originally meant to mean minimal, which is a term that,
more than anything else, accurately describes the PDP-8.

Whereas today's machines group their binary digits (bits) into sets of four in a system called “hexadecimal”, the PDP-8, like most computers of its era, used “octal” notation, grouping its bits into sets of three. This meant that the PDP-8's 12-bit words were written as four octal digits ranging from 0 through 7.

The first 3 bits of the machine's 12-bit word (its first octal digit) is the operation code (OpCode). This equipped the machine with just eight basic instructions:

The six memory reference instructions (MRI):
0xxxANDLogical AND. The content of memory location specified by 'xxx' is combined with the content of the AC using a bitwise logical AND operation. The result is left in the AC.
1xxxTADTwo's Compliment Add. The content of memory location specified by 'xxx' is added to the contents of the AC using two's compliment addition. The result is left in the AC, if the result overflows, the LINK bit is complimented.
2xxxISZ
“Operate”
Increment and Skip if Zero. The content of memory location specified by 'xxx' is incremented by one and restored to memory. If the result of the increment was zero, the program counter (PC) is incremented one extra time to cause the execution of the instruction following the ISZ to be skipped.
3xxxDCADeposit and Clear Accumulator. The content of the accumulator (AC) is stored into the memory location specified by 'xxx' and the AC is cleared to zero.
4xxxJMSJump to Subroutine. The address of the instruction following this one is stored into the memory location specified by 'xxx' and the PC is set to the location following 'xxx'.
5xxxJMPJump. The PC is set to the location specified by 'xxx', causing the machine to execute its next instruction from there.
The multi-purpose input/output instruction:
6xxxInput
Output
“Operate”
These instructions are used for communicating with peripheral devices including the memory extension system which added three higher-order bits to the PDP-8 in a classic “bank-switching” fashion to allow the use of more than 4k words of core.
The multi-purpose “operate” instruction:
7xxx“Operate”Bit manipulation and testing functions, such as compliment, rotate & increment the accumulator, as well as conditional skip instructions, are encoded into the nine remaining 'xxx' bits.
How is 4K of core (which requires 12 bits to address) accessed with just 9 bits?

As you can see from the chart above, given a 12-bit machine with a 3-bit opcode, the six memory reference instructions (MRI) are left with only 9 bits (three octal digits) to use for specifying the effective address of the instruction. But 9 bits can take only 512 possible values, so there's no way to address even the original, smallest 4K words of the PDP-8's core memory. DEC's solution to this was a beautiful, clever, and efficient compromise:

The PDP-8 memory reference compromise:
01234567891011
OpCode 0-5IZOffset

Indirection:
The PDP-8's designers dedicated one of the machine's precious 9 memory reference bits to signify “indirection.” Indirection means that the location being addressed is not the target of the instruction, but rather the referenced location contains the address of the target. In other words, the addressed location contains a “pointer” to the instruction's target. Since PDP-8 words were 12-bits long, a 12-bit pointer could reference any word within the machine's 4K word memory. So even if an instruction could not directly point to the location it might want, it could indirectly point to a 12-bit word that could point to the target. (Therefore, the term “indirection”.)

Pages:
The PDP-8's designers also gave up one more of the machine's precious 9 memory reference bits to signify whether the location referenced by the remaining 7 bits was on the “current page” or on “page zero.”

What's a page? After stealing 1 bit to signify indirection, and another for the current page or page zero, only 7 bits remained, and those 7 bits could only address any of 128 possible locations in memory. So this limitation automatically created the concept of a “page”:

4K words addressed in pages:

01234567891011
Page NumberPage Offset

The address of any location within the 4K word (12-bit) address space where the machine was reading instructions could be thought of as being divided into two parts, a 5-bit page number and a 7-bit page offset. This meant that the machine was always executing instructions from some “current page” as determined by the uppermost 5 bits of current instruction's address. Therefore, if the Page bit in the MRI instruction was set to '1', the lower 7 bits of any memory reference instruction (MRI) would refer to a word within the same page as the instruction itself. And if the MRI instruction's Page bit was set to '0', the instruction's lower 7 bits would always refer to a word in the first page of the machine's memory, page zero.

This simple and economical solution was remarkably efficient. Data that needed to be accessed from anywhere within a program could be placed in the machine's first 128 words (page zero) of memory where any MRI instruction located anywhere could reference it. And data that was only being used locally could be placed somewhere within the same page as the referencing code. And if page zero were to fill-up with highly referenced data, a word in the current page could be used to point to another word anywhere through the use of indirection.

The PDP-8 succeeded like no other computer ever had
because everything about its design reflected
a carefully conceived minimalism.

People fell in love with the machine, and for me at age 16, it was love at first sight. Even today, after nearly 40 years of saturation exposure to computers and computer technology, for me there is something hauntingly right about what DEC had the engineering brilliance to create so many years ago. For that reason more than any other I have wanted to keep them around . . .

Keeping the love alive

I still truly love these machines. There's something fundamentally minimal and perfect about the design of the PDP-8. As you'll see below and on the other pages here, I recently assembled three contemporary PDP-8 kits created by Bob Armstrong. Then I re-learned the delightful PDP-8 assembly language so that I could create some front panel “Toggle Toys” to give these new PDP-8's something fun to do.


Note that even an ancient PDP-8 can do useful work and
be a lot of fun today.  It is not just a curio even in the
21st century. See the page “What a PDP-8 can do today
to get a sense for all the fun you can have with a PDP-8.

I, like many others who are about my age and who have fond memories of their first encounters with classic DEC machines, have become a collector of classic DEC PDP-8 and PDP-11 computers and peripherals. My collection is continually growing. As of the end of 2009, I own several PDP-8/e's, PDP-8/l's, a PDP-8/m and a PDP-8/f as well as several PDP-11/05's and 11/35's along with some VAX-11's, various peripherals and plenty of original manuals and related documentation. While most people aren't lucky enough to own a real PDP-8 (and they are pretty large, noisy and power hungry) Bob's beautiful PDP-8 kits make owning an actual working PDP-8 possible! They are able to run the PDP-8's standard DEC operating system, OS/8 and all of its many languages, programs and utilities.

As an assembly language programmer, the PDP-11 and VAX-11 instruction sets are especially appealing since DEC's engineers deliberately designed those machines to be pleasant to program in assembly language. Unlike today's systems, where the assumption is that very little will be written by humans in the machine's assembly language, back then the machines were programmed in their native assembly language more often than not.

I cannot spare the time to play with them right now. But I want to rescue any machines I find today so that they don't wind up in someone's dumpster. What a tragedy that would be! And I do plan to spend many enjoyable years in the future refurbishing, restoring, and resurrecting them all — if I ever find the time to retire!

A modern recreation of a timeless classic

One morning in late 2008, while I was nostalgically Googling through the Internet's PSP-8 memorabilia, I stumbled upon Bob Armstrong's “SpareTimeGizmos” web site . . . and I was amazed!

Many years before, Bob had created a single board computer, the SBC6120, around a limited supply of Harris Semiconductor HD6120 chips. The HD6120 was a single CMOS chip implementation of the complete PDP-8. It was an entire PDP-8 on a chip! Bob had produced kits, not only to allow hobbyists to build complete working PDP-8 systems around this chip, but he went as far as to create a close copy of the original PDP-8's front panel with its lights and switches!

Bob Armstrong's SBC6120 & Front Panel  (see mine here!)
Bob's Original FP6120

At the time, no more kits were available, so I contacted Bob just to register my interest in the event that he might ever bring the kits back to life. I discovered that he was about to do just that! To make a long story short, I purchased and assembled — and had a lot of fun programming — three of Bob's kits.

The possibility to own a piece of computing history!
NOTICE!  Every previous production run of Bob's unique PDP-8 kit have always
sold out completely (and quickly). At the beginning of February 2010, after
sufficient interest in one last round of PDP-8 kits was confirmed, Bob Armstrong
placed the production orders for what will almost certainly be the last round of
availability there will ever be. Once they have sold-out, they will be gone forever.

If you are interested, there is no time to waste. See the "How YOU can own
your own
" page for all the details. It is strictly first-come-first-served, so you
must immediately jump on board if you are interested!

See the links below to take a quick tour of my fall 2009
PDP-8 kit building and code writing adventure . . .

GRC's PDP-8 Pages:
CLICK HERE to learn how YOU can acquire & build
one of these complete PDP-8 systems for yourself !!!

Jump to top of page
Gibson Research Corporation is owned and operated by Steve Gibson.  The contents
of this page are Copyright (c) 2024 Gibson Research Corporation. SpinRite, ShieldsUP,
NanoProbe, and any other indicated trademarks are registered trademarks of Gibson
Research Corporation, Laguna Hills, CA, USA. GRC's web and customer privacy policy.
Jump to top of page

Last Edit: Jul 10, 2012 at 09:29 (4,533.29 days ago)Viewed 71 times per day