809 lines
38 KiB
Plaintext
809 lines
38 KiB
Plaintext
Archive-name: dec-faq/pdp8
|
|
Last-modified: May. 12, 1993
|
|
|
|
Frequently Asked Questions about the DEC PDP-8 computer.
|
|
|
|
By Douglas Jones, jones@cs.uiowa.edu
|
|
(with help from many folks)
|
|
|
|
Contents
|
|
|
|
What is a PDP?
|
|
What is a PDP-8?
|
|
What is the PDP-8 instruction set?
|
|
What does PDP-8 assembly language look like?
|
|
What different PDP-8 models were made?
|
|
What about the LINC-8 and PDP-12?
|
|
Where can I get a PDP-8 today?
|
|
Where can I get PDP-8 documentation?
|
|
What operating systems were written for the PDP-8?
|
|
What programming languages were supported on the PDP-8?
|
|
Where can I get PDP-8 software?
|
|
Where can I get additional information?
|
|
What use is a PDP-8 today?
|
|
Who's Who?
|
|
|
|
|
|
What is a PDP?
|
|
|
|
For over a decade, all programmable digital computers sold by
|
|
Digital Equipment Corporation were sold as Programmed Data
|
|
Processors (PDPs) instead of computers. I have DEC documentation
|
|
that actually calls them "PDPs", so this is not improper usage.
|
|
DEC's first computer, the PDP-1, had a selling price of only
|
|
$120,000 at a time when competing machines were selling for over
|
|
$1,000,000. Everyone (the government and DEC's stockholders
|
|
included) knew that computers were big and expensive and needed
|
|
a computer center and a large staff; DEC chose to avoid dealing
|
|
with these stereotypes by entirely avoiding the term "computer".
|
|
|
|
DEC built a number of different computers under the PDP label, with
|
|
a huge range of price and performance. The largest of these are
|
|
fully worthy of large computer centers with big support staffs.
|
|
Many early DEC computers were not really built by DEC. With the
|
|
PDP-3 and LINC, for example, customers built the machines using DEC
|
|
parts and facilities; the PDP-5 may also have been built on this
|
|
basis. Here is the list of PDP computers:
|
|
|
|
MODEL DATE PRICE BITS COMMENTS
|
|
===== ==== ======== ==== =====
|
|
PDP-1 1960 $120,000 18 DEC's first computer
|
|
PDP-2 NA 24 Never built?
|
|
PDP-3 36 One was built by a customer, not by DEC.
|
|
PDP-4 1962 18 Predecessor of the PDP-7.
|
|
PDP-5 1963 $27,000 12 The ancestor of the PDP-8.
|
|
PDP-6 1964 36 A big computer; 23 built, most for MIT.
|
|
PDP-7 1965 ~$60,000 18 Widely used for real-time control.
|
|
PDP-8 1965 $18,500 12 The smallest and least expensive PDP.
|
|
PDP-9 1966 $35,000 18 An upgrade of the PDP-7.
|
|
PDP-10 1967 36 A PDP-6 successor, great for timesharing.
|
|
PDP-11 1970 $10,800 16 DEC's first and only 16 bit computer.
|
|
PDP-12 1969 $27,900 12 A PDP-8 relative.
|
|
PDP-13 NA Bad luck, there was no such machine.
|
|
PDP-14 A ROM-based programmable controller.
|
|
PDP-15 1970 $16,500 18 A TTL upgrade of the PDP-9.
|
|
PDP-16 1972 NA 8/16 A register-transfer module system.
|
|
|
|
Corrections and additions to this list are welcome! The prices
|
|
given above are the prices for minimal systems in the year the
|
|
machine was first introduced. The bits column indicates the word
|
|
size. It's worth noting that the DEC PDP-10 became the
|
|
DECSYSTEM-20 as a result of marketing considerations, and DEC's
|
|
VAX series of computers began as the Virtual Address eXtension of
|
|
the never-produced PDP-11/78.
|
|
|
|
It is worth mentioning that there are persistant rumors that the
|
|
the Data General Nova was originally developed as the PDP-X, a
|
|
16-bit multi-register version of the PDP-8. A prototype PDP-X
|
|
was apparently built at DEC before the design was rejected.
|
|
This and a competing 16-bit design were apparently submitted to
|
|
Harold McFarland at Carnegie-Mellon University for evaluation;
|
|
McFarland (and possibly also Gordon Bell, who was at C-MU at the
|
|
time) evaluated the competing designs and rejected both in favor
|
|
of the design now known as the PDP-11. (A less common variant on
|
|
this story is that the reason that DEC never produced a PDP-13
|
|
was because this number was assigned to what became the Nova;
|
|
this is unlikely because the PDP-X prototype predated the PDP-11.)
|
|
Both DEC and Data General don't talk publically about these
|
|
stories.
|
|
|
|
Today, all of the PDP machines are in DEC's corporate past, with the
|
|
exception of the PDP-11 family of minicomputers and microprocessors.
|
|
|
|
|
|
What is a PDP-8?
|
|
|
|
The PDP-8 family of minicomputers were built by Digital Equipment
|
|
corporation between 1965 and 1990 (if you include the PDP-5, the
|
|
starting date should be 1963). These machines were characterized
|
|
by a 12 bit word, with no hardware byte structure, a 4K minimum
|
|
memory configuration, and a simple but powerful instruction set.
|
|
By 1970, the PDP-8 was the best selling computer in the world, and
|
|
many models of the PDP-8 set new records as the least expensive
|
|
computer on the market. The PDP-8 has been described as the
|
|
model-T of the computer industry because it was the first computer
|
|
to be mass produced at a cost that just about anyone could afford.
|
|
|
|
C. Gordon Bell (who later was chief architect of the PDP-11 and
|
|
who, as Vice President, oversaw the development of the VAX) says
|
|
that the basic idea of the PDP-8 was not really original with him.
|
|
He gives credit to Seymour Cray (of CDC and later Cray) for the
|
|
idea of a single-accumulator 12 bit minicomputer. Cray's CDC 160
|
|
family, sold starting around 1959, certainly was a very similar 12
|
|
bit architecture, and the peripheral processors of Cray's first
|
|
supercomputer, the CDC 6600, are also familiar to PDP-8
|
|
programmers.
|
|
|
|
Note that the CDC 160 and CDC 6600 peripheral processors had
|
|
6 basic addressing modes, with variable length instruction words
|
|
and other features that were far from the simple elegance of the
|
|
PDP-8. Despite its many modes, the CDC architecture lacked the
|
|
notion of current page addressing, and the result is that for
|
|
examples that don't involve indexing, PDP-8 code is frequently
|
|
just as effective as the code on the more complex CDC 12-bit
|
|
minicomputers.
|
|
|
|
|
|
What is the PDP-8 instruction set?
|
|
|
|
The PDP-8 word size is 12 bits, and the basic memory is 4K
|
|
words. The minimal CPU contained the following registers:
|
|
|
|
PC - the program counter, 12 bits.
|
|
AC - the accumulator, 12 bits.
|
|
L - the link, 1 bit, commonly prefixed to AC as <L,AC>.
|
|
|
|
It is worth noting that many operations such as procedure linkage
|
|
and indexing, which are usually thought of as involving registers,
|
|
are done with memory on the PDP-8 family.
|
|
|
|
Instruction words are organized as follows:
|
|
_ _ _ _ _ _ _ _ _ _ _ _
|
|
|_|_|_|_|_|_|_|_|_|_|_|_|
|
|
| | | | |
|
|
| 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 top 5 bits of the 12 bit program counter give the current page,
|
|
and memory addressing is also complicated by the fact that absolute
|
|
memory locations 8 through 15 are incremented prior to use when
|
|
used for indirect addressing. These locations are called the
|
|
auto-index registers (despite the fact that they are in memory),
|
|
and they allow the formulation of very tightly coded array
|
|
operations.
|
|
|
|
The basic instructions are:
|
|
|
|
000 - AND - and operand with AC.
|
|
001 - TAD - add operand to <L,AC> (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 ISZ and other skip instructions conditionally skip the next
|
|
instruction in sequence. The ISZ is commonly used to increment a
|
|
loop counter and skip if done, and it is also used as an general
|
|
increment instruction, either followed by a no-op or in contexts
|
|
where it is known that the result will never be zero.
|
|
|
|
The subroutine calling sequence involves putting the return
|
|
address in relative word zero of the subroutine, with execution
|
|
starting with relative word one. Return from subroutine is done
|
|
with an indirect jump through the return address. Subroutines
|
|
frequently increment their return addresses to index through
|
|
inline parameter lists or to provide return codes by conditionally
|
|
skipping the next instruction.
|
|
|
|
The IOT instruction has the following form:
|
|
_ _ _ _ _ _ _ _ _ _ _ _
|
|
|1|1|0|_|_|_|_|_|_|t|c|s|
|
|
| | | |
|
|
| | device | op |
|
|
|
|
The IOT instruction specifies one of up to 8 operations on one of
|
|
64 devices. Typically (but not universally), each bit of the op
|
|
field evokes an operation as follows: If the s bit is set, the
|
|
instruction causes a skip if the device is ready, if the c bit is
|
|
set, the device ready status is reset and, for some devices, AC is
|
|
also cleared, and if the t bit is set, data is either ored with AC
|
|
or output from AC to the device. Prior to the PDP-8/E, there were
|
|
severe restrictions on the interpretation of the t, c and s bits.
|
|
|
|
IOT instructions may be used to initiate data break transfers from
|
|
block devices such as disk or tape. The term "data break" was,
|
|
for years, DEC's preferred term for cycle-stealing direct-memory-
|
|
access data transfers.
|
|
|
|
Some CPU functions are accessed only by IOT instructions. For
|
|
example, interrupt enable and disable are IOT instructions, as
|
|
are instructions controlling the optional memory management
|
|
unit that is needed to address more than 4K words.
|
|
|
|
A wide variety of operations are available through the OPR
|
|
microcoded instructions:
|
|
_ _ _ _ _ _ _ _ _ _ _ _
|
|
Group 1 |1|1|1|0|_|_|_|_|_|_|_|_|
|
|
1 - CLA - clear AC
|
|
1 - CLL - clear the L bit
|
|
1 - CMA - ones complement AC
|
|
1 - CML - complement L bit
|
|
1 - IAC - increment <L,AC>
|
|
1 0 0 - RAR - rotate <L,AC> right
|
|
0 1 0 - RAL - rotate <L,AC> left
|
|
1 0 1 - RTR - rotate <L,AC> right twice
|
|
0 1 1 - RTL - rotate <L,AC> left twice
|
|
|
|
In general, the above operations can be combined by oring the
|
|
bit patterns for the desired operations into a single instruction.
|
|
If none of the bits are set, the result is the NOP instruction.
|
|
When these operations are combined, they operate top to bottom
|
|
in the order shown above. The exception to this is that IAC cannot
|
|
be combined with the rotate operations on some models, and attempts
|
|
to combine rotate operations have different effects from one model
|
|
to another (for example, on the PDP-8/E, the rotate code 001 means
|
|
swap 6 bit bytes in the accumulator, while previous models took
|
|
this to mean something like "shift neither left nor right 2 bits").
|
|
_ _ _ _ _ _ _ _ _ _ _ _
|
|
Group 2 |1|1|1|1|_|_|_|_|_|_|_|0|
|
|
1 0 - SMA - skip on AC < 0 \
|
|
1 0 - SZA - skip on AC = 0 > or
|
|
1 0 - SNL - skip on L /= 0 /
|
|
0 0 0 1 - SKP - skip unconditionally
|
|
1 1 - SPA - skip on AC >= 0 \
|
|
1 1 - SNA - skip on AC /= 0 > and
|
|
1 1 - SZL - skip on L = 0 /
|
|
1 - CLA - clear AC
|
|
1 - OSR - or switches with AC
|
|
1 - HLT - halt
|
|
|
|
The above operations may be combined by oring them together,
|
|
except that there are two distinct incompatible groups of skip
|
|
instructions. When combined, SMA, SZA and SNL, skip if one or the
|
|
other of the indicated conditions are true, while SPA, SNA and SZL
|
|
skip if all of the indicated conditions are true (logical and).
|
|
When combined, these operate top to bottom in the order shown;
|
|
thus, the accumulator may be tested and then cleared. Setting
|
|
the halt bit in a skip instruction is a crude but useful way to
|
|
set a breakpoint for front-panel debugging. If none of the bits
|
|
are set, the result is an alternative form of no-op.
|
|
|
|
A third group of operate microinstructions (with a 1 in the least
|
|
significant bit) deals with the optional extended arithmetic
|
|
element to allow such things as hardware multiply and divide, 24
|
|
bit shift operations, and normalize. These operations involve
|
|
an additional data register, MQ or multiplier quotient, and a small
|
|
step count register. On the PDP-8/E and successors, MQ and the
|
|
instructions for loading and storing it were always present, even
|
|
when the EAE was absent, and the EAE was extended to provide a
|
|
useful variety of 24 bit arithmetic operations.
|
|
|
|
|
|
What does PDP-8 assembly language look like?
|
|
|
|
Here is an example:
|
|
|
|
START, CLA CLL / Clear everything
|
|
TAD X / Load X
|
|
AND I Y / And with the value pointed to by Y
|
|
DCA X / Store in X
|
|
HLT / Halt
|
|
|
|
X, 1 / A variable
|
|
Y, 7 / A pointer
|
|
|
|
Note that labels are terminated by a comma, and comments are
|
|
separated from the code by a slash. There are no fixed fields
|
|
or column restrictions. The "CLA CLL" instruction on the first
|
|
line is an example of the microcoding of two of the Group 1
|
|
operate instructions. CLA alone has the code 7200 (octal),
|
|
while CLL has the code 7100; combining these as "CLA CLL" produces
|
|
7300, the instruction to clear both AC and the link bit. As a
|
|
general rule, except when memory reference instructions are
|
|
involved, the assembler simply ors together the values of all
|
|
blank separated fields between the label and comment.
|
|
|
|
Indirection is indicated by the special symbol I in the operand
|
|
field, as in the third line of the example. The typical PDP-8
|
|
assembler has no explicit notation to distinguish between page zero
|
|
and current page addresses. Instead, the assembler is expected to
|
|
note the page holding the operand and automatically generate the
|
|
appropriate mode. If the operand is neither in the current page
|
|
nor page zero, some assemblers will raise an error, others will
|
|
automatically generate an indirect pointer to the off-page operand
|
|
(This feature should be avoided!).
|
|
|
|
Note, in the final two lines of the example, that there is no
|
|
"define constant" pseudo-operation. Instead, where a constant
|
|
is to be assembled into memory, the constant takes the place of
|
|
the op-code field.
|
|
|
|
The PDP-8 has no immediate addressing mode, but some assemblers
|
|
provide an optional mechanism to allow the programmer to ignore
|
|
this lack:
|
|
|
|
TAD (3) / add 3, from memory on the current page.
|
|
TAD [5] / add 5, from memory on page zero.
|
|
JMP I (LAB) / jump indirect through the address of LAB.
|
|
|
|
Assemblers that support this automatically fill the end of each page
|
|
with constants defined in this way that have been accumulated during
|
|
the assembly of that page.
|
|
|
|
Arithmetic is allowed in operand fields and constant definitions,
|
|
but expressions are evaluated in strict left-to-right order, as
|
|
shown below:
|
|
|
|
TAD X+1 / add the contents of the location after X.
|
|
TAD (X-1) / add the address of the location before X.
|
|
|
|
Other operators allowed included and (&), or (!), multiply (^) and
|
|
divide (%), as well as a unary sign (+ or -). Unfortunately, one
|
|
of the most widely used assemblers, PAL 8, has trouble when unary
|
|
operators are mixed with multiplication or division.
|
|
|
|
Generally, identifiers are not limited in length, but only the
|
|
first 6 characters are significant. All numeric constants are
|
|
in octal, unless a DECIMAL pseudo-op has been used to change number
|
|
base (change back with the OCTAL pseudo-op).
|
|
|
|
Other assembly language features are illustrated below:
|
|
|
|
/ Comments may stand on lines by themselves
|
|
/ Blank lines are allowed
|
|
|
|
*200 / Set the assembly origin to 200 (octal)
|
|
|
|
NL0002= CLA CLL CML RTL / Define new opcode NL0002.
|
|
|
|
NL0002 / Use new opcode (load 0002 in AC)
|
|
JMP .-1 / Jump to the previous instruction
|
|
|
|
X1= 10 / Define X1 (an auto-index register address)
|
|
|
|
TAD I X1 / Use autoindex register 1
|
|
|
|
IAC; RAL / Multiple instructions on one line
|
|
|
|
$ / End of assembly
|
|
|
|
The assembly file ends with a line containing a $ (dollar sign)
|
|
not in a comment field.
|
|
|
|
|
|
What different PDP-8 models were made?
|
|
|
|
The total sales figure for the PDP-8 family is estimated at over
|
|
300,000 machines. Over 8500 of these were sold prior to 1970.
|
|
During the PDP-8 production run, a number of models were made, as
|
|
listed in the following table. Of these, the PDP-8/E is generally
|
|
considered to be the definitive machine. If the PDP-8 is
|
|
considered to be the Model T of the computer industry, perhaps
|
|
the PDP-8/E should be considered to be the industry's Model A.
|
|
|
|
MODEL DATES SALES COST TECHNOLOGY REMARKS
|
|
|
|
PDP-5 63-65 Transistor Limited compatibility
|
|
PDP-8 65-68 >1000 $18,500 Transistor Table-top or rack
|
|
LINC-8 66-69 153 $38,500 Transistor Rack only
|
|
PDP-8/S 66-70? >1000? $10,000 Transistor Incompatable, slow!
|
|
PDP-8/I 68-70? >2000? $12,800 TTL Pedistal or rack
|
|
PDP-8/L 68-70? >2000? $8,500 TTL Scaled down 8/I (1)
|
|
PDP-12 69-71 3500 $27,900 TTL Followup to LINC-8
|
|
PDP-8/E 70-78 >10K? $7,390 TTL MSI Omnibus Table-top or rack
|
|
PDP-8/F 72-78? >10K? <$7K TTL MSI Omnibus Based on 8/E CPU
|
|
PDP-8/M 72-78? >10K? <$7K TTL MSI Omnibus OEM version of 8/F
|
|
PDP-8/A 75-84? >10K? <$7K TTL LSI Omnibus New CPU or 8/E CPU
|
|
VT78 (2)78-80 > ? Microprocessor Intersil IM6100
|
|
Dm I (3)80-84 Microprocessor Harris 6120
|
|
Dm II 82-86 $1,435 Microprocessor Harris 6120
|
|
Dm III 84-90 $2,695 Microprocessor
|
|
Dm III+ 85-90 Microprocessor
|
|
|
|
Notes (1) Memory upgrade to 32K words was eventually sold.
|
|
(2) The VT78 was also known as the DECstation 78.
|
|
(3) Dm stands for DECmate.
|
|
|
|
When possible, the costs given in the above table are for a minimal
|
|
system in the first year of production; for most PDP-8 systems,
|
|
such a system would have 4K of main memory, a console teletype,
|
|
and the minimal software needed to use the machine (FOCAL, BASIC,
|
|
or a paper-tape based assembler). Additional information on costs
|
|
and production is needed!
|
|
|
|
The above list does not include many PDP-8 variants sold by DEC
|
|
to meet the needs of various special users. For example, the
|
|
Industrial-8 was really just a PDP-8/E with a different nameplate
|
|
and color scheme. Burger King had thousands of PDP-8/M based
|
|
point-of-sale systems with no standard peripherals. In addition,
|
|
DEC made many peripheral controllers for the PDP-11 and PDP-15
|
|
that used IM6100 and 6120 microprocessors from Intersil and Harris.
|
|
|
|
The last years of the PDP-8 family were dominated by the DECmate
|
|
machines. DEC sold these primarily as word processing systems,
|
|
and in the end, they chose to obscure the ability of the DECmate
|
|
systems to run any software other than WPS, DEC's word processing
|
|
system.
|
|
|
|
The following PDP-8 compatible or semi-compatible machines were
|
|
made and sold by others; very little is known about many of these:
|
|
|
|
MODEL DATE MAKER, NOTES
|
|
|
|
MP-12 6? Fabritek
|
|
TPA 68? Hungarian, possibly a DEC PDP-8/L in drag
|
|
DCC-112 70-71 Digital Computer Controls
|
|
DCC-112H 71 Digital Computer Controls
|
|
6100 Sampler 7? Intersil, their IM6100 promotional kit
|
|
Intercept 7? Intersil, based on IM6100
|
|
Intercept Jr 7? Intersil, based on IM6100
|
|
PCM-12 7? Pacific CyberMetrix, based on Intercept bus
|
|
SBC-8 84-88 CESI, Based on IM6120, SCSI bus
|
|
|
|
|
|
What about the LINC/8 and PDP-12?
|
|
|
|
Wesley Clark, then at Lincoln Labs, developed the LINC, or
|
|
Laboratory INstrumentation Computer, as a personal laboratory
|
|
computer in the early 1960's. He developed it in response to
|
|
the needs of Mary Brazier, a neurophysiologist at MIT who needed
|
|
better laboratory tools.
|
|
|
|
When Lincoln Labs decided that the LINC did not fit their mission,
|
|
a group at the the National Institute of Health funded an
|
|
experiment to see if the LINC would be a productive tool in the
|
|
life sciences. As a result of this project, 12 LINCs were
|
|
built and debugged, each by its eventual user.
|
|
|
|
The LINC was built using DEC's first family of logic modules,
|
|
and along with the CDC 160, it paved the way for the PDP-5 and
|
|
PDP-8.
|
|
|
|
When compared with the PDP-8, the LINC instruction set was not
|
|
as well suited for general purpose computation, but the common
|
|
peripherals needed for lab work such as analog to digital and
|
|
digital to analog converters were all bundled into the LINC
|
|
system. Users judged it to be a superb laboratory instrument.
|
|
|
|
One of the major innovations introduced with the LINC was the
|
|
LINCtape. These tapes could be carelessly pocketed or dropped on
|
|
the floor without fear of data loss, and they allowed random
|
|
access to data blocks. DEC improved on this idea slightly to
|
|
make their DECtape format, and DECtape was widely used with all
|
|
DEC computers made in the late 1960's and early 1970's.
|
|
|
|
Within a year of the introduction of the PDP-8, DEC released the
|
|
LINC-8, a machine that combined a PDP-8 with a LINC in one
|
|
package. This was not a general purpose dual processor, in the
|
|
sense of allowing both machines to execute in parallel, but
|
|
rather, a machine with the hardware of both but restrictions
|
|
that effectively prevented more than one from running at a time.
|
|
|
|
The sales success of the LINC-8 led DEC to re-engineer the
|
|
machine using TTL logic in the late 1960's; the new version was
|
|
originally developed as the LINC-8/I, but it was sold as the
|
|
PDP-12; thousands were sold. Both the LINC-8 and the PDP-12 had
|
|
impressive consoles, with full sets of lights and switches for
|
|
the registers of each processor.
|
|
|
|
These machines could run essentially any PDP-8 or LINC software,
|
|
but because they included instructions for switching between
|
|
modes, a third body of software was developed that required
|
|
both instruction sets.
|
|
|
|
One feature of LINC and LINC-8 software is the common use of the
|
|
graphic display for input-output. These machines were some of
|
|
the first to include such a display as a standard component, and
|
|
many programs used the knobs on the analog to digital converter
|
|
to move a cursor on the display in the way we now use a mouse.
|
|
|
|
LAP, the Linc Assembly Program, was the dominant assembler used
|
|
on the LINC. WISAL (WISconson Assembly Language) or LAP6-W was
|
|
the version of this assembler that survived to run on the PDP-12.
|
|
Curiously, this includes a PDP-8 assembler written in LINC code.
|
|
|
|
LAP-6 DIAL (Display Interactive Assembly Language) evolved from
|
|
this on the PDP-12 to became the dominant operating system for
|
|
the PDP-12. The 8K version of this is DIAL MS (Mass Storage),
|
|
even if it has only two LINCtape drives. These were eventually
|
|
displaced by the OS/8 variant known as OS/12.
|
|
|
|
|
|
Where can I get a PDP-8 today?
|
|
|
|
The CESI machine may still be on the market, for a high price, but
|
|
generally, you can't buy a new PDP-8 anymore. There are quite a
|
|
few PDP-8 machines to be found in odd places on the used equipment
|
|
market. They were widely incorporated into products such as
|
|
computer controlled machine tools, X-ray diffraction machines, and
|
|
other industrial and lab equipment. Many of them were sold under
|
|
the EduSystem marketing program to public schools and universities,
|
|
and others were used to control laboratory instrumentation.
|
|
Reuters bought the tail end of the Omnibus based production run.
|
|
|
|
If you can't get real hardware, you can get emulators. Over the
|
|
years, many PDP-8 emulators have been written; the best of these
|
|
are indistinguishable from the real machine from a software
|
|
prespective, and on a modern high-speed RISC platform, these
|
|
frequently outperform the hardware they are emulating.
|
|
|
|
It is worth noting that the PDP-8, when it was introduced in 1965,
|
|
was about as fast as was practical with the logic technology used
|
|
at the time; only by using tricks like memory interleaving or
|
|
pipelining could the machine have been made much faster.
|
|
|
|
Finally, you can always build your own. The textbook "The Art of
|
|
Digital Design," second edition, by Franklin Prosser and David
|
|
Winkel (Prentice-Hall, 1987, ISBN 0-13-046780-4) uses the design
|
|
of a PDP-8 as a running example. Many students who have used this
|
|
book were required to build working PDP-8 systems as lab projects.
|
|
|
|
|
|
Where can I get PDP-8 documentation?
|
|
|
|
The 1973 Introduction to Programming was probably DEC's definitive
|
|
manual for this family, but it is out of print, and DEC was in the
|
|
habit of printing much of their documentation on newsprint with
|
|
paperback bindings, which is to say, surviving copies tend to be
|
|
yellow and brittle.
|
|
|
|
DEC distributed huge numbers of catalogs and programming handbooks
|
|
in this inexpensive paperback format, and these circulate widely
|
|
on the second-hand market. When research laboratories and
|
|
electronics shops are being cleaned out, it is still common to
|
|
find a few dusty, yellowed copies of these books being thrown in
|
|
the trash.
|
|
|
|
Maintenance manuals are harder to find, but more valuable.
|
|
Generally, you'll need to find someone who's willing to photocopy
|
|
one of the few surviving copies. Fortunately, DEC has been
|
|
friendly to collectors, granting fairly broad letters of permission
|
|
to reprint obsolete documentation, and the network makes if fairly
|
|
easy to find someone who has the documentation you need and can
|
|
get copies.
|
|
|
|
|
|
What operating systems were written for the PDP-8?
|
|
|
|
A punched paper-tape library of stand-alone programs was commonly
|
|
used with the smallest (diskless and tapeless) configurations from
|
|
the beginning up through the mid 1970's. Many paper tapes from
|
|
this library survive to the present at various sites! The minimum
|
|
configuration expected by these tapes is a CPU with 4K memory,
|
|
and a teletype ASR 33 with paper tape reader and punch.
|
|
|
|
The DECtape Library System was an early DECtape oriented save and
|
|
restore system that allowed a reel of tape to hold a directory of
|
|
named files that could be loaded and run on a 4K system.
|
|
Eventually, this supported a very limited tape-based text editor
|
|
for on-line program development. This did not use the DECtape's
|
|
block addressable character; the software was based on minimal
|
|
ports of the paper-tape based software described above.
|
|
|
|
The 4K Disk Monitor System provided slightly better facilities.
|
|
This supported on-line program development and it worked with any
|
|
device that supported 129 word blocks (DECtape, the DF32 disk, or
|
|
the RF08 disk).
|
|
|
|
MS/8 or the R-L Monitor System, developed starting in 1966 and
|
|
submitted to DECUS in 1970. This was a disk oriented system,
|
|
faster than the above, with tricks to make it run quickly on
|
|
DECtape based systems.
|
|
|
|
POLY BASIC, a BASIC only system submitted to DECUS and later sold
|
|
by DEC as part of its EduSystem marketing program.
|
|
|
|
P?S/8, developed starting in 1971 from an MS/8 foundation. Runs
|
|
on minimal PDP-8 configurations, supports device semi-independant
|
|
I/O and a file system on a random-access device, including DECtape.
|
|
P?S/8 runs compatably on most PDP-8 machines including DECmates,
|
|
excepting only the PDP-8/S and PDP-5. P?S/8 is still being
|
|
developed!
|
|
|
|
OS/8, developed in parallel with P?S/8, became the main PDP-8
|
|
programming environment sold by DEC. The minimum configuration
|
|
required was 8K words and a random-access device to hold the
|
|
system. For some devices, OS/8 requires 12K. There are a large
|
|
number of OS/8 versions that are not quite portable across various
|
|
subsets of the PDP-8 family.
|
|
|
|
OS8 (no slash) may still be viable. It requires 8K of main memory,
|
|
an extended arithmetic unit, and DECtape hardware. Unlike most
|
|
PDP-8 operating systems, it uses a directory structure on DECtape
|
|
compatable with that used on the PDP-10.
|
|
|
|
TSS/8 was developed in 1968 as a timesharing system. It required
|
|
a minimum of 12K words of memory and a swapping device. It was
|
|
the standard operating system on the EduSystem 50 which was sold
|
|
to many small colleges and large public school systems. Each user
|
|
gets a virtual 4K PDP-8; many of the utilities users ran on these
|
|
virtual machines were only slightly modified versions of utilities
|
|
from the Disk Monitor System or paper-tape environments.
|
|
|
|
Other timesharing systems developed for the PDP-8 include MULTI-8,
|
|
ETOS, MULTOS, and OMNI-8; some of these required nonstandard
|
|
memory management hardware. By the mid 1970's, some of these were
|
|
true virtual machine operating systems in the same spirit as IBM's
|
|
VM-370; they could support some version of OS/8 running on a 32K
|
|
virtual PDP-8 assigned to each user. Some could support different
|
|
user operating systems on each virtual machine, others required
|
|
OS/8 as the user system and only allowed code to execute from
|
|
virtual field zero of a process's virtual memory.
|
|
|
|
CAPS-8 was a cassette based operating system supporting PAL and
|
|
BASIC. There are OS/8 utilities to manipulate CAPS-8 cassettes,
|
|
and the file format on cassette is compatible with a PDP-11 based
|
|
system called CAPS-11.
|
|
|
|
WPS was DEC's word processing system that was widely used on the
|
|
1980's vintage machines with a special WPS keycaps replacing the
|
|
standard keycaps on the keyboard. This was written in the 1970's,
|
|
and was the primary system used on the DECmate systems.
|
|
|
|
COS-310, DEC's commercial operating system for the PDP-8, supported
|
|
the DIBOL language. COS-310 was a derivative of MS/8 and OS/8, but
|
|
with a new text file format. The file system is OS/8 compatable,
|
|
and a few applications can run under either COS or OS/8.
|
|
|
|
|
|
What programming languages are supported on the PDP-8
|
|
|
|
The PAL family of assembly languages are as close to a standard
|
|
assembly language as can be found for the PDP-8. These produce
|
|
absolute object code and versions of PAL will run on minimally
|
|
configured machines (but with a small symbol table). Assembly
|
|
of large programs frequently requires far more memory for symbol
|
|
table management.
|
|
|
|
MACRO-8 was DEC's first macro assembly language for the PDP-8, but
|
|
it was never used outside the paper-tape environment except under
|
|
the OS8 operating system. MACREL and SABR are assembly languages
|
|
that produce relocatable output. SABR is the final pass for the
|
|
ALICS II FORTRAN compiler, and MACREL was developed in
|
|
(unfulfilled) anticipation of similar use. MACREL was heavily
|
|
used by the DECmate group at DEC.
|
|
|
|
There was also RALF, the relocatable assembler supporting RTPS
|
|
FORTRAN, and FLAP, an absolute assembler derived from RALF.
|
|
Both SABR and RALF/FALP are assemblers that handle their intended
|
|
applications but have quirky and incompatible syntax.
|
|
|
|
A subset of FORTRAN was supported on both the PDP-5 and the
|
|
original PDP-8. Surviving documentation describes a DEC compiler
|
|
from 1964 and a compiler written by Information Control Systems
|
|
from 1968. The latter, ALICS II FORTRAN, was originally a paper
|
|
tape based compiler, but it forms the basis of the OS/8 8K FORTRAN
|
|
compiler, and was also adapted to the Disk Monitor System.
|
|
|
|
RTPS FORTRAN required 8K and a floating point processor; it had
|
|
real-time extensions and was a full implementation of FORTRAN IV
|
|
(also known as ANSI FORTRAN 66). OS/8 F4 is RTPS FORTRAN stripped
|
|
of the requirement for hardware floating point (if the hardware is
|
|
missing, it uses software emulation).
|
|
|
|
FOCAL, an interpretive language comparable to BASIC was available
|
|
on all models of the family, including the PDP-5 and PDP-8/S.
|
|
Varsions of FOCAL run under PS/8, P?S/8 and other systems.
|
|
|
|
BASIC was also available, and was widely used on PDP-8 systems
|
|
sold under the EduSystem marketing program. A paper-tape version
|
|
was available that ran in 4K, there were versions that ran under
|
|
OS/8 and TSS/8, there was an 8K stand-alone time-sharing version,
|
|
and there were many others.
|
|
|
|
DIBOL was DEC's attempt at competing with COBOL in the commercial
|
|
arena. It was originally implemented under MS/8 but most versions
|
|
were sold to run under the COS operating system.
|
|
|
|
Algol was available from a fairly early date.
|
|
|
|
At least two Pascal compilers were developed for the PDP-8. One
|
|
was a Pascal-S interpreter, written in assembler, the other was a
|
|
Pascal-P compiler with a P-code interpreter written in assembler.
|
|
|
|
At least two LISP interpreters were written for the PDP-8; one
|
|
runs in 4K, the other can use up to 16K.
|
|
|
|
TECO, the text editor, is available, and is also a general purpose
|
|
language, and someone is working on a PDP-8 C. The story of TECO
|
|
on the PDP-8 is convoluted. Russ Ham implemented TECO under his
|
|
OS8 (without a slash) system. This version of TECO was pirated by
|
|
the Oregon Museum of Science and Industry (OMSI), where the system
|
|
was ported to PS/8. Richard Lary and Stan Rabinowitz made it
|
|
more compatible with other versions of TECO, and the result of
|
|
work is the version distributed by DECUS. RT-11 TECO for the
|
|
PDP-11 is a port of this code.
|
|
|
|
|
|
Where can I get PDP-8 software?
|
|
|
|
DECUS, the DEC User Society, is still alive and well, and their
|
|
submission form still lists PAL-8 and FOCAL as languages in which
|
|
they accept submissions! The DECUS library is available on-line
|
|
by anonymous FTP at acfcluster.nyu.edu in subdirectory DECUS.
|
|
To quote the README file from the current on-line catalog, "Items
|
|
from older DECUS Library catalogs are still also available
|
|
(provided their media can still be read), but machine readable
|
|
catalog information is not available for these." Direct questions
|
|
by E-mail to INFORMATION@DECUS.ORG.
|
|
|
|
There is a young but growing FTPable archive of PDP-8 software at
|
|
ftp.telebit.com in directory /pub/pdp8. Another archive that
|
|
contains considerable PDP-8 related material, along with material
|
|
related to other DEC computers, is at sunsite.unc.edu in directory
|
|
/pub/academic/computer-science/history/.
|
|
|
|
|
|
Where can I get additional information?
|
|
|
|
The file WHAT-IS-A-PDP8, by Charles Lasner contains considerable
|
|
additional information; this file is included in the FTPable
|
|
archive cited above. This file gives details of every model
|
|
of the PDP-8, including the small quirks and incompatabilities
|
|
that (to be generous) allow software to determine which model it
|
|
is running on. These quirks also make it all too easy for
|
|
careless programmers to write almost portable software with very
|
|
obscure bugs.
|
|
|
|
The mailing list pdp8-lovers@ai.mit.edu reaches a number of PDP-8
|
|
owners and users, not all of whom have USENET feeds. The USENET
|
|
newsgroup alt.sys.pdp8 is fairly new, but someday, the newsgroup
|
|
and mailing list should be gatewayed to each other.
|
|
|
|
Many "archival" books have included fairly complete descriptions
|
|
of the PDP-8; among them, "Computer Architecture, Readings and
|
|
Examples" by Gordon Bell and Allen Newell is among the most
|
|
complete (and difficult to read). Considering Bell's role in the
|
|
design of the PDP-8 and the history of DEC, the description in
|
|
this book should be accurate!
|
|
|
|
|
|
What use is a PDP-8 today?
|
|
|
|
What use is a Model T today? Collectors of both come in the same
|
|
basic classes. First, there are antiquarians who keep an old one
|
|
in the garage, polished and restored to new condition but hardly
|
|
ever used. Once a year, they warm it up and use it, just to prove
|
|
that it still works, but they don't have much practical use.
|
|
|
|
PDP-8 systems maintained by antiquarians are frequently in
|
|
beautiful shape. Antiquarians worry about dust, chipped paint,
|
|
and missing switches, and they establish newsgroups and mailing
|
|
lists to help them locate parts and the advice needed to fix their
|
|
machines.
|
|
|
|
In the second class are those who find old machines and soup them
|
|
up, replacing major parts to make a hotrod that only looks like
|
|
the original from the outside, or keeping the old mechanism and
|
|
putting it to uses that were never intended. Some PDP-8 owners,
|
|
for example, are building PDP-8 systems with modern SCSI disk
|
|
interfaces! There is serious interest in some quarters in
|
|
constructing an omnibus board that would support an IDE disk of
|
|
the variety that was mass-produced for the IBM PC/AT.
|
|
|
|
Last, there are the old folks who still use their old machines for
|
|
their intended purposes long after any sane economic analysis
|
|
would recommend such use. If it ain't broke, don't fix it, and if
|
|
it can be fixed, why bother replacing it? Both Model T Fords and
|
|
the classic PDP-8 machines are simple enough that end users can
|
|
maintain and repair them indefinitely. All you need to keep a
|
|
vintage -8 running are a stock of inexpensive silicon diodes and
|
|
a stock of 2N3639B or better, 2N3640 transistors.
|
|
|
|
Unlike most modern personal computers, PDP-8 systems were
|
|
routinely sold with complete maintenance manuals; these included
|
|
schematic diagrams, explanations of not only how to use the
|
|
devices, but how they are built, and suggestions to those
|
|
considering building their own peripherals. Compared with many
|
|
so-called "open systems" of today, the PDP-8 seems to have been far
|
|
better documented and far more open.
|
|
|
|
Finally, the PDP-8 is such a minimal machine that it is an excellent
|
|
introduction to how computers really work. Over the years, many
|
|
students have built complete working PDP-8 systems from scratch as
|
|
lab projects, and the I/O environment on a PDP-8 is simple enough
|
|
that it is a very appropriate environment for learning operating
|
|
system programming techniques.
|
|
|
|
Who's Who?
|
|
|
|
C. Gordon Bell is generally credited with the original design of
|
|
the PDP-8. He also recommended what became the PDP-11 when that
|
|
design was competing with the design that probably became the NOVA,
|
|
and as vice president of research, he oversaw the development of
|
|
the DEC VAX family.
|
|
|
|
Ben Gurley designed most of the big DEC machines, starting with
|
|
the PDP-1.
|
|
|
|
Ken Olson ran DEC from the beginning.
|
|
|
|
Wesley Clark developed the LINC while working at Lincoln Labs;
|
|
this was the first 12 bit minicomputer built with DEC parts.
|