Introduction
The PDP-8 family of computers were first introduced in 1965 by Digital Equipment Corporation and were finally retired in 1990. The basic system originally sold for around $18,500. The total number of machines sold between all of the PDP-8 family of computers is estimated to be around 300,000 C. Gordon Bell was responsible for the initial design. The machines are interesting for using 12 bit words and an extremely small instruction set.
The PDP-8 Family
When most people talk about a PDP-8 machine, they're not talking about the original PDP-8. When people are talking about the original PDP-8, they usually refer to it as the classic PDP-8 or the straight-8. Only about 1500 classic PDP-8s were sold between 1965 and 1969. Aside from the original, there was the LINC-8 (1966-1969), the PDP-8/S (1966-1970), the PDP-8/I (1968-1971), the PDP-8/L (1968-1971), the PDP-12 (1969-1973), the PDP-8/E (1970-1978), the PDP-8/F (1972-1978), the PDP-8/M (1972-1978) and the PDP-8/A (1975-1984). On top of those, there was also the PDP-8 compatible VT78 (1978-1980), DECmate I (1980-1984), DECmate II (1982-1986), DECmate III (1984-1990) and DECmate III+ (1985-1990). All of these machines are collectively refered to as the PDP-8 family of machines. Some PDP-8 compatible machines were manufactured by companies other than DEC but these are generally not considered part of the PDP-8 family and were never marketed under the name PDP-8 because of DEC's trademark. Early machines used discrete transistors and included extensive documentation on maintenance, which makes them ideal for restoration projects.
Programming Languages
Aside from a variety of assemblers, the PDP-8 had support for many programming languages. Some of the compilers required more memory or add ons like a floating point unit. The languages available included FORTRAN, FOCAL (similar to BASIC), various versions of BASIC, DIBOL (a COBOL competitor), PASCAL, POLY SNOBOL (a version of SNOBOL) and LISP.
Software
There's a variety of software floating around for the PDP-8 family. Among them are such noteworthy programs as Spacewar (which requires an oscilloscope display), EDIT, TECO, Kermit and various operating systems such as OS/8, OS8, PS/8, TTS/8, etc. There is also software available to play music through an AM radio using electro-magnetic interference (including "Flight of the Bumblebee" and "Beethoven Symphony No. 5").
Instruction Set Architecture
At the bare minimum, a PDP-8 CPU had three registers: PC, AC and L. PC or Program Counter, was 12 bits. AC or ACcumulator had 12 bits. L or Link was 1 bit.
On the PDP-8, instruction words are 12 bits long. For most of the instructions, the first 3 bits are the opcode, followed by the indirect bit, then the page bit. The last seven bits are the address. This is illustrated in the table below1.
_ _ _ _ _ _ _ _ _ _ _ _
|_|_|_|_|_|_|_|_|_|_|_|_|
| | | | |
| op |i|z| addr |
op - the opcode.
i - the indirect bit (0 = direct, 1 = indirect).
z - the page bit (0 = page zero, 1 = current page).
addr - the word in page.
The PDP-8 used only 8 basic instructions.
BIT - OP - Name
000 - AND - and operand with AC.
001 - TAD - add operand to (a 13 bit value).
010 - ISZ - increment operand and skip if result is zero.
011 - DCA - deposit AC in memory and clear AC.
100 - JMS - jump to subroutine.
101 - JMP - jump.
110 - IOT - input/output transfer.
111 - OPR - microcoded operations.
The IOT instruction is used for I/O to peripherals. For example, reading in from the keyboard or interacting with a teletype is handled with this instruction. It allows up to 8 different operations on up to 64 different devices. The form of the instruction is as follows1.
_ _ _ _ _ _ _ _ _ _ _ _
|1|1|0|_|_|_|_|_|_|_|_|_|
| | | |
| | device | op |
The OPR instruction handles a variety of other things. For example, clearing the AC or L registers, rotation of AC, incrementing AC, various conditional skips and halt.
End Notes
As fewer and fewer PDP-8s remain in use, they've become more and more rare. For people who are interested in learning about the machines but aren't fortunate enough to have access to one, there are a variety of options for emulating them. I know of an emulator written in C2, another in Modula-33 and yet another in Java4. There are a variety of people ensuring that the PDP-8 family will not die.
1. I took the table from: http://www.faqs.org/faqs/dec-faq/pdp8/section-3.html
2. ftp://ftp.cs.uiowa.edu/pub/jones/pdp8/emulator.txt.Z
3. ftp://ftp.cs.uiowa.edu/pub/jones/pdp8/pdp8e.sgp.tar.gz
4. http://plains.uwyo.edu/~nsample/pdp8/main.htm
Much of this information was distilled from http://www.faqs.org/faqs/dec-faq/pdp8/index.html and http://www.cs.uiowa.edu/~jones/pdp8/ as well as talking to Doug Jones (the author of both sites) about PDP-8s.