Recent Articles



































PDP-8



         


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).

[Top]

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.1 MIPS.

The PDP-8 was a historically important computer because of the advances in technology, I/O, software development, and operating system design that occurred during its reign.

The earliest PDP-8 models used discrete transistor technology and were approximately the size of a refrigerator. The last revision of PDP-8 models used a single custom CMOS microprocessor. There was never a historical "system on a chip". However, in recent years enthusiasts have created entire PDP-8 systems using single FPGA devices.

The I/O systems underwent huge changes in the PDP-8 era. Early PDP-8 models used a front-panel interface, a paper-tape reader and a teletype printer with optional paper-tape punch. Over time I/O systems such as magnetic tape, RS-232 and current loop dumb terminals, punched card readers, and magnetic drum "disks" were added. Toward the end of the PDP-8 era, floppy disks and hard disk drives were popular I/O devices. Modern enthusiasts have created standard PC style IDE hard disk adapters for real and simulated PDP-8 computers.

Software development systems for the PDP-8 series began with the most basic front panel entry of raw binary machine code. In the middle era, source code was often stored on paper tape, read into memory, and saved to paper tape, and later assembled from paper tape into memory. Toward the end of the PDP-8 era, operating systems such as OS8 allowed a traditional line-mode editor and command-line compiler development system using languages such as FORTRAN and BASIC in addition to assembly.

Early PDP-8 systems did not have an operating system, just a front panel and run and halt switches. Various papertape "operating systems" were developed, as were single user disk operating systems. Toward the end of the PDP-8 era, fairly modern and advanced RTOS and preemptive multitasking multi-user systems were available.

The instruction set:

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.

A wide variety of operations are available through the OPR microcoded instructions. In general, the operations within each Group can be combined by or'ing 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 <L,AC>
RAR - rotate <L,AC> right
RAL - rotate <L,AC> left
RTR - rotate <L,AC> right twice
RTL - rotate <L,AC> 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
[Top]

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 $
[Top]




  View Live Article   This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License