summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitattributes3
-rw-r--r--29461-8.txt2081
-rw-r--r--29461-8.zipbin0 -> 27362 bytes
-rw-r--r--29461-h.zipbin0 -> 130382 bytes
-rw-r--r--29461-h/29461-h.htm2375
-rw-r--r--29461-h/images/computer.pngbin0 -> 64544 bytes
-rw-r--r--29461-h/images/instruction.pngbin0 -> 12153 bytes
-rw-r--r--29461-h/images/sys_block.pngbin0 -> 22854 bytes
-rw-r--r--29461.txt2081
-rw-r--r--29461.zipbin0 -> 27349 bytes
-rw-r--r--LICENSE.txt11
-rw-r--r--README.md2
12 files changed, 6553 insertions, 0 deletions
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..6833f05
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,3 @@
+* text=auto
+*.txt text
+*.md text
diff --git a/29461-8.txt b/29461-8.txt
new file mode 100644
index 0000000..4934832
--- /dev/null
+++ b/29461-8.txt
@@ -0,0 +1,2081 @@
+The Project Gutenberg EBook of Preliminary Specifications: Programmed Data
+Processor Model Three (PDP-3), by Digital Equipment Corporation
+
+This eBook is for the use of anyone anywhere at no cost and with
+almost no restrictions whatsoever. You may copy it, give it away or
+re-use it under the terms of the Project Gutenberg License included
+with this eBook or online at www.gutenberg.org
+
+
+Title: Preliminary Specifications: Programmed Data Processor Model Three (PDP-3)
+ October, 1960
+
+Author: Digital Equipment Corporation
+
+Release Date: July 20, 2009 [EBook #29461]
+
+Language: English
+
+Character set encoding: ISO-8859-1
+
+*** START OF THIS PROJECT GUTENBERG EBOOK PDP MODEL THREE (PDP-3) ***
+
+
+
+
+Produced by Gerard Arthus, Katherine Ward, and the Online
+Distributed Proofreading Team at https://www.pgdp.net
+
+
+
+
+
+
+
+
+
+ PRELIMINARY SPECIFICATIONS
+
+ ---
+
+ PROGRAMMED DATA PROCESSOR
+ MODEL THREE
+ (PDP-3)
+
+ ---
+
+ October, 1960
+
+ Digital Equipment Corporation
+ Maynard, Massachusetts
+
+
+
+
+TABLE OF CONTENTS
+
+
+ INTRODUCTION 1
+
+ General Description 1
+ System Block Diagram 1
+ Electrical Description 4
+ Mechanical Description 4
+ Environmental Requirements 5
+
+ CENTRAL PROCESSOR 6
+
+ Operating Speeds 6
+ Instruction Format 6
+ Number System 7
+ Indexing 8
+ Indirect Addressing 8
+ Instruction List 9
+ Manual Controls 20
+
+ STORAGE 22
+
+ STANDARD INPUT-OUTPUT 23
+
+ Paper Tape Reader 23
+ Paper Tape Punch 24
+ Typewriter 24
+
+ OPTIONAL INPUT-OUTPUT 26
+
+ Sequence Break System 26
+ High Speed In-Out Channel 26
+ Magnetic Tape 27
+ CRT Display 33
+ Real Time Clock 33
+ Line Printer 34
+
+ UTILITY PROGRAMS 35
+
+ FRAP System 35
+ DECAL System 35
+ Floating Point Subroutines 36
+ Maintenance Routines 37
+ Miscellaneous Routines 37
+
+
+
+
+INTRODUCTION
+
+
+GENERAL DESCRIPTION
+
+The DEC Programmed Data Processor Model Three (PDP-3) is a high
+performance, large scale digital computer featuring reliability in
+operation together with economy in initial cost, maintenance and use.
+This combination is achieved by the use of very fast, reliable, solid
+state circuits coupled with system design restraint. The simplicity of
+the system design excludes many marginal or superfluous features and
+thus their attendant cost and maintenance problems.
+
+The average internal instruction execution rate is about 100,000
+operations per second with a peak rate of 200,000 operations per second.
+This speed, together with its economy and reliability, recommends PDP-3
+as an excellent instrument for complex real time control applications
+and as the center of a modern computing facility.
+
+PDP-3 is a stored program, general purpose digital computer. It is a
+single address, single instruction machine operating in parallel on 36
+bit numbers. It features multiple step indirect addressing and indexing
+of addresses. The main memory makes 511 registers available as index
+registers.
+
+The main storage is coincident current magnetic core modules of 4096
+words each. The computer has a built-in facility to address 8 modules
+and can be expanded to drive 64 modules. The memory has a cycle time of
+five microseconds.
+
+
+SYSTEM BLOCK DIAGRAM
+
+The flow of information between the various registers of PDP-3 is shown
+in the System Block Diagram (Fig. 1). There are four registers of 36 bit
+length. Their functions are described below.
+
+Memory Buffer
+
+The Memory Buffer is the central switching register. The word coming
+from or going to memory is retained in this register. In arithmetic
+operations it holds the addend, subtrahend, multiplicand, or divisor.
+The left 6 bits of this register communicate with the Instruction
+Register. The address portion of the Memory Buffer Register communicates
+with the Index Adder, the Memory Address Register, and the Program
+Counter. In certain instructions, the address portion of the control
+word does not refer to memory but specifies variations of an
+instruction, thus, the address portion of the Memory Buffer is connected
+to the Control Element.
+
+Accumulator
+
+The Accumulator is the main register of the Arithmetic Element. Sums and
+differences are formed in the Accumulator. At the completion of
+multiplication it holds the high order digits of the product. In
+division it initially contains the high order digits of the dividend and
+is left with the remainder.
+
+The logical functions AND, inclusive OR, and exclusive OR, are formed in
+the Accumulator.
+
+Carry Storage Register
+
+The Carry Storage Register facilitates high-speed multiply and is
+properly part of the Accumulator.
+
+In-Out Register
+
+The In-Out Register is the main path of communication with external
+equipment. It is also part of the Arithmetic Element. In multiplication
+it ends with the low order digits of the product. In division it starts
+with the low order parts of the dividend and ends with the quotient.
+
+The In-Out Register has a full set of shifting properties, (arithmetic
+and logical).
+
+ * * * * *
+
+There are three registers of 15 bit length which deal exclusively with
+addresses. The design allows for expansion to 18 bits. These registers
+are:
+
+Memory Addressing
+
+The Memory Address Register holds the number of the memory location that
+is currently being interrogated. It receives this number from the
+Program Counter, the Index Adder or the Memory Buffer.
+
+Program Counter
+
+The Program Counter holds the memory location of the next instruction to
+be executed.
+
+Index Adder
+
+The Index Adder is a 15 bit ring accumulator. The sum of an instruction
+base address, Y, and the contents of an index register, C(x), are formed
+in this register. This register holds the previous content of the
+Program Counter in the "jump and save Program Counter," jps,
+instruction. The Index Adder also serves as the step counter in shift,
+multiply, and divide.
+
+ * * * * *
+
+The Control Element contains two six bit registers and several
+miscellaneous flip-flops. The latter deal with indexing, indirect
+addressing, memory control, etc. The six bit registers are:
+
+Instruction Register
+
+The Instruction Register receives the first six bits of the Memory
+Buffer Register during the cycle which obtains the instruction from
+memory (cycle zero). This information is the primary input to the
+Control Element.
+
+Program Flags
+
+The six Program Flags act as convenient program switches. They are used
+to indicate separate states of a program. The program can set, clear, or
+sense the individual flip-flops. The program can also sense or make the
+state "All Flags ZERO." They can also be used to synchronize various
+input devices which occur at random times (see Input-Output, Typewriter
+Input).
+
+ * * * * *
+
+Three toggle switch registers are connected to the Central Processor
+(see Manual Controls).
+
+Test Address
+
+The fifteen Test Address Switches are used to indicate start points and
+to select memory registers for manual examination or change.
+
+Test Word
+
+The thirty-six Test Word Switches indicate a new number for manual
+deposit into memory. They may also be used for insertion of constants
+while a program is operating by means of the operate instruction.
+
+Sense Switches
+
+The six Sense Switches allow the operator to manually select program
+options or cause a jump to another program in memory. The program can
+sense individual switches or the state "All Switches ZERO."
+
+
+ELECTRICAL DESCRIPTION
+
+The PDP-3 circuitry is the static type using saturating transistor
+flip-flops and, for the most part, transistor switch elements. The
+primary active elements are Micro-Alloy and Micro-Alloy-Diffused
+transistors. The flip-flops have built-in delay so that a logic net may
+be sampled and changed simultaneously.
+
+Machine timing is performed by a delay line chain. Auxiliary delay line
+chains time the step counter instructions (multiply, divide, etc.). The
+machine is thus internally synchronous with step counter instructions
+being asynchronous. The machine is asynchronous for in-out operations,
+that is, the completion of an in-out operation initiates the following
+instruction.
+
+
+MECHANICAL DESCRIPTION
+
+The PDP-3 consists of two mechanical assemblies, the Console and the
+Equipment Frame. Fig. 3 is a photograph of PDP-1 which is an 18 bit
+version of PDP-3.
+
+Console
+
+The Console is a desk approximately seven feet long. It contains the
+controls and indicators necessary for operation and maintenance of the
+machine. A cable connects the Console to the Equipment Frame.
+
+Equipment Frame
+
+The Equipment Frame is approximately six feet high and two feet deep.
+The length is a function of the amount of optional features included.
+The Central Processor requires a length of five and one half feet. The
+power cabinet is twenty-two inches long. A memory cabinet is thirty-two
+inches long and will hold three memory modules (12,288 words per
+cabinet). Memory cabinets may be added at any time.
+
+Magnetic tape units require twenty-two inches per transport. A tape unit
+cabinet may be connected as an extension of the Equipment Frame or may
+be a free-standing frame.
+
+
+ENVIRONMENTAL REQUIREMENTS
+
+The PDP-3 requires no special room preparation. The computer will
+operate properly over the normal range of room temperature.
+
+The Central Processor and memory together require thirty amperes of 110
+volts single phase 60 cycle ac. Each inactive tape transport requires
+two amperes and the one active transport requires 10 amperes.
+
+
+
+
+CENTRAL PROCESSOR
+
+
+The Central Processor of PDP-3 contains the Control Element, the Memory
+Buffer Register, the Arithmetic Element, and the Memory Addressing
+Element. The Control Element governs the complete operation of the
+computer including memory timing, instruction performance, and the
+initiation of input-output commands. The Arithmetic Element, which
+includes the Accumulator, the In-Out Register, and the Carry Storage
+Register, performs the arithmetic operations. The Memory Addressing
+Element which includes the Index Adder, the Program Counter, and the
+Memory Address Register, performs address bookkeeping and modification.
+
+
+OPERATING SPEEDS
+
+Operating times of PDP-3 instructions are normally multiples of the
+memory cycle of 5 microseconds. Two cycle instructions refer twice to
+memory and thus require 10 microseconds for completion. Examples of this
+are add, subtract, deposit, load, etc. One cycle instructions do not
+refer to memory and require 5 microseconds. Examples of the latter are
+the jump instructions, the skip instructions, and the operate group. The
+operating times of variable cycle instructions depend upon the
+instruction. For example, the operating time for a shift or rotate
+instruction is 5 +0.2N microseconds, where N is the number of shifts
+performed. The operating times for multiply and divide are functions of
+the number of ones in the multiplier and in the quotient, respectively.
+Maximum time for multiply is 25 microseconds. This includes the time
+necessary to get the multiply instruction from memory. Divide takes 90
+microseconds maximum.
+
+In-Out Transfer instructions that do not include the optional wait
+function require 5 microseconds. If the in-out device requires a wait
+time for completion, the operating time depends upon the device being
+used.
+
+If an instruction includes reference to an index register, an additional
+5 microseconds is required. Each step of indirect addressing also
+requires an additional 5 microseconds.
+
+
+INSTRUCTION FORMAT
+
+The instructions for PDP-3 may be divided into three classes:
+
+ 1. Indexable memory instructions
+ 2. Non-indexable memory instructions
+ 3. Non-memory instructions.
+
+The layout of the instruction word is shown in Fig. 2.
+
+The octal digits 0 and 1 define the instruction code, thus, there are 64
+possible instruction codes, not all of which are used. The first bit of
+octal digit 2 is the indirect address bit. If this bit is a ONE,
+indirect addressing occurs.
+
+The index address, X, is in octal digits 3, 4, and 5. These digits
+address an index register for memory-type instructions. If these digits
+are all ZERO, indexing will not take place. In main memory, 511 of the
+registers can be used as automatic index registers.
+
+The instruction base address, Y, is in octal digits 7 through 11. These
+digits are sufficient to address 32,768 words of memory. Octal digit 6
+is reserved for further memory expansion. Space is available in the
+equipment frame for this expansion, should it prove desirable.
+
+In those instructions which do not refer to memory, the memory address
+digits, Y, and in some cases the index address digits also, are used to
+specify the variations in any group of instructions. An example of this
+is in the shift and rotate instructions in which the memory address
+digits determine the number of shifts.
+
+
+NUMBER SYSTEM
+
+The PDP-3 is a "fixed" point machine using binary arithmetic. Negative
+numbers are represented as the 1's complement of the positive numbers.
+Bit 0 is the sign bit which is ZERO for positive numbers. Bits 1 to 35
+are magnitude bits with bit 1 being the most significant and bit 35
+being the least significant.
+
+The actual position of the binary point may be arbitrarily assigned to
+best suit the problem in hand. Two common conventions in the placement
+of the binary point are:
+
+1. The binary point is to the right of the least significant digit,
+thus, numbers represent integers.
+
+2. The binary point is to the right of the sign digit, thus the numbers
+represent a fraction which lies between ±1.
+
+The conversion of decimal numbers into the binary system for use by the
+machine may be performed automatically by subroutines. Similarly the
+output conversion of binary numbers into decimals is done by subroutine.
+Operations for floating point numbers are handled by programming. The
+utility program system provides for automatic insertion of the routines
+required to perform floating point operations and number base conversion
+(see Utility Programs).
+
+
+INDEXING
+
+In PDP-3, 511 registers of the main magnetic core memory are available
+for use as automatic index registers. Their addresses are specified by
+octal digits 3 to 5 of the instruction word. These registers are memory
+locations 001-777 (octal). Address 000 specifies that no index register
+is to be used with the instructions. The contents of octal digits 7
+through 11 of the selected index register are added to the unmodified
+address (octal digits 7 through 11 of the instruction).
+
+This sum is used to locate the operand. The addition is done in the
+Index Adder which is a 15 bit 1's complement adder. The contents of the
+Accumulator and the In-Out Register are unaffected by the indexing
+process. An instruction which has used indexing is retained in memory
+with its original address unmodified. Memory registers 1-777 (octal) are
+available for use as normal memory registers if they are not being used
+as index registers. The left half of these registers is available for
+the storage of constants, tables, etc., when octal digits 7 through 11
+act as index registers.
+
+Three special instructions snx, spx and lir, are available to facilitate
+resetting, advancing, and sampling of the index registers. Since the
+index registers are normal memory registers, their contents can also be
+manipulated by the standard computer instructions.
+
+
+INDIRECT ADDRESSING
+
+An instruction which is to use an indirect address will have a ONE in
+bit six of the instruction word. The original address, Y, of the
+instruction will not be used to locate the operand of the instruction,
+as is the normal case. Instead, it is used to locate a memory register
+whose contents in octal digits 7 through 11 will be used as the address
+of the original instruction. This new address is known as the indirect
+address for the instruction and will be used to locate the operand. If
+the memory register containing the indirect address also has a 1 in bit
+six, the indirect addressing procedure is repeated again and a third
+address is located. There is no limit to the number of times this
+process can be repeated.
+
+Index registers may be used in conjunction with indirect addressing. In
+this case, the address after being modified by the selected index
+register is used to locate the indirect address.
+
+The indirect address can be acted on by an index register and deferred
+again if desired. Each use of an index register or an indirect address
+extends the operating time of the original instruction by 5
+microseconds.
+
+
+INSTRUCTION LIST
+
+This list includes the title of the instruction, the normal execution
+time of the instruction, i.e., the time with no indexing and no
+deferring, the mnemonic code of the instruction, and the operation code
+number. The notation used requires the following definitions. The
+contents of a register Q are indicated as C(Q). The address portion of
+the instruction is indicated by Y. The index register address of an
+instruction is indicated by x. The effective address of an operand is
+indicated by Z. Z may be equal to Y or it may be Y as modified by
+deferring or by indexing.
+
+
+Indexable Memory Instructions
+
+Arithmetic Instructions
+
+ _Add_ (10 usec.)
+ add x Y Operation Code 40
+
+The new C(AC) are the sum of C(Z) and the original C(AC). The C(Z) are
+unchanged. The addition is performed with 1's complement arithmetic.
+
+If the sum exceeds the capacity of the Accumulator Register, the
+overflow flip-flop will be set (see Skip Group instructions).
+
+ _Subtract_ (10 usec.)
+ sub x Y Operation Code 42
+
+The new C(AC) are the original C(AC) minus the C(Z). The C(Z) are
+unchanged. The subtraction is performed using 1's complement
+arithmetic.
+
+If the difference exceeds the capacity of the Accumulator, the overflow
+flip-flop will be set (see Skip Group instructions).
+
+ _Multiply_ (approximately 25 usec.)
+ mul x Y Operation Code 54
+
+The C(AC) are multiplied by the C(Z). The most significant digits of the
+product are left in the Accumulator and the least significant digits in
+the In-Out Register. The previous C(AC) are lost.
+
+ _Divide_ (approximately 90 usec.)
+ div x Y Operation Code 56
+
+The Accumulator and the In-Out Register together form a 70 bit dividend.
+The high order part of the dividend is in the Accumulator. The low order
+part of the dividend is in the In-Out Register. The divisor is (Z).
+
+Upon completion of the division, the quotient is in the In-Out Register.
+The remainder is in the Accumulator. The sign of the remainder is the
+same as the sign of the dividend. If the dividend is larger than C(Z),
+the overflow flip-flop will be set and the division will not take place.
+
+Logical Instructions
+
+ _Logical AND_ (10 usec.)
+ and x Y Operation Code 02
+
+The bits of C(Z) operate on the corresponding bits of the Accumulator to
+form the logical AND. The result is left in the Accumulator. The C(Z)
+are unaffected by this instruction.
+
+Logical AND Function Table
+
+ AC Bit C(Z) Bit Result
+ 0 0 0
+ 0 1 0
+ 1 0 0
+ 1 1 1
+
+ _Exclusive OR_ (10 usec.)
+ xor x Y Operation Code 06
+
+The bits of C(Z) operate on the corresponding bits of the Accumulator to
+form the exclusive OR. The result is left in the Accumulator. The C(Z)
+are unaffected by this order.
+
+Exclusive OR Table
+
+ AC Bit C(Z) Bit Result
+ 0 0 0
+ 0 1 1
+ 1 0 1
+ 1 1 0
+
+ _Inclusive OR_ (10 usec.)
+ ior x Y Operation Code 04
+
+The bits of C(Z) operate on the corresponding bits of the Accumulator to
+form the inclusive OR. The result is left in the Accumulator. The C(Z)
+are unaffected by this order.
+
+Inclusive OR Table
+
+ AC Bit C(Z) Bit Result
+ 0 0 0
+ 0 1 1
+ 1 0 1
+ 1 1 1
+
+General Instructions
+
+ _Load Accumulator_ (10 usec.)
+ lac x Y Operation Code 20
+
+The C(Z) are placed in the Accumulator. The C(Z) are unchanged. The
+original C(Z) are lost.
+
+ _Deposit Accumulator_ (10 usec.)
+ dac x Y Operation Code 24
+
+The C(AC) replace the C(Z) in the memory. The C(AC) are left unchanged
+by this instruction. The original C(Z) are lost.
+
+ _Deposit Address Part_ (10 usec.)
+ dap x Y Operation Code 26
+
+Octal digits 6 through 11 of the Accumulator replace the corresponding
+digits of memory register Z.
+
+C(AC) are unchanged as are the contents of octal digits 0 through 5 of
+Z. The original contents of octal digits 6 through 11 of Z are lost.
+
+ _Deposit Instruction Part_ (10 usec.)
+ dip x Y Operation Code 30
+
+Octal digits 0 through 5 of the Accumulator replace the corresponding
+digits of memory register Z. The Accumulator is unchanged as are digits
+6 through 11 of Z. The original contents of octal digits 0 through 5 of
+Z are lost.
+
+ _Load In-Out Register_ (10 usec.)
+ lio x Y Operation Code 22
+
+The C(Z) are placed in the In-Out Register. C(Z) are unchanged. The
+original C(IO) are lost.
+
+ _Deposit In-Out Register_ (10 usec.)
+ dio x Y Operation Code 32
+
+The C(IO) replace the C(Z) in memory. The C(IO) are unaffected by this
+instruction. The original C(Z) are lost.
+
+ _Jump_ (5 usec.)
+ jmp x Y Operation Code 60
+
+The Program Counter is reset to address Z. The next instruction that
+will be executed will be taken from memory register Z. The original
+contents of the Program Counter are lost.
+
+ _Jump and Save Program Counter_ (5 usec.)
+ jsp x Y Operation Code 62
+
+The contents of the Program Counter are transferred to the Index Adder.
+When the transfer takes place, the Program Counter holds the address of
+the instruction following the jsp. The Program Counter is then reset to
+address Z. The next instruction that will be executed will be taken from
+memory register Z.
+
+ _Skip if Accumulator and Z differ_ (10 usec.)
+ sad x Y Operation Code 50
+
+The C(Z) are compared with the C(AC). If the two numbers are different,
+the Program Counter is indexed one extra position and the next
+instruction in the sequence is skipped. The C(AC) and the C(Z) are
+unaffected by this operation.
+
+ _Skip if Accumulator and Z are the same_ (10 usec.)
+ sas x Y Operation Code 52
+
+The C(Z) are compared with C(AC). If the two numbers are identical, the
+Program Counter is indexed one extra position and the next instruction
+in the sequence is skipped. The C(AC) and C(Z) are unaffected by this
+operation.
+
+
+Non-Indexable Memory Instructions
+
+These instructions have the same word format as the indexable
+instructions. Since they operate on the index register location, x, they
+cannot be indexed.
+
+ _Skip on Negative index_ (10 usec.)
+ snx x Y Operation Code 46
+
+The number in octal digits 7 through 11 of the instruction word is added
+to the C(x). This addition is done in the 15 bit Index Adder using 1's
+complement arithmetic. If, after the addition, the sum is negative, the
+Program Counter is advanced one extra position and the next instruction
+in the sequence is skipped. The contents of octal digits 0-5 of the
+index register location are unaffected by this instruction.
+
+ _Skip on Positive index_ (10 usec.)
+ spx x Y Operation Code 44
+
+The number in octal digits 7 through 11 of the instruction word is added
+to the C(x). This addition is done in the 15 bit Index Adder using 1's
+complement arithmetic.
+
+If, after the addition, the sum is positive, the Program Counter is
+advanced one extra position and the next instruction in the sequence is
+skipped. The contents of octal digits 0-5 of the index register location
+are unaffected by this instruction.
+
+ _Load Index Register_ (10 usec.)
+ lir x Y Operation Code 14
+
+The octal digits 7 through 11 (Y) of the instruction will replace the
+corresponding digits of the memory register specified by x. Octal digit
+6 of the memory register will be left clear. Digits 0-5 of the memory
+register are unchanged.
+
+ _Deposit Index Adder_ (10 usec.)
+ dia x Y Operation Code 16
+
+The C(IA) replace the octal digits 7 through 11 of memory location Y.
+Octal digit 6 of Y is cleared. Digits 0 through 5 of Y are left
+unchanged. The x portion of the instruction is ignored.
+
+
+Non-Memory Instructions
+
+Rotate and Shift Group
+
+This group of instructions will rotate or shift the Accumulator and/or
+the In-Out Register. When the two registers operate combined, the In-Out
+Register is considered to be a 36 bit magnitude extension of the right
+end of the Accumulator.
+
+Rotate is a non-arithmetic cyclic shift. That is, the two ends of the
+register are logically tied together and information is rotated as
+though the register were a ring.
+
+Shift is an arithmetic operation and is in effect multiplication of the
+number in the register by 2^{+N}, where N is the number of shifts. Shift
+or rotate instructions involving more than 33 steps can be used for
+simulating time delays. 36 rotate steps of the Accumulator will return
+all information to its original position.
+
+ _Rotate Accumulator Right_ (13 usec. maximum for 36 shifts)
+ rar N Operation Code 671
+
+This instruction will rotate the bits of the Accumulator right N
+positions, where N is octal digits 7-11 of the instructions word.
+
+ _Rotate Accumulator Left_ (13 usec. maximum for 36 shifts)
+ ral N Operation Code 661
+
+This instruction will rotate the bits of the Accumulator left N
+Positions, where N is octal digits 7-11 of the instruction word.
+
+ _Shift Accumulator Right_ (13 usec. maximum for 36 shifts)
+ sar N Operation Code 675
+
+This instruction will shift the contents of the Accumulator right N
+positions, where N is octal digits 7-11 of the instruction word.
+
+ _Shift Accumulator Left_ (13 usec. maximum for 36 shifts)
+ sal N Operation Code 665
+
+This instruction will shift the contents of the Accumulator left N
+positions, where N is octal digits 7-11 of the instruction word.
+
+ _Rotate In-Out Register Right_ (13 usec. maximum for 36 shifts)
+ rir N Operation Code 672
+
+This instruction will rotate the bits of the In-Out Register right N
+positions, where N is octal digits 7-11 of the instruction word.
+
+ _Rotate In-Out Register Left_ (13 usec. maximum for 36 shifts)
+ ril N Operation Code 662
+
+This instruction will rotate the bits of the In-Out Register left N
+positions, where N is octal digits 7-11 of the instruction word.
+
+ _Shift In-Out Register Right_ (13 usec. maximum for 36 shifts)
+ sir N Operation Code 676
+
+This instruction will shift the contents of the In-Out Register right N
+positions, where N is octal digits 7-11 of the instruction word.
+
+ _Shift In-Out Register Left_ (13 usec. maximum for 36 shifts)
+ sil N Operation Code 666
+
+This instruction will shift the contents of the In-Out Register left N
+positions, where N is octal digits 7-11 of the instruction word.
+
+ _Rotate AC and IO Right_ (13 usec. maximum for 36 shifts)
+ rcr N Operation Code 673
+
+This instruction will rotate the bits of the combined register right in
+a single ring N positions, where N is octal digits 7-11 of the
+instruction word.
+
+ _Rotate AC and IO Left_ (13 usec. maximum for 36 shifts)
+ rcl N Operation Code 663
+
+This instruction will rotate the bits of the combined register left in a
+single ring N position, where N is octal digits 7-11 of the instruction
+word.
+
+ _Shift AC and IO Right_ (13 usec. maximum for 36 shifts)
+ scr N Operation Code 677
+
+This instruction will shift the contents of the combined register right
+N positions, where N is octal digits 7-11 of the instruction word.
+
+ _Shift AC and IO Left_ (13 usec. maximum for 36 shifts)
+ scl N Operation Code 667
+
+This instruction will shift the contents of the combined registers left
+N positions, where N is octal digits 7-11 of the instruction word.
+
+ * * * * *
+
+ _Skip Group_ (5 usec.)
+ skp Y Operation Code 64
+
+This group of instructions senses the state of various flip-flops and
+switches in the machine. It does not require any reference to memory.
+The address portion of the instruction selects the particular function
+to be sensed. All members of this group have the same operation code.
+
+ _Skip on ZERO Accumulator_ (5 usec.)
+ sza Address 100
+
+If the Accumulator is equal to plus ZERO (all bits are ZERO) the Program
+Counter is advanced one extra position and the next instruction in the
+sequence is skipped.
+
+ _Skip on Plus Accumulator_ (5 usec.)
+ spa Address 200
+
+If the sign bit of the Accumulator is ZERO, the Program Counter is
+advanced one extra position and the next instruction in the sequence is
+skipped.
+
+ _Skip on Minus Accumulator_ (5 usec.)
+ sma Address 400
+
+If the sign bit of the Accumulator is ONE, the Program Counter is
+advanced one extra position and the next instruction in the sequence is
+skipped.
+
+ _Skip on ZERO Overflow_ (5 usec.)
+ szo Address 1000
+
+If the overflow flip-flop is a ZERO the Program Counter is advanced one
+extra position and the next instruction in the sequence will be skipped.
+The overflow flip-flop is cleared by this instruction. This flip-flop is
+set by addition, subtraction, or division that exceeds the capacity of
+the Accumulator. The overflow flip-flop is not cleared by arithmetic
+operations which do not cause an overflow. Thus, a whole series of
+arithmetic operations may be checked for correctness by a single szo.
+The overflow flip-flop is cleared by the "Start" Switch.
+
+ _Skip on Plus In-Out Register_ (5 usec.)
+ spi Address 2000
+
+If the sign digit of the In-Out Register is ZERO the Program Counter is
+indexed one extra position and the next instruction in the sequence is
+skipped.
+
+ _Skip on ZERO Switch_ (5 usec.)
+ szs Addresses 10, 20, ... 70
+
+If the selected Sense Switch is ZERO, the Program Counter is advanced
+one extra position and the next instruction in the sequence will be
+skipped. Address 10 senses the position of Sense Switch 1, Address 20
+Switch 2, etc. Address 70 senses all the switches. If 70 is selected all
+6 switches must be ZERO to cause the skip to occur.
+
+ _Skip on ZERO Program Flag_ (5 usec.)
+ szf Addresses 0 to 7 inclusive
+
+If the selected program flag is a ZERO, the Program Counter is advanced
+one extra position and the next instruction in the sequence will be
+skipped. Address 0 is no selection. Address 1 selects program flag one,
+etc. Address 7 selects all programs flags. All flags must be ZERO to
+cause the skip.
+
+The instructions in the One Cycle Skip group may be combined to form the
+inclusive OR of the separate skips. Thus, if address 3000 is selected,
+the skip would occur if the overflow flip-flop equals ZERO or if the
+In-Out Register is positive. The combined instruction would still take 5
+microseconds.
+
+ * * * * *
+
+ _Operate Group_ (5 usec.)
+ opr Y Operation Code 76
+
+This instruction group performs miscellaneous operations on various
+Central Processor Registers. The address portion of the instruction
+specifies the action to be performed.
+
+ _Clear In-Out Register_ (5 usec.)
+ cli Address equal 4000
+
+This instruction clears the In-Out Register.
+
+ _Load Accumulator from Test Word_ (5 usec.)
+ lat Address 2000
+
+This instruction forms the inclusive OR of the C(AC) and the contents of
+the Test Word. This instruction is usually combined with address 200
+(clear Accumulator), so that C(AC) will equal the contents of the Test
+Word Switches.
+
+ _Complement Accumulator_ (5 usec.)
+ cma Address 1000
+
+This instruction complements (makes negative) the contents of the
+Accumulator.
+
+ _Halt_
+ hlt Address 400
+
+This instruction stops the computer.
+
+ _Clear Accumulator_ (5 usec.)
+ cla Address 200
+
+This instruction clears (sets equal to plus 0) the contents of the
+Accumulator.
+
+ _Clear Selected Program Flag_ (5 usec.)
+ clf Address 01 to 07 inclusive
+
+The selected program flag will be cleared. Address 00 selects no program
+flag, 01 clears program flag 1, 02 clears program flag 2, etc. Address
+07 clears all program flags.
+
+ _Set Selected Program Flag_ (5 usec.)
+ stf Address 11 to 17 inclusive
+
+ * * * * *
+
+ _In-Out Transfer Group_ (5 usec. without in-out wait)
+ iot x Y Operation Code 72
+
+The variations within this group of instructions perform all the in-out
+control and information transfer functions. If bit six (normally the
+Indirect Address bit) is a ONE, the computer will halt and wait for the
+completion pulse from the device activated. When this device delivers
+its completion, the computer will resume operation of the instruction
+sequence.
+
+An incidental fact which may be of importance in certain scientific or
+real time control applications is that the time origin of operations
+following an in-out completion pulse is identical with the time of that
+pulse.
+
+Most in-out operations require a known minimum time before completion.
+This time may be utilized for programming. The appropriate In-Out
+Transfer is given with no in-out wait (bit six a ZERO). The instruction
+sequence then continues. This sequence must include an iot instruction
+which performs nothing but the in-out wait. This last instruction must
+occur before the safe minimum time. A table of minimum times for all
+in-out devices is delivered with the computer. It lists minimum time
+before completion pulse and minimum In-Out Register free time.
+
+The details of the In-Out Transfer variations are listed under
+Input-Output.
+
+The mnemonic codes and addresses for the standard equipment are:
+
+ _Read Paper Tape Alphanumeric Mode_
+ rpa Address 1
+
+ _Read Paper Tape Binary Mode_
+ rpb Address 2
+
+ _Typewriter Output_
+ tyo Address 3
+
+ _Typewriter Input_
+ tyi Address 4
+
+ _Punch Paper Tape Alphanumeric Mode_
+ ppa Address 5
+
+ _Punch Paper Tape Binary Mode_
+ ppb Address 6
+
+
+MANUAL CONTROLS
+
+The Console of PDP-3 has controls and indicators for the use of the
+operator. Fig. 4 is a close-up of the control panel of PDP-1, the 18 bit
+version of PDP-3. All computer flip-flops have indicator lights on the
+Console. These indicators are primarily for use when the machine has
+stopped or when the machine is being operated one step at a time. While
+the machine is running, the brightness of an indicator bears some
+relationship to the relative duty factor of that particular flip-flop.
+
+Three registers of toggle switches are available on the Console. These
+are the Test Address (15 bits), the Test Word (36 bits), and the Sense
+Switches (6 bits). The first two are used in conjunction with the
+operating push buttons. The Sense Switches are present for manual
+intervention. The use of these switches is determined by the program
+(see System Block Diagram and Skip Group Instructions).
+
+Operating Push Buttons
+
+_Start_ - When this switch is operated, the computer will start. The
+first instruction comes from the memory location indicated in the Test
+Address Switches.
+
+_Stop_ - The computer will come to a halt at the completion of the
+current memory cycle.
+
+_Continue_ - The computer will resume operation starting at the state
+indicated by the lights.
+
+_Examine_ - The contents of the memory register indicated in the Test
+Address will be displayed in the Accumulator and the Memory Buffer
+lights.
+
+_Deposit_ - The word selected by the Test Word Switches will be put in
+the memory location indicated by the Test Address Switches.
+
+_Read-In_ - When this switch is operated, the photoelectric paper tape
+reader will start operating in the Read-In mode. (see Input-Output).
+
+In addition to the operating push buttons, there are several separate
+toggle switches.
+
+_Single Cycle Switch_ - When the Single Cycle Switch is on, the computer
+will halt at the completion of each memory cycle. This switch is
+particularly useful in debugging programs. Repeated operation of the
+Continue Switch button will step the program one cycle at a time. The
+programmer is thus able to examine the machine states at each step.
+
+_Test Switch_ - When the Test Switch is on, the computer will perform
+the instruction indicated in the Test Address location. It will repeat
+this instruction either at the normal speed rate or at a single cycle
+rate if the Single Cycle Switch is up. This switch is primarily useful
+for maintenance purposes.
+
+_Sense Switches_ - There are six switches on the Console which are
+present for manual intervention.
+
+
+
+
+STORAGE
+
+The internal Memory System for PDP-3 consists of modules of 4096 words
+of coincident current magnetic core storage. Each word has 36 bits. The
+memory modules operate with a read-rewrite cycle time of 5 microseconds.
+The driving currents of the memory are automatically adjusted to
+compensate for normal room temperature variations.
+
+Each core memory module consists of the memory stack, the required X and
+Y switches, the X and Y current sources and sense amplifiers for that
+stack.
+
+The Memory Address Register, the Memory Buffer Register, and the Memory
+Timing Controls are considered to be part of the Central Processor. The
+standard PDP-3 Memory Address Register configuration is built to allow
+up to 8 modules of core memory (32,768 words). There is a space in the
+addressing section of the machine to allow expansion of the addressing
+by a factor of eight for a total addressing capacity of 262,144 memory
+registers.
+
+The Core Memory may be supplemented by Magnetic Tape Storage. This is
+described under Input-Output.
+
+
+
+
+STANDARD INPUT-OUTPUT
+
+The PDP-3 is designed to accommodate a variety of input-output
+equipment. Standard input-output units include a Paper Tape Reader,
+Paper Tape Punch and an Electric Typewriter.
+
+A single instruction, In-Out Transfer (see Central Processor), performs
+all in-out operations through the 36 bit In-Out Register. The address
+portion of this instruction specifies the in-out function. One bit of
+the instruction selects an in-out halt as required.
+
+
+PAPER TAPE READER
+
+The Paper Tape Reader of the PDP-3 is a photoelectric device capable of
+reading 300 lines per second. Six lines form the standard 36 bit word
+when reading binary punched eight hole tape. Five, six and seven hole
+tape may also be read.
+
+The reader will operate in one of two basic modes or in a third special
+mode.
+
+ Alphanumeric Mode
+ rpa iot 1
+
+In this mode, one line of tape is read for each In-Out Transfer. All
+eight holes of the line are read. The information is left in the right
+eight bits of the In-Out Register, the remainder of the register being
+left clear. The standard PDP alphanumeric paper tape code includes an
+odd parity bit which may be checked by the program. Tape of non-standard
+width would be read in this mode.
+
+ Binary Mode
+ rpb iot 2
+
+For each In-Out Transfer instruction, six lines of paper tape are read
+and assembled in the In-Out Register to form a full computer word. For a
+line to be recognized in this mode, the eighth hole must be punched;
+i.e., lines with no eighth hole will be skipped over. The seventh hole
+is ignored. The pattern of holes in the binary tape is arranged so as to
+be easily interpreted visually in terms of machine instruction.
+
+Read-In Mode
+
+This is a special mode activated by the "Read-In" Switch on the Console.
+It provides a means of entering programs which neither rely on read-in
+programs in memory nor require a plug board. Pushing the "Read-In"
+Switch starts the reader in the binary mode. The first group of six
+lines and alternate succeeding groups of six lines are interpreted as
+"Read-In" mode instructions. Even-numbered groups of 6 lines are data.
+The "Read-In" mode instructions must be either "deposit in-out" (dio Y)
+or "jump" (jmp Y). If the instruction is dio Y, the next group of six
+binary lines will be stored in memory location Y and the reader
+continues moving. If the instruction is jmp Y, the "Read-In" mode is
+terminated and the computer will commence operation at the address of
+the jump instruction.
+
+
+PAPER TAPE PUNCH
+
+The standard PDP-3 Paper Tape Punch has a nominal speed of 20 lines per
+second. It can operate in either the alphanumeric mode or the binary
+mode.
+
+ Alphanumeric Mode
+ ppa iot 5
+
+For each In-Out Transfer instruction one line of tape is punched. In-Out
+Register bit 35 conditions hole #1. Bit 34 conditions hole #2, etc. Bit
+28 conditions hole #8.
+
+ Binary Mode
+ ppb iot 6
+
+For each In-Out Transfer instruction one line of tape is punched. In-Out
+Register bit five conditions hole #1. Bit four conditions hole #2, etc.
+Bit zero conditions hole #6. Hole #7 is left blank. The #8 hole is
+always punched in this mode.
+
+
+TYPEWRITER
+
+The Typewriter will operate in the input mode or the output mode.
+
+ Output Mode
+ tyo iot 3
+
+For each In-Out Transfer instruction one character is typed. The
+character is specified by the right six bits of the In-Out Register.
+
+ Input Mode
+ tyi iot 4
+
+This operation is completely asynchronous and is therefore handled
+differently than any of the preceding in-out operations.
+
+When a Typewriter key is struck, Program Flag Number One is set. At the
+same time the code for the struck key is presented to gates connected to
+the right six bits of the In-Out Register. This information will remain
+at the gate for a relatively long time by virtue of the slow mechanical
+action. A program designed to accept typed-in data would periodically
+check the status of Program Flag One. If at any time Program Flag One is
+found to be set, an In-Out Transfer instruction with address four must
+be executed for information to be transferred. This In-Out Transfer
+normally should not use the optional in-out halt. The information
+contained in the Typewriter's coder is then read into the right six bits
+of the In-Out Register.
+
+
+
+
+OPTIONAL INPUT-OUTPUT
+
+The PDP-3 is designed to accommodate a variety of input-output
+equipment. Of particular interest is the ease with which new, and
+perhaps unusual, external equipment can be added to the machine.
+Optional in-out devices include Cathode Ray Tube Display, Magnetic Tape,
+Real Time Clock, Line Printer and Analog to Digital Converters. The
+method of operation of PDP-3 with these optional devices is similar to
+the standard input-output equipment.
+
+
+SEQUENCE BREAK SYSTEM
+
+An optional in-out control is available for PDP-3. This control, termed
+the Sequence Break System, allows concurrent operation of several in-out
+devices and the main sequence. The system has, nominally, 16 automatic
+interrupt channels arranged in a priority chain.
+
+A break to a particular sequence may be initiated by the completion of
+an in-out device, the program, or an external signal. If this sequence
+has priority, the C(AC), C(IO), C(PC), and C(IA) are stored in three
+fixed memory locations unique to that sequence. Since the C(PC) and
+C(IA) are eighteen bits each, these two registers are stored in one
+memory location. The next instruction is taken from a fourth location.
+This instruction is usually a jump to a suitable routine. The program is
+now operating in the new sequence. This new sequence may be broken by a
+higher priority sequence. A typical program loop for handling an in-out
+sequence would contain 3 to 5 instructions, including the appropriate
+iot. These are followed by load AD and load IO from the fixed locations
+and a special indirect jump through the location of the previous C(PC).
+This special jump also loads the IA. This last instruction terminates
+the sequence.
+
+
+HIGH SPEED IN-OUT CHANNEL
+
+The device connected to an in-out channel communicates directly with
+memory through the Memory Buffer Register. At the completion of each
+machine instruction, a check is made to see if the in-out channel has a
+word for, or needs a word from, the memory. When necessary, a memory
+cycle is taken to serve the channel. The operation is initiated by an
+in-out command. The in-out transfer command indicates the nature of the
+transfer. The left half of the In-Out Register must contain the
+starting address of the transfer, and the right half must contain the
+number of words to be transferred. If the Sequence Break System is
+connected, the completion of the transfer will signal the proper
+sequence. If no Sequence Break System is connected, the completion of
+the in-out channel transfer sets a program flag.
+
+
+MAGNETIC TAPE
+
+The system consists of tape units connected to the PDP-3 through a tape
+control (TC). This tape is read or written in IBM 729I format. Two
+hundred characters, each having 6 bits plus a parity bit, are written on
+each inch of tape and the tape moves at 75 inches/sec. The tape control
+has the job of connecting a specific unit to the PDP-3 and is a switch.
+It also has the function of controlling the format of information that
+is read or written on tape. In-out class commands instruct TC to the
+type of information transfer and select the tape unit. Another IOT
+command synchronizes the transfer of information through the TC to the
+computer.
+
+The IOT order to select the unit and function is decoded as follows: 1)
+Three bits specify the function of TC. 2) The remaining 6 bits select
+the unit.
+
+_IOT Motion Commands for Magnetic Tape Units_
+
+ _IOT Code_ _Abbreviation_ _Function_
+
+ 73....nn 60 mrb Read a binary record.
+ 73....nn 61 mra Read an alphanumeric (BCD) record.
+ 73....nn 62 mbb Backspace a binary record.
+ 73....nn 63 mba Backspace an alphanumeric record.
+ 73....nn 64 mwb Write a binary record.
+ 73....nn 65 mwa Write an alphanumeric record.
+ 73....nn 66 mlp Move tape to lead point (rewind).
+
+Where the octal digits, nn, specify the unit number.
+
+The motion commands have the deferred bit, thus, the program halts. If
+the TC is free, the command will be transferred to the tape control for
+action and the program restarts immediately. If the tape control is
+currently busy with an instruction, i.e., it hasn't finished a previous
+command, the motion command is held up until TC is free to execute the
+new command.
+
+The transfer of information from the computer to the TC is accomplished
+with the pause and skip command, MPS or IOT 70. This command has the
+deferred bit and halts a program until the TC can handle the transfer.
+On completion, the transfer occurs and the program restarts. This is
+used exclusively to synchronize the flow of information between a tape
+unit and the computer. This command normally skips the following
+instruction. If a flag is set in the TC, indicating incorrect
+information flow, the skip does not take place.
+
+The TC contains a 36 bit buffer which holds a complete word while
+information is read or written. When an MPS order is given and the unit
+is reading, the TC buffer is read into the IO. The MPS order given
+during writing causes the IO to be transferred to the TC buffer.
+
+Various conditions occurring in the TC cause the no-skip condition, when
+an MPS is given. Tape control flags are examined by the command, examine
+and clear flags, MEC or IOT 71. When MEC is given, the flags are put
+into the IO for program interrogation, and the flags cleared. The flags
+are: parity, end of tape, an end of record flag, and reading-writing
+check.
+
+The parity flag is set if the parity condition is not met while the tape
+is being read (during MWA, MWB, MRA, or MRB).
+
+The end of tape flag is set when the tape comes to the end of tape,
+moving in either direction.
+
+Three conditions set the read-write check flag: 1) If TC is inactive,
+i.e., no unit or function selected, and an MPS instruction is given. The
+MPS becomes a no-operation, no-halt instruction. 2) When reading
+information and not emptying the TC buffer, by giving an MPS before more
+information arrives from tape. 3) A unit becomes unavailable during a
+normal sequence.
+
+The end of record flag is set during reading or backspacing when the
+tape comes to an end of record gap.
+
+_Writing a Record of Information_
+
+Information is written on the tape by giving a MWB or MWA command. This
+sets a write binary or a write alphanumeric into the TC and selects the
+unit. A motion select command is executed immediately if the TC is free,
+otherwise, the command waits until it can be executed. Normal
+programming can continue after the MWA or MWB is given for approximately
+5 milliseconds. At this time, an MPS order is given and the program
+pauses until information can be written. When the MPS is restarted,
+information is transferred to the TC buffer from the IO. If no flags
+have been set, the following instruction is skipped.
+
+Three-quarter inches of blank tape is written by giving either the MWA
+or MWB order. An end of file is written as follows: 1) Four MWA commands
+write three inches of blank tape. 2) Then end of file character is
+written by giving the MPS order.
+
+Information is read and checked for correct parity while writing.
+
+If too many program steps are given between the motion select command,
+MWA or MWB and the first MPS, the unit will deselect (or disconnect).
+The MPS is then a no-operation command.
+
+_Writing Program_
+
+As an example, a program to write k words in binary format from storage
+beginning in register A, using tape unit number 04, is shown. The
+following program is written in standard FRAP language. The program
+begins in register enterwrite.
+
+ enterwrite mec ,clear flags initially
+ mwb 400 ,73000000464
+ lir x/-k+1 ,initialize index register x
+ b lio x/a+k-1 ,begin loop
+ mps ,wait for TC then write C(Z)
+ jmp c ,error
+ spx x/1 ,add 1 to index register x
+ jmp b ,return of loop
+ jmp done ,record written
+
+
+ c mec ,tape error
+ ril 1
+ spi
+ jmp rwcstop ,read-write error or tape fault
+ ril 1
+ spi
+ jmp b+3 ,tape end
+ hlt ,tape parity
+
+ done ,resume programming
+
+_Reading Information_
+
+Information is read by giving the MRA or MRB order. Almost 10 ms. is
+available after a read order is given before information actually enters
+the TC buffer.
+
+To read a record of unknown length, the read order is first given. The
+MPS order halts the program until six characters are assembled in the TC
+information buffer. The next instruction after the MPS, a jump
+instruction, transfers control from the loop when any flag is set. The
+next instruction deposits the IO. The record length is determined by not
+skipping after the MPS order on the setting of the end of record flag.
+The read-write check flag or the end of record flag is then interrogated
+to see that the tape is actually at the end of record. If a tape is not
+at the end of record, then the tape is either at the end of the reel, or
+a parity check has occurred.
+
+_Reading Program_
+
+Program to read j binary words into storage beginning in register d,
+using tape unit 10, j is unknown. The program begins in register
+enteread.
+
+ enteread mec ,clear flags initially
+ mrb 1000 ,730000001060
+ dzm x ,put zero in memory location x
+ e mps
+ jmp outcheck
+ dio x/d ,store in location modified by x
+ snx x/+1 ,add 1 to C(x)
+ jmp e
+
+ outcheck mec ,examine flags
+ spi ,end of record?
+ jmp recordend ,yes
+ hlt ,error
+
+ recordend snx x/+1 ,to find value of j
+ " ,resume programming C(IA) = j
+ "
+ "
+ "
+
+_Forward Spacing_
+
+Forward spacing is done by giving an MRB or MRA order. This moves the
+tape forward with the read-write head positioned at the end of the
+following record. If n read orders are given, the tape is spaced forward
+n records. By giving the MEC order, parity flags are examined to see
+that information on tape has been read correctly.
+
+_Backspacing_
+
+By giving an MBA or MBB order the tape is moved backwards a record with
+the read-write heads positioned in the previous end of record gap. The
+end of record flag is set when the tape has moved backwards a record.
+
+_Rewinding_
+
+Rewinding is accomplished by giving the rewind order, move tape to load
+point, MLP. The rewind order starts a unit rewinding and does not tie up
+the TC. If a motion command is given which calls for a unit that is
+rewinding, the command is executed, but the action will not take place
+until the unit is available.
+
+_Unit Availability_
+
+A unit is unavailable to the program under the following conditions:
+
+ 1. Unit is rewinding.
+ 2. Tape is improperly loaded.
+ 3. Cover door open.
+ 4. Unit overloaded.
+ 5. Unit under manual control.
+ 6. Power off.
+
+A selected but unavailable unit holds up the TC if a motion order is
+given for the unit. The TC will be held up until the unit is ready.
+
+_Flag Positions_
+
+ _IO Bit_ _Flag_
+
+ 0 EOR - End of record
+ 1 RWF - Read-Write
+ 2 EOT - End of Tape
+ 3 Parity
+
+_Connection with High Speed Channel_
+
+The high speed channel directs the tape control, and word transfer, just
+as a program would. A unit is first started reading or writing. The high
+speed channel is given the memory location of the information, and the
+number of registers the words read or written will occupy. The channel
+effects the information transfer. Thus, a high speed channel connected
+to a tape control handles the programming for the unit word transfers.
+
+Completion of the block transfer is signified by either setting a
+program flag, or entering the sequence break.
+
+_Connection with Sequence Break System_
+
+When the TC is connected to the Sequence Break System, the program is
+automatically interrupted each time an MPS command needs to be given.
+
+Programming is unaffected during reading and a record may be read with
+no flags set. The TC initiates breaks so that an MPS may be given in
+time.
+
+Similarly, the break is initiated during writing each time an MPS needs
+to be given.
+
+_Motion Command Summary_
+
+ _Time before _Time between _Time after End of _Flags that
+ first MPS_ MPS's_ Record to deselect_ may be set_
+
+ MWA 3 ms. 400 us. 10 ms. RWF (if unit
+ MWB (longer time is deselected
+ causes deselection) and MPS given,
+ or unit becomes
+ unavailable),
+ Parity, EOT.
+
+ MRA 7 ms. < 400 us. 5 ms. RWF, (if
+ MRB (longer time information
+ misses information, is missed, or
+ and unit becomes
+ rwc set) unavailable),
+ EOT, EOR,
+ Parity.
+
+ MBA - - 10 ms. RWF (if unit
+ MBB becomes
+ unavailable),
+ EOR, EOT.
+
+
+CATHODE-RAY-TUBE DISPLAY
+
+The PDP-3 Cathode Ray Tube Display is useful for presentation of
+graphical or tabular information to the operator. It uses a 16 inch
+round tube with magnetic deflection. For each In-Out transfer order, one
+point is displayed at the position indicated by the In-Out Register.
+Bits 0-9 of the IO indicate the X coordinate of the position, and bits
+18-27 indicate the Y coordinate. The display takes 60 microseconds.
+
+An additional display option is a Light Pen. By use of this device the
+computer is signaled that the operator is interested in the last point
+displayed. Thus the program can take appropriate action such as changing
+the display or shifting operation to another program.
+
+A smaller display is available. This display uses a five inch, high
+resolution cathode ray tube. The tube is equipped with a mounting bezel
+to accept a camera or photomultiplier device. The operation of this
+display is similar to that of the 16 inch, except that 12 bits are
+decoded for each axis.
+
+
+REAL TIME CLOCK
+
+A special input register may be connected to operate as a Real Time
+Clock. This is a counting register operated by a crystal controlled
+oscillator. The clock can be reset to zero by manual operation. A toggle
+switch interlock prevents an accidental reset. The state of this counter
+may be read at any time by the appropriate In-Out Transfer instruction.
+
+
+LINE PRINTER
+
+A 72 column Anelex printer and control are available as an option for
+PDP-3. The control contains a one line buffer. This buffer is cleared by
+the completion of an order to space the paper one position (psp). The
+buffer is filled from the In-Out Register by a succession of 12 load
+buffer orders (plb). The first plb will put the six characters
+represented by C(IO) in the leading (left-hand) column positions of the
+buffer. After the buffer is loaded, the order, print (pnt), is given.
+
+
+
+
+UTILITY PROGRAMS
+
+
+FRAP-3 - The Assembly Program
+
+An assembler or compiler prepares a machine language tape suitable for
+direct interpretation by the computer from a program tape in operator
+language. Generally speaking, one statement accepted by FRAP produces
+one instruction for the machine. A single statement written for the
+PDP-3 compiler, DECAL-3, may cause several instructions to be written.
+Thus, FRAP causes a 1 for 1 mapping of instructions for statements while
+DECAL may produce many instructions from one statement.
+
+In addition to allowing program tapes to be prepared with off line
+equipment, an assembly program has other functions. Normally, the
+machine would require 36 bits or 12 octal digits to be written for each
+instruction used in the machine. FRAP allows mnemonic symbols to be used
+for the instructions. These mnemonic symbols aid the programmer by
+representing the instruction in an easily remembered form.
+
+In addition to allowing mnemonic symbols to represent the instructions,
+variable length sequences of alphanumeric characters may be used to
+represent memory addresses in symbolic form. The assembly program does
+the address bookkeeping for the programmer. A short example of a FRAP
+program is on Page 29.
+
+Since few characters limit or control the format of instructions written
+in FRAP-3 language, it is possible to write instructions in almost any
+format or style.
+
+FRAP-3 may also be used to prepare tapes for interpretive programming,
+since arbitrary definitions for operation code symbols are permitted.
+
+A feature useful both for ease of programming and for machine simulation
+is the ability to call for a series of instructions (macro-instruction)
+to be written. Frequently used instruction sequences thus need only to
+be defined once.
+
+
+DECAL - The Compiler Program
+
+DECAL-3 (Digital Equipment Compiler, Assembler, and Linking loader for
+PDP-3) is an integrated programming system for PDP-3. It incorporates in
+one system all of the essential features of advanced assemblers,
+compilers, and loaders.
+
+DECAL is both an assembler and compiler. It combines the one-to-one
+translation facilities of an assembler, and the one-to-many translation
+facilities of a formula translation compiler. Problem oriented language
+statements may be freely intermixed with symbolic machine language
+instructions. A flexible loader is available to allow the specification
+of program location at load time. The programmer may specify that
+certain variables and constants are "systems" variables and constants.
+The symbols so defined are universally used in a system of many
+routines. Thus, communications between parts of a major program is
+facilitated even though these parts may be compiled separately. Storage
+requirements for a large program are lessened by this technique.
+
+DECAL is an open-ended programming system and can be modified without a
+detailed understanding of the internal operation. This is achieved by
+means of a recursive definition facility based on a skeleton compiler
+with a small set of logical capabilities. The skeleton compiler acts as
+a bootstrap for introducing more sophisticated facilities.
+
+The compiler will be delivered with a fully defined subset of formula
+translation operators. Additional subsets may be defined by the user to
+best fit his source language.
+
+
+FLOATING POINT SUBROUTINES
+
+A set of subroutines are provided with the PDP-3 to perform floating
+point arithmetic. In these, the PDP-3 36 bit word is divided to form a
+27 bit mantissa, a, and 9 bit exponent, b. Numbers, thus, appear in the
+form: k = ax2^b where, a, is considered to be in fractional form in the
+range 1/2 <= a < 1, and b is an integer, 0 <= b < 29. This gives number,
+k, the range 10^{-76} < k < 10^{+76}.
+
+The subroutines are called with one operand in the accumulator. After
+the subroutine has been executed, the accumulator contains the answer.
+Thus floating point numbers are essentially handled as regular logical
+works. The format of the number allows magnitude comparisons to be made
+by conventional arithmetic as bit 0 is the sign of the number, bits 1 to
+9 the exponent, and the remaining 26 bits, together with the sign bit,
+the mantissa in ones complement arithmetic. The arithmetic subroutines
+are: add, subtract, multiply, divide, convert a floating point number to
+binary, convert a binary number to a floating number. Additional
+routines form: [square root of x], e^x, ln x, sine(~pi~/2)x,
+cos(~pi~/2)x, tan^{-1}x. There are also programs to convert between
+floating decimal numbers and PDP-3 floating numbers.
+
+Routines which require two operands, e.g., add, subtract, multiply and
+divide, require an index register to specify the address of the second
+operand. An index register also specifies parameters in data
+conversions, e.g., the position of the binary point when converting a
+binary number to a standard floating number.
+
+Using the floating point subroutines, additional routines may be written
+which handle complex floating numbers and vector and matrix algebra.
+
+
+MAINTENANCE ROUTINES
+
+Maintenance Routines are used exclusively to check the operation of the
+machine. These routines are operated while varying the bias supply
+voltages, and thus a check is made on possible degradation of all
+components which would affect the operation of the machine.
+
+
+MISCELLANEOUS ROUTINES
+
+A variety of additional programs are provided with PDP-3.
+
+One of the more important programs is the Typewriter Interrogator
+Program (TIP). TIP allows the typewriter to be used most effectively as
+an input-output link by which programs and data are examined and
+modified. The features include request for printing of a series of
+registers, interrogation and modification of the contents of registers,
+and the ability to request new tapes after programs have been suitably
+modified. Communication is done completely via the typewriter in either
+octal numbers, decimal numbers, or alphanumeric codes. Register contents
+are presented in similar form.
+
+Other miscellaneous routines handle arithmetic processes, e.g., number
+conversions, and communication with the input or output devices. These
+routines include various format print outs, paper tape and magnetic tape
+read in programs, and display subroutines.
+
+ * * * * *
+
+
+
+
+[Illustration: SYSTEM BLOCK DIAGRAM FIGURE 1]
+
+[Illustration: INSTRUCTION FORMAT FIGURE 2]
+
+[Illustration: FIGURE 3]
+
+ * * * * *
+
+
+
+
+Transcriber's Notes:
+
+C (X) and C(X) standardized to C(X).
+
+usec and usec. standardized to usec. throughout text.
+
+Other changes to the original text are listed below.
+
+Figure 4 is referred to in the text, but a copy could not be located.
+
+Underlined Text is enclosed by underscores.
+
+Superscripts are marked with carats x^2 and y^{-3}.
+
+Greek symbols are surrounded by ~tildes~.
+
+
+Transcriber Changes:
+
+TABLE OF CONTENTS: Originally 'Operation' (=Operating= Speeds)
+
+TABLE OF CONTENTS: Originally 'Frap' (=FRAP=)
+
+TABLE OF CONTENTS: Originally 'Routines' (=Subroutines=)
+
+Page 4: Originally 'theoperate' (while a program is operating by means
+ of =the operate= instruction.)
+
+Page 7: Added comma (The instruction base address, =Y,= is in octal
+ digits 7 through 11.)
+
+Page 8: Standardized from 'sub-routines' (The conversion of decimal
+ numbers into the binary system for use by the machine may be
+ performed automatically by =subroutines=.)
+
+Page 8: Standardized from 'sub-routine' (the output conversion of
+ binary numbers into decimals is done by =subroutine=.)
+
+Page 16: Added comma (This instruction will shift the contents of the
+ combined register right N =positions,= where N is octal digits
+ 7-11 of the instruction word.)
+
+Page 16: Moved comma. Was 'left, N positions' (This instruction will
+ shift the contents of the combined registers =left N positions,=
+ where N is octal digits 7-11 of the instruction word.)
+
+Page 19: Was 'know' (Most in-out operations require a =known= minimum
+ time before completion.)
+
+Page 20: Removed inconsistent comma (These are the Test Address (15
+ bits), the Test Word (36 bits), and the Sense =Switches= (6
+ bits).)
+
+Page 21: Changed comma to period (the computer will halt at the
+ completion of each memory =cycle.= This switch is particularly
+ useful in debugging programs.)
+
+Page 28: Was 'tpae' (during reading or backspacing when the =tape=
+ comes to an end of record gap.)
+
+Page 29: Standardized from 'de-select' (the unit will =deselect= (or
+ disconnect).)
+
+Page 35: Was 'propares' (An assembler or compiler =prepares= a machine
+ language tape suitable for direct interpretation)
+
+Page 35: Removed comma (Frequently used instruction =sequences= thus
+ need only to be defined once.)
+
+Page 37: Was 'Routiines' (=Routines= which require two operands, e.g.,
+ add, subtract, multiply and divide)
+
+
+
+
+
+End of the Project Gutenberg EBook of Preliminary Specifications: Programmed
+Data Processor Model Three (PDP-3), by Digital Equipment Corporation
+
+*** END OF THIS PROJECT GUTENBERG EBOOK PDP MODEL THREE (PDP-3) ***
+
+***** This file should be named 29461-8.txt or 29461-8.zip *****
+This and all associated files of various formats will be found in:
+ https://www.gutenberg.org/2/9/4/6/29461/
+
+Produced by Gerard Arthus, Katherine Ward, and the Online
+Distributed Proofreading Team at https://www.pgdp.net
+
+
+Updated editions will replace the previous one--the old editions
+will be renamed.
+
+Creating the works from public domain print editions means that no
+one owns a United States copyright in these works, so the Foundation
+(and you!) can copy and distribute it in the United States without
+permission and without paying copyright royalties. Special rules,
+set forth in the General Terms of Use part of this license, apply to
+copying and distributing Project Gutenberg-tm electronic works to
+protect the PROJECT GUTENBERG-tm concept and trademark. Project
+Gutenberg is a registered trademark, and may not be used if you
+charge for the eBooks, unless you receive specific permission. If you
+do not charge anything for copies of this eBook, complying with the
+rules is very easy. You may use this eBook for nearly any purpose
+such as creation of derivative works, reports, performances and
+research. They may be modified and printed and given away--you may do
+practically ANYTHING with public domain eBooks. Redistribution is
+subject to the trademark license, especially commercial
+redistribution.
+
+
+
+*** START: FULL LICENSE ***
+
+THE FULL PROJECT GUTENBERG LICENSE
+PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK
+
+To protect the Project Gutenberg-tm mission of promoting the free
+distribution of electronic works, by using or distributing this work
+(or any other work associated in any way with the phrase "Project
+Gutenberg"), you agree to comply with all the terms of the Full Project
+Gutenberg-tm License (available with this file or online at
+https://gutenberg.org/license).
+
+
+Section 1. General Terms of Use and Redistributing Project Gutenberg-tm
+electronic works
+
+1.A. By reading or using any part of this Project Gutenberg-tm
+electronic work, you indicate that you have read, understand, agree to
+and accept all the terms of this license and intellectual property
+(trademark/copyright) agreement. If you do not agree to abide by all
+the terms of this agreement, you must cease using and return or destroy
+all copies of Project Gutenberg-tm electronic works in your possession.
+If you paid a fee for obtaining a copy of or access to a Project
+Gutenberg-tm electronic work and you do not agree to be bound by the
+terms of this agreement, you may obtain a refund from the person or
+entity to whom you paid the fee as set forth in paragraph 1.E.8.
+
+1.B. "Project Gutenberg" is a registered trademark. It may only be
+used on or associated in any way with an electronic work by people who
+agree to be bound by the terms of this agreement. There are a few
+things that you can do with most Project Gutenberg-tm electronic works
+even without complying with the full terms of this agreement. See
+paragraph 1.C below. There are a lot of things you can do with Project
+Gutenberg-tm electronic works if you follow the terms of this agreement
+and help preserve free future access to Project Gutenberg-tm electronic
+works. See paragraph 1.E below.
+
+1.C. The Project Gutenberg Literary Archive Foundation ("the Foundation"
+or PGLAF), owns a compilation copyright in the collection of Project
+Gutenberg-tm electronic works. Nearly all the individual works in the
+collection are in the public domain in the United States. If an
+individual work is in the public domain in the United States and you are
+located in the United States, we do not claim a right to prevent you from
+copying, distributing, performing, displaying or creating derivative
+works based on the work as long as all references to Project Gutenberg
+are removed. Of course, we hope that you will support the Project
+Gutenberg-tm mission of promoting free access to electronic works by
+freely sharing Project Gutenberg-tm works in compliance with the terms of
+this agreement for keeping the Project Gutenberg-tm name associated with
+the work. You can easily comply with the terms of this agreement by
+keeping this work in the same format with its attached full Project
+Gutenberg-tm License when you share it without charge with others.
+
+1.D. The copyright laws of the place where you are located also govern
+what you can do with this work. Copyright laws in most countries are in
+a constant state of change. If you are outside the United States, check
+the laws of your country in addition to the terms of this agreement
+before downloading, copying, displaying, performing, distributing or
+creating derivative works based on this work or any other Project
+Gutenberg-tm work. The Foundation makes no representations concerning
+the copyright status of any work in any country outside the United
+States.
+
+1.E. Unless you have removed all references to Project Gutenberg:
+
+1.E.1. The following sentence, with active links to, or other immediate
+access to, the full Project Gutenberg-tm License must appear prominently
+whenever any copy of a Project Gutenberg-tm work (any work on which the
+phrase "Project Gutenberg" appears, or with which the phrase "Project
+Gutenberg" is associated) is accessed, displayed, performed, viewed,
+copied or distributed:
+
+This eBook is for the use of anyone anywhere at no cost and with
+almost no restrictions whatsoever. You may copy it, give it away or
+re-use it under the terms of the Project Gutenberg License included
+with this eBook or online at www.gutenberg.org
+
+1.E.2. If an individual Project Gutenberg-tm electronic work is derived
+from the public domain (does not contain a notice indicating that it is
+posted with permission of the copyright holder), the work can be copied
+and distributed to anyone in the United States without paying any fees
+or charges. If you are redistributing or providing access to a work
+with the phrase "Project Gutenberg" associated with or appearing on the
+work, you must comply either with the requirements of paragraphs 1.E.1
+through 1.E.7 or obtain permission for the use of the work and the
+Project Gutenberg-tm trademark as set forth in paragraphs 1.E.8 or
+1.E.9.
+
+1.E.3. If an individual Project Gutenberg-tm electronic work is posted
+with the permission of the copyright holder, your use and distribution
+must comply with both paragraphs 1.E.1 through 1.E.7 and any additional
+terms imposed by the copyright holder. Additional terms will be linked
+to the Project Gutenberg-tm License for all works posted with the
+permission of the copyright holder found at the beginning of this work.
+
+1.E.4. Do not unlink or detach or remove the full Project Gutenberg-tm
+License terms from this work, or any files containing a part of this
+work or any other work associated with Project Gutenberg-tm.
+
+1.E.5. Do not copy, display, perform, distribute or redistribute this
+electronic work, or any part of this electronic work, without
+prominently displaying the sentence set forth in paragraph 1.E.1 with
+active links or immediate access to the full terms of the Project
+Gutenberg-tm License.
+
+1.E.6. You may convert to and distribute this work in any binary,
+compressed, marked up, nonproprietary or proprietary form, including any
+word processing or hypertext form. However, if you provide access to or
+distribute copies of a Project Gutenberg-tm work in a format other than
+"Plain Vanilla ASCII" or other format used in the official version
+posted on the official Project Gutenberg-tm web site (www.gutenberg.org),
+you must, at no additional cost, fee or expense to the user, provide a
+copy, a means of exporting a copy, or a means of obtaining a copy upon
+request, of the work in its original "Plain Vanilla ASCII" or other
+form. Any alternate format must include the full Project Gutenberg-tm
+License as specified in paragraph 1.E.1.
+
+1.E.7. Do not charge a fee for access to, viewing, displaying,
+performing, copying or distributing any Project Gutenberg-tm works
+unless you comply with paragraph 1.E.8 or 1.E.9.
+
+1.E.8. You may charge a reasonable fee for copies of or providing
+access to or distributing Project Gutenberg-tm electronic works provided
+that
+
+- You pay a royalty fee of 20% of the gross profits you derive from
+ the use of Project Gutenberg-tm works calculated using the method
+ you already use to calculate your applicable taxes. The fee is
+ owed to the owner of the Project Gutenberg-tm trademark, but he
+ has agreed to donate royalties under this paragraph to the
+ Project Gutenberg Literary Archive Foundation. Royalty payments
+ must be paid within 60 days following each date on which you
+ prepare (or are legally required to prepare) your periodic tax
+ returns. Royalty payments should be clearly marked as such and
+ sent to the Project Gutenberg Literary Archive Foundation at the
+ address specified in Section 4, "Information about donations to
+ the Project Gutenberg Literary Archive Foundation."
+
+- You provide a full refund of any money paid by a user who notifies
+ you in writing (or by e-mail) within 30 days of receipt that s/he
+ does not agree to the terms of the full Project Gutenberg-tm
+ License. You must require such a user to return or
+ destroy all copies of the works possessed in a physical medium
+ and discontinue all use of and all access to other copies of
+ Project Gutenberg-tm works.
+
+- You provide, in accordance with paragraph 1.F.3, a full refund of any
+ money paid for a work or a replacement copy, if a defect in the
+ electronic work is discovered and reported to you within 90 days
+ of receipt of the work.
+
+- You comply with all other terms of this agreement for free
+ distribution of Project Gutenberg-tm works.
+
+1.E.9. If you wish to charge a fee or distribute a Project Gutenberg-tm
+electronic work or group of works on different terms than are set
+forth in this agreement, you must obtain permission in writing from
+both the Project Gutenberg Literary Archive Foundation and Michael
+Hart, the owner of the Project Gutenberg-tm trademark. Contact the
+Foundation as set forth in Section 3 below.
+
+1.F.
+
+1.F.1. Project Gutenberg volunteers and employees expend considerable
+effort to identify, do copyright research on, transcribe and proofread
+public domain works in creating the Project Gutenberg-tm
+collection. Despite these efforts, Project Gutenberg-tm electronic
+works, and the medium on which they may be stored, may contain
+"Defects," such as, but not limited to, incomplete, inaccurate or
+corrupt data, transcription errors, a copyright or other intellectual
+property infringement, a defective or damaged disk or other medium, a
+computer virus, or computer codes that damage or cannot be read by
+your equipment.
+
+1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the "Right
+of Replacement or Refund" described in paragraph 1.F.3, the Project
+Gutenberg Literary Archive Foundation, the owner of the Project
+Gutenberg-tm trademark, and any other party distributing a Project
+Gutenberg-tm electronic work under this agreement, disclaim all
+liability to you for damages, costs and expenses, including legal
+fees. YOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT
+LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE
+PROVIDED IN PARAGRAPH F3. YOU AGREE THAT THE FOUNDATION, THE
+TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE
+LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR
+INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH
+DAMAGE.
+
+1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a
+defect in this electronic work within 90 days of receiving it, you can
+receive a refund of the money (if any) you paid for it by sending a
+written explanation to the person you received the work from. If you
+received the work on a physical medium, you must return the medium with
+your written explanation. The person or entity that provided you with
+the defective work may elect to provide a replacement copy in lieu of a
+refund. If you received the work electronically, the person or entity
+providing it to you may choose to give you a second opportunity to
+receive the work electronically in lieu of a refund. If the second copy
+is also defective, you may demand a refund in writing without further
+opportunities to fix the problem.
+
+1.F.4. Except for the limited right of replacement or refund set forth
+in paragraph 1.F.3, this work is provided to you 'AS-IS' WITH NO OTHER
+WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
+WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR ANY PURPOSE.
+
+1.F.5. Some states do not allow disclaimers of certain implied
+warranties or the exclusion or limitation of certain types of damages.
+If any disclaimer or limitation set forth in this agreement violates the
+law of the state applicable to this agreement, the agreement shall be
+interpreted to make the maximum disclaimer or limitation permitted by
+the applicable state law. The invalidity or unenforceability of any
+provision of this agreement shall not void the remaining provisions.
+
+1.F.6. INDEMNITY - You agree to indemnify and hold the Foundation, the
+trademark owner, any agent or employee of the Foundation, anyone
+providing copies of Project Gutenberg-tm electronic works in accordance
+with this agreement, and any volunteers associated with the production,
+promotion and distribution of Project Gutenberg-tm electronic works,
+harmless from all liability, costs and expenses, including legal fees,
+that arise directly or indirectly from any of the following which you do
+or cause to occur: (a) distribution of this or any Project Gutenberg-tm
+work, (b) alteration, modification, or additions or deletions to any
+Project Gutenberg-tm work, and (c) any Defect you cause.
+
+
+Section 2. Information about the Mission of Project Gutenberg-tm
+
+Project Gutenberg-tm is synonymous with the free distribution of
+electronic works in formats readable by the widest variety of computers
+including obsolete, old, middle-aged and new computers. It exists
+because of the efforts of hundreds of volunteers and donations from
+people in all walks of life.
+
+Volunteers and financial support to provide volunteers with the
+assistance they need are critical to reaching Project Gutenberg-tm's
+goals and ensuring that the Project Gutenberg-tm collection will
+remain freely available for generations to come. In 2001, the Project
+Gutenberg Literary Archive Foundation was created to provide a secure
+and permanent future for Project Gutenberg-tm and future generations.
+To learn more about the Project Gutenberg Literary Archive Foundation
+and how your efforts and donations can help, see Sections 3 and 4
+and the Foundation web page at https://www.pglaf.org.
+
+
+Section 3. Information about the Project Gutenberg Literary Archive
+Foundation
+
+The Project Gutenberg Literary Archive Foundation is a non profit
+501(c)(3) educational corporation organized under the laws of the
+state of Mississippi and granted tax exempt status by the Internal
+Revenue Service. The Foundation's EIN or federal tax identification
+number is 64-6221541. Its 501(c)(3) letter is posted at
+https://pglaf.org/fundraising. Contributions to the Project Gutenberg
+Literary Archive Foundation are tax deductible to the full extent
+permitted by U.S. federal laws and your state's laws.
+
+The Foundation's principal office is located at 4557 Melan Dr. S.
+Fairbanks, AK, 99712., but its volunteers and employees are scattered
+throughout numerous locations. Its business office is located at
+809 North 1500 West, Salt Lake City, UT 84116, (801) 596-1887, email
+business@pglaf.org. Email contact links and up to date contact
+information can be found at the Foundation's web site and official
+page at https://pglaf.org
+
+For additional contact information:
+ Dr. Gregory B. Newby
+ Chief Executive and Director
+ gbnewby@pglaf.org
+
+
+Section 4. Information about Donations to the Project Gutenberg
+Literary Archive Foundation
+
+Project Gutenberg-tm depends upon and cannot survive without wide
+spread public support and donations to carry out its mission of
+increasing the number of public domain and licensed works that can be
+freely distributed in machine readable form accessible by the widest
+array of equipment including outdated equipment. Many small donations
+($1 to $5,000) are particularly important to maintaining tax exempt
+status with the IRS.
+
+The Foundation is committed to complying with the laws regulating
+charities and charitable donations in all 50 states of the United
+States. Compliance requirements are not uniform and it takes a
+considerable effort, much paperwork and many fees to meet and keep up
+with these requirements. We do not solicit donations in locations
+where we have not received written confirmation of compliance. To
+SEND DONATIONS or determine the status of compliance for any
+particular state visit https://pglaf.org
+
+While we cannot and do not solicit contributions from states where we
+have not met the solicitation requirements, we know of no prohibition
+against accepting unsolicited donations from donors in such states who
+approach us with offers to donate.
+
+International donations are gratefully accepted, but we cannot make
+any statements concerning tax treatment of donations received from
+outside the United States. U.S. laws alone swamp our small staff.
+
+Please check the Project Gutenberg Web pages for current donation
+methods and addresses. Donations are accepted in a number of other
+ways including including checks, online payments and credit card
+donations. To donate, please visit: https://pglaf.org/donate
+
+
+Section 5. General Information About Project Gutenberg-tm electronic
+works.
+
+Professor Michael S. Hart was the originator of the Project Gutenberg-tm
+concept of a library of electronic works that could be freely shared
+with anyone. For thirty years, he produced and distributed Project
+Gutenberg-tm eBooks with only a loose network of volunteer support.
+
+
+Project Gutenberg-tm eBooks are often created from several printed
+editions, all of which are confirmed as Public Domain in the U.S.
+unless a copyright notice is included. Thus, we do not necessarily
+keep eBooks in compliance with any particular paper edition.
+
+
+Most people start at our Web site which has the main PG search facility:
+
+ https://www.gutenberg.org
+
+This Web site includes information about Project Gutenberg-tm,
+including how to make donations to the Project Gutenberg Literary
+Archive Foundation, how to help produce our new eBooks, and how to
+subscribe to our email newsletter to hear about new eBooks.
diff --git a/29461-8.zip b/29461-8.zip
new file mode 100644
index 0000000..e31d1d3
--- /dev/null
+++ b/29461-8.zip
Binary files differ
diff --git a/29461-h.zip b/29461-h.zip
new file mode 100644
index 0000000..d2ca6ea
--- /dev/null
+++ b/29461-h.zip
Binary files differ
diff --git a/29461-h/29461-h.htm b/29461-h/29461-h.htm
new file mode 100644
index 0000000..1c464df
--- /dev/null
+++ b/29461-h/29461-h.htm
@@ -0,0 +1,2375 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" />
+ <meta http-equiv="Content-Style-Type" content="text/css" />
+ <title>
+ The Project Gutenberg eBook of Preliminary Specifications: Programmed Data Processor Model Three (PDP-3),
+ by Digital Equipment Corporation.
+ </title>
+ <style type="text/css">
+ body {margin-left: 7%; margin-right: 6%;}
+ p {margin-top: .75em; margin-bottom: .75em; text-align: justify;}
+ pre {font-size: 0.7em; clear: both;}
+ h1,h2,h3,h4,h5 {text-align: center; clear: both;}
+ hr {text-align: center; margin-left: auto; margin-right: auto; clear: both;
+ width: 65%; margin-top: 2em; margin-bottom: 2em;}
+ hr.short {width: 20%;}
+ hr.invis {margin: 1em auto; visibility: hidden;}
+
+ .figcenter {padding: 1em; margin: 0; text-align: center; width: auto; }
+ .figtag {height: 1px;}
+ img {border: none; padding: 0;}
+ .caption {font-weight: bold; text-align: center;}
+ table {margin-left: auto; margin-right: auto;}
+ .trnote {background-color: #EEE; color: inherit; margin: 2em 5% 1em 5%; font-size: 80%;
+ padding: 0.5em 1em 0.5em 1em; border: dotted 1px gray;}
+ blockquote {display: block; margin: .75em 10% .75em 5%;}
+ div.indentit {display: block; margin: .75em 10% .75em 5%;}
+
+ .pagenum, span.pagenum { position: absolute; left: 1%; font-size: 85%; font-weight:normal; font-variant:normal;
+ padding: 0; font-style: normal; text-indent: 0; text-align: right; }
+ .pagenum {visibility: hidden; display: none;}
+ @media screen {.pagenum {display: inline!important; visibility: visible!important;} }
+
+ .center, .center p {text-align: center;}
+ .nowrap {white-space:nowrap;}
+ .larger {font-size: large;}
+ .instruct {padding-right: 1em; font-style: italic; font-weight: bold;}
+ ins.trchange {text-decoration: none; border-bottom: thin dotted gray;}
+
+ .spacer {padding-top: 1em;}
+ .padit {margin-left: 2em;}
+ sup {font-size: 85%;}
+ sub {font-size: 85%;}
+ </style>
+ </head>
+<body>
+
+
+<pre>
+
+The Project Gutenberg EBook of Preliminary Specifications: Programmed Data
+Processor Model Three (PDP-3), by Digital Equipment Corporation
+
+This eBook is for the use of anyone anywhere at no cost and with
+almost no restrictions whatsoever. You may copy it, give it away or
+re-use it under the terms of the Project Gutenberg License included
+with this eBook or online at www.gutenberg.org
+
+
+Title: Preliminary Specifications: Programmed Data Processor Model Three (PDP-3)
+ October, 1960
+
+Author: Digital Equipment Corporation
+
+Release Date: July 20, 2009 [EBook #29461]
+
+Language: English
+
+Character set encoding: ISO-8859-1
+
+*** START OF THIS PROJECT GUTENBERG EBOOK PDP MODEL THREE (PDP-3) ***
+
+
+
+
+Produced by Gerard Arthus, Katherine Ward, and the Online
+Distributed Proofreading Team at https://www.pgdp.net
+
+
+
+
+
+
+</pre>
+
+
+<div class="center">
+
+<h1>PRELIMINARY SPECIFICATIONS</h1>
+
+<p>&mdash;&mdash;&mdash;</p>
+
+<p class="larger"><b>PROGRAMMED DATA PROCESSOR<br />
+MODEL THREE<br />
+(PDP-3)</b></p>
+
+<p>&mdash;&mdash;&mdash;</p>
+
+<p>October, 1960</p>
+
+<hr class="invis" />
+
+<p>Digital Equipment Corporation<br />
+Maynard, Massachusetts</p>
+</div>
+
+<hr />
+<h2><a name="TABLE_OF_CONTENTS" id="TABLE_OF_CONTENTS"></a>TABLE OF CONTENTS</h2>
+
+<table summary="TOC" width="100%">
+<colgroup>
+ <col width="10%" />
+ <col width="60%" />
+ <col width="10%" />
+ <col width="10%" />
+</colgroup>
+<tr><td colspan="3">INTRODUCTION</td><td /><td class="ralign"><a href="#INTRODUCTION">1</a></td></tr>
+<tr><td /><td colspan="2">General Description</td><td class="ralign"><a href="#GENERAL_DESCRIPTION">1</a></td></tr>
+<tr><td /><td colspan="2">System Block Diagram</td><td class="ralign"><a href="#SYSTEM_BLOCK_DIAGRAM">1</a></td></tr>
+<tr><td /><td colspan="2">Electrical Description</td><td class="ralign"><a href="#ELECTRICAL_DESCRIPTION">4</a></td></tr>
+<tr><td /><td colspan="2">Mechanical Description</td><td class="ralign"><a href="#MECHANICAL_DESCRIPTION">4</a></td></tr>
+<tr><td /><td colspan="2">Environmental Requirements</td><td class="ralign"><a href="#ENVIRONMENTAL_REQUIREMENTS">5</a></td></tr>
+<tr><td colspan="3" class="spacer">CENTRAL PROCESSOR</td><td /><td class="ralign"><a href="#CENTRAL_PROCESSOR">6</a></td></tr>
+<tr><td /><td colspan="2"><ins class="trchange" title="Originally 'Operation'">Operating</ins> Speeds</td><td class="ralign"><a href="#OPERATING_SPEEDS">6</a></td></tr>
+<tr><td /><td colspan="2">Instruction Format</td><td class="ralign"><a href="#INSTRUCTION_FORMAT">6</a></td></tr>
+<tr><td /><td colspan="2">Number System</td><td class="ralign"><a href="#NUMBER_SYSTEM">7</a></td></tr>
+<tr><td /><td colspan="2">Indexing</td><td class="ralign"><a href="#INDEXING">8</a></td></tr>
+<tr><td /><td colspan="2">Indirect Addressing</td><td class="ralign"><a href="#INDIRECT_ADDRESSING">8</a></td></tr>
+<tr><td /><td colspan="2">Instruction List</td><td class="ralign"><a href="#INSTRUCTION_LIST">9</a></td></tr>
+<tr><td /><td colspan="2">Manual Controls</td><td class="ralign"><a href="#MANUAL_CONTROLS">20</a></td></tr>
+<tr><td colspan="3" class="spacer">STORAGE</td><td /><td class="ralign"><a href="#STORAGE">22</a></td></tr>
+<tr><td colspan="3" class="spacer">STANDARD INPUT-OUTPUT</td><td /><td class="ralign"><a href="#STANDARD_INPUT-OUTPUT">23</a></td></tr>
+<tr><td /><td colspan="2">Paper Tape Reader</td><td class="ralign"><a href="#PAPER_TAPE_READER">23</a></td></tr>
+<tr><td /><td colspan="2">Paper Tape Punch</td><td class="ralign"><a href="#PAPER_TAPE_PUNCH">24</a></td></tr>
+<tr><td /><td colspan="2">Typewriter</td><td class="ralign"><a href="#TYPEWRITER">24</a></td></tr>
+<tr><td colspan="3" class="spacer">OPTIONAL INPUT-OUTPUT</td><td /><td class="ralign"><a href="#OPTIONAL_INPUT-OUTPUT">26</a></td></tr>
+<tr><td /><td colspan="2">Sequence Break System</td><td class="ralign"><a href="#SEQUENCE_BREAK_SYSTEM">26</a></td></tr>
+<tr><td /><td colspan="2">High Speed In-Out Channel</td><td class="ralign"><a href="#HIGH_SPEED_IN-OUT_CHANNEL">26</a></td></tr>
+<tr><td /><td colspan="2">Magnetic Tape</td><td class="ralign"><a href="#MAGNETIC_TAPE">27</a></td></tr>
+<tr><td /><td colspan="2">CRT Display</td><td class="ralign"><a href="#CRT_DISPLAY">33</a></td></tr>
+<tr><td /><td colspan="2">Real Time Clock</td><td class="ralign"><a href="#REAL_TIME_CLOCK">33</a></td></tr>
+<tr><td /><td colspan="2">Line Printer</td><td class="ralign"><a href="#LINE_PRINTER">34</a></td></tr>
+<tr><td colspan="3" class="spacer">UTILITY PROGRAMS</td><td /><td class="ralign"><a href="#UTILITY_PROGRAMS">35</a></td></tr>
+<tr><td /><td colspan="2"><ins class="trchange" title="Originally 'Frap'">FRAP</ins> System</td><td class="ralign"><a href="#FRAP_SYSTEM">35</a></td></tr>
+<tr><td /><td colspan="2">DECAL System</td><td class="ralign"><a href="#DECAL_SYSTEM">35</a></td></tr>
+<tr><td /><td colspan="2">Floating Point <ins class="trchange" title="Originally 'Routines'">Subroutines</ins></td><td class="ralign"><a href="#FLOATING_POINT_SUBROUTINES">36</a></td></tr>
+<tr><td /><td colspan="2">Maintenance Routines</td><td class="ralign"><a href="#MAINTENANCE_ROUTINES">37</a></td></tr>
+<tr><td /><td colspan="2">Miscellaneous Routines</td><td class="ralign"><a href="#MISCELLANEOUS_ROUTINES">37</a></td></tr>
+</table>
+
+<hr />
+
+<p><span class="pagenum"><a id="page1" name="page1">-1-</a></span></p>
+<h2><a name="INTRODUCTION" id="INTRODUCTION"></a>INTRODUCTION</h2>
+
+<h3><a name="GENERAL_DESCRIPTION" id="GENERAL_DESCRIPTION"></a>GENERAL DESCRIPTION</h3>
+
+<p>The DEC Programmed Data Processor Model Three (PDP-3) is a high
+performance, large scale digital computer featuring reliability in
+operation together with economy in initial cost, maintenance and
+use. This combination is achieved by the use of very fast, reliable,
+solid state circuits coupled with system design restraint. The
+simplicity of the system design excludes many marginal or superfluous
+features and thus their attendant cost and maintenance problems.</p>
+
+<p>The average internal instruction execution rate is about 100,000
+operations per second with a peak rate of 200,000 operations per
+second. This speed, together with its economy and reliability,
+recommends PDP-3 as an excellent instrument for complex real time
+control applications and as the center of a modern computing facility.</p>
+
+<p>PDP-3 is a stored program, general purpose digital computer. It
+is a single address, single instruction machine operating in parallel
+on 36 bit numbers. It features multiple step indirect addressing
+and indexing of addresses. The main memory makes 511 registers
+available as index registers.</p>
+
+<p>The main storage is coincident current magnetic core modules of 4096
+words each. The computer has a built-in facility to address 8
+modules and can be expanded to drive 64 modules. The memory has a
+cycle time of five microseconds.</p>
+
+<h3><a name="SYSTEM_BLOCK_DIAGRAM" id="SYSTEM_BLOCK_DIAGRAM"></a>SYSTEM BLOCK DIAGRAM</h3>
+
+<p>The flow of information between the various registers of PDP-3 is
+shown in the System Block Diagram (<a href="#FIGURE_1">Fig. 1</a>). There are four registers
+of 36 bit length. Their functions are described below.</p>
+
+<div class="indentit">
+<h4>Memory Buffer</h4>
+
+<p>The Memory Buffer is the central switching register. The
+word coming from or going to memory is retained in this
+register. In arithmetic operations it holds the addend,
+subtrahend, multiplicand, or divisor. The left 6 bits of
+this register communicate with the Instruction Register.
+The address portion of the Memory Buffer Register communicates
+with the Index Adder, the Memory Address Register,<span class="pagenum"><a id="page2" name="page2">-2-</a></span>
+and the Program Counter. In certain instructions, the
+address portion of the control word does not refer to
+memory but specifies variations of an instruction, thus,
+the address portion of the Memory Buffer is connected to
+the Control Element.</p>
+
+<h4>Accumulator</h4>
+
+<p>The Accumulator is the main register of the Arithmetic
+Element. Sums and differences are formed in the Accumulator.
+At the completion of multiplication it holds the high order
+digits of the product. In division it initially contains the
+high order digits of the dividend and is left with the remainder.</p>
+
+<p>The logical functions AND, inclusive OR, and exclusive OR,
+are formed in the Accumulator.</p>
+
+<h4>Carry Storage Register</h4>
+
+<p>The Carry Storage Register facilitates high-speed multiply
+and is properly part of the Accumulator.</p>
+
+<h4>In-Out Register</h4>
+
+<p>The In-Out Register is the main path of communication with
+external equipment. It is also part of the Arithmetic
+Element. In multiplication it ends with the low order digits
+of the product. In division it starts with the low order
+parts of the dividend and ends with the quotient.</p>
+
+<p>The In-Out Register has a full set of shifting properties,
+(arithmetic and logical).</p>
+
+<hr class="short" />
+
+<blockquote><p>There are three registers of 15 bit length which
+deal exclusively with addresses. The design allows for
+expansion to 18 bits. These registers are:</p></blockquote>
+
+<h4>Memory Addressing</h4>
+
+<p>The Memory Address Register holds the number of the memory
+location that is currently being interrogated. It receives
+this number from the Program Counter, the Index Adder or the
+Memory Buffer.</p>
+
+<p><span class="pagenum"><a id="page3" name="page3">-3-</a></span></p>
+<h4>Program Counter</h4>
+
+<p>The Program Counter holds the memory location of the next
+instruction to be executed.</p>
+
+<h4>Index Adder</h4>
+
+<p>The Index Adder is a 15 bit ring accumulator. The sum of an
+instruction base address, Y, and the contents of an index
+register, C(x), are formed in this register. This register
+holds the previous content of the Program Counter in the
+"jump and save Program Counter," jps, instruction. The Index
+Adder also serves as the step counter in shift, multiply, and
+divide.</p>
+
+<hr class="short" />
+
+<blockquote><p>The Control Element contains two six bit registers
+and several miscellaneous flip-flops. The latter
+deal with indexing, indirect addressing, memory control,
+etc. The six bit registers are:</p></blockquote>
+
+<h4>Instruction Register</h4>
+
+<p>The Instruction Register receives the first six bits of the
+Memory Buffer Register during the cycle which obtains the
+instruction from memory (cycle zero). This information is
+the primary input to the Control Element.</p>
+
+<h4>Program Flags</h4>
+
+<p>The six Program Flags act as convenient program switches. They
+are used to indicate separate states of a program. The program
+can set, clear, or sense the individual flip-flops. The
+program can also sense or make the state "All Flags ZERO."
+They can also be used to synchronize various input devices
+which occur at random times (see <a href="#STANDARD_INPUT-OUTPUT">Input-Output</a>, <a href="#TYPEWRITER">Typewriter
+Input</a>).</p>
+
+<hr class="short" />
+
+<blockquote><p>Three toggle switch registers are connected to the
+Central Processor (see <a href="#MANUAL_CONTROLS">Manual Controls</a>).</p></blockquote>
+
+<h4>Test Address</h4>
+
+<p>The fifteen Test Address Switches are used to indicate start
+points and to select memory registers for manual examination
+or change.</p>
+
+<p><span class="pagenum"><a id="page4" name="page4">-4-</a></span></p>
+<h4>Test Word</h4>
+
+<p>The thirty-six Test Word Switches indicate a new number for
+manual deposit into memory. They may also be used for insertion
+of constants while a program is operating by means of
+<ins class="trchange" title="Originally 'theoperate'">the operate</ins> instruction.</p>
+
+<h4>Sense Switches</h4>
+
+<p>The six Sense Switches allow the operator to manually select
+program options or cause a jump to another program in memory.
+The program can sense individual switches or the state "All
+Switches ZERO."</p>
+</div>
+
+<h3><a name="ELECTRICAL_DESCRIPTION" id="ELECTRICAL_DESCRIPTION"></a>ELECTRICAL DESCRIPTION</h3>
+
+<p>The PDP-3 circuitry is the static type using saturating transistor
+flip-flops and, for the most part, transistor switch elements.
+The primary active elements are Micro-Alloy and Micro-Alloy-Diffused
+transistors. The flip-flops have built-in delay so that a logic
+net may be sampled and changed simultaneously.</p>
+
+<p>Machine timing is performed by a delay line chain. Auxiliary delay
+line chains time the step counter instructions (multiply, divide,
+etc.). The machine is thus internally synchronous with step counter
+instructions being asynchronous. The machine is asynchronous for
+in-out operations, that is, the completion of an in-out operation
+initiates the following instruction.</p>
+
+<h3><a name="MECHANICAL_DESCRIPTION" id="MECHANICAL_DESCRIPTION"></a>MECHANICAL DESCRIPTION</h3>
+
+<p>The PDP-3 consists of two mechanical assemblies, the Console and the
+Equipment Frame. <a href="#FIGURE_3">Fig. 3</a> is a photograph of PDP-1 which is an 18
+bit version of PDP-3.</p>
+
+<div class="indentit">
+<h4>Console</h4>
+
+<p>The Console is a desk approximately seven feet long. It
+contains the controls and indicators necessary for operation
+and maintenance of the machine. A cable connects the Console
+to the Equipment Frame.</p>
+
+<p><span class="pagenum"><a id="page5" name="page5">-5-</a></span></p>
+<h4>Equipment Frame</h4>
+
+<p>The Equipment Frame is approximately six feet high and two
+feet deep. The length is a function of the amount of
+optional features included. The Central Processor requires a
+length of five and one half feet. The power cabinet is
+twenty-two inches long. A memory cabinet is thirty-two inches
+long and will hold three memory modules (12,288 words per
+cabinet). Memory cabinets may be added at any time.</p>
+
+<p>Magnetic tape units require twenty-two inches per transport.
+A tape unit cabinet may be connected as an extension of the
+Equipment Frame or may be a free-standing frame.</p>
+</div>
+
+<h3><a name="ENVIRONMENTAL_REQUIREMENTS" id="ENVIRONMENTAL_REQUIREMENTS"></a>ENVIRONMENTAL REQUIREMENTS</h3>
+
+<p>The PDP-3 requires no special room preparation. The computer will
+operate properly over the normal range of room temperature.</p>
+
+<p>The Central Processor and memory together require thirty amperes of
+110 volts single phase 60 cycle ac. Each inactive tape transport
+requires two amperes and the one active transport requires 10 amperes.</p>
+
+<hr />
+
+<p><span class="pagenum"><a id="page6" name="page6">-6-</a></span></p>
+<h2><a name="CENTRAL_PROCESSOR" id="CENTRAL_PROCESSOR"></a>CENTRAL PROCESSOR</h2>
+
+<p>The Central Processor of PDP-3 contains the Control Element, the
+Memory Buffer Register, the Arithmetic Element, and the Memory
+Addressing Element. The Control Element governs the complete
+operation of the computer including memory timing, instruction
+performance, and the initiation of input-output commands. The
+Arithmetic Element, which includes the Accumulator, the In-Out Register,
+and the Carry Storage Register, performs the arithmetic
+operations. The Memory Addressing Element which includes the Index
+Adder, the Program Counter, and the Memory Address Register, performs
+address bookkeeping and modification.</p>
+
+<h3><a name="OPERATING_SPEEDS" id="OPERATING_SPEEDS"></a>OPERATING SPEEDS</h3>
+
+<p>Operating times of PDP-3 instructions are normally multiples of
+the memory cycle of 5 microseconds. Two cycle instructions refer
+twice to memory and thus require 10 microseconds for completion.
+Examples of this are add, subtract, deposit, load, etc. One cycle
+instructions do not refer to memory and require 5 microseconds.
+Examples of the latter are the jump instructions, the skip instructions,
+and the operate group. The operating times of variable
+cycle instructions depend upon the instruction. For example, the
+operating time for a shift or rotate instruction is <span class="nowrap">5 +0.2N</span> microseconds,
+where N is the number of shifts performed. The operating
+times for multiply and divide are functions of the number of ones
+in the multiplier and in the quotient, respectively. Maximum
+time for multiply is 25 microseconds. This includes the time
+necessary to get the multiply instruction from memory. Divide
+takes 90 microseconds maximum.</p>
+
+<p>In-Out Transfer instructions that do not include the optional wait
+function require 5 microseconds. If the in-out device requires a
+wait time for completion, the operating time depends upon the device
+being used.</p>
+
+<p>If an instruction includes reference to an index register, an
+additional 5 microseconds is required. Each step of indirect
+addressing also requires an additional 5 microseconds.</p>
+
+<h3><a name="INSTRUCTION_FORMAT" id="INSTRUCTION_FORMAT"></a>INSTRUCTION FORMAT</h3>
+
+<p>The instructions for PDP-3 may be divided into three classes:<span class="pagenum"><a id="page7" name="page7">-7-</a></span></p>
+
+<ol>
+<li>Indexable memory instructions</li><li>Non-indexable memory instructions</li>
+<li>Non-memory instructions.</li>
+</ol>
+
+<p>The layout of the instruction word is shown in <a href="#FIGURE_2">Fig. 2</a>.</p>
+
+<p>The octal digits 0 and 1 define the instruction code, thus, there
+are 64 possible instruction codes, not all of which are used. The
+first bit of octal digit 2 is the indirect address bit. If this
+bit is a ONE, indirect addressing occurs.</p>
+
+<p>The index address, X, is in octal digits 3, 4, and 5. These digits
+address an index register for memory-type instructions. If these
+digits are all ZERO, indexing will not take place. In main memory,
+511 of the registers can be used as automatic index registers.</p>
+
+<p>The instruction base address, <ins class="trchange" title="Added comma">Y,</ins> is in octal digits 7 through 11.
+These digits are sufficient to address 32,768 words of memory.
+Octal digit 6 is reserved for further memory expansion. Space is
+available in the equipment frame for this expansion, should it prove
+desirable.</p>
+
+<p>In those instructions which do not refer to memory, the memory
+address digits, Y, and in some cases the index address digits also,
+are used to specify the variations in any group of instructions.
+An example of this is in the shift and rotate instructions in which
+the memory address digits determine the number of shifts.</p>
+
+<h3><a name="NUMBER_SYSTEM" id="NUMBER_SYSTEM"></a>NUMBER SYSTEM</h3>
+
+<p>The PDP-3 is a "fixed" point machine using binary arithmetic. Negative
+numbers are represented as the 1's complement of the positive
+numbers. Bit 0 is the sign bit which is ZERO for positive numbers.
+Bits 1 to 35 are magnitude bits with bit 1 being the most significant
+and bit 35 being the least significant.</p>
+
+<p>The actual position of the binary point may be arbitrarily assigned
+to best suit the problem in hand. Two common conventions in the
+placement of the binary point are:</p>
+
+<ol>
+<li>The binary point is to the right of the least significant
+digit, thus, numbers represent integers.</li>
+<li>The binary point is to the right of the sign digit, thus
+the numbers represent a fraction which lies between &plusmn;1.</li></ol>
+
+<p><span class="pagenum"><a id="page8" name="page8">-8-</a></span>
+The conversion of decimal numbers into the binary system for use by
+the machine may be performed automatically by <ins class="trchange" title="Standardized from 'sub-routines'">subroutines</ins>. Similarly
+the output conversion of binary numbers into decimals is done by
+<ins class="trchange" title="Standardized from 'sub-routine'">subroutine</ins>. Operations for floating point numbers are handled by
+programming. The utility program system provides for automatic
+insertion of the routines required to perform floating point operations
+and number base conversion (see <a href="#UTILITY_PROGRAMS">Utility Programs</a>).</p>
+
+<h3><a name="INDEXING" id="INDEXING"></a>INDEXING</h3>
+
+<p>In PDP-3, 511 registers of the main magnetic core memory are available
+for use as automatic index registers. Their addresses are
+specified by octal digits 3 to 5 of the instruction word. These
+registers are memory locations 001-777 (octal). Address 000
+specifies that no index register is to be used with the instructions.
+The contents of octal digits 7 through 11 of the selected index
+register are added to the unmodified address (octal digits 7 through
+11 of the instruction).</p>
+
+<p>This sum is used to locate the operand. The addition is done in
+the Index Adder which is a 15 bit 1's complement adder. The contents
+of the Accumulator and the In-Out Register are unaffected by the
+indexing process. An instruction which has used indexing is retained
+in memory with its original address unmodified. Memory registers
+1-777 (octal) are available for use as normal memory registers if
+they are not being used as index registers. The left half of these
+registers is available for the storage of constants, tables, etc.,
+when octal digits 7 through 11 act as index registers.</p>
+
+<p>Three special instructions snx, spx and lir, are available to
+facilitate resetting, advancing, and sampling of the index registers.
+Since the index registers are normal memory registers, their contents
+can also be manipulated by the standard computer instructions.</p>
+
+<h3><a name="INDIRECT_ADDRESSING" id="INDIRECT_ADDRESSING"></a>INDIRECT ADDRESSING</h3>
+
+<p>An instruction which is to use an indirect address will have a ONE
+in bit six of the instruction word. The original address, Y, of the
+instruction will not be used to locate the operand of the instruction,
+as is the normal case. Instead, it is used to locate a memory
+register whose contents in octal digits 7 through 11 will be used
+as the address of the original instruction. This new address is
+known as the indirect address for the instruction and will be used
+<span class="pagenum"><a id="page9" name="page9">-9-</a></span>to locate the operand. If the memory register containing the
+indirect address also has a 1 in bit six, the indirect addressing
+procedure is repeated again and a third address is located. There
+is no limit to the number of times this process can be repeated.</p>
+
+<p>Index registers may be used in conjunction with indirect addressing.
+In this case, the address after being modified by the selected index
+register is used to locate the indirect address.</p>
+
+<p>The indirect address can be acted on by an index register and
+deferred again if desired. Each use of an index register or an
+indirect address extends the operating time of the original instruction
+by 5 microseconds.</p>
+
+<h3><a name="INSTRUCTION_LIST" id="INSTRUCTION_LIST"></a>INSTRUCTION LIST</h3>
+
+<p>This list includes the title of the instruction, the normal execution
+time of the instruction, i.e., the time with no indexing and no
+deferring, the mnemonic code of the instruction, and the operation
+code number. The notation used requires the following definitions.
+The contents of a register Q are indicated as C(Q). The address
+portion of the instruction is indicated by Y. The index register
+address of an instruction is indicated by x. The effective address
+of an operand is indicated by Z. Z may be equal to Y or it may be
+Y as modified by deferring or by indexing.</p>
+
+<h4>Indexable Memory Instructions</h4>
+
+<h5>Arithmetic Instructions</h5>
+
+<div class="indentit">
+<p>
+<span class="instruct">Add</span>(10 usec.)<br />
+add x Y <span class="padit">Operation Code 40</span>
+</p>
+
+<p>The new C(AC) are the sum of C(Z) and the original C(AC).
+The C(Z) are unchanged. The addition is performed with 1's
+complement arithmetic.</p>
+
+<p>If the sum exceeds the capacity of the Accumulator Register,
+the overflow flip-flop will be set (see <a href="#SKIP_GROUP">Skip Group instructions</a>).</p>
+
+<p class="spacer">
+<span class="instruct">Subtract</span>(10 usec.)<br />
+sub x Y <span class="padit">Operation Code 42</span>
+</p>
+
+<p>The new C(AC) are the original C(AC) minus the C(Z).
+The C(Z) are unchanged. The subtraction is performed using
+1's complement arithmetic.</p>
+
+<p><span class="pagenum"><a id="page10" name="page10">-10-</a></span>
+If the difference exceeds the capacity of the Accumulator, the
+overflow flip-flop will be set (see <a href="#SKIP_GROUP">Skip Group instructions</a>).</p>
+
+<p class="spacer">
+<span class="instruct">Multiply</span>(approximately 25 usec.)<br />
+mul x Y <span class="padit">Operation Code 54</span>
+</p>
+
+<p>The C(AC) are multiplied by the C(Z). The most significant
+digits of the product are left in the Accumulator and the least
+significant digits in the In-Out Register. The previous C(AC)
+are lost.</p>
+
+<p class="spacer">
+<span class="instruct">Divide</span>(approximately 90 usec.)<br />
+div x Y <span class="padit">Operation Code 56</span>
+</p>
+
+<p>The Accumulator and the In-Out Register together form a 70 bit
+dividend. The high order part of the dividend is in the
+Accumulator. The low order part of the dividend is in the
+In-Out Register. The divisor is (Z).</p>
+
+<p>Upon completion of the division, the quotient is in the In-Out
+Register. The remainder is in the Accumulator. The sign of
+the remainder is the same as the sign of the dividend. If the
+dividend is larger than C(Z), the overflow flip-flop will be
+set and the division will not take place.</p>
+</div>
+
+<h5>Logical Instructions</h5>
+
+<div class="indentit">
+<p>
+<span class="instruct">Logical AND</span>(10 usec.)<br />
+and x Y <span class="padit">Operation Code 02</span>
+</p>
+
+<p>The bits of C(Z) operate on the corresponding bits of the
+Accumulator to form the logical AND. The result is left in
+the Accumulator. The C(Z) are unaffected by this instruction.</p>
+
+<p class="center">Logical AND Function Table</p>
+
+<table border="0" cellpadding="2" cellspacing="0" summary="">
+<colgroup>
+<col />
+<col width="50%" />
+<col />
+</colgroup>
+<tr><td align="center">AC Bit</td><td align="center">C(Z) Bit</td><td align="center">Result</td></tr>
+<tr><td align="center">0</td><td align="center">0</td><td align="center">0</td></tr>
+<tr><td align="center">0</td><td align="center">1</td><td align="center">0</td></tr>
+<tr><td align="center">1</td><td align="center">0</td><td align="center">0</td></tr>
+<tr><td align="center">1</td><td align="center">1</td><td align="center">1</td></tr>
+</table>
+
+<p class="spacer">
+<span class="instruct">Exclusive OR</span>(10 usec.)<br />
+xor x Y <span class="padit">Operation Code 06</span>
+</p>
+
+<p><span class="pagenum"><a id="page11" name="page11">-11-</a></span>
+The bits of C(Z) operate on the corresponding bits of the
+Accumulator to form the exclusive OR. The result is left in
+the Accumulator. The C(Z) are unaffected by this order.</p>
+
+<p class="center">Exclusive OR Table</p>
+
+<table border="0" cellpadding="2" cellspacing="0" summary="">
+<colgroup>
+<col />
+<col width="50%" />
+<col />
+</colgroup>
+<tr><td align="center">AC Bit</td><td align="center">C(Z) Bit</td><td align="center">Result</td></tr>
+<tr><td align="center">0</td><td align="center">0</td><td align="center">0</td></tr>
+<tr><td align="center">0</td><td align="center">1</td><td align="center">1</td></tr>
+<tr><td align="center">1</td><td align="center">0</td><td align="center">1</td></tr>
+<tr><td align="center">1</td><td align="center">1</td><td align="center">0</td></tr>
+</table>
+
+<p class="spacer">
+<span class="instruct">Inclusive OR</span>(10 usec.)<br />
+ior x Y <span class="padit">Operation Code 04</span>
+</p>
+
+<p>The bits of C(Z) operate on the corresponding bits of the
+Accumulator to form the inclusive OR. The result is left in
+the Accumulator. The C(Z) are unaffected by this order.</p>
+
+<p class="center">Inclusive OR Table</p>
+
+<table border="0" cellpadding="2" cellspacing="0" summary="">
+<colgroup>
+<col />
+<col width="50%" />
+<col />
+</colgroup>
+<tr><td align="center">AC Bit</td><td align="center">C(Z) Bit</td><td align="center">Result</td></tr>
+<tr><td align="center">0</td><td align="center">0</td><td align="center">0</td></tr>
+<tr><td align="center">0</td><td align="center">1</td><td align="center">1</td></tr>
+<tr><td align="center">1</td><td align="center">0</td><td align="center">1</td></tr>
+<tr><td align="center">1</td><td align="center">1</td><td align="center">1</td></tr>
+</table>
+</div>
+
+<h5>General Instructions</h5>
+
+<div class="indentit">
+<p>
+<span class="instruct">Load Accumulator</span>(10 usec.)<br />
+lac x Y <span class="padit">Operation Code 20</span>
+</p>
+
+<p>The C(Z) are placed in the Accumulator. The C(Z) are
+unchanged. The original C(Z) are lost.</p>
+
+<p class="spacer">
+<span class="instruct">Deposit Accumulator</span>(10 usec.)<br />
+dac x Y <span class="padit">Operation Code 24</span>
+</p>
+
+<p>The C(AC) replace the C(Z) in the memory. The C(AC) are
+left unchanged by this instruction. The original C(Z) are lost.</p>
+
+<p class="spacer"><span class="pagenum"><a id="page12" name="page12">-12-</a></span>
+<span class="instruct">Deposit Address Part</span>(10 usec.)<br />
+dap x Y <span class="padit">Operation Code 26</span>
+</p>
+
+<p>Octal digits 6 through 11 of the Accumulator replace the
+corresponding digits of memory register Z.</p>
+
+<p>C(AC) are unchanged as are the contents of octal digits 0
+through 5 of Z. The original contents of octal digits 6
+through 11 of Z are lost.</p>
+
+<p class="spacer">
+<span class="instruct">Deposit Instruction Part</span>(10 usec.)<br />
+dip x Y <span class="padit">Operation Code 30</span><br />
+</p>
+
+<p>Octal digits 0 through 5 of the Accumulator replace the
+corresponding digits of memory register Z. The Accumulator is
+unchanged as are digits 6 through 11 of Z. The original
+contents of octal digits 0 through 5 of Z are lost.</p>
+
+<p class="spacer">
+<span class="instruct">Load In-Out Register</span>(10 usec.)<br />
+lio x Y <span class="padit">Operation Code 22</span>
+</p>
+
+<p>The C(Z) are placed in the In-Out Register. C(Z) are unchanged.
+The original C(IO) are lost.</p>
+
+<p class="spacer">
+<span class="instruct">Deposit In-Out Register</span>(10 usec.)<br />
+dio x Y <span class="padit">Operation Code 32</span>
+</p>
+
+<p>The C(IO) replace the C(Z) in memory. The C(IO) are
+unaffected by this instruction. The original C(Z) are lost.</p>
+
+<p class="spacer">
+<span class="instruct">Jump</span>(5 usec.)<br />
+jmp x Y <span class="padit">Operation Code 60</span><br />
+</p>
+
+<p>The Program Counter is reset to address Z. The next instruction
+that will be executed will be taken from memory register
+Z. The original contents of the Program Counter are lost.</p>
+
+<p class="spacer">
+<span class="instruct">Jump and Save Program Counter</span>(5 usec.)<br />
+jsp x Y <span class="padit">Operation Code 62</span>
+</p>
+
+<p>The contents of the Program Counter are transferred to the
+Index Adder. When the transfer takes place, the Program
+Counter holds the address of the instruction following the jsp.
+The Program Counter is then reset to address Z. The next
+instruction that will be executed will be taken from memory
+register Z.</p>
+
+<p class="spacer"><span class="pagenum"><a id="page13" name="page13">-13-</a></span>
+<span class="instruct">Skip if Accumulator and Z differ</span>(10 usec.)<br />
+sad x Y <span class="padit">Operation Code 50</span>
+</p>
+
+<p>The C(Z) are compared with the C(AC). If the two numbers
+are different, the Program Counter is indexed one extra
+position and the next instruction in the sequence is skipped.
+The C(AC) and the C(Z) are unaffected by this operation.</p>
+
+<p class="spacer">
+<span class="instruct">Skip if Accumulator and Z are the same</span>(10 usec.)<br />
+sas x Y <span class="padit">Operation Code 52</span>
+</p>
+
+<p>The C(Z) are compared with C(AC). If the two numbers are
+identical, the Program Counter is indexed one extra position
+and the next instruction in the sequence is skipped. The
+C(AC) and C(Z) are unaffected by this operation.</p>
+</div>
+
+<h4>Non-Indexable Memory Instructions</h4>
+
+<p>These instructions have the same word format as the indexable instructions.
+Since they operate on the index register location, x, they
+cannot be indexed.</p>
+
+<div class="indentit">
+<p>
+<span class="instruct">Skip on Negative index</span>(10 usec.)<br />
+snx x Y <span class="padit">Operation Code 46</span>
+</p>
+
+<p>The number in octal digits 7 through 11 of the instruction
+word is added to the C(x). This addition is done in the
+15 bit Index Adder using 1's complement arithmetic. If, after
+the addition, the sum is negative, the Program Counter is
+advanced one extra position and the next instruction in the
+sequence is skipped. The contents of octal digits 0-5 of
+the index register location are unaffected by this instruction.</p>
+
+<p class="spacer">
+<span class="instruct">Skip on Positive index</span>(10 usec.)<br />
+spx x Y <span class="padit">Operation Code 44</span>
+</p>
+
+<p>The number in octal digits 7 through 11 of the instruction
+word is added to the C(x). This addition is done in the
+15 bit Index Adder using 1's complement arithmetic.</p>
+
+<p>If, after the addition, the sum is positive, the Program
+Counter is advanced one extra position and the next instruction
+in the sequence is skipped. The contents of octal digits
+0-5 of the index register location are unaffected by this
+instruction.</p>
+
+<p class="spacer"><span class="pagenum"><a id="page14" name="page14">-14-</a></span>
+<span class="instruct">Load Index Register</span>(10 usec.)<br />
+lir x Y <span class="padit">Operation Code 14</span>
+</p>
+
+<p>The octal digits 7 through 11 (Y) of the instruction will
+replace the corresponding digits of the memory register
+specified by x. Octal digit 6 of the memory register will
+be left clear. Digits 0-5 of the memory register are unchanged.</p>
+
+<p class="spacer">
+<span class="instruct">Deposit Index Adder</span>(10 usec.)<br />
+dia x Y <span class="padit">Operation Code 16</span>
+</p>
+
+<p>The C(IA) replace the octal digits 7 through 11 of memory
+location Y. Octal digit 6 of Y is cleared. Digits 0 through
+5 of Y are left unchanged. The x portion of the instruction
+is ignored.</p>
+</div>
+
+<h4>Non-Memory Instructions</h4>
+
+<h5>Rotate and Shift Group</h5>
+
+<p>This group of instructions will rotate or shift the Accumulator
+and/or the In-Out Register. When the two registers operate
+combined, the In-Out Register is considered to be a 36 bit magnitude
+extension of the right end of the Accumulator.</p>
+
+<p>Rotate is a non-arithmetic cyclic shift. That is, the two ends of
+the register are logically tied together and information is
+rotated as though the register were a ring.</p>
+
+<p>Shift is an arithmetic operation and is in effect multiplication of
+the number in the register by 2<sup>+N</sup>, where N is the number of shifts.
+Shift or rotate instructions involving more than 33 steps can be
+used for simulating time delays. 36 rotate steps of the Accumulator
+will return all information to its original position.</p>
+
+<div class="indentit">
+<p>
+<span class="instruct">Rotate Accumulator Right</span>(13 usec. maximum for 36 shifts)<br />
+rar N <span class="padit">Operation Code 671</span>
+</p>
+
+<p>This instruction will rotate the bits of the Accumulator
+right N positions, where N is octal digits 7-11 of the
+instructions word.</p>
+
+<p class="spacer"><span class="pagenum"><a id="page15" name="page15">-15-</a></span>
+
+<span class="instruct">Rotate Accumulator Left</span>(13 usec. maximum for 36 shifts)<br />
+ral N <span class="padit">Operation Code 661</span>
+</p>
+
+<p>This instruction will rotate the bits of the Accumulator left
+N Positions, where N is octal digits 7-11 of the instruction
+word.</p>
+
+<p class="spacer">
+<span class="instruct">Shift Accumulator Right</span>(13 usec. maximum for 36 shifts)<br />
+sar N <span class="padit">Operation Code 675</span>
+</p>
+
+<p>This instruction will shift the contents of the Accumulator
+right N positions, where N is octal digits 7-11 of the instruction
+word.</p>
+
+<p class="spacer">
+<span class="instruct">Shift Accumulator Left</span>(13 usec. maximum for 36 shifts)<br />
+sal N <span class="padit">Operation Code 665</span>
+</p>
+
+<p>This instruction will shift the contents of the Accumulator
+left N positions, where N is octal digits 7-11 of the
+instruction word.</p>
+
+<p class="spacer">
+<span class="instruct">Rotate In-Out Register Right</span>(13 usec. maximum for 36 shifts)<br />
+rir N <span class="padit">Operation Code 672</span>
+</p>
+
+<p>This instruction will rotate the bits of the In-Out Register
+right N positions, where N is octal digits 7-11 of the
+instruction word.</p>
+
+<p class="spacer">
+<span class="instruct">Rotate In-Out Register Left</span>(13 usec. maximum for 36 shifts)<br />
+ril N <span class="padit">Operation Code 662</span>
+</p>
+
+<p>This instruction will rotate the bits of the In-Out Register
+left N positions, where N is octal digits 7-11 of the
+instruction word.</p>
+
+<p class="spacer">
+<span class="instruct">Shift In-Out Register Right</span>(13 usec. maximum for 36 shifts)<br />
+sir N <span class="padit">Operation Code 676</span>
+</p>
+
+<p>This instruction will shift the contents of the In-Out Register
+right N positions, where N is octal digits 7-11 of the
+instruction word.</p>
+
+<p class="spacer">
+<span class="instruct">Shift In-Out Register Left</span>(13 usec. maximum for 36 shifts)<br />
+sil N <span class="padit">Operation Code 666</span>
+</p>
+
+<p><span class="pagenum"><a id="page16" name="page16">-16-</a></span>
+This instruction will shift the contents of the In-Out
+Register left N positions, where N is octal digits 7-11 of
+the instruction word.</p>
+
+<p class="spacer">
+<span class="instruct">Rotate AC and IO Right</span>(13 usec. maximum for 36 shifts)<br />
+rcr N <span class="padit">Operation Code 673</span>
+</p>
+
+<p>This instruction will rotate the bits of the combined
+register right in a single ring N positions, where N is octal
+digits 7-11 of the instruction word.</p>
+
+<p class="spacer">
+<span class="instruct">Rotate AC and IO Left</span>(13 usec. maximum for 36 shifts)<br />
+rcl N <span class="padit">Operation Code 663</span>
+</p>
+
+<p>This instruction will rotate the bits of the combined register
+left in a single ring N position, where N is octal digits
+7-11 of the instruction word.</p>
+
+<p class="spacer">
+<span class="instruct">Shift AC and IO Right</span>(13 usec. maximum for 36 shifts)<br />
+scr N <span class="padit">Operation Code 677</span>
+</p>
+
+<p>This instruction will shift the contents of the combined
+register right N <ins class="trchange" title="Added comma">positions,</ins> where N is octal digits 7-11 of
+the instruction word.</p>
+
+<p class="spacer">
+<span class="instruct">Shift AC and IO Left</span>(13 usec. maximum for 36 shifts)<br />
+scl N <span class="padit">Operation Code 667</span>
+</p>
+
+<p>This instruction will shift the contents of the combined
+registers <ins class="trchange" title="Moved comma. Was 'left, N positions'">left N positions,</ins> where N is octal digits 7-11 of
+the instruction word.</p>
+</div>
+
+<hr class="invis" />
+
+<p>
+<span class="instruct"><a id="SKIP_GROUP" name="SKIP_GROUP">Skip Group</a></span>(5 usec.)<br />
+skp Y <span class="padit">Operation Code 64</span>
+</p>
+
+<p>This group of instructions senses the state of various flip-flops
+and switches in the machine. It does not require any reference to
+memory. The address portion of the instruction selects the particular
+function to be sensed. All members of this group have the
+same operation code.</p>
+
+<div class="indentit">
+<p>
+<span class="instruct">Skip on ZERO Accumulator</span>(5 usec.)<br />
+sza Address 100<br />
+</p>
+
+<p><span class="pagenum"><a id="page17" name="page17">-17-</a></span>
+If the Accumulator is equal to plus ZERO (all bits are ZERO)
+the Program Counter is advanced one extra position and the
+next instruction in the sequence is skipped.</p>
+
+<p class="spacer">
+<span class="instruct">Skip on Plus Accumulator</span>(5 usec.)<br />
+spa Address 200<br />
+</p>
+
+<p>If the sign bit of the Accumulator is ZERO, the Program Counter
+is advanced one extra position and the next instruction in
+the sequence is skipped.</p>
+
+<p class="spacer">
+<span class="instruct">Skip on Minus Accumulator</span>(5 usec.)<br />
+sma Address 400<br />
+</p>
+
+<p>If the sign bit of the Accumulator is ONE, the Program Counter
+is advanced one extra position and the next instruction in the
+sequence is skipped.</p>
+
+<p class="spacer">
+<span class="instruct">Skip on ZERO Overflow</span>(5 usec.)<br />
+szo Address 1000<br />
+</p>
+
+<p>If the overflow flip-flop is a ZERO the Program Counter is
+advanced one extra position and the next instruction in the
+sequence will be skipped. The overflow flip-flop is cleared
+by this instruction. This flip-flop is set by addition,
+subtraction, or division that exceeds the capacity of the
+Accumulator. The overflow flip-flop is not cleared by arithmetic
+operations which do not cause an overflow. Thus, a
+whole series of arithmetic operations may be checked for
+correctness by a single szo. The overflow flip-flop is cleared
+by the "Start" Switch.</p>
+
+<p class="spacer">
+<span class="instruct">Skip on Plus In-Out Register</span>(5 usec.)<br />
+spi Address 2000<br />
+</p>
+
+<p>If the sign digit of the In-Out Register is ZERO the Program
+Counter is indexed one extra position and the next instruction
+in the sequence is skipped.</p>
+
+<p class="spacer">
+<span class="instruct">Skip on ZERO Switch</span>(5 usec.)<br />
+szs Addresses 10, 20, ... 70<br />
+</p>
+
+<p>If the selected Sense Switch is ZERO, the Program Counter is
+advanced one extra position and the next instruction in the<span class="pagenum"><a id="page18" name="page18">-18-</a></span>
+sequence will be skipped. Address 10 senses the position of
+Sense Switch 1, Address 20 Switch 2, etc. Address 70 senses
+all the switches. If 70 is selected all 6 switches must be
+ZERO to cause the skip to occur.</p>
+
+<p class="spacer">
+<span class="instruct">Skip on ZERO Program Flag</span>(5 usec.)<br />
+szf Addresses 0 to 7 inclusive<br />
+</p>
+
+<p>If the selected program flag is a ZERO, the Program Counter is
+advanced one extra position and the next instruction in the
+sequence will be skipped. Address 0 is no selection. Address
+1 selects program flag one, etc. Address 7 selects all
+programs flags. All flags must be ZERO to cause the skip.</p>
+
+<p>The instructions in the One Cycle Skip group may be combined
+to form the inclusive OR of the separate skips. Thus, if
+address 3000 is selected, the skip would occur if the overflow
+flip-flop equals ZERO or if the In-Out Register is positive.
+The combined instruction would still take 5 microseconds.</p>
+</div>
+
+<hr class="invis" />
+
+<p>
+<span class="instruct">Operate Group</span>(5 usec.)<br />
+opr Y <span class="padit">Operation Code 76</span>
+</p>
+
+<p>This instruction group performs miscellaneous operations on various
+Central Processor Registers. The address portion of the instruction
+specifies the action to be performed.</p>
+
+<div class="indentit">
+<p>
+<span class="instruct">Clear In-Out Register</span>(5 usec.)<br />
+cli Address equal 4000<br />
+</p>
+
+<p>This instruction clears the In-Out Register.</p>
+
+<p class="spacer">
+<span class="instruct">Load Accumulator from Test Word</span>(5 usec.)<br />
+lat Address 2000<br />
+</p>
+
+<p>This instruction forms the inclusive OR of the C(AC) and the
+contents of the Test Word. This instruction is usually
+combined with address 200 (clear Accumulator), so that C(AC)
+will equal the contents of the Test Word Switches.</p>
+
+<p class="spacer">
+<span class="instruct">Complement Accumulator</span>(5 usec.)<br />
+cma Address 1000<br />
+</p>
+
+<p>This instruction complements (makes negative) the contents of
+the Accumulator.</p>
+
+<p class="spacer"><span class="pagenum"><a id="page19" name="page19">-19-</a></span>
+
+<span class="instruct">Halt</span><br />
+hlt Address 400<br />
+</p>
+
+<p>This instruction stops the computer.</p>
+
+<p class="spacer">
+<span class="instruct">Clear Accumulator</span>(5 usec.)<br />
+cla Address 200<br />
+</p>
+
+<p>This instruction clears (sets equal to plus 0) the contents of
+the Accumulator.</p>
+
+<p class="spacer">
+<span class="instruct">Clear Selected Program Flag</span>(5 usec.)<br />
+clf Address 01 to 07 inclusive<br />
+</p>
+
+<p>The selected program flag will be cleared. Address 00 selects
+no program flag, 01 clears program flag 1, 02 clears program
+flag 2, etc. Address 07 clears all program flags.</p>
+
+<p class="spacer">
+<span class="instruct">Set Selected Program Flag</span>(5 usec.)<br />
+stf Address 11 to 17 inclusive<br />
+</p>
+</div>
+
+<hr class="invis" />
+
+<p>
+<span class="instruct">In-Out Transfer Group</span>(5 usec. without in-out wait)<br />
+iot x Y Operation Code 72<br />
+</p>
+
+<p>The variations within this group of instructions perform all the
+in-out control and information transfer functions. If bit six
+(normally the Indirect Address bit) is a ONE, the computer will
+halt and wait for the completion pulse from the device activated.
+When this device delivers its completion, the computer will resume
+operation of the instruction sequence.</p>
+
+<p>An incidental fact which may be of importance in certain scientific
+or real time control applications is that the time origin of operations
+following an in-out completion pulse is identical with the
+time of that pulse.</p>
+
+<p>Most in-out operations require a <ins class="trchange" title="Was 'know'">known</ins> minimum time before completion.
+This time may be utilized for programming. The appropriate
+In-Out Transfer is given with no in-out wait (bit six a ZERO).
+The instruction sequence then continues. This sequence must include
+an iot instruction which performs nothing but the in-out wait.
+This last instruction must occur before the safe minimum time. A
+table of minimum times for all in-out devices is delivered with<span class="pagenum"><a id="page20" name="page20">-20-</a></span>
+the computer. It lists minimum time before completion pulse and
+minimum In-Out Register free time.</p>
+
+<p>The details of the In-Out Transfer variations are listed under
+Input-Output.</p>
+
+<div class="indentit">
+<p>The mnemonic codes and addresses for the standard equipment are:</p>
+
+<p>
+<span class="instruct">Read Paper Tape Alphanumeric Mode</span><br />
+rpa Address 1<br />
+<br />
+<span class="instruct">Read Paper Tape Binary Mode</span><br />
+rpb Address 2<br />
+<br />
+<span class="instruct">Typewriter Output</span><br />
+tyo Address 3<br />
+<br />
+<span class="instruct">Typewriter Input</span><br />
+tyi Address 4<br />
+<br />
+<span class="instruct">Punch Paper Tape Alphanumeric Mode</span><br />
+ppa Address 5<br />
+<br />
+<span class="instruct">Punch Paper Tape Binary Mode</span><br />
+ppb Address 6<br />
+</p>
+</div>
+
+<h3><a name="MANUAL_CONTROLS" id="MANUAL_CONTROLS"></a>MANUAL CONTROLS</h3>
+
+<p>The Console of PDP-3 has controls and indicators for the use of the
+operator. Fig. 4 is a close-up of the control panel of PDP-1,
+the 18 bit version of PDP-3. All computer flip-flops have indicator
+lights on the Console. These indicators are primarily for
+use when the machine has stopped or when the machine is being
+operated one step at a time. While the machine is running, the
+brightness of an indicator bears some relationship to the relative
+duty factor of that particular flip-flop.</p>
+
+<p>Three registers of toggle switches are available on the Console.
+These are the Test Address (15 bits), the Test Word (36 bits), and
+the Sense <ins class="trchange" title="Removed inconsistent comma">Switches</ins> (6 bits). The first two are used in conjunction
+with the operating push buttons. The Sense Switches are present
+for manual intervention. The use of these switches is determined
+by the program (see <a href="#FIGURE_1">System Block Diagram</a> and <a href="#SKIP_GROUP">Skip Group Instructions</a>).</p>
+
+<h4><span class="pagenum"><a id="page21" name="page21">-21-</a></span>
+Operating Push Buttons</h4>
+
+<div class="indentit">
+<p><i>Start</i> &mdash; When this switch is operated, the computer will start.
+The first instruction comes from the memory location indicated
+in the Test Address Switches.</p>
+
+<p><i>Stop</i> &mdash; The computer will come to a halt at the completion of the
+current memory cycle.</p>
+
+<p><i>Continue</i> &mdash; The computer will resume operation starting at the
+state indicated by the lights.</p>
+
+<p><i>Examine</i> &mdash; The contents of the memory register indicated in the
+Test Address will be displayed in the Accumulator and the
+Memory Buffer lights.</p>
+
+<p><i>Deposit</i> &mdash; The word selected by the Test Word Switches will be
+put in the memory location indicated by the Test Address
+Switches.</p>
+
+<p><i>Read-In</i> &mdash; When this switch is operated, the photoelectric paper
+tape reader will start operating in the Read-In mode. (see
+<a href="#STANDARD_INPUT-OUTPUT">Input-Output</a>).</p>
+</div>
+
+<p>In addition to the operating push buttons, there are several separate
+toggle switches.</p>
+
+<div class="indentit">
+<p><i>Single Cycle Switch</i> &mdash; When the Single Cycle Switch is on, the
+computer will halt at the completion of each memory <ins class="trchange" title="Changed comma to period">cycle.</ins> This
+switch is particularly useful in debugging programs. Repeated
+operation of the Continue Switch button will step the program one
+cycle at a time. The programmer is thus able to examine the
+machine states at each step.</p>
+
+<p><i>Test Switch</i> &mdash; When the Test Switch is on, the computer will
+perform the instruction indicated in the Test Address location.
+It will repeat this instruction either at the normal speed rate
+or at a single cycle rate if the Single Cycle Switch is up.
+This switch is primarily useful for maintenance purposes.</p>
+
+<p><i>Sense Switches</i> &mdash; There are six switches on the Console which are
+present for manual intervention.</p>
+</div>
+
+<hr />
+
+<p><span class="pagenum"><a id="page22" name="page22">-22-</a></span></p>
+<h2><a name="STORAGE" id="STORAGE"></a>STORAGE</h2>
+
+<p>The internal Memory System for PDP-3 consists of modules of 4096
+words of coincident current magnetic core storage. Each word has
+36 bits. The memory modules operate with a read-rewrite cycle time
+of 5 microseconds. The driving currents of the memory are automatically
+adjusted to compensate for normal room temperature
+variations.</p>
+
+<p>Each core memory module consists of the memory stack, the required
+X and Y switches, the X and Y current sources and sense amplifiers
+for that stack.</p>
+
+<p>The Memory Address Register, the Memory Buffer Register, and the
+Memory Timing Controls are considered to be part of the Central
+Processor. The standard PDP-3 Memory Address Register configuration
+is built to allow up to 8 modules of core memory (32,768 words).
+There is a space in the addressing section of the machine to allow
+expansion of the addressing by a factor of eight for a total addressing
+capacity of 262,144 memory registers.</p>
+
+<p>The Core Memory may be supplemented by Magnetic Tape Storage.
+This is described under Input-Output.</p>
+
+<hr />
+
+<p><span class="pagenum"><a id="page23" name="page23">-23-</a></span></p>
+<h2><a name="STANDARD_INPUT-OUTPUT" id="STANDARD_INPUT-OUTPUT"></a>STANDARD INPUT-OUTPUT</h2>
+
+<p>The PDP-3 is designed to accommodate a variety of input-output
+equipment. Standard input-output units include a Paper Tape Reader,
+Paper Tape Punch and an Electric Typewriter.</p>
+
+<p>A single instruction, In-Out Transfer (see <a href="#CENTRAL_PROCESSOR">Central Processor</a>),
+performs all in-out operations through the 36 bit In-Out Register.
+The address portion of this instruction specifies the in-out
+function. One bit of the instruction selects an in-out halt as
+required.</p>
+
+<h3><a name="PAPER_TAPE_READER" id="PAPER_TAPE_READER"></a>PAPER TAPE READER</h3>
+
+<p>The Paper Tape Reader of the PDP-3 is a photoelectric device
+capable of reading 300 lines per second. Six lines form the
+standard 36 bit word when reading binary punched eight hole tape.
+Five, six and seven hole tape may also be read.</p>
+
+<p>The reader will operate in one of two basic modes or in a third
+special mode.</p>
+
+<div class="indentit">
+<p>
+Alphanumeric Mode<br />
+rpa <span class="padit">iot 1</span>
+</p>
+
+<p>In this mode, one line of tape is read for each In-Out
+Transfer. All eight holes of the line are read. The
+information is left in the right eight bits of the
+In-Out Register, the remainder of the register being
+left clear. The standard PDP alphanumeric paper tape
+code includes an odd parity bit which may be checked
+by the program. Tape of non-standard width would be
+read in this mode.</p>
+
+<p class="spacer">
+Binary Mode<br />
+rpb <span class="padit">iot 2</span>
+</p>
+
+<p>For each In-Out Transfer instruction, six lines of paper
+tape are read and assembled in the In-Out Register to
+form a full computer word. For a line to be recognized
+in this mode, the eighth hole must be punched; i.e., lines
+with no eighth hole will be skipped over. The seventh
+hole is ignored. The pattern of holes in the binary tape
+is arranged so as to be easily interpreted visually in
+terms of machine instruction.</p>
+
+<p class="spacer"><span class="pagenum"><a id="page24" name="page24">-24-</a></span>
+Read-In Mode</p>
+
+<p>This is a special mode activated by the "Read-In" Switch
+on the Console. It provides a means of entering programs
+which neither rely on read-in programs in memory nor
+require a plug board. Pushing the "Read-In" Switch starts
+the reader in the binary mode. The first group of six lines
+and alternate succeeding groups of six lines are interpreted
+as "Read-In" mode instructions. Even-numbered groups of 6
+lines are data. The "Read-In" mode instructions must be
+either "deposit in-out" (dio Y) or "jump" (jmp Y). If the
+instruction is dio Y, the next group of six binary lines
+will be stored in memory location Y and the reader continues
+moving. If the instruction is jmp Y, the "Read-In"
+mode is terminated and the computer will commence operation
+at the address of the jump instruction.</p>
+</div>
+
+<h3><a name="PAPER_TAPE_PUNCH" id="PAPER_TAPE_PUNCH"></a>PAPER TAPE PUNCH</h3>
+
+<p>The standard PDP-3 Paper Tape Punch has a nominal speed of 20
+lines per second. It can operate in either the alphanumeric
+mode or the binary mode.</p>
+
+<div class="indentit">
+<p>
+Alphanumeric Mode<br />
+ppa <span class="padit">iot 5</span>
+</p>
+
+<p>For each In-Out Transfer instruction one line of tape is
+punched. In-Out Register bit 35 conditions hole #1. Bit
+34 conditions hole #2, etc. Bit 28 conditions hole #8.</p>
+
+<p class="spacer">
+Binary Mode<br />
+ppb <span class="padit">iot 6</span>
+</p>
+
+<p>For each In-Out Transfer instruction one line of tape is
+punched. In-Out Register bit five conditions hole #1.
+Bit four conditions hole #2, etc. Bit zero conditions
+hole #6. Hole #7 is left blank. The #8 hole is always
+punched in this mode.</p>
+</div>
+
+<h3><a name="TYPEWRITER" id="TYPEWRITER"></a>TYPEWRITER</h3>
+
+<p>The Typewriter will operate in the input mode or the output mode.</p>
+
+<div class="indentit">
+<p><span class="pagenum"><a id="page25" name="page25">-25-</a></span>
+Output Mode<br />
+tyo <span class="padit">iot 3</span>
+</p>
+
+<p>For each In-Out Transfer instruction one character is
+typed. The character is specified by the right six bits
+of the In-Out Register.</p>
+
+<p class="spacer">
+Input Mode<br />
+tyi <span class="padit">iot 4</span>
+</p>
+
+<p>This operation is completely asynchronous and is therefore
+handled differently than any of the preceding in-out
+operations.</p>
+
+<p>When a Typewriter key is struck, Program Flag Number One
+is set. At the same time the code for the struck key is
+presented to gates connected to the right six bits of the
+In-Out Register. This information will remain at the gate
+for a relatively long time by virtue of the slow mechanical
+action. A program designed to accept typed-in data would
+periodically check the status of Program Flag One. If at
+any time Program Flag One is found to be set, an In-Out
+Transfer instruction with address four must be executed for
+information to be transferred. This In-Out Transfer normally
+should not use the optional in-out halt. The information
+contained in the Typewriter's coder is then read into the
+right six bits of the In-Out Register.</p>
+</div>
+
+<hr />
+
+<p><span class="pagenum"><a id="page26" name="page26">-26-</a></span></p>
+<h2><a name="OPTIONAL_INPUT-OUTPUT" id="OPTIONAL_INPUT-OUTPUT"></a>OPTIONAL INPUT-OUTPUT</h2>
+
+<p>The PDP-3 is designed to accommodate a variety of input-output
+equipment. Of particular interest is the ease with which new,
+and perhaps unusual, external equipment can be added to the
+machine. Optional in-out devices include Cathode Ray Tube Display,
+Magnetic Tape, Real Time Clock, Line Printer and Analog to Digital
+Converters. The method of operation of PDP-3 with these optional
+devices is similar to the standard input-output equipment.</p>
+
+<h3><a name="SEQUENCE_BREAK_SYSTEM" id="SEQUENCE_BREAK_SYSTEM"></a>SEQUENCE BREAK SYSTEM</h3>
+
+<p>An optional in-out control is available for PDP-3. This control,
+termed the Sequence Break System, allows concurrent operation of
+several in-out devices and the main sequence. The system has,
+nominally, 16 automatic interrupt channels arranged in a priority
+chain.</p>
+
+<p>A break to a particular sequence may be initiated by the completion
+of an in-out device, the program, or an external signal. If this
+sequence has priority, the C(AC), C(IO), C(PC), and C(IA) are
+stored in three fixed memory locations unique to that sequence.
+Since the C(PC) and C(IA) are eighteen bits each, these two registers
+are stored in one memory location. The next instruction is
+taken from a fourth location. This instruction is usually a jump
+to a suitable routine. The program is now operating in the new
+sequence. This new sequence may be broken by a higher priority
+sequence. A typical program loop for handling an in-out sequence
+would contain 3 to 5 instructions, including the appropriate iot.
+These are followed by load AD and load IO from the fixed locations
+and a special indirect jump through the location of the previous
+C(PC). This special jump also loads the IA. This last instruction
+terminates the sequence.</p>
+
+<h3><a name="HIGH_SPEED_IN-OUT_CHANNEL" id="HIGH_SPEED_IN-OUT_CHANNEL"></a>HIGH SPEED IN-OUT CHANNEL</h3>
+
+<p>The device connected to an in-out channel communicates directly
+with memory through the Memory Buffer Register. At the completion
+of each machine instruction, a check is made to see if the in-out
+channel has a word for, or needs a word from, the memory. When
+necessary, a memory cycle is taken to serve the channel. The
+operation is initiated by an in-out command. The in-out transfer
+command indicates the nature of the transfer. The left half of<span class="pagenum"><a id="page27" name="page27">-27-</a></span>
+the In-Out Register must contain the starting address of the transfer,
+and the right half must contain the number of words to be
+transferred. If the Sequence Break System is connected, the completion
+of the transfer will signal the proper sequence. If no
+Sequence Break System is connected, the completion of the in-out
+channel transfer sets a program flag.</p>
+
+<h3><a name="MAGNETIC_TAPE" id="MAGNETIC_TAPE"></a>MAGNETIC TAPE</h3>
+
+<p>The system consists of tape units connected to the PDP-3 through
+a tape control (TC). This tape is read or written in IBM 729I
+format. Two hundred characters, each having 6 bits plus a parity
+bit, are written on each inch of tape and the tape moves at 75
+inches/sec. The tape control has the job of connecting a specific
+unit to the PDP-3 and is a switch. It also has the function of
+controlling the format of information that is read or written on
+tape. In-out class commands instruct TC to the type of information
+transfer and select the tape unit. Another IOT command synchronizes
+the transfer of information through the TC to the computer.</p>
+
+<p>The IOT order to select the unit and function is decoded as follows:
+1) Three bits specify the function of TC. 2) The remaining 6 bits
+select the unit.</p>
+
+<p class="center"><i>IOT Motion Commands for Magnetic Tape Units</i></p>
+
+<table border="0" cellpadding="2" cellspacing="0" summary="">
+<tr><td align="center"><i>IOT Code</i></td><td align="center"><i>Abbreviation</i></td><td align="center"><i>Function</i></td></tr>
+<tr><td align="left">73....nn 60</td><td align="center">mrb</td><td align="left">Read a binary record.</td></tr>
+<tr><td align="left">73....nn 61</td><td align="center">mra</td><td align="left">Read an alphanumeric (BCD) record.</td></tr>
+<tr><td align="left">73....nn 62</td><td align="center">mbb</td><td align="left">Backspace a binary record.</td></tr>
+<tr><td align="left">73....nn 63</td><td align="center">mba</td><td align="left">Backspace an alphanumeric record.</td></tr>
+<tr><td align="left">73....nn 64</td><td align="center">mwb</td><td align="left">Write a binary record.</td></tr>
+<tr><td align="left">73....nn 65</td><td align="center">mwa</td><td align="left">Write an alphanumeric record.</td></tr>
+<tr><td align="left">73....nn 66</td><td align="center">mlp</td><td align="left">Move tape to lead point (rewind).</td></tr>
+</table>
+
+<p class="center">Where the octal digits, nn, specify the unit number.</p>
+
+<p>The motion commands have the deferred bit, thus, the program
+halts. If the TC is free, the command will be transferred to the
+tape control for action and the program restarts immediately. If
+the tape control is currently busy with an instruction, i.e., it
+hasn't finished a previous command, the motion command is held up
+until TC is free to execute the new command.</p>
+
+<p><span class="pagenum"><a id="page28" name="page28">-28-</a></span>
+The transfer of information from the computer to the TC is accomplished
+with the pause and skip command, MPS or IOT 70. This
+command has the deferred bit and halts a program until the TC can
+handle the transfer. On completion, the transfer occurs and the
+program restarts. This is used exclusively to synchronize the
+flow of information between a tape unit and the computer. This
+command normally skips the following instruction. If a flag is
+set in the TC, indicating incorrect information flow, the skip
+does not take place.</p>
+
+<p>The TC contains a 36 bit buffer which holds a complete word while
+information is read or written. When an MPS order is given and
+the unit is reading, the TC buffer is read into the IO. The MPS
+order given during writing causes the IO to be transferred to the
+TC buffer.</p>
+
+<p>Various conditions occurring in the TC cause the no-skip condition,
+when an MPS is given. Tape control flags are examined by the
+command, examine and clear flags, MEC or IOT 71. When MEC is
+given, the flags are put into the IO for program interrogation,
+and the flags cleared. The flags are: parity, end of tape, an
+end of record flag, and reading-writing check.</p>
+
+<p>The parity flag is set if the parity condition is not met while
+the tape is being read (during MWA, MWB, MRA, or MRB).</p>
+
+<p>The end of tape flag is set when the tape comes to the end of
+tape, moving in either direction.</p>
+
+<p>Three conditions set the read-write check flag: 1) If TC is
+inactive, i.e., no unit or function selected, and an MPS instruction
+is given. The MPS becomes a no-operation, no-halt instruction.
+2) When reading information and not emptying the TC buffer, by
+giving an MPS before more information arrives from tape. 3) A unit
+becomes unavailable during a normal sequence.</p>
+
+<p>The end of record flag is set during reading or backspacing when
+the <ins class="trchange" title="Was 'tpae'">tape</ins> comes to an end of record gap.</p>
+
+<p class="center"><i>Writing a Record of Information</i></p>
+
+<p>Information is written on the tape by giving a MWB or MWA command.
+This sets a write binary or a write alphanumeric into the TC and<span class="pagenum"><a id="page29" name="page29">-29-</a></span>
+selects the unit. A motion select command is executed immediately
+if the TC is free, otherwise, the command waits until it can be
+executed. Normal programming can continue after the MWA or MWB
+is given for approximately 5 milliseconds. At this time, an MPS
+order is given and the program pauses until information can be
+written. When the MPS is restarted, information is transferred
+to the TC buffer from the IO. If no flags have been set, the
+following instruction is skipped.</p>
+
+<p>Three-quarter inches of blank tape is written by giving either the
+MWA or MWB order. An end of file is written as follows: 1) Four
+MWA commands write three inches of blank tape. 2) Then end of file
+character is written by giving the MPS order.</p>
+
+<p>Information is read and checked for correct parity while writing.</p>
+
+<p>If too many program steps are given between the motion select
+command, MWA or MWB and the first MPS, the unit will <ins class="trchange" title="Standardized from 'de-select'">deselect</ins>
+(or disconnect). The MPS is then a no-operation command.</p>
+
+<p class="center"><i>Writing Program</i></p>
+
+<p>As an example, a program to write k words in binary format from
+storage beginning in register A, using tape unit number 04, is
+shown. The following program is written in standard FRAP language.
+The program begins in register enterwrite.</p>
+
+<table border="0" cellpadding="1" cellspacing="1" summary="">
+<colgroup>
+<col width="25%" />
+<col width="25%" />
+<col width="50%" />
+</colgroup>
+<tr><td align="center">enterwrite</td><td align="left">mec</td><td align="left">,clear flags initially</td></tr>
+<tr><td /><td align="left">mwb 400</td><td align="left">,73000000464</td></tr>
+<tr><td /><td align="left">lir x/-k+1</td><td align="left">,initialize index register x</td></tr>
+<tr><td align="center">b</td><td align="left">lio x/a+k-1</td><td align="left">,begin loop</td></tr>
+<tr><td /><td align="left">mps</td><td align="left">,wait for TC then write C(Z)</td></tr>
+<tr><td /><td align="left">jmp c</td><td align="left">,error</td></tr>
+<tr><td /><td align="left">spx x/1</td><td align="left">,add 1 to index register x</td></tr>
+<tr><td /><td align="left">jmp b</td><td align="left">,return of loop</td></tr>
+<tr><td /><td align="left">jmp done</td><td align="left">,record written</td></tr>
+<tr><td>&nbsp;</td></tr>
+<tr><td align="center">c</td><td align="left">mec</td><td align="left">,tape error</td></tr>
+<tr><td /><td align="left">ril 1</td></tr>
+<tr><td /><td align="left">spi</td></tr>
+<tr><td /><td align="left">jmp rwcstop</td><td align="left">,read-write error or tape fault</td></tr>
+<tr><td /><td align="left">ril 1</td></tr>
+<tr><td /><td align="left">spi</td></tr>
+<tr><td /><td align="left">jmp b+3</td><td align="left">,tape end</td></tr>
+<tr><td /><td align="left">hlt</td><td align="left">,tape parity</td></tr>
+<tr><td>&nbsp;</td></tr>
+<tr><td align="center">done</td><td /><td align="left">,resume programming</td></tr>
+</table>
+
+<p class="center"><span class="pagenum"><a id="page30" name="page30">-30-</a></span></p>
+<p class="center"><i>Reading Information</i></p>
+
+<p>Information is read by giving the MRA or MRB order. Almost 10
+ms. is available after a read order is given before information
+actually enters the TC buffer.</p>
+
+<p>To read a record of unknown length, the read order is first given.
+The MPS order halts the program until six characters are assembled
+in the TC information buffer. The next instruction after the MPS,
+a jump instruction, transfers control from the loop when any flag
+is set. The next instruction deposits the IO. The record length
+is determined by not skipping after the MPS order on the setting
+of the end of record flag. The read-write check flag or the end
+of record flag is then interrogated to see that the tape is
+actually at the end of record. If a tape is not at the end of
+record, then the tape is either at the end of the reel, or a
+parity check has occurred.</p>
+
+<p class="center"><i>Reading Program</i></p>
+
+<p>Program to read j binary words into storage beginning in register
+d, using tape unit 10, j is unknown. The program begins in
+register enteread.</p>
+
+<table border="0" cellpadding="1" cellspacing="1" summary="">
+<colgroup>
+<col width="25%" />
+<col width="25%" />
+<col width="50%" />
+</colgroup>
+<tr><td align="center">enteread</td><td align="left">mec</td><td align="left">,clear flags initially</td></tr>
+<tr><td /><td align="left">mrb 1000</td><td align="left">,730000001060</td></tr>
+<tr><td /><td align="left">dzm x</td><td align="left">,put zero in memory location x</td></tr>
+<tr><td align="center">e</td><td align="left">mps</td></tr>
+<tr><td /><td align="left">jmp outcheck</td></tr>
+<tr><td /><td align="left">dio x/d</td><td align="left">,store in location modified by x</td></tr>
+<tr><td /><td align="left">snx x/+1</td><td align="left">,add 1 to C(x)</td></tr>
+<tr><td /><td align="left">jmp e</td></tr>
+<tr><td>&nbsp;</td></tr>
+<tr><td align="center">outcheck</td><td align="left">mec</td><td align="left">,examine flags</td></tr>
+<tr><td /><td align="left">spi</td><td align="left">,end of record?</td></tr>
+<tr><td /><td align="left">jmp recordend</td><td align="left">,yes</td></tr>
+<tr><td /><td align="left">hlt</td><td align="left">,error</td></tr>
+<tr><td>&nbsp;</td></tr>
+<tr><td align="center">recordend</td><td align="left">snx x/+1</td><td align="left">,to find value of j</td></tr>
+<tr><td /><td align="left">"</td><td align="left">,resume programming C(IA) = j</td></tr>
+<tr><td /><td align="left">"</td></tr>
+<tr><td /><td align="left">"</td></tr>
+<tr><td /><td align="left">"</td></tr>
+</table>
+
+<p class="center"><span class="pagenum"><a id="page31" name="page31">-31-</a></span></p>
+<p class="center"><i>Forward Spacing</i></p>
+
+<p>Forward spacing is done by giving an MRB or MRA order. This moves
+the tape forward with the read-write head positioned at the end
+of the following record. If n read orders are given, the tape is
+spaced forward n records. By giving the MEC order, parity flags
+are examined to see that information on tape has been read correctly.</p>
+
+<p class="center"><i>Backspacing</i></p>
+
+<p>By giving an MBA or MBB order the tape is moved backwards a record
+with the read-write heads positioned in the previous end of record
+gap. The end of record flag is set when the tape has moved backwards
+a record.</p>
+
+<p class="center"><i>Rewinding</i></p>
+
+<p>Rewinding is accomplished by giving the rewind order, move tape to
+load point, MLP. The rewind order starts a unit rewinding and
+does not tie up the TC. If a motion command is given which calls
+for a unit that is rewinding, the command is executed, but the
+action will not take place until the unit is available.</p>
+
+<p class="center"><i>Unit Availability</i></p>
+
+<p class="center">A unit is unavailable to the program under the following conditions:</p>
+
+<ol><li>Unit is rewinding.</li>
+<li>Tape is improperly loaded.</li>
+<li>Cover door open.</li>
+<li>Unit overloaded.</li>
+<li>Unit under manual control.</li>
+<li>Power off.</li>
+</ol>
+
+<p>A selected but unavailable unit holds up the TC if a motion order
+is given for the unit. The TC will be held up until the unit is
+ready.</p>
+
+<p class="center"><span class="pagenum"><a id="page32" name="page32">-32-</a></span>
+<i>Flag Positions</i></p>
+
+<table border="0" cellpadding="2" cellspacing="0" summary="">
+<colgroup>
+<col width="30%" />
+<col width="50%" />
+</colgroup>
+<tr><td align="center"><i>IO Bit</i></td><td align="center"><i>Flag</i></td></tr>
+<tr><td align="center">0</td><td align="left">EOR &mdash; End of record</td></tr>
+<tr><td align="center">1</td><td align="left">RWF &mdash; Read-Write</td></tr>
+<tr><td align="center">2</td><td align="left">EOT &mdash; End of Tape</td></tr>
+<tr><td align="center">3</td><td align="left">Parity</td></tr>
+</table>
+
+<p class="center"><i>Connection with High Speed Channel</i></p>
+
+<p>The high speed channel directs the tape control, and word transfer,
+just as a program would. A unit is first started reading or writing.
+The high speed channel is given the memory location of the
+information, and the number of registers the words read or written
+will occupy. The channel effects the information transfer. Thus,
+a high speed channel connected to a tape control handles the
+programming for the unit word transfers.</p>
+
+<p>Completion of the block transfer is signified by either setting a
+program flag, or entering the sequence break.</p>
+
+<p class="center"><i>Connection with Sequence Break System</i></p>
+
+<p>When the TC is connected to the Sequence Break System, the program
+is automatically interrupted each time an MPS command needs to be
+given.</p>
+
+<p>Programming is unaffected during reading and a record may be read
+with no flags set. The TC initiates breaks so that an MPS may be
+given in time.</p>
+
+<p>Similarly, the break is initiated during writing each time an MPS
+needs to be given.</p>
+
+<p class="center"><i>Motion Command Summary</i></p>
+
+<table border="0" cellpadding="4" cellspacing="0" summary="">
+<tr><td /><td align="center"><i>Time before first MPS</i></td>
+ <td align="center"><i>Time between MPS's</i></td>
+ <td align="center"><i>Time after End of Record to deselect</i></td>
+ <td align="center"><i>Flags that may be set</i></td>
+</tr>
+<tr><td align="left">MWA<br />MWB</td>
+ <td align="center">3 ms.</td>
+ <td align="center">400 us.<br />(longer time causes deselection)</td>
+ <td align="center">10 ms.</td>
+ <td align="left">RWF (if unit
+is deselected
+and MPS given,
+or unit becomes
+unavailable),
+Parity, EOT.</td>
+</tr>
+<tr><td align="left">MRA<br />MRB</td>
+ <td align="center">7 ms.</td>
+ <td align="center">400 us.<br />(longer time misses information, and rwc set)</td>
+ <td align="center">5 ms.</td>
+ <td align="left">RWF, (if information
+is missed, or
+unit becomes
+unavailable),
+EOT, EOR,
+Parity.</td></tr>
+<tr><td align="left">MBA<br />MBB</td>
+ <td align="center">&mdash;</td>
+ <td align="center">&mdash;</td>
+ <td align="center">10 ms.</td>
+ <td align="left">RWF (if unit
+becomes
+unavailable),
+EOR, EOT.</td></tr>
+</table>
+
+<h3><a name="CRT_DISPLAY" id="CRT_DISPLAY"></a>CATHODE-RAY-TUBE DISPLAY</h3>
+
+<p>The PDP-3 Cathode Ray Tube Display is useful for presentation of
+graphical or tabular information to the operator. It uses a 16
+inch round tube with magnetic deflection. For each In-Out transfer
+order, one point is displayed at the position indicated by the In-Out
+Register. Bits 0-9 of the IO indicate the X coordinate of the
+position, and bits 18-27 indicate the Y coordinate. The display
+takes 60 microseconds.</p>
+
+<p>An additional display option is a Light Pen. By use of this device
+the computer is signaled that the operator is interested in the
+last point displayed. Thus the program can take appropriate action
+such as changing the display or shifting operation to another
+program.</p>
+
+<p>A smaller display is available. This display uses a five inch,
+high resolution cathode ray tube. The tube is equipped with a
+mounting bezel to accept a camera or photomultiplier device. The
+operation of this display is similar to that of the 16 inch,
+except that 12 bits are decoded for each axis.</p>
+
+<h3><a name="REAL_TIME_CLOCK" id="REAL_TIME_CLOCK"></a>REAL TIME CLOCK</h3>
+
+<p>A special input register may be connected to operate as a Real
+Time Clock. This is a counting register operated by a crystal
+controlled oscillator. The clock can be reset to zero by manual
+operation. A toggle switch interlock prevents an accidental
+reset. The state of this counter may be read at any time by
+the appropriate In-Out Transfer instruction.</p>
+
+<p class="center"><span class="pagenum"><a id="page34" name="page34">-34-</a></span></p>
+<h3><a name="LINE_PRINTER" id="LINE_PRINTER"></a>LINE PRINTER</h3>
+
+<p>A 72 column Anelex printer and control are available as an option
+for PDP-3. The control contains a one line buffer. This buffer
+is cleared by the completion of an order to space the paper one
+position (psp). The buffer is filled from the In-Out Register by
+a succession of 12 load buffer orders (plb). The first plb will
+put the six characters represented by C(IO) in the leading (left-hand)
+column positions of the buffer. After the buffer is loaded,
+the order, print (pnt), is given.</p>
+
+<hr />
+
+<p class="center"><span class="pagenum"><a id="page35" name="page35">-35-</a></span></p>
+<h2><a name="UTILITY_PROGRAMS" id="UTILITY_PROGRAMS"></a>UTILITY PROGRAMS</h2>
+
+<h3><a name="FRAP_SYSTEM" id="FRAP_SYSTEM"></a>FRAP-3 &mdash; The Assembly Program</h3>
+
+<p>An assembler or compiler <ins class="trchange" title="Was 'propares'">prepares</ins> a machine language tape suitable
+for direct interpretation by the computer from a program tape in
+operator language. Generally speaking, one statement accepted by
+FRAP produces one instruction for the machine. A single statement
+written for the PDP-3 compiler, DECAL-3, may cause several instructions
+to be written. Thus, FRAP causes a 1 for 1 mapping of
+instructions for statements while DECAL may produce many instructions
+from one statement.</p>
+
+<p>In addition to allowing program tapes to be prepared with off line
+equipment, an assembly program has other functions. Normally, the
+machine would require 36 bits or 12 octal digits to be written for
+each instruction used in the machine. FRAP allows mnemonic symbols
+to be used for the instructions. These mnemonic symbols aid the
+programmer by representing the instruction in an easily remembered
+form.</p>
+
+<p>In addition to allowing mnemonic symbols to represent the instructions,
+variable length sequences of alphanumeric characters may be
+used to represent memory addresses in symbolic form. The assembly
+program does the address bookkeeping for the programmer. A short
+example of a FRAP program is on <a href="#page29">Page 29</a>.</p>
+
+<p>Since few characters limit or control the format of instructions
+written in FRAP-3 language, it is possible to write instructions
+in almost any format or style.</p>
+
+<p>FRAP-3 may also be used to prepare tapes for interpretive programming,
+since arbitrary definitions for operation code symbols are
+permitted.</p>
+
+<p>A feature useful both for ease of programming and for machine
+simulation is the ability to call for a series of instructions
+(macro-instruction) to be written. Frequently used instruction
+<ins class="trchange" title="Removed comma">sequences</ins> thus need only to be defined once.</p>
+
+<h3><a name="DECAL_SYSTEM" id="DECAL_SYSTEM"></a>DECAL &mdash; The Compiler Program</h3>
+
+<p>DECAL-3 (Digital Equipment Compiler, Assembler, and Linking loader
+for PDP-3) is an integrated programming system for PDP-3. It<span class="pagenum"><a id="page36" name="page36">-36-</a></span>
+incorporates in one system all of the essential features of advanced
+assemblers, compilers, and loaders.</p>
+
+<p>DECAL is both an assembler and compiler. It combines the one-to-one
+translation facilities of an assembler, and the one-to-many
+translation facilities of a formula translation compiler. Problem
+oriented language statements may be freely intermixed with symbolic
+machine language instructions. A flexible loader is available to
+allow the specification of program location at load time. The
+programmer may specify that certain variables and constants are
+"systems" variables and constants. The symbols so defined are
+universally used in a system of many routines. Thus, communications
+between parts of a major program is facilitated even though
+these parts may be compiled separately. Storage requirements for
+a large program are lessened by this technique.</p>
+
+<p>DECAL is an open-ended programming system and can be modified
+without a detailed understanding of the internal operation. This
+is achieved by means of a recursive definition facility based on
+a skeleton compiler with a small set of logical capabilities.
+The skeleton compiler acts as a bootstrap for introducing more
+sophisticated facilities.</p>
+
+<p>The compiler will be delivered with a fully defined subset of
+formula translation operators. Additional subsets may be defined
+by the user to best fit his source language.</p>
+
+<h3><a name="FLOATING_POINT_SUBROUTINES" id="FLOATING_POINT_SUBROUTINES"></a>FLOATING POINT SUBROUTINES</h3>
+
+<p>A set of subroutines are provided with the PDP-3 to perform
+floating point arithmetic. In these, the PDP-3 36 bit word is
+divided to form a 27 bit mantissa, a, and 9 bit exponent, b.
+Numbers, thus, appear in the form: <span class="nowrap">k = ax2<sup>b</sup></span> where, a, is considered
+to be in fractional form in the range <span class="nowrap">&frac12; &le; a &lt; 1,</span> and b is an integer,
+<span class="nowrap">0 &le; b &lt; 29.</span> This gives number, k, the range <span class="nowrap">10<sup>-76</sup> &lt; k &lt; 10<sup>+76</sup></span>.</p>
+
+<p>The subroutines are called with one operand in the accumulator.
+After the subroutine has been executed, the accumulator contains
+the answer. Thus floating point numbers are essentially handled
+as regular logical works. The format of the number allows magnitude
+comparisons to be made by conventional arithmetic as bit 0
+is the sign of the number, bits 1 to 9 the exponent, and the
+remaining 26 bits, together with the sign bit, the mantissa in<span class="pagenum"><a id="page37" name="page37">-37-</a></span>
+ones complement arithmetic. The arithmetic subroutines are: add,
+subtract, multiply, divide, convert a floating point number to
+binary, convert a binary number to a floating number. Additional
+routines form: &radic;x, e<sup>x</sup>, ln x, sine(<sup>&pi;</sup>&frasl;<sub>2</sub>)x, cos(<sup>&pi;</sup>&frasl;<sub>2</sub>)x, tan<sup>-1</sup>x. There
+are also programs to convert between floating decimal numbers and
+PDP-3 floating numbers.</p>
+
+<p><ins class="trchange" title="Was 'Routiines'">Routines</ins> which require two operands, e.g., add, subtract, multiply
+and divide, require an index register to specify the address of
+the second operand. An index register also specifies parameters
+in data conversions, e.g., the position of the binary point when
+converting a binary number to a standard floating number.</p>
+
+<p>Using the floating point subroutines, additional routines may be
+written which handle complex floating numbers and vector and
+matrix algebra.</p>
+
+<h3><a name="MAINTENANCE_ROUTINES" id="MAINTENANCE_ROUTINES"></a>MAINTENANCE ROUTINES</h3>
+
+<p>Maintenance Routines are used exclusively to check the operation
+of the machine. These routines are operated while varying the
+bias supply voltages, and thus a check is made on possible degradation
+of all components which would affect the operation of the
+machine.</p>
+
+<h3><a name="MISCELLANEOUS_ROUTINES" id="MISCELLANEOUS_ROUTINES"></a>MISCELLANEOUS ROUTINES</h3>
+
+<p>A variety of additional programs are provided with PDP-3.</p>
+
+<p>One of the more important programs is the Typewriter Interrogator
+Program (TIP). TIP allows the typewriter to be used most effectively
+as an input-output link by which programs and data are
+examined and modified. The features include request for printing
+of a series of registers, interrogation and modification of the
+contents of registers, and the ability to request new tapes after
+programs have been suitably modified. Communication is done
+completely via the typewriter in either octal numbers, decimal
+numbers, or alphanumeric codes. Register contents are presented
+in similar form.</p>
+
+<p>Other miscellaneous routines handle arithmetic processes, e.g.,
+number conversions, and communication with the input or output
+devices. These routines include various format print outs, paper
+tape and magnetic tape read in programs, and display subroutines.</p>
+
+<hr />
+<p class="center"><span class="pagenum"><a id="page38" name="page38">-38-</a></span></p>
+
+<div class="figtag">
+ <a id="FIGURE_1" name="FIGURE_1"></a>
+</div>
+<div class="figcenter">
+<img src="images/sys_block.png" width="600" height="680" alt="" title="" />
+<p class="caption">SYSTEM BLOCK DIAGRAM<br />
+FIGURE 1</p>
+</div>
+
+<hr />
+
+<div class="figtag">
+ <a id="FIGURE_2" name="FIGURE_2"></a>
+</div>
+<div class="figcenter">
+<img src="images/instruction.png" width="600" height="97" alt="" title="" />
+<p class="caption">INSTRUCTION FORMAT<br />
+FIGURE 2</p>
+</div>
+
+<hr />
+
+<div class="figtag">
+ <a id="FIGURE_3" name="FIGURE_3"></a>
+</div>
+<div class="figcenter">
+<img src="images/computer.png" width="500" height="365" alt="" title="" />
+<p class="caption">FIGURE 3</p>
+</div>
+
+<hr />
+
+<div class="trnote">
+<p><b>Transcriber's Notes</b></p>
+
+<p>
+Figure 4 is referred to in the text, but a copy could not be located.<br />
+C (X) and C(X) standardized to C(X).<br />
+Other changes from the original text are <ins class="trchange" title="original here">highlighted</ins>.
+</p>
+
+</div>
+
+
+
+
+
+
+
+
+<pre>
+
+
+
+
+
+End of the Project Gutenberg EBook of Preliminary Specifications: Programmed
+Data Processor Model Three (PDP-3), by Digital Equipment Corporation
+
+*** END OF THIS PROJECT GUTENBERG EBOOK PDP MODEL THREE (PDP-3) ***
+
+***** This file should be named 29461-h.htm or 29461-h.zip *****
+This and all associated files of various formats will be found in:
+ https://www.gutenberg.org/2/9/4/6/29461/
+
+Produced by Gerard Arthus, Katherine Ward, and the Online
+Distributed Proofreading Team at https://www.pgdp.net
+
+
+Updated editions will replace the previous one--the old editions
+will be renamed.
+
+Creating the works from public domain print editions means that no
+one owns a United States copyright in these works, so the Foundation
+(and you!) can copy and distribute it in the United States without
+permission and without paying copyright royalties. Special rules,
+set forth in the General Terms of Use part of this license, apply to
+copying and distributing Project Gutenberg-tm electronic works to
+protect the PROJECT GUTENBERG-tm concept and trademark. Project
+Gutenberg is a registered trademark, and may not be used if you
+charge for the eBooks, unless you receive specific permission. If you
+do not charge anything for copies of this eBook, complying with the
+rules is very easy. You may use this eBook for nearly any purpose
+such as creation of derivative works, reports, performances and
+research. They may be modified and printed and given away--you may do
+practically ANYTHING with public domain eBooks. Redistribution is
+subject to the trademark license, especially commercial
+redistribution.
+
+
+
+*** START: FULL LICENSE ***
+
+THE FULL PROJECT GUTENBERG LICENSE
+PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK
+
+To protect the Project Gutenberg-tm mission of promoting the free
+distribution of electronic works, by using or distributing this work
+(or any other work associated in any way with the phrase "Project
+Gutenberg"), you agree to comply with all the terms of the Full Project
+Gutenberg-tm License (available with this file or online at
+https://gutenberg.org/license).
+
+
+Section 1. General Terms of Use and Redistributing Project Gutenberg-tm
+electronic works
+
+1.A. By reading or using any part of this Project Gutenberg-tm
+electronic work, you indicate that you have read, understand, agree to
+and accept all the terms of this license and intellectual property
+(trademark/copyright) agreement. If you do not agree to abide by all
+the terms of this agreement, you must cease using and return or destroy
+all copies of Project Gutenberg-tm electronic works in your possession.
+If you paid a fee for obtaining a copy of or access to a Project
+Gutenberg-tm electronic work and you do not agree to be bound by the
+terms of this agreement, you may obtain a refund from the person or
+entity to whom you paid the fee as set forth in paragraph 1.E.8.
+
+1.B. "Project Gutenberg" is a registered trademark. It may only be
+used on or associated in any way with an electronic work by people who
+agree to be bound by the terms of this agreement. There are a few
+things that you can do with most Project Gutenberg-tm electronic works
+even without complying with the full terms of this agreement. See
+paragraph 1.C below. There are a lot of things you can do with Project
+Gutenberg-tm electronic works if you follow the terms of this agreement
+and help preserve free future access to Project Gutenberg-tm electronic
+works. See paragraph 1.E below.
+
+1.C. The Project Gutenberg Literary Archive Foundation ("the Foundation"
+or PGLAF), owns a compilation copyright in the collection of Project
+Gutenberg-tm electronic works. Nearly all the individual works in the
+collection are in the public domain in the United States. If an
+individual work is in the public domain in the United States and you are
+located in the United States, we do not claim a right to prevent you from
+copying, distributing, performing, displaying or creating derivative
+works based on the work as long as all references to Project Gutenberg
+are removed. Of course, we hope that you will support the Project
+Gutenberg-tm mission of promoting free access to electronic works by
+freely sharing Project Gutenberg-tm works in compliance with the terms of
+this agreement for keeping the Project Gutenberg-tm name associated with
+the work. You can easily comply with the terms of this agreement by
+keeping this work in the same format with its attached full Project
+Gutenberg-tm License when you share it without charge with others.
+
+1.D. The copyright laws of the place where you are located also govern
+what you can do with this work. Copyright laws in most countries are in
+a constant state of change. If you are outside the United States, check
+the laws of your country in addition to the terms of this agreement
+before downloading, copying, displaying, performing, distributing or
+creating derivative works based on this work or any other Project
+Gutenberg-tm work. The Foundation makes no representations concerning
+the copyright status of any work in any country outside the United
+States.
+
+1.E. Unless you have removed all references to Project Gutenberg:
+
+1.E.1. The following sentence, with active links to, or other immediate
+access to, the full Project Gutenberg-tm License must appear prominently
+whenever any copy of a Project Gutenberg-tm work (any work on which the
+phrase "Project Gutenberg" appears, or with which the phrase "Project
+Gutenberg" is associated) is accessed, displayed, performed, viewed,
+copied or distributed:
+
+This eBook is for the use of anyone anywhere at no cost and with
+almost no restrictions whatsoever. You may copy it, give it away or
+re-use it under the terms of the Project Gutenberg License included
+with this eBook or online at www.gutenberg.org
+
+1.E.2. If an individual Project Gutenberg-tm electronic work is derived
+from the public domain (does not contain a notice indicating that it is
+posted with permission of the copyright holder), the work can be copied
+and distributed to anyone in the United States without paying any fees
+or charges. If you are redistributing or providing access to a work
+with the phrase "Project Gutenberg" associated with or appearing on the
+work, you must comply either with the requirements of paragraphs 1.E.1
+through 1.E.7 or obtain permission for the use of the work and the
+Project Gutenberg-tm trademark as set forth in paragraphs 1.E.8 or
+1.E.9.
+
+1.E.3. If an individual Project Gutenberg-tm electronic work is posted
+with the permission of the copyright holder, your use and distribution
+must comply with both paragraphs 1.E.1 through 1.E.7 and any additional
+terms imposed by the copyright holder. Additional terms will be linked
+to the Project Gutenberg-tm License for all works posted with the
+permission of the copyright holder found at the beginning of this work.
+
+1.E.4. Do not unlink or detach or remove the full Project Gutenberg-tm
+License terms from this work, or any files containing a part of this
+work or any other work associated with Project Gutenberg-tm.
+
+1.E.5. Do not copy, display, perform, distribute or redistribute this
+electronic work, or any part of this electronic work, without
+prominently displaying the sentence set forth in paragraph 1.E.1 with
+active links or immediate access to the full terms of the Project
+Gutenberg-tm License.
+
+1.E.6. You may convert to and distribute this work in any binary,
+compressed, marked up, nonproprietary or proprietary form, including any
+word processing or hypertext form. However, if you provide access to or
+distribute copies of a Project Gutenberg-tm work in a format other than
+"Plain Vanilla ASCII" or other format used in the official version
+posted on the official Project Gutenberg-tm web site (www.gutenberg.org),
+you must, at no additional cost, fee or expense to the user, provide a
+copy, a means of exporting a copy, or a means of obtaining a copy upon
+request, of the work in its original "Plain Vanilla ASCII" or other
+form. Any alternate format must include the full Project Gutenberg-tm
+License as specified in paragraph 1.E.1.
+
+1.E.7. Do not charge a fee for access to, viewing, displaying,
+performing, copying or distributing any Project Gutenberg-tm works
+unless you comply with paragraph 1.E.8 or 1.E.9.
+
+1.E.8. You may charge a reasonable fee for copies of or providing
+access to or distributing Project Gutenberg-tm electronic works provided
+that
+
+- You pay a royalty fee of 20% of the gross profits you derive from
+ the use of Project Gutenberg-tm works calculated using the method
+ you already use to calculate your applicable taxes. The fee is
+ owed to the owner of the Project Gutenberg-tm trademark, but he
+ has agreed to donate royalties under this paragraph to the
+ Project Gutenberg Literary Archive Foundation. Royalty payments
+ must be paid within 60 days following each date on which you
+ prepare (or are legally required to prepare) your periodic tax
+ returns. Royalty payments should be clearly marked as such and
+ sent to the Project Gutenberg Literary Archive Foundation at the
+ address specified in Section 4, "Information about donations to
+ the Project Gutenberg Literary Archive Foundation."
+
+- You provide a full refund of any money paid by a user who notifies
+ you in writing (or by e-mail) within 30 days of receipt that s/he
+ does not agree to the terms of the full Project Gutenberg-tm
+ License. You must require such a user to return or
+ destroy all copies of the works possessed in a physical medium
+ and discontinue all use of and all access to other copies of
+ Project Gutenberg-tm works.
+
+- You provide, in accordance with paragraph 1.F.3, a full refund of any
+ money paid for a work or a replacement copy, if a defect in the
+ electronic work is discovered and reported to you within 90 days
+ of receipt of the work.
+
+- You comply with all other terms of this agreement for free
+ distribution of Project Gutenberg-tm works.
+
+1.E.9. If you wish to charge a fee or distribute a Project Gutenberg-tm
+electronic work or group of works on different terms than are set
+forth in this agreement, you must obtain permission in writing from
+both the Project Gutenberg Literary Archive Foundation and Michael
+Hart, the owner of the Project Gutenberg-tm trademark. Contact the
+Foundation as set forth in Section 3 below.
+
+1.F.
+
+1.F.1. Project Gutenberg volunteers and employees expend considerable
+effort to identify, do copyright research on, transcribe and proofread
+public domain works in creating the Project Gutenberg-tm
+collection. Despite these efforts, Project Gutenberg-tm electronic
+works, and the medium on which they may be stored, may contain
+"Defects," such as, but not limited to, incomplete, inaccurate or
+corrupt data, transcription errors, a copyright or other intellectual
+property infringement, a defective or damaged disk or other medium, a
+computer virus, or computer codes that damage or cannot be read by
+your equipment.
+
+1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the "Right
+of Replacement or Refund" described in paragraph 1.F.3, the Project
+Gutenberg Literary Archive Foundation, the owner of the Project
+Gutenberg-tm trademark, and any other party distributing a Project
+Gutenberg-tm electronic work under this agreement, disclaim all
+liability to you for damages, costs and expenses, including legal
+fees. YOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT
+LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE
+PROVIDED IN PARAGRAPH F3. YOU AGREE THAT THE FOUNDATION, THE
+TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE
+LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR
+INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH
+DAMAGE.
+
+1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a
+defect in this electronic work within 90 days of receiving it, you can
+receive a refund of the money (if any) you paid for it by sending a
+written explanation to the person you received the work from. If you
+received the work on a physical medium, you must return the medium with
+your written explanation. The person or entity that provided you with
+the defective work may elect to provide a replacement copy in lieu of a
+refund. If you received the work electronically, the person or entity
+providing it to you may choose to give you a second opportunity to
+receive the work electronically in lieu of a refund. If the second copy
+is also defective, you may demand a refund in writing without further
+opportunities to fix the problem.
+
+1.F.4. Except for the limited right of replacement or refund set forth
+in paragraph 1.F.3, this work is provided to you 'AS-IS' WITH NO OTHER
+WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
+WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR ANY PURPOSE.
+
+1.F.5. Some states do not allow disclaimers of certain implied
+warranties or the exclusion or limitation of certain types of damages.
+If any disclaimer or limitation set forth in this agreement violates the
+law of the state applicable to this agreement, the agreement shall be
+interpreted to make the maximum disclaimer or limitation permitted by
+the applicable state law. The invalidity or unenforceability of any
+provision of this agreement shall not void the remaining provisions.
+
+1.F.6. INDEMNITY - You agree to indemnify and hold the Foundation, the
+trademark owner, any agent or employee of the Foundation, anyone
+providing copies of Project Gutenberg-tm electronic works in accordance
+with this agreement, and any volunteers associated with the production,
+promotion and distribution of Project Gutenberg-tm electronic works,
+harmless from all liability, costs and expenses, including legal fees,
+that arise directly or indirectly from any of the following which you do
+or cause to occur: (a) distribution of this or any Project Gutenberg-tm
+work, (b) alteration, modification, or additions or deletions to any
+Project Gutenberg-tm work, and (c) any Defect you cause.
+
+
+Section 2. Information about the Mission of Project Gutenberg-tm
+
+Project Gutenberg-tm is synonymous with the free distribution of
+electronic works in formats readable by the widest variety of computers
+including obsolete, old, middle-aged and new computers. It exists
+because of the efforts of hundreds of volunteers and donations from
+people in all walks of life.
+
+Volunteers and financial support to provide volunteers with the
+assistance they need are critical to reaching Project Gutenberg-tm's
+goals and ensuring that the Project Gutenberg-tm collection will
+remain freely available for generations to come. In 2001, the Project
+Gutenberg Literary Archive Foundation was created to provide a secure
+and permanent future for Project Gutenberg-tm and future generations.
+To learn more about the Project Gutenberg Literary Archive Foundation
+and how your efforts and donations can help, see Sections 3 and 4
+and the Foundation web page at https://www.pglaf.org.
+
+
+Section 3. Information about the Project Gutenberg Literary Archive
+Foundation
+
+The Project Gutenberg Literary Archive Foundation is a non profit
+501(c)(3) educational corporation organized under the laws of the
+state of Mississippi and granted tax exempt status by the Internal
+Revenue Service. The Foundation's EIN or federal tax identification
+number is 64-6221541. Its 501(c)(3) letter is posted at
+https://pglaf.org/fundraising. Contributions to the Project Gutenberg
+Literary Archive Foundation are tax deductible to the full extent
+permitted by U.S. federal laws and your state's laws.
+
+The Foundation's principal office is located at 4557 Melan Dr. S.
+Fairbanks, AK, 99712., but its volunteers and employees are scattered
+throughout numerous locations. Its business office is located at
+809 North 1500 West, Salt Lake City, UT 84116, (801) 596-1887, email
+business@pglaf.org. Email contact links and up to date contact
+information can be found at the Foundation's web site and official
+page at https://pglaf.org
+
+For additional contact information:
+ Dr. Gregory B. Newby
+ Chief Executive and Director
+ gbnewby@pglaf.org
+
+
+Section 4. Information about Donations to the Project Gutenberg
+Literary Archive Foundation
+
+Project Gutenberg-tm depends upon and cannot survive without wide
+spread public support and donations to carry out its mission of
+increasing the number of public domain and licensed works that can be
+freely distributed in machine readable form accessible by the widest
+array of equipment including outdated equipment. Many small donations
+($1 to $5,000) are particularly important to maintaining tax exempt
+status with the IRS.
+
+The Foundation is committed to complying with the laws regulating
+charities and charitable donations in all 50 states of the United
+States. Compliance requirements are not uniform and it takes a
+considerable effort, much paperwork and many fees to meet and keep up
+with these requirements. We do not solicit donations in locations
+where we have not received written confirmation of compliance. To
+SEND DONATIONS or determine the status of compliance for any
+particular state visit https://pglaf.org
+
+While we cannot and do not solicit contributions from states where we
+have not met the solicitation requirements, we know of no prohibition
+against accepting unsolicited donations from donors in such states who
+approach us with offers to donate.
+
+International donations are gratefully accepted, but we cannot make
+any statements concerning tax treatment of donations received from
+outside the United States. U.S. laws alone swamp our small staff.
+
+Please check the Project Gutenberg Web pages for current donation
+methods and addresses. Donations are accepted in a number of other
+ways including including checks, online payments and credit card
+donations. To donate, please visit: https://pglaf.org/donate
+
+
+Section 5. General Information About Project Gutenberg-tm electronic
+works.
+
+Professor Michael S. Hart was the originator of the Project Gutenberg-tm
+concept of a library of electronic works that could be freely shared
+with anyone. For thirty years, he produced and distributed Project
+Gutenberg-tm eBooks with only a loose network of volunteer support.
+
+
+Project Gutenberg-tm eBooks are often created from several printed
+editions, all of which are confirmed as Public Domain in the U.S.
+unless a copyright notice is included. Thus, we do not necessarily
+keep eBooks in compliance with any particular paper edition.
+
+
+Most people start at our Web site which has the main PG search facility:
+
+ https://www.gutenberg.org
+
+This Web site includes information about Project Gutenberg-tm,
+including how to make donations to the Project Gutenberg Literary
+Archive Foundation, how to help produce our new eBooks, and how to
+subscribe to our email newsletter to hear about new eBooks.
+
+
+</pre>
+
+</body>
+</html>
diff --git a/29461-h/images/computer.png b/29461-h/images/computer.png
new file mode 100644
index 0000000..cd95895
--- /dev/null
+++ b/29461-h/images/computer.png
Binary files differ
diff --git a/29461-h/images/instruction.png b/29461-h/images/instruction.png
new file mode 100644
index 0000000..776479e
--- /dev/null
+++ b/29461-h/images/instruction.png
Binary files differ
diff --git a/29461-h/images/sys_block.png b/29461-h/images/sys_block.png
new file mode 100644
index 0000000..a4bf454
--- /dev/null
+++ b/29461-h/images/sys_block.png
Binary files differ
diff --git a/29461.txt b/29461.txt
new file mode 100644
index 0000000..371f523
--- /dev/null
+++ b/29461.txt
@@ -0,0 +1,2081 @@
+The Project Gutenberg EBook of Preliminary Specifications: Programmed Data
+Processor Model Three (PDP-3), by Digital Equipment Corporation
+
+This eBook is for the use of anyone anywhere at no cost and with
+almost no restrictions whatsoever. You may copy it, give it away or
+re-use it under the terms of the Project Gutenberg License included
+with this eBook or online at www.gutenberg.org
+
+
+Title: Preliminary Specifications: Programmed Data Processor Model Three (PDP-3)
+ October, 1960
+
+Author: Digital Equipment Corporation
+
+Release Date: July 20, 2009 [EBook #29461]
+
+Language: English
+
+Character set encoding: ASCII
+
+*** START OF THIS PROJECT GUTENBERG EBOOK PDP MODEL THREE (PDP-3) ***
+
+
+
+
+Produced by Gerard Arthus, Katherine Ward, and the Online
+Distributed Proofreading Team at https://www.pgdp.net
+
+
+
+
+
+
+
+
+
+ PRELIMINARY SPECIFICATIONS
+
+ ---
+
+ PROGRAMMED DATA PROCESSOR
+ MODEL THREE
+ (PDP-3)
+
+ ---
+
+ October, 1960
+
+ Digital Equipment Corporation
+ Maynard, Massachusetts
+
+
+
+
+TABLE OF CONTENTS
+
+
+ INTRODUCTION 1
+
+ General Description 1
+ System Block Diagram 1
+ Electrical Description 4
+ Mechanical Description 4
+ Environmental Requirements 5
+
+ CENTRAL PROCESSOR 6
+
+ Operating Speeds 6
+ Instruction Format 6
+ Number System 7
+ Indexing 8
+ Indirect Addressing 8
+ Instruction List 9
+ Manual Controls 20
+
+ STORAGE 22
+
+ STANDARD INPUT-OUTPUT 23
+
+ Paper Tape Reader 23
+ Paper Tape Punch 24
+ Typewriter 24
+
+ OPTIONAL INPUT-OUTPUT 26
+
+ Sequence Break System 26
+ High Speed In-Out Channel 26
+ Magnetic Tape 27
+ CRT Display 33
+ Real Time Clock 33
+ Line Printer 34
+
+ UTILITY PROGRAMS 35
+
+ FRAP System 35
+ DECAL System 35
+ Floating Point Subroutines 36
+ Maintenance Routines 37
+ Miscellaneous Routines 37
+
+
+
+
+INTRODUCTION
+
+
+GENERAL DESCRIPTION
+
+The DEC Programmed Data Processor Model Three (PDP-3) is a high
+performance, large scale digital computer featuring reliability in
+operation together with economy in initial cost, maintenance and use.
+This combination is achieved by the use of very fast, reliable, solid
+state circuits coupled with system design restraint. The simplicity of
+the system design excludes many marginal or superfluous features and
+thus their attendant cost and maintenance problems.
+
+The average internal instruction execution rate is about 100,000
+operations per second with a peak rate of 200,000 operations per second.
+This speed, together with its economy and reliability, recommends PDP-3
+as an excellent instrument for complex real time control applications
+and as the center of a modern computing facility.
+
+PDP-3 is a stored program, general purpose digital computer. It is a
+single address, single instruction machine operating in parallel on 36
+bit numbers. It features multiple step indirect addressing and indexing
+of addresses. The main memory makes 511 registers available as index
+registers.
+
+The main storage is coincident current magnetic core modules of 4096
+words each. The computer has a built-in facility to address 8 modules
+and can be expanded to drive 64 modules. The memory has a cycle time of
+five microseconds.
+
+
+SYSTEM BLOCK DIAGRAM
+
+The flow of information between the various registers of PDP-3 is shown
+in the System Block Diagram (Fig. 1). There are four registers of 36 bit
+length. Their functions are described below.
+
+Memory Buffer
+
+The Memory Buffer is the central switching register. The word coming
+from or going to memory is retained in this register. In arithmetic
+operations it holds the addend, subtrahend, multiplicand, or divisor.
+The left 6 bits of this register communicate with the Instruction
+Register. The address portion of the Memory Buffer Register communicates
+with the Index Adder, the Memory Address Register, and the Program
+Counter. In certain instructions, the address portion of the control
+word does not refer to memory but specifies variations of an
+instruction, thus, the address portion of the Memory Buffer is connected
+to the Control Element.
+
+Accumulator
+
+The Accumulator is the main register of the Arithmetic Element. Sums and
+differences are formed in the Accumulator. At the completion of
+multiplication it holds the high order digits of the product. In
+division it initially contains the high order digits of the dividend and
+is left with the remainder.
+
+The logical functions AND, inclusive OR, and exclusive OR, are formed in
+the Accumulator.
+
+Carry Storage Register
+
+The Carry Storage Register facilitates high-speed multiply and is
+properly part of the Accumulator.
+
+In-Out Register
+
+The In-Out Register is the main path of communication with external
+equipment. It is also part of the Arithmetic Element. In multiplication
+it ends with the low order digits of the product. In division it starts
+with the low order parts of the dividend and ends with the quotient.
+
+The In-Out Register has a full set of shifting properties, (arithmetic
+and logical).
+
+ * * * * *
+
+There are three registers of 15 bit length which deal exclusively with
+addresses. The design allows for expansion to 18 bits. These registers
+are:
+
+Memory Addressing
+
+The Memory Address Register holds the number of the memory location that
+is currently being interrogated. It receives this number from the
+Program Counter, the Index Adder or the Memory Buffer.
+
+Program Counter
+
+The Program Counter holds the memory location of the next instruction to
+be executed.
+
+Index Adder
+
+The Index Adder is a 15 bit ring accumulator. The sum of an instruction
+base address, Y, and the contents of an index register, C(x), are formed
+in this register. This register holds the previous content of the
+Program Counter in the "jump and save Program Counter," jps,
+instruction. The Index Adder also serves as the step counter in shift,
+multiply, and divide.
+
+ * * * * *
+
+The Control Element contains two six bit registers and several
+miscellaneous flip-flops. The latter deal with indexing, indirect
+addressing, memory control, etc. The six bit registers are:
+
+Instruction Register
+
+The Instruction Register receives the first six bits of the Memory
+Buffer Register during the cycle which obtains the instruction from
+memory (cycle zero). This information is the primary input to the
+Control Element.
+
+Program Flags
+
+The six Program Flags act as convenient program switches. They are used
+to indicate separate states of a program. The program can set, clear, or
+sense the individual flip-flops. The program can also sense or make the
+state "All Flags ZERO." They can also be used to synchronize various
+input devices which occur at random times (see Input-Output, Typewriter
+Input).
+
+ * * * * *
+
+Three toggle switch registers are connected to the Central Processor
+(see Manual Controls).
+
+Test Address
+
+The fifteen Test Address Switches are used to indicate start points and
+to select memory registers for manual examination or change.
+
+Test Word
+
+The thirty-six Test Word Switches indicate a new number for manual
+deposit into memory. They may also be used for insertion of constants
+while a program is operating by means of the operate instruction.
+
+Sense Switches
+
+The six Sense Switches allow the operator to manually select program
+options or cause a jump to another program in memory. The program can
+sense individual switches or the state "All Switches ZERO."
+
+
+ELECTRICAL DESCRIPTION
+
+The PDP-3 circuitry is the static type using saturating transistor
+flip-flops and, for the most part, transistor switch elements. The
+primary active elements are Micro-Alloy and Micro-Alloy-Diffused
+transistors. The flip-flops have built-in delay so that a logic net may
+be sampled and changed simultaneously.
+
+Machine timing is performed by a delay line chain. Auxiliary delay line
+chains time the step counter instructions (multiply, divide, etc.). The
+machine is thus internally synchronous with step counter instructions
+being asynchronous. The machine is asynchronous for in-out operations,
+that is, the completion of an in-out operation initiates the following
+instruction.
+
+
+MECHANICAL DESCRIPTION
+
+The PDP-3 consists of two mechanical assemblies, the Console and the
+Equipment Frame. Fig. 3 is a photograph of PDP-1 which is an 18 bit
+version of PDP-3.
+
+Console
+
+The Console is a desk approximately seven feet long. It contains the
+controls and indicators necessary for operation and maintenance of the
+machine. A cable connects the Console to the Equipment Frame.
+
+Equipment Frame
+
+The Equipment Frame is approximately six feet high and two feet deep.
+The length is a function of the amount of optional features included.
+The Central Processor requires a length of five and one half feet. The
+power cabinet is twenty-two inches long. A memory cabinet is thirty-two
+inches long and will hold three memory modules (12,288 words per
+cabinet). Memory cabinets may be added at any time.
+
+Magnetic tape units require twenty-two inches per transport. A tape unit
+cabinet may be connected as an extension of the Equipment Frame or may
+be a free-standing frame.
+
+
+ENVIRONMENTAL REQUIREMENTS
+
+The PDP-3 requires no special room preparation. The computer will
+operate properly over the normal range of room temperature.
+
+The Central Processor and memory together require thirty amperes of 110
+volts single phase 60 cycle ac. Each inactive tape transport requires
+two amperes and the one active transport requires 10 amperes.
+
+
+
+
+CENTRAL PROCESSOR
+
+
+The Central Processor of PDP-3 contains the Control Element, the Memory
+Buffer Register, the Arithmetic Element, and the Memory Addressing
+Element. The Control Element governs the complete operation of the
+computer including memory timing, instruction performance, and the
+initiation of input-output commands. The Arithmetic Element, which
+includes the Accumulator, the In-Out Register, and the Carry Storage
+Register, performs the arithmetic operations. The Memory Addressing
+Element which includes the Index Adder, the Program Counter, and the
+Memory Address Register, performs address bookkeeping and modification.
+
+
+OPERATING SPEEDS
+
+Operating times of PDP-3 instructions are normally multiples of the
+memory cycle of 5 microseconds. Two cycle instructions refer twice to
+memory and thus require 10 microseconds for completion. Examples of this
+are add, subtract, deposit, load, etc. One cycle instructions do not
+refer to memory and require 5 microseconds. Examples of the latter are
+the jump instructions, the skip instructions, and the operate group. The
+operating times of variable cycle instructions depend upon the
+instruction. For example, the operating time for a shift or rotate
+instruction is 5 +0.2N microseconds, where N is the number of shifts
+performed. The operating times for multiply and divide are functions of
+the number of ones in the multiplier and in the quotient, respectively.
+Maximum time for multiply is 25 microseconds. This includes the time
+necessary to get the multiply instruction from memory. Divide takes 90
+microseconds maximum.
+
+In-Out Transfer instructions that do not include the optional wait
+function require 5 microseconds. If the in-out device requires a wait
+time for completion, the operating time depends upon the device being
+used.
+
+If an instruction includes reference to an index register, an additional
+5 microseconds is required. Each step of indirect addressing also
+requires an additional 5 microseconds.
+
+
+INSTRUCTION FORMAT
+
+The instructions for PDP-3 may be divided into three classes:
+
+ 1. Indexable memory instructions
+ 2. Non-indexable memory instructions
+ 3. Non-memory instructions.
+
+The layout of the instruction word is shown in Fig. 2.
+
+The octal digits 0 and 1 define the instruction code, thus, there are 64
+possible instruction codes, not all of which are used. The first bit of
+octal digit 2 is the indirect address bit. If this bit is a ONE,
+indirect addressing occurs.
+
+The index address, X, is in octal digits 3, 4, and 5. These digits
+address an index register for memory-type instructions. If these digits
+are all ZERO, indexing will not take place. In main memory, 511 of the
+registers can be used as automatic index registers.
+
+The instruction base address, Y, is in octal digits 7 through 11. These
+digits are sufficient to address 32,768 words of memory. Octal digit 6
+is reserved for further memory expansion. Space is available in the
+equipment frame for this expansion, should it prove desirable.
+
+In those instructions which do not refer to memory, the memory address
+digits, Y, and in some cases the index address digits also, are used to
+specify the variations in any group of instructions. An example of this
+is in the shift and rotate instructions in which the memory address
+digits determine the number of shifts.
+
+
+NUMBER SYSTEM
+
+The PDP-3 is a "fixed" point machine using binary arithmetic. Negative
+numbers are represented as the 1's complement of the positive numbers.
+Bit 0 is the sign bit which is ZERO for positive numbers. Bits 1 to 35
+are magnitude bits with bit 1 being the most significant and bit 35
+being the least significant.
+
+The actual position of the binary point may be arbitrarily assigned to
+best suit the problem in hand. Two common conventions in the placement
+of the binary point are:
+
+1. The binary point is to the right of the least significant digit,
+thus, numbers represent integers.
+
+2. The binary point is to the right of the sign digit, thus the numbers
+represent a fraction which lies between +-1.
+
+The conversion of decimal numbers into the binary system for use by the
+machine may be performed automatically by subroutines. Similarly the
+output conversion of binary numbers into decimals is done by subroutine.
+Operations for floating point numbers are handled by programming. The
+utility program system provides for automatic insertion of the routines
+required to perform floating point operations and number base conversion
+(see Utility Programs).
+
+
+INDEXING
+
+In PDP-3, 511 registers of the main magnetic core memory are available
+for use as automatic index registers. Their addresses are specified by
+octal digits 3 to 5 of the instruction word. These registers are memory
+locations 001-777 (octal). Address 000 specifies that no index register
+is to be used with the instructions. The contents of octal digits 7
+through 11 of the selected index register are added to the unmodified
+address (octal digits 7 through 11 of the instruction).
+
+This sum is used to locate the operand. The addition is done in the
+Index Adder which is a 15 bit 1's complement adder. The contents of the
+Accumulator and the In-Out Register are unaffected by the indexing
+process. An instruction which has used indexing is retained in memory
+with its original address unmodified. Memory registers 1-777 (octal) are
+available for use as normal memory registers if they are not being used
+as index registers. The left half of these registers is available for
+the storage of constants, tables, etc., when octal digits 7 through 11
+act as index registers.
+
+Three special instructions snx, spx and lir, are available to facilitate
+resetting, advancing, and sampling of the index registers. Since the
+index registers are normal memory registers, their contents can also be
+manipulated by the standard computer instructions.
+
+
+INDIRECT ADDRESSING
+
+An instruction which is to use an indirect address will have a ONE in
+bit six of the instruction word. The original address, Y, of the
+instruction will not be used to locate the operand of the instruction,
+as is the normal case. Instead, it is used to locate a memory register
+whose contents in octal digits 7 through 11 will be used as the address
+of the original instruction. This new address is known as the indirect
+address for the instruction and will be used to locate the operand. If
+the memory register containing the indirect address also has a 1 in bit
+six, the indirect addressing procedure is repeated again and a third
+address is located. There is no limit to the number of times this
+process can be repeated.
+
+Index registers may be used in conjunction with indirect addressing. In
+this case, the address after being modified by the selected index
+register is used to locate the indirect address.
+
+The indirect address can be acted on by an index register and deferred
+again if desired. Each use of an index register or an indirect address
+extends the operating time of the original instruction by 5
+microseconds.
+
+
+INSTRUCTION LIST
+
+This list includes the title of the instruction, the normal execution
+time of the instruction, i.e., the time with no indexing and no
+deferring, the mnemonic code of the instruction, and the operation code
+number. The notation used requires the following definitions. The
+contents of a register Q are indicated as C(Q). The address portion of
+the instruction is indicated by Y. The index register address of an
+instruction is indicated by x. The effective address of an operand is
+indicated by Z. Z may be equal to Y or it may be Y as modified by
+deferring or by indexing.
+
+
+Indexable Memory Instructions
+
+Arithmetic Instructions
+
+ _Add_ (10 usec.)
+ add x Y Operation Code 40
+
+The new C(AC) are the sum of C(Z) and the original C(AC). The C(Z) are
+unchanged. The addition is performed with 1's complement arithmetic.
+
+If the sum exceeds the capacity of the Accumulator Register, the
+overflow flip-flop will be set (see Skip Group instructions).
+
+ _Subtract_ (10 usec.)
+ sub x Y Operation Code 42
+
+The new C(AC) are the original C(AC) minus the C(Z). The C(Z) are
+unchanged. The subtraction is performed using 1's complement
+arithmetic.
+
+If the difference exceeds the capacity of the Accumulator, the overflow
+flip-flop will be set (see Skip Group instructions).
+
+ _Multiply_ (approximately 25 usec.)
+ mul x Y Operation Code 54
+
+The C(AC) are multiplied by the C(Z). The most significant digits of the
+product are left in the Accumulator and the least significant digits in
+the In-Out Register. The previous C(AC) are lost.
+
+ _Divide_ (approximately 90 usec.)
+ div x Y Operation Code 56
+
+The Accumulator and the In-Out Register together form a 70 bit dividend.
+The high order part of the dividend is in the Accumulator. The low order
+part of the dividend is in the In-Out Register. The divisor is (Z).
+
+Upon completion of the division, the quotient is in the In-Out Register.
+The remainder is in the Accumulator. The sign of the remainder is the
+same as the sign of the dividend. If the dividend is larger than C(Z),
+the overflow flip-flop will be set and the division will not take place.
+
+Logical Instructions
+
+ _Logical AND_ (10 usec.)
+ and x Y Operation Code 02
+
+The bits of C(Z) operate on the corresponding bits of the Accumulator to
+form the logical AND. The result is left in the Accumulator. The C(Z)
+are unaffected by this instruction.
+
+Logical AND Function Table
+
+ AC Bit C(Z) Bit Result
+ 0 0 0
+ 0 1 0
+ 1 0 0
+ 1 1 1
+
+ _Exclusive OR_ (10 usec.)
+ xor x Y Operation Code 06
+
+The bits of C(Z) operate on the corresponding bits of the Accumulator to
+form the exclusive OR. The result is left in the Accumulator. The C(Z)
+are unaffected by this order.
+
+Exclusive OR Table
+
+ AC Bit C(Z) Bit Result
+ 0 0 0
+ 0 1 1
+ 1 0 1
+ 1 1 0
+
+ _Inclusive OR_ (10 usec.)
+ ior x Y Operation Code 04
+
+The bits of C(Z) operate on the corresponding bits of the Accumulator to
+form the inclusive OR. The result is left in the Accumulator. The C(Z)
+are unaffected by this order.
+
+Inclusive OR Table
+
+ AC Bit C(Z) Bit Result
+ 0 0 0
+ 0 1 1
+ 1 0 1
+ 1 1 1
+
+General Instructions
+
+ _Load Accumulator_ (10 usec.)
+ lac x Y Operation Code 20
+
+The C(Z) are placed in the Accumulator. The C(Z) are unchanged. The
+original C(Z) are lost.
+
+ _Deposit Accumulator_ (10 usec.)
+ dac x Y Operation Code 24
+
+The C(AC) replace the C(Z) in the memory. The C(AC) are left unchanged
+by this instruction. The original C(Z) are lost.
+
+ _Deposit Address Part_ (10 usec.)
+ dap x Y Operation Code 26
+
+Octal digits 6 through 11 of the Accumulator replace the corresponding
+digits of memory register Z.
+
+C(AC) are unchanged as are the contents of octal digits 0 through 5 of
+Z. The original contents of octal digits 6 through 11 of Z are lost.
+
+ _Deposit Instruction Part_ (10 usec.)
+ dip x Y Operation Code 30
+
+Octal digits 0 through 5 of the Accumulator replace the corresponding
+digits of memory register Z. The Accumulator is unchanged as are digits
+6 through 11 of Z. The original contents of octal digits 0 through 5 of
+Z are lost.
+
+ _Load In-Out Register_ (10 usec.)
+ lio x Y Operation Code 22
+
+The C(Z) are placed in the In-Out Register. C(Z) are unchanged. The
+original C(IO) are lost.
+
+ _Deposit In-Out Register_ (10 usec.)
+ dio x Y Operation Code 32
+
+The C(IO) replace the C(Z) in memory. The C(IO) are unaffected by this
+instruction. The original C(Z) are lost.
+
+ _Jump_ (5 usec.)
+ jmp x Y Operation Code 60
+
+The Program Counter is reset to address Z. The next instruction that
+will be executed will be taken from memory register Z. The original
+contents of the Program Counter are lost.
+
+ _Jump and Save Program Counter_ (5 usec.)
+ jsp x Y Operation Code 62
+
+The contents of the Program Counter are transferred to the Index Adder.
+When the transfer takes place, the Program Counter holds the address of
+the instruction following the jsp. The Program Counter is then reset to
+address Z. The next instruction that will be executed will be taken from
+memory register Z.
+
+ _Skip if Accumulator and Z differ_ (10 usec.)
+ sad x Y Operation Code 50
+
+The C(Z) are compared with the C(AC). If the two numbers are different,
+the Program Counter is indexed one extra position and the next
+instruction in the sequence is skipped. The C(AC) and the C(Z) are
+unaffected by this operation.
+
+ _Skip if Accumulator and Z are the same_ (10 usec.)
+ sas x Y Operation Code 52
+
+The C(Z) are compared with C(AC). If the two numbers are identical, the
+Program Counter is indexed one extra position and the next instruction
+in the sequence is skipped. The C(AC) and C(Z) are unaffected by this
+operation.
+
+
+Non-Indexable Memory Instructions
+
+These instructions have the same word format as the indexable
+instructions. Since they operate on the index register location, x, they
+cannot be indexed.
+
+ _Skip on Negative index_ (10 usec.)
+ snx x Y Operation Code 46
+
+The number in octal digits 7 through 11 of the instruction word is added
+to the C(x). This addition is done in the 15 bit Index Adder using 1's
+complement arithmetic. If, after the addition, the sum is negative, the
+Program Counter is advanced one extra position and the next instruction
+in the sequence is skipped. The contents of octal digits 0-5 of the
+index register location are unaffected by this instruction.
+
+ _Skip on Positive index_ (10 usec.)
+ spx x Y Operation Code 44
+
+The number in octal digits 7 through 11 of the instruction word is added
+to the C(x). This addition is done in the 15 bit Index Adder using 1's
+complement arithmetic.
+
+If, after the addition, the sum is positive, the Program Counter is
+advanced one extra position and the next instruction in the sequence is
+skipped. The contents of octal digits 0-5 of the index register location
+are unaffected by this instruction.
+
+ _Load Index Register_ (10 usec.)
+ lir x Y Operation Code 14
+
+The octal digits 7 through 11 (Y) of the instruction will replace the
+corresponding digits of the memory register specified by x. Octal digit
+6 of the memory register will be left clear. Digits 0-5 of the memory
+register are unchanged.
+
+ _Deposit Index Adder_ (10 usec.)
+ dia x Y Operation Code 16
+
+The C(IA) replace the octal digits 7 through 11 of memory location Y.
+Octal digit 6 of Y is cleared. Digits 0 through 5 of Y are left
+unchanged. The x portion of the instruction is ignored.
+
+
+Non-Memory Instructions
+
+Rotate and Shift Group
+
+This group of instructions will rotate or shift the Accumulator and/or
+the In-Out Register. When the two registers operate combined, the In-Out
+Register is considered to be a 36 bit magnitude extension of the right
+end of the Accumulator.
+
+Rotate is a non-arithmetic cyclic shift. That is, the two ends of the
+register are logically tied together and information is rotated as
+though the register were a ring.
+
+Shift is an arithmetic operation and is in effect multiplication of the
+number in the register by 2^{+N}, where N is the number of shifts. Shift
+or rotate instructions involving more than 33 steps can be used for
+simulating time delays. 36 rotate steps of the Accumulator will return
+all information to its original position.
+
+ _Rotate Accumulator Right_ (13 usec. maximum for 36 shifts)
+ rar N Operation Code 671
+
+This instruction will rotate the bits of the Accumulator right N
+positions, where N is octal digits 7-11 of the instructions word.
+
+ _Rotate Accumulator Left_ (13 usec. maximum for 36 shifts)
+ ral N Operation Code 661
+
+This instruction will rotate the bits of the Accumulator left N
+Positions, where N is octal digits 7-11 of the instruction word.
+
+ _Shift Accumulator Right_ (13 usec. maximum for 36 shifts)
+ sar N Operation Code 675
+
+This instruction will shift the contents of the Accumulator right N
+positions, where N is octal digits 7-11 of the instruction word.
+
+ _Shift Accumulator Left_ (13 usec. maximum for 36 shifts)
+ sal N Operation Code 665
+
+This instruction will shift the contents of the Accumulator left N
+positions, where N is octal digits 7-11 of the instruction word.
+
+ _Rotate In-Out Register Right_ (13 usec. maximum for 36 shifts)
+ rir N Operation Code 672
+
+This instruction will rotate the bits of the In-Out Register right N
+positions, where N is octal digits 7-11 of the instruction word.
+
+ _Rotate In-Out Register Left_ (13 usec. maximum for 36 shifts)
+ ril N Operation Code 662
+
+This instruction will rotate the bits of the In-Out Register left N
+positions, where N is octal digits 7-11 of the instruction word.
+
+ _Shift In-Out Register Right_ (13 usec. maximum for 36 shifts)
+ sir N Operation Code 676
+
+This instruction will shift the contents of the In-Out Register right N
+positions, where N is octal digits 7-11 of the instruction word.
+
+ _Shift In-Out Register Left_ (13 usec. maximum for 36 shifts)
+ sil N Operation Code 666
+
+This instruction will shift the contents of the In-Out Register left N
+positions, where N is octal digits 7-11 of the instruction word.
+
+ _Rotate AC and IO Right_ (13 usec. maximum for 36 shifts)
+ rcr N Operation Code 673
+
+This instruction will rotate the bits of the combined register right in
+a single ring N positions, where N is octal digits 7-11 of the
+instruction word.
+
+ _Rotate AC and IO Left_ (13 usec. maximum for 36 shifts)
+ rcl N Operation Code 663
+
+This instruction will rotate the bits of the combined register left in a
+single ring N position, where N is octal digits 7-11 of the instruction
+word.
+
+ _Shift AC and IO Right_ (13 usec. maximum for 36 shifts)
+ scr N Operation Code 677
+
+This instruction will shift the contents of the combined register right
+N positions, where N is octal digits 7-11 of the instruction word.
+
+ _Shift AC and IO Left_ (13 usec. maximum for 36 shifts)
+ scl N Operation Code 667
+
+This instruction will shift the contents of the combined registers left
+N positions, where N is octal digits 7-11 of the instruction word.
+
+ * * * * *
+
+ _Skip Group_ (5 usec.)
+ skp Y Operation Code 64
+
+This group of instructions senses the state of various flip-flops and
+switches in the machine. It does not require any reference to memory.
+The address portion of the instruction selects the particular function
+to be sensed. All members of this group have the same operation code.
+
+ _Skip on ZERO Accumulator_ (5 usec.)
+ sza Address 100
+
+If the Accumulator is equal to plus ZERO (all bits are ZERO) the Program
+Counter is advanced one extra position and the next instruction in the
+sequence is skipped.
+
+ _Skip on Plus Accumulator_ (5 usec.)
+ spa Address 200
+
+If the sign bit of the Accumulator is ZERO, the Program Counter is
+advanced one extra position and the next instruction in the sequence is
+skipped.
+
+ _Skip on Minus Accumulator_ (5 usec.)
+ sma Address 400
+
+If the sign bit of the Accumulator is ONE, the Program Counter is
+advanced one extra position and the next instruction in the sequence is
+skipped.
+
+ _Skip on ZERO Overflow_ (5 usec.)
+ szo Address 1000
+
+If the overflow flip-flop is a ZERO the Program Counter is advanced one
+extra position and the next instruction in the sequence will be skipped.
+The overflow flip-flop is cleared by this instruction. This flip-flop is
+set by addition, subtraction, or division that exceeds the capacity of
+the Accumulator. The overflow flip-flop is not cleared by arithmetic
+operations which do not cause an overflow. Thus, a whole series of
+arithmetic operations may be checked for correctness by a single szo.
+The overflow flip-flop is cleared by the "Start" Switch.
+
+ _Skip on Plus In-Out Register_ (5 usec.)
+ spi Address 2000
+
+If the sign digit of the In-Out Register is ZERO the Program Counter is
+indexed one extra position and the next instruction in the sequence is
+skipped.
+
+ _Skip on ZERO Switch_ (5 usec.)
+ szs Addresses 10, 20, ... 70
+
+If the selected Sense Switch is ZERO, the Program Counter is advanced
+one extra position and the next instruction in the sequence will be
+skipped. Address 10 senses the position of Sense Switch 1, Address 20
+Switch 2, etc. Address 70 senses all the switches. If 70 is selected all
+6 switches must be ZERO to cause the skip to occur.
+
+ _Skip on ZERO Program Flag_ (5 usec.)
+ szf Addresses 0 to 7 inclusive
+
+If the selected program flag is a ZERO, the Program Counter is advanced
+one extra position and the next instruction in the sequence will be
+skipped. Address 0 is no selection. Address 1 selects program flag one,
+etc. Address 7 selects all programs flags. All flags must be ZERO to
+cause the skip.
+
+The instructions in the One Cycle Skip group may be combined to form the
+inclusive OR of the separate skips. Thus, if address 3000 is selected,
+the skip would occur if the overflow flip-flop equals ZERO or if the
+In-Out Register is positive. The combined instruction would still take 5
+microseconds.
+
+ * * * * *
+
+ _Operate Group_ (5 usec.)
+ opr Y Operation Code 76
+
+This instruction group performs miscellaneous operations on various
+Central Processor Registers. The address portion of the instruction
+specifies the action to be performed.
+
+ _Clear In-Out Register_ (5 usec.)
+ cli Address equal 4000
+
+This instruction clears the In-Out Register.
+
+ _Load Accumulator from Test Word_ (5 usec.)
+ lat Address 2000
+
+This instruction forms the inclusive OR of the C(AC) and the contents of
+the Test Word. This instruction is usually combined with address 200
+(clear Accumulator), so that C(AC) will equal the contents of the Test
+Word Switches.
+
+ _Complement Accumulator_ (5 usec.)
+ cma Address 1000
+
+This instruction complements (makes negative) the contents of the
+Accumulator.
+
+ _Halt_
+ hlt Address 400
+
+This instruction stops the computer.
+
+ _Clear Accumulator_ (5 usec.)
+ cla Address 200
+
+This instruction clears (sets equal to plus 0) the contents of the
+Accumulator.
+
+ _Clear Selected Program Flag_ (5 usec.)
+ clf Address 01 to 07 inclusive
+
+The selected program flag will be cleared. Address 00 selects no program
+flag, 01 clears program flag 1, 02 clears program flag 2, etc. Address
+07 clears all program flags.
+
+ _Set Selected Program Flag_ (5 usec.)
+ stf Address 11 to 17 inclusive
+
+ * * * * *
+
+ _In-Out Transfer Group_ (5 usec. without in-out wait)
+ iot x Y Operation Code 72
+
+The variations within this group of instructions perform all the in-out
+control and information transfer functions. If bit six (normally the
+Indirect Address bit) is a ONE, the computer will halt and wait for the
+completion pulse from the device activated. When this device delivers
+its completion, the computer will resume operation of the instruction
+sequence.
+
+An incidental fact which may be of importance in certain scientific or
+real time control applications is that the time origin of operations
+following an in-out completion pulse is identical with the time of that
+pulse.
+
+Most in-out operations require a known minimum time before completion.
+This time may be utilized for programming. The appropriate In-Out
+Transfer is given with no in-out wait (bit six a ZERO). The instruction
+sequence then continues. This sequence must include an iot instruction
+which performs nothing but the in-out wait. This last instruction must
+occur before the safe minimum time. A table of minimum times for all
+in-out devices is delivered with the computer. It lists minimum time
+before completion pulse and minimum In-Out Register free time.
+
+The details of the In-Out Transfer variations are listed under
+Input-Output.
+
+The mnemonic codes and addresses for the standard equipment are:
+
+ _Read Paper Tape Alphanumeric Mode_
+ rpa Address 1
+
+ _Read Paper Tape Binary Mode_
+ rpb Address 2
+
+ _Typewriter Output_
+ tyo Address 3
+
+ _Typewriter Input_
+ tyi Address 4
+
+ _Punch Paper Tape Alphanumeric Mode_
+ ppa Address 5
+
+ _Punch Paper Tape Binary Mode_
+ ppb Address 6
+
+
+MANUAL CONTROLS
+
+The Console of PDP-3 has controls and indicators for the use of the
+operator. Fig. 4 is a close-up of the control panel of PDP-1, the 18 bit
+version of PDP-3. All computer flip-flops have indicator lights on the
+Console. These indicators are primarily for use when the machine has
+stopped or when the machine is being operated one step at a time. While
+the machine is running, the brightness of an indicator bears some
+relationship to the relative duty factor of that particular flip-flop.
+
+Three registers of toggle switches are available on the Console. These
+are the Test Address (15 bits), the Test Word (36 bits), and the Sense
+Switches (6 bits). The first two are used in conjunction with the
+operating push buttons. The Sense Switches are present for manual
+intervention. The use of these switches is determined by the program
+(see System Block Diagram and Skip Group Instructions).
+
+Operating Push Buttons
+
+_Start_ - When this switch is operated, the computer will start. The
+first instruction comes from the memory location indicated in the Test
+Address Switches.
+
+_Stop_ - The computer will come to a halt at the completion of the
+current memory cycle.
+
+_Continue_ - The computer will resume operation starting at the state
+indicated by the lights.
+
+_Examine_ - The contents of the memory register indicated in the Test
+Address will be displayed in the Accumulator and the Memory Buffer
+lights.
+
+_Deposit_ - The word selected by the Test Word Switches will be put in
+the memory location indicated by the Test Address Switches.
+
+_Read-In_ - When this switch is operated, the photoelectric paper tape
+reader will start operating in the Read-In mode. (see Input-Output).
+
+In addition to the operating push buttons, there are several separate
+toggle switches.
+
+_Single Cycle Switch_ - When the Single Cycle Switch is on, the computer
+will halt at the completion of each memory cycle. This switch is
+particularly useful in debugging programs. Repeated operation of the
+Continue Switch button will step the program one cycle at a time. The
+programmer is thus able to examine the machine states at each step.
+
+_Test Switch_ - When the Test Switch is on, the computer will perform
+the instruction indicated in the Test Address location. It will repeat
+this instruction either at the normal speed rate or at a single cycle
+rate if the Single Cycle Switch is up. This switch is primarily useful
+for maintenance purposes.
+
+_Sense Switches_ - There are six switches on the Console which are
+present for manual intervention.
+
+
+
+
+STORAGE
+
+The internal Memory System for PDP-3 consists of modules of 4096 words
+of coincident current magnetic core storage. Each word has 36 bits. The
+memory modules operate with a read-rewrite cycle time of 5 microseconds.
+The driving currents of the memory are automatically adjusted to
+compensate for normal room temperature variations.
+
+Each core memory module consists of the memory stack, the required X and
+Y switches, the X and Y current sources and sense amplifiers for that
+stack.
+
+The Memory Address Register, the Memory Buffer Register, and the Memory
+Timing Controls are considered to be part of the Central Processor. The
+standard PDP-3 Memory Address Register configuration is built to allow
+up to 8 modules of core memory (32,768 words). There is a space in the
+addressing section of the machine to allow expansion of the addressing
+by a factor of eight for a total addressing capacity of 262,144 memory
+registers.
+
+The Core Memory may be supplemented by Magnetic Tape Storage. This is
+described under Input-Output.
+
+
+
+
+STANDARD INPUT-OUTPUT
+
+The PDP-3 is designed to accommodate a variety of input-output
+equipment. Standard input-output units include a Paper Tape Reader,
+Paper Tape Punch and an Electric Typewriter.
+
+A single instruction, In-Out Transfer (see Central Processor), performs
+all in-out operations through the 36 bit In-Out Register. The address
+portion of this instruction specifies the in-out function. One bit of
+the instruction selects an in-out halt as required.
+
+
+PAPER TAPE READER
+
+The Paper Tape Reader of the PDP-3 is a photoelectric device capable of
+reading 300 lines per second. Six lines form the standard 36 bit word
+when reading binary punched eight hole tape. Five, six and seven hole
+tape may also be read.
+
+The reader will operate in one of two basic modes or in a third special
+mode.
+
+ Alphanumeric Mode
+ rpa iot 1
+
+In this mode, one line of tape is read for each In-Out Transfer. All
+eight holes of the line are read. The information is left in the right
+eight bits of the In-Out Register, the remainder of the register being
+left clear. The standard PDP alphanumeric paper tape code includes an
+odd parity bit which may be checked by the program. Tape of non-standard
+width would be read in this mode.
+
+ Binary Mode
+ rpb iot 2
+
+For each In-Out Transfer instruction, six lines of paper tape are read
+and assembled in the In-Out Register to form a full computer word. For a
+line to be recognized in this mode, the eighth hole must be punched;
+i.e., lines with no eighth hole will be skipped over. The seventh hole
+is ignored. The pattern of holes in the binary tape is arranged so as to
+be easily interpreted visually in terms of machine instruction.
+
+Read-In Mode
+
+This is a special mode activated by the "Read-In" Switch on the Console.
+It provides a means of entering programs which neither rely on read-in
+programs in memory nor require a plug board. Pushing the "Read-In"
+Switch starts the reader in the binary mode. The first group of six
+lines and alternate succeeding groups of six lines are interpreted as
+"Read-In" mode instructions. Even-numbered groups of 6 lines are data.
+The "Read-In" mode instructions must be either "deposit in-out" (dio Y)
+or "jump" (jmp Y). If the instruction is dio Y, the next group of six
+binary lines will be stored in memory location Y and the reader
+continues moving. If the instruction is jmp Y, the "Read-In" mode is
+terminated and the computer will commence operation at the address of
+the jump instruction.
+
+
+PAPER TAPE PUNCH
+
+The standard PDP-3 Paper Tape Punch has a nominal speed of 20 lines per
+second. It can operate in either the alphanumeric mode or the binary
+mode.
+
+ Alphanumeric Mode
+ ppa iot 5
+
+For each In-Out Transfer instruction one line of tape is punched. In-Out
+Register bit 35 conditions hole #1. Bit 34 conditions hole #2, etc. Bit
+28 conditions hole #8.
+
+ Binary Mode
+ ppb iot 6
+
+For each In-Out Transfer instruction one line of tape is punched. In-Out
+Register bit five conditions hole #1. Bit four conditions hole #2, etc.
+Bit zero conditions hole #6. Hole #7 is left blank. The #8 hole is
+always punched in this mode.
+
+
+TYPEWRITER
+
+The Typewriter will operate in the input mode or the output mode.
+
+ Output Mode
+ tyo iot 3
+
+For each In-Out Transfer instruction one character is typed. The
+character is specified by the right six bits of the In-Out Register.
+
+ Input Mode
+ tyi iot 4
+
+This operation is completely asynchronous and is therefore handled
+differently than any of the preceding in-out operations.
+
+When a Typewriter key is struck, Program Flag Number One is set. At the
+same time the code for the struck key is presented to gates connected to
+the right six bits of the In-Out Register. This information will remain
+at the gate for a relatively long time by virtue of the slow mechanical
+action. A program designed to accept typed-in data would periodically
+check the status of Program Flag One. If at any time Program Flag One is
+found to be set, an In-Out Transfer instruction with address four must
+be executed for information to be transferred. This In-Out Transfer
+normally should not use the optional in-out halt. The information
+contained in the Typewriter's coder is then read into the right six bits
+of the In-Out Register.
+
+
+
+
+OPTIONAL INPUT-OUTPUT
+
+The PDP-3 is designed to accommodate a variety of input-output
+equipment. Of particular interest is the ease with which new, and
+perhaps unusual, external equipment can be added to the machine.
+Optional in-out devices include Cathode Ray Tube Display, Magnetic Tape,
+Real Time Clock, Line Printer and Analog to Digital Converters. The
+method of operation of PDP-3 with these optional devices is similar to
+the standard input-output equipment.
+
+
+SEQUENCE BREAK SYSTEM
+
+An optional in-out control is available for PDP-3. This control, termed
+the Sequence Break System, allows concurrent operation of several in-out
+devices and the main sequence. The system has, nominally, 16 automatic
+interrupt channels arranged in a priority chain.
+
+A break to a particular sequence may be initiated by the completion of
+an in-out device, the program, or an external signal. If this sequence
+has priority, the C(AC), C(IO), C(PC), and C(IA) are stored in three
+fixed memory locations unique to that sequence. Since the C(PC) and
+C(IA) are eighteen bits each, these two registers are stored in one
+memory location. The next instruction is taken from a fourth location.
+This instruction is usually a jump to a suitable routine. The program is
+now operating in the new sequence. This new sequence may be broken by a
+higher priority sequence. A typical program loop for handling an in-out
+sequence would contain 3 to 5 instructions, including the appropriate
+iot. These are followed by load AD and load IO from the fixed locations
+and a special indirect jump through the location of the previous C(PC).
+This special jump also loads the IA. This last instruction terminates
+the sequence.
+
+
+HIGH SPEED IN-OUT CHANNEL
+
+The device connected to an in-out channel communicates directly with
+memory through the Memory Buffer Register. At the completion of each
+machine instruction, a check is made to see if the in-out channel has a
+word for, or needs a word from, the memory. When necessary, a memory
+cycle is taken to serve the channel. The operation is initiated by an
+in-out command. The in-out transfer command indicates the nature of the
+transfer. The left half of the In-Out Register must contain the
+starting address of the transfer, and the right half must contain the
+number of words to be transferred. If the Sequence Break System is
+connected, the completion of the transfer will signal the proper
+sequence. If no Sequence Break System is connected, the completion of
+the in-out channel transfer sets a program flag.
+
+
+MAGNETIC TAPE
+
+The system consists of tape units connected to the PDP-3 through a tape
+control (TC). This tape is read or written in IBM 729I format. Two
+hundred characters, each having 6 bits plus a parity bit, are written on
+each inch of tape and the tape moves at 75 inches/sec. The tape control
+has the job of connecting a specific unit to the PDP-3 and is a switch.
+It also has the function of controlling the format of information that
+is read or written on tape. In-out class commands instruct TC to the
+type of information transfer and select the tape unit. Another IOT
+command synchronizes the transfer of information through the TC to the
+computer.
+
+The IOT order to select the unit and function is decoded as follows: 1)
+Three bits specify the function of TC. 2) The remaining 6 bits select
+the unit.
+
+_IOT Motion Commands for Magnetic Tape Units_
+
+ _IOT Code_ _Abbreviation_ _Function_
+
+ 73....nn 60 mrb Read a binary record.
+ 73....nn 61 mra Read an alphanumeric (BCD) record.
+ 73....nn 62 mbb Backspace a binary record.
+ 73....nn 63 mba Backspace an alphanumeric record.
+ 73....nn 64 mwb Write a binary record.
+ 73....nn 65 mwa Write an alphanumeric record.
+ 73....nn 66 mlp Move tape to lead point (rewind).
+
+Where the octal digits, nn, specify the unit number.
+
+The motion commands have the deferred bit, thus, the program halts. If
+the TC is free, the command will be transferred to the tape control for
+action and the program restarts immediately. If the tape control is
+currently busy with an instruction, i.e., it hasn't finished a previous
+command, the motion command is held up until TC is free to execute the
+new command.
+
+The transfer of information from the computer to the TC is accomplished
+with the pause and skip command, MPS or IOT 70. This command has the
+deferred bit and halts a program until the TC can handle the transfer.
+On completion, the transfer occurs and the program restarts. This is
+used exclusively to synchronize the flow of information between a tape
+unit and the computer. This command normally skips the following
+instruction. If a flag is set in the TC, indicating incorrect
+information flow, the skip does not take place.
+
+The TC contains a 36 bit buffer which holds a complete word while
+information is read or written. When an MPS order is given and the unit
+is reading, the TC buffer is read into the IO. The MPS order given
+during writing causes the IO to be transferred to the TC buffer.
+
+Various conditions occurring in the TC cause the no-skip condition, when
+an MPS is given. Tape control flags are examined by the command, examine
+and clear flags, MEC or IOT 71. When MEC is given, the flags are put
+into the IO for program interrogation, and the flags cleared. The flags
+are: parity, end of tape, an end of record flag, and reading-writing
+check.
+
+The parity flag is set if the parity condition is not met while the tape
+is being read (during MWA, MWB, MRA, or MRB).
+
+The end of tape flag is set when the tape comes to the end of tape,
+moving in either direction.
+
+Three conditions set the read-write check flag: 1) If TC is inactive,
+i.e., no unit or function selected, and an MPS instruction is given. The
+MPS becomes a no-operation, no-halt instruction. 2) When reading
+information and not emptying the TC buffer, by giving an MPS before more
+information arrives from tape. 3) A unit becomes unavailable during a
+normal sequence.
+
+The end of record flag is set during reading or backspacing when the
+tape comes to an end of record gap.
+
+_Writing a Record of Information_
+
+Information is written on the tape by giving a MWB or MWA command. This
+sets a write binary or a write alphanumeric into the TC and selects the
+unit. A motion select command is executed immediately if the TC is free,
+otherwise, the command waits until it can be executed. Normal
+programming can continue after the MWA or MWB is given for approximately
+5 milliseconds. At this time, an MPS order is given and the program
+pauses until information can be written. When the MPS is restarted,
+information is transferred to the TC buffer from the IO. If no flags
+have been set, the following instruction is skipped.
+
+Three-quarter inches of blank tape is written by giving either the MWA
+or MWB order. An end of file is written as follows: 1) Four MWA commands
+write three inches of blank tape. 2) Then end of file character is
+written by giving the MPS order.
+
+Information is read and checked for correct parity while writing.
+
+If too many program steps are given between the motion select command,
+MWA or MWB and the first MPS, the unit will deselect (or disconnect).
+The MPS is then a no-operation command.
+
+_Writing Program_
+
+As an example, a program to write k words in binary format from storage
+beginning in register A, using tape unit number 04, is shown. The
+following program is written in standard FRAP language. The program
+begins in register enterwrite.
+
+ enterwrite mec ,clear flags initially
+ mwb 400 ,73000000464
+ lir x/-k+1 ,initialize index register x
+ b lio x/a+k-1 ,begin loop
+ mps ,wait for TC then write C(Z)
+ jmp c ,error
+ spx x/1 ,add 1 to index register x
+ jmp b ,return of loop
+ jmp done ,record written
+
+
+ c mec ,tape error
+ ril 1
+ spi
+ jmp rwcstop ,read-write error or tape fault
+ ril 1
+ spi
+ jmp b+3 ,tape end
+ hlt ,tape parity
+
+ done ,resume programming
+
+_Reading Information_
+
+Information is read by giving the MRA or MRB order. Almost 10 ms. is
+available after a read order is given before information actually enters
+the TC buffer.
+
+To read a record of unknown length, the read order is first given. The
+MPS order halts the program until six characters are assembled in the TC
+information buffer. The next instruction after the MPS, a jump
+instruction, transfers control from the loop when any flag is set. The
+next instruction deposits the IO. The record length is determined by not
+skipping after the MPS order on the setting of the end of record flag.
+The read-write check flag or the end of record flag is then interrogated
+to see that the tape is actually at the end of record. If a tape is not
+at the end of record, then the tape is either at the end of the reel, or
+a parity check has occurred.
+
+_Reading Program_
+
+Program to read j binary words into storage beginning in register d,
+using tape unit 10, j is unknown. The program begins in register
+enteread.
+
+ enteread mec ,clear flags initially
+ mrb 1000 ,730000001060
+ dzm x ,put zero in memory location x
+ e mps
+ jmp outcheck
+ dio x/d ,store in location modified by x
+ snx x/+1 ,add 1 to C(x)
+ jmp e
+
+ outcheck mec ,examine flags
+ spi ,end of record?
+ jmp recordend ,yes
+ hlt ,error
+
+ recordend snx x/+1 ,to find value of j
+ " ,resume programming C(IA) = j
+ "
+ "
+ "
+
+_Forward Spacing_
+
+Forward spacing is done by giving an MRB or MRA order. This moves the
+tape forward with the read-write head positioned at the end of the
+following record. If n read orders are given, the tape is spaced forward
+n records. By giving the MEC order, parity flags are examined to see
+that information on tape has been read correctly.
+
+_Backspacing_
+
+By giving an MBA or MBB order the tape is moved backwards a record with
+the read-write heads positioned in the previous end of record gap. The
+end of record flag is set when the tape has moved backwards a record.
+
+_Rewinding_
+
+Rewinding is accomplished by giving the rewind order, move tape to load
+point, MLP. The rewind order starts a unit rewinding and does not tie up
+the TC. If a motion command is given which calls for a unit that is
+rewinding, the command is executed, but the action will not take place
+until the unit is available.
+
+_Unit Availability_
+
+A unit is unavailable to the program under the following conditions:
+
+ 1. Unit is rewinding.
+ 2. Tape is improperly loaded.
+ 3. Cover door open.
+ 4. Unit overloaded.
+ 5. Unit under manual control.
+ 6. Power off.
+
+A selected but unavailable unit holds up the TC if a motion order is
+given for the unit. The TC will be held up until the unit is ready.
+
+_Flag Positions_
+
+ _IO Bit_ _Flag_
+
+ 0 EOR - End of record
+ 1 RWF - Read-Write
+ 2 EOT - End of Tape
+ 3 Parity
+
+_Connection with High Speed Channel_
+
+The high speed channel directs the tape control, and word transfer, just
+as a program would. A unit is first started reading or writing. The high
+speed channel is given the memory location of the information, and the
+number of registers the words read or written will occupy. The channel
+effects the information transfer. Thus, a high speed channel connected
+to a tape control handles the programming for the unit word transfers.
+
+Completion of the block transfer is signified by either setting a
+program flag, or entering the sequence break.
+
+_Connection with Sequence Break System_
+
+When the TC is connected to the Sequence Break System, the program is
+automatically interrupted each time an MPS command needs to be given.
+
+Programming is unaffected during reading and a record may be read with
+no flags set. The TC initiates breaks so that an MPS may be given in
+time.
+
+Similarly, the break is initiated during writing each time an MPS needs
+to be given.
+
+_Motion Command Summary_
+
+ _Time before _Time between _Time after End of _Flags that
+ first MPS_ MPS's_ Record to deselect_ may be set_
+
+ MWA 3 ms. 400 us. 10 ms. RWF (if unit
+ MWB (longer time is deselected
+ causes deselection) and MPS given,
+ or unit becomes
+ unavailable),
+ Parity, EOT.
+
+ MRA 7 ms. < 400 us. 5 ms. RWF, (if
+ MRB (longer time information
+ misses information, is missed, or
+ and unit becomes
+ rwc set) unavailable),
+ EOT, EOR,
+ Parity.
+
+ MBA - - 10 ms. RWF (if unit
+ MBB becomes
+ unavailable),
+ EOR, EOT.
+
+
+CATHODE-RAY-TUBE DISPLAY
+
+The PDP-3 Cathode Ray Tube Display is useful for presentation of
+graphical or tabular information to the operator. It uses a 16 inch
+round tube with magnetic deflection. For each In-Out transfer order, one
+point is displayed at the position indicated by the In-Out Register.
+Bits 0-9 of the IO indicate the X coordinate of the position, and bits
+18-27 indicate the Y coordinate. The display takes 60 microseconds.
+
+An additional display option is a Light Pen. By use of this device the
+computer is signaled that the operator is interested in the last point
+displayed. Thus the program can take appropriate action such as changing
+the display or shifting operation to another program.
+
+A smaller display is available. This display uses a five inch, high
+resolution cathode ray tube. The tube is equipped with a mounting bezel
+to accept a camera or photomultiplier device. The operation of this
+display is similar to that of the 16 inch, except that 12 bits are
+decoded for each axis.
+
+
+REAL TIME CLOCK
+
+A special input register may be connected to operate as a Real Time
+Clock. This is a counting register operated by a crystal controlled
+oscillator. The clock can be reset to zero by manual operation. A toggle
+switch interlock prevents an accidental reset. The state of this counter
+may be read at any time by the appropriate In-Out Transfer instruction.
+
+
+LINE PRINTER
+
+A 72 column Anelex printer and control are available as an option for
+PDP-3. The control contains a one line buffer. This buffer is cleared by
+the completion of an order to space the paper one position (psp). The
+buffer is filled from the In-Out Register by a succession of 12 load
+buffer orders (plb). The first plb will put the six characters
+represented by C(IO) in the leading (left-hand) column positions of the
+buffer. After the buffer is loaded, the order, print (pnt), is given.
+
+
+
+
+UTILITY PROGRAMS
+
+
+FRAP-3 - The Assembly Program
+
+An assembler or compiler prepares a machine language tape suitable for
+direct interpretation by the computer from a program tape in operator
+language. Generally speaking, one statement accepted by FRAP produces
+one instruction for the machine. A single statement written for the
+PDP-3 compiler, DECAL-3, may cause several instructions to be written.
+Thus, FRAP causes a 1 for 1 mapping of instructions for statements while
+DECAL may produce many instructions from one statement.
+
+In addition to allowing program tapes to be prepared with off line
+equipment, an assembly program has other functions. Normally, the
+machine would require 36 bits or 12 octal digits to be written for each
+instruction used in the machine. FRAP allows mnemonic symbols to be used
+for the instructions. These mnemonic symbols aid the programmer by
+representing the instruction in an easily remembered form.
+
+In addition to allowing mnemonic symbols to represent the instructions,
+variable length sequences of alphanumeric characters may be used to
+represent memory addresses in symbolic form. The assembly program does
+the address bookkeeping for the programmer. A short example of a FRAP
+program is on Page 29.
+
+Since few characters limit or control the format of instructions written
+in FRAP-3 language, it is possible to write instructions in almost any
+format or style.
+
+FRAP-3 may also be used to prepare tapes for interpretive programming,
+since arbitrary definitions for operation code symbols are permitted.
+
+A feature useful both for ease of programming and for machine simulation
+is the ability to call for a series of instructions (macro-instruction)
+to be written. Frequently used instruction sequences thus need only to
+be defined once.
+
+
+DECAL - The Compiler Program
+
+DECAL-3 (Digital Equipment Compiler, Assembler, and Linking loader for
+PDP-3) is an integrated programming system for PDP-3. It incorporates in
+one system all of the essential features of advanced assemblers,
+compilers, and loaders.
+
+DECAL is both an assembler and compiler. It combines the one-to-one
+translation facilities of an assembler, and the one-to-many translation
+facilities of a formula translation compiler. Problem oriented language
+statements may be freely intermixed with symbolic machine language
+instructions. A flexible loader is available to allow the specification
+of program location at load time. The programmer may specify that
+certain variables and constants are "systems" variables and constants.
+The symbols so defined are universally used in a system of many
+routines. Thus, communications between parts of a major program is
+facilitated even though these parts may be compiled separately. Storage
+requirements for a large program are lessened by this technique.
+
+DECAL is an open-ended programming system and can be modified without a
+detailed understanding of the internal operation. This is achieved by
+means of a recursive definition facility based on a skeleton compiler
+with a small set of logical capabilities. The skeleton compiler acts as
+a bootstrap for introducing more sophisticated facilities.
+
+The compiler will be delivered with a fully defined subset of formula
+translation operators. Additional subsets may be defined by the user to
+best fit his source language.
+
+
+FLOATING POINT SUBROUTINES
+
+A set of subroutines are provided with the PDP-3 to perform floating
+point arithmetic. In these, the PDP-3 36 bit word is divided to form a
+27 bit mantissa, a, and 9 bit exponent, b. Numbers, thus, appear in the
+form: k = ax2^b where, a, is considered to be in fractional form in the
+range 1/2 <= a < 1, and b is an integer, 0 <= b < 29. This gives number,
+k, the range 10^{-76} < k < 10^{+76}.
+
+The subroutines are called with one operand in the accumulator. After
+the subroutine has been executed, the accumulator contains the answer.
+Thus floating point numbers are essentially handled as regular logical
+works. The format of the number allows magnitude comparisons to be made
+by conventional arithmetic as bit 0 is the sign of the number, bits 1 to
+9 the exponent, and the remaining 26 bits, together with the sign bit,
+the mantissa in ones complement arithmetic. The arithmetic subroutines
+are: add, subtract, multiply, divide, convert a floating point number to
+binary, convert a binary number to a floating number. Additional
+routines form: [square root of x], e^x, ln x, sine(~pi~/2)x,
+cos(~pi~/2)x, tan^{-1}x. There are also programs to convert between
+floating decimal numbers and PDP-3 floating numbers.
+
+Routines which require two operands, e.g., add, subtract, multiply and
+divide, require an index register to specify the address of the second
+operand. An index register also specifies parameters in data
+conversions, e.g., the position of the binary point when converting a
+binary number to a standard floating number.
+
+Using the floating point subroutines, additional routines may be written
+which handle complex floating numbers and vector and matrix algebra.
+
+
+MAINTENANCE ROUTINES
+
+Maintenance Routines are used exclusively to check the operation of the
+machine. These routines are operated while varying the bias supply
+voltages, and thus a check is made on possible degradation of all
+components which would affect the operation of the machine.
+
+
+MISCELLANEOUS ROUTINES
+
+A variety of additional programs are provided with PDP-3.
+
+One of the more important programs is the Typewriter Interrogator
+Program (TIP). TIP allows the typewriter to be used most effectively as
+an input-output link by which programs and data are examined and
+modified. The features include request for printing of a series of
+registers, interrogation and modification of the contents of registers,
+and the ability to request new tapes after programs have been suitably
+modified. Communication is done completely via the typewriter in either
+octal numbers, decimal numbers, or alphanumeric codes. Register contents
+are presented in similar form.
+
+Other miscellaneous routines handle arithmetic processes, e.g., number
+conversions, and communication with the input or output devices. These
+routines include various format print outs, paper tape and magnetic tape
+read in programs, and display subroutines.
+
+ * * * * *
+
+
+
+
+[Illustration: SYSTEM BLOCK DIAGRAM FIGURE 1]
+
+[Illustration: INSTRUCTION FORMAT FIGURE 2]
+
+[Illustration: FIGURE 3]
+
+ * * * * *
+
+
+
+
+Transcriber's Notes:
+
+C (X) and C(X) standardized to C(X).
+
+usec and usec. standardized to usec. throughout text.
+
+Other changes to the original text are listed below.
+
+Figure 4 is referred to in the text, but a copy could not be located.
+
+Underlined Text is enclosed by underscores.
+
+Superscripts are marked with carats x^2 and y^{-3}.
+
+Greek symbols are surrounded by ~tildes~.
+
+
+Transcriber Changes:
+
+TABLE OF CONTENTS: Originally 'Operation' (=Operating= Speeds)
+
+TABLE OF CONTENTS: Originally 'Frap' (=FRAP=)
+
+TABLE OF CONTENTS: Originally 'Routines' (=Subroutines=)
+
+Page 4: Originally 'theoperate' (while a program is operating by means
+ of =the operate= instruction.)
+
+Page 7: Added comma (The instruction base address, =Y,= is in octal
+ digits 7 through 11.)
+
+Page 8: Standardized from 'sub-routines' (The conversion of decimal
+ numbers into the binary system for use by the machine may be
+ performed automatically by =subroutines=.)
+
+Page 8: Standardized from 'sub-routine' (the output conversion of
+ binary numbers into decimals is done by =subroutine=.)
+
+Page 16: Added comma (This instruction will shift the contents of the
+ combined register right N =positions,= where N is octal digits
+ 7-11 of the instruction word.)
+
+Page 16: Moved comma. Was 'left, N positions' (This instruction will
+ shift the contents of the combined registers =left N positions,=
+ where N is octal digits 7-11 of the instruction word.)
+
+Page 19: Was 'know' (Most in-out operations require a =known= minimum
+ time before completion.)
+
+Page 20: Removed inconsistent comma (These are the Test Address (15
+ bits), the Test Word (36 bits), and the Sense =Switches= (6
+ bits).)
+
+Page 21: Changed comma to period (the computer will halt at the
+ completion of each memory =cycle.= This switch is particularly
+ useful in debugging programs.)
+
+Page 28: Was 'tpae' (during reading or backspacing when the =tape=
+ comes to an end of record gap.)
+
+Page 29: Standardized from 'de-select' (the unit will =deselect= (or
+ disconnect).)
+
+Page 35: Was 'propares' (An assembler or compiler =prepares= a machine
+ language tape suitable for direct interpretation)
+
+Page 35: Removed comma (Frequently used instruction =sequences= thus
+ need only to be defined once.)
+
+Page 37: Was 'Routiines' (=Routines= which require two operands, e.g.,
+ add, subtract, multiply and divide)
+
+
+
+
+
+End of the Project Gutenberg EBook of Preliminary Specifications: Programmed
+Data Processor Model Three (PDP-3), by Digital Equipment Corporation
+
+*** END OF THIS PROJECT GUTENBERG EBOOK PDP MODEL THREE (PDP-3) ***
+
+***** This file should be named 29461.txt or 29461.zip *****
+This and all associated files of various formats will be found in:
+ https://www.gutenberg.org/2/9/4/6/29461/
+
+Produced by Gerard Arthus, Katherine Ward, and the Online
+Distributed Proofreading Team at https://www.pgdp.net
+
+
+Updated editions will replace the previous one--the old editions
+will be renamed.
+
+Creating the works from public domain print editions means that no
+one owns a United States copyright in these works, so the Foundation
+(and you!) can copy and distribute it in the United States without
+permission and without paying copyright royalties. Special rules,
+set forth in the General Terms of Use part of this license, apply to
+copying and distributing Project Gutenberg-tm electronic works to
+protect the PROJECT GUTENBERG-tm concept and trademark. Project
+Gutenberg is a registered trademark, and may not be used if you
+charge for the eBooks, unless you receive specific permission. If you
+do not charge anything for copies of this eBook, complying with the
+rules is very easy. You may use this eBook for nearly any purpose
+such as creation of derivative works, reports, performances and
+research. They may be modified and printed and given away--you may do
+practically ANYTHING with public domain eBooks. Redistribution is
+subject to the trademark license, especially commercial
+redistribution.
+
+
+
+*** START: FULL LICENSE ***
+
+THE FULL PROJECT GUTENBERG LICENSE
+PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK
+
+To protect the Project Gutenberg-tm mission of promoting the free
+distribution of electronic works, by using or distributing this work
+(or any other work associated in any way with the phrase "Project
+Gutenberg"), you agree to comply with all the terms of the Full Project
+Gutenberg-tm License (available with this file or online at
+https://gutenberg.org/license).
+
+
+Section 1. General Terms of Use and Redistributing Project Gutenberg-tm
+electronic works
+
+1.A. By reading or using any part of this Project Gutenberg-tm
+electronic work, you indicate that you have read, understand, agree to
+and accept all the terms of this license and intellectual property
+(trademark/copyright) agreement. If you do not agree to abide by all
+the terms of this agreement, you must cease using and return or destroy
+all copies of Project Gutenberg-tm electronic works in your possession.
+If you paid a fee for obtaining a copy of or access to a Project
+Gutenberg-tm electronic work and you do not agree to be bound by the
+terms of this agreement, you may obtain a refund from the person or
+entity to whom you paid the fee as set forth in paragraph 1.E.8.
+
+1.B. "Project Gutenberg" is a registered trademark. It may only be
+used on or associated in any way with an electronic work by people who
+agree to be bound by the terms of this agreement. There are a few
+things that you can do with most Project Gutenberg-tm electronic works
+even without complying with the full terms of this agreement. See
+paragraph 1.C below. There are a lot of things you can do with Project
+Gutenberg-tm electronic works if you follow the terms of this agreement
+and help preserve free future access to Project Gutenberg-tm electronic
+works. See paragraph 1.E below.
+
+1.C. The Project Gutenberg Literary Archive Foundation ("the Foundation"
+or PGLAF), owns a compilation copyright in the collection of Project
+Gutenberg-tm electronic works. Nearly all the individual works in the
+collection are in the public domain in the United States. If an
+individual work is in the public domain in the United States and you are
+located in the United States, we do not claim a right to prevent you from
+copying, distributing, performing, displaying or creating derivative
+works based on the work as long as all references to Project Gutenberg
+are removed. Of course, we hope that you will support the Project
+Gutenberg-tm mission of promoting free access to electronic works by
+freely sharing Project Gutenberg-tm works in compliance with the terms of
+this agreement for keeping the Project Gutenberg-tm name associated with
+the work. You can easily comply with the terms of this agreement by
+keeping this work in the same format with its attached full Project
+Gutenberg-tm License when you share it without charge with others.
+
+1.D. The copyright laws of the place where you are located also govern
+what you can do with this work. Copyright laws in most countries are in
+a constant state of change. If you are outside the United States, check
+the laws of your country in addition to the terms of this agreement
+before downloading, copying, displaying, performing, distributing or
+creating derivative works based on this work or any other Project
+Gutenberg-tm work. The Foundation makes no representations concerning
+the copyright status of any work in any country outside the United
+States.
+
+1.E. Unless you have removed all references to Project Gutenberg:
+
+1.E.1. The following sentence, with active links to, or other immediate
+access to, the full Project Gutenberg-tm License must appear prominently
+whenever any copy of a Project Gutenberg-tm work (any work on which the
+phrase "Project Gutenberg" appears, or with which the phrase "Project
+Gutenberg" is associated) is accessed, displayed, performed, viewed,
+copied or distributed:
+
+This eBook is for the use of anyone anywhere at no cost and with
+almost no restrictions whatsoever. You may copy it, give it away or
+re-use it under the terms of the Project Gutenberg License included
+with this eBook or online at www.gutenberg.org
+
+1.E.2. If an individual Project Gutenberg-tm electronic work is derived
+from the public domain (does not contain a notice indicating that it is
+posted with permission of the copyright holder), the work can be copied
+and distributed to anyone in the United States without paying any fees
+or charges. If you are redistributing or providing access to a work
+with the phrase "Project Gutenberg" associated with or appearing on the
+work, you must comply either with the requirements of paragraphs 1.E.1
+through 1.E.7 or obtain permission for the use of the work and the
+Project Gutenberg-tm trademark as set forth in paragraphs 1.E.8 or
+1.E.9.
+
+1.E.3. If an individual Project Gutenberg-tm electronic work is posted
+with the permission of the copyright holder, your use and distribution
+must comply with both paragraphs 1.E.1 through 1.E.7 and any additional
+terms imposed by the copyright holder. Additional terms will be linked
+to the Project Gutenberg-tm License for all works posted with the
+permission of the copyright holder found at the beginning of this work.
+
+1.E.4. Do not unlink or detach or remove the full Project Gutenberg-tm
+License terms from this work, or any files containing a part of this
+work or any other work associated with Project Gutenberg-tm.
+
+1.E.5. Do not copy, display, perform, distribute or redistribute this
+electronic work, or any part of this electronic work, without
+prominently displaying the sentence set forth in paragraph 1.E.1 with
+active links or immediate access to the full terms of the Project
+Gutenberg-tm License.
+
+1.E.6. You may convert to and distribute this work in any binary,
+compressed, marked up, nonproprietary or proprietary form, including any
+word processing or hypertext form. However, if you provide access to or
+distribute copies of a Project Gutenberg-tm work in a format other than
+"Plain Vanilla ASCII" or other format used in the official version
+posted on the official Project Gutenberg-tm web site (www.gutenberg.org),
+you must, at no additional cost, fee or expense to the user, provide a
+copy, a means of exporting a copy, or a means of obtaining a copy upon
+request, of the work in its original "Plain Vanilla ASCII" or other
+form. Any alternate format must include the full Project Gutenberg-tm
+License as specified in paragraph 1.E.1.
+
+1.E.7. Do not charge a fee for access to, viewing, displaying,
+performing, copying or distributing any Project Gutenberg-tm works
+unless you comply with paragraph 1.E.8 or 1.E.9.
+
+1.E.8. You may charge a reasonable fee for copies of or providing
+access to or distributing Project Gutenberg-tm electronic works provided
+that
+
+- You pay a royalty fee of 20% of the gross profits you derive from
+ the use of Project Gutenberg-tm works calculated using the method
+ you already use to calculate your applicable taxes. The fee is
+ owed to the owner of the Project Gutenberg-tm trademark, but he
+ has agreed to donate royalties under this paragraph to the
+ Project Gutenberg Literary Archive Foundation. Royalty payments
+ must be paid within 60 days following each date on which you
+ prepare (or are legally required to prepare) your periodic tax
+ returns. Royalty payments should be clearly marked as such and
+ sent to the Project Gutenberg Literary Archive Foundation at the
+ address specified in Section 4, "Information about donations to
+ the Project Gutenberg Literary Archive Foundation."
+
+- You provide a full refund of any money paid by a user who notifies
+ you in writing (or by e-mail) within 30 days of receipt that s/he
+ does not agree to the terms of the full Project Gutenberg-tm
+ License. You must require such a user to return or
+ destroy all copies of the works possessed in a physical medium
+ and discontinue all use of and all access to other copies of
+ Project Gutenberg-tm works.
+
+- You provide, in accordance with paragraph 1.F.3, a full refund of any
+ money paid for a work or a replacement copy, if a defect in the
+ electronic work is discovered and reported to you within 90 days
+ of receipt of the work.
+
+- You comply with all other terms of this agreement for free
+ distribution of Project Gutenberg-tm works.
+
+1.E.9. If you wish to charge a fee or distribute a Project Gutenberg-tm
+electronic work or group of works on different terms than are set
+forth in this agreement, you must obtain permission in writing from
+both the Project Gutenberg Literary Archive Foundation and Michael
+Hart, the owner of the Project Gutenberg-tm trademark. Contact the
+Foundation as set forth in Section 3 below.
+
+1.F.
+
+1.F.1. Project Gutenberg volunteers and employees expend considerable
+effort to identify, do copyright research on, transcribe and proofread
+public domain works in creating the Project Gutenberg-tm
+collection. Despite these efforts, Project Gutenberg-tm electronic
+works, and the medium on which they may be stored, may contain
+"Defects," such as, but not limited to, incomplete, inaccurate or
+corrupt data, transcription errors, a copyright or other intellectual
+property infringement, a defective or damaged disk or other medium, a
+computer virus, or computer codes that damage or cannot be read by
+your equipment.
+
+1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the "Right
+of Replacement or Refund" described in paragraph 1.F.3, the Project
+Gutenberg Literary Archive Foundation, the owner of the Project
+Gutenberg-tm trademark, and any other party distributing a Project
+Gutenberg-tm electronic work under this agreement, disclaim all
+liability to you for damages, costs and expenses, including legal
+fees. YOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT
+LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE
+PROVIDED IN PARAGRAPH F3. YOU AGREE THAT THE FOUNDATION, THE
+TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE
+LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR
+INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH
+DAMAGE.
+
+1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a
+defect in this electronic work within 90 days of receiving it, you can
+receive a refund of the money (if any) you paid for it by sending a
+written explanation to the person you received the work from. If you
+received the work on a physical medium, you must return the medium with
+your written explanation. The person or entity that provided you with
+the defective work may elect to provide a replacement copy in lieu of a
+refund. If you received the work electronically, the person or entity
+providing it to you may choose to give you a second opportunity to
+receive the work electronically in lieu of a refund. If the second copy
+is also defective, you may demand a refund in writing without further
+opportunities to fix the problem.
+
+1.F.4. Except for the limited right of replacement or refund set forth
+in paragraph 1.F.3, this work is provided to you 'AS-IS' WITH NO OTHER
+WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
+WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR ANY PURPOSE.
+
+1.F.5. Some states do not allow disclaimers of certain implied
+warranties or the exclusion or limitation of certain types of damages.
+If any disclaimer or limitation set forth in this agreement violates the
+law of the state applicable to this agreement, the agreement shall be
+interpreted to make the maximum disclaimer or limitation permitted by
+the applicable state law. The invalidity or unenforceability of any
+provision of this agreement shall not void the remaining provisions.
+
+1.F.6. INDEMNITY - You agree to indemnify and hold the Foundation, the
+trademark owner, any agent or employee of the Foundation, anyone
+providing copies of Project Gutenberg-tm electronic works in accordance
+with this agreement, and any volunteers associated with the production,
+promotion and distribution of Project Gutenberg-tm electronic works,
+harmless from all liability, costs and expenses, including legal fees,
+that arise directly or indirectly from any of the following which you do
+or cause to occur: (a) distribution of this or any Project Gutenberg-tm
+work, (b) alteration, modification, or additions or deletions to any
+Project Gutenberg-tm work, and (c) any Defect you cause.
+
+
+Section 2. Information about the Mission of Project Gutenberg-tm
+
+Project Gutenberg-tm is synonymous with the free distribution of
+electronic works in formats readable by the widest variety of computers
+including obsolete, old, middle-aged and new computers. It exists
+because of the efforts of hundreds of volunteers and donations from
+people in all walks of life.
+
+Volunteers and financial support to provide volunteers with the
+assistance they need are critical to reaching Project Gutenberg-tm's
+goals and ensuring that the Project Gutenberg-tm collection will
+remain freely available for generations to come. In 2001, the Project
+Gutenberg Literary Archive Foundation was created to provide a secure
+and permanent future for Project Gutenberg-tm and future generations.
+To learn more about the Project Gutenberg Literary Archive Foundation
+and how your efforts and donations can help, see Sections 3 and 4
+and the Foundation web page at https://www.pglaf.org.
+
+
+Section 3. Information about the Project Gutenberg Literary Archive
+Foundation
+
+The Project Gutenberg Literary Archive Foundation is a non profit
+501(c)(3) educational corporation organized under the laws of the
+state of Mississippi and granted tax exempt status by the Internal
+Revenue Service. The Foundation's EIN or federal tax identification
+number is 64-6221541. Its 501(c)(3) letter is posted at
+https://pglaf.org/fundraising. Contributions to the Project Gutenberg
+Literary Archive Foundation are tax deductible to the full extent
+permitted by U.S. federal laws and your state's laws.
+
+The Foundation's principal office is located at 4557 Melan Dr. S.
+Fairbanks, AK, 99712., but its volunteers and employees are scattered
+throughout numerous locations. Its business office is located at
+809 North 1500 West, Salt Lake City, UT 84116, (801) 596-1887, email
+business@pglaf.org. Email contact links and up to date contact
+information can be found at the Foundation's web site and official
+page at https://pglaf.org
+
+For additional contact information:
+ Dr. Gregory B. Newby
+ Chief Executive and Director
+ gbnewby@pglaf.org
+
+
+Section 4. Information about Donations to the Project Gutenberg
+Literary Archive Foundation
+
+Project Gutenberg-tm depends upon and cannot survive without wide
+spread public support and donations to carry out its mission of
+increasing the number of public domain and licensed works that can be
+freely distributed in machine readable form accessible by the widest
+array of equipment including outdated equipment. Many small donations
+($1 to $5,000) are particularly important to maintaining tax exempt
+status with the IRS.
+
+The Foundation is committed to complying with the laws regulating
+charities and charitable donations in all 50 states of the United
+States. Compliance requirements are not uniform and it takes a
+considerable effort, much paperwork and many fees to meet and keep up
+with these requirements. We do not solicit donations in locations
+where we have not received written confirmation of compliance. To
+SEND DONATIONS or determine the status of compliance for any
+particular state visit https://pglaf.org
+
+While we cannot and do not solicit contributions from states where we
+have not met the solicitation requirements, we know of no prohibition
+against accepting unsolicited donations from donors in such states who
+approach us with offers to donate.
+
+International donations are gratefully accepted, but we cannot make
+any statements concerning tax treatment of donations received from
+outside the United States. U.S. laws alone swamp our small staff.
+
+Please check the Project Gutenberg Web pages for current donation
+methods and addresses. Donations are accepted in a number of other
+ways including including checks, online payments and credit card
+donations. To donate, please visit: https://pglaf.org/donate
+
+
+Section 5. General Information About Project Gutenberg-tm electronic
+works.
+
+Professor Michael S. Hart was the originator of the Project Gutenberg-tm
+concept of a library of electronic works that could be freely shared
+with anyone. For thirty years, he produced and distributed Project
+Gutenberg-tm eBooks with only a loose network of volunteer support.
+
+
+Project Gutenberg-tm eBooks are often created from several printed
+editions, all of which are confirmed as Public Domain in the U.S.
+unless a copyright notice is included. Thus, we do not necessarily
+keep eBooks in compliance with any particular paper edition.
+
+
+Most people start at our Web site which has the main PG search facility:
+
+ https://www.gutenberg.org
+
+This Web site includes information about Project Gutenberg-tm,
+including how to make donations to the Project Gutenberg Literary
+Archive Foundation, how to help produce our new eBooks, and how to
+subscribe to our email newsletter to hear about new eBooks.
diff --git a/29461.zip b/29461.zip
new file mode 100644
index 0000000..9a1b672
--- /dev/null
+++ b/29461.zip
Binary files differ
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..6312041
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,11 @@
+This eBook, including all associated images, markup, improvements,
+metadata, and any other content or labor, has been confirmed to be
+in the PUBLIC DOMAIN IN THE UNITED STATES.
+
+Procedures for determining public domain status are described in
+the "Copyright How-To" at https://www.gutenberg.org.
+
+No investigation has been made concerning possible copyrights in
+jurisdictions other than the United States. Anyone seeking to utilize
+this eBook outside of the United States should confirm copyright
+status under the laws that apply to them.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..bdaf142
--- /dev/null
+++ b/README.md
@@ -0,0 +1,2 @@
+Project Gutenberg (https://www.gutenberg.org) public repository for
+eBook #29461 (https://www.gutenberg.org/ebooks/29461)