Science Fair Project Encyclopedia
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).
The PDP-8 was a 12-bit computer. In its basic configuration it had a main memory of 4,096 twelve-bit words (i.e. 4K words, equivalent to 6 kilobytes), expandable to 32,768 words (32K words / 48 KB). At its inception, the PDP-8 had only eight instructions and two registers (a 12-bit accumulator, AC, and a single-bit "link register", L). The machine used a magnetic core memory system that operated at a cycle time of 1.5 microseconds, so that a typical two-cycle (Fetch, Execute) memory-reference instruction ran at a speed of 0.333 MIPS. Later machines added a second register (the "MQ" Multiplier/Quotient Register), actual multiply and divide instruction options, and faster operation.
The earliest PDP-8 model (the so-called "Straight-8") used discrete transistor technology and was approximately the size of a compact refrigerator. This was followed by the PDP-8/S. By using a one-bit serial ALU implementation, it was smaller and less-expensive but vastly slower than the original PDP-8. Intermediate systems (the PDP-8/I and /L, the PDP-8/E, /F, and /M, and the PDP-8/A) returned to a fully-parallel implementation and used TTL MSI logic. The last revisions of PDP-8 models used single custom CMOS microprocessors. There was never a historical "system on a chip". However, in recent years enthusiasts have created entire PDP-8 systems using single FPGA devices. (This is possible because an entire PDP-8, its main memory system, and its I/O equipment is collectively much less complex than even the cache memories used in most modern microprocessors.)
The I/O systems underwent huge changes during the PDP-8 era. Early PDP-8 models used a front-panel interface, a paper-tape reader and a teletype printer with an optional paper-tape punch. Over time I/O systems such as magnetic tape, RS-232 and current loop dumb terminals, punched card readers, and fixed-head disks were added. Toward the end of the PDP-8 era, floppy disks and moving-head cartridge 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.
I/O was supported through several different methods:
- In-backplane dedicated slots for I/O controllers
- A "Negative" I/O bus (using negative voltage signalling)
- A "Positive" I/O bus (the same architecture using TTL signalling)
- The Omnibus (a backplane of undedicated slots)
A rudimentary form of DMA called "three-cycle data break" was supported; this required the assistance of the processor. Essentially, "data break" moved some of common logic (needed to implement the I/O device) from each I/O device into one common copy of the logic within the processor, placing the processor in charge of maintaining the DMA address and word count registers. In three successive memory cycles, the processor would update the word count, update the transfer address, and finally store or retrieve the actual I/O data word. By the time the PDP-8/E was introduced, this logic had become cheap and "one-cycle data break" became more popular, moving back to the individual I/O devices all the responsibility for maintaining the word count and transfer address registers; this effectively tripled the DMA transfer rate because only the target data needed to be transferred to/from the core memory.
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 OS/8 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: a real-time system (RTS-8) was available as were multiuser commercial systems (COS-300 and COS-310) and a dedicated single-user word-processing system (WPS-8).
- 000 - AND - AND the memory operand with AC.
- 001 - TAD - Twos-complement ADd the memory operand to <L,AC> (a 13 bit value).
- 010 - ISZ - Increment the memory operand and Skip next instruction if result is Zero.
- 011 - DCA - Deposit AC into the memory operand and Clear AC.
- 100 - JMS - JuMp to Subroutine (storing return address in first word of subroutine!).
- 101 - JMP - JuMP.
- 110 - IOT - Input/Output Transfer.
- 111 - OPR - microcoded OPeRations (on/using the accumuator, link, and MQ registers).
A wide variety of operations are available through the OPR microcoded instructions including most of the conditional branch (skip) 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
/ 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 $
- alt.sys.pdp8 newsgroup
- the alt.sys.pdp8 FAQ
- pdp8.net has a running PDP8 that anyone can control through a Java applet, plus a webcam to show the results
- Bernhard Baehr's slick PDP-8/E Simulator for Macintosh
- http://simh.trailing-edge.com a very portable simulator for PDP-8, works on virtually any modern OS
- dpa, a portable PDP-8 cross-assembler
The contents of this article is licensed from www.wikipedia.org under the GNU Free Documentation License. Click here to see the transparent copy and copyright details