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

Description

The PDP-8 was a 12-bit computer. In its basic configuration, it contained 4096 12-bit words of core memory but could be expanded to 32,768 words of memory. At its inception, it had only eight instructions, one full register (the accumulator (AC)), and a single-bit register (the link (L) bit). The machine used a core memory system that operated at 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 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 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 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). The instruction set:
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

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

  • alt.sys.pdp8 newsgroup
  • the alt.sys.pdp8 FAQ
  • http://www.cs.uiowa.edu/~jones/pdp8/
  • http://www.cs.uiowa.edu/~jones/pdp8/man/
  • http://www.faqs.org/faqs/dec-faq/pdp8-models/preamble.html
  • 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

 

<< PreviousWord BrowserNext >>
plo and hamas
peace now
palestinian national covenant
palestine liberation organization
pol pot
prairie dog
porcupinefish
pope stephen iv
pope stephen v
pope stephen vi
pope stephen vii
pope stephen viii
pope stephen ix
pope stephen x
pope sergius i
pope sergius ii
pope sergius iii
pneumocystis jiroveci pneumonia
pope sergius iv
panda
projective plane
pcp
pacific beach
pharmacology
pathogen
people against gangsterism and drugs
porsche
porsche 924
pink floyd
pain
pacifist organisation
porsche 944
porsche 968
porsche 912
pvc
pope zacharias
pope valentinus
pope victor i
pope victor ii
pope victor iii
pribislav
political science
public relations
paradox