home *** CD-ROM | disk | FTP | other *** search
/ Danny Amor's Online Library / Danny Amor's Online Library - Volume 1.iso / html / faqs / faq / dec-faq / pdp8 < prev    next >
Encoding:
Text File  |  1995-07-25  |  54.1 KB  |  1,145 lines

  1. Subject: PDP-8 Frequently Asked Questions (posted every other month)
  2. Newsgroups: alt.sys.pdp8,alt.answers,news.answers
  3. From: jones@cs.uiowa.edu (Douglas W. Jones)
  4. Date: 8 Oct 94 08:08:08 GMT
  5.  
  6. Archive-name: dec-faq/pdp8
  7. Last-modified: Sept 23, 1994
  8.  
  9. Frequently Asked Questions about the DEC PDP-8 computer.
  10.  
  11.     By Douglas Jones, jones@cs.uiowa.edu
  12.     (with help from many folks)
  13.  
  14. The most recent version of this file is available by anonymous FTP from:
  15.  
  16.     ftp://rtfm.mit.edu/pub/usenet/alt.sys.pdp8
  17.     ftp://ftp.uu.net/usenet/news.answers/dec-faq
  18.     ftp://src.doc.ic.ac.uk:/pub/usenet/news.answers/alt.sys.pdp8
  19.     ftp://sunsite.unc.edu/pub/academic/computer-science/history/pdp-8/docs
  20.  
  21. Automatic translations of this document to HTML format (as used by World Wide
  22. Web) are available from:
  23.  
  24.     http://www.cis.ohio-state.edu/hypertext/faq/usenet/dec-faq/top.html
  25.  
  26. An obsolete version of this file is available on the Walnut Creek USENET
  27. FAQ CDROM.
  28.  
  29. This posting conforms to RFC1153 USENET digest format (with exceptions due
  30. to the fact that it is not really a digest).
  31.  
  32.  
  33. Contents:
  34.  
  35.     What is a PDP?
  36.     What is a PDP-8?
  37.     What is the PDP-8 instruction set?
  38.     What does PDP-8 assembly language look like?
  39.     What character sets does the PDP-8 support?
  40.     What different PDP-8 models were made?
  41.     What about the LINC-8 and PDP-12?
  42.     Where can I get a PDP-8 today?
  43.     Where can I get PDP-8 documentation?
  44.     What operating systems were written for the PDP-8?
  45.     What programming languages were supported on the PDP-8?
  46.     Where can I get PDP-8 software?
  47.     Where can I get additional information?
  48.     What use is a PDP-8 today?
  49.     Who's Who?
  50.  
  51. ----------------------------------------------------------------------
  52.  
  53. Subject: What is a PDP?
  54.  
  55. In 1957, Ken Olson and Harlan Anderson founded Digital Equipment
  56. Corporation (DEC), capitalized at $100,000, and 70% owned by American
  57. Research and Development Corporation.  The founders wanted to call the
  58. company Digital Computer Corporation, but the venture capitalists
  59. insisted that they avoid the term Computer and hold off on building
  60. computers.  With facilities in an old woolen mill in Maynard
  61. Massachusetts, DEC's first product was a line of transistorized digital
  62. "systems modules", plug-in circuit boards with a few logic gates per
  63. board.  Starting in 1960, DEC finally began to sell computers (the
  64. formal acceptance of the first PDP-1 by BBN is reported in Computers
  65. and Automation, April 1961, page 8B).  Soon after this, there were
  66. enough users that DECUS, the Digital Equipment Computer User's Society
  67. was founded.
  68.  
  69. DEC's first computer, the PDP-1, sold for only $120,000 at a time when
  70. other computers sold for over $1,000,000.  (A good photo of a PDP-1 is
  71. printed in Computers and Automation, Dec. 1961, page 27).  DEC quoted
  72. prices as low as $85,000 for minimal models.  The venture capitalist's
  73. insistance on avoiding the term computer was based on the stereotype
  74. that computers were big and expensive, needing a computer center and a
  75. large staff; by using the term Programmable Data Processor, or PDP, DEC
  76. avoided this stereotype.  For over a decade, all digital computers sold
  77. by DEC were called PDPs.  (In early DEC documentation, the plural form
  78. "PDPs" is used as a generic term for all DEC computers.)
  79.  
  80. In the early 1960's, DEC was the only manufacturer of large computers
  81. without a leasing plan.  IBM, Burroughs, CDC and other computer
  82. manufacturers leased most of their machines, and many machines were
  83. never offered for outright sale.  DEC's cash sales approach led to the
  84. growth of third party computer leasing companies such as DELOS, a
  85. spinoff of BB&N.
  86.  
  87. DEC built a number of different computers under the PDP label, with a
  88. huge range of price and performance.  The largest of these are fully
  89. worthy of large computer centers with big support staffs.  Some early
  90. DEC computers were not really built by DEC.  With the PDP-3 and LINC,
  91. for example, customers built the machines using DEC parts and
  92. facilities.  Here is the list of PDP computers:
  93.  
  94.     MODEL  DATE  PRICE     BITS  COMMENTS
  95.     =====  ====  ========  ====  =====
  96.     PDP-1  1960  $120,000  18    DEC's first computer
  97.     PDP-2            NA    24    Never built?
  98.     PDP-3            NA    36    One built by a customer, not by DEC.
  99.     PDP-4  1962   $60,000  18    Predecessor of the PDP-7.
  100.     PDP-5  1963   $27,000  12    The ancestor of the PDP-8.
  101.     PDP-6  1964  $300,000  36    A big computer; 23 built, most for MIT.
  102.     PDP-7  1965   $72,000  18    Widely used for real-time control.
  103.     PDP-8  1965   $18,500  12    The smallest and least expensive PDP.
  104.     PDP-9  1966   $35,000  18    An upgrade of the PDP-7.
  105.     PDP-10 1967  $110,000  36    A PDP-6 followup, great for timesharing.
  106.     PDP-11 1970   $10,800  16    DEC's first and only 16 bit computer.
  107.     PDP-12 1969   $27,900  12    A PDP-8 relative.
  108.     PDP-13           NA          Bad luck, there was no such machine.
  109.     PDP-14                       A ROM-based programmable controller.
  110.     PDP-15 1970   $16,500  18    A TTL upgrade of the PDP-9.
  111.     PDP-16 1972      NA    8/16  A register-transfer module system.
  112.  
  113. Corrections and additions to this list are welcome!  The prices given
  114. are for minimal systems in the year the machine was first introduced.
  115. The bits column indicates the word size.  Note that the DEC PDP-10
  116. became the DECSYSTEM-20 as a result of marketing considerations, and
  117. DEC's VAX series of machines began as the Virtual Address eXtension of
  118. the never-produced PDP-11/78.
  119.  
  120. It is worth mentioning that it is generally accepted that the Data
  121. General Nova (see photo, Computers and Automation, Nov. 1968, page 48)
  122. was originally developed as the PDP-X, a 16-bit multi-register version
  123. of the PDP-8.  A prototype PDP-X was built at DEC before the design was
  124. rejected.  This and a competing 16-bit design were apparently submitted
  125. to Harold McFarland at Carnegie-Mellon University for evaluation;
  126. McFarland (and perhaps Gordon Bell, who was at C-MU at the time)
  127. evaluated the competing designs and rejected both in favor of what we
  128. know as the PDP-11.  Some speculate that Bell rejected the Nova design
  129. because the competing proposal used the register-transfer notation he
  130. had introduced in "Bell and Newell, Computer Structures -- Readings and
  131. Examples".  An alternate story is that the reason DEC never produced a
  132. PDP-13 was because the number 13 had been assigned to what became the
  133. Nova; this is unlikely because the PDP-X prototype came before the -11.
  134. Neither DEC nor Data General talk much about this, but Ed De Castro,
  135. the founding president of Data General, was part of the PDP-8 design
  136. team, as were many of the others who came to Data General to build the
  137. Nova.
  138.  
  139. Today, all of the PDP machines are in DEC's corporate past, with the
  140. exception of the PDP-11 family, which survives as a line of
  141. microcomputers.
  142.  
  143. Of course, occasionally, some lab builds a machine out of DEC hardware
  144. and calls it a PDP with a new number.  For example, the Australian
  145. Atomic Energy Commission once upgraded a PDP-7 by adding a PDP-15 on
  146. the side; they called the result a PDP-22.
  147.  
  148. ------------------------------
  149.  
  150. Subject: What is a PDP-8?
  151.  
  152. The PDP-8 family of minicomputers were built by Digital Equipment
  153. Corporation between 1965 and 1990, although it is worth noting that the
  154. term minicomputer first came into prominence after the machine was
  155. introduced.  The first use of the term appears to have been made by
  156. the head of DEC's operations in England, John Leng.  He sent back a
  157. sales report that started: "Here is the latest minicomputer activity
  158. in the land of miniskirts as I drive around in my [Austin] Mini Minor."
  159. The term quickly became part of DEC's internal jargon and spread from
  160. there; the first computer explicitly sold as a minicomputer, though,
  161. was made by by Interdata (See the Interdata ad in Computers and
  162. Automation, May 1968, page 10).
  163.  
  164. The PDP-8 was largely upward compatible with the PDP-5, a machine that
  165. was unveiled on August 11, 1963 at WESCON, and the inspiration for that
  166. machine came from two earlier machines, the LINC and the CDC 160.  All
  167. of these machines were characterized by a 12 bit word with little or no
  168. hardware byte structure, typically 4K words of memory, and simple but
  169. powerful instruction sets.
  170.  
  171. Although some people consider the CDC 160 the first minicomputer, the
  172. PDP-8 was the definitive minicomputer.  By late 1973, the PDP-8 family
  173. was the best selling computer in the world, and it is likely that it was
  174. only displaced from this honor by the Apple II (which was displaced by
  175. the IBM PC).  Most models of the PDP-8 set new records as the least
  176. expensive computer on the market at the time of their introduction.
  177. The PDP-8 has been described as the model-T of the computer industry
  178. because it was the first computer to be mass produced at a cost that
  179. just about anyone could afford.
  180.  
  181. C. Gordon Bell has said that the basic idea of the PDP-8 was not really
  182. original with him.  He gives credit to Seymour Cray (of CDC and later
  183. Cray) for the idea of a single-accumulator 12 bit minicomputer.  Cray's
  184. CDC 160 family (see CACM, march 1961, photo on page 244, text on page
  185. 246) was such a machine, and in addition to the hundreds of CDC 160
  186. systems sold as stand-alone machines, a derivative 12 bit architecture
  187. was used for the I/O processors on Cray's first great supercomputer,
  188. the CDC 6600.
  189.  
  190. Note that Cray's 12 bit machines had 6 basic addressing modes with
  191. variable length instruction words and other features that were far from
  192. the simple elegance of the PDP-8.  Despite its many modes, the CDC
  193. architecture lacked the notion of current page addressing, and the
  194. result is that, for examples that don't involve indexing, PDP-8 code is
  195. generally as tight as and perhaps tighter than CDC 160 code.
  196.  
  197. ------------------------------
  198.  
  199. Subject: What is the PDP-8 instruction set?
  200.  
  201. The PDP-8 word size is 12 bits, and the basic memory is 4K words.  The
  202. minimal CPU contained the following registers:
  203.  
  204.     PC - the program counter, 12 bits.
  205.     AC - the accumulator, 12 bits.
  206.     L  - the link, 1 bit, commonly prefixed to AC as <L,AC>.
  207.  
  208. It is worth noting that many operations such as procedure linkage and
  209. indexing, which are usually thought of as involving registers, are done
  210. with memory on the PDP-8 family.
  211.  
  212. Instruction words are organized as follows:
  213.      _ _ _ _ _ _ _ _ _ _ _ _
  214.     |_|_|_|_|_|_|_|_|_|_|_|_|
  215.     |     | | |             |
  216.     |  op |i|z|    addr     |
  217.  
  218.     op   - the opcode.
  219.     i    - the indirect bit (0 = direct, 1 = indirect).
  220.     z    - the page bit (0 = page zero, 1 = current page).
  221.     addr - the word in page.
  222.  
  223. The top 5 bits of the 12 bit program counter give the current page, and
  224. memory addressing is also complicated by the fact that absolute memory
  225. locations 8 through 15 are incremented prior to use when used as indirect
  226. addresses.  These locations are called auto-index registers (despite the
  227. fact that they are in memory); they allow the formulation of very tightly
  228. coded array operations.
  229.  
  230. The basic instructions are:
  231.  
  232.     000 - AND - and operand with AC.
  233.     001 - TAD - add operand to <L,AC> (a 13 bit value).
  234.     010 - ISZ - increment operand and skip if result is zero.
  235.     011 - DCA - deposit AC in memory and clear AC.
  236.     100 - JMS - jump to subroutine.
  237.     101 - JMP - jump.
  238.     110 - IOT - input/output transfer.
  239.     111 - OPR - microcoded operations.
  240.  
  241. The ISZ and other skip instructions conditionally skip the next
  242. instruction in sequence.  The ISZ is commonly used to increment a loop
  243. counter and skip if done, and it is also used as an general increment
  244. instruction, either followed by a no-op or in contexts where it is known
  245. that the result will never be zero.
  246.  
  247. The JMS instruction stores the return address in relative word zero of
  248. the subroutine, with execution starting with relative word one.
  249. Subroutine return is done with an indirect JMP through the return
  250. address.  Subroutines commonly increment their return addresses to index
  251. through inline parameter lists or to perform conditional skips over
  252. instructions following the call.
  253.  
  254. The IOT instruction has the following form:
  255.      _ _ _ _ _ _ _ _ _ _ _ _
  256.     |1|1|0|_|_|_|_|_|_|_|_|_|
  257.     |     |           |     |
  258.     |     |   device  | op  |
  259.  
  260. The IOT instruction specifies one of up to 8 operations on one of 64
  261. devices.  Typically (but not universally), each bit of the op field
  262. evokes an operation, and these can be microcoded in right to left
  263. order.  Prior to the PDP-8/E, there were severe restrictions on the
  264. interpretation of the op field that resulted from the fact that the
  265. operation was delivered as a sequence of IOP pulses, each on a separate
  266. line of the I/O bus.  Each line was typically used to evoke a different
  267. device function, so essentially, the operation 000 was always a no-op
  268. because it evoked no functions, and the code 111 evoked all three
  269. functions in series.
  270.  
  271. As an example of the use of IOT instructions, consider the console
  272. terminal interface.  On early PDP-8 systems, this was always assumed to
  273. be an ASR 33 teletype, complete with low-speed paper tape reader and
  274. punch.  It was addressed as devices 03 (the keyboard/reader) and 04
  275. (the teleprinter/punch):
  276.      _ _ _ _ _ _ _ _ _ _ _ _
  277.     |1|1|0|_|_|_|_|_|_|_|_|_|
  278.           |0 0 0 0 1 1|0 0 1  - KSF - keyboard skip if flag
  279.           |0 0 0 0 1 1|0 1 0  - KCC - keyboard clear flag
  280.           |0 0 0 0 1 1|1 0 0  - KRS - keyboard read static
  281.  
  282. The keyboard flag is set by the arrival of a character.  The KCC
  283. instruction clears both the flag and the accumulator.  KRS ors the 8 bit
  284. input data with the low order 8 bits of AC.  The commonly used KRB
  285. instruction is the or of KCC and KRS.  To await one byte of input, use
  286. KSF to poll the flag, then read the byte with KRB.
  287.      _ _ _ _ _ _ _ _ _ _ _ _
  288.     |1|1|0|_|_|_|_|_|_|_|_|_|
  289.           |0 0 0 1 0 0|0 0 1  - TSF - teleprinter skip if flag
  290.           |0 0 0 1 0 0|0 1 0  - TCF - teleprinter clear flag
  291.           |0 0 0 1 0 0|1 0 0  - TPC - teleprinter print static
  292.  
  293. The teleprinter flag is set by the completion of the TPC operation (as
  294. a result, on startup, many applications output a null in order to get
  295. things going).  TCF clears the flag, and TPC outputs the low order 8
  296. bits of the accumulator.  The commonly used TLS instruction is the or
  297. of TCF and TPC.  To output a character, first use TSF to poll the flag,
  298. then write the character with TLS.
  299.  
  300. IOT instructions may be used to initiate data break transfers from block
  301. devices such as disk or tape.  The term "data break" was, for years,
  302. DEC's preferred term for cycle-stealing direct-memory-access data
  303. transfers.
  304.  
  305. Some CPU functions are accessed only by IOT instructions.  For example,
  306. interrupt enable and disable are IOT instructions:
  307.      _ _ _ _ _ _ _ _ _ _ _ _
  308.     |1|1|0|_|_|_|_|_|_|_|_|_|
  309.           |0 0 0 0 0 0|0 0 1  - ION - interrupts turn on
  310.           |0 0 0 0 0 0|0 1 0  - IOF - interrupts turn off
  311.  
  312. An interrupt is requested when any device raised its flag.  The console
  313. master clear switch resets all flags and disables interrupts.  In
  314. effect, an interrupt is a JMS instruction to location zero, with the
  315. side effect of disabling interrupts.  The interrupt service routine
  316. is expected to test the device flags and perform the operations needed
  317. to reset them, and then return using ION immediately before the indirect
  318. return JMP.  The effect of ION is delayed so that interrupts are not
  319. enabled until after the JMP.
  320.  
  321. The instructions controlling the optional memory management unit are
  322. also IOT instructions.  This unit allows the program to address up to
  323. 32K of main memory by adding a 3 bit extension to the memory address.
  324. Two extensions are available, one for instruction fetch and direct
  325. addressing, the other for indirect addressing.
  326.  
  327. A wide variety of operations are available through the OPR microcoded
  328. instructions:
  329.          _ _ _ _ _ _ _ _ _ _ _ _
  330. Group 1 |1|1|1|0|_|_|_|_|_|_|_|_|
  331.              1                - CLA - clear AC
  332.                1              - CLL - clear the L bit
  333.                      1            - CMA - ones complement AC
  334.                        1          - CML - complement L bit
  335.                                1  - IAC - increment <L,AC>
  336.                          1 0 0    - RAR - rotate <L,AC> right
  337.                          0 1 0    - RAL - rotate <L,AC> left
  338.                      1 0 1    - RTR - rotate <L,AC> right twice
  339.                      0 1 1    - RTL - rotate <L,AC> left twice
  340.  
  341. In general, the above operations can be combined by oring the bit
  342. patterns for the desired operations into a single instruction.  If none
  343. of the bits are set, the result is the NOP instruction.  When these
  344. operations are combined, they operate top to bottom in the order shown
  345. above.  The exception to this is that IAC cannot be combined with the
  346. rotate operations on some models, and attempts to combine rotate
  347. operations have different effects from one model to another (for example,
  348. on the PDP-8/E, the rotate code 001 means swap 6 bit bytes in the
  349. accumulator, while previous models took this to mean something like
  350. "shift neither left nor right 2 bits").
  351.          _ _ _ _ _ _ _ _ _ _ _ _
  352. Group 2 |1|1|1|1|_|_|_|_|_|_|_|0|
  353.                    1     0        - SMA - skip on AC < 0  \
  354.                      1   0        - SZA - skip on AC = 0   > or group
  355.                        1 0        - SNL - skip on L /= 0  /
  356.                    0 0 0 1        - SKP - skip unconditionally
  357.                    1     1        - SPA - skip on AC >= 0 \
  358.                      1   1        - SNA - skip on AC /= 0  > and group
  359.                        1 1        - SZL - skip on L = 0   /
  360.                  1                - CLA - clear AC
  361.                            1      - OSR - or switches with AC
  362.                              1    - HLT - halt
  363.  
  364. The above operations may be combined by oring them together, except that
  365. there are two distinct incompatible groups of skip instructions.  When
  366. combined, SMA, SZA and SNL, skip if one or the other of the indicated
  367. conditions are true (logical or), while SPA, SNA and SZL skip if all of
  368. the indicated conditions are true (logical and).  When combined, these
  369. operate top to bottom in the order shown; thus, the accumulator may be
  370. tested and then cleared.  Setting the halt bit in a skip instruction is
  371. a crude but useful way to set a breakpoint for front-panel debugging.
  372. If none of the bits are set, the result is an alternative form of no-op.
  373.  
  374. A third group of operate microinstructions (with a 1 in the least
  375. significant bit) deals with the optional extended arithmetic element to
  376. allow such things as hardware multiply and divide, 24 bit shift
  377. operations, and normalize.  These operations involve an additional data
  378. register, MQ or multiplier quotient, and a small step count register.
  379. On the PDP-8/E and successors, MQ and the instructions for loading and
  380. storing it were always present, even when the EAE was absent, and the
  381. EAE was extended to provide a useful variety of 24 bit arithmetic
  382. operations.
  383.  
  384. ------------------------------
  385.  
  386. Subject: What does PDP-8 assembly language look like?
  387.  
  388. There are many different assemblers for the PDP-8, but most use a
  389. compatible basic syntax; here is an example:
  390.  
  391.     START,    CLA CLL        / Clear everything
  392.         TAD    X    / Load X
  393.         AND I    Y    / And with the value pointed to by Y
  394.         DCA    X    / Store in X
  395.         HLT        / Halt
  396.  
  397.     X,    1         / A variable
  398.     Y,    7         / A pointer
  399.  
  400. Note that labels are terminated by a comma, and comments are separated
  401. from the code by a slash.  There are no fixed fields or column
  402. restrictions.  The "CLA CLL" instruction on the first line is an example
  403. of the microcoding of two of the Group 1 operate instructions.  CLA
  404. alone has the code 7200 (octal), while CLL has the code 7100; combining
  405. these as "CLA CLL" produces 7300.  As a general rule, except when memory
  406. reference instructions are involved, the assembler simply ors together
  407. the values of all blank separated fields between the label and comment.
  408.     
  409. Indirection is indicated by the special symbol I in the operand field,
  410. as in the third line of the example.  The typical PDP-8 assembler has no
  411. explicit notation to distinguish between page zero and current page
  412. addresses.  Instead, the assembler is expected to note the page holding
  413. the operand and automatically generate the appropriate mode.  If the
  414. operand is neither in the current page nor page zero, some assemblers
  415. will raise an error, others will automatically generate an indirect
  416. pointer to the off-page operand; this should be avoided because it only
  417. works for directly addressed off-page operands, and only when the memory
  418. management unit is not being used to address a data field other than the
  419. current instruction field.
  420.  
  421. Note, in the final two lines of the example, that there is no "define
  422. constant" pseudo-operation.  Instead, where a constant is to be
  423. assembled into memory, the constant takes the place of the op-code field.
  424.  
  425. The PDP-8 has no immediate addressing mode, but most assemblers provide
  426. a notation to allow the programmer to ignore this lack:
  427.  
  428.         TAD    (3)    / add 3, from memory on the current page.
  429.         TAD    [5]    / add 5, from memory on page zero.
  430.         JMP I    (LAB)    / jump indirect through the address of LAB.
  431.  
  432. Assemblers that support this automatically fill the end of each page
  433. with constants defined in this way that have been accumulated during the
  434. assembly of that page.  Note that the variants "(3" and "[5" (with no
  435. closing parentheses) are usually allowed but the use of this sloppy form
  436. is discouraged.  Furthermore, the widely used PAL8 assembler interprets
  437. the unlikely operand "(3)+1" as being the same as "(3+1)".
  438.  
  439. Arithmetic is allowed in operand fields and constant definitions, with
  440. expressions evaluated in strict left-to-right order, as:
  441.  
  442.         TAD    X+1    / add the contents of the location after X.
  443.         TAD    (X-1)    / add the address of the location before X.
  444.  
  445. Other operators allowed include and (&), or (!), multiply (^) and divide
  446. (%), as well as a unary sign (+ or -).  Unfortunately, one of the most
  447. widely used assemblers, PAL8, has trouble when unary operators are mixed
  448. with multiplication or division.
  449.     
  450. Generally, only the first 6 characters of identifiers are significant
  451. and numeric constants are evaluated in octal.
  452.  
  453. Other assembly language features are illustrated below:
  454.  
  455.     / Comments may stand on lines by themselves
  456.                 / Blank lines are allowed
  457.  
  458.         *200        / Set the assembly origin to 200 (octal)
  459.  
  460.     NL0002=    CLA CLL CML RTL    / Define new opcode NL0002.
  461.  
  462.         NL0002        / Use new opcode (load 0002 in AC)
  463.         JMP    .-1    / Jump to the previous instruction
  464.  
  465.     X1=    10        / Define X1 (an auto-index register address)
  466.     LETA=    "A        / Define LETA as 000011000001 (ASCII A)
  467.  
  468.         TAD I    X1    / Use autoindex register 1
  469.  
  470.         IAC; RAL    / Multiple instructions on one line
  471.  
  472.         $        / End of assembly
  473.  
  474. The assembly file ends with a line containing a $ (dollar sign) not in
  475. a comment field.
  476.  
  477. The $, * and =  syntax used by most PDP-8 assemblers replaces functions
  478. performed by pseudo-operations on many other assemblers.  In addition,
  479. PAL8, the most widely used PDP-8 assembler supports the following
  480. pseudo-operations:
  481.  
  482.         DECIMAL        / Interpret numeric constants in base 10
  483.         OCTAL        / Interpret numeric constants in base 8
  484.         EJECT        / Force a page eject in the listing
  485.         XLIST        / Toggle listing
  486.         XLIST    N    / Turn on listing if N=0, off if N=1
  487.         PAGE          / Advance location counter to next page
  488.         PAGE     N    / Set location counter start of page N
  489.         FIELD    N    / Assemble into extended memory field N
  490.         TEXT    "STR"    / Pack STR into consecutive 6 bit bytes
  491.         ZBLOCK    N    / Allocate N words, initialized to zero
  492.         IFDEF    S <C>    / Assemble C if symbol S is defined
  493.         IFNDEF    S <C>    / Assemble C if symbol S is not defined
  494.         IFZERO    E <C>    / Assemble C if expression E is zero
  495.         IFNZRO    E <C>    / Assemble C if expression E is not zero
  496.         FIXMRI  OP= VAL    / Define OP as memory reference instruction
  497.  
  498. Conditonally assembled code must be enclosed in angle brackets.  The
  499. enclosed code may extend over multiple lines and, because different
  500. assemblers treat comments within conditionals differently, the closing
  501. bracket should not be in a comment and any brackets in comments should
  502. be balanced.
  503.  
  504. ------------------------------
  505.  
  506. Subject: What character sets does the PDP-8 support?
  507.  
  508. From the beginning, PDP-8 software has generally assumed that textual
  509. I/O would be in 7 bit ASCII.  Most early PDP-8 systems used teletypes
  510. as console terminals; as sold by DEC, these were configured for mark
  511. parity, so most older software assumes 7 bit ASCII, upper case only,
  512. with the 8th bit set to 1.  On output, lines are generally terminated
  513. with both CR and LF; on input, CR is typically (but not always) the
  514. line terminator and LF is typically ignored.  In addition, the tab
  515. character (HT) is generally allowed, but software support output of text
  516. containing tabs varies.
  517.  
  518. One difficulty with much PDP-8 software is that it bypasses the device
  519. handlers provided by the operating system and goes directly to the
  520. device.  This results in very irregular device support, so that, for
  521. example, control-S and control-Q work to start and stop output under
  522. OS/8, but the OS/8 PAL assembler ignores them when reporting errors.
  523.  
  524. Most of the better engineered PDP-8 software tends to fold upper and
  525. lower case on input, and it ignores the setting of the 8th bit.  Older
  526. PDP-8 software will generally fail when presented with lower case
  527. textual input (this includes essentially all OS/8 products prior to
  528. OS/278 V1).
  529.  
  530. Internally, PDP-8 programmers are free to use other character sets, but
  531. the "X notation provided by the assembler encourages use of 7 bit ASCII
  532. with the 8th bit set to 1, and the TEXT pseudo-operation encourages the
  533. 6 bit character set called "stripped ASCII".  To map from upper-case-only
  534. ASCII to stripped ASCII, each 8 bit character is anded with octal 77 and
  535. then packed 2 characters per word, left to right.  Many programs use a
  536. semi-standard scheme for packing mixed upper and lower case into 6 bit
  537. TEXT form; this uses ^ to flip from upper to lower case or lower to
  538. upper case, % to encode CR-LF pairs, and @ (octal 00) to mark end of
  539. string.  Note that this scheme makes no provision for encoding the %,
  540. ^ and @ characters, nor does it allow control characters other than the
  541. CR-LF pair.
  542.  
  543. The P?S/8 operating system supports a similar 6 bit text file format,
  544. where upper and lower case are folded together, tabs are stored as _
  545. (underline), end-of-line is represented by 00, padded with any
  546. nonzero filler to a word boundary, and end of file is 0000.
  547.  
  548. Files under the widely used OS/8 system consist of sequences of 256 word
  549. blocks.  When used for text, each block holds 384 bytes, packed 3 bytes
  550. per pair of words as follows:
  551.  
  552.         aaaaaaaa        ccccaaaaaaaa
  553.         bbbbbbbb        CCCCbbbbbbbb
  554.         ccccCCCC
  555.  
  556. Control Z is used as an end of file marker.  Because most of the PDP-8
  557. system software was originally developed for paper tape, binary object
  558. code is typically stored in paper-tape image form using the above packing
  559. scheme.
  560.  
  561. ------------------------------
  562.  
  563. Subject: What different PDP-8 models were made?
  564.  
  565. The total sales figure for the PDP-8 family is estimated at over 300,000
  566. machines.  Over 7000 of these were sold prior to 1970.  During the PDP-8
  567. production run, a number of models were made, as listed in the following
  568. table.  Of these, the PDP-8/E is generally considered to be the
  569. definitive machine.  If the PDP-8 is considered to be the Model T of the
  570. computer industry, perhaps the PDP-8/E should be considered to be the
  571. industry's Model A.
  572.  
  573.     MODEL    DATES    SALES   COST    TECHNOLOGY    REMARKS
  574.  
  575.     PDP-5    63-67     116        Transistor
  576.     PDP-8    65-69     1450    $18,500    Transistor
  577.     LINC-8    66-69     142    $38,500    Transistor
  578.     PDP-8/S    66-70    1024    $10,000    Transistor    Very slow
  579.     PDP-8/I    68-71     3698    $12,800    TTL
  580.     PDP-8/L    68-71     3902     $8,500    TTL        Scaled down 8/I
  581.     PDP-12    69-73?    3500?    $27,900    TTL        Followup to LINC-8
  582.     PDP-8/E    70-78    >10K?     $7,390    TTL MSI    Omnibus
  583.     PDP-8/F    72-78?    >10K?    <$7K    TTL MSI Omnibus    Based on 8/E CPU
  584.     PDP-8/M    72-78?    >10K?    <$7K    TTL MSI Omnibus    OEM version of 8/F
  585.     PDP-8/A    75-84?    >10K?     $1,317    TTL LSI Omnibus    New CPU or 8/E CPU
  586.     VT78    78-80        <$10K    Harris 6120    Workstation
  587.     DECmate I    80-84            Harris 6120    Workstation
  588.     DECmate II    82-86         $1,435    Harris 6120    Workstation
  589.     DECmate III    84-90         $2,695    Harris 6120    Workstation
  590.     DECmate III+85-90            Harris 6120    Workstation
  591.  
  592. Additional information is available in part two of this FAQ, where all
  593. known models of the PDP-8, along with variants, alternate marketing
  594. names, and other peculiarities are given.
  595.  
  596. The last years of the PDP-8 family were dominated by the PDP-8 compatible
  597. microprocessor based VT78 and DECmate workstations.  DEC also used the
  598. Harris 6120 microprocessors in many peripheral controllers for the
  599. PDP-11 and PDP-15.  While all of the earlier PDP-8 systems were open
  600. architecture systems, the DECmates had closed architectures with an
  601. integrated console terminals and limited peripheral options.
  602.  
  603. The following PDP-8 compatible or semi-compatible machines were made and
  604. sold by others; very little is known about many of these:
  605.  
  606.     MODEL        DATE    MAKER, NOTES
  607.  
  608.     MP-12        6?    Fabritek (a surviving example runs FOCAL).
  609.     TPA        68?    Hungarian, a PDP-8/L clone, ran FOKAL
  610.     Electrotechnica-100I ?    Yugoslavian, a PDP-8/I clone or OEM label.
  611.     Saratov-2    ?    Russian, a slow clone, perhaps PDP-8/S
  612.     Voronezh    ?    Russian, another PDP-8/? clone
  613.     SPEAR u-LINC 100?    SPEAR, Inc, Waltham Mass (a LINC clone!)
  614.     SPEAR u-LINC 300?    SPEAR, Inc, Waltham Mass (a LINC clone!)
  615.     DCC-112        70-71    Digital Computer Controls
  616.     DCC-112H    71    Digital Computer Controls
  617.     6100 Sampler    7?    Intersil, their IM6100 promotional kit
  618.     Intercept I    7?    Intersil, based on IM6100
  619.     Intercept Jr    7?    Intersil, based on IM6100
  620.     PCM-12        7?    Pacific CyberMetrix, based on Intercept bus
  621.     PCM-12A        7?    Pacific CyberMetrix, fixed to clock at 4MHz
  622.     SBC-8        84-88    CESI, Based on IM6120, SCSI bus
  623.     
  624. ------------------------------
  625.  
  626. Subject: What about the LINC/8 and PDP-12?
  627.  
  628. Wesley Clark, then at Lincoln Labs, developed the LINC, or Laboratory
  629. INstrumentation Computer, as a personal laboratory computer in the
  630. early 1960's.  He developed it in response to the needs of Mary Brazier,
  631. a neurophysiologist at MIT who needed better laboratory tools.  Over 24
  632. LINC systems were built by customers before late 1964 when DEC began
  633. selling a commercial version (see Computers and Automation, Nov. 1964,
  634. page 43).  By the time DEC introduced the LINC-8, 43 LINC systems had
  635. been installed (see Computers and Automation, Mar. 1966, page 34).
  636.  
  637. When Lincoln Labs decided that the LINC did not fit their mission, a
  638. group at the the National Institute of Health funded an experiment to
  639. see if the LINC would be a productive tool in the life sciences.  As a
  640. result of this project, 12 LINCs were built and debugged, each by its
  641. eventual user.
  642.  
  643. The LINC was the first 12 bit minicomputer built using DEC hardware.
  644. Like the PDP-5 and other early DEC computers, it was built with system
  645. modules, DEC's first family of logic modules.  Along with the CDC 160,
  646. it paved the way for the PDP-5 and PDP-8.
  647.  
  648. When compared with the PDP-8, the LINC instruction set was not as well
  649. suited for general purpose computation, but the common peripherals
  650. needed for lab work such as analog-to-digital and digital-to-analog
  651. converters were all bundled into the LINC system.  Users judged it to
  652. be a superb laboratory instrument.
  653.  
  654. One of the major innovations introduced with the LINC was the LINCtape.
  655. These tapes could be carelessly pocketed or dropped on the floor
  656. without fear of data loss, and they allowed random access to data
  657. blocks.  DEC improved on this idea slightly to make their DECtape
  658. format, and DECtape was widely used with all DEC computers made in the
  659. late 1960's and early 1970's.
  660.  
  661. The motives behind the development of LINCtape were the same motives
  662. that led IBM to develop the floppy disk almost a decade later, and in
  663. fact, DECtape survived as a widely used medium until DEC introduced the
  664. RX01 8 inch floppy disk drive around 1975, and even after this, DECtape
  665. was only slowly phased out.
  666.  
  667. Within a year of the introduction of the PDP-8, DEC released the LINC-8,
  668. a machine that combined a PDP-8 with a LINC in one package.  The
  669. success of the LINC-8 led DEC to re-engineer the machine using TTL
  670. logic in the late 1960's; the new version was originally to be called
  671. the LINC-8/I, but it was sold as the PDP-12.  Both the LINC-8 and the
  672. PDP-12 had impressive consoles, with separate sets of lights and
  673. switches for the LINC and PDP-8 halves.
  674.  
  675. The success of the LINC-8 also led to the development of a clone, the
  676. SPEAR micro-LINC.  This machine used Motorola MECL integrated circuits
  677. and was available for delivery in (June 1965? this date must be wrong!).
  678.  
  679. The LINC-8 and PDP-12 could run essentially any PDP-8 or LINC program,
  680. with the exception of the few programs that relied on the primitive
  681. interrupt structure of the original LINC architecture; on the LINC-8,
  682. all interrupts were handled by the PDP-8 side of the hardware.  Because
  683. the LINC-8 and PDP-12 had instructions for switching between modes, a
  684. new body of software was developed that required both modes.
  685.  
  686. One feature of LINC and LINC-8 software is the common use of the graphic
  687. display for input-output.  These machines were some of the first to
  688. include such a display as a standard component, and many programs used
  689. the knobs on the analog to digital converter to move a cursor on the
  690. display in the way we now use a mouse.
  691.  
  692. Various versions of LAP, the Linc Assembly Program, were the dominant
  693. assemblers used on the LINC.  WISAL (WISconson Assembly Language) or
  694. LAP6-W was the version of this assembler that survived to run on the
  695. PDP-12.  Curiously, this includes a PDP-8 assembler written in LINC code.
  696.  
  697. LAP6-DIAL (Display Interactive Assembly Language) evolved from this on
  698. the PDP-12 to became the dominant operating system for the PDP-12.  The
  699. 8K version of this is DIAL MS (Mass Storage), even if it has only two
  700. LINCtape drives.  These were eventually displaced by the OS/8 variant
  701. known as OS/12.
  702.  
  703. ------------------------------
  704.  
  705. Subject: Where can I get a PDP-8 today?
  706.  
  707. The CESI machine may still be on the market, for a high price, but
  708. generally, you can't buy a new PDP-8 anymore.  There are quite a few
  709. PDP-8 machines to be found in odd places on the used equipment market.
  710. They were widely incorporated into products such as computer controlled
  711. machine tools, X-ray diffraction machines, and other industrial and lab
  712. equipment.  Many of them were sold under the EduSystem marketing
  713. program to public schools and universities, and others were used to
  714. control laboratory instrumentation.  After about 1976, Reuters bought
  715. as many as 10,000 OMNIBUS based machines per year, with perhaps 2000 per
  716. year going to other customers.
  717.  
  718. If you can't get real hardware, you can get emulators.  Over the years,
  719. many PDP-8 emulators have been written; the best of these are
  720. indistinguishable from the real machine from a software prespective,
  721. and on a modern high-speed RISC platform, these frequently outperform
  722. the hardware they are emulating.  Emulators are available from:
  723.  
  724.   ftp://sunsite.unc.edu/pub/academic/computer-science/history/pdp-8/emulators
  725.  
  726. Finally, you can always build your own.  The textbook "The Art of
  727. Digital Design," second edition, by Franklin Prosser and David Winkel
  728. (Prentice-Hall, 1987, ISBN 0-13-046780-4) uses the design of a PDP-8 as
  729. a running example.  Many students who have used this book were required
  730. to build working PDP-8 systems as lab projects.
  731.  
  732. ------------------------------
  733.  
  734. Subject: Where can I get PDP-8 documentation?
  735.  
  736. Part II of this FAQ cites the key documents published by DEC describing
  737. each model of the PDP-8.  These are all out of print, and DEC was in the
  738. habit of printing much of their documentation on newsprint with
  739. paperback bindings, which is to say, surviving copies tend to be yellow
  740. and brittle.  DEC distributed huge numbers of catalogs and programming
  741. handbooks in this inexpensive paperback format, and these circulate
  742. widely on the second-hand market.  When research laboratories and
  743. electronics shops are being cleaned out, it is still common to find a
  744. few dusty, yellowed copies of these books being thrown out.
  745.  
  746. Douglas Jones has made a small number of bound photocopies of DEC's
  747. 1973 introduction to programming, perhaps the definitive introduction
  748. to the PDP-8, and the other early DEC handbooks need similar treatment
  749. before they all crumble.
  750.  
  751. Maintenance manuals are harder to find, but more valuable.  If you need
  752. one, you usually need to find someone willing to photocopy one of the
  753. few surviving copies.  DEC has been friendly to collectors, granting
  754. fairly broad letters of permission to reprint obsolete documentation,
  755. and the network makes if fairly easy to find someone who has the
  756. documentation you need and can get copies.  The most difficult to copy
  757. material is the large prints, many of which would be quite useful if
  758. photoreduced, but this is expensive.
  759.  
  760. ------------------------------
  761.  
  762. Subject: What operating systems were written for the PDP-8?
  763.  
  764. A punched paper-tape library of stand-alone programs was commonly used
  765. with the smallest (diskless and tapeless) configurations from the
  766. beginning up through the mid 1970's.  This included a paper-tape based
  767. text editor, the PAL III and MACRO-8 assembler, and a FORTRAN compiler,
  768. as well as a library of support routines.  Many paper tapes from this
  769. library survive to the present at various sites!  The minimum
  770. configuration expected by these tapes is a CPU with 4K memory and a
  771. teletype ASR 33 with paper tape reader and punch.  Note that much of this
  772. paper-tape-based software is based on memory-use and I/O conventions that
  773. are incompatible with later disk-based systems.
  774.  
  775. The DECtape Library System was a DECtape oriented save and restore system
  776. that was available from the start.  The resident portion of this system
  777. occupies only 17 words of memory (7600-7625 octal), and it allowed saving
  778. and restoring absolute core images as named files on a reel of DECtape.
  779. Initially, program development was still done with paper tape, and only
  780. executable memory images were stored on DECtape, but eventually, a limited
  781. DECtape-based text editor was introduced, along with a DECtape based
  782. assembler.
  783.  
  784. The 4K Disk Monitor System provided slightly better facilities.  This
  785. supported on-line program development and it worked with any device that
  786. supported 129 word blocks (DECtape, the DF32 disk, or the RF08 disk).
  787. It was quite slow, but it also used very little of the available memory.
  788.  
  789. MS/8 or the R-L Monitor System, was developed starting in 1966 and
  790. submitted to DECUS in 1970.  This was a disk oriented system, faster than
  791. the above, with tricks to make it run quickly on DECtape based systems.
  792.  
  793. POLY BASIC was a BASIC only system submitted to DECUS and later sold by
  794. DEC as part of its EduSystem marketing program.  EduSystem 25 Basic
  795. is available from:
  796.  
  797.     ftp://nickel.ucs.indiana.edu/pub/DEC/PDP8/Langs/Edu25Basic
  798.  
  799. P?S/8 was developed starting in 1971 from an MS/8 foundation.  It runs
  800. on minimal PDP-8 configurations, supports somewhat device independant
  801. I/O and requires a random-access device for the file system (DECtape is
  802. random-access!).  P?S/8 runs compatibly on most PDP-8 machines including
  803. DECmates, excepting only the PDP-8/S and PDP-5.  P?S/8 is still being
  804. developed!
  805.  
  806. Richard F. Larry developed a system called the Fully Upward Compatible
  807. Keyboard Monitor; and between a Wednesday and the following Friday, a
  808. prototype was up and running from DECtape.  The original intention of
  809. this project was to build a programming environment for the PDP-8 that
  810. looked like TOPS-10 on the PDP-10.  A year later, this was released as
  811. Programming System/8 (or PS/8), and then renamed OS/8 in 1971 because
  812. Eli Glaser (a salesman from Long Island) said he could sell more systems
  813. with an operating system than with a programming system, and because, by
  814. renaming the system, DEC could increase the price despite Nixon's
  815. wage-price freeze.
  816.  
  817. OS/8, developed in parallel with P?S/8, became the main PDP-8 programming
  818. environment sold by DEC.  The minimum configuration required was 8K words
  819. and a random-access device to hold the system.  For some devices, OS/8
  820. requires 12K.  There are a large number of OS/8 versions that are not
  821. quite portable across various subsets of the PDP-8 family.  OS/8 V3D was
  822. renamed OS/78 (to match the VT78), and by the time OS/78 V3 was released,
  823. support for Omnibus machines was no longer important.  OS/78 V4 was
  824. developed for the DECmate I, and the name OS/278 used for the versions
  825. released with later DECmate machines.  These have unnecessary
  826. incompatabilities with earlier versions of OS/8.  OS/278 and related
  827. material is available from:
  828.  
  829.     ftp://ftp.telebit.com/pub/pdp8/os278
  830.     ftp://ftp.update.uu.se/pub/pdp8
  831.     ftp://sunsite.unc.edu/pub/academic/computer-science/history/pdp-8/os8
  832.  
  833. OS8 (no slash) may still be viable.  It requires 8K of main memory, an
  834. extended arithmetic unit, and DECtape hardware.  Unlike most PDP-8
  835. operating systems, it uses a directory structure on DECtape compatible
  836. with that used on the PDP-10.
  837.  
  838. TSS/8 was developed in 1968 as a timesharing system.  It required a
  839. minimum of 12K words of memory and a swapping device.  It was the
  840. standard operating system on the EduSystem 50 which was sold to many
  841. small colleges and large public school systems.  Each user gets a
  842. virtual 4K PDP-8; many of the utilities users ran on these virtual
  843. machines were only slightly modified versions of utilities from the
  844. Disk Monitor System or paper-tape environments.
  845.  
  846. Other timesharing systems developed for the PDP-8 include MULTI-8, ETOS,
  847. MULTOS, and OMNI-8; some of these required nonstandard memory management
  848. hardware.  By the mid 1970's, some of these were true virtual machine
  849. operating systems in the same spirit as IBM's VM-370; they typically
  850. supported some version of OS/8 running on a 32K virtual PDP-8 assigned
  851. to each user.  Some could support different user operating systems on
  852. each virtual machine, others supported addressing of more than 4K for
  853. data, but limited code to field zero of a process's virtual memory.
  854. The source for MULTOS is available from:
  855.  
  856.     ftp://ftp.update.uu.se/pub/pdp8/multos8
  857.  
  858. CAPS-8 was a cassette based operating system supporting PAL and BASIC.
  859. There are OS/8 utilities to manipulate CAPS-8 cassettes, and the file
  860. format on cassette is compatible with a PDP-11 based system called
  861. CAPS-11.
  862.  
  863. RTS/8 was a real-time system developed by DEC, developed from an earlier
  864. system, SRT8, dating back to at least 1974.  Curiously, even the last
  865. versions of RTS/8 continued to support paper-tape and DECtape.  Source
  866. code for most of the versions of RTS and SRT are available from:
  867.  
  868.     ftp://sunsite.unc.edu/pub/academic/computer-science/history/pdp-8/rts8
  869.  
  870. WPS was DEC's word processing system, developed for the 8/E with a VT50
  871. terminal with special WPS keycaps replacing the standard keycaps, and
  872. widely used on the 1980's vintage machines.  It was heavily promoted on
  873. the VT-78, and when the DECmates came out, DEC began to suppress knowledge
  874. that DECmates could run anything else.  WPS-11 was a curious distributed
  875. system using a PDP-11 as a file server for a cluster of VT-78 WPS systems.
  876.  
  877. COS-310, DEC's commercial operating system for the PDP-8, supported the
  878. DIBOL language.  COS-310 was a derivative of MS/8 and OS/8, but with a
  879. new text file format.  The file system is almost the same as OS/8, but
  880. dates are recorded differently, and a few applications can even run under
  881. both COS and OS/8.  COS was the last operating system other than WPS
  882. promoted by DEC for the DECmates.
  883.  
  884. ------------------------------
  885.  
  886. Subject: What programming languages are supported on the PDP-8
  887.  
  888. The PAL family of assembly languages, particularly PAL III and PAL8 are
  889. as close to a standard assembly language as can be found for the PDP-8.
  890. These produce absolute object code and there are versions of PAL for
  891. minimally configured machines, although these have severe symbol table
  892. limitations.  Cross assemblers that are somewhat compatable with PAL
  893. can be obtained from:
  894.  
  895.     ftp://ftp.cs.uiowa.edu/public/jones/pdp8/pal.c.Z
  896.     ftp://sunsite.unc.edu/pub/academic/computer-science/history/pdp-8/emulators/gray
  897.  
  898. MACRO-8 was DEC's first macro assembly language for the PDP-8, but it
  899. was rarely used outside the paper-tape environment.  MACREL and SABR are
  900. assembly languages that produce relocatable output.  SABR is the final
  901. pass for the ALICS II FORTRAN compiler (developed by ICS), and MACREL
  902. was developed in (unfulfilled) anticipation of similar use.  MACREL was
  903. heavily used by the DECmate group at DEC.  MACREL is available from
  904.  
  905.     ftp://ftp.update.uu.se/pub/pdp8/os8
  906.  
  907. There was also RALF, the relocatable assembler supporting RTPS FORTRAN,
  908. and FLAP, an absolute assembler derived from RALF.  Both SABR and
  909. RALF/FALP are assemblers that handle their intended applications but
  910. have quirky and incompatible syntax.
  911.  
  912. A subset of FORTRAN was supported on both the PDP-5 and the original
  913. PDP-8.  Surviving documentation describes a DEC compiler from 1964 and
  914. a compiler written by Information Control Systems from 1968.  The
  915. latter, ALICS II FORTRAN, was originally a paper tape based compiler,
  916. but it forms the basis of the OS/8 8K FORTRAN compiler, and was also
  917. adapted to the Disk Monitor System (the latter version had overlay
  918. support that was never carried forward into more modern systems).
  919.  
  920. RTPS FORTRAN required 8K and a floating point processor; it had real-time
  921. extensions and was a full implementation of FORTRAN IV (also known as
  922. ANSI FORTRAN 66).  OS/8 F4 is RTPS FORTRAN stripped of the requirement
  923. for hardware floating point (if the hardware is missing, it uses
  924. software emulation).  A version of FORTRAN is available from
  925.  
  926.     ftp://ftp.update.uu.se/pub/pdp8/os8
  927.  
  928. FOCAL, an interpretive language comparable to BASIC, was available on
  929. all models of the family, including the PDP-5 and PDP-8/S.  Versions of
  930. FOCAL run under OS/8, P?S/8 and other systems, and there were many special
  931. purpose overlays for FOCAL developed by DEC and by various users.  DEC's
  932. later FOCAL releases for the PDP-8 included code to deliberately introduce
  933. subtle bugs when run on a DCC 112 computer!  Various versions of FOCAL
  934. are available from:
  935.  
  936.     ftp://nickel.ucs.indiana.edu/pub/DEC/PDP8/Langs/Focal
  937.  
  938. Many versions of BASIC were also available, from DEC and other sources.
  939. DEC BASIC was widely used on PDP-8 systems sold under the EduSystem
  940. marketing program.  A paper-tape version was available that ran in 4K
  941. and was compatible with disk based systems, versions were developed for
  942. OS/8 and TSS/8, an 8K stand-alone time-sharing version was available,
  943. and there were others.  EduSystem 25 Basic is available from:
  944.  
  945.     ftp://nickel.ucs.indiana.edu/pub/DEC/PDP8/Langs/Edu25Basic
  946.  
  947. DIBOL was DEC's attempt at competing with COBOL in the commercial arena.
  948. It was originally implemented under MS/8 but most versions were sold to
  949. run under the COS operating system.
  950.  
  951. Algol was available from a fairly early date.  One version is available
  952. from:
  953.  
  954.     ftp://nickel.ucs.indiana.edu/pub/DEC/PDP8/Langs/Algol
  955.  
  956. At least two Pascal compilers were developed for the PDP-8.  One was a
  957. Pascal-S interpreter, written in assembler, the other was a Pascal-P
  958. compiler with a P-code interpreter written in assembler.
  959.  
  960. A LISP interpreters was written for the PDP-8; the original version
  961. ran in 4K (originally written in Germany?); a disassembled and commented
  962. version of this was the basis of expanded versions that eventually
  963. could utilize up to 16K.  One version of LISP is available from:
  964.  
  965.     ftp://nickel.ucs.indiana.edu/pub/DEC/PDP8/Langs/Lisp
  966.  
  967. A Pascal S interpreter, requiring a 28K PDP-8/E configuration, is available
  968. from:
  969.  
  970.     ftp://nickel.ucs.indiana.edu/pub/DEC/PDP8/Langs/Pascal
  971.  
  972. POLY SNOBOL was a version of SNOBOL that was somewhere between
  973. Griswold's definitions of SNOBOL 3 and SNOBOL 4.
  974.  
  975. TECO, the text editor, is available, and is also a general purpose
  976. language, and someone is working on a PDP-8 C.  The story of TECO on the
  977. PDP-8 is convoluted.  Russ Ham implemented TECO under his OS8 (without
  978. a slash) system.  This version of TECO was pirated by the Oregon Museum
  979. of Science and Industry (OMSI), where the system was ported to PS/8.
  980. Richard Lary and Stan Rabinowitz made it more compatible with other
  981. versions of TECO, and the result of this work is the version distributed
  982. by DECUS.  RT-11 TECO for the PDP-11 is a port of this code.
  983.  
  984. ------------------------------
  985.  
  986. Subject: Where can I get PDP-8 software?
  987.  
  988. DECUS, the DEC User Society, is still alive and well, and their submission
  989. form still lists PAL8 and FOCAL as languages in which they accept
  990. submissions!  The DECUS library catalog is available on-line by
  991. anonymous FTP at decus.org (but note, www cannot access this site!).
  992.  
  993. To quote the README file from the current on-line catalog, "Items from
  994. older DECUS Library catalogs are still also available (provided their
  995. media can still be read), but machine readable catalog information is
  996. not available for these."  Direct questions by E-mail to
  997. INFORMATION@DECUS.ORG.
  998.  
  999. The following anonymous FTP sites contain publically accessable archives
  1000. of PDP-8 software and other information:
  1001.  
  1002.     ftp://ftp.telebit.com/pub/pdp8
  1003.     ftp://ftp.update.uu.se/pub/pdp8
  1004.     ftp://nickel.ucs.indiana.edu/pub/DEC/PDP8
  1005.     ftp://sunsite.unc.edu/pub/academic/computer-science/history/pdp-8
  1006.  
  1007. The latter archive also maintains an archive of traffic in alt.sys.pdp8
  1008. in the directory ...pdp8/usenet and an archive of traffic in the
  1009. pdp8-lovers mailing list in .../pdp8/pdp8-lovers.
  1010.  
  1011. The archive at Indiana contains source code for many PDP-8 compilers and
  1012. interpreters, as well as common utilities and games.
  1013.  
  1014. ------------------------------
  1015.  
  1016. Subject: Where can I get additional information?
  1017.  
  1018. The file WHAT-IS-A-PDP8, by Charles Lasner contains considerable
  1019. additional information; this file is available by ftp from:
  1020.  
  1021.     ftp://ftp.telebit.com/pub/pdp8/WHAT-IS-A-PDP8
  1022.  
  1023. This file gives details of every PDP-8 model including the small quirks
  1024. and incompatabilities that (to be generous) allow software to determine
  1025. which model it is running on.  These quirks also make it all too easy
  1026. for careless programmers to write almost portable software with very
  1027. obscure bugs.
  1028.  
  1029. The mailing list pdp8-lovers@ai.mit.edu reaches a number of PDP-8 owners
  1030. and users, not all of whom have USENET feeds.  The USENET newsgroup
  1031. alt.sys.pdp8 needs to be gatewayed to this mailing list.
  1032.  
  1033. Many "archival" books have included fairly complete descriptions of the
  1034. PDP-8; among them, "Computer Architecture, Readings and Examples" by
  1035. Gordon Bell and Allen Newell is among the most accurate and complete
  1036. (but difficult to read).
  1037.  
  1038. ------------------------------
  1039.  
  1040. Subject: What use is a PDP-8 today?
  1041.  
  1042. What use is a Model T today?  Collectors of both come in the same basic
  1043. classes.  First, there are antiquarians who keep an old one in the
  1044. garage, polished and restored to new condition but hardly ever used.
  1045. Once a year, they warm it up and use it, just to prove that it still
  1046. works, but they don't make much practical use of it.
  1047.  
  1048. PDP-8 systems maintained by antiquarians are frequently in beautiful
  1049. shape.  Antiquarians worry about dust, chipped paint, and missing
  1050. switches, and they establish newsgroups and mailing lists to help them
  1051. locate parts and the advice needed to fix their machines.
  1052.  
  1053. In the second class are those who find old machines and soup them up,
  1054. replacing major parts to make a hotrod that only looks like the original
  1055. from the outside, or keeping the old mechanism and putting it to uses
  1056. that were never intended.  Some PDP-8 owners, for example, have built
  1057. PDP-8 systems with modern SCSI disk interfaces!  There is serious
  1058. interest in some quarters in constructing an omnibus board that would
  1059. support an IDE disk of the variety that was mass-produced for the
  1060. IBM PC/AT.
  1061.  
  1062. Last, there are the old folks who still use their old machines for their
  1063. intended purposes long after any sane economic analysis would recommend
  1064. such use.  If it ain't broke, don't fix it, and if it can be fixed,
  1065. why bother replacing it?  Both Model T Fords and the classic PDP-8
  1066. machines are simple enough that end users can maintain and repair them
  1067. indefinitely.  All you need to keep a vintage -8 running are a stock
  1068. of inexpensive silicon diodes and a stock of 2N3639B or better,
  1069. 2N3640 transistors.
  1070.  
  1071. Unlike most modern personal computers, PDP-8 systems were routinely sold
  1072. with complete maintenance manuals; these included schematic diagrams,
  1073. explanations of not only how to use the devices, but how they are built,
  1074. and suggestions to those considering building their own peripherals.
  1075. Compared with many so-called "open systems" of today, the PDP-8 was far
  1076. better documented and far more open.
  1077.  
  1078. Preservation of the PDP-8 has proven to be of immense practical value
  1079. in defending against the rising tide of patents in the area of
  1080. interactive graphics.  For example, when Magnavox sued Nintendo
  1081. for half a billion dollars, a documented copy of a ping pong game,
  1082. written on a LINC back in the early 1960's, was crucial to the proof
  1083. that computer games predated the Magnavox patent by over 5 years.
  1084. The fact that this can be run today on a surviving LINC-8 makes
  1085. demonstrating this proof far easier than if the only surviving relic
  1086. was a dusty listing.
  1087.  
  1088. Finally, the PDP-8 is such a minimal machine that it is an excellent
  1089. introduction to how computers really work.  Over the years, many students
  1090. have built complete working PDP-8 systems from scratch as lab projects,
  1091. and the I/O environment on a PDP-8 is simple enough that it is a very
  1092. appropriate environment for learning operating system programming
  1093. techniques.
  1094.  
  1095. ------------------------------
  1096.  
  1097. Subject: Who's Who?
  1098.  
  1099. C. Gordon Bell is generally credited with the original design of the
  1100. PDP-8.  He was also involved with recommending what became the PDP-11
  1101. when that design was competing with the design that probably became the
  1102. NOVA, and as vice president of research, he oversaw the development of
  1103. the DEC VAX family.
  1104.  
  1105. Alan Kotok worked with Bell in working up the original specifications
  1106. of the PDP-8.
  1107.  
  1108. Ben Gurley designed most of the big DEC machines, starting with the
  1109. PDP-1.  The actual design work on the -8, however, was done by Ed
  1110. deCastro, who later founded Data General to build the Nova.
  1111.  
  1112. Ken Olson ran DEC from the beginning.
  1113.  
  1114. Ed Yourdon, who later became well known as a programming methodology
  1115. guru, helped hack up the PAL III assembler for the -8 from PAL II.
  1116.  
  1117. Richard Merrill invented FOCAL and wrote the original (1968) and classic
  1118. FOCAL-69 interpreters for the PDP-8.  He also did early translations of
  1119. the interpreter to PDP-7/PDP-9 code and perhaps the earliest PDP-11
  1120. version.  In addition, he wrote the EDIT-8 paper-tape based text editor
  1121. based on the FOCAL built-in text editor.
  1122.  
  1123. Richard F. Lary developed OS/8, with help from Ed Friedman and another
  1124. programmer named Paul, under the management of Chuck Conley.
  1125.  
  1126. Charles Lasner developed P?S/8, and he is widely known as a leader in
  1127. the movement to preserve these historic machines.  He created the
  1128. alt.sys.pdp8 newsgroup.
  1129.  
  1130. Wesley Clark developed the LINC while working at Lincoln Labs; this was
  1131. the first 12 bit minicomputer built with DEC parts.
  1132.  
  1133. Mary Allen Wilkes Clark developed the early LAP programs for the LINC.
  1134.  
  1135. Douglas W. Jones wrote this FAQ, but prior to the summer of 1992, he'd
  1136. never used a PDP-8.  He has also written a report on how to photocopy
  1137. and archivally bind ailing paperback books such as DEC's handouts, a
  1138. PAL-like cross assembler in C, and a UNIX-based PDP-8 emulator.
  1139.  
  1140. ------------------------------
  1141.  
  1142. End of PDP-8 Frequently Asked Questions (posted every other month)
  1143. ******************************************************************
  1144.  
  1145.