The PDP-8 reference article from the English Wikipedia on 24-Apr-2004
(provided by Fixed Reference: snapshots of Wikipedia from wikipedia.org)

PDP-8

Get the latest news from Africa
The PDP-8 was the first successful commercial minicomputer, produced by Digital Equipment Corporation (DEC) in the 1960s. It was the first widely-sold computer in the DEC PDP series of computers (the PDP-5 was not originally intended to be a general-purpose computer).

Table of contents
1 Description
2 Example
3 External links

Description

The PDP-8 was a 12-bit computer with 4096 words of memory. It had only eight instructions, one full register, the accumulator (AC), and a single-bit register, the link (L) bit. The machine operated at a clock rate of 1 MHz, and took 10 clocks for each instruction, so that it ran at 0.1MIPS.

The instruction set:

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.

A wide variety of operations are available through the OPR microcoded instructions. In general, the operations within each Group 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.
Group 1 operations:
CLA - clear AC
CLL - clear the L bit
CMA - ones complement AC
CML - complement L bit
IAC - increment
RAR - rotate right
RAL - rotate left
RTR - rotate right twice
RTL - rotate left twice

Group 2 operations:
SMA - skip on AC < 0 (or group)
SZA - skip on AC = 0 (or group)
SNL - skip on L /= 0 (or group)
SKP - skip unconditionally
SPA - skip on AC >= 0 (and group)
SNA - skip on AC /= 0 (and group)
SZL - skip on L = 0 (and group)
CLA - clear AC
OSR - or switches with AC
HLT - halt

Example

Here is an example of a complete PDP-8 assembly language program – Hello, world – written for the PAL-III assembler.

/ adapted from example in Digital PDP-8 Handbook Series, Introduction to Programming, p5-12

   *200                / set assembly origin (load address)

   hello,  cla cll
           tls         / tls to set printer flag.
           tad charac  / set up index register
           dca ir1     / for getting characters.
           tad m6      / set up counter for
           dca count   / typing characters.
   next,   tad i ir1   / get a character.
           jms type    / type it.
           isz count   / done yet?
           jmp next    / no: type another.
           hlt
   type,   0           / type subroutine
           tsf
           jmp .-1
           tls
           cla
           jmp i type
   charac, .           / used as initial value of ir1
           310 / H
           305 / E
           314 / L
           314 / L
           317 / O
           254 / ,
           240 /
           327 / W
           317 / O
           322 / R
           314 / L
           304 / D
           241 / !
   m6,     -15
   count,  0
   ir1 = 10
   $

External links