PROGRAMMED DATA PROCESSOR-1 HANDBOOK Copyright 1960, 1961, 1962, 1963 by Digital Equipment Corporation DIGITAL EQUIPMENT CORPORATION o MAYNARD, MASSACHUSETTS Figures * Programmed Data Processor 1 * PDP-1 Picture #1 from sunsite.unc.edu * PDP-1 Picture #2 from sunsite.unc.edu * PDP-1 Control Panel * High Speed Perforated Tape Reader * Perforated Tape Punch * Alphanumeric Typewriter Keyboard * Sequence Break Indicator Panel * Precision CRT Display with Light Pen * Precision CRT Display Type 30 * Ultra-Precision CRT * Magnetic Tape Control and Transports TABLE OF CONTENTS * INTRODUCTION * PROGRAMMING PDP-1 * STANDARD AND OPTIONAL EQUIPMENT o Standard Equipment o Central Processor Options o Input-Output Equipment Options * PROGRAM LIBRARY * APPENDIX INTRODUCTION The Programmed Data Processor (PDP-1) is a high speed, solid state digital computer designed to operate with many types of input-output devices with no internal machine changes. It is a single address, single instruction, stored program computer with powerful program features. Five-megacycle circuits, a magnetic core memory and fully parallel processing make possible a computation rate of 100,000 additions per second. The PDP-1 is unusually versatile. It is easy to install, operate and maintain. Conventional 110-volt power is used, neither air conditioning nor floor reinforcement is necessary, and preventive maintenance is provided for by built-in marginal checking circuits. PDP-1 circuits are based on the designs of DEC's highly successful and reliable System Modules. Flip-flops and most switches use saturating transistors. Primary active elements are Micro-Alloy-Diffused transistors. The entire computer occupies only 17 square feet of floor space. It consists of four equipment frames, one of which is used as the operating station. CENTRAL PROCESSOR The Central Processor contains the control, arithmetic and memory addressing elements, and the memory buffer register. The word length is 18 binary digits. Instructions are performed in multiples of the memory cycle time of five microseconds. Add, subtract, deposit, and load, for example, are two-cycle instructions requiring 10 microseconds. Multiplication requires and average of 20 microseconds. Program features include: single address instructions, multiple step indirect addressing and logical arithmetic commands. Console features include: flip-flop indicators grouped for convenient octal reading, six program flags for automatic setting and computer sensing, and six sense switches for manual setting and computer sensing. MEMORY SYSTEM The coincident-current, magnetic core memory of a standard PDP-1 holds 4096 words of 18 bits each. Memory capacity may be readily expanded, in increments of 4096 words, to a maximum of 65,536 words. The read-rewrite time of the memory is five microseconds, the basic computer rate. Driving currents are automatically adjusted to compensate for temperature variations between 50 and 110 degrees Fahrenheit. The core memory storage may be supplemented by up to 24 magnetic tape transports. INPUT-OUTPUT PDP-1 is designed to operate a variety of buffered input-output devices. Standard equipment consistes of a perforated tape reader with a read speed of 400 lines per second, and alphanuermic typewriter for on-line operation in both input and output, and a perforated tape punch (alphanumeric or binary) with a speed of 63 lines per second. A variety of optional equipment is available, including the following: * Precision CRT Display Type 30 * Ultra-Precision CRT Display Type 31 * Symbol Generator Type 33 * Light Pen Type 32 * Oscilloscope Display Type 34 * Card Punch Control Type 40-1 * Card Reader and Control Type 421 * Magnetic Tape Transport Type 50 * Programmed Magnetic Tape Control Type 51 * Automatic Magnetic Tape Control Type 52 * Automatic Magnetic Tape Control Type 510 * Parallel Drum Type 23 * Automatic Line Printer and Control Type 64 * 18-bit Real Time Clock * 18-bit Output Relay Buffer Type 140 * Multiplexed A-D Converter Type 138/139 All in-out operations are performed through the In-Out Register or through the high speed input-output channels. The PDP-1 is also available with the optional Sequence Break System. This is a multi-channel priority interrupt feature which permits concurrent operation of several in-out devices. A one-channel Sequence Break System is included in the standard PDP-1. Optional Sequence Break Systems consist of 16, 32, 64, 128, and 256 channels. PROGRAMMING PDP-1 The Central Processor of PDP-1 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 and the In-Out Register, performs the arithmetic operations. The Memory Addressing Element, which includes the Program Counter and the Memory Address Register, performs address bookkeeping and modification. The powerful programming features of PDP-1 include: * Multiple step indirect addressing * Boolean operations * Twelve variations of arithmetic and logical shifting, operating on 18 or 36 bits * Fifteen basic conditional skip instructions (expandable by combining to form the inclusive OR of the separate conditions) * Three different subroutine calling instructions * Micro-coded operate instructions * Index and Index-Conditional instructions * Execute instruction * Load-immediate instructions * Built-in multiply and divide instructions Six independent flip-flops, called program flags, are available for use as program switches or special in-out synchronizers. Multiply and divide operate in about 20 and 35 microseconds respectively. NUMBER SYSTEM The PDP-1 is a "fixed point" machine using binary arithmetic. Negative numbers are represented as the one's complement of the positive numbers. Bit 0 is the sign bit which is ZERO for positive numbers. Bits 1 to 17 are magnitude bits, with Bit 1 being the most significant and Bit 17 being the least significant. To avoid a frequent point of confusion in one's complement arithmetic, the representation of -0 is automatically changed to +0 in certain arithmetic operations. The conversion of decimal numbers into the binary system for use by the machine is performed by subroutines. Similarly the output conversion of binary numbers into decimals is done by subroutine. Operations for floating point numbers are handled by interpretive programming. INSTRUCTION FORMAT The Bits 0 through 4 define the instruction code; thus there are 32 possible instruction codes, not all of which are used. The instructions may be divided into two classes: * Memory Reference instructions * Augmented instructions In the memory reference instructions, Bit 5 is the indirect address bit. The instruction memory address, Y, is in Bits 6 through 17. These digits are sufficient to address 4096 words of memory. The augmented instructions use Bits 5 through 17 to specify variations of the basic instruction. For example, in the shift instruction, Bit 5 specifies direction of shift, Bit 6 specifies the character of the shift (arithmetic or logical), Bits 7 and 8 enable the registers (01 = AC, 10 = IO, and 11 = both) and Bits 9 through 17 specify the number of steps. INDIRECT ADDRESSING A memory reference instruction which is to use an indirect address will have a ONE in Bit 5 of the instruction word. The original address, Y, of the instruction will not be used to locate the operand, jump location, etc., of the instruction, as in the normal case. Instead it is used to locate a memory register whose contents in Bits 6 through 17 will be used as the address of the original instruction. Thus, Y is not the location of the operand but the location of the location of the operand. If the memory register containing the indirect address also has a ONE in bit 5, the indirect addressing procedure is repeated and a third address is located. There is no limit to the number of times this process can be repeated. OPERATING SPEEDS Operating times of PDP-1 instructions are 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. The jump, augmented and combined augmented instructions need only one call on memory and are performed in 5 microseconds. 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. Each step of indirect addressing requires an additional 5 microseconds. MANUAL CONTROLS The Console of PDP-1 has controls and indicators for the use of the operator. All active registers 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. Three banks of toggle switches are available on the Console. These are the Address Switches (16 bits), the Test Word Switches (18 bits), and the Sense Switches (6 bits). The first two are primarily used in conjunction with the operating push buttons. The Sense Switches are present for manual intervention. The use of these switches is determnined by the program. CONSOLE LEVER SWITCHES START The first instruction executed comes from the memory location indicated by the Address and Extension Switches. If Start is pushed up, the computer enters the Sequence Break Mode before starting; if pushed down, the computer leaves the Sequence Break Mode. In either case, the overflow flip-flop is cleared and the Extend Switch condition is read into the Extend flip-flop. STOP The computer will come to a halt at the completion of the current memory cycle. CONTINUE The computer will resume operation starting from the point where it was stopped. EXAMINE The contents of the memory register indicated by the Address and Extension Switches will be displayed in the Accumulator and Memory Buffer lights. DEPOSIT The word in the Test Word Switches will be put in the memory location indicated by the Address and Extension Switches. READ IN The Perforated Tape Reader will start operating in the Read-In mode. READER When pushed up, turns Perforated Tape Reader motor on; when pushed down, turns it off. TAPE FEED When switch is pressed, Tape Punch feeds blank tape. CONSOLE TOGGLE SWITCHES EXTEND When Start or Read In is pressed, the state of this switch is read into the Extend flip-flop. EXTENSION Specify which memory module will be used when Start, Examine, Deposit, or Read In are pressed. ADDRESS Specify memory location for Start, Examine, and Deposit. TEST WORD Specifies the word to be put in memory when Deposit is pressed. Can be read into the AC under program control. SENSE SWITCHES Convenient switches whose conditions may be individually tested by the program. CONSOLE INDICATOR LIGHTS RUN On while the computer is executing instructions. CYCLE On after the completion of one or more instruction cycles with oneor more to follow. DEFER On immediately prior to and during the execution of any deferred cycle. HIGH SPEED CYCLE On while the computer is executing a High Speed Channel Data Transfer. BREAK COUNTER 1 On while the computer is executing cycle 1 (deposit Accumulator) and cycle 3 (deposit Input-Output Register) of a sequence break. BREAK COUNTER 2 On while the computer is executing cycle 2 (deposit Program Counter) and cycle 3 of a sequence break. OVERFLOW On if overflow has occurred. (Can only be turned off or cleared by side} executing the Skip on Zero Overflow instruction or pressing Start.) READ IN On while the computer is reading punched tape in the Read-In mode. SEQUENCE BREAK On while the computer is in the Sequence Break mode. EXTEND On while the computer is in the Extend mode. IN-OUT HALT On while the computer is executing an Input-Output Transfer wait. IN-OUT COMMANDS On while in-out transfer instructions can be executed. IN-OUT SYNC On for the time between device completion and end of In-Out wait. PROGRAM FLAGS On after the computer has executred the Set Selected Program Flag instruction or an in-out device has been activated, indicating its readiness to be serviced. (Can only be turned off or cleared by executing the Clear Selected Program Flag instruction.) REGISTER INDICATOR LIGHTS PROGRAM COUNTER Displays 12 or 16 bits which represent the address of the next instruction to be executed. INSTRUCTION Displays 5 bits which represent the basic operation code of the instruction being executed. MEMORY ADDRESS Displays 12 or 16 bits which represent the address of the instruction being executed (during cycle 0) or the address of the operand (in succeeding cycles) MEMORY BUFFER Displays 18 bits which represent the instruction being executed (operation code and address part during cycle 0) or the 18-bit operand (in succeeding cycles) ACCUMULATOR Displays the 18 bits of the Accumulator which represent the results of arithmetic and logical operations. IN-OUT Displays the 18 bits of the Input-Output Register which represent information just transferred in or out of the computer or the results of certain arithmetic and logical operations Standard PDP-1 Instruction List This list includes the title of the instruction, the normal execution time of the instruction, (i.e., the time with no indirect address,) the mnemonic code of the instruction, and the operation code number. In the following list, the contents of a register are indicated by C(). Thus C(Y) means the contents of memory at Address Y; C(AC) means the contents of the Accumulator; C(IO) means the contents of the In-Out Register. An alphabetical and numerical listing of the instructions is contained on pages 62 to 67 (of the FrameMaker copy). MEMORY REFERENCE INSTRUCTIONS ARITHMETIC INSTRUCTIONS Add (10 /u/sec) add Y Operation Code 40 The new C(AC) are the sum of C(Y) and the original C(AC). The C(Y) are unchanged. The addition is performed with 1's complement arithmetic. If the sum of two like-signed numbers yields a result of the opposite sign, the overflow flip-flop will be set (see Skip Group instructions). A result of minus zero is changed to plus zero. Subtract (10 /u/sec) sub Y Operation Code 42 The new C(AC) are the original C(AC) minus the C(Y). The C(Y) are unchanged. The subtraction is performed using 1's complement arithmetic. When two unlike-signed numbers are subtracted, the sign of the result must agree with the sign of the original Accumulator, or overflow flip-flop will be set (see Skip Group instructions). A result of minus zero can exist in one instance only: (-0) - (+0) = (-0) Multiply (14 to 25 /u/sec) mul Y Operation Code 54 The product of C(AC) and C(Y) is formed in the AC and IO registers. The sign of the product is in the AC sign bit. IO Bit 17 also contains the sign of the product. The magnitude of the product is the 34-bit string from AC Bit 1 throuh IO Bit 16. The C(Y) are not affected by this instruction. If the entire product results in a minus zero it is changed to a plus zero. Divide (30 to 40 /u/sec, except on overflow, 12 /u/sec) div Y Operation Code 56 The dividend must be in the AC and IO registers in the form indicated in the instruction, Multiply. IO bit 17 is ignored. The divisor is the C(Y). At the completion of the instruction, the C(AC) are the quotient and the C(IO) are the remainder. The sign of the remainder (in IO bit zero) is the sign of the dividend. The instruction that follows a DIV will be skipped unless an overflow occurs. The C(Y) are not affected by this instruction. If the remainder or quotient result is minus zero, that value is changed to plus zero. If the magnitude of the high order part of the dividend is equal to or greater than the magnitude of the divisor, and overflow is indicated. In this case, the following instruction is not skipped. The original C(AC) and C(IO) are restored. The overflow flip-flop is not affected. Index (10 /u/sec) idx Y Operation Code 44 The C(Y) are replaced by C(Y) + 1 which are left in the Accumulator. The previous C(AC) are lost. Overflow is not indicated. If the original C(Y) equals the integer, -1, the result after indexing is plus zero. Index and Skip if Positive (10 /u/sec) isp Y Operation Code 46 The C(Y) are replaced by C(Y) + 1 which are left in the Accumulator. The previous C(AC) are lost. If, after the addition, the Accumulator is positive, the Program Counter is advanced one extra position and the next instruction in the sequence is skipped. Overflow is not indicated. If the original C(Y) equals the integer, -1, the result after indexing is plus zero and the skip takes place. LOGICAL INSTRUCTIONS Logical AND (10 /u/sec) and Y Operation Code 02 The bits of C(Y) operate on the corresponding bits of the Accumulator to form the logical AND. The result is left in the Accumulator. The C(Y) are unaffected by this instruction. LOGICAL AND TABLE AC Bit Y Bit Result ------------------------- 0 0 0 0 1 0 1 0 0 1 1 1 Exclusive OR (10 /u/sec) xor Y Operation Code 06 The bits of C(Y) operate on the corresponding bits of the Accumulator to form the exclusive OR. The result is left in the Accumulator. The C(Y) are unaffected by this order. EXCLUSIVE OR TABLE AC Bit Y Bit Result ------------------------- 0 0 0 0 1 1 1 0 1 1 1 0 Inclusive OR (10 /u/sec) ior Y Operation Code 04 The bits of C(Y) operate on the corresponding bits of the Accumulator to form the inclusive OR. The result is left in the Accumulator. The C(Y) are unaffected by this order. INCLUSIVE OR TABLE AC Bit Y Bit Result ------------------------- 0 0 0 0 1 1 1 0 1 1 1 1 GENERAL INSTRUCTIONS Load Accumulator (10 /u/sec) lac Y Operation Code 20 The C(Y) are placed in the Accumulator. The C(Y) are unchanged. The original C(AC) are lost Deposit Accumulator (10 /u/sec) dac Y Operation Code 24 The C(AC) replace the C(Y) in the memory. The C(AC) are left unchanged by this instruction. The C(Y) are lost. Deposit Address Part (10 /u/sec) dap Y Operation Code 26 Bits 6 through 17 of the Accumulator replace the corresponding digits of memory register Y. C(AC) are unchanged as are the contents of Bits 0 through 5 of Y. The original contents of Bits 6 through 17 of Y are lost. Deposit Instruction Part (10 /u/sec) dip Y Operation Code 30 Bits 0 through 5 of the Accumulator replace the corresponding digits of memory register Y. The Accumulator is unchanged as are bits 6 through 17 of Y. The original contents of Bits 0 through 5 of Y are lost. Load In-Out Register (10 /u/sec) lio Y Operation Code 22 The C(Y) are placed in the In-Out register. C(Y) are unchanged. The original C(IO) are lost. Deposit In-Out Register (10 /u/sec) dio Y Operation Code 32 The C(IO) replace the C(Y) in memory. The C(IO) are unaffected by this instruction. The original C(Y) are lost. Deposit Zero in Memory (10 /u/sec) dzm Y Operation Code 34 Clears (sets equal to plus zero) the contents of register Y. Execute (5 /u/sec plus time of instruction executed) xct Y Operation Code 10 The instruction located in register Y is executed. The Program Counter remains unchanged (unless a jump or skip were executed). If a skip instruction is executed (by xct y), the next instructions to be executed will be taken from the address of the xct y plus one or the the address of the xct y plus two depending on the skip condition. Execute may be indirectly addressed, and the instruction being executed may use indirect addressing. An xct instruction may execute other xct commands. Jump (5 /u/sec) jmp Y Operation Code 60 The next instruction executed will be taken from Memory Register Y. The Progra Counter is reset to Memory Address Y. The original contents of the Program Counter are lost. Jump and Save Program Counter (5 /u/sec) jsp Y Operation Code 62 The contents of the Program Counter are transferred to bits 6 through 17 of the AC. The state of the overflow flip-flop is transferred to bit zero, the condition of the Extend flip-flop to bit 1, and the contents of the Extended Program Counter to bits 2, 3, 4, and 5 of the AC. 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 Y. The next instruction executed will be taken from Memory Register Y. The original C(AC) are lost. Call Subroutine (10 /u/sec) cal Y Operation Code 16 The address part of the instruction, Y, is ignored. The contents of the AC are deposited in Memory Register 100. The contents of the Program Counter (holding the address of the instruction following the cal) are transferred to bits 6 through 17 of the AC. The state of the overflow flip-flop, the Extend flip-flop, and Extended Program Counter are saved as described under jsp. The next instruction executed is taken from Memory Register 101. The cal instruction requires that the indirect bit be zero. The instruction may be used as part of a master routine to call subroutines. Jump and Deposit Accumulator (10 /u/sec) jda Y Operation Code 17 The contents of the AC are deposited in Memory Register Y. The contents of the Program Counter (holding the address of the instruction following the jda) are transferred to bits 6 through 17 of the AC. The state of the overflow flip-flop, the Extend flip-flop, and Extended Program Counter are saved as described under jsp. The next instruction executed is taken from Memory Register Y + 1. The jda instruction requires that the indirect bit be a one, but indirect addressing does not occur. The instruction is equivalent to the instruction dac Y followed by jsp Y + 1. Skip if Accumulator and Y differ (10 usec) sad Y Operation Code 50 The C(Y) 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(Y) are unaffected by this operation. Skip if Accumulator and Y are the same (10 /u/sec) sas Y Operation Code 52 The C(Y) are compared with the 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 the C(Y) are unaffected by this operation. AUGMENTED INSTRUCTIONS Load Accumulator with N (5 /u/sec) law N Operation Code 70 The number in the memory address bits of the instruction word is placed in the Accumulator. If the indirect address bit is ONE, (-N) is put in the Accumulator. Shift Group (5 /u/sec) sft Operation Code 66 This group of instructions will rotate of shift the Accumulator and/or the In-Out Register. When the two registers operate combined, the In-Out Register is considered to be and 18-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 reigster were a ring. Shift is an arithmetic operation and is, in effect, multiplication of the number in the register by 2N, where N is the number of shifts; plus is left and minus is right. As bits are shifted out from one end of a register they are replaced at the other end by ones if the number negative and zeroes if the number is positive. The sign bit is not shifted. The number of shift or rotate steps to be performed (N) is indicated by the number of ONE's in Bits 9 through 17 of the instruction word. Thus Rotate Accumulator Right nine times is 671777. A shift or rotate of one place can be indicated nine different ways. The usual convention is to use the right end of the instruction word (rar 1 = 671001). When operating the PDP-1 in the single-step or single-instruction mode, shift group instructions may appear to operating incorrectly (i.e., judging from the indicator lights of the control console). This occurs because some shift group instructions overlap into the beginning of the next instruction. Rotate Acumulator Right (5 /u/sec) rar N Operation Code 671 Rotates the bits of the Accumulator right N positions, where N is the number of ONE's in Bits 9-17 of the instruction word. Rotate Acumulator Left (5 /u/sec) ral N Operation Code 661 Rotates the bits of the Accumulator left N positions, where N is the number of ONE's in Bits 9-17 of the instruction word. Shift Acumulator Right (5 /u/sec) sar N Operation Code 675 Shifts the contents of the Accumulator Right N positions, where N is the number of ONE's in Bits 9-17 of the instruction word. Shift Acumulator Left (5 /u/sec) sal N Operation Code 665 Shifts the contents of the Accumulator left N positions, where N is the number of ONE's in Bits 9-17 of the instruction word. Rotate In-Out Register Right (5 /u/sec) rir N Operation Code 672 Rotates the bits of the In-Out Register right N positions, where N is the number of ONE's in Bits 9-17 of the instruction word. Rotate In-Out Register Left (5 /u/sec) ril N Operation Code 662 Rotates the bits of the In-Out Register left N positions, where N is the number of ONE's in Bits 9-17 of the instruction word. Shift In-Out Register Right (5 /u/sec) sir N Operation Code 676 Shifts the contents of the In-Out Register right N positions, where N is the number of ONE's in Bits 9-17 of the instruction word. Shift In-Out Register Left (5 /u/sec) sil N Operation Code 666 Shifts the contents of the In-Out Register left N positions, where N is the number of ONE's in Bits 9-17 of the instruction word. Rotate AC and IO Right (5 /u/sec) rcr N Operation Code 673 Rotates the bits of the combined registers right in a single ring N positions, where N is the number of ONE's in Bits 9-17 of the instruction word. Rotate AC and IO Left (5 /u/sec) rcl N Operation Code 663 Rotates the bits of the combined registers left in a single ring N positions, where N is the number of ONE's in Bits 9-17 of the instruction word. Shift AC and IO Right (5 /u/sec) scr N Operation Code 677 Shifts the contents of the combined registers right N positions, where N is the number of ONE's in Bits 9-17 of the instruction word. Shift AC and IO Left (5 /u/sec) scl N Operation Code 667 Shifts the contents of the combined registers left N positions, where N is the number of ONE's in Bits 9-17 of the instruction word. Skip Group (5 /u/sec) skp Operation Code 64 This group of instructions senses the state of various flip-flops and switches in the machine. The address portion of the instruction selects the particular function to be sensed. All members of this group have the same operation code. The instructions in the 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. The intent of any skip instruction can be reversed by making Bit 5 (normally the Indirect Address Bit) equal to One. For example, the Skip on Zero Accumulator instruction, with Bit euqal to one, becomes Do Not Skip on Zero Accumulator. Skip on ZERO Accumulator (5 /u/sec) sza Address 0100 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 /u/sec) spa Address 0200 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 /u/sec) sma Address 0400 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 /u/sec) 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 is skipped. The overflow flip-flop is cleared by the instruction. This flip-flop is set only by an addition or subtraction that exceeds the capacity of the Accumulator. (See definition of add and subtract instructions). The overflow flip-flop is not cleared by arithmetic operations which do not cause an overflow. Thus, a whole series of arithmetic operations can 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 /u/sec) 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 Plus ZERO Switch (5 /u/sec) szs Addresses 0010, 0020, ... 0070 If the selected Sense Switch is ZERO, the Program Counter is advanced one extra position and the next instruction in the sequence is 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. Operate Group (5 /u/sec) opr 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. The instructions in the Operate Group can be combined to give the union of the functions. The instruction opr 3200 will clear the AC, put TW to AC, and complement AC. Clear In-Out Register (5 /u/sec) cli Addres 4000 Clears (sets equal to plus zero) the In-Out Register. Load Accumulator from Test Word (5 /u/sec) lat Address 2000 Forms the inclusive OR of the C(AC) and the contents of the Test Word. This instruction is usually combined with Address 0200 (Clear Accumulator), so that C(AC) wil equal the contents of the Test Word Switches. Load Accumulator with Program Counter (5 /u/sec) lap Address 0100 Forms the inclusive OR of the C(AC) and the contents of the Program Counter (which contains the address of the instruction following the lap) in AC bits 6 through 17. Also, the inclusive OR of AC bit zero and the state of the overflow flip-flop is formed in AC bit zero. This instruction is usually combined with address 0200 (clear accumulator) so that the C(AC) will equal the contents of the overflow flip-flop (in AC bit zero) and the contents of the Program Counter (in AC bits 6 through 17). The contents of the Extend flip-flop are transferred to AC bit 1, the contents of the Extended Program Counter to bits 2, 3, 4, and 5. Complement Accumulator (5 /u/sec) cma Address 1000 Complements (changes all ones to zeroes and all zeroes to ones) the contents of the Accumulator. Halt hlt Address 0400 Stops the computer. Clear Accumulator (5 usec) cla Address 0200 Clears (sets equal to plus zero) the contents of the Accumulator. Clear Selected Program Flag (5 /u/sec) clf Address 0001 to 0007 Clears the selected program flag. Address 01 clears Program Flag 1, 02 clears Program Flag 2, etc. Address 07 clears all program flags. Set Selected Program Flag (5 /u/sec) stf Address 0011 to 0017 Sets the selected program flag. Address 11 sets Program Flag 1; 12 sets Program Flag 2, etc. Address 17 sets all program flags. No Operation (5 /u/sec) nop Address 0000 The state of the computer is unaffected by this operation, and the Program Counter continues in sequence. In-Out Transfer Group (5 /u/sec without in-out wait iot Operation Code 72 The variations within this group of instructions perform all the in-out control and information transfer functions. If Bit 5 (normally the Indirect Address bit) is a ONE, the computer will enter a special waiting state until the completion pulse from the activated device has returned. When this device delivers its completion, the computer will resume operation of the instruction sequence. The computer may be interrupted from the special waiting state to serve a sequence break request or a high speed channel request. Most in-out operations require a known minimum time before completion. This time may be utilized for programming. The appropriate In-Out Transfer can be given with no in-out wait (Bit 5 a ZERO and Bit 6 a ONE). The instruction sequence then continues. This sequence must include an iot instruction 730000 which performs nothing but the in-out wait. The computer will then enter the special waiting state until the device returns the in-out restart pulse. If the device has already returned the completion pulse before the instruction 730000, the computer will proceed immediately. Bit 6 determines whether a completion pulse will or will not be received from the in-out device. When it is different than Bit 5, a completion pulse will be received. When it is the same as Bit 5, a completion pulse will not be received. In addition to the control function of Bits 5 and 6, Bits 7 through 11 are also used as control bits serving to extend greatly the power of the iot instructions. For example, Bits 12 through 17, which are used to designate a class of input or output devices such as typewriters, may be further defined by Bits 7 through 11 as referring to Typewriter 1, 2, 3, etc. In several of the optional in-out devices, in particular the magnetic tape, Bits 7 through 11 specify particular functions such as forward, backward etc. If a large number of specialized devices are to be attached, these bits may be used to further the in-out transfer instruction to perform totally distinct functions. STANDARD AND OPTIONAL EQUIPMENT Standard Equipment PERFORATED TAPE READER The Perforated Tape Reader of the PDP-1 is a photoelectric device capable of reading 400 lines per second. Three lines form the standard 18-bit word when reading binary punched 8-hole tape. Five, six and seven hole tape may also be read. Read Perforated Tape, Alphanumeric rpa Address 0001 This instruction reads one line of tape (all eight Channels) and transfers the resulting 8-bit code to the Reader Buffer. If bits 5 and 6 of the rpa function are both zero (720001), the contents of the Reader Buffer must be transferred to the IO Register by executing the rrb instruction. When the Reader Buffer has information ready to be transferred to the IO Register, Status Register Bit 1 is set to one. If bits 5 and 6 are different (730001 or 724001) the 8-bit code read from tape is automatically transferred to the IO Register via the Reader Buffer and appears as follows: IO Bits 10 11 12 13 14 15 16 17 TAPE CHANNELS 8 7 6 5 4 3 2 1 The remaining bits of the IO Register are set to zero. The code of the off-line tape preparation typewriter (Friden FIO-DEC Recorder-Reproducer) contains an odd parity bit. This bit may be checked by the read-in program. The FIO-DEC Code can then be converted to the Concise (6-bit) Code used by PDP-1 merely by dropping the eighth bit (parity). A list of characters and their FIO-DEC and Concise Codes can be found on pages 68 and 69 (of the FrameMaker copy). Read Perforated Tape, Binary rpb Address 0002 The instruction reads three lines of tape (six Channels per line) and assembles the resulting 18-bit word in the Reader Buffer. For a line to be recognized by this instruction Channel 8 must be punched (lines with Channel 8 not punched will be skipped over). Channel 7 is ignored. The instruction sub 5137, for example, appears on tape and is assembled by rpb as follows: Channel 8 7 6 5 4 | 3 2 1 Line 1 X X | X Line 2 X X X | X Line 3 X X X | X X X Reader Buffer 100 010 101 001 011 111 (Vertical dashed line indicates sprocket holes and the symbols "X" indicate holes punched in tape). If bits 5 and 6 of the rpb instruction are both zero (720002), the contents of the Reader Buffer must be transferred to the IO Register by executing a rrb instruction. When the Reader Buffer has information ready to be transfer red to the IO Register, Status Register Bit 1 is set to one. If bits 5 and 6 are different (730002 or 724002) the 18-bit word read from tape is automatically transferred to the IO Register via the Reader Buffer. Read Reader Buffer rrb Address 0030 When the rpa or rpb instructions are given with bits 5 and 6 both zero (720001 or 720002) information read from tape fills the Reader Buffer, but is not automatically transferred to the IO Register. To accomplish the transfer, these instructions must be followed by a rrb instruction. In addition, the rrb instruction clears Status Register Bit 1. 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 does not rely on programs already in memory. Pushing the "Read-In" switch starts the reader in the binary mode. The first group of three lines, and alternate succeeding groups of three lines, are interpreted as "Read-In" mode instructions. Even-numbered groups o three 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 three 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. PERFORATED TAPE PUNCH The standard PDP-1 Perforated Tape Punch operates at a speed of 63 lines per second. It can operate in either the alphanumeric mode or the binary mode. Punch Perforated Tape, Alphanumeric ppa Address 0005 For each In-Out Transfer instruction one line of tape is punched. In-Out Register Bit 17 conditions Hole 1. Bit 16 conditions Hole 2, etc. Bit 10 conditions Hole 8. Punch Perforated Tape, Binary ppb Addres 0006 For each In-Out Transfer instruction one line of tape is punched. In-Out Register Bit 5 conditions Hole 1. Bit 4 conditions Hole 2, etc. Bit 0 conditions Hole 6. Hole 7 is left blank. Hole 8 is always punched in this mode. ALPHANUMERIC ON-LINE TYPEWRITER The typewriter will operate in the input mode or the output mode. Type Out tyo Address 0003 For each In-Out Transfer instruction one character is typed. The character is specified by the right six bits of the In-Out Register. Type In tyi Address 0004 This operation is completely asynchronous and is therefore handled differently than any of the preceding in-out operations. When a typewriter key is struck, the code for the struck key is placed in the typewriter buffer, Program Flag 1 is set, and the type-in status bit is set to one. A program designed to accept typed-in data would periodically check Program Flag 1, and if found to be set, an In-Out Transfer Instruction with address 4 could be executed for the information to be transferred to the In-Out Register. This In-Out Transfer should not use the optional in-out wait. The information contained in the typewriter buffer is then transferred to the right six bits of the In-Out Register. The tyi instruction automatically clears the In-Out Register before transferring the information and also clears the type-in status bit. SEQUENCE BREAK MODE The purpose of the Sequence Break Mode (or program interrupt) is to allow concurrent operation of several in-out devices and the main program sequence. It also provides a means of indicating to the computer that an in-out device is ready to accept or furnish data. Interrupt requests can be received from any number of in-out devices. Each such request sets a unique status bit. If the channel is free, the main program sequence is interrupted after completion of the current memory cycle and the C(AC) are automatically stored in memory location zero, the C(PC) in location 1, and the C(IO) in location 2. The time required to accomplish this is 15 /u/sec. The C(PC) as stored in location includes the state of the overflow flip-flop in bit zero. The Program Counter is then reset to the address 0003 and the program begins operating in the new sequence. The program beginning at location 0003 is usually designed to inspect the status bits, through the use of the Check Status instruction, to determine which in-out device caused the interrupt. A jump to the appropriate in-out subroutine can then be executed. Each such subroutine is terminated by the following instructions: lac 0000 (to restore the AC) lio 0002 (to restore the IO) jmp (indirect) 0001 (to resume the main program) The last of these three instructions restores the overflow and PC flip-flops and frees the channel thus allowing the next interrupt request received by the system to be processed. Interrupt requests that occurred while the channel was busy set status bits, and cause interrupts when the channel next becomes free. In the standard PDP-1 the reader, punch, and typewriter are attached to the One-Channel Sequence Break System and five status bits are defined (see Check Status instruction). The number of status bits is expanded as required by optional in-out equipment. Three instructions are directly associated wih the One-Channel Sequence Break System on the standard PDP-1: Enter Sequence Break Mode esm Address 0055 This instruction turns on the Sequence Break System, allowing automatic interrupts to the main sequence to occur. Leave Sequence Break Mode lsm Address 0054 This instruction turns off the Sequence Break System, thus preventing interrupts to the main sequence. Should interrupt requests occur while the system is off, the status bits will, nevertheless continue to be set. Clear Sequence Break System cbs Address 0056 This instruction clears certain control flip-flops in the Sequence Break System thus nullifying the effect of any interrupt requests just granted or about to be granted (i.e., just prior to the transfer of the C(AC) to location zero). CHECK STATUS Check Status cks Address 0033 This instruction checks the status of various in-out devices and sets IO Bits 0 through 6 for subsequent program interrogation as follows: IO Bit Positions Status Register Defintions --------- -------------------------- 0 Set to 1 when light-pulse strikes pen Set to 0 at the start of each dpy instruction 1 Set to 1 when Punched Tape Reader Buffer has information ready to be transferred to IO Register Set to 0 be the reader return pulse or by the rrb instruction 2 Set to 1 when typewriter is free to receive a tyo instruction Set to 0 at the start of each tyo instruction 3 Set to 1 when typewriter key is struck Set to 0 by completion of tyi instruction 4 Set to 1 when tape punch is free to receive a ppa or ppb instruction Set to 0 at the start of each ppa or ppb instruction 5 Set to 1 when Type 23 Drum address equals address specified by dba instruction Set to 0 by the dcc instruction 6 Set to 1 on entering the Sequence Break mode Set to 0 on leaving the Sequence Break mode Central Processor Options PROGRAMMED MULTIPLY AND DIVIDE In order to maintain compatibility with older programs, and in cases where the maximum automatic multiply and divide times are not allowable, switches are provided to select programmed multiply and divide, using the following instructions: Multiply Step (10 /u/sec) mus Y Operation Code 54 Bit 17 of the In-Out Register is a ONE, the C(Y) are added to C(AC). If IO Bit 17 is a ZERO, the addition does not take place. In either case, the C(AC) and C(IO) are rotated right one place. AC Bit 0 is made ZERO by this rotate. This instruction is used in the multiply subroutine. Divide Step (10 /u/sec) dis Y Operation Code 56 The Accumulator and the In-Out Register are rotated left one place. IO Bit 17 receives the complement of AC Bit 0. If IO Bit 17 is ONE, the C(Y) are subtraced from C(AC). If IO Bit 17 is ZERO, C(Y) + 1 are added to C(AC). This instruction is used in the divide subroutine A result of minus zero is changed to plus zero. MEMORY MODULE (TYPE 12) Each Memory Module consists of 4096, 18-bit words. A maximum of sixteen such modules may be connected to the PDP-1 thus allowing for a maximum memory capacity of 65536 words. MEMORY EXPANSION CONTROL (TYPE 15) This control allows for memory expansion beyond 4096 to a maximum of 65536 18-bit words in increments of 4096-word modules. It provides a single-level, indirect address mode called "extend", in addition to the normal multiple-level, indirect address mode of the standard PDP-1. A toggle switch labelled "extend", which is on the control console, provides for initial selection of the extend or normal mode in conjunction with the use of the Start of Read-In Push-Buttons. During the operation of the program, the extend or normal mode can be selected as required through the use of two instructions provided with this options: Enter Extend Mode (5 /u/sec) eem 724074 This instruction places the computer in the single-level, indirect address mode called "extend". In this mode, all memory reference instructions that are indirectly addressed refer to the location of a word which is taken as a 16-bit effective address. This address is contained in bits 2 through 17 of the specified word. The Program Counter (PC) and the Memory Address Register (MA) both become 16-bit registers. When a jsp, jda, cal, or lap (with address 300) instruction is executed, the AC receives the state of the overflow flip-flop in bit zero, the state of the indirect address mode (extend = 1, normal = 0) in bit 1, and the contents of the extended Program Counter in bits 2 through 17. Instructions not indirectly addressed are executed as in the standard PDP-1, but refer to the 4096 words in the memory module designated by the program counter extension, PC bits 2 through 5. Only bits 6 through 17 of the extended Program Counter act as a counter. Therefore, unless a transfer of control is indicated, an instruction in location 7777 is followed by the instruction in location 0000 of the same memory module, as specified by PC bits 2 through 5. In the extend mode, the cal instruction used memory locations 0100 and 0101 in memory module designated by the extended Program Counter, PC bits 2 through 5. Leave Extend Mode (5 /u/sec) lem 720074 This instruction places the computer in the multiple-level, indirect address mode called "normal". In this mode, the PDP-1 operates as usual and all addresing refers to the 4096 words in the memory module designated by the program counter extension, PC bits 2 through 5. As in the extend mode, the instructions jsp, jda, cal, and lap (with address 300) supply the AC with the contents of the overflow, indirect address mode, and PC flip-flops. In the normal mode, the cal instruction uses memory locations 0100 and 0101 in the memory module designated by the program counter extension, PC bits 2 through 5. High Speed Channel transfers performed with extended memory refer directly to any of 65536 memory locations, regardless of the state of the indirect address mode (extend or normal). Sequence break operations with extended memory use Memory Module zero, locations 00 through 03 (one-channel system) or 00 through 77 (sixteen-channel system) to store the C(AC), C(PC), and C(IO) and to jump to the new sequence. The C(PC) as stored in the second fixed location assigned to each channel includes the state of the overflow flip-flop in bit zero, the state of the indirect address mode (extend = 1, normal = 0) in bit 1, and the contents of the extended Program Counter in bits 2 through 17. At the beginning of a sequence break the overflow and indirect addres mode flip-flops are automatically set to zero. The indirect jump that terminates a sequence break requires the Sequence Break System to be on, temporarily places the computer in the extend mode, then restores the overflow, indirect address mode, and PC flip-flops to their previous stages (i.e., just prior to the beginning of the sequence break). HIGH SPEED CHANNEL CONTROL (TYPE 19) This control is used in conjunction with the High Speed Data Control (Type 131). A maximum of three such channels can be attached to the PDP-1 through this control. Automatic Magnetic Tape Control Type 52 includes the installation of a Type 19 control. A high speed channel is used to automatically transfer blocks of words between core memory and an in-out device. Each channel is automatically interrogated at the completion of each memory cycle on a priority basis. The priority is wired and fixed. The Sequence Break System has an overall priority just below that of the lowest priority high speed channel. When wired to this channel, a device communicates directly with memory through the Memory Buffer Register, by passing the IO Register. After proper initiation, data transfers proceed without disturbing the main program. If the channel has a word for or needs a word from the memory, the current program sequence pauses for on memory cycle (5 /u/sec) to serve that channel, then continues. The maximum rate of transfer is 200,000 (18-bit) words per second. SEQUENCE BREAK SYSTEM (TYPE 120) The purpose of the Sequence Break System (or program interrupt system) is to allow concurrent operation of several in-out devices and the main program sequence. This system has, nominally, sixteen automatic interrupt channels arranged in a priority chain. Four fixed and unique memory locations are assigned to each sequence break channel. Channel zero (highest priority) uses locations 0, 1, 2, and 3; channel one uses locations 4, 5, 6, and 7; etc. A break to a particular sequence can be initiated by the completion of an in-out device, the program or any external signal. If this sequence has priority, the C(AC) are automatically stored in the first of four assigned memory location, the C(PC) in the second,. and the C(IO) in the third. The time required to accomplish this is 15 microseconds (during which other interrupts cannot occur). The C(PC) as stored in the second location includes the state of the overflow flip-flop in bit zero. The Program Counter is reset to the addres of the fourth fixed location and the program begins operating in the new sequence. This new sequence may be broken by a higher priority sequence. A typical program for handling an in-out sequence would contain several instructions, including the appropriate IOT instruction. These are followed by load AC and load IO from their fixed locations and an indirect jump to the location of the previous C(PC). This last instruction also restores the previous state of the overflow flip-flop and terminates the sequence. When the Type 120 Sequence Break System is installed in the PDP-1, the standard one-channel system is removed. The three instructions asociated with the one-channel system are retained and four additional instructions are provided: Deactivate Sequence Break Channel dsc 72kn50 Turn off the channel specified by kn, where kn equals 00 for channel zero, 01 for channel one, etc., and 17 for channel fifteen. Activate Sequence Break Channel asc 72kn51 Turn on the channel specified by kn. Initiate Sequence Break isb 72kn52 Initiate a sequence break on the channel specified by kn regardless of whether the channel is on or off. Clear All Channels cac 720053 Turns off all sixteen channels. Sequence Break Systems with 32, 64, 128, and 256 channels are also available and operate in the same manner. HIGH SPEED DATA CONTROL (TYPE 131) The High Speed Data Control Type 131 automatically transfers data between the PDP-1 and an input-output device. After proper inititialization, data-transfers to and from the Data Control proceed concurrently with the main computer program. The maximum transfer rate is 200,000 18-bit words per second, based on the 5 /u/sec computer memory cycle. A maximum of three Data Controls can be attached to a Type 19 High Speed Channel Control of the PDP-1. Each Data Control is asigned a priority to halt the program for data transfers with core memory. Each Data Control can operate three devices, one at a time. The Type 131 contains five major registers: ONE BUFFER (1 Buf) An 18-bit register acting as an intermediate storage buffer for Memory Buffer Register information received from the High Speed Channel Control or an external device. During incoming transfers it is an intermediate buffer between the Data Word Buffer (DWB) of the external device and the Two Buffer. TWO BUFFER (2 Buf) An 18-bit registed tha holds outgoing information to be transferred into the DWB of an external device or into the Memory Buffer Register of the computer during a high speed channel transfer. DEVICE REGISTER (D Reg) A 3-bit static register used to control the flow of information and connect the desired external device. The register is loaded from the Memory Buffer Register buss. INITIAL LOCATION COUNTER (ILC) A 16-bit register that contains the address of the next data word to be transferred and is advanced one each time a data word is transferred. This register is loaded from the IO Register. WORD COUNTER (WC) A 16-bit register containing the complement of the number of words remaining to be transferred in the data block. The counter is ad- vanced one each time a word is transferred to an external device DWB. Note that the Word Counter outputs are decoded and combined with logic levels to stop all further high speed channel requests at the proper time. This register is loaded from the IO Register. The IOT instruction structure for the Type 131 Data Control is 72xxyy, where * 72 specifies IOT * xx microprogramming * yy Data Control selection Set Word Counter swc Address x046 Transfers the contents of the IO Register into the Word Counter in the Data Control. the contents of the IO Register at this time should contain the address specifications concerning the number of computer words to be transferred via the High Speed Channel Control Type 19. In addition, Memory Buffer Register bits 6 through 8 are transferred to the Device Register. These bits should specify he direction of data transfer and the device to be connected to the Data Control. MB Bit State Description ---------------------------- 6 0 Data is to be transferred into the computer 6 1 Data is to transferred out from the computer 7 and 8 00 No device connected 7 and 8 10 Connect Tape Control, Type 510 7 and 8 01 Connect device 2 7 and 8 11 Connect device 3 Set Initial Address sia Address 0346 Transfers the contents of the IO Register into the Initial Location Counter in the Data Control. The contents at this time should be the address specifications concerning the location of the initial computer data word to be transferred from or put into core memory. Stop Data Flow sdf Address 0146 Disconnects all devices from the Data Control. Read Location Counter rlc Address 0366 Transfers the contents of Initial Location Counter to the IO Register of the computer. This instrucion can be executed twice to compare the results before accepting the location as a check of synchronism. The asynchronous nature of this instruction makes it useful to examine the contents of the Initial Location Counter at any time. In addition, this instruction transfers two status bits into the IO Register. IO Bit State Description -------------------------- 0 0 Transfer in progress 0 1 Word counter equals zero; transfers complete 1 0 Data Transfer is on time 1 1 Data transfer is later. This signifies that the computer did not take the data in and new data was transferred in over old in the Data Control buffers. NOTE: The data late condition can exist with the Tape Control on the third priority high speed channel if simultaneous request on all channels is preceeded by multiply or divide, when operating the Tape Control at a density of 800 cpi. Set High Speed Channel Request shr Address 0446 Forces a high speed channel cycle request to transfer data. In the sequence break mode of operation the Word Count Equal to Zero (WC = 0) output signal of the Data Control is assigned to a particular channel on the Type 120 Sequence Break System. Therefore, programming to synchronize on the completion of the issued transfer instruction varies according to the channel assignment. To synchronize on the completion of the transfer with the standard Single Channel Sequence Break System the WC = 0 signal is sent to bit 8 of the computer Status Register. Synchronization for transfer completion can be accomplished out of the sequence break mode by use of the rlc instruction. In this manner, WC = 0 when a ZERO is transferred to bit 0 of the IO Register. Input-Output Equipment Options PRECISION CRT DISPLAY (TYPE 30) This sixteen-inch cathode ray tube display is intended to be used as an on-line output device for the PDP-1. It is useful for high speed presentation of graphs, diagrams, drawings, and alphanumerical information. The unit is solid state, self-powered and completely buffered. It has magnetic focus and deflection. Display characteristics are as follows: * Random point plotting * Accuracy of points +/-3 per cent of raster size * Raster size 9.25 by 9.25 inches * 1024 by 1024 addressable locations * Fixed origin at center of CRT * Ones complement binary arithmetic * Plots 20,000 points per second Resolution is such that 512 points along each axis are discernable on the face of the tube. One instruction is added to the PDP-1 with the installation of this display: Display One Point On CRT dpy Address 0007 This instruction clears the light pen status bit and displays one point using bits 0 through 9 of the AC to represent the (signed) X coordinate of the point and bits 0 through 9 of the IO as the (signed) Y coordinate. Many variations of the Type 30 Display are available. Some of these include hardware for line and curve generation. SYMBOL GENERATOR (TYPE 33) The Type 33 Symbol Generator automatically translates digital computer words into format information for rapid display on a Type 30 CRT. The Type 33 plots symbols on a 5 x 7, 35-dot matrix in one of four sizes. Individual symbols are displayed by intensifying spots within the matrix under program control. Character and symbol information is received from the computer in the form of two 18-bit words. The Type 33 greatly increases the Type 30's capacity for character and symbol generation. Plotting rate is increased approximately ten times: a total of 220 characters (based on an average character of 16 points) can be displayed flicker free. Any symbol compatible with a 5 x 7, 35-dot matrix can be displayed. The Type 33 includes a subscript control with adjustable offset and an increment control which spaces successive symbols one position to the right. Generator Plot Left gpl Address 2027 Transfers the contents of the IO Register to the shift register of the Symbol Generator and initiates plotting of the first 17 dots. Bit 17 of this word sets or resets the subscript control if the bit is a one or a zero, respectively. Generator Plot Right gpr Address 0027 Transfers the contents of the IO register to the shift register of the symbol generator and initiates plotting of the last 18 dots. The "Clear" is inhibited by MD bit 7 = 0 to prevent losing the count contained in the horizontal and vertical counters which control dot position. Reset gcf Address 0127 Clears the light pen status flip-flop in the display. The light pen status will also be cleared when a normal point plot (iot 07) is performed. Load Format glf Address 2026 Reads the three least significant bits of the IO Register to the two character-size control flip-flops .Bits 16 and 17 are used to specify one of the four symbol sizes. Bit 15, if a 1, specifies automatic spacing between symbols. A completion pulse will not be generated by the display when this instruction is performed. Space jsp Address 0026 Increments the X buffer-counter to position the beam one character position to the right. Since the contents of the IO Register are transferred to the Shift Register by this instruction, the IO Register should be cleared before performing the jsp instruction. The Increment control must be set before performing the jsp instruction by loading bit 15 with the glf instruction. Intensify dpy Address 0007 No Intensify sdb Address 2007 By use of the MB bit 12, the normal point plotting instruction dpy can be used to load the position co-ordinates of the first character to be displayed without illuminating that point. When the "No Intensify" instruction is performed the display will not generate a completion pulse, therefore the programmer must allow at least 25 usec before executing a gpl instruction. Except for the gcf, glf and sdb instructions, which do not cause the generation of a completion pulse, the preceding iot instructions can be coded to perform the in-out wait operations. LIGHT PEN (TYPE 32) The Light Pen is designed to be used with the CRT Display Type 30. By "writing" on the face of the CRT, stored or displayed information can be expanded, deleted or modified. Specifically, each time a light-pulse strikes the pen, the Light Pen status bit is set to one (see definition of Check Status Instruction) and Program Flag 3 is set to one. At the time the status bit is set, the x-y coordinates of the point just "seen" by the pen are in bits 0 through 9 of the AC and bits 0 through 9 of the IO, repsectively (if the Display Instruction was given the optional in-out wait). A program designed to accept Light Pen input would periodically check the Light Pen status bit and when found to be set, would store the C(AC) and the C(IO) thereby defining the point just "seen" by the pen. ULTRA-PRECISION CRT DISPLAY (TYPE 31) The operation of this high resolution, five-inch cathode ray tube display is similar to that of the Type 30. Its resolution, accuracy, and stability, however, are such that it is much more suitable for the accurate, photographic recording of data. The specifications differ as follows: * Raster Size 3 by 3 inches * Accuracy of points is +/- 1/2 percent of raster size * 4096 by 4096 addressable locations Resolution is such that 1024 points along each axis are discernable on the face of the tube. One instruction is added to the PDP-1 with the installation of this display: Display One Point on Precision CRT dpp Address 0407 This instruction displays one point using bits 0 through 11 of the AC to represent the (signed) X coordinate of the point and bits 0 through 11 of the IO as the (signed) Y coordinate. CARD PUNCH CONTROL (TYPE 40-1) This control allows for on-line, buffered operation of standard card punch equipment. It contains an 80-bit buffer, loaded from the IO Register using one iot five times for each card row punched. Since any or all punching positions may be used, the standard IBM format is not a restriction and any format may be used. Maximum speed of the punch is 100 cards per minute. The instructions for the Type 40-1 are: Load a Group lag Address 0044 Loads 18 bits into the Control buffer. Five lag instructions are required to load the 80-bit buffer. Punch a Card pac address 0043 Starts the punching operation. CARD READER AND CONTROL (TYPE 421) The Type 41 provides on-line reading of standard punched cards. Cards are read lengthwise and sensed optically. They may be read in the alphanumeric or binary mode at rates of up to 200 cards per minute. Output is 6 parallel bits. The alphanumeric mode converts the 12-bit Hollerith code of one column into the 6-bit binary-coded decimal code with code validity checking. The binary mode reads a 12-bit column directly into the computer. Hopper and stacker capacity is 500 cards. The instructions for the Type 421 Card Reader are: Read Card Alpha rac Address 0041 Select a card in alphanumeric mode. Select the card reader and start a card moving. Information will appear in alphanumeric form. Read Card Binary rbc Address 0042 Select a card in binary mode. Select the card reader and start a card moving Information will appear in binary form. Read Column Register rcc Address 0032 Read the card column buffer information into the IO Register and the clear the Card Reader flag. One rcc reads alphanumeric information Two rcc instructions read the upper and lower column binary information. TAPE TRANSPORT (TYPE 50) This transport is compatible with IBM tape formats with a recording density of 200 7-bit characters per inch, an inter-record gap of 3/4 inches, and an interfile gap of 3-1/2 inches. The read-write speed of 75 inches per second provides for a 15,000 character per second transfer rate. Rewind speed is 225 inches per second. The method of recording is non-return to zero. Standard IBM reels with the "file-protect ring" feature are used. A maximum of 24 tape transports may be connected to the PDP-1. PROGRAMMED MAGNETIC TAPE CONTROL (TYPE 51) This control transfers information between the computer and the tape one character at a time. All transfer operations, including timing, formatting, error checking and assembly of characters into computer words are performed by stored programs. The Type 51 allows a choice of tape format, including the standard IBM format described under Tape Transport Type 50. A maximum of three Tape Transports Type 50 can be connected to the PDP-1 through the Type 51 Control. Five instructions are added to the PDP-1 with the installation of this option. Magnetic Tape Select Mode (5 /u/sec) msm 720073 Clears the Control Unit Command Buffer, depostis the 8 least significant bits of the Input-Output register in the Command Buffer, and selects a mode of operation based on the definition of each of the 8 bits as follows: IO Bit Positions If Zero If One ---------------------------------------------- 10 Do not operate Operate 11 Do not rewind Rewind 12 Forward Reverse 13 Read Write 14 Odd Parity Even Parity 15 75 inches/sec. Not Used Bit positions 16 and 17 represent a 2-bit number used to select one of three transports as follows: 00 No Transport 01 Transport 1 10 Transport 2 11 Transport 3 For convenience, let an 18-bit word be designated by 6 octal digits labelled x1, x2, x3, x4, x5, x6. The octal notation that would then correspond to the above but defintions for mode of operation would be: x4 (Control) = 0 or 1 Do Not Operate (i.e., stop selected transport if not already stopped, unless rewinding) = 2 Operate (i.e., according to octal digits x5 and x6) = 3 Rewind (must deselect unit after Rewind command) x5 (Function) = 0 Read Odd Parity Forward = 1 Read Even Parity Forward = 2 Write Odd Parity Forward = 3 Write Even Parity Forward = 4 Read Odd Parity Reverse = 5 Read Even Parity Reverse = 6 Write Odd Parity Reverse = 7 Write Even Parity Reverse x6 (transport) = 0 No Transport = 1 Select Transport 1 at 75 inches/sec. = 2 Select Transport 2 at 75 inches/sec. = 3 Select Transport 3 at 75 inches/sec. = 4 No Transport = 5 Not Used = 6 Not Used = 7 Not Used Rewind constitutes a special case wherein x5 must be 4, 5, 6, or 7 because reverse motion must be indicated. Magnetic Tape Check Status (5 /u/sec) msc 720034 Set IO bits 0 through 5 for subsequent program interrogation as follows: IO Bit Positions If One If Zero ------------------------------------------------ 0 Not Ready Ready 1 Not-Rewinding Rewinding 2 Not-In-File-Protect In File-Protect (ring out of reel) 3 Not at Load Point At Load Point (approx. 10 feet from physical end of tape) 4 Not Full Tape Supply Full Tape Supply (approx. 100 feet of tape on take-up reel) 5 Not Low Tape Supply Low Tape Supply (approx. 100 feet of tape on supply reel) 6 Not at End Point At End Point (approx. 14 feet from trailing end of tape) 7 In Manual Mode In Automatic Mode In the above status-bit definitions, "ready" means that a tape transport: * has been properly selected * tape is not in motion * is in "automatic" * has its AC power on Status may be checked for the transport currently in operation or the transport that was last selected, but currently operating, by executing the mcs instruction alone. To check the status of any transport, execute a msm instruction using a code which selects the transport to be checked, but does not operate that transport, then the mcs instruction. Never, however, issue a msm instruction to the Control Unit if any transport is reading or writing. Magnetic Tape Clear Buffer (5 /u/sec) mcb 720070 Clears the Character Buffer and the Write Buffer. When writing IBM format, the end-of-record mark is written onto tape by executing a mcb instruction. Each of the 7 bits of the end-of-record mark represents the longitudinal parity of all all the bits of the corresponding channel throughout the length of the record. The mcb instruction should immediately follow any msm instruction which calls for tape read or tape write. If this is not done, the Character Buffer may never detect a character read from tape or an incorrect end-of-record mark may be written because the original state of the Write Buffer was unknown. Magnetic Tape Write a Character (5 /u/sec) mwc 720071 Each mwc instruction clears the Character Buffer, transfers the 6 most significant bits of the Input- Output Register to the Character Buffer (where the correct lateral parity bit is added) and writes the final, 7-bit character onto tape. The mwc instruction that writes the first character on tape should be executed no sooner than 3 milliseconds after the msm instruction for operate-write (to account for tape start-time). Succeeding mwc instructions should occur every 65 microseconds (to write 200 characters per inch). After the last character of a record is written, 260 microseconds should elapse (e.g., by employing a time delay subroutine) and then the mcb instruction should be executed to mark the end-of-record. The time delay of 260 microseconds spaces tape such that 3 missing characters will be interpreted at this point when reading and hence, the read operation will recognize an end-of-record. Magnetic Tape Read Character (5 /u/sec) mrc 720072 Each mrc instruction transfers the contents of the Character Buffer (six data bits ... the parity bit having been checked and dropped-out) to the 6 least significant bit positions of the Input-Output Register, clears the Character Buffer, and clears Program Flag 2. It is generally desirable to program to read three characters from tape, assemble them in the Input- Output Register to form one computer word, and then deposit that word in a selected memory location. Since information transferred from the Character Buffer is combined with the contents of the Input-Output Register by an "inclusive or" operation, it is necessary that the Input-Output Register be cleared prior to assembling each group of three characters. Program Flag 2 is automatically set by Tape Control Unit when the first bit of a character read from tape enters the Character Buffer. Due to tape skew, all 7 bits of a character are not read simultaneously. Instead, at a tape speed of 75 inches per second, it may require as much as 25 microseconds for 7 bits to be read and entered into the Character Buffer. To read a character into the Input-Output Register it is necessary, therefore, to continually "look" at Program Flag 2 and immediately after finding it to be set, delay 25 microseconds and then execute the mrc instruction. This procedure assures the programmer that all 6 data bits were read and transferred to the Input-Output Register. Due to the speed of tape and the density of the characters written on it, the mrc instruction must immediately be followed by the Program Flag 2 "look" procedure to find the next character on tape. This can, indeed, be done because the mrc instruction has made the necessary preparations by clearing the Character Buffer and Program Flag 2. Of necessity, therefore, the first 6 bits transferred to the Input-Output Register cannot be manipulated by the program until the next 6 bits begin entering the Character Buffer (as indicated by Program Flag 2). At this point, the required 25 microsecond time period that accounts for tape skew can be used to manipulate the information in the Input-Output Register and to prepare to accept the next 6 bits or information from the Characater Buffer. The "look" for the first character of a record need not begin until approximately 3 milliseconds after the execution of the msm instruction for operate-read (to account for tape start-time). This time can be used by the programmer for any useful purpose. The following Program Flags are used with the Basic Magnetic Tape Control Unit: Program Flag 2 As previously described, this flag is automatically set when the first bit of a character read from tape enters the Character Buffer. It is used by the program to determine when a character is ready to be read into the IO Register. Program Flag 4 This flag is automatically set if a parity error occurs while reading. To keep from disrupting the critical timing control provided by the program, it is generally desirable to read to the end-of-record before stopping the tape even though a parity error may have occurred within the record. Therefore, the state of Flag 4 is usually only checked at the end of a record. Corrective action usually involves backspacing one record and rereading the record. (Flag 4 is never set while writing on tape.) AUTOMATIC MAGNETIC TAPE CONTROL (TYPE 52) This control automatically transfers information between the computer memory and the tape in variable-length blocks of characters. It allows computation to continue while the transfer is in process by using a High Speed Channel Control Type 19 in conjunction with a special-type data channel. Special features include scatter-read and gather-write, automatic bit-by-bit read-compare with core memory, automatic parity error detection while reading and writing, and rapid tape searching through its ability to skip a pre-selected number of blocks. Tape format is standard IBM as described under Magnetic Tape Transport Type 50. A maximum of three Tape Control Units Type 52, each capable of handling as many as eight Tape Transports Type 50, can be connected to the PDP-1. An Automatic Magnetic Tape Control (MTCU) has nine major registers: DATA WORD BUFFER (DW) This is an 18-bit buffer which is filled from the Memory Buffer Register of the PDP-1 when information is being written onto tape of filled from the Read Buffer of the Type 52 when information is being read from tape. Since it requires 200 microseconds to write the C(DW) onto tape or to fill the DW when reading tape, the MTCU automatically interrupts the PDP-1 once every 200 microseconds for a 5 microsecond data word transfer. READ BUFFER (RB) Each 7-bit character (6-bit code and parity bit) read from tape is momentarily stored in this 7-bit buffer. Here, a parity check is made, the parity bit is dropped, and the 6-bit character code is transferred to the DW. If a parity error is found, the Parity Error Bit, bit one of the State Register, is set. The first of three consecutive 6-bit character codes read from tape is stored in bits 0 through 5 of the DW, the second in bits 6 through 11, and the third in bits 12 through 17. WRITE BUFFER (WB) This 7-bit buffer obtains a 6-bit character code from the DW, supplies the correct parity bit, and transfers the resulting 7-bit character to the Write Head of the Tape Transport where it is written onto tape. STATE REGISTER (SR) This 18-bit register contains information concerning the status of the MTCU and the selected Tape Transport, including error conditions that may have occurred with the last tape record handled by the MTCU. Under PDP-1 program control, the C(SR) can be transferred to the IO Register and there be interrogated. FINAL ADDRESS REGISTER (FA) This is a 16-bit register which is filled from the IO Register of the PDP-1 by a programmed instruction. It contains a core memory address equal to the address of the final data word to be handled plus one. The first four bits of this register designates one of sixteen 4096-word memory modules and the last twelve bits designates one of 4096 memory locations within that module. During read, write, compare, and space operations, this register is continually compared with the Current Address Register to determine if the operation has been completed. CURRENT ADDRESS REGISTER (CA) This is a 16-bit register which is filled from the IO Register of the PDP-1 by a programmed instruction. It contains the core memory address to or from which an 18-bit data word is currently being transferred. The first four bits of this register designates one of sixteen memory modules and the last twelve, one of 4096 memory locations within that module. The C(CA) is automatically increased by one after the completion of each data word transfer. During read, write, compare, and space operations, the C(CA) are continually compared with the C(FA) to determine if the operation has been completed. The C(CA) can be transferred to the IO Register by a programmed instruction. COMMAND REGISTER (CR) This 4-bit register is filled from the Memory Buffer Register of the PDP-1 with a code representing one of eleven tape functions such as read, write, rewind, etc. This code prepares the MTCU to carry-out the specified function. TAPE UNIT REGISTER (TU) This 3-bit register is filled from the Accumulator of the PDP-1 and is used to designate one of eight (0-7) Tape Transports attached to the specified MTCU. STOP-CONTINUE REGISTER (SC) This 2-bit register is filled from the Memory Buffer Register of the PDP-1 and is used to specify one of three end-of-record actions to be taken immediately after the tape operation has been completed. Eight basic instructions are added to the PDP-1 with the installation of this operation: Magnetic Tape Unit and Final (5 /u/sec) muf 72ue76 This instruction performs the following functions: Bits 6 and 7 of the instruction are used to select on of three (0-2) Magnetic Tape Control Units (MTCU) attached to the PDP-1. Bits 15, 16, and 17 of the Accumulator replace the C(TU). These bits are used to select one of eight (0-7) Tape Transports (Units) attached to the specified MTCU Bits 2 through 17 of the IO Register replace the C(FA). These bits represent a memory address equal to the final data word to be handled, plus one. Bits 10 and 11 of the muf instruction replace the C(SC). These bits are used to select one of three "end-of-record actions": 1. normal completion and stop, 2. early completion and stop, or 3. early completion and continue. Bits 5, 8, and 9 of the muf instruction should be zero. If the selected MTCU is not busy, the muf instruction is properly executed and the next instruction in sequence is skipped. If busy, muf is performed as a nop instruction and the next instruction in sequence is executed. In either event, the C(IO) and C(AC) remain unchanged. The "end-of-record actions" are defined as follows: * Normal Completion and Stop. After the end-of-record has been reached, the transport either writes an inter-record gap and stops or stops within an existing inter-record gap. After the 3 millsecond, transport stop-tiime has elapsed, the MTCU and PDP-1 are notified that the tape operation has been completed. Until such notification has been received, the MTCU is considered to be busy. Bit 3 of the State Register which can be examined by the computer program is a "one" if the MTCU is busy or a "zero" if the record has been completed. * Early Completion and Stop. This end-of-record action is identical to Normal Completion and Stop except that the completion notification is received by the MTCU 3 milliseconds earlier. Thus the programmer can initiate a tape operation on a different Tape Transport attached to the same MTCU while the other Tape Transport is expending the 3 millisecond stop-time period. As before, completion is indicated by Bit 3 of the State Register being set to zero. * Early Completion and Continue. This end-of-record action is identical to Early Completion and Stop, except that the selected transport continues in motion and continues to be under control of the selected MTCU. From the time Bit 3 of the State Register is set to zero (signifying "Record Complete") and up to 1.5 milliseconds thereafter, only muf and mic (not mri or mrf) can be given, and the command should be given before the specified time or not at all. If the instructions are given in time, many records can be handled without stopping tape. If the instructions are not given during this time, Early Completion and Stop occurs after (a) two consecutive inter-record gaps (blank tape) have been written if the previous tape command was "write"; (b) the next record has been spaced over (i.e., tape stops within the next available inter-record gap) if the previous tape command was "read". In either case, the control will give another early end-of-record notification. * If Early Completion and Continue have been specified (bits 10 and 11 of the previous muf instruction), the next muf instruction will not change the tape unit register, that is AC bits 15-17 will not be transferred to the tape unit register. Tape unit designation is therefore unnecessary. * Since any number of records can be "spaced" with a single tape command, Early Completion and Continue is not normally specified with space commands unless the command is certainly intended to be changed during the 1.5 millisecond period. Failure to change a space command during this time results in tape-spacing until the end-of-reel is reached. The octal digits, ue, within the muf instruction can be chosen from the following table to specify one of the allowable functions: MUF UNIT-END (UE) TABLE Function Mnemonic MTCU 0 MTCU 1 MTCU 2 ------------------------------------------------------------- Normal Completion and Stop mnp 00 20 40 Early Completion and Stop mep 01 21 41 Early Completion and Continue mec 03 23 43 Magnetic Tape Initial and Command (5 /u/sec) mic 72uc75 This instruction performs the following functions: * Bits 6 and 7 of the mic instruction are used to select on of three (0-2) Magnetic Tape Control Units (MTCU) attached to the PDP-1. * Bits 2 through 17 of the IO Register replace the C(CA). These bits represent the initial address of a memory location whose contents is to be manipulated in a magnetic tape operation. * Bits 8 through 11 of the mic instruction replace the C(CR). These bits are used to select one of eleven tape functions as indicated in the MIC UNIT COMMAND (UC) TABLE given below. * The C(SR) are cleared. * The selected tape transport is set into motion and begins to execute the specified tape function. Bit 5 of the mic instruction should be zero. If the selected MTCU is not busy, the mic instruction is properly executed and the next instrcution in the sequence is skipped. If busy, mic is performed as a nop instruction and the next instruction in sequence is executed. In either event, the C(IO) remain unchanged. The octal digits, uc, within the mic instruction can be chosen from the following table to specify one of the allowable tape command: Function Mnemonic MTCU 0 MTCU 1 MTCU 2 --------------------------------------------------------------- Stop mst 00 20 40 Rewind mrw 01 21 41 Backspace mbs 03 23 43 Forward Space Check Even Parity mfe 10 30 50 Forward Space Check Odd Parity mfo 11 31 51 Write Even Parity mwe 12 32 52 Write Odd Parity mwo 13 33 53 Read and Compare Even Parity mce 14 34 54 Read and Copare Odd Parity mco 15 35 55 Read Even Parity mre 16 36 56 Read Odd Parity mro 17 37 57 STOP The stop command should not be used in any action except the Early Completion and Continue, and even then it should be avoided if possible. If it is used, the following points should be observed. The command should be given only when the tape is moving in the forward direction. The programmer must wait 3 milliseconds after the command is given before attempting to reverse the direction of the tape (on the same drive); i.e., at early completion on writing and stop given, the programmer would wait 3 milliseconds before giving the backspace command. Ten milliseconds must elapse after the stop command is given before attempting to continue in the same direction on the same drive. In stop after reading, the following rules should be followed: * Stop command must be given within 100 microseconds of early completion pulse request if next command is write; * If stop is given after more than 100 microseconds but less then a.5 milliseconds, the commands, read, read and compare, or forward space may be given. If thenext command is to be write, the tape must be repositioned by backspacing one record and forward spacing one record (read, read and compare, forward space) before writing; * If stop is given after more than 1.5 milliseconds, it is suggested that the tape be backspaced two records and the position determined by programming. In stop after writing, the following rules should be observed: * Stop should be given within 200 microseconds if possible. All delays from early completion add to the size of the end of record gap. * If stop is given after 200 microseconds, it is suggested that the tape be repositioned with one backspace, one forward space, then writing. SPACE For Backspace and Forward Space Commands the number of records to be spaced (or skipped over) is equal to C(FA) - C(CA) + 1. To space 5 records, for example, set C(FA) = 4 and C(CA) = 0. In addition to spacing, the Forward Space Commands check for missing characters and for even or odd parity. Errors, if any, are indicated by the C(SR). WRITE With one execption, the first word of a record is written onto tape 5 milliseconds after the tape is set into motion. When starting a write operation at the Load Point, an 81 millisecond delay is used such that the first record on tape begins 6 inches from the Load Point Marker. The remainder of each record is written at the rate of one word every 200 microseconds. Writing continues until the C(CA) = C(FA). When the C(CA) = C(FA) condition occurs: * bit 7 of the State Register is set to one (signifying ":Addresses Equal"), * a sequence break occurs if the Sequence Break System is on, * information transfers cease, but tape motion continues, and * the address of the last word taken from memory is equal to the C(FA)-1. If mrf and mri instructions (defined below) are executed within 100 microseconds after the C(CA) = C(FA) condition occurs, the writing operation continues. This process is called "gather write". That is, information contained in scattered areas of memory can be "gathered" and written onto tape as a single, continuous record. If the C(CA) = C(FA) condition continues to exist for more than 100 microseconds, a longitudinal check character, defining the end-of-record, is automatically written. (each of the 7 bits of the longitudinal check character represents the even parity of all the bits of the corrsponding channel throughout the length of the record. If a Write Command is executed with C(CA) = C(FA) initially, then one inter-record gap is written and one of the "end-of-record actions" is taken. Controlled lengths of blank tape can be written in this manner by using "Early Completion and Continue". Each character written onto tape is read and checked 4 milliseconds after it is written. If a parity error of missing character error occurs, it is indicated by the C(SR). The memory contents of the PDP-1 are unchanged by magnetic tape write operations. A character written onto tape that is comprised of seven, zero-bits is defined as an illegal character. Using PDP-1 Concise Code, such a "zero character" can be generated by writing a "space" or "tape-feed" character with even parity. Replacement of records is not allowed. It is therefore assumed that each write command is writing the last record on tape. READ The first word of a record is read from tape 9 milliseconds after the tape is set into motion. The remainder of each record is read at the rate of one word every 200 microseconds. Reading continues until the C(CA) = C(FA) or the end-of-record is found. When the C(CA) = C(FA) condition occurs: * bit 7 of the State Register is set to one (signifying "Addresses Equal"), * a sequence break occurs if the Sequence Break System is on, * information transfers cease, but tape motion continues, and the address of the last word stored in memory is equal to C(CA)-1. If mrf and mri instructions (defined below) are executed within 100 microseconds after the C(CA) = C(FA) condition occurs, the reading operation continues. This process is called "scatter read". That is, information read from a single, continuous record can be stored in scattered areas of memory. If the C(CA) = C(FA) condition continues to exist for more than 100 microseconds, tape movement continues until the end-of-record is found. Information transfers do not occur during this time. When the end-of-record is found: * bit 3 of the State Register is set to zero (signifying "Record Complete", * a sequence break occurs if the Sequence Break System is on, * the selected "end-of-record action" is taken, and * the address of the last word stored in memory is equal to the C(CA) - 1. If a parity error or missing character error is detected while reading a record, it is indicated by the C(SR). The read operation, however, is in no way affected. READ AND COMPARE The first word of a record is read from tape 9 milliseconds after the tape is set into motion. This word fills the Data Word Buffer, but is not transferred to the computer. At the same time, the contents of the memory location specified by the Current Address Register is transferred to the selected MTCU. The two 18-bit words are then compared, bit by bit. The remainder of each record is read and compared with memory at the rate of one word every 200 microseconds. The read and compare operation continues until the C(CA) = C(FA), the end of record is found, or a read-compare error occurs. When the C(C)A = C(FA) condition occurs: * bit 7 of the State Register is set to one (signifying "Addresses Equal"), * a sequence break occurs if the Sequence Break System is on, * the read-compare operation ceases, but tape motion continues, and * the address of the last word taken from memory for comparison is euqal to the C(CA) - 1. If mrf and mri instructions (defined below) are executed within 100 microseconds after the C(CA) = C(FA) condition occurs, the read-compare operation continues. This process is called "gather- read-compare". That is, information contained in scattered areas of memory can be "gathered" and compared with information being read from a single, continuous record. If the C(CA) = C(FA) condition continues to exist for more than 100 microseconds, tape movememnt continues until the end-of-record is found. Information is not read and compared during this time. When the end-of-record is found: * bit 3 of the State Register is set to zero (signifying "Record-Complete"), * a sequence break occurs if the Sequence Break System is on, * the selected "end-of-record action" is taken, and * the address of the last word taken from memory for comparison is equal to the C(CA) - 1. When a read-compare error occurs: * bit 4 of the State Register is set to one (signifying "Read-Compare Error"), * the read-compare operation ceases, but tape movement continues until the end-of-record is found, and * the address of the last word taken from memory and successfully compared is equal to the C(CA) - 1. The memory contents of the PDP-1 are unchaged by magnetic tape read-compare operations. Magnetic Tape Reset Final (5 /u/sec) mrf 72u067 This instruction performs the following functions: * Bits 6 and 7 of the mrf instruction are used to select on of the three (0-2) Magnetic Tape Control Units (MTCU) attached to the PDP-1. * Bits 2 through 17 of the IO Register replace the C(FA). These bits represent a memory address of the final data word to be handled, plus (should say 1 here?) The Tape Transport and the "end-of-record action" selected by the last executed muf instruction remain selected. Bit 5 and bits 8 through 11 of the mrf instruction should be zero. The instruction following the mrf instruction is always executed. The C(IO) remain unchanged. The mrf instruction is used for gather write, scatter-read, and gather-read-compare operations. To be effective, it must be given within 100 microseconds after the C(CA) = C(FA) consdition occurs. If used in a sequence with the mri instruction as is the usual case, both the mrf and mri must be given within the 100 microsecond period. The octal digit, u, within the mrf instruction can be 0, 2, or 4 to select MTCU 0, 1, or 2, respectively. Magnetic Tape Reset Initial (5 /u/sec) mri 72Ug66 This instruction performs the following functions: * Bits 6 and 7 of the mri instruction are used to select on of three (0-2) Magnetic Tape Control Units (MTCU) attached to the PDP-1. * Bits 2 through 17 of the IO Register replace the C(CA). These bits represent the initial address of a memory location whose contents is to be manipulated in a magnetic tape operation. * Bit 10 of the mri instruction replaces bit 2 of the Command Register. This bit may be used to change the tape operation in process from read to read-compare or read-compare to read. It is also used to specify continuation of a write, read, or read-compare operation. The Tape Transport and the "end-of-record action" selected by the last executed muf instruction remain selected. Bits 5, 8, 9, and 11 of the mri instruction should be zero. The instruction following the mri instruction is always executed. The C(IO) remain unchanged. The mri instruction is normally used in sequence with the mrf instruction to affect gather write, scatter read, and gather-read-compare operations. To be effective, both instructions must be given within 100 microseconds after the C(CA) = C(FA) condition occurs. The octal digits, ug, within the mri instruction can be chosen from the following table to specify one of the allowable tape comand changes or continuations. MRI UNIT-CHANGE (UG) TABLE Function Mnemonic MTCU 0 MTCU 1 MTCU 2 ----------------------------------------------------------------------------- Change Read-Compare to Read (Even or Odd Parity) mgr 02 22 42 Continue to Write (Even or Odd Parity) mcw 02 22 42 Continue to Read (Even or Odd Parity) mcr 02 22 42 Change Read to Read-Compare (Even or Odd Parity) mgc 00 20 40 Continue to Read-Compare (Even or Odd Parity) mcc 00 20 40 Read to Read-Compare, Even mrc 00 20 40 Read to Read-Compare, Odd mrc 00 20 40 Continue to Read-Compare mcc 00 20 40 Magnetic Tape Examine States (5 /u/sec) mes 72u035 This instruction performs the following functions: * Bits 6 and 7 of the mes instruction are used to select one of three (0-2) Magnetic Tape Control Units (MTCU) attached to the PDP-1. The C(SR) replace the C(IO). The C(SR) remain unchanged. Bit5 and bits 8 through 11 of the mes instruction should be zero. The status of the selected MTCU and Tape Transport (TT) can be determined by programmed interrogation of the 18 binary digits transferred to the IO Register. IO Register State of MTCU and Transport ------------------------------------------ Bit 0 = 1 One or more of the conditions marked * exist * Bit 1 = 1 Parity Error * Bit 2 = 1 Missing character error * Bit 3 = 1 MTCU busy; if zero then Record Complete * Bit 4 = 1 Read-compare error * Bit 5 = 1 Illegal tape command * Bit 6 = 1 High speed channel request late Bit 7 = 1 C(CA) = C(FA); Addresses Equal Bit 8 = 1 Selected Tape Transport (TT) ready Bit 10 = 1 Selected TT is rewinding Bit 11 = 1 Selected TT is in "file-protect" (i.e., ring is out of reel) Bit 12 = 1 Selected TT is at Load Point (i.e., approximately 10 feet from physical end of tape) Bit 13 = 1 Selected TT has Full Tape Supply (i.e., approximately 100 feet of tape on take-up reel) Bit 14 = 1 Selcted TT has Low Tape Supply (i.e., approximately 100 feet of tape on supply reel) * Bit 15 = 1 Selected TT is beyond End Point (i.e., approximately 14 feet from trailing-end of tape) Bit 16 = 1 Early Completion and Stop has been selected Bit 17 = 1 Early Completion and Continue has been selected In the above status-bit definitions, "ready" (bit 8) means that a tape transport: * has been properly selected * tape is not in motion * is in "automatic" * has it AC power on To examine states during the processing ofa record, execute two mes instructions and accept the results only if they are equal. This avoids making an erroneous transfer of the C(SR) should it be in a dynamic state. The octal digit, u, within the mes instruction can be 0, 2, or 4 to select MTCU 0, 1, or 2, respectively. Magnetic Tape Examine Location (5 /u/sec) mel 72u036 This instruction performs the following functions: * Bits 6 and 7 of the mel instruction are used to select one of three (0-2) Magnetic Tape Control Units (MTCU) attached to the PDP-1. * The C(CA) replace bits 2 through 17 of the IO Register. IO bits zero and one are set to zero. The address of the last word read into or compared with memory is equal to the C(CA) - 1. Bit 5 and bits 8 through 11 of the mel instruction should be zero. To examine the C(CA) during the processing of a record, execute two mel instructions and accept the results only if they are equal. This avoids making an erroneous transfer of the C(CA) should it be in a dynamic state. The octal digit, u, within the mel instruction can be 0, 2, or 4 to select MTCU 0, 1, or 2, respectively. MAINTENANCE INSTRUCTIONS Two special instructions are available for maintenance and diagnostic operations. They by-pass all interlocks of the MTCU. Initiate a High Speed Channel Request (5 /u/sec) inr 72ur67 This instruction forces the selected MTCU to initiate a High Speed Channel request. The contents of the memory location specified by the Current Address Register are transferred to the Data Word Buffer. The octal digits, ur, within the inr instruction can be 02, 22, or 42 to select MTCU 0, 1, or 2, respectively and to initiate the request. Clear Command Register (5 /u/sec) ccr 772s067 This instruction forces the C(CR) and the C(TU) of the selected MTCU to be set to zero and places the selected MTCU in a non-busy state. This, in turn, causes the selected Tape Transport to stop. It is the only way, under program control, to bring the tape to rest during the processing of a record. The ccr instruction is particularly useful for adjusting the start-stop characteristics of a transport. The octal digit, u , within the ccr instruction can be 1, 3, or 5 to select MTCU 0, 1, or 2, respectively and to clear the Command Register. AUTOMATIC MAGNETIC TAPE CONTROL (TYPE 510) The Automatic Magnetic Tape Control Type 510 transfers information between a high-density tape transport and the computer in systems containing a Type 131 High Speed Data Control and a Type 19 High Speed Channel Control. Block transfers of data into the computer pass from a transport such as IBM Type 729 IV or 729 VI to the Data Word Buffer of the Tape Control. The Tape Control presents the data to the One Buffer of the Data Control for transfer to computer core memory through the High Speed Channel Control. Data Transfers in this manner are interleaved with the computer program and can be made in or out of the Sequence Break mode. Up to eight transports can be operated by the Type 510 Tape Control. The Tape Control receives command specifications from bits 6 through 12 of the computer Memory Buffer Register during specific input-output transfer (iot) instructions. The location of data deposits in the computer memory is determined by the Data Control so that the Tape Control and Data Control must operate in synchronism during data transfers to or from tape. During functions of the Tape Control which do not require data transfers, the Data Control is program-disconnected from the Control, allowing it to commnicate with other devices. While program-connected to the Data Control, the Tape Control can perform some functions not associated with data transfers, such as rewind or space. The eight major registers of the Type 510 Tape Control are: DATA WORD BUFFER (DWB) An 18-bit register that assembles three 6-bit characters read from tape into an 18-bit computer word when reading. When writing it distributes a full computer word into three 6-bit tape characters. The division of the computer word is: Bits 0-5 contain the first character, bits 6-11 contain the second character, and bits 12-17 contain the third character. This buffer receives a computer word from the Data Control during reading. DENSITY, UNIT, AND REWIND REGISTER (DUR) A 6-bit register that specifies which one of the eight transports is to be operated, and at what density. This register also specifies which of the eight transports is to be rewound. It is filled from the Memory Buffer Register busses at a specific iot time. MAGNETIC TAPE FUNCTION REGISTER (MTF) A 6-bit register that is filled from the Memory Buffer Register busses at a specific iot time to specify the function that is to be carried out. CHARACTER COUNTER (CHC) A 2-bit, three-position counter, used to specify which character of a computer word is presently being read or written. LONGITUDINAL PARITY CHECK CHARACTER BUFFER (LPCC) A 7-bit buffer that stores the number of transitions read, on a track basis, and provides the necessary logic to determine the validity of the LPCC. READ BUFFER (RB) A 7-bit buffer, used to collect the asynchronous bits of a given character as they are read from tape. Depending on the state of the CHC the contents of this buffer is read into the first, second, or third position of the DWB. WRITE CLOCK (WC) A 6-bit counter, operated from a 1.233-/u/sec crystal clock. Its configuration is altered according to the bit density selected under program control. STATE REGISTER (STR) An 18-bit register that may provide information concerning the conditions present in the Tape Control and the selected tape transport which can be interrogated by the program. All IO bits are 1 for the event described unless otherwise state. Bit assignments are as follows: IO Bit Name Description ----------------------------------- 0 Select & Ready Selected tape unit is not interlocked, density is ok, and the unit is ready for operation 1 Error Inclusive OR of STR bits 0 and 2 through 7 2 Illegal Function given last was illegal i.e. a) write and not select ready write b) rewind or backward and at load point c) read type and not select ready read 3 LTPE Lateral parity error reading, writing, or forward spacing 4 LNPE Longitudinal parity error 5 CSKE Character skipped error 6 DXLE Data transfer late error 7 TIOE Tape indicate on error. Write Get End Point. 8 TCNF Tape control not free 9 ODD Odd parity (1) even (0) 10 556 Density 556 cpi 11 800 Density 800 cpi 12 SRLP Tape unit selected, ready, and at load point 13 ERF End of record flag 14 EOF End of file marker 15 PCP Proceed condition present 16 LSLR Low slice level read 17 RND Tape unit rewinding To operate the control alone (no data transmission), three iot instructions are required. The first is a microprogrammed instruction combining sfc, rsr, crf, and cpm, as described in the instruction list below. The second is dur and the third is mtf, with bit assignments as described below. To operate the Tape Control with the Data Control connected for data transmission functions, the same instructions Are used, and in addition, a standard computer instruction connects the Data Control to the Tape Control. The instructions also transfers the contents of the IO Register bits 2 through 17 to the Initial Location Counter in the Data Control. A second instruction is used to transfer the contents of the IO Register bits 0 through 17 to the Data Control. Bits 2 through 17 of the IO Register are transferred to the Word Counter, and Memory Buffer Register bits 6 through 8 are transferred to the Device Register. Seven basic input-output transfer instructions are added to the PDP-1 with the installation of the Tape Control. The octal format of these instructions is 72xxyy, where * 72 indicates the specified in-out transfer instruction * xx are used in microprogramming of iot pulses * yy specify which Tape Control is selected Skip if Tape Control is Free sfc Address 0072 One is added to the contents of Program Counter in the computer and the next instruction is skipped. Read State Register rsr Address 0172 The contents of the State Register in the Tape Control are transferred to the IO Register of the computer. Clear ERF crf Address 0272 The End Of Record flip-flop is reset to 0 in the Tape Control. Clear Proceed Mode cpm Address 0472 The Proceed flip-flop is reset to 0 and the Tape Control is dismissed after it completes its present function. Set DUR dur Address xx70 Bits 6 through 11 of the MEmory Buffer Register busses are transferred to the Tape Control DUR Register. The xx bits are decoded as follows: MB Bit State Description ------------------------------ 6 0 No effect 6 1 Rewind 7 & 8 00 No effect 01 200 cpi 10 556 cpi 11 800 cpi 9, 10, 11 001 Tape Unit 1 010 Tape Unit 2 011 Tape Unit 3 100 Tape Unit 4 101 Tape Unit 5 110 Tape Unit 6 111 Tape Unit 7 000 Tape Unit 8 Clear Go cgo Address 0073 This is a maintenance instruction provided to stop the tape transport. Magnetic Tape Function mtf Address xx71 Bits 6 through 11 of the Memory Buffer Register busses are transferred to the MTF Register. If the function is illegal the Tape Control Busy flip-flop is cleared and a restart pulse is sent to tthe computer. If not illegal, the Tape Control Busy flip-flop is set to 1 and a restart pulse is sent. The instruction also clears the Tape Indicate On condition in the tape transport. The xx bits are decoded as follows: MB Bit State Description -------------------------- 6 0 No change of slice level during read 6 1 Change to low slice level during read 7 0 No EOF 7 1 Write EOF 8 0 Backward 8 1 Forward 9 0 Write 9 1 Read 10 0 Odd Parity 10 1 Even Parity 11 0 Normal block transfer 11 1 Proceed to next block transfer MULTIPLEXED A-D CONVERTER (TYPE 138/139) The Type 138 A-D Converter transforms an analog voltage to a binary number, selectable between six and eleven bits. Conversion time is variable, depending upon the number of bits desired and the required system accuracy. Different combinations of switching point accuracy and number of bits can be selected on the front panel. The table below shows the conversion time as a function of switching point accuracy and number of bits. Normally, the choice is made from on of the times in the diagonal row indicated in the table. Settings shown on the top line give a minimum uncertainty in the switching points for applications such as pulse height analysis. Total conversion error is equal to the maximum switching point error +/- 1/2 LSB (least significant bit). Max. Switching Number of Bits Point Error 6 7 8 9 10 11 --------------------------------------------- +/-0.05% 48 /u/sec 56 64 72 80 88 +/-0.1% 30 35 40 45 50 - +/-0.2% 18 21 24 27 - - +/-0.4% 15 17.5 20 - - - +/-0.8% 12 14 - - - - +/-1.6% 9 - - - - - The table shows the actual conversion time. The minimum time between conversions is the conversion time rounded up to the nearest multiple of PDP-1 cycle times, plus the time required to read out the buffer. The Type 139 Multiplexer Control permits up to 64 channels of analog information to be applied singly to the input of the Type 138 A-D Converter. The multiplexer can be operated in either the Individual Address of Sequential Address mode. Individual Addressing routes any preselected channel to the converter input. In the Sequential Address mode, an indexing command instructs the multiplexer control to advance the multiplexer channel address by one. In this mode, the multiplexer automatically returns to zero when an advance from the last channel is requested. Sequenced operation can be short-cycled when the number of channels used is less than the maximum. The Type 138 output is a binary number of seven to twelve bits. When the word length selector is set for N-bit conversion, the readout is N + 1 bits in 2's complement notation. The additional bit is always 1. Thus quantization error is always within one-half the Nth bit. A -10 volt analog input corresponds to the largest negative digital output; a 0 volt input results in the largest possible digital output. The temperature range for the above accuracies is 20 to 30 degrees Centigrade. The instructions provided for the Type 138/139 Multiplexed A-D Converter are as follows: Read Converter Buffer rcb Address 0031 The contents of the A-D converter output buffer are read into the I/O register. The converter buffer and flag are set to zero. Convert a Voltage cad Address 0040 A conversion is initiated in the A-D Converter. Select Multiplexer scv Address mm47 The bits mm are used to select up to 64 channels. Index Multiplexer icv Address 0060 Indexes the multiplexer channel by one. AUTOMATIC LINE PRINTER (TYPE 64) The Type 64 Printer is an on-line printing station capable of operating at a maximum speed of 300 lines per minute. A rotating drum contains 64 rows, each containing 120 identical characters. As the drum rotates to a row position, print hammers are activated to strike certain characters in that row, printing them at various places along the line. As the drum rotates to the next row position, the process is repeated. After one full revolution of the drum, all of the characters required on that line have been printed, and the printer spaces the paper to the next line. Printing and spacing are automatically controlled by the computer, which is connected to the printer through a Control Unit containing the following major circuits: CHARACTER TRANSFER These circuits strobe 6-bit characters from the computer into the printer, where they are stored until printed. A flag denotes the status of the process for each character so strobed. If requested by the computer, a signal can also be generated to inform the computer of the completion of a character transfer. PRINT AND SPACE This circuitry assists in controlling the printing and spacing sequence initiated by the computer. Upon command, the control unit issues a signal to the printer to commence printing a line. After the line is printed, the control unit assists in spacing the printer to the line commanded by the computer. The printer spaces in the following way: As the automatic spacing sequence starts, a continuous loop of punched, 8-channel tape moves in synchronism with the paper advance mechanism. Each punched character is optically sensed and read into the Control Unit for comparison with a computer-generated character specifying spacing distance. When identity occurs, spacing stops. TIMING CIRCUITRY These circuits keep computer and printer in synchronism. Various signals are issued as various operations in both computer and printer are initiated or completed. It should be noted that this circuitry also assists in storing characters in the printer *at the same time* that the printer is printing and spacing. Three basic instructions are added to the PDP-1 with the installation of this option: Clear Buffer clr buf Address 2045 A Clear Buffer instruction is usually issued to the printer control unit prior to the start of any major printing operation. This instruction emulates an LPB 1 pulse and causes the control unit to issue an LPB SBS COMP pulse, a P SBS COMP pulse, and a P IOT pulse, if requested to the computer. The instruction also causes a CLR LPB Flag pulse to be issued, by clearing the LPB Flag flip-flop. In addition, the clr buf instruction is fed through a 5-millisecond delay network to the printer where it clears all buffers. Load Printer Buffer lpb Address 0045 The LPB pulse is regenerated as an LPB1 pulse in the control unit and strobes the character bits from the computer, through the control unit, and into printer storage. It sets the LPB Flag to 0 and causes a CHAR TRANS pulse to be sent to the printer. Print and Space pas Address 1x45 The PAS signal causes the printer to print the line stored in its buffers and space to the next line (x is decoded to select on of 8 format channels). It sets the End-of-Line flip-flop to the ONE state, and strobes spacing control bits MB9, MB10, and MB11 into the control unit, where they are compared with information sent back by the printer during spacing. When comparison is made, a STOP FORMS signal is issued to the printer, and the PAS Flag flip-flop is set to the ONE state. STANDARD DEC PROGRAM LIBRARY FOR PDP-1 The standard library is designed to provide the nucleus of a growing system of programs and subroutines for the PDP-1. It consists of two broad categories of programs: (1) General and (2) Maintenance, all of which operate with the Standard PDP-1. GENERAL MACRO ASSEMBLY PROGRAM MACRO is a two-pass assembly program which produces a self-loading, machine language version of a program written in MACRO Symbolic Language. Important features of MACRO include: * Complete macro-instruction facilities with automatic dummy-argument assignment at call-time. * Automatic "constant" and "variable" assignment. Only unique constants are stored. * Symbol assignment printout in alphabetical or numerical order (at programmer option). * Symbol table punchout acceptable by the DDT Program (see below) to allow symbolic debugging. * Informative error printouts. * Automatic repeated assembly of a specified symbolic statement. * Automatic block storage assignment. * Punched block-letter tape labelling. The MACRO package includes: * (1) the Internal Operations Manual with complete, symbolic program lisiting, * (2) the Programming Manual and * (3) the necessary symbolic and self-loading machine language tapes. DDT (DEC DEBUGGING TAPE) This program is a complete symbolic-octal debugging aid. Its operation is controlled from the typewriter. Its major features are: * Ability to read MACRO generated symbol table tapes to allow completely symbolic debugging. * Examination and modification of the contents of selected memory locations. * Block-search according to specified bits within a specified word. * Printout or punchout of specified areas of memory. * Read and compare tape with memory and printout discrepancies. EXPENSIVE TYPEWRITER Under typewriter control, this program is capable of editing symbolic tapes by reading a tape into its "buffer", accepting addition and corrections, and punching out the amended "buffer" contents. It can perform tape-to-tape, tape-to-typewriter, and typewriter-to-tape translations. UTILITY PROGRAM GROUP * RANDOM, a random number generation subroutine for 18 bits * SINGLEDEC, a single precision floating point package for arithmetic using an 18-bit fraction and an 18-bit exponent * Master Tape Duplicator, a perforated tape duplicator that verifies tape with character count and checksum * DO, a short "Debug in Octal" routine * PUNCHOUT, a routine that saves all non-zero memory * Octal Typeout, a short routine for octal output to typewriter MAINTENANCE A complete set of standard test tapes and their description and use is delivered with each PDP-1. APPENDIX Abbreviated Instruction List BASIC INSTRUCTIONS OPER. TIME INSTRUCTION CODE # EXPLANATION (/u/sec) ------------------------------------------------------------------------------ add Y 40 Add C(Y) to C(AC) 10 and Y 02 Logical AND C(Y) with C(AC) 10 cal Y 16 Equals jda 100 10 dac Y 24 Deposit C(AC) in Y 10 dap Y 26 Deposit contents of address part of AC in Y 10 dio Y 32 Deposit C(IO) in Y 10 dip Y 30 Deposit contents of instruction part of AC in Y 10 div Y 56 Divide 40 max dzm Y 34 Deposit zero in Y 10 idx Y 44 Index (add one) C(Y), leave in Y & AC 10 ior Y 04 Inclusive OR C(Y) with C(AC) 10 iot Y 72 In-out transfer, see below isp Y 46 Index and skip if result is positive 10 jda Y 17 Equals dac Y and jsp Y+1 10 jmp Y 60 Take next instruction from Y 5 jsp Y 62 Jump to Y and save program counter in AC 5 lac Y 20 Load the AC with C(Y) 10 law N 70 Load the AC with the number N 5 law-N 71 Load the AC with the number -N 5 lio Y 22 Load IO with C(Y) 10 mul Y 54 Multiply 25 max opr 76 Operate, see below 5 sad Y 50 Skip next instruction if C(AC) <> C(Y) 10 sas Y 52 Skip next instruction if C(AC) = C(Y) 10 sft 66 Shift, see below 5 skp 64 Skip, see below 5 sub Y 42 Subtract C(Y) from C(AC) 10 xct Y 10 Execute instruction in Y 5+ xor Y 06 Exclusive OR C(Y) with C(AC) 10 OPERATE GROUP OPER. TIME INSTRUCTION CODE # EXPLANATION (/u/sec) ------------------------------------------------------------------------------ cla 760200 Clear AC 5 clf 76000f Clear selected Program Flag (f = flag #) 5 cli 764000 Clear IO 5 cma 761000 Complement AC 5 hlt 760400 Halt 5 lap 760100 Load AC with Program Counter 5 lat 762200 Load AC from Test Word switches 5 nop 760000 No operation 5 stf 76001f Set selected Program Flag 5 IN-OUT TRANSFER GROUP PERFORATED TAPE READER INSTRUCTION CODE # EXPLANATION ------------------------------------------------------------------------------ rpa 720001 Read Perforated Tape Alphanumeric rpb 720002 Read Perforated Tape Binary rrb 720030 Read Reader Buffer PERFORATED TAPE PUNCH INSTRUCTION CODE # EXPLANATION ------------------------------------------------------------------------------ ppa 720005 Punch Perforated Tape Alphanumeric ppb 720006 Punch Perforated Tape Binary ALPHANUMERIC ON-LINE TYPEWRITER INSTRUCTION CODE # EXPLANATION ------------------------------------------------------------------------------ tyo 720003 Type Out tyi 720004 Type In SEQUENCE BREAK SYSTEM TYPE 120 INSTRUCTION CODE # EXPLANATION ------------------------------------------------------------------------------ esm 720055 Enter Sequence Break Mode lsm 720054 Leave Sequence Break Mode cbs 720056 Clear Sequence Break System dsc 72kn50 Deactivate Sequence Break Channel asc 72kn51 Activate Sequence Break Channel isb 72kn52 Initiate Sequence Break cac 720053 Clear All Channels HIGH SPEED DATA CONTROL TYPE 131 INSTRUCTION CODE # EXPLANATION ------------------------------------------------------------------------------ swc 72x046 Set Word Counter sia 720346 Set Location Counter sdf 720146 Stop Data Flow rlc 720366 Read Location Counter shr 720446 Set High Speed Channel Request PRECISION CRT DISPLAY TYPE 30 INSTRUCTION CODE # EXPLANATION ------------------------------------------------------------------------------ dpy 720007 Display One Point SYMBOL GENERATOR TYPE 33 INSTRUCTION CODE # EXPLANATION ------------------------------------------------------------------------------ gpl 722027 Generator Plot Left gpr 720027 Generator Plot Right glf 722026 Load Format gsp 720026 Space sdb 722007 Load Buffer, No Intensity ULTRA-PRECISION CRT DISPLAY TYPE 31 INSTRUCTION CODE # EXPLANATION ------------------------------------------------------------------------------ dpp 720407 Display One Point on Ultra Precision CRT CARD PUNCH CONTROL TYPE 40-1 INSTRUCTION CODE # EXPLANATION ------------------------------------------------------------------------------ lag 720044 Load a Group pac 720043 Punch a Card CARD READER TYPE 421 INSTRUCTION CODE # EXPLANATION ------------------------------------------------------------------------------ rac 720041 Read Card Alpha rbc 720042 Read Card Binary rcc 720032 Read Card Column PROGRAMMED MAGNETIC TAPE CONTROL TYPE 51 INSTRUCTION CODE # EXPLANATION ------------------------------------------------------------------------------ msm 720073 Select Mode mcs 720034 Check Status mcb 720070 Clear Buffer mwc 720071 Write a Character mrc 720072 Read Character AUTOMATIC MAGNETIC TAPE CONTROL TYPE 52 INSTRUCTION CODE # EXPLANATION ------------------------------------------------------------------------------ muf 72ue76 Tape Unit and FinalT mic 72ue75 Initial and Command mrf 72u067 Reset Final mri 72ug66 Reset Initial mes 72u035 Examine States mel 72u036 Examine Location inr 72ur67 Initiate a High Speed Channel Request ccr 72s067 Clear Command Register AUTOMATIC MAGNETIC TAPE CONTROL TYPE 510 INSTRUCTION CODE # EXPLANATION ------------------------------------------------------------------------------ sfc 720072 Skip if Tape Control Free rsr 720172 Read State Register crf 720272 Clear End-of-Record Flip-Flop cpm 720472 Clear Proceed Mode dur 72xx70 Load Density, Unit, Rewind mtf 73xx71 Load Tape Function Register cgo 720073 Clear Go MULTIPLEXED A-D CONVERTER TYPE 138/139 INSTRUCTION CODE # EXPLANATION ------------------------------------------------------------------------------ rcb 720031 Read Converter Buffer cad 720040 Convert a Voltage scv 72mm47 Select Multiplexer (1 of 64 Channels) icv 720060 Index Multiplexer AUTOMATIC LINE PRINTER TYPE 64 INSTRUCTION CODE # EXPLANATION ------------------------------------------------------------------------------ clrbuf 722045 Clear Buffer lpb 720045 Load Printer Buffer pas 721x45 Print and Space SKIP GROUP OPER. TIME INSTRUCTION CODE # EXPLANATION (/u/sec) ------------------------------------------------------------------------------ sma 640400 Dkip on minus AC 5 spa 640200 Skip on plus AC 5 spi 642000 Skip on plus IO 5 sza 640100 Skip on ZERO (+0) AC 5 szf 6400f Skip on ZERO flag 5 szo 641000 Skip on ZERO overflow (and clear overflow) 5 szs 6400s0 Skip on ZERO sense switch 5 SHIFT/ROTATE GROUP OPER. TIME INSTRUCTION CODE # EXPLANATION (/u/sec) ------------------------------------------------------------------------------ ral 661 Rotate AC left 5 rar 671 Rotate AC right 5 rcl 663 Rotate Combined AC & IO left 5 rcr 673 Rotate Combined AC & IO right 5 ril 662 Rotate IO left 5 rir 672 Rotate IO right 5 sal 665 Shift AC left 5 sar 675 Shift AC right 5 scl 667 Shift Combined AC & IO left 5 scr 677 Shift Combined AC & IO right 5 sil 666 Shift IO left 5 sir 676 Shift IO right 5 Alphabetical Instruction List INSTRUCTION CODE INSTRUCTION CODE INSTRUCTION CODE -------------------------------------------------------------------- add 40 jsp 46 ril 66 2 and 02 jda 17 rir 67 2 asc 72 kn51 jmp 60 rlc 72 0366 cac 72 0053 jsp 62 rpa 72 0001 cad 72 0040 lac 20 rpb 72 0002 cal 16 lag 72 0044 rrb 72 0030 cbs 72 0056 lat 76 2200 rsk 72 0047 ccr 72 s067 law 70 rsr 72 0172 cgo 72 0073 lem 72 0074 sad 50 cks 72 0033 lio 22 sal 66 5 cla 76 0200 lpb 72 0045 sar 67 5 clf 76 000f lsm 72 0054 sas 62 cli 76 4000 mcb 72 0070 sci 72 c157 clrbuf 72 2045 mcs 72 0034 scl 66 7 cma 76 1000 mel 72 u036 scr 67 7 cpm 72 0472 mes 72 u035 scv 72 mm47 crf 72 0272 mic 72 uc75 scw 72 c057 dac 24 mrc 72 0072 sdb 72 2007 dap 26 mrf 72 u067 sdf 72 0146 dio 32 mri 72 ug66 sfc 72 0072 dip 30 msm 72 0073 sft 66 div 56 mtf 73 xx71 sla 72 0346 dpp 72 0407 muf 72 uc76 sil 66 5 dpy 72 0007 mul 54 sir 67 6 dsc 72 kn50 mwc 72 0071 skp 72 2f45 dur 72 xx70 nop 76 0000 slp 72 2145 dzm 34 opr 76 sma 64 0400 eem 72 4074 pac 72 0043 spa 64 0200 esm 72 0055 pas 72 1x45 spi 64 2000 flb 72 1045 ppa 72 0005 stf 76 001f glf 72 2026 ppb 72 0006 sub 42 gpl 72 2027 prl 72 0045 swc 72 x046 gpr 72 0027 ral 66 1 sza 64 0100 gsp 72 0026 rar 67 1 szf 64 000f hlt 76 0400 rac 72 0041 szo 64 1000 icv 72 0060 rbc 72 0042 szs 64 00s0 idx 44 rcb 72 0031 tyi 72 0004 inr 72 ur67 rcc 72 0032 tyo 72 0003 ior 04 rcl 66 3 xct 10 iot 72 rcr 67 3 xor 06 isb 72 kn52 rdk 72 0037 Numerical Instruction List CODE INSTRUCTION CODE INSTRUCTION CODE INSTRUCTION -------------------------------------------------------------------- 00 * 64 2000 spi 72 kn52 isb 02 and 66 sft 72 0053 cac 04 ior 66 1 ral 72 0054 ism 06 xor 66 2 ril 72 0055 esm 10 xct 66 3 rcl 72 0056 cbs 12 * 66 5 sal 72 c057 scw 14 * 66 6 sil 72 ug66 mri 16 cal 66 7 scl 72 ur67 inr 17 jda 67 1 rar 72 5067 ccr 20 lac 67 2 rir 72 u067 mrf 22 lio 67 3 rcr 72 0070 mcb 24 dac 67 5 sar 72 0071 mwc 26 dap 67 6 sir 72 0072 mrc 30 dip 67 7 scr 72 0073 msm 32 dio 70 law 72 0074 lem 34 dzm 71 law - 72 uc75 mic 36 * 72 iot 72 ue76 muf 40 add 72 0001 rpa 72 c157 sci 42 sub 72 0002 rpb 72 0407 dpp 44 idx 72 0003 tyo 72 1045 flb 46 isp 72 0004 tyi 72 2f45 slp 50 sad 72 0005 ppa 72 4074 eem 52 sas 72 0006 ppb 76 opr 54 mul 72 0007 dpy 76 0000 nop 56 div 72 0030 rrb 76 000f clf 60 jmp 72 0033 cks 76 001f ztf 62 jsp 72 0034 msc 76 0100 lap 64 skp 72 u035 mes 76 0200 cla 64 000f szf 72 u036 mel 76 0400 hlt 64 00s0 szs 72 0037 rdk 76 1000 cma 64 0100 sza 72 0045 prl 76 2200 lat 64 0200 spa 72 0047 rsk 76 4000 cli 64 0400 sma 72 kn50 dsc 64 1000 szo 72 kn51 asc Alphnumeric Codes By Character CHARACTER FIO-DEC CONCISE LOWER UPPER CODE CODE ----------------------------- a A 61 61 b B 62 62 c C 263 63 d D 64 64 e E 265 65 f F 266 66 g G 67 67 h H 70 70 i I 271 71 j J 241 41 k K 242 42 l L 43 43 m M 244 44 n N 45 45 o O 46 46 p P 247 47 q Q 250 50 r R 51 51 s S 222 22 t T 23 23 u U 224 24 v V 25 25 w W 26 26 x X 227 27 y Y 230 30 z Z 31 31 0 20 20 (right arrow) 1 " 01 01 (double quotes) 2 ' 02 02 (single quote) 3 ~ 203 03 (not - tilde) 4 04 04 (implies - horseshoe open to the left) 5 205 05 (or - like a V)) 6 206 06 (and - like an A with no crosspiece)) 7 < 07 07 (less than) 8 > 10 10 (greater than) 9 211 11 (up arrow) ) ] 255 55 | 256 56 (non-spacing overstrike and vertical) - + 54 54 (minus and plus) _ 40 40 (non-spacing middle dot and underline) , = 233 33 . 73 73 (period and multiply - the little x) / ? 221 21 FIO-DEC CONCISE CODE CODE --------------------------------- Lower Case 272 72 Upper Case 274 74 Space 200 00 Backspace 75 75 Tab 236 36 Carriage Return 277 77 Tape Feed 00 00 Red * - 35 Black * - 34 Stop Code 13 - Delete 100 - * Used on Type-Out only, not on keyboard Alphanumeric Codes By Concise Codes FIO-DEC CONCISE CHARACTER CODE CODE LOWER UPPER ----------------------------- 00 00 Tape Feed - 100 Delete 00 200 Space 01 01 1 " 02 02 2 ' 03 203 3 ~ 04 04 4 (implies) 05 205 5 (or) 06 206 6 (and) 07 07 7 < 10 10 8 > 11 211 9 (up arrow) - 13 Stop Code 20 20 0 (right arrow) 21 221 / ? 22 222 s S 23 23 t T 24 224 u U 25 25 v V 26 26 w W 27 227 x X 30 230 y Y 31 31 z Z 33 233 , = 34 - black * 35 - red * 36 236 tab 40 40 _ (non-spacing middle dot) 41 241 j J 42 242 k K 43 43 l L 44 244 m M 45 45 n N 46 46 o O 47 247 p P 50 250 q Q 51 51 r R 54 54 - + 55 255 ) ] 56 256 | (non-spacing overstrike) 57 57 ( [ 61 61 a A 62 62 b B 63 263 c C 64 64 d D 65 265 e E 66 266 f F 67 67 g G 70 70 h H 71 271 i I 72 272 Lower Case 73 73 . (multiply) 74 274 Upper Case 75 75 Backspace 77 277 Carriage Return * Used on Type-Out only, not on keyboard Character Set for DEC Type 64 Line Printer CHARACTER SEQUENCE CHARACTER SEQUENCE AND CODE (OCTAL) CHARACTER AND CODE (OCTAL) CHARACTER ------------------------------------------------------------------------ 40 (non-spacing middle dot) 1 1 41 J 2 2 42 K 3 3 43 L 4 4 44 M 5 5 45 N 6 6 46 O 7 7 47 P 10 8 50 Q 11 9 51 R 12 ' 52 space 13 ~ 53 = 14 (implies) 54 - 15 (or) 55 ) 16 (and) 56 (non-spacing overstrike) 17 < 57 ( 20 0 60 _ 21 / 61 A 22 S 62 B 23 T 63 C 24 U 64 D 25 V 65 E 26 W 66 F 27 X 67 G 30 Y 70 H 31 Z 71 I 32 " 72 (times) 33 , 73 . 34 > 74 + 35 (up arrow) 75 ] 36 (right arrow) 76 | 37 ? 77 [ Octal To Decimal Integer Conversion Table OCTAL DECIMAL OCTAL DECIMAL ------------------------------------ 1 1 1000 512 2 2 2000 1024 3 3 3000 1536 4 4 4000 2048 5 5 5000 2560 6 6 6000 3072 7 7 7000 3584 10 8 10000 4096 20 16 20000 8192 30 24 30000 12288 40 32 40000 16384 50 40 50000 20480 60 48 60000 24576 70 56 70000 28672 100 64 100000 32768 200 128 200000 65536 300 192 300000 98304 400 256 400000 131072 500 320 500000 163840 600 384 600000 196608 700 448 700000 229376 Note: On the PDP-1 400000 to 700000 are negative integers with 8 8 conversions listed below: 400000 -131071 500000 -98303 600000 -65535 700000 -32767 Table Of Powers Of Two (Omitted since it won't fit right.) ------------------------------------------------------------------------ This page maintained by *greeng3@rpi.edu* /Last Updated On: Sun Oct 16 16:20:16 1994/ ------------------------------------------------------------------------