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