LIBRARY OF THE 
 
 UNIVERSITY OF ILLINOIS 
 
 AT URBANA-CHAMPAICN 
 
 l&CoX 
 
 «W5.4ft-420 
 
 "/ 
 
 *— *5 ^ 7 C 
 
 \ \ \ \ ; <—? c 
 
 K \ \ \ / > C 
 
 \ \ \ \ / > L 
 
 ^c— ^ L 
 
 T 
 
 FC(O) 
 
 X__} 
 
 SC(O) 
 
 DC(O) 
 
 ^ ^ ^ 
 
 FC(I) 
 
 SC(I ) 
 
 DC(I) 
 
 T 
 
 FC(2) 
 
 2 
 
 SC(2) 
 
 A 
 
 DC(2) 
 
 } . ) . ) 
 
 FC(3) 
 
 SCO) 
 
 DC (3) 
 
 T 
 
 AU(O) 
 
 TTl 
 
 AU(I) 
 
 A 
 
 u 
 
 ^ ^ 
 
 PAU 
 
 <* EXCHANGE NET- 
 
 J. 
 
 1 
 
 I/O PROCESSORS 
 I , 
 
 r 
 
 I 
 
 CENTRAL UNITS- 
 
 ttt.tj.^ r ^ *> VV n ,^ 
 
 CHANNEL INTERFACE UNITS 
 4|5|6|7l8|9|l0l 
 
 II 
 
 SECONDARY STORAGE 
 
 12 
 
 SCAN/DISPLAY 
 
 13 
 
 14 
 
 INTER- 
 MACHINE 
 LINKS 
 
 15 
 
 LOW 
 SPEED 
 TERM. 
 
 FIGURE 1.2 SCHEMATIC OF ILLIAC IE COMPUTER 
 
 6/16/69 
 
 Section 1.2 - h/k 
 
1.3 General Description of the Taxicrinic Processors 
 1.3.1 Basic Purpose of the Taxicrinic Processors 
 
 The Taxicrinic Processors are the central control units of 
 Illiac III. Their principal activites are the manipulation, search and 
 systemization of abstract graphs (bilateral list structures) which have 
 been produced from the pictorial input to the Pattern Articulation Unit. 
 In addition to this they also issue commands to the other Illiac III 
 processors (e.g., Arithmetic Units) whenever they are needed to perform 
 specialized operations. The name "Taxicrinic" comes from two Greek words: 
 x q E,\Q meaning "arrangement" or "pattern", and ro^ia meaning to "judge", thus 
 indicating the TP's general purpose, which is to syntactically analyze 
 digitized pictures and other material which can be cast into the form of a 
 directed, labeled graph. 
 
 Because the main purpose of a TP is to process list structures, 
 its main operations are centered around this type of operation. A certain 
 number of simple arithmetic instructions can be performed, but, in general, 
 whenever a complicated arithmetic computation must be performed, an Arith- 
 metic Unit (AU) is utilized. This is done by giving an AU a command via 
 the Exchange Net (XN). 
 
 The TP also has the ability to initiate input-output operations 
 by giving commands to the Input/Output Processor (I0P) via the Interrupt 
 Unit (IU) and to control the jobs performed by the Pattern Articulation 
 Unit (PAU). The commands necessary to exercise this control are given to 
 the various units concerned through the Exchange Net system which sets up 
 the necessary priority schemes. The Exchange Net also controls the communi- 
 cation between all the processors (including the TP's) and the various 
 storage modules. 
 
 It should be kept in mind that all four TP's are exactly the 
 same. Each is equipped with its own private fast registers and operates 
 completely independently of the other TP's. 
 
 5/2/69 Section 1.3.1 - 1/2 
 
CABLE DRIVERS 
 
 POINTER REGISTERS 
 
 AND 
 
 SPARE BUFFER REGISTER 
 
 4 CABLE TERMINATORS 
 
 ii ► 
 
 SEGMENT NAME 
 REGISTERS 
 
 PRSNB 
 
 .I ► 
 
 ASSOCIATIVE REGISTERS 
 AND 
 ASSOCIATION LOGIC 
 
 BASE/BOUNDS REGISTERS 
 AND 
 INSTRUCTION REGISTER 
 
 DB 
 
 BROS 
 
 OPERAND STACK 
 REGISTERS 
 
 W V ,r " 1 ! V. I 
 
 INPUT SIGNALS 
 
 PERMUTER 
 
 OUTPUT 
 
 T 
 
 INSTRUCTION REGISTER 
 
 IR 
 
 LOGIC REGISTER f 
 
 L R 
 
 DISTRIBUTION REGISTER ► 
 
 DR 
 
 ADDER 
 
 A 
 
 ARITHMETIC REGISTER ftR f 
 
 EXCHANGE 
 NET 
 
 
 Figure 1.3.1 - Major TP Registers and Data Paths 
 
 11/20/70 
 
 Section 1.3.1 - 2/2 
 
1-3.2 General O rganization of the Taxicrinic Processor 
 1.3.2.1 The Taxicrinic Processor 
 
 Figure 1.3.1 shows the main registers and subprocessors of the 
 TP, exclusive of the main control, together with the various data paths 
 between them. The main "active" registers are the Instruction Register 
 (IR), the Logic Register (LR), the Distribution Register (DR),the Arith- 
 metic Register (AR), and the Spare Buffer Register (SBR). These are all 
 36 bits long (h bytes of 8 bits and 1 flag each) and are used to hold data 
 temporarily as various instructions are being processed. None of these 
 are directly accessible to the programmer. 
 
 The main "storage" registers are the Base Registers 
 (8 registers of 27 bits or 3 bytes), the Associative Registers (7 registers 
 of 16 bits), the Pointer Registers (15 registers of 36 bits or k bytes), 
 the PR Segment Name Registers, (16 registers of 16 bits), the Operand 
 Stack (one continuous register of 32 bytes) and the Instruction Buffer 
 Register (one double word 8 bytes). These registers contain data which 
 may be used by the programmer during the execution of his program. They 
 are all accessible by programming except for the Associative Registers and 
 the Instruction Buffer Register, although the Base Register may 
 only be changed by "privileged" instructions. 
 
 There are other registers in the TP which are not accessible to 
 the programmer and which are used during special operations. These will be 
 fully explained in their respective sections in this manual. 
 
 Finally in connection with Figure 1.3.1 it should be noted that 
 the output from the Permuter, the Distribution Bus ( DB) , is not a register. 
 It consists of 36 lines which serve as inputs to nearly all of the registers 
 and control sections in the TP. The DB is the main avenue of information 
 transfer in the TP. 
 
 6/10/69 Section 1.3.2.1 - 1/1 
 
1-3.2.2 The TP Subprocessors 
 
 The general structure of the TP is divided up into various sub- 
 processors which are in turn controlled by the TP main control sequencing. 
 These subprocessors communicate with the main control by means of "con- 
 trol lines" which give commands to the subprocessors and "output lines" 
 which give the main control information about the status of the subprocess. 
 The subprocessors are in general fairly independent and need only receive a 
 small number of control line inputs to perform rather complex operations. 
 
 The main subprocessor groups are the Permuter, the Operand Stack 
 and Operand Stack Control, the Pointer Registers and Pointer Register 
 Control, the Base Registers and Base Register Control, the Instruction 
 Buffer Register, the 32 Bit Adder, the Boolean/Shift Logic, 
 Algebraic /Logical Compare Logic, and the Cell Size Generator. 
 
 The permuter is a system of gates and drivers which is central 
 to the transfer of information in the Taxicrinic Processor. As can be 
 seen in Figure 1.3.1 it is capable of transferring information to and 
 from all the subprocessors of the TP and essentially all of the fast storage 
 registers. One of the reasons that the permuter is required is that 
 operands are not constrained to be on "natural boundaries". For example, a 
 double word operand may have 3 bytes in one double word of core and 5 bytes 
 in the next double word of core. The permuter is used to assemble 
 these bytes into a single double word operand in the TP fast memory. 
 
 The name "permuter" is derived from the fact that an input cell 
 may be permuted to make its boundaries coincide with its destination bound- 
 aries. The permutation may be likened to a circular left shift on a byte 
 basis. The position of the four bytes is changed, but the position of one 
 relative to the other is not. For example, the cell: A B C D appears 
 as B C D A when permuted left one byte and as D A B C when 
 
 6/10/69 Section 1.3.2.2 - l/ 3 
 
permuted left three bytes. Cells smaller than k hytes (bytes or halfwords) 
 are assumed to have garbage in the non-data bytes while double words must be 
 permuted one word at a time. 
 
 In addition to permuting the input cell, the permuter has the 
 capability to inhibit all of the output bytes in any combination, or any 
 combination of bits in the rightmost output byte (byte 3). This facility 
 enables the permuter, among other things, to generate constants to put on the 
 distribution line (+32, +8, +2 and +1 are provided for) and to mask in bits 
 to the low order positions of, say the Pointer Registers, as they are gated 
 through the permuter. 
 
 The actual Permuter logic cards are also used to construct the 
 storage space for the LR, IR, AR and DR. The Permuter is described in 
 Section 2.1. 
 
 The Subprocessors for the Operand Stack, the Pointer Register 
 and the Base Register all require a more detailed description than could 
 possibly be given at this time; their complete description will be deferred 
 until Section 2. 
 
 The Instruction Buffer Register (IBR) is an eight byte (double 
 word) register used to store that portion of the instruction code which has 
 yet to be processed. It may also be used to store successive instructions 
 which will be executed after the present one. 
 
 The 32 bit Adder in the Taxicrinic Processor is used to perform 
 binary addition within the TP. It is also used to generate the outputs for 
 the Boolean operations, EQV and XOR. The adder uses 2's complement number 
 representation and employs two levels of carry lookahead to hasten carry 
 propagation.* The adder is broken down into eight four-bit sum groups with 
 full carry lookahead within the groups. The second level of lookahead occurs 
 between groups, with lookahead between groups 1, 2 and 3 and between groups 
 k through 8. The final carry between these two second level groups is a 
 "ripple" carry. 
 
 *For a more complete discussion of carry lookahead adders, see Wiegel, 
 Roger I , "Methods of Binary Addition", DCS Report No. 195, February 1 9 66. 
 
 6/10/69 Section 1.3.2.2 -2/3 
 
The Boolean logic performs the Boolean functions "AND", "OR", 
 "XOR" and "EQV". The "XOR" and "EQV" functions are generated using part 
 of the 32 bit adder. 
 
 The Shift logic employs the permuter to make shifts in multiples 
 of 8 bits. The shift control first makes the highest multiple-of-8 bit 
 shift that it can without exceeding the desired shift. This is done using 
 the permuter and inhibiting the necessary bytes. After this has been done 
 the shift control shifts one bit at a time until the proper number of addi- 
 tional bits have been shifted. Since the flags are not touched in the bit 
 shifting, the shift control only -will shift flags in multiples of 8 (i.e. , 
 when the permuter is used). 
 
 The Algebraic/Logical Compare Logic is used to accomplish alge- 
 braic and logical compares (greater, equal and less), the AR equal to zero 
 test, and flag match compares. The instructions realized are CPRA, CPRL, 
 TEST(M), SCAN(M), and TA.Operands are compared by subtracting one from 
 another; then signs are compared and appropriate indicators are set. The 
 logic discussed here can only be used with long or short fixed point numbers; 
 decimal and floating point numbers are routed to the floating point arith- 
 metic unit. 
 
 6/10/69 Section 1.3.2.2 - 3/3 
 
2. SUBPROCESSOR DESCRIPTIONS 
 
 2.1 Permuter 
 
 The Permuter is a system of gates and drivers which are 
 central to the transfer of information in the Taxicrinic Processor. 
 As can be seen in Figure 1.3.1, it is capable of transferring informa- 
 tion to and from all the subprocessors of the TP and almost all fast 
 storage registers. 
 
 The name "permuter" derives from the fact that an input cell 
 may be permuted to make its boundaries coincide with its destination 
 boundaries. A permutation begins with a circular left shift on a 
 byte basis. The position of the four bytes is changed, but the cyclic 
 ordering of the bytes is preserved. For example, the cell: 
 
 A 
 
 BCD 
 
 appears as 
 
 B 
 
 C ' D I A 
 
 when permuted left one byte and as 
 
 D 
 
 i 
 
 A : B 
 1 
 
 — — — 
 C 
 
 when permuted left three bytes. Cells smaller than k bytes (that is, 
 bytes and half-words) are assumed to have garbage in the non-data posi- 
 tions, while double words must be permuted one word at a time. 
 
 In addition to permuting the input cell, the permuter has the 
 capability to inhibit all of the output bytes in any combination, or in 
 the rightmost output byte (byte 3) to inhibit any combination of bits. This 
 
 3/5/69 
 
 Section 2.1 - 1/2 
 
facility enables the permuter, among other things, to generate con- 
 stants to put on the distribution bus (+32, +8, and +2 are provided 
 for) and to mask in bits to the low order positions of (for example) 
 the pointer registers as they are gated through the permuter. The SCR 
 (Stack Control Register) and OSTR (Operand Stack Top Register) of the 
 Operand Stack and the ICTR (instruction Counter) are the registers which 
 may be masked in. 
 
 Finally it should be noted that the permuter logic cards also 
 physically contain the registers for the LR, DR, AR and IR. Although 
 these registers are not directly used by the permuter to execute its 
 permutation operations, these registers are commonly used as sources or 
 destinations for data (see Figure 1.3.1 ) For example, the permuter 
 boards are used in data transfers from the LR and DR even though this 
 data path is not shown as going through the permuting mechanism. As a 
 matter of fact, since data going from the LR to the DR is not always permu- 
 ted, the LR can be simply gated directly to the DR whenever this is 
 desired - thus saving time. 
 
 U/U/69 Section 2.1 - 2/2 
 
2.1.1 Permuter - Functional Description 
 2.1.1.1 Permuter Input 
 
 follows 
 
 The logic used to realize the permuter input gating is as 
 
 inputs from ith 
 position of all inputs 
 to Permuter 
 
 i+27 i+18 i+9 
 
 PL3/E 
 
 PL2/E 
 
 W 
 
 PL1/E 
 
 PLO/E 
 
 input driver 
 
 W 
 
 W 
 
 *all arithmetic 
 is Mod(36) 
 
 U 
 
 i output also goes to i-9 
 
 i-18 
 i-27 
 
 Figure 2.1.1.1/1 - Permuter Schematic 
 The PLi/E are the permutation selection gate signals. PL3/E, 
 for example, enables the left 3 permutation. PLO/E is the straight -through 
 (left zero) gate. 
 
 3/5/69 
 
 Section 2.1.0.1- 1/2 
 
Every possible input to the permuter has a gated line which 
 is an input to the input driver (see figure above). Thus each bit in 
 any input byte will go to one of the 36 input drivers depending on which 
 byte it is in and its position in that byte. The outputs of these input 
 drivers go to the corresponding bit positions in each of the four byte 
 positions. Here they are gated with the corresponding permute signal. 
 
 As an example, input driver 36 will have as inputs the 36th 
 bit of all permuter input registers. This is the 9th position (flag) 
 in the 3rd byte (bytes are numbered from the left to 3). Thus the 
 output of input driver 36 is gated to position 36 by the PLO/E signal, to 
 position 27 by the PLl/E signal, to position 18 by the PL2/E signal and 
 to position 9 by the PL3/E signal (i.e., the 9th bit position of each 
 byte). At the same time position 36 of the permuter will be receiving 
 the outputs of input drivers 9, 18 and 27 which will be gated with PLl/E, 
 PL2/E and PL3/E, respectively. Thus the output (pin P in the diagram 
 above) for the 36th bit position will depend on which of the h permute 
 signals is activated. 
 
 /69 Section 2.1.1.1 - 2/2 
 
2.1.1.2 Permutation Control Logic 
 
 Once the input has been selected by enabling the gate from 
 the desired register to the input drivers, the Permutation Control Logic 
 ensures that the proper permutation takes place. This logic has 3 
 inputs: a source bit-pair, a destination bit-pair and a reversing bit. 
 
 To determine the permutation which is desired, the position 
 of the first byte of the cell must be known for both the source and 
 destination registers. These positions are given by the bit-pair 
 "addresses" as shown in the figure below. Here an address of "00" 
 indicates that a cell is to be left-justified in its source (destination) 
 register. This address code is also just the low order two bits of a 
 memory address or the low order two bits of the Stack Control Register 
 in the Operand Stack logic or the Instruction Byte Counter. 
 
 00 01 
 
 10 
 
 11 
 
 Bit-Pair Address Convention 
 
 In summary then, the source bit-pair indicates the position 
 of the left-most byte of the cell in its source register. In like manner 
 the destination bit pair gives the position the left-most byte 
 is to occupy in the destination register. 
 
 The reversing bit is used to specify the direction in which 
 the data is to flow. In the permuter the paths which must be provided 
 with permutation are: 
 
 1. Memory to registers (LR, DR, AR, IR) - left justified 
 
 2. Operand Stack to registers - left or right justified 
 
 9/26/69 Section 2.1.1.2 -1/3 
 
3. Base Registers to registers - left justified 
 k. Instruction Buffer to registers - left justified 
 or justified on "byte 1. 
 
 The "natural" flow of information is taken to be from the 
 various types of storage (memory, stack, buffer, etc.) to the working 
 registers (IB, DR, AR, IR). For this direction the reversing bit is 
 considered off (0). When the reversing bit is on (l), the data flows 
 in the reverse direction and the permutation is changed accordingly. 
 
 Gating signals from main control select the permuter input and 
 signify left or right justification (if required). The Permutation Control 
 Logic then works by feeding the proper bit-pairs into the source and 
 destination pair buses. After the two bit-pairs have been loaded, the 
 reversing bit (RSD/E) is used to gate them to the decoding circuits (see 
 Section 2.1.1.3). If the data flow is in the "natural" direction the 
 source bit-pair and destination bit-pairs are gated straight through to 
 the X and Y busses respectively (as they are called in Section 2.1.1.3). 
 While if the data flow is in the "reverse" direction the source bit-pair 
 is gated to the Y lines while the destination bit-pair is gated to the 
 X lines. 
 
 When none of the four "natural" or "reverse" data paths are 
 being evoked, the source and destination inputs to the decoder are in 
 the rest state, 00/00 which decodes as "gate straight through", i.e. 
 without permutation. Thus if a data path other than one of these four 
 is used, and no permutation is necessary, the data transfer can be 
 carried out without concern for the permuter control inputs. One specxal 
 case does arise: right and left shifting in steps of 9 bits; in this case 
 all the internal permutation signals of the permutation control logxc 
 are disabled using the LRS/E signal. The proper permutation for the shift 
 required is decoded (along with inhibit signals - see Section 2.8.1.2 in 
 the Shift Control Logic) and is routed directly to the permutation gate 
 drivers (output signals PLO, PL1, etc.) to effect the permutation. 
 
 7/19/69 Secti ° n 2 - 1 ' 1 - 2 ' 2/3 
 
The LRS/E signal is also turned on automatically 
 whenever one of the direct permutation control lines from the main 
 control logic is turned on. This inhibits the normal operation of 
 the permutation control and allows the main control logic to determine 
 the permutation. 
 
 9/17/69 Section 2.1.1.2 - 3/3 
 
2.1.1.3 Permutation Decoding 
 
 If we let )^X be the source byte "address" bit-pair and 
 Y Y be the destination bit-pair, then these can be considered a 
 four-bit binary number which can be decoded to give the proper permuta- 
 tion. If the four permutation control signals are designated PLO , PL1 , 
 PL2 and PL3 , they can be expressed in terms of XX and Y Y as: 
 
 Left 0: PLO: = X^Y^ v X^Y^ v X^Y^ v X^Y^ 
 
 5 10 15 
 
 Left 1: PLI: = \^-J 2 v X^Y^ v X^Y^ v X^Y^ 
 
 h 9 ik 3 
 
 Left 2: PL2 : = X^Y^ v X^Y^ v X^Y^ v X^Y^ 
 
 8 13 2 7 
 
 Left 3: PL 3 : = X^Y^ v X lX2 Y lY2 v X^Y^ v Xl X 2 Y lY2 
 
 12 1 6 11 
 
 The PLi signals are then used to drive the four groups of (36 
 each) permutation gates. 
 
 There are also "direct" inputs to the PLi drivers. In this case 
 the desired permutation can be selected directly without decoding from 
 X , etc. An example of this is the shift control logic. If a "direct" 
 input is used, the decoder is inhibited by the LRS/E signal input. The 
 direct inputs go directly to the PLi drivers in complement form. 
 
 3/5/69 Section 2.1.1.3 - 1/1 
 
2.1.1. U Permuter Output 
 
 The basic output of the Permuter is the Distribution Bus (DB). 
 This bus is a k byte (36 bit) bus and serves as an input to all the major 
 registers and storage areas in the Taxicrinic Processor. 
 
 Although not shown in Figure 1.3.1, the DB is, in reality, 
 made up of two separate busses which are arranged as shown below: 
 
 Permuter Output 
 
 to DR, IR, 0S 
 
 PR, BR, IBR, SBR 
 
 to AR, LR, etc. 
 
 Figure 2.1.1.U/1 - Distribution Bus 
 The DBP bus specifically drives the DR, IR, 0S, the PR's, the BR's, 
 the IBR and the SBR. The DB bus drives the AR, LR , the NR » s , the 0S control 
 logic, the BR name storage flip-flops, the instruction byte counter, the 
 shift boolean logic, the adder input gates, the bounds check logic, and 
 the cable drivers to the Exchange Net. 
 
 In this manual, reference to the Distribution Bus (or DB) will 
 mean either of these two busses since their contents are logically equivalent 
 Reference to DBP however will specifically mean the DBP part of the 
 Distribution Bus. 
 
 U/8/69 
 
 Section 2.1.1.U - l/l 
 
2.1.1.5 Inhibit Generation Logic 
 
 In Figure 2.1.1.5/1 we give a more complete version of the 
 logic circuit shown in Figure 2.1.1.1/1. As can be seen, several masking 
 options have been dot-or'ed with the input driver and an inhibit signal 
 has been added to the output. The purpose of this section is to describe 
 the effects which can be achieved using these supplementary features. 
 
 First, however, we shall run through a general description of the 
 
 circuit with particular attention to inhibit conditions. Note that due to the 
 
 dot-orjm the FBI line, if any of the masking option lines are selected, 
 
 the FBI will be forced to "0" . This in turn v-m fo W /. a + *, 
 
 -Liixb ±n T,urn will force the corresponding 
 
 DBP bit position to "1" (assume for the moment that only PLO/E is "l"). 
 
 It should be noted that the inhibit line will force the DBP to "0" if it 
 
 is turned on, independent of the FBI signal. Thus we have two methods 
 
 for changing the DBP: We can force the DBP to "l" by turning on one of 
 
 the masking options, or we can force the DBP to "0" by turning on the inhibit. 
 
 Now we can begin to consider the various effects that can be 
 accomplished using these two methods. The permuter is capable of inhibiting 
 any combination of bytes in the output using the IBO/E, IB1/E, IB2/E, and 
 IB3/E signals. Each of these signals is hooked up to the 9 corresponding 
 bit position inhibit signals on the output of the Permuter. In addition 
 any combination of bits in the rightmost byte of the Permuter Output 
 (byte 3) may be inhibited since the bit inhibit lines for this byte are 
 made so they can be controlled individually if desired (see TP logic 
 drawings 04-5 and 0U-3). 
 
 It is also possible to construct constants using the Permuter. 
 If all of the input gates are turned off (referring again to Figure 2.1.1.5/1), 
 the FBI lines will all be "l" which will cause the DBP bus to contain all 
 zeroes. Then in order to make positive constants, the corresponding FBI 
 lines need only have one of their "masking options" turned on. The positive 
 constants which are provided are + 1 , +2 , + 8 and +3 2 (all 2's complement). 
 
 V25/69 
 
 Section 2.1.1. 5 - 1/5 
 
MASKING 
 OPTIONS 
 
 INPUTS 
 
 at most only 
 I on 
 
 > 
 > 
 
 INPUT 
 DRIVER 
 
 PLO/E 
 
 INHIBIT 
 
 = I, if mask bit =0 
 
 U 
 
 FBI 
 
 
 DBP OUTPl, 
 BUS 
 
 FIGURE 2.1. 1. 5/1 INHIBIT GENERATION LOGIC. 
 
 5/2/69 
 
 Section 2.1.1.5 - 2/5 
 
 
In order to generate negative constants all l's are put on the 
 output bus by inhibiting the PLO/E signal with LRS/E. If no other PLi/E 
 signals are on, the DBP will become all ones. Then a one's complement 
 number can be produced by inhibiting the proper output position. This 
 number is changed to two's complement in the adder by injecting a low-order 
 carry. The negative constants which are produced in this manner are -1, -2, 
 -8 and -32 (all l's complement). 
 
 The final effect which can be produced is masking. In many cases 
 it is desired to mask the SCR, 0STR, or ICT into the lower order bits of 
 a pointer register. Here the FBI lines corresponding to the positions 
 which are to be masked in, are set to zero by one of the masking option 
 signals. This causes the corresponding output bit position to become "l". 
 The actual contents of the register to be masked is used to set the 
 inhibit lines. If a given bit position in the register is "0", the 
 corresponding inhibit line is set, thus causing the Permuter output to be 
 "0" in that position. 
 
 In two of the masking cases given above (ICT and SCR) the masking 
 is done automatically. Whenever PR#0 is used as the input to the Permuter 
 the ICT is automatically masked into the lowest 3 bits. Whenever PR#13 is 
 the input, the SCR is masked into the lowest 5 bits. During Operand Stack 
 overflow or underflow (see Sections 2.2.2.5 and 4.2.2.8) the 0STR (2 bits) 
 must be masked into the Vth and 5th lowest order bits with zeros in the 
 lowest 3 bits of PR#13. Since the SCR is normally masked into PR#13 there 
 must be an inhibit to SCR masking when the 0STR is being used instead. 
 
 With this in mind the control logic necessary for the automatic 
 masking of the ICT and SCR are given in Figure 2.1.1.5/2 and /3 respectively. 
 The signal definitions are given below: 
 
 PRP/G = 1 if a PR is the permuter input 
 
 N13S = 1 if the TGR = 13 
 
 NOS = 1 if the TGR = 
 
 NPR13/S = 1 if control selects PR#13 
 
 NPRO/S = 1 if control selects PR#0 
 
 OSTP/G = 1 if the OSTR is to be masked into PR#13 
 
 OSR = data bus to the inhibit signals 
 
 SCRP/G, ICTP/G = mask select signals 
 
 V25/69 Section 2.1.1.5 -3/5 
 
ICT 
 
 PRP/G — { 
 TNB/G 
 NOS 
 
 PRP/G — 
 NPRO/S — 
 
 DBP 
 
 IC LO'GIC IN DRIVER FROM K " 
 
 
 CONTROL CONTROL LOGIC DTL LOGIC IN LOWER BAY 
 
 FIGURE 2.1.1.5/2 ICT MASKING CONTROL LOGIC 
 
 5/16/69 
 
 Section 
 
 2.1.1.5 - U /5 
 
OSTP/G 
 
 OST R 
 
 SCR 
 
 16 
 
 lH 
 
 PRP/G 
 
 OSTP/G 
 NI3S 
 
 16-1 \> 
 
 SCRP/6 
 
 PRP/G 
 
 OSTP/G 
 
 NPRI3/S 
 
 OSTP/G 
 
 16-1 p 16-1 D 
 
 y SCRP/G \ \ r 
 
 OSR 
 
 04- 5V 
 
 B3i 
 
 DBP 
 
 FIGURE 2.1.1.5/3 SCR MASKING CONTROL LOGIC 
 
 5/2/69 
 
 Section 2.1.1.5 - 5-/5 
 
2.1.1.6 Gate Inhibits for the LR and IR 
 
 As mentioned previously in Section 2.1.1, the Permuter cards 
 physically contain the LR, AR, IR and DR flip-flop storage. These 
 registers are built up from a "latch" type flip-flop which is shown and 
 described in Figure 2.1.1.6/1. In order to load a new value into the 
 latch flip-flop, the gate must be on and the latch signal must be off. 
 
 The gating inputs for each of these h registers are organized 
 on a byte basis, i.e. each gating signal is used to activate the h gate 
 and k latch lines to the appropriate register. In this process it is 
 quite simple to impose gate inhibits on the individual bytes of a register, 
 and this is exactly what was done in the case of the DR and the IR. 
 
 The rest of this section will describe the LR gate inhibit logic. 
 The IR logic is quite similar and may be found in the TP Logic Book in the 
 Series-OU drawings. The LR gate which is inhibited is the DR-to-LR gate. 
 The logic for this inhibition is shown in Figure 2.1.1.6/2. DLR/G is 
 the main gating signal from the control logic. It is NAND'ed with 
 
 DLRi/N (i = 1, 2, 3, k) , one of Ij- inhibit lines. Thus if DLRi/N = "l" , 
 the gate signal will be inhibited and the gating and latching signals to 
 the ith byte of the LR will not be activated. Note that other signals 
 such as the right shift enable, RS/E, the AND enable, AND/E, or others 
 can also set the LR latch signal to and the gate signal to 1. 
 
 This facility is used mainly in the merging operations in the 
 memory access sequencing. It is also used in other control sequences 
 where it is desired to replace part of the contents of a register and 
 leave the remaining contents unmodified. 
 
 h/Q/69 Section 2.1.1.6 - 1/3 
 
GATE 
 "A 
 
 LATCH 
 
 OUT 
 
 n 
 
 i>o 
 
 *OUT 
 
 where n = 0,l,2," • additional gates 
 
 Gate: enables A to be transmitted to the NOR 
 
 Latch: when off, allows the output of the gate AND's to deter- 
 mine the state of the flip-flop. When ON maintains 
 state of the flip-flop so, that gates will not affect it 
 
 Figure 2.1.1.6/1 - Latch Logic Circuits 
 
 H/8/69 
 
 Section 2.1.1.6 - 2/3 
 
RS/E 
 
 AND/E 
 
 DLRO/N 
 DLR/G 
 
 DLRI/N 
 
 DLR2/N 
 
 DLR3/N 
 
 5/16/69 
 
 > 
 
 > 
 > 
 
 > 
 
 > 
 > 
 
 -Z> 
 
 r> 
 
 >-o 
 
 > 
 > 
 
 > 
 
 ■o 
 
 ~> 
 
 -~> 
 
 LRLO 
 
 LRO/G 
 
 LRLI 
 LRI/G 
 
 LRL2 
 LR2/G 
 
 LRL3 
 
 LR3/G 
 
 L R Li = LATCH 
 LRi/G=GATE 
 
 FIGURE 2.1.1.6/2 GATE INHIBIT CIRCUIT 
 
 Section 2.1.1.6 
 
 - 3/3 
 
2.1.1.7 Permuter Register Gate Drivers 
 
 These gate drivers are used to drive the various flip-flop 
 (latch) register and permuter input gates. The various gating lines 
 can be found on the 237-00 card schematic in the circuit book or in the 
 TP Logic Book. Each -237 card contains one bit position of the permuter 
 as well as the LR, DR, AR, IR registers. 
 
 There is only a single input to the LR, AE and IR; all the various 
 gating signals are combined in the control gating logic, and the single 
 gate and latch signal needed is sent to the register on a per byte basis. 
 The data inputs are combined in a dot-or (see, for example, the SHIFT/ 
 BOOLEAN logic). Note that the LR and AR are loaded with the complement 
 of the desired output. 
 
 The gating signals are formed on a byte basis; there is a 
 group of drivers for each register byte (9 bits). 
 
 Provision is made to inhibit bytes on certain transfers, these 
 being: DR to LR; adder to AR, and DB to IR. In this case, the inhibit 
 implies that the byte inhibited is not transferred into the register in 
 question. The original register contents remain unchanged however — 
 nothing is set to zero. This feature allows bytes to be masked into a 
 common register (c.f. PR transfer logic). 
 
 U/8/69 
 
 Section 2.1.1.7 - l/l 
 
2.1.2 Signal Name Lists for the Permuter 
 2.1.2.1 Control Signals 
 
 Input Select Gates : 
 
 ARP/G/ - AE is the permuter input storage block 
 
 BR/S - Select BR from BR-IBR 
 
 BRSP/G/ - BR-IBR Storage Block output bus (BR0Si) is the permuter 
 
 input 
 CTP/G/ - Cable terminators is the permuter input 
 DRP/G/ - DR is the permuter input 
 IBR/S - Select IBR from BR-IBR Storage Block 
 ICTP/G - Mask ICT into low-order 3 bits of DB 
 IRP/G/ - IR is the permuter input 
 LRP/G/ - LR is the permuter input 
 
 OSP/G/ - Operand stack output bus (BR0Si) is the permuter input 
 PRP/G/ - Pointer register output bus (PRBi) is the permuter input 
 SCRP/G/ - Mask SCR into low-order 5 bits of DB via OSR bus and 
 
 permuter 
 Constant Generator Enable Signals : 
 
 Ml/E/ 
 M2/E/ 
 MU/E/ 
 M8/E/ 
 M32/E/ 
 
 Generate -1 
 Generate -2 
 Generate -h 
 Generate -8 
 Generate -32 
 
 Pl/E 
 P2/E 
 PU/E 
 P8/E 
 P32/E 
 
 Generate +1 
 Generate +2 
 Generate +h 
 Generate +8 
 Generate +32 
 
 6/17/69 
 
 Section 2.1.2.1 - 1/3 
 
Reg 
 
 ister Transfer Gate Signals 
 
 ADR/G/ 
 BAR/G/ 
 BDR/G/ 
 BIR/G/ 
 BLR/G/ 
 CDR/E/ 
 DLR/G/ 
 LDR/G/ 
 
 Gate AR to DR - direct 
 
 Gate DB to AR 
 
 Gate DBP to DR 
 
 Gate DBP to IR 
 
 Gate DB to LR 
 
 Gate DB + spares to cable driver 
 
 Gate DR to LR - direct 
 
 Gate LR to DR - direct 
 
 Register Transfer Byte Inhibit Signals 
 
 ADDO/N/ 
 ADD1/N/ 
 ADD2/N/ 
 ADD3/N/ 
 
 Inhibit adder output byte i 
 
 BIRO/N/ 
 BIR1/N/ 
 BIR2/N/ 
 BIR3/N/ 
 
 Inhibit byte i on DBP to IR gate 
 
 DLRO/N/ 
 DLR1/N/ 
 DLR2/N/ 
 DLR3/N/ 
 
 Inhibit byte i on DR to LR gate 
 
 6/17/69 
 
 Section 2.1.2.1 - 2/3 
 
Permutation Control Signals: 
 
 BNR/G 
 
 CRRL/G 
 
 LJI/E 
 LRS/E 
 
 OPJ/E 
 
 OSRL/G 
 OSRR/G 
 OSS/S 
 
 RJI/E 
 RSD/E 
 
 Base name register gate. Uses contents of base 
 
 name register to control permutation of data into 
 
 or out of (depending on RSD/E) "base register 
 
 storage. 
 
 Gate "core" to registers (DR, LR, etc.) left 
 
 justified 
 
 Left justify 
 
 Inhibits normal operation of permutation control 
 
 logic. 
 
 This signal is used by the shift control logic 
 
 to perform shifts in byte multiples using the 
 PLi and/or IBPLij signals. It must also be used 
 when the PLCi signals are used by the main control 
 
 logic to generate a permutation. Note! One of 
 
 the above mentioned signals must be on when 
 
 LRS/E is on in order for the permuter to work 
 
 properly. (See Section 2.1. U. 3) . 
 
 Used if IBRP/G is also on. Justifies opcode on 
 
 byte 3 instead of byte 0. 
 
 Gate OS to registers right justified 
 
 Gate OS to registers left justified 
 
 Select OS. Turns on when either DBOS/S or 
 
 DSP/G is 'on'. 
 
 Right justify 
 
 Reverses role of source and destination bits in 
 
 permutation control 
 
 9/17/69 
 
 Section 2.1.2.1 - 3/3 
 
2.1.2.2 "Internal" Signals Used by the Permuter 
 
 Logic Book Name 
 
 ARi 
 
 ARi/G 
 
 ARGi/G 
 
 ARLi 
 
 ARNi/ 
 
 BRSP/G 
 
 CSB 
 
 CSBH 
 
 CSH 
 
 CTi 
 
 DBi 
 
 DBDi/G 
 
 DBPi 
 
 DRi 
 
 DRLi 
 
 FBIi 
 
 IBi/E 
 
 IBPL13 
 
 IBPL21 
 
 IBi/ 
 
 ICTi 
 IRi 
 IRi/G 
 IRLi 
 
 Description 
 
 Arithmetic Register - bit i 
 
 AR input gating signal, ARN — >AR - byte i 
 
 Gate signal, AR-^DR, byte i 
 
 AR latch, always = ARi/G- byte i 
 
 Adder output bus = AR input - bit i 
 
 Permuter in gate signal, BR0Si— ^FBIi, = 
 
 OSP/G v BRS 
 
 Cell size = byte 
 
 Cell size = byte or halfword 
 
 Cell size = halfword 
 
 Cable Terminators - bit i 
 
 Distribution Bus, bit i = DBPi 
 
 Gate signal, DB— > DR - byte i 
 
 Distribution Bus directly from permuter - bit i 
 
 Distribution Register -bit i 
 
 DR latch, byte i = whenever something— *DR - 
 bit i 
 
 Output from permuter input gate - bit i 
 
 Inhibit Enable - byte i 
 
 Inhibit byte 1 - permute left 3 
 
 Inhibit byte 2 - permute left 1 
 
 Inhibit signal for byte i - from shift 
 
 control 
 
 Instruction byte counter - bit i 
 
 Instruction register - "bit i 
 
 IR input gating signal DB-^IR - byte i 
 
 IR latch, always = IRi/G - byte i 
 
 5/16/69 
 
 Section 2.1.2.2 - 1/2 
 
Logic Book Name 
 
 LRi 
 
 LRDi/G 
 
 LRi/G 
 
 LRLi 
 
 LRNi 
 
 OSRi 
 
 OSTRi 
 PLi 
 
 PLi/E 
 PRBi 
 SCRi 
 T2Ri 
 
 Description 
 
 Logic Register ~ bit i 
 
 Gate signal, LR-> DR - byte i 
 
 LR input gating signal LRN— > LR - byte i 
 
 LR latch, = LRi/G - byte i 
 
 In-bus to LR - comes from SHIFT/BOOLEAN and 
 
 PACK-UNPACK, etc. _ byte i 
 
 Bus used to insert 0STR, SCR and ICT onto 
 
 permuter output (last 5 bits) 
 
 Operand Stack Top register 
 
 Permute left i bytes - output from shift 
 
 control 
 
 Enable permute left i bytes 
 
 Pointer Register Bus - bit i 
 
 Stack Control Register - bit i 
 
 Temporary Register 2 in Operand Stack - bit 
 
 5/16/69 
 
 Section 2.1.2.2 - 2/2 
 
iiii/» iib, ibL, hl) (0:3) BIT(l); 
 
 ,RROS,CT,DB,DBB,DBP,DR,IR,LR,PRB) (36) ♦ (BNR, ICT ) (3) , 
 ,CCT)(4), (SCR,T2R) (5) , 0STR(2), BRS(0:7)) 
 
 RITI1 \ CVTCDMAI • 
 
 2.1.3 Permuter - PL/I Description 
 
 FXFC PL1 
 
 ■Ll.SYSPUNCH nn SYSOUT=B 
 
 PL 1. SYS IN DO * 
 
 PFR_IN: PROCURPG, BNRG,BRGS, BRSBPG, CRRLGt CSR, 
 
 CSBH, CSH, CTPG, DBRJ, DRPG, IBPL13, 
 
 IBPL21, IBRSt ICTPG, IRPG, LJIE, LJOPE, 
 
 LRPG, LRSEt M16E, MIEt M2E, M32E, 
 
 M^E. M8Et MRSETG, OPJE, OSPG, OSTPG, 
 
 P16E, PIE, P2E, • P32E, P4E, PRE, 
 
 PLC1, ?LC2, PLC3, PRPG, RJIF, RSOE, 
 
 SCRPG, LRSF1, IB, IBC, PL, HSSS, 
 nsPTG, nsPFG); 
 
 OCL (OSPTG,nSPFG) BIT(l); 
 HCL LRSE1 BIT(l); 
 
 dcl nsss bit ( 1 ) ; 
 
 DCL( ARPG,BNRG, BRGS, BRSBPG, CPRLG, CSB, 
 
 CSRH, CSH, CTPG, DBRJ, DRPG, IBPL13, 
 
 IBPL21, IBRS, ICTPG, IRPG, LJIF, LJOPF, 
 
 LRPG, LRSE, M16E, M1E, M2E, M32E, 
 
 M 4F, MRE, NRSFTG, OPJF, OSPG, OSTPG, 
 
 P16F, PIE, P2E, P32E, P4E, PRE, 
 
 PLC1, PLC2, PLC3, PRPG, RJIF, RSDF, 
 
 SCRPG) BIT(l), (IB, IBC, PL) (0:3) BIT(l) 
 nCL( (AR 
 (ACT 
 
 BIT(l) external; 
 
 OCL 
 
 OCL FBK36) BIT( 1 ) , I BE ( : 2 ) B I T ( 1) ,IBE3(1 :9)BIT( 1 ) , 
 (S 
 P 
 ( I ,J ) 
 DSPG=()SPTG I DSPFG; 
 I* DFTFRMINE LFNGTH OF SHIFT FROM SOURCE AND DESTI- 
 NATION POSITIONS, S AND 0. IF LRSE IS ON INHIBIT 
 NORMAL COVTROL.*/ 
 
 LRSF = MIE|M2E|M4E|MRE|M16E|M32E|LRSF1 I PLC1 I PLC2 I PLC3 ; 
 
 IF LRSF THFM DO; 
 
 PLI0F,PLI1E,PLI2E,PLI3E=»0'B; 
 GO TO SKIPSD; 
 FND; 
 
 S(0),S(1),D(0),D(1)='0'B; 
 
 IF BRGS THEN DO; 
 
 S(0)=BRS( 1 ) |BRS(2) |BRS(5) |BRS(6) ; 
 
 S(1)=BRS(1)|BRS(3)|BRS(5)|BRS(7); 
 
 END; 
 
 if dbrj then do; 
 
 d(0)=csh; 
 
 0(1 )=CSB; 
 
 END; 
 IF OSSS THEN DO; 
 
 S(0 )=T2R(4) ; 
 
 S(l )=T2R(5) ; 
 
 END; 
 
 Bl I ( 1 ) EXTERNAL ; 
 (PLI0F,PLI1F,PLI2E,PLI3F) BIT(l); 
 BI (36 ) BIT(l),IBE(0:2)BIT(l),IBE3(l: 
 S,D) (0:1 )BU( 1 ) ,OSR( 1:5) BIT(1 ), 
 PLOF,PLlF t PL2E,PL3E,BRSPG) BIT( 1 ), 
 I , J ) FIXED BIN; 
 
 HA/70 
 
 Section 2.1.3 - 1/9 
 
IF BNRG THEN DO; 
 S (1 )=BNR(3) ; 
 S(0)=BNR(2)£(-BNR(3) ) 
 
 |BNR(3)£(-BNR(2) ) 5 
 
 END; 
 
 IF CRRLG THEN DO; 
 S(0)=AR(3A); 
 S(l )=AR(35) ; 
 END; 
 
 IF IBRS THEN DO; 
 
 S(0)=ICT(2 ) ; 
 S(l ) = ICT(3) ; 
 D(l )=GPJE; 
 
 END; 
 
 IF LJGPE THEN n(l)='0 , B; 
 IF RSDE THEN 
 
 BEGIN; 
 
 DCL TEMP(0: 1 ) BIT( 1 ) ; 
 TEMP=S; 
 
 S = d; 
 
 D=TEMP; 
 
 end; 
 
 no 
 
 PLI0F= -S(0)£-S( 1)£-D(0)£-D( 1 
 |-,S(0)£ S( 1)£-.D(0)S D(l 
 | S(0)£-S( 1)£ D(0)£-D(1 
 | S ( ) & S ( 1 ) £ D ( ) 6 D(l 
 
 PLI1E- -S(0)£ S( 1 )£--D(0) &-.D( 1 
 | S(0)6-«S(1>£'-D(0)6 D(l 
 | S(0)£ S(l)£ D(0)£-D(1 
 |-.S(0)£-'S( 1)£ D(0)£ D( 1 
 
 PLI?F= S(0)£-S( 1)£-D(0)£-D(1 
 | S(O) £ S( 1)£^D(0)£ D(l 
 |-.S(0)£-S(1>£ 0(0) £-.&(! 
 |-.S(0)£ S< 1)£ D(0)£ 0(1 
 
 PI I3E= S(0)£ S(1)£-D(0)£-D(1) 
 |-.S(0)£-^S(1)£-*D(0)£ 0(1 
 |-,S(0)£ S( 1)£ 0(0) £-0(1 
 I S(0)£->S( 1 )£ 0(0)£ 0(1 
 
 end; 
 skipso: pl0f=pli0e |pl(0) ; 
 
 PL1F=PLI1E|PL( 1) I IBPL21IPLC1; 
 
 PL2F = PLI2E|PL(2) |PLC2; 
 
 PI 3E=PLI3F|PL(3)|IBPL13|PLC3; 
 
 /* SELECT PRGPFR INPUT TO BE GATED*/ 
 
 F B I = ' ' B ; 
 
 brspg='0'b; 
 
 IF ORPG THEN FBI=DR; 
 
 ll/H/TO 
 
 Section 2.1.3 - 2/9 
 
IF IRPG THFM FB I = I R ; 
 
 IF LRPG THFN FBI=LR; 
 
 IF ARPG THFN FBI=AR; 
 
 IF PRPG THEN FBI=PRB; 
 
 IF CTPG THFM FBI=CT; 
 
 IF HSPTGI OSPFGI BRSBPG THEN DO; 
 
 BRSPG=«1»B; FBI=BRnS; END; 
 
 /* CHFCK FOR MASKING */ 
 
 IF nSTPG | SCRPG THFN DO 1=31 TO 35; 
 FB I ( I ) = • 1 • B ; 
 END; 
 IF ICTPG THFN OH 1=33 TO 35; 
 FBI ( I )=' 1 «B; 
 END; 
 IF MRSETG THEN 00 1=1 TO 4; 
 FBI ( I+27)=ACT( I ) ; 
 FBI ( 1+31 )=CCT( I ) ; 
 fnd; 
 /* DFTERMINE INPUTS TO INHIBIT ENABLF NETWORK FROM 
 OPERAND STACK.-/ 
 
 nSR= '1 "B; 
 
 IF OSTPG THFM 00; 
 
 OSR( 1 )=OSTR( 1 ) ; 
 
 gsr(2 )=nsTR(2 ) ; 
 
 0SR(3) ,0SR(4) ,0SR(5)='0'B; 
 
 END; 
 
 IF SCRPG THEM OSR=SCR; 
 
 /* DFTFRMINE INPUTS TO INHIBIT ENABLE NETWORK FROM 
 INSTRUCTION BYTE COUNTER.*/ 
 
 IF ICTPG THEN 00; 
 
 OSR( 1 ) T OSR( 2)='0'B; 
 DO 1=1 TO 3; 
 
 OSR( I+2) = ICT( I ) ; 
 
 END; 
 
 FND; 
 
 /* CALCULATE INHIBITS.*/ 
 
 IBE=»0'B; 
 
 00 1 = 1 TO 3; IBE3( I ) = '0'R; end; 
 
 00 1=1 TO 5; IBE3( I+3)=-»0SR(I ); END; 
 
 IF RJIE THFN 00; 
 
 IF CSBH THEN IBE(0)= I 1 'B; 
 
 IF CSH THEN IBE( 1 ) = • 1 «B; 
 
 IF CSB THEN I BE ( 1 ) t I BE ( 2 ) = ' 1 • B ; 
 
 END; 
 IF LJIF THFN DO; 
 
 IF CSBH THEN IBE3=« 1 «B; 
 
 IF CSH THEN IBE(2)=' l'B; 
 
 11/14/70 Section 2.1.3 - 3/9 
 
IF 
 IF 
 IF 
 IF 
 IF 
 IF 
 
 IF CSR THEN IBE(l) , I BE ( 2 ) = ' 1 ' B ; 
 
 END; 
 
 IBPL13 THEN I3E(1)='1'B; 
 IBP121 THEN IBE(2)='1'B; 
 IB(O) I IBC(O) THEN IBE(0)='1'B; 
 18(1)1 IBC(l) THEN IBE(1)»'1'B; 
 IB ( 2 ) I IBC(2) THEN IBE(2)='1'B; 
 IB(3) I IBC(3) THEN' IBE3='1'B; 
 
 /* CHECK FOR INHIBITS FROM CONSTANT GENERATOR.*/ 
 
 IF M1E THEN IBE3(8)=« l'B; 
 
 IF M2E THEN I BE3 ( 7 ) = ' 1 ' B ; 
 
 IF M4E THEM I BE3 ( 6 ) = ' 1 ' B ; 
 
 IF M8F THEM I B E3 ( 5 ) = ' 1 ' B ; 
 
 IF M16E THEN IBE3(4)=« l'B; 
 
 IF M32E THEN IBF3(3)=' l'B; 
 
 IF P1F THEN FBI (35) = ' 1 'B 
 
 IF 
 IF 
 IF 
 IF 
 
 IF 
 
 P2E 
 
 P4E 
 
 P8F 
 
 P16F 
 
 P32E 
 
 THEN 
 THEN 
 THEN 
 THEN 
 THFM 
 
 FBI (34) = ' l'B 
 FBI (33)=' l'B 
 FBI (32 )=' l'B 
 FBI (31 ) = ' 1 'B 
 FBI (30)=' 1 'B 
 
 DBP=' l'B; 
 
 /* SFLFCT ANO PERFORM SHIFTS.*/ 
 
 IF PLOF THEN OBP=FBI ; 
 IF PL1F THEN 00; 
 
 DO 1=1 TO 27; 
 
 DBP( I )=FBI ( 1+9) ; 
 
 end; 
 
 DO 1=1 TO 9; 
 
 DBP( I+27)=FBI ( I ) ; 
 
 END; 
 
 end; 
 
 IF PL?F THEN DO 1=1 TO 18; 
 
 DBP( I )=FBI ( 1 + 18) ; 
 DBP( I+18)=FBI ( I ) 5 
 END; 
 
 IF PL3F THEN DO; 
 
 DO 1=1 TO 9; 
 
 DBP( I ) = FBI ( 1+27) ; 
 
 END; 
 
 DO 1=1 TO 27; 
 
 DBP( I + 9)=FBI ( I ) 5 
 
 end; 
 END; 
 
 /* CHECK IB INHIBITS.*/ 
 
 IF IBF(O) THEN DO 1=1 TO 9; 
 DBP( I ) = '0'B; 
 
 li/U/TO 
 
 Section 2.1.3 - U/9 
 
FNO; 
 IF I HF( 1 ) THEN OH 1=1 TO 9 ; 
 
 ORP( I+9)=»0'B; 
 FNO; 
 IF IRF(? ) THFM 00 1 = 1 TO 9; 
 
 DBP( I+18)=»0'R; 
 
 END; 
 
 on i=] to 9: 
 
 IF IBF3(I) THEN DBP ( 1 +27 J ■ • « R • 
 
 ENO; 
 
 /* MAKF OR OUTPUTS EQUAL TO OBP OUTPUTS.*/ 
 
 OR t OBR=OBP; 
 FMO PFR_IN; 
 
 HA/70 « *. 
 
 Section 2.1.3 - 5/9 
 
PER OUT 
 
 PROCUDDE, 
 BIRG, 
 DBPRG, 
 LDRG, 
 WRBRE, 
 XORE, 
 ADDN, 
 DBDG, 
 LRDG, 
 
 ARF33, 
 A ORG, 
 B I R G , 
 DBPRG* 
 L DR G , 
 WRBRE, 
 XORE, 
 (ADDN, 
 DBDGr 
 LRDG, 
 
 OCL( AODE, 
 
 ADRG, 
 
 BLRG* 
 
 DBSTG, 
 
 LSE, . 
 
 WRPRLE, 
 
 XRVE, 
 
 ARG, 
 DLRN, 
 
 LRG, 
 
 ARE34, 
 
 ANDE, 
 
 BLRGt 
 
 DBSTG, 
 
 LSE, 
 
 WRPRLE, 
 
 XRVE, 
 
 ARG, 
 
 DLRN, 
 
 LRG, 
 
 ASRWE, 
 BRGSt 
 DLRG, 
 RSEt 
 WRPRVE, 
 ANDE, 
 ARGG, 
 DRL, 
 LRL, 
 ARF35, 
 ASRWE, 
 
 BRGS, 
 
 DLRG, 
 
 RSE, 
 
 WRPRVE, 
 
 DBDSG, 
 
 ARGG, 
 
 DRL, 
 
 LRL) (0:3) 
 BIT(l) 
 
 BARG, 
 
 BSR1G, 
 
 EOVE, 
 
 RWBGE, 
 
 WSBLE, 
 
 ARL, 
 IRG, 
 DBOSG, 
 
 ARARFG) 
 BARG, 
 BSR1G, 
 EOVE, 
 RWBGE, 
 WSBLE, 
 CORE) 
 ARL, 
 IRG, 
 BIT( 1 ) 
 
 BORG, 
 
 BSR2G, 
 
 FLPRN, 
 
 SBRS, 
 
 WSBVE, 
 
 BIRN, 
 
 IRL, 
 
 CDREf 
 
 BORG, 
 BSR2G, 
 FLPRM» 
 SBRS, 
 WSBVE, 
 BIT(l) , 
 
 BIRN, 
 IRL, 
 
 SCR (5), (ASRWE1,ASRWE2,RBRS)(7), 
 PRS(i:14), (PSMWS1,PSNWS2) (0:15 ), 
 
 rr(0:7,36) , 
 PRSNR (0: 15, IB ) , 
 
 fxtermal; 
 
 OCI (ARB,LRB,DRB) (36) BIT(l) EXTERNAL? 
 OCL 00(36) BIT(l) extfrnal; 
 IF CORE THEN CD=DB? 
 
 BRS(0:7) , 
 0SS(0:31 ) , 
 SMR(0:1A,A), PR(0:14,36) 
 0S(0:31,9), ASRG(7,18)) 
 
 BIT( 1) 
 
 /* TRAMSFFR T TO LRN 
 X R\/P = XORE I EOVE; 
 IF XRVE THEN 00; 
 LRM=^T ; 
 
 OH 1=9 TO 36 BY 9; 
 IF 0B( I )=0R( I ) 
 
 end; 
 
 OR AW IMG 07-1 */ 
 
 THEN LRNU )='1'B; 
 
 E N 
 
 TO PROPER REGISTFRS.*/ 
 
 SEND OUTPUT 
 
 DRL=' 1 'B; 
 
 DBDG, ARGG, LRDG='0'B; 
 
 IF BORG I A ORG I L ORG THEN ORL='0'B; 
 
 IF BORG THEN DO; 
 
 DBDG=' l'B; 
 
 or=obp; 
 eno; 
 if a org then 00; 
 
 ARGG=' l'B; 
 
 or=ar; 
 eno; 
 
 IF LORG THEN 00; 
 
 LROG=» 1 «b; 
 
 ll/U/70 
 
 Section 2.1.3 - 6/9 
 
DR=LR; 
 END; 
 IF BLRG THEN LRN < * ) =DB ( * ) | LR N ( * ) ; 
 IF DLRG THEN LRN ( * ) =DR ( * ) I LRN ( * ) ; 
 
 /* CALCULATE LR GATE AND LATCH SIGNALS DRAWING 04-4 */ 
 DO 1=0 TO 3; 
 LRG( I )=RSE|LSE|-*DLRN( I ) £OLRG | BLRG | ANDE I XR VE ; 
 
 END; 
 LRL=-^LRG; 
 
 nn i=o to 3; 
 
 IF LRG(I) THEN DO J=I*9+1 TO 1*9+9; 
 LR( J )=LRN( J) ; 
 
 END; 
 END; 
 
 IF BIRG THEM DO 1=0 TO 3; 
 
 IF -.BIRN( I ) THEN DO; 
 
 IRL( I ) = '0'B; 
 IRG( I ) = • 1 • B; 
 DO J=l*9+1 TO 1*9+9; 
 I R ( J ) = DB P ( J ) ; 
 END; 
 END; 
 END; 
 IF BARG THEM ARN=ARN|DB; 
 DO 1=0 TO 3; 
 
 ARG( I )=BARG I ADDE^ADDN( I ) ; 
 END; 
 
 ARG(0)=ARG(0) IRWBGE; 
 ARL=^ARG; 
 DO 1=0 TO 3; 
 
 IF ARG(I) THEM 0(1 J=I*9+1 TO 1*9 + 9; 
 
 AR (J )=ARM( J ) ; 
 END; 
 END; 
 IF ARARFG THEM Of); 
 
 ARF33=AR(33) ; 
 ARF34=AR ( 34 ) ; 
 ARF35 = AR( 35) ; 
 END; 
 /* CHECK FOR INITIALIZATION OF STACK */ 
 /* DBSTG WILL BE OM IE THE OSTR AND SCR ARE TO BE RFLOADED 
 WITH A MEW OPERAND STACK POINTER ADDRESS */ 
 
 IF DBSTG THEN DO; 
 DO 1=1 TO 2; 
 
 OSTR( I )=DB( 1+30) ; 
 
 END; 
 
 DO 1=1 TO 5; 
 
 SCR( I )=DB( 1+30) ; 
 FMD; 
 FMD; 
 
 11A/70 Section 2.1.3 - 7/9 
 
/* LOAD OS FROM OB */ 
 IF DBOSG THFN DO 1=0 TO 31 1 
 
 if nssu ) then nn; 
 l=mod( 1,4); 
 DO J = l TO 9; 
 
 ns( i tJ)«DBU*9+j); 
 
 end; 
 fnd; 
 fno; 
 
 WRITE ON SELECT POINTER OR SBR IE DESIRED */ 
 IF DBPRG THEN DO; 
 IF WRPRLE THEN DO 1=0 TO 14; 
 
 IF PRS( I ) THEN DO; 
 IF FLPRN THEN DO; 
 DO J=l TO 8; 
 
 PR( I ,J)=DBP( J) ; 
 END; 
 no j =10 to 17; 
 
 PR( I t J)=OBP( J) ; 
 END; 
 END; 
 
 ELSE DO J=l TO 18; 
 
 PR( I, J)=DBP( J) ; 
 
 end; 
 end; 
 end; 
 
 IF WRPRVE THEM DO 1=0 TO 14; 
 IF PRSU ) THEM DO: 
 IF FLPRN THFN DO; 
 
 00 J=19 TO 26; 
 
 Pkd,j )=dbp(J) ; 
 fno; 
 
 no J=28 TO 35; 
 
 PR( I ,J)=DBP( J) ; 
 
 end: 
 
 END; 
 
 FLSE DO J=19 TO 36; 
 PR( I ,J)=DBP( J) ; 
 
 end; 
 end; 
 ENn; 
 
 IF WSBLE&SBRS THEN 
 
 do 1=1 to ib; 
 
 SBR( I )=DBP( I ) ; 
 
 end; 
 
 IF WSBVF f> SBRS THEM 
 no 1=19 TO 36; 
 
 SBR( I )=DBP( I ) ; 
 END? 
 
 end; 
 
 /* IMTERROPT RECOVERY FOR SHADOW NAME REGISTER */ 
 IF BSR1G THFN DO 1=0 TO 2; 
 
 DO J=l TO 4; 
 
 SNR(2*I+8 r J)=DB(I*9+J) ; 
 
 H/W70 Section 2.1.3 - 8/9 
 
SNR(2*I+9, J )=DR( I*9+J+4) ; 
 END; 
 DO J=l TO 4; 
 
 SNR( 14,J)=DB(27+J ) ; 
 
 end; 
 end; 
 IF BSR2G THEN DO 1=0 TO 3; 
 
 DO J=l TO 4; 
 • SNR(2*ItJ)=DB( I*9+J ) ; 
 SNR( 2*1+1 »J)=DB( I*9+J+4) ; 
 END; 
 END; 
 
 /* CHFCK FDR WRITING INTO THE POINTER REGISTER SEGMENT NAME 
 REGISTER PRSNR */ 
 /* DEFINE PRSNR(0:15,18) AS THE INTERNAL REGISTERS ON 
 DRAWINGS 22-4 TO 22-19 IN THE LOGIC BOOK */ 
 DO 1=0 TO 15; 
 
 IF PSNWSl(I) THEN DO J=l TO 8; 
 
 PRSNR( I t J)=DBB( J) ; 
 END; 
 END; 
 DO 1=0 TO 15; 
 
 IF PSNWS2(I) THEN DO J=10 TO 17; 
 
 PRSNR( I, J)=DBB( J) ; 
 END; 
 END; 
 
 /■* ASSOCIATIVE REGISTER WRITE SIGNAL DRIVERS */ 
 
 IF ASRWE THEN DO 1=1 TO 7; 
 IF RBRS( I ) THEN DO; 
 
 ASRWEK I), ASRWE2< I ) = • l'B; 
 
 DO J = l TO 17 WHILE ( J-^ = 9) ; 
 ASRG( I» J)=DBB( J ) ; 
 
 END; 
 END; 
 END; 
 FLSF ASRWE1»ASRWE2=» O'B; 
 
 /* WRITF INTO BASE REGISTER */ 
 
 IF BRGSfcWRBRE THEN DO 1=0 TO 7; 
 
 IF BRS(I) THEN BR ( I ,* ) =DBP ( * ) ; 
 END; 
 LRB=LR; 
 ARB=AR; 
 DRB=DR; 
 END PER_OUT; 
 
 ll/U/70 Section 2.1.3 - 9/9 
 
2.1. h Permuter - Logic Description 
 2.1.4.1 The Basic Permuter Card 
 
 The heart of the Permuter logic is the -237 card shown in 
 Figure 2.1.4.1. This card consists of four latch flip-flops plus two 
 NOR's, each driven by several AND circuits. 
 
 The flip-flops are designated LR, AR, IR, and DR. The first 
 two are independent of any direct action taken by the rest of the card 
 circuitry (i.e. there are no direct connections to the LR and AR flip- 
 flops from the other circuits). 
 
 In the LR flip-flop note that the complement of the input (LRNi) is 
 stored when the gate signal, LRi/G, is logically "l" (+6v) and the latch 
 signal, LRLi, is logically "0" (Ov). After the data has been stored in 
 the flip-flop, the latch signal must be "l" and the gate must be "0". In 
 order to maintain the new state reliabily the latch must become "l" before 
 the gate becomes "0". Otherwise the input signal may be cut off before 
 the new state is "locked in". 
 
 The AR flip-flop works in exactly the same manner as the LR 
 flip-flop. The IR flip-flop is also similar except that the data input 
 is from the second of the 2 NOR's on the -237 card. Since this input 
 (DBPi) is not in complemented form the output definitions are reversed. 
 In effect, by connecting the input of the IR flip-flop internally to the 
 card we are restricting its input so that it can only be loaded directly 
 from the Distribution Bus (DBP). 
 
 The DR flip-flop is like the IR flip-flop, in that its output 
 definitions are reversed. However, in addition it has three inputs 
 instead of the usual one. One of the inputs is from the DBP as in the IR. 
 The other two are from the LR and AR. Each input has its own separate 
 
 4/7/69 
 
 Section 2.1.4.1 - 1/3 
 
gate. Note that in order to store data from one of the three inputs the 
 latching signal (DRLi) must be logically "0" and one of the three gating 
 signals must be "l". If more than one gate is on, the result in the DR 
 will be the OR function of the data on the lines with the gate signals 
 on. Once again, when the data is stored the latch signal should be 
 turned on before the gate signal is turned off. 
 
 The first NOR on the -237 card is what has been called the Permuter 
 input driver (see Section 2.1.1,1 and Figure 2.1.1.5/1). All of the 
 possible inputs to the permuter are AND'ed with their respective gating 
 signals and then NOR'ed together to produce the FBIi signal. This signal 
 is, in effect, the complement of the desired input to the Permuter. As 
 mentioned in Section 2.1,1.5, various signals from other cards may be 
 dot- OR'ed with this line to cause masking on certain parts of the input. 
 The final NOR circuit on the -237 card controls the output from 
 the permuter. The first four inputs to this NOR are gated by the Permuta- 
 tion Control signals, PLO/E, PLl/E, PL2/E and PL3/E. At most only one of 
 these will be on at any given time. The data which is gated by these 
 signals comes from an FBI line on one of four of the Permuter cards. PLO/E 
 gates in the FBI signal from the same card. PLl/E gates in the signal from 
 9 bit positions to the right of the present positions (i.e. i + 9), PL2/E 
 gates the FBI from 18 positions to the right, etc 
 
 The last of the inputs to the final NOR is the inhibit signal 
 which causes the DBP to become "0" if it is turned on. It should be noted 
 again that DBP and DB are logically equivalent (see Section 2.1.1.U). 
 
 Section 2.1.U.1 - 2/3 
 U/7/69 
 
3 d 
 
 In a 
 
 TJ 
 
 -P 
 3 
 
  
 
 Ah 
 
 CVJ 
 0) 
 
 
 
 tsD 
 
 f> w 
 
 5 fe « JOT «h to 
 
 ft* 
 
 (9 
 
 * (E 
 
 6/25/69 
 
 <9 J 
 
 3 i 
 
 y * w ; 
 
 £ ot 5 a. « £ - e „ > - «m 
 
 S a Be. Q.o oat 
 
 * Is) + yj 
 
 - s 
 
 Section 2.1. U.l - 3/3 
 
2.1.4.2 Inhibit Generator 
 
 The Inhibit Generator for the Permuter is contained in Drawing 
 OU-5 in the TP Logic Book. It is used to determine the inhibit signals 
 sent to pin V on the -237 cards. It should be noted that in bytes 0, 1 
 and 2 of the Permuter output, the whole byte is inhibited by the same 
 signal, i.e. IBO/E, IB1/E, or IB2/E, whereas in byte 3 of the Permuter 
 output each of the nine bits can be inhibited individually (see Section 
 2.1.1.5). 
 
 As shown in Figure 2.1.4.2 the inhibit signals can be used for 
 right and left justification of data and for shifting data on a byte basis. 
 A series of five NAND's decode the right and left justification control 
 signals and the cell size signals to determine which inhibit signals should 
 be turned on. The outputs of these NAND's become "0" if the inhibit signal 
 to which they eventually lead must be turned on. In addition to these 
 decoders there are six signals which come from the Boolean/Shift circuits : 
 IBO, IB1, IB2, IB3, IBPL21 and IBPL13. These signals are produced by the 
 Boolean/Shift logic and therefore their generation will be explained in 
 detail in Section 2.8. 
 
 The first h of these 6 signals are obvious in their meaning and 
 are fed directly to the inhibit signal drivers. The last two actually serve 
 two purposes. IBPL21 indicates that byte two should be inhibited and also 
 that there should be a left permutation of 1 byte. The permutation will 
 be discussed later. For now it should be noted that this signal is treated 
 the same as IB2. The IBPL13 is the same type of signal and indicates that 
 byte number 1 is to be inhibited and that' a left permutation of 3 bytes is 
 to take place. This signal is treated similarly to IB1. 
 
 11/25/69 , Section 2.1.4.2 _ 1/3 
 
IBO/E 
 
 IB1/E 
 
 IB2/E 
 
 
 -INHIBIT ALL BITS 
 IN 3RD BYTE 
 POSITION 
 
 FIGURE 2.I.4.2 INHIBIT GENERATION LOGIC 
 
 5/16/69 
 
 Section 2.1. U. 2 - 2/3 
 
There are 3 NMD circuits which act as drivers for IBO/E 
 IB1/E and IB2/E. If one of these is to be turned on, one of the 
 inputs to its respective driver will turn to "0". m the case of byte 
 number 3, however, there are actually nine separate drivers, one for 
 each bit in the byte. If the whole byte is to be inhibited one input 
 in each bit driver is set to "0". otherwise the input rests at "1" and 
 each driver output w thus be controlled individually by the other 
 driver inputs. These individual inhibit signals ffi ay be used as explained 
 in Section 2.1.1. 5 
 
 V25/69 
 
 Section 2.1. k. 2 - 3/3 
 
2.1.U.3 Permutation Control Logic 
 
 The permutation control signals, PLO/E, PLl/E, PL2/E, 
 and PL3/E, are obtained either directly from a set of control signals 
 or indirectly by decoding the contents of the 2 bit source and 
 destination busses. The set of control signals originates from the 
 shift control logic in drawing 17-1 of the TP Logic Book or from the 
 main control logic drivers. The permutation control logic itself is 
 on drawing OU-7. 
 
 If the set of control signals is used to generate the 
 permutation control signals, the decoding network must be disabled. 
 This job is performed by the LRS/E 1 signal which is inverted and 
 used to drive the enabling input of the decoding logic. 
 
 It should be noted that when PLC1, PLC2, or PLC3 is used 
 to control the permutation, the Main Control logic is responsible 
 for turning LRS/E on. This is done at the final driver stage in 
 the control logic just before the signals are sent to the Permuter 
 itself. 
 
 It is also important to notice that if LRS/E is turned on and 
 none of the permutation control signals are activated, none of the 
 input data will get through the Permuter. Instead, the output will 
 be all l's since all of the permutation signals (even PLO/E) will be 
 off. It is exactly this situation that is taken advantage of in the 
 generation of negative constants (see section 2.1.15). The above 
 mentioned logic in the Main Control section is also responsible in 
 this instance to make sure that LRS/E is turned on if Ml/E, M2/E, 
 M1+/E, M8/E, M16/E, or M32/E is turned on. 
 
 The name of this signal derives from the fact that when originally 
 conceived, it was used to allow the Left /Right Shift logic to control 
 the permutation. 
 
 8 /22/69 Section 2. l.U. 3 - lA 
 
Whenever the source and destination busses are used to 
 determine the permutation, the set of control signals must he off 
 and LRS/E must he off. This latter condition enables the 236-15, h 
 bit decoding diode matrix board (see figure 2.1.U.3/D to drive 16, 
 228-05 circuits. These circuits in turn are dot-or'ed and fed to the 
 h NAM) circuits driving the PLi/E signals according to the equations 
 given in section 2.1.1.3. 
 
 The inputs to the decoding circuit consist of the true and 
 complement signals from two, 2-bit busses. These two busses are 
 loaded from the source and destination busses by the Reverse Source 
 and Destination enable signal, -RStTF. When E3B71T = 1. the source bus 
 is gated to the first 2 bit input bus to the decoder (ItiAl and INA2 
 in figure 2.1.U.3/D and the destination bus is gated to the second 
 input bus (INB1 and INB2 in figure 2.1.H.3/1). When W= 0, the 
 gating is reversed and the source bus goes to XHB and the destination 
 bus goes to INA. 
 
 It should be noted that KSHTF is normally automatically 
 activated by special logic in the Main control logic final driver 
 stage where it is turned on by any signal which indicates that there 
 will be a write in one of the storage areas. 
 
 The source and destination busses themselves are generated 
 hy dot-or'ing various types of information onto them depending on the 
 type of registers involved in the transfer and the type of data 
 justification desired. Note that in drawing 0U-7, the source and 
 destination busses are in complemented form as they go into the 
 RSD/E and RSD/E gates . 
 
 The key point to remember when trying to understand the 
 operation of the logic attached to these busses is that the normal 
 flow of data is considered to be from storage areas (ie.memory or the 
 storage blocks) to the "working" registers (ie.AR, DR, IR, LR). Thus 
 
 Section 2.1.U.3 - 2/U 
 8/22/69 
 
when expressing the data justification used by a given storage block, 
 the source bus is always used, even if the data is being loaded into 
 the storage block i nstead of being read out of it . In the case of 
 loading a storage block the RSD/E signal will be set to by the 
 control logic and the source bus will then act as the destination 
 input to the decoding logic. 
 
 With this in mind we can discuss the various inputs to the 
 source and destination busses. 
 
 The DBRJ signal is used when the data is to be right justified 
 in the working registers. In this case, if the cell is a halfword, the 
 "destination" cell will be on the 10 byte boundary and therefore 
 Dl must be forced to '0». If the cell size is a byte the destination 
 address is 01 and D2 must be set to »0'. Note that for word and 
 doubleword cell sizes no action need be taken since the data will begin 
 at the 00 byte address. In doubleword cells this is due to the fact 
 that the doubleword cell is treated as two word size cells in the 
 Permuter. 
 
 When OSS/S is turned on, data is either coming from the 
 OS or going to the OS via the Permuter. The address within the OS, 
 of the cell being accessed is contained in the 5 bit Operand Stack 
 Temporary Register, T2R. In particular, the last two bits of the 
 register, T2RU and T2R5 , indicate the byte boundary address of the 
 cell. Thus, considering the "normal" flow of data through the 
 Permuter, the two source lines must be set equal to the last two 
 T2R bits, ie. SI = T2RT and S2 = T2R?. 
 
 When BRG/S is on, the base. register storage block is being 
 accessed. As is explained in section 2.5.1.1, the storage for the 
 base registers is rather mixed up since each register is only 3 bytes 
 long while the storage blocks are based on 8 byte double words. This 
 causes the beginning byte address to vary according to the base 
 register number. Referring to figure 2.5.1.1, it can be seen that 
 
 8/22/69 
 
 Section 2.1.4.3 - 3/k 
 
the equations for the two source hits can he written as: 
 
 51 = BR1/S v BR2/S v BR5/S v BR6/S 
 
 52 = BR1/S v BR3/S v BR5/S v BRT/S 
 
 Two NATO's utilizing inverted input sjxe used to produce these 
 signals which are then gated to the SI and S2 lines by the BRG/S 
 signal. 
 
 The CRRL/G signal is used when accesses are being made to 
 core. In this case the last two hits of the core address determine 
 the source hit settings. These two hits are stored in ARF3U and 
 ARF35 which are part of a 3 hit register specifically used for storing 
 the low order 3 hits of the core address. 
 
 The IBR/S signal indicates that the IBR part of the BR-IBR 
 storage block is to be accessed. The initial address of the word cell 
 to he accessed is determined by the ICT. Thus ICT2 and ICT3 are 
 gated to the SI and S2 lines respectively. In addition if both 
 IBR/S and OPJ/E are on the 52 line will be activated. This option 
 is used when it is desired to justify the data from the IBR on the 
 01 byte position of the destination. 
 
 8/22/69 Section 2 - 1 - U - 3 " ^ 
 
2 ' 2 Nine Bit/Byte Buffer Storage Blocks 
 
 Nine bit/byte storage blocks are used by the Taxicrinic 
 Processor to buffer data for which fast access is required. The 
 basic storage element is the Smith flip-flop 1 , eight of which are 
 contained on one -20U card. By driving nine of these -20U cards 
 with two -205 cards, a storage block containing eight bytes of 
 nine bits each (8 data bits and 1 flag bit), complete with gates 
 and drivers, is formed. These blocks are then used in groups to 
 build up the various data registers in the TP. 
 
 Storage blocks are used to form 25 registers in the TP 
 in addition to the fast storage in the Operand Stack. Four blocks 
 are required to form the 32 bytes of the Operand Stack maintained 
 in the TP. Eight blocks form the 15 pointer registers (h bytes 
 each) and the Spare Buffer Register (k bytes). And finally k 
 blocks are used to form the 8 Base Registers (3 bytes each) and 
 the Instruction Buffer Register (8 bytes). 
 
 Designed by Professor K. C. Smith 
 
 h/k/69 
 
 Section 2.2 - l/l 
 
2.2.1 Buffer Storage - Functional Description 
 
 The organization of the Buffer Storage Blocks is shown 
 in Drawing 01-0 in the TP Logic Book. Each block is made up of 
 two -205 cards which provide the gating and driving logic, and 
 nine -20h cards which provide the actual storage. Each -20*+ card 
 supplies 1 bit position for each of 8 bytes. 
 
 This section defines the data and control signal inputs to 
 a storage block. Operation of the storage block is then described. 
 
 The two -205 cards together supply 8 Byte Select Drivers 
 (BSD), 2 Input Gate Drivers (IGD), 2 Output Gate Drivers (OGD) and 
 6 spare NMD circuits. All inputs to all drivers rest in the 
 logical "1" state. 
 
 The BSD's set the proper voltage level on the emitters of 
 the flip-flops in the -204 cards. Each BSD drives one flip-flop on 
 each -20U card, these flip-flops then represent the byte designated 
 by their corresponding BSD. As shown in Figure 2.2.1/1 there are 3 
 output levels, which determine the "sensitivity" of the 9 driven 
 flip-flops. A "high" output level (+3.5 volts) enables the flip- 
 flop to receive data or to be written into; the "intermediate" 
 level (+1 volt) is the "holding" level at which the flip-flop can 
 neither be written into or read out of. The "low" output level of 
 the BSD (-2.5 volts) causes the flip-flops to be read out via the 
 Output Gates. 
 
 The signal levels on the two input control lines to the 
 BSD uniquely determine the state of the output line. One input, 
 
 k/k/69 
 
 Section 2.2.1 - 1/6 
 
BYTE SELECT > 
 
 READ/WRITE 
 
 + 6.0 
 
 + 6.0 
 
 BYTE SELECT 
 DRIVER 
 
 (BSD) 
 
 ♦ TO FLIP-FLOPS 
 
 + 3.5/ + I.0/-2.5 
 
 FIGURE 2.2.1/1 BYTE SELECT DRIVER 
 
 
 5/16/69 
 
 Section 2.2.1 - 2/6 
 
the Byte Select line, overrides the effects of the second, the 
 Read/Write line. When the Byte Select line is "l", the BSD 
 output is at the intermediate level (+1 volt). If the Byte Select 
 line is "0" the output will be determined by the Read/Write input 
 signal. When this is "l" the output is at -2.5 volts, the "read 
 out" level. A "0" Read/Write signal sets the BSD output to +3.5 
 volts, or the "write in" state, again only when the Byte Select 
 signal is "0". 
 
 As shown in the TP Logic Book Drawing 01-0 the Byte Select 
 lines come from input pins D,H,L, and P on the two -205 cards. The 
 Read/Write input lines come from pins B,E,J, and M. 
 
 The Input Gate Drivers, as shown in Figure 2.2.1/2, gate 
 in the data line to the 2 input gates of the flip-flops. The inputs 
 to the IGD's are normally resting at logical "l" (+6 volts) causing 
 the outputs to normally rest at "0" (0 volts). The drivers are 
 operated together in the normal method of operation: for a "gate 
 both in" effect, both inputs to the flip-flop are activated with 
 complementary signals. If only the "gate true in" signal on the 
 IGD is activated, only the "true" input to the flip-flops will be 
 activated and the result in the flip-flop will be an OR of the old 
 and new data. It must be remembered that in order for a "write in" 
 to occur, the BSD must also be in the "write in" state. 
 
 On the -205 cards, the IGD's are simply 2 input NAND's 
 which drive NAND circuits on the -20U cards. Each IGD drives 9 
 NAND circuits, (one byte) one from each -20^ card in the block. 
 These NANDS then drive the inputs to the flip-flops. As shown in 
 
 k/k / 6 9 Section 2.2.1 - 3/6 
 
GATE 
 TRUE INTe^" 
 
 u 
 
 17 
 
 GATE 
 BOTH IN+g/o 
 
 INPUT GATE 
 
 DRIVER 
 # 1 (IGD) 
 
 Li 
 
 INPUT GATE 
 DRIVER 
 -#2 (IGD) 
 
 IN DATA 
 
 INHIBIT +6/0 
 
 205 CARDS 
 
 TO FLIP-FLOP 
 INPUTS 
 
 -H6/0 
 
 TO 8 
 OTHER 
 204 CAF 
 
 204 CARD 
 
 FIGURE 2.2.I/2 INPUT GATE DRIVER 
 
 5/16/69 
 
 Section 2.2.1 - U/6 
 
the TP Logic Book Drawing 01-1, the "gate true in" signal to the 
 IGD comes from pin U of the first -205 card. The "gate both in" 
 signal comes from pin 17 of the first -205 card and is tied, intern- 
 ally to the card, to both IGD's. 
 
 The In Data Inhibit signal shown in Figure 2.2.1/2 is used 
 in some of the storage blocks (i.e. the Operand Stack) to inhibit the 
 loading of certain bit positions (notably the flags). If the inhibit 
 signal is set to the logical "0" state, the data will not be trans- 
 mitted to the flip-flops even though the in gates and the select 
 signals are on. 
 
 The Output Gate Drivers on the -205 card drive the output 
 gates on the -20^ cards. They are shown in Figure 2.2.1/3. The 
 voltage level outputs from the driver are +0.7 and -2.9 volts. Inputs 
 to the driver rest at logical "l", the outputs at logical "0". One 
 0GD is used to drive the true gate from the flip-flop; the other, the 
 false gate. The drivers can be operated either simultaneously for a 
 double-gate effect, or singly, for a gate true (false) out effect. 
 If they are only operated singly, the outputs of the output gates 
 (not the gate drivers) may be tied together (dot OR) to yield a true 
 or complement output from the registers onto a single output line. 
 (This has been done in the Operand Stack buffer storage). 
 
 The gating signals into the 0GD must be operated when the 
 BSD is set for the "read out" state. Otherwise the outputs from 
 the output gates will both be "0" (0 volts). 
 
 The OGD's on the -205 cards consist of a 2 input NAKD 
 followed by a driver circuit. There is one OGD on each -205 card. 
 For simultaneous operation, two of the input pins, one from each 
 OGD, are tied together. Pin 20 on the second -205 card connects to 
 the "gate true out". 
 
 k/k / 69 Section 2.2.1 - 5/6 
 
DATA OUT 
 
 GATE 20 
 
 TRUE OUT +6/0 I 
 
 GATE 
 
 BOTH OUT +6/0 
 
 GATE 
 
 OUTPUT GATE 
 DRIVER 
 * 2 (OGD) 
 
 + 0.7/-2.9 
 
 20 
 
 FALSE OUT +6/0 
 
 OUTPUT GATE 
 DRIVER 
 # I (OGD) 
 
 +0.7-2.9 
 
 205 CARDS 
 
 TRUE OUT 
 
 + 6/0 
 
 CD 
 
 FALSE 
 
 FALSE OUT 
 
 +6/0 
 
 OUTPU 
 GATES 
 
 TO 8 
 OTHEf 
 
 204 1 
 
 TRUE 
 
 FROM FLIP-FLOPS 
 
 204 CARDS 
 
 FIGURE 2.2.1/3 OUTPUT GATE DRIVERS 
 
 5/16/69 
 
 Section 2.2.1 - 6/6 
 
2.2.2 Signal Name List for Buffer Storage - Control Signals 
 
 Buffer Storage 
 Name 
 
 Base 
 
 Byte Select 
 
 Read/Write 
 
 Gate Both In 
 
 Data In 
 
 Gate True Out 
 
 Gate False Out 
 
 Data Out 
 
 In Data Inhibit 
 
 Actual Names Used* 
 
 , Spare 
 Inst. Pointer i Buffer 
 Buf. Reg. ] Reg. ) Register 
 
 BRI/S i IBRI/S 
 
 PRi/S 
 
 SBR/S 
 
 WRBR/E ' WRIB/E 
 
 'DBBRS/G- 
 
 BRSBP/G 
 
 BROSi 
 
 *«- 
 
 DBPi 
 
 ■*♦ 
 
 WPRL/E I WSBL/E 
 WPRV/E WSBV/E 
 
 -DBPRS/G- 
 l 
 
 PRTG/S I PR8G/S 
 PR8G/S ! 
 PRBi 
 
 Operand 
 Stack 
 
 OSi/S 
 DBOS/G 
 
 DBOS/G 
 
 OSPF/G ** 
 
 OSPT/G ** 
 BROSi 
 
 FLOS/N 
 
 *Gate True In and Gate Both Out are provided in the storage blocks 
 but not used. 
 
 **Since the outputs from the Operand Stack Storage Blocks are inverted 
 the Output Gates are the reverse of what would be expected. 
 
 11/5/70 
 
 Section 2.2.2 - l/l 
 
2.2.U Buffer Storage - Logical Description 
 
 The purpose of this section is to describe the operation of 
 the buffer storage from a detailed logical and electrical point of 
 view. The description repeats some of the information in Section 2.2.1 
 but extends to a much more detailed level. 
 
 A buffer storage block generally consists of 9, 20k storage 
 boards and 2, 205 driver boards. The 20*+ board as shown in Figure 2.2.U/1 
 contains eight flip-flops and some associated circuitry. These eight 
 flip-flops are internally wired to form a "vertical" stack, and in normal 
 operation the nine 20U boards are wired side by side (horizontally) to 
 form an 8 x 9 or 72 bit array. The two 205 boards are needed to drive 
 the 72 bit array. 
 
 During a read or write operation the contents of one of the 
 eight flip-flops will account for one and only one bit of the output 
 register. The nine 20*+ boards together will account for nine bits, i.e. 
 a byte. During the operation of this storage block one byte will be 
 operated on at a time. A typical operation might be sensing the contents 
 of the third flip-flop in each of the nine boards. 
 
 In order to be able to work on nine flip-flops at a time, 
 some sort of gating signal must be applied. This is the function of the 
 205 driver boards. Each of these boards contains four circuits which 
 will gate information into and out of the flip-flops. Thus, for a 
 vertical stack of eight flip-flops two such boards are necessary. The 
 remaining circuits on these 205 boards are used for controlling the 
 input and output buffers of the entire array. 
 
 The key to the operation of this memory is in the type of 
 gating signal supplied by the 205 boards. This signal has three distinct 
 levels, and each of these levels puts the flip-flops into a different 
 mode of operation. The different voltages corresponding to these levels 
 are approximately +3-5, +1.0, and -3.0. 
 
 The description in this section is the work of H. Magusky. 
 
 2 
 The design of this board is an outgrowth of the flow gating memory described 
 
 by Guckel, Kunihiro , and Crow in DCL Report No. 106, March 196l. 
 11/5/70 Section 2. 2A - 1/9 
 
FF SELECT 
 
 FF SELECT 
 
 FF SELECT 
 
 FF SELECT 
 
 FF SELECT 
 
 FF 
 TLC 
 
 0/OUT 
 
 w (DJ 
 
 FF SELECT 
 
 FF SELECT 
 
 SBDI OUT 
 
 B E 
 
 SBD2 LOGIC OUT 
 
 10/8/69 
 
 Figure 2.2.U/1 Logic for 20H Board 
 
 Section 2.2.U/1 - 2/9 
 
c 
 
 F E 
 
 K (S 
 
 n E 
 
 x [y] 
 
 R 
 14 
 
 S |M) 
 
 15 
 16 
 
 T m 
 
 U 
 17 
 
 18 
 
 V (£] 
 
 w m 
 
 Figure 2.2.U/2 Logic for 205 Board 
 
 11/7/69 
 
 Section 2.2.U - 3/9 
 
NOTES 
 
 I, UNLESS OTHERWISE SPECIFIED, 
 
 RESISTANCE VALUES ARE IN 
 
 OHMS. 1/4 WATT, 2%, 
 I JNLESS OTHERWISE SPECIFIED, 
 
 DIODES ARE USD3. 
 3, UNLESS OTHERWISE SPECIFIED, 
 
 TRANSISTORS ARE USN3. 
 a, UNLESS OTHERWISE SPECIFIED, 
 
 CAPACITANCE VALUES ARE 
 
 IN MICROFARADS. 
 &TEST POINTS ARE INDICATED 
 
 BY ®, WITH TEST PINS 
 
 INDICATED BY Q 
 
 6 UNUSED PINS 
 
 TEST PLUG— B. H, J, K, 
 L, S, T. 
 
 7 POWER SUPPLY COMMON TO 
 4 CIRCUITS (SIGNAL GOES 
 TO NEGATIVE VOLTAGE 
 LEVEL) 
 
 8- COMMON TO 2 CIRCUITS. 
 
 9, OUTPUT FROM C, E «. N 
 IS SPECIAL 3 LEVEL SIGNAL 
 USED TO DRIVE 204 CARD. ' 
 
 10 OUTPUT FROM X, S. T. V, W 
 ARE USED TO DRIVE 204 CARD 
 
 E.E. 
 
 S, T, V, W 
 
 Bl.Sl.E.E 
 
 igure 2.2.U/3 Electrical Schematic for 205 Board 
 
 Fig 
 
 11/7/69 
 
 Section 2.2.U - U/9 
 
Once the 205 boards have generated the proper voltage levels 
 the 204 board can take then and convert them to read and write operations. 
 Referring to Figure 2.2.4/4 notice that the second circuit from the top 
 has connections to pins J through S, and 8 through 15. These eight 
 circuits are the flip-flops that store the information, and the lines 
 connecting to the above pins are known as the "FF Select" lines (see 
 Figure 2.2.4/1). These FF Select lines have the three levels mentioned 
 above . 
 
 Each of these lines connects to the common emitter connection 
 of the flip-flop. These flip-flops were designed so that they will keep 
 their state even if the common emitter voltage varies over a range of 
 + 4 volts from ground. Due to some external connections to the flip- 
 flop, however, the mode of operation of the flip-flop changes as the 
 voltage is varied over this range. Specifically, the flip-flops are at 
 rest when the voltage is +1 volt, they are ready to accept new information 
 when the voltage is +3-5, and their internal states are sensed at -3.0 
 volts. 
 
 The reason why they act in this manner is not too difficult 
 to understand. Take first the case of new information coming into the 
 flip-flop. When the write gating signal comes along the FF Select lines 
 are placed at +3-5 volts, and the flip-flops will be forced into a raw 
 state if any of the base connected diodes (D5 to D8) are grounded or 
 near ground. If D5 or D6 is grounded, the flip-flop will set to "0", and 
 if D7 or D8 is grounded, the flip-flop stores a "l." A "l" state is 
 defined when the signal at the output test point resistor (R22) is 
 positive. 
 
 Diodes D5 and D7 on all flip-flops are connected internally 
 to the IN 1 and IN lines respectively. These two lines are normally 
 the complements of each other, and can never be grounded at the same 
 time. The status of these two lines depends on the inputs to the Storage 
 Bus Drivers (SBD1 & SBD2), and since both SBD gates can be controlled 
 by the inputs to SBD1, complete control over setting a or 1 is possible 
 
 10/8/69 
 
 Section 2.2.4. - 5/9 
 
D® 
 
 lj© 
 
 
 
 
 
 -J 
 
 B 
 
 
 
 
 @ 
 
 -,-« 
 
 
 
 
 
 3 
 
 
 
 @ 
 
 10 
 
 a 
 
 CO 
 
 * 3 r-i 
 
 = - 
 
 
 
 @ 
 
 Q 
 
 
 
 
 
 0>" 
 
 
 
 
 
 « "n" and onlv the control signals 
 of X2, both the XI and X2 gates will be , and only 
 
 OSCi/E will be able to determine the state of CGBi. 
 
 Section 2.3-1.2 - 2/3 
 6/18/69 
 
 CGB 1 
 
 CGB 2 
 
 CGB 
 
 CGB^ 
 
 CGB 
 
 CGBj^ 
 
 CGB 2 
 
 CGB 
 
 CGB^ 
 
 CGB 
 
 CSB 
 
 
 
 
 
 
 
 
 
 1 
 
 
 
 
 
 
 
 1 
 
 
 
 CSH 
 
 
 
 
 
 
 
 1 
 
 
 
 
 
 
 
 1 
 
 
 
 
 
 CSW 
 
 
 
 
 
 1 
 
 
 
 
 
 
 
 1 
 
 
 
 
 
 
 
 CSD 
 
 
 
 1 
 
 
 
 
 
 
 
 1 
 
 
 
 
 
 
 
 
 
 XI (multiply by l) X2 (multiply by 2) 
 
 
 CGB 
 
 CGB 2 
 
 CGB 
 
 CG B]+ 
 
 CG 
 
 0SC16/E 
 
 1 
 
 
 
 
 
 
 
 
 
 0SC8/E 
 
 
 
 1 
 
 
 
 
 
 
 
 OSC&/E 
 
 
 
 
 
 1 
 
 
 
 
 
 0SC2/E 
 
 
 
 
 
 
 
 1 
 
 
 
 OSC1/E 
 
 
 
 
 
 
 
 
 
 1 
 
 Note: Only one of CSB, CSH, CSW and CSD can be on at one time. 
 
 Figure 2.3.1.2 
 
 6/18/69 
 
 Section 2.3.1.2 - 3/3 
 
2.3.1-3 Byte Selection Logic 
 
 In order to know where a cell is to be stored or read from in 
 the 32 byte buffer storage of the operand stack, a method is needed to 
 select the bytes desired for any current action. This is the purpose of 
 the byte selection logic. The basic idea involved is that the bytes con- 
 cerned should first be chosen on the basis of the single byte address in 
 register T2R and then this byte and the necessary bytes after it can be 
 either read out of or written into the 0S. 
 
 The four different cell sizes cause a problem of picking out the 
 right number of bytes. However all data lines are built for four bytes 
 therefore it was decided that four bytes would be selected regardless of cell 
 size. For word or double-word cell size (a double word size needs two 
 "accesses" to the stack anyway because of the size of the data lines) this 
 procedure is optimal. The half-word and byte cell sizes also usually work 
 because only the top of the stack is ever accessed and if the cell desired 
 is only 1 or 2 bytes long, the other 3 or 2 bytes will contain garbage which 
 can be ignored. The only exception to this rule occurs when the 0STR 
 boundary occurs within 3 or 2 bytes of the last byte which needs to be 
 accessed. Referring to Figure 2. 3. 1.3, for example, if the rightmost half 
 word in the 00 double word were the cell being written on, and the selection 
 logic picked out four bytes, the first two bytes in the 01 double word 
 would be overwritten and destroyed. For this reason the byte selection 
 logic does not allow four bytes to be chosen in such a manner that the 
 0STR boundary will be "crossed". 
 
 With this in mind the byte decoding and selection logic is rela- 
 tively straightforward. The byte address in T2R is decoded to give one of 
 32 outputs. Each output represents a particular byte in the hardware 0S. 
 In the next-byte-selection logic the next three bytes in increasing order 
 are selected along with the original byte and selection signals are generated 
 
 3/12/69 Section 2.3.1.3 - 1/2 
 
00 
 
 01 
 
 ■I I I I *- 
 
 t t 
 
 SCR OSTR 
 
 ' ■ ' I — I — u 
 
 10 
 
 L II I III 
 
 11 
 
 I I I I) I ■ ' ' ' ' ' ' 
 
 Figure 2.3-1-3 
 
 to be dallied to the actual hardware 0S. These selection signals m ay 
 
 I the "11111" - "00000" boundary or cross any other double word 
 
 wrap around tne -LJ~i~i~l ^ 
 
 wx p , . .v,_ m^tr In this case the 
 
 boundary except the boundary defined by the 0STR. 
 
 selection of bytes past the boundary is inhibited. 
 
 The boundary inhibit gates are inserted every eight 
 Dy tes. The one (of four) boundary gates which inhibits propagation 
 
 . +0 .nf qeipfted hv the (decoded) 
 of select-next signals is itself selected oy m \ "natural" 
 
 contents of the 0STR. Boundaries are located at the our n u ^1 
 wlred - in aouble-word addresses. The inhibit gates allow c lis 
 loa ded into the 0S right up to, but never beyond, the boundary. 
 
 Section 
 
 2.3-1-3 - 2/2 
 
 9/17/69 
 
2.3.1.1+ Stack Overflow-Underflow Sensing Logic 
 
 The stack overflow/underflow sensing logic determines the 
 position of the top of the stack within the 32 bytes in OS hardware 
 buffers relative to the boundary between the TP and Main Storage 
 portion of the stack. Inputs to the OV/UF logic come from the OSTR, 
 the SCR, the adder overflow flip-flop A50V and the cell size decoder. 
 
 The philosophy of the OV/UF logic is first to discover which 
 double word the top of the stack (SCR) is in relative to the boundary 
 (OSTR): the first or second double-word above the boundary or the first 
 or second below the boundary. Then, on the basis of the input cell 
 size and the position of the top of the stack within the double-word (as 
 given by the low-order bits of the SCR) the appropriate output signal is 
 activated: 0V1, 0V2, UF1 , or UF2. 0V1 indicates that there is inadequate 
 room in the hardware stack to insert one cell of the indicated size. 0V2 
 indicates that there is not room for two of the given cells. UF1 states 
 that there remains less than one of the cell of the indicated size in 
 the hardware stack. And UF2 shows there is less than two cells remaining. 
 
 The equations for the position of the top of the OS relative 
 to the boundary are: 
 
 3/12/69 Section 2. 3.1 A - 1/U 
 
E01 = X^Yg v WW v X 1 X 2 Y 1 Y 2 v X^Yg 
 
 = «i« if the top of the OS is in the D-word immediately 
 preceding the boundary. 
 E02 = ljgj 2 ▼ ^VA v ^y^ ▼ X i X 2 Y l Y 2 
 = '1' if the top of the OS is in the second D-word 
 preceding the boundary. 
 
 EU1 = I^Y^ V V2V2 V X 1 7 2 Y 1 Y 2 V X 1 X 2 Y 1 Y 2 
 = •!' if the top of the OS is in the same D-word as 
 
 the "boundary. 
 
 EU2 = WW v X l X 2 Y l Y 2 V X A Y 1 Y 2 V X 1 X 2 Y 1 Y 2 
 = «i« if the top is in the second D-word above the 
 
 boundary . 
 
 y and Y are defined as SCR n and SCR and Y 
 In the above equations, X ± and X g are aenneu ± 21 
 
 and Y are OSTR x and 0STR 2 respectively. 
 
 The above overflow/underflow enable signals are then combined 
 
 with the cell size and SRO inputs to generate the true OV/UF signals. 
 
 The "region of effect" of the E-signals may be shown by the followxng 
 
 diagram: 
 
 Bottom limit 
 
 E02 E01 |/eU1 ■ EU2 
 
 I 1 \ " I ^ 
 
 /* boundary as defined by OSTR 
 
 Top Limit 
 
 3/12/69 
 
 Section 2.3.1^ " 2 A 
 
In the case where the SCR points to the boundary defined by 
 the 0STR we have a problem of knowing whether the stack is completely 
 empty or completely full. For this situation EU1 = 1 , while EU2, E01 
 and E02 = 0. What we really want to know, is where the SCR was pointing 
 just before it moved to the 0STR boundary. If it was in the EU1 region, 
 the stack is now empty, while if it was previously in the E01 region 
 it is now full. 
 
 To determine this, a stack full flip-flop (0SF) is used. When- 
 ever the SCR is modified using the SCR M0D control sequence, a signal 
 sets 0SF to 1 if the following conditions are satisfied: 
 
 a) the first two bits of the new value of the SCR (which 
 at this time will be in the adder output register, TRl) 
 are equal to the 0STR , 
 
 b) the low order 3 bits of the SCR are zero, 
 
 c) the E01 signal was activated by the old value of the SCR. 
 
 This assures that when the SCR "approaches" the 0STR from region E01 , 
 the stack will be declared to be full. Once 0SF has been turned on, it 
 is used to keep both 0U1 and 0U2 turned on. 
 
 0SF is reset by the main control using the R0SF signal when- 
 ever the SCR is modified. This is necessary as a preliminary to checking 
 for a possible "stack full" condition at the new SCR position. 0SF 
 is also reset whenever the 0STR is moved. 
 
 The actual over flow /under flow signals may now be defined: 
 0V1 = 0SF v E01 • CSD • (X, v X, v X _) v E01 • CSW • X ■ (X, v I ) 
 
 v E01 • CSH ■ X • X, • X c 
 0V2 = 0V1 v E02 • CSD • (X 3 v X^ v X ? ) v E01 ■ CSW«(X v X^ v X ) 
 
 v E01 • CSH • X • (X, vX,)t E01 • CSB • X, . X, -X 
 
 UF1 = EU1 • CSD v EU1 • CSW • X_ v EU1 • CSH • X • X, v EU1 • CSB'X ■ X, • X 
 
 J 3 4 3 k 5 
 
 UF2 = UF1 v EU2 • CSD v EU1 • CSW v EU1 • CSH • x" v EU1 * CSB • X • X, 
 
 3 3 4 
 
 where once again the X's refer to the SCR bit positions. 
 
 11 /5/T0 Section 2.3.1. U-3/U 
 
• a i s are used in the OS sequencing control to control 
 These signals are usea iu 
 
 fl ..dating and to control the time of transfer of 
 
 ::r,;r;rr:r.rr. ...... - — . - - — 
 
 of the OS. 
 
 mi (WR) as the name implies, is used to 
 Temporary Register #1 (T1R), as t-ne + + „ om the 
 
 • nv a five -bit stack address. TIE has the output from the 
 hold temporarily a five dim receive 
 
 «„ Mt adder as its only input. Its primary function is to receive 
 five-bit aaaer Qther reglsters . 
 
 a sum from the adder before passing it on on fussed 
 
 j ,-v, +>,<= nvprf low/underflow logic, u-l&v,^ 
 Bits 1 and 2 are also employed m the overflow/ 
 
 above . 
 
 Temporary Register #2 (T2R) is, again, used to temporarily hold 
 yZesL However, TSR's functions are less transient than 
 five . tlt stack addresses ^ ^^ ^ 
 
 those of TR1. The purpose of T2R is , g 
 
 dri .e the decoding and hyte-seleotion logic, which turn 
 wo rd select inputs. T2R has as inputs the outputs of TIB 
 T2R-S outputs are also fed to the SCR. 
 
 Asters are not essential for the proper opera- 
 Two temporary registers are 
 
 , \ , loalc They do offer a speed increase over one- 
 tion of the «, contro lo ^ ^ ^ ^ ^^ ^ 
 
 agister ^^^^^^ first may he constructed in the five- 
 qu ich succes sion th d ^^ ^ ^ ^ ^ 
 
 hit adder and gated into 12K v address of the 
 
 ., 4.x, «™+ cell is being accessed, the anaress 
 SCR. Then, while the first cell i B as Eoon 
 
 second is computed and placed into T1R ready to be gated 
 as the access of the first cell is complete. 
 
 The adder itself uses full carry loohahead to speed addition. 
 „ adds in fewer than 6 «» delays (^ reader err ^ ^ ^ 
 „ rit eup of the 32 hit adder in Sec 10 . fo ^ ^ 
 Xoohahead principle and equations.) Its input a 
 
 .„, • += The sum is obtained from one 'A plus one 
 aad -B- inputs. Th sum ^ ^ ^ Mnstant 
 
 'A' inputs are the SCR, 0bK, an . 
 
 output of the adder goes to T1R. 
 
 If an overflow (or underflow), condition is detected, the five- 
 
 « Ustfv) is set. When this occurs, Pointer 
 
 Mt adder overflow flip- OP ^ ^ determlned 
 Register #13 is incremented (decrement 
 
 by the main control. &&!<* 2.3.1.U - U/U 
 
 11/5/70 
 
2.3.1.5 5-Bit Adder-Functional Description 
 
 The 5-bit Adder is the small full carry lookahead adder used 
 by the Operand Stack logic to perform any additions which may be needed 
 in its operation. This adder is totally independent and completely 
 separate from the Main TP 32-bit Adder. 
 
 The 5 bit Adder has two 5 bit input busses. The A input bus 
 has 3 possible sources: temporary register T2R, the Stack Control 
 Register, SCR, or the Operand Stack Top Register, OSTR. Note that in 
 the latter case only the two highest order bits are used. The B input 
 bus has two possible sources: the Constant Generator (see Section 
 2.3.1.2) or the tenporary register T2R. 
 
 The output of the 5-bit Adder is sent to temporary register 
 T1R. If an illegal result is obtained due to an overflow on either 
 an addition or a subtraction, the A50V flip-flop is set. 
 
 The 5 bit Adder is generally used to add or subtract numbers 
 from the SCR or 0STR when these registers are "moving" one of the 
 Operand Stack boundries. The Constant Generator can generate l's 
 complement numbers and if a low order carry is injected into the 
 adder (C5IN J) at the same time, a subtraction will result. 
 
 9/30/69 Section 2.3.1.5 - 1/1 
 
2.3.2 Signal Name Lists for the Operand Stack 
 2.3.2.1 Control Signals 
 
 Operand Stack: 
 
 CK0F/E 
 DB0S/G 
 DBST/G/ 
 
 FL0S/N 
 
 0SPF/G/ 
 0SPT/G/ 
 OSTP/G 
 0V1, 0V1/ 
 
 0V2 
 
 R0SF/ 
 
 SCRP/G 
 
 SCT2/G/ 
 
 T1R2/G/ 
 
 T1SC/G/ 
 
 T1ST/G/ 
 
 T2SC/G/ 
 
 UF1 
 
 UF2 
 
 ZSCR 
 
 Enable 0S overflow/underflow check 
 
 Gate the DBP— >0S according to 0S select lines 
 
 Gate DB-4SCR and DB-% 0STR (part of stack 
 
 initialization) 
 
 Inhibit flags of DBP from being gated into 0S 
 
 storage 
 
 Gate 0S-4 permuter (using 0S select) l's complement 
 
 Gate 0S -^permuter (using 0S select) true 
 
 Mask OSTR into permuter via 0SR 
 
 Output - indicates no room in 0S for cell of 
 
 current size 
 
 Output - indicates no room in 0S for 2 cells of 
 
 current size 
 
 Reset "0S full" flip-flop 
 
 Mask SCR into permuter via 0SR 
 
 Gate SCR-*T2R 
 
 Gate T1R -» T2R 
 
 Gate T1R -* SCR 
 
 Gate T1R-*0STR 
 
 Gate T2R -% SCR 
 
 Output - indicates 0S does not contain 1 cell 
 
 the size of CS 
 
 Output - indicates 0S does not contain 2 cells 
 
 the size of CS. 
 
 Output - SCR(3), SCR(U) and SCR(5) are 
 
 6/17/69 
 
 Section 2.3-2.1 - 1/2 
 
5 Bit Adder: 
 
 ADD5/E/ 
 KB/G 
 
 0TA/G 
 RSYS/ 
 SCA/G 
 T2A/G 
 T2B/G 
 
 Enable the 5 hit adder 
 
 gate output of const, gen. to B input of 
 
 5 bit adder 
 
 gate 0STR-* A input of the 5 hit adder 
 
 reset system 
 
 gate SCR -> A input of the 5 hit adder 
 
 gate T2R-*A input of the 5 hit adder 
 
 gate T2R -* B input of the 5 hit adder 
 
 Constant Generator; 
 
 X2/ 
 
 S/E 
 
 CGBi/ 
 
 0SCG/E/ 
 
 0SCG1/E 
 
 0SCG2/E 
 
 0SCGU/E 
 
 0SCG8/E 
 
 0SCG16/E 
 
 if "0", multiply output of constant generator 
 
 hy 2 
 
 subtract enable - if = 1, generate negative 
 
 const . 
 
 constant generator intermediate bus - hit i 
 
 enable generation of a const, from control 
 
 generate 1 on constant bus 
 
 generate 2 on constant bus 
 
 generate h on constant bus 
 
 generate 8 on constant bus 
 
 generate l6 on constant bus 
 
 5/16/69 
 
 Section 
 
 2.3-2.1 - 2/2 
 
2.3.2.2 Internal Signals Used by the Operand Stack 
 Operand Stack 
 
 BROSi 
 
 BYi 
 
 E01 
 
 E02 
 
 EU1 
 
 EU2 
 
 0SF 
 0Si/S/ 
 
 0STPi 
 
 SCRi 
 TIRi 
 T2Ri 
 
 Input bus to permuter from Base Register and 
 
 OS storage - bit i 
 
 First byte select from 0S, byte i on if it 
 
 is first byte selected decoded from T2R. 
 
 = 1 if top of 0S is in DW immediately preceding 
 
 0STR boundary. 
 
 = 1 if top of 0S is in second DW immediately 
 
 preceding 0STR boundary. 
 
 = 1 if top of 0S is in same DW as 0STR 
 
 boundary . 
 
 = 1 if top of 0S is in second DW above 0STR 
 
 boundary . 
 
 Operand Stack Full 
 
 0S select; if on indicates ith byte has been 
 
 selected (l to h signals will be on at one 
 
 time ) 
 
 Operand Stack Top Register (indicates the 
 
 double "word at the boundary between the 
 
 hardware OS stack and core memory) - bit i 
 
 Stack Control Register (gives current entry 
 
 point to OS) - bit i 
 
 Temporary Register #1 = output from 5 bit 
 
 adder - bit i 
 
 Temporary Register #2 = output from T1R or 
 
 SCR - bit i 
 
 9/17/69 
 
 Section 2.3.2.2 - 1/2 
 
5 Bit Adder: 
 
 Ai 
 
 A50V 
 
 Bi 
 
 Ki 
 
 OSTRi 
 
 SCRi 
 
 TIRi 
 T2Ri 
 
 "A" input to Adder (= 0STR, SCR, T2R) - bit i 
 if on, 5 bit adder overflowed 
 "B" input to Adder (= T2R, K) - bit i 
 output of const, generator- bit i 
 
 "Operand Stack Top" register - bit i 
 
 Stack Control Register - gives current entry point 
 
 to OS - bit i 
 
 w Rp^ster #1-5 bit adder output - bit i 
 Temporary Register n± j 
 
 Temporary Register #2 - bit l 
 
 Constant Generator: 
 
 CSB 
 
 CSD 
 
 CSH 
 
 CSW 
 
 Ki 
 
 Cell size is byte 
 
 Cell size is double word 
 
 Cell size is halfword 
 
 Cell size is word 
 
 Output of const, generator 
 
 - bit i 
 
 5/16/69 
 
 Section 2.3-2.2 -2/2 
 
2.3.3 Operand Stack - PL/1 Description 
 
 // FXFC PL1 
 
 //PL1.SYSPUNCH DD SYSniJT = R 
 
 //PL1.SYSIN DD * 
 
 OPSTKIN: PROC(CKOFE, CSB, CSO, CSH, CSW, 
 
 dbosg, osf, dspfg, nsPTGt osss, 
 
 nvi, ov2 t rosf, ufi, uf?, 
 ZSCR) ; 
 
 DCL(CKDEE,CSB, CSD, CSH t CSW, OBOSGt 
 
 osf, ospfg, osPTGt nssst nvi, ov2, 
 
 KOSF, UFI, UF2, ZSCR) BIT(l); 
 
 DCL( BR0S(36), BY(0:31), 0S(0:31,9), nSS(0:31), OSTR(2), 
 SCR(5), T1R(0:5) ,T2R (5) ) BIT(l) EXTFRNAL; 
 
 OCL 
 
 (X(5), 
 Y(2) 
 
 ) BIT < 1 ) t 
 
 ( I , J,L ) FIXFD BIN, 
 (EDI , 
 E02, 
 EU1 , 
 EU2 
 
 ) BIT ( 1 ) ; 
 DCL T2RVAL FIXED BIN; 
 DCL GSTRVAL FIXFD BIN; 
 
 /* USE BYTE DECODER*/ 
 /* USE THE CONTENTS OF T2R TO SELFCT THE CORRESPONDING 
 BY( I ) SIGNAL */ 
 
 OSS= »0 »B ; 
 
 B Y = » • B ; 
 
 OSS S= DBOSG IOSPTG IOSPFG; 
 
 IF -.OSSS THEN GO TO CKSCRZ; 
 
 T2RVAL=0? 
 DO 1=1 TO 5; 
 
 IF T2R ( I ) THEN 
 
 T2RVAL = T2RVAL + 2**( e >-I ); 
 
 END; 
 
 BY( T2RVAL )=• 1 ■ B; 
 
 /* NEXT 3 BYTE SELFCT. 
 
 USE THE BY(I) SIGNALS TO SELECT AN OSS(I) SIGNAL AND UP TO 
 3 SUCCESSIVE OSS(I) SIGNALS */ 
 
 IE T2RVAL<=28 THEN 
 
 DO I=T2RVAL TO (T2RVAL+3); 
 OSS( I )=• i»b; 
 END; 
 
 ELSE DO; 
 
 DO I=T2RVAL TO 31; 
 OSS( I ) = '1 , B; 
 END; 
 
 11/5/70 
 
 Section 2.3.3 - 1/6 
 
On 1=0 TO (T2RVAL-28); 
 
 nss( I )= , i , b; 
 end; 
 
 fnr; 
 
 OSTRVAL=0; 
 
 IF nSTR(l) THFN OSTR VAL = OSTR VAL +16, 
 
 IF 0STR(2) THEN OSTR VAL=OSTR VAL +8; 
 
 ' F "T^V^HBV.roilBVO!, THB. OSS < > , OSS < ! , . OSS < 2 , = ' • B; 
 
 END; 
 flsf no; 
 
 i =nsTRVAi_; 
 
 IF BY( 1-1 ) I BY ( 1-2) !BY( 1-3) 
 
 THEN nSS(I),0SS(I+l>,0SS(I+2)='0'B; 
 
 end; 
 
 /* LOAD BRDS FROM OS */ 
 
 IF (OSPTG|OSPFG)S-DBOSG THEN DO; 
 
 on 1=0 to 31 ; 
 
 IF OSSU ) THEN DO; 
 /; , : L IS TH F = BYT^PHSITION OF THE BROS TO WHICH THE 
 SFLFCTFD BYTE OF THE OS IS GATED */ 
 00 J=l TO 9; 
 
 BRGS(L*9+J)=nS( I tJ) ; 
 
 FND; 
 END; 
 end; 
 
 IF nSPFG THEN BRnS =^BROS; 
 
 fmd; 
 
 /♦CHECK FOR 
 
 BITS =0 */ 
 
 SCR ON DOUBLE WORD BOUNDARY, I.E. LOW ORDER 3 
 
 CKSCRZ: ZSCR = -SCR(3)&-'SCR(4)&-iSCR(5); 
 
 /;;: C hfCK FOR OVERFLOW*/ 
 1F kqSF THFN OSF ='0'B; 
 
 nn 1=1 to 5; 
 
 x ( i )=scr( i ) ; 
 END; 
 
 no 1=1 to 2; 
 
 y(I)=ostr(I); 
 END; 
 
 E01- ^X(l)fi-X(2)fi-.Y(l)fi Y(2)hX(l)£ X(2 >fi Y ( 1)6-Y( 2 > 
 |X(1)^X(2)G Y(1)G Y(2)l X(l)6 X ( 2 > £-Y ( 1 > &-Y < 2 > , 
 
 11/5/70 
 
 Section 2.3.3 - 2/6 
 
ED2 = X( 1 }£-.X(2)£-.Y( 1)£-Y<2) I X(l)£ X(2)£-«Y(1)£ Y(2) 
 l-XU )£-X(2)£ Y(l)£-Y(2) |-X(1)£ X(2J6 Y(l)£ Y(2) 
 
 EU1« ^X(l)£-.X(2)G-»Y(l)fi-,Y(2)|-.X(l)E X(2)£-Y<1)£ y(2) 
 I X(1)C-X(2)C Y(1)£-,Y(2)| X(l)£ X(2)£ Y(l)£ Y(2) 
 
 EU2 = -.X(l)£iX<2)£ Y(l)£ V(2)hX(ll( X (2 >6«-Y< 1 ) 6-,Y<2 ) 
 
 I X(1)£-.X(2)£-Y(1)£ Y(2)| X(l)£ X(2)£ Y(l)£-Y{2) 
 
 nvi= OSF |Eni£CSD£(X(3) |X(4) |X(5) ) 
 |FD1£CSW£X(3)£(X(4) |X(5) ) 
 lEni£CSH£X(3)£ X(4)£ X(5) ; 
 
 0V2= nvi |E02£CSD£(X(3) |X(4) |Xt5) ) 
 
 |E01£CSD£-.X(3)£-.X( A)£-.X (5 ) 
 
 |E01£CSW£(X(3) I X ( A ) | X ( 5 ) ) 
 
 |E01£CSH£X(3)£(X(4) | X ( 5 ) ) 
 
 |E01£CSB£X(3)£X(4)£X(5) ; 
 
 UF1= FIJ1£-.DSF£CSD 
 
 I EUl£-.nSF£CSW£-.X(3) 
 
 I FI)1£-.0SF£CSH£-.X( 3) £-.X(4) 
 
 I EUl£-.nSF£CSB£-.X(3)£-.X(A)£-.X (5 ) ; 
 
 UF2= IJF1 
 
 I EU2£CS0 
 
 I EW1£-.0SF£CSW 
 
 I EUl£--nSF£CSH£-.X (3) 
 
 I FUl£-.nSF£CSB£-»X(3 )£-X(4) ; 
 
 IF CKOFF THEM 
 
 IF OV2 THEN 
 
 IF OSTR( 1 )=T1R( 1 ) THEN 
 
 IF DSTR(2)=T1R(2) THEN DO; 
 
 nsF=«i«B; 
 nvi=« 1«B; 
 END; 
 END DPSTKIN; 
 
 n /5/TO Section 2.3.3 -3/6 
 
A ODER 5 
 
 PRQC ( 
 
 OCL ( 
 
 DCL 
 
 OCL 
 
 OCL 
 
 IF 
 
 IF 
 
 /* 
 
 A,B 
 
 A50V T 
 
 RSYSt 
 
 TISTGt 
 
 A50V, 
 
 RSYSt 
 
 T1STG, 
 
 ADD5E, 
 
 SCAGt 
 
 T2AG, 
 
 AOD5E t 
 
 SCAG, 
 
 T2AG, 
 
 IF 
 
 (HSTR(2), (K,SCR,T2R)(5)t 
 
 ( A , B ) ( : 5 ) R I T ( 1 ) ; 
 I FIXED bin; 
 T2SCG THEN DO 1=1 TO 5; 
 SCR( I )=T2R( I ) ; 
 fnd; 
 
 SCT2G THEN DO 1=1 TO 5; 
 
 T2R( I ) = SCR( I ) ; 
 
 END; 
 LOAD A AND B INPUTS */ 
 
 = «o ' b; 
 
 IF OTAG THEN BEGIN; 
 /* GATE HSTR TO A */ 
 
 mi )=nsTR( l ) ; 
 
 A(2 )=GSTR(2) ; 
 
 A ( 3 ) , A ( 4 ) , A ( 5 ) = ' ' B ; 
 
 end; 
 
 SCAG THFN DO I = 1 TO 5 ; 
 
 a( i ) = scr( i ) ; 
 END; 
 
 C5INJ, 
 SCT2Gt 
 T2BG, 
 C5INJ* 
 SCT2G» 
 T2BG, 
 T1R(0:5> ) 
 
 KBG, OTAG, 
 
 T1R2G, T1SCG. 
 T2SCG) ; 
 
 KBGt OTAG, 
 
 T1R2G, T1SCG, 
 T2SCG) BIT(l); 
 BIT(l) external; 
 
 1F J2AG THFN DO 1=1 TO 5; 
 A( I )=T2R( I ) ; 
 ENO; 
 IF T2BG THFN 00 1=1 TO 5; 
 B( I )=T2R( 1 ) ? 
 ENO; 
 IE KBG THFN 00 1=1 TO 5; 
 
 b( I )=k ( I ) ; 
 ENO; 
 
 /.; PERFORM ADDITION */ 
 IF AODSE THEN 
 
 f ai I AonssoB ; 
 
 /; . C HECK FOR OVERFLOW */ 
 
 AS0V = AD0SFM^C5INjr,TlR(0)|CSINJ^TlR(0)); 
 
 J* CHECK FOR TRANSFERS INVOLVING T1R,T2R,SCR, 
 
 OR THE OSTR */ 
 
 [F T1STG THEN DO 1=1 TO 2; 
 USTR ( I )=T1R( I ) ? 
 
 end; 
 
 I F T1SCG THEM DO I =1 TO 5 5 
 
 scr( i ) = tir( i ) ; 
 
 end; 
 
 IF T1R2G THEN DO 1=1 TO 5; 
 T2R( I )=T1R( I ) ; 
 
 11/5/70 
 
 Section 2,3.3 - k/6 
 
FND: 
 /* RESFT SYSTEM */ 
 IF RSYS THEN 
 
 A50V=«0«B; 
 
 ADD5SUB: PROC; 
 
 DCL (I, ONE) FIXFD BIN, C BIT (6), X FIXED BIN(6,0>; 
 ONE=l ; 
 x=o; 
 
 no I = o to 5; 
 
 IF A(I) THEN X=X+2**( 5-1 ) ; 
 IF B(I) THEN X=X+2**<5-I ) ; 
 END; 
 IF C5INJ THEN X=X+1; 
 C = BIT( X,M; 
 DO I =1 TO 6; 
 T1R( 1-1 )=SUBSTR(C, I ,OME) ; 
 END; 
 END ADD5SUB; 
 END ADDER 5; 
 /* 
 
 11/5/70 Section 2.3.3 - 5/6 
 
CHNSGEN: PRDC (C5INJ, 
 
 0SCG16E, 
 DSCGE, 
 DCL(C5INJ»CSB, 
 
 0SCG1E, 
 SEt 
 
 CSB» 
 
 0SCG1E, 
 
 SE, 
 
 CSD, 
 
 nSCG2F T 
 
 CSD» 
 OSCG2E, 
 X2) ; 
 CSHt 
 nSCG^Et 
 
 CSH, 
 OSCG^E, 
 
 csw, 
 
 DSCGRE, 
 
 CSWt 
 OSCGBFt 
 
 0SCG16E, 
 
 nscGF* 
 
 X 2 ) B I T ( 1 ) ; 
 
 L K (5) BIT(1) EXTERNAL*, 
 
 ^"^AN^^e'dEEINE^ CONVENIENCE TO S.MPLIP, THE 
 
 FOUATinNS. */ 
 
 ocl 
 
 CGB(5) BIT (l)t (T1,T2) BIT (1); 
 
 T2=-OSCGE£X2; 
 Tl=-X2? 
 
 CGBd )=T2fXSD|nSCG16E; 
 CGB ( 2 > =T1 £CSD I T2RCSW I DSCG8E ? 
 C GB ( 3 ) =T 1 PXSW I T 2 RC SH | 0SCG4E ; 
 C( ; H ( 4 ) =T 1 T.CSH I T2 &C SB | OSCG2E ; 
 
 rirxsB inscGlE; rrR'S TO THE K ( I ) • s 
 
 MUMRER IS TO BE NEGATIVE, GATE THE ( » S ^ PjB(I) J 
 IRECTLY, HTHFR^ISE* FOR POSITIVE niimh.. 
 
 CGR(5)=T1£CSB lOSCGlF; 
 / * I F M 
 1 ) 
 j I ^sf THEN DO*, 
 
 k=cgb; 
 
 csinj^'o 1 b; 
 
 else on; 
 
 k=-CGb; 
 C5INJ=' i'b; 
 
 ENo; 
 !-MF) r iwsgfn; 
 
 /* 
 
 11/5/70 
 
 Section 2.3.3 - 6/6 
 
2.3.^ Operand Stack - Logical Description 
 2.3.1+.1 Operand Stack Storage 
 
 The storage used for the fast storage of the Operand Stack 
 consists of k storage blocks of the type described in Section 2.2. Each 
 block provides 8 bytes of 9 bit storage for a total of 32 bytes of fast 
 storage. 
 
 The actual byte positions are arranged so that the first block 
 contains bytes 0, U, 8, ..., 28, the second block contains 1, 5, 9, ... 29, 
 and so on. 
 
 The input to the OS storage consists of 32 select lines, OSi/S, 
 the Distribution Bus (DBP) from the Permuter and k data control lines: 
 
 DBOS/G, FLOS/N, OSPT/G and OSPF/G. Figure 2.3.U is an exerpt from the 
 01-U drawing in the TP Logic Book. It shows a diagram of the fourth 
 storage block in the OS fast storage and indicates the various inputs and 
 outputs to the block. 
 
 The DBOS/G control signal is used to gate the DB through the In- 
 put Gate Drivers into the four storage blocks. Since there is only one 
 type of storage in these four blocks (as opposed to, s a y, the PR storage 
 which also contains the Spare Buffer Register ), all of the read/write 
 enable signals to the Byte Select Drivers (BSD's) can be activated by the 
 same signal. Thus the DBOS/G signal is fed to 9 inverters. One of these 
 drives the four IGD's. The other 8 each drive four read/write enable inputs 
 to the BSD's. Thus all 32 read/write enable lines are activated more or 
 less in unison with the IGD gate signals. Only the "Gate Both In" option 
 is used on the IGD's. 
 
 The FLOS/N signal is used by the OS storage blocks to inhibit 
 writing in the flag positions. FLOS/N drives an inverter which then 
 feeds the In Data Inhibit signal to the Input Gates on the flag bit 
 
 11/5/70 Section 2.3-U - 1/3 
 
 TO THE REMAINING OS 
 STORAGE BLOCKS 
 
 04_3 0BP28 
 
 J 
 04-3 DBP36 
 
 C 
 16-5 
 
 FLOS/N 
 
 OSPT/G 
 
 OSPF/G 
 0S3/S 
 
 0S7/S 
 
 OSII/S 
 
 0SI5/S 
 
 0SI9/S 
 
 0S23/S 
 
 0S27/S 
 
 16-3 0S3I/S 
 
 C DBOS/G 
 
 1-5 
 x44 203-00 
 
 X44 
 X44 
 
 X44 
 X44 
 
 X43 
 
 BSGI6 
 
 BR0S28 04-3 
 
 I 1 
 
 BR0S36 04-3 
 
 5/2/69 
 
 FIGURE 2.3.4 
 
 Section 2.3-U - 2 / 3 
 
position of every byte in the OS fast storage (see Figure 2.2.1/2). 
 
 The OSPT/G and OSPF/G control signals are connected to the 
 "Gate False Out" and "Gate True Out" inputs of the Output Gate Drivers, 
 respectively (see Figure 2.2.1/3). This seemingly reversal of the gate 
 signals is brought about because it is necessary to dot-or the outputs 
 of the Operand Stack Storage Blocks and thus the inverted values must 
 be sent out. The output from the OS fast storage is the Base Register- 
 Operand Stack Bus (BROS). When either the OSPT/G or OSPF/G control 
 lines are set to "0", the true or l's complement representation of the 
 selected bytes in the OS fast storage are dot-ored to the BROS. Note 
 
 that if both OSPT/G and OSPF/G are set to logical "0" at the same time, 
 logical "0" would result in all positions. 
 
 Each block (representing 8 interleaved bytes) is gated to a 
 separate byte of the BROS. When one of the output control lines is 
 activated the selected bytes are gated to the bus. As explained in 
 Section 2.3.1.3., no more than four bytes are ever gated out at one 
 time from the OS storage. Since the blocks are permanently connected 
 to the BROS, the OS bytes always come out in the same position on the 
 BROS regardless of where the cell boundaries happen to be. Therefore, 
 the Permuter is used to justify the boundaries of the BROS bytes when 
 the information is transferred to the DB. 
 
 11/5/70 Section 2.3.U - 3/3 
 
2.3.U.2 Overflow-Underflow- Logical Description 
 
 As explained in Section 2.3.1.1+ the OS overflow/underflow 
 logic can be broken up, conceptually, into several sections. First 
 there are the equations for the position of the SCR relative to the 
 OSTR, i.e. E01, E02 , EU1, and EU2. Secondly, there are the equations 
 for the overflow and underflow signals themselves, i.e. 0V1 , 0V2, UF1 
 and UF2. Finally there is the logic involved in setting and using the 
 OS Full flip-flop, OSF. All three sections of logic are shown in Drawing 
 16-6 of the TP Logic Book and will now be explained. 
 
 The equations for E01 , E02 , EU1 and EU2 as given previously in 
 Section 2.3.1.*+ are fairly straightforward to implement. The diode matrix 
 board, 236-01, which is shown in Figure 2. 3- h. 2/1 as a logical circuit and 
 in Figure 2. 3. h. 2/2 as a schematic, is used to calculate the equations. 
 This board is simply a four-bit decoder which decodes all possible combina- 
 tions of the two high order SCR and OSTR bits. The inputs to the diode 
 matrix are driven by 228-07 circuits. The 16 individual outputs of the 
 diode matrix are sent to 228-05 circuits, the outputs of which are dot-or'ed 
 to generate the four signals according to the equations in Section 2.3.1.4. 
 These signals are inverted by k 228-07 circuits for use in the 0V1, 0V2, 
 UF1 and UF2 equations. 
 
 The equations for 0V1 , 0V2, UF1, and UF2 are considerably more 
 difficult to implement. As shown in Section 2.3.1.1+ they are as follows: 
 
 0V1 = 0SF v E01-CSD-(X v X, v X ) 
 
 *J T" J 
 
 v E01-CSW-X 3 - (X^ v X ) v E01-CSH-X • X^ X 
 
 V2 = 0V1 v E02-CSD-(X v X, v X ) 
 
 v E0LCSD v E01-CSW-(X v X.VX ) 
 
 v E01-CSH-X 3 -(X 1+ v X 5 ) v E01.CSB-X-X 1+ -X 
 
 8/12/69 
 
 Section 2.3.4.2 - 1/j 
 
r 
 
 
 
 
 
 
 
 
 
 otnl t 
 
 3 f . 
 
 
 ~"\ A i 
 
 SCR2 r 
 
 ("VCTDI 
 
 7 . 
 
 
 
 
 
 
 
 
 
 0STR2 | 
 
 T 
 
 15 • 
 
 
 1 1 
 
 <>■ 
 
 
 N B ' 
 
 
 
 
 
 
 
 
 
 
 
 
 0STR2 1 
 
 9 
 
 1 
 
 
 I 
 
 II 
 
 ^\ 
 
 \ C i 
 
 
 
 
 
 
 
 
 
 
 OSTRI 
 
 
 
 
 
 1 
 
 I' 
 
 — 1 
 
 ^ E ' 
 
 
 
 
 
 _J ; 
 
 
 
 
 
 
 
 ■ 
 
 
 l 5 
 
 
 < 
 
 1 
 
 
 1 
 
 -i 
 
 ^\ fi 
 
 
 
 
 
 _>^- 
 
 
 
 
 
 
 SCR2 
 
 l < 
 
 1 
 2 
 
 
 1 
 
 
 1 
 
 
 
 
 A H 
 
 
 
 
 
 
 
 
 
 
 
 ►— 1 
 
 
 
 i 
 
 
 1 
 
 
 
 1 
 
 ^ jj 
 
 
 
 
 
 
 _J : 
 
 
 
 
 
 
 
 
 
 i 
 
 
 
 
 
 
 Lh 
 
 A L 1 
 
 
 
 
 
 
 — 
 
 _>^- 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 SCRI 
 
 ; 
 
 
 
 
 
 
 > 
 
 
 "\ Pi 
 
 
 
 
 _J ! 
 
 
 
 
 
 
 
 
 I 
 
 ►— — 
 
 > \ r 1 
 
 
 
 
 — ^T 
 
 
 
 
 
 
 
 
 
 
 » — 
 
 *\ Ti 
 
 
 
 
 jT 
 
 
 
 
 
 
 y i 
 
 
 
 
 
 
 
 i>— 
 
 "\ u 1 
 
 
 
 
 
 Pr 
 
 
 
 
 
 
 y , 
 
 
 
 
 
 
 n— 
 
 ""N V| 
 
 
 
 
 
 
 
 
 
 ' 
 
 
 
 
 
 
 
 ii— 
 
 *\ Ul 1 
 
 
 
 
 
 1 w 
 
 
 
 J ' 
 
 
 
 
 
 y , 
 
 
 
 
 
 
 ii — 
 
 "\ Yi 
 
 
 
 
 
 - It 
 
 
 
 
 
 y i 
 
 
 i V— 
 
 
 
 
 A z 1 
 
 
 
 
 >Ht~ 
 
 
 
 
 
 y 
 
 
 
 
 
 
 
 
 
 j 
 
 Figure 2. 3. U. 2/1 - SCR-0STR Decoder for 
 E01, E02, EU1, EU2 Signals Logic Representation 
 
 9/10/69 
 
 Section 2.3.U.2 - 2/7 
 
IV 
 
 ' J 
 
 :i i : 
 
 )[ 
 
 
 
 
 go 
 
 > 
 
 3 
 
 1 
 
 IJL 11. 
 
 
 
 
 
 i^ 
 
 1 
 
 M 
 
 w 
 
 
 
 
 CD 
 
 > 
 
 
 n , 
 
 
 
 
 
 to 
 
 D 
 
 -\ 
 
 : i : 
 
 [ 
 
 
 
 
 5; 
 
 h- 
 
 .. 
 
 M 
 
 
 
 
 
 ro 
 
 
 .. J '. 
 
 — •- 
 
 \ 
 
 
 
 
 OJ 
 
 Q_ 
 
 . L 
 
 — * 
 
 
 
 
 
 — 
 
 Z 
 
 
 
 
 
 
 
 O 
 
 5 
 
 
 
 
 
 
 
 en 
 
 _J 
 
 • ■ 
 
 """"? T"~ 1 
 
 11 11 1 
 
 [ 
 
 
 
 
 CD 
 
 "3 
 
 
 \[ ll 11 
 
 
 
 
 
 i^ 
 
 X 
 
 
 — •— — • , 
 
 ii y. ] 
 
 
 
 
 
 CD 
 
 Ll. 
 
 -• 
 
 — •— — • 1 
 
 
 
 
 
 m 
 
 LlJ 
 
 . . 
 
 — •— 
 
 W 1 
 
 
 
 
 
 «- 
 
 Q ' 
 
 .. 
 
 El 
 
 
 
 
 
 ro 
 
 OQ 
 
 1 - 
 
 — — • 
 
 
 
 
 
 CM 
 
 * 
 
 I " 
 
 I JL 
 
 
 
 
 
 — 
 
 Q 
 
 h 
 
 C 
 
 ;o - cm 3 
 
 ^ cq. -. - a 
 
 io r*- (j) k5" u 
 
 d co 
 
 o 
 
 CM 
 
 Oi 
 
 CJ 
 
 OJ 
 CM 
 
 -2i 
 
 J 2 
 
 t— i 
 
 _ 
 
 CV) 
 
 CVJ 
 
 oc 
 
 1— 1 
 
 a: 
 
 tr 
 
 QC 
 
 LL 
 
 q: 
 
 h- 
 
 H 
 
 o 
 
 o 
 
 o 
 
 o 
 
 co 
 
 co 
 
 C7) 
 
 CO 
 
 U) 
 
 en 
 
 o 
 
 o 
 
 
 CM 
 
 a: 
 
 CV) c/> 
 
 o o 
 
 Figure 2. 3.^.2/2 - 
 
 SCR-0STR Decoder for E01, E02, EU1, EU2 Signals 
 Diode Matrix Representation 
 
 9/10/69 
 
 Section 2.3.U.2 - 3/7 
 
UF1 = EUl> OSF- CSD v EU1- OSF- CSW- X 3 
 
 v EUl'OSF-CSH-X 3 - X^ v EULOSF-CSB-X^ X^^ 
 
 UF2 = UF1 _ 
 
 v EU1-OSF-CSW v EU1-OSF.CSH X 3 
 
 v EUl-OSF-CSB-X 3 « I h 
 
 where, as before, X. represents SCRi. 
 
 When implemented by the logic in Drawing l6-6, however, these 
 equations look considerably different. For 0V1 we have: 
 
 0V1 = OSF v (E01-CSD'(X 3 v X H v X^) 
 v E01-CSW-(X • U k v X 5 )) 
 v E01-CSH-(X 3 « X u -X 5 ) ) 
 
 Note that 0V1 consists essentially of two terms which are inputs to a 
 21 U-03 driver going to the control logic. The first term comes directly 
 fr om the output of the OSF flip-flop. The second term is produced by 
 dot-oring 3 NAND circuits together. Each of these NAND's has as inputs 
 the E01 signal, a cell si.e signal, and some function of the 3 low-order 
 bits of the SCR. 
 
 The equation for 0Y2 as implemented by the logic can be written 
 
 as follows : 
 
 0V2 = OSF v (E01-CSD-(X 3 v X u v X 5 ) 
 V E01-CSW-CX • U h v X 5 )) 
 VE01- CSH-(X 3 ' X h - X 5 ) ) 
 v (E02-CSD-(X 3 v X^ v X ? ) 
 
 v E01 • CSD 
 
 v E01-CSW-(X 3 v X^ v X 5 ) 
 
 v E01-CSH-(X - (X u v X 5 )) 
 
 v E01-CSB-(X 3 « X u - X 5 ) ) 
 
 Section 2.3.^-2 -V7 
 Q /1 -3 /£n 
 
This equation consists of three terms all of which are inputs to a 21U-03 
 driver going to the control logic. The first two terms are identical to 
 the ones used for 0V1 . These replace the 0V1 term in the original 0V2 
 equation and eliminate the need to invert the 0V1 output and use it as an 
 input to 0V2, thus saving 2 collector delays. The third term has the same 
 format as the last term in 0V1 . It consists of 5 NAM) circuits dot-or'ed 
 together. Each NAND circuit has as inputs either E01 or E02, a cell size 
 signal, and a function of the low-order 3 bits of the SCR. Note that 
 three of these SCR terms are functions which were also used in 0V1, 
 except that in that case they were associated with different cell size 
 signals. 
 
 The logic implementation for UF1 and UF2 are somewhat confusing. 
 This is due, in part because they are partially implemented on the l6-6 
 drawing using DTL logic and partially implemented in the main control 
 logic using IC's. Because of several changes which were necessary after 
 the initial wiring of this logic, the structure is somewhat haphazard. 
 The actual implementation equations for UF1 and UF2 are as follows: 
 
 UF1 = (OSF • (EU1-CSD 
 
 v EU1- CSW-X, 
 
 v EU1- CSH-U • X, ) 
 
 v EU1-CSB-(X - X 2 - X))) 
 
 UF2 = (EU2-CSD) 
 
 v (0SF-(EU1-CSW 
 
 v EU1-CSH-X, 
 
 v EU1-CSB-X • X, )) 
 3 k 
 
 v (0SF.(EU1-CSD 
 
 v EU1- CSW-X. 
 
 v EU1- CSH-U -• X, ) 
 
 v EU1'CSB-(X ■ X.-X ))) 
 
 8/13/69 
 
 Section 2.3.U.2 - 5/7 
 
Note that UF1 consists of one term and UF2 consists of three terms, the 
 last of which is identical to the term for UF1 . This is done for the same 
 reasons as "before with 0V2 and 0V1. 
 
 In the case of UF1 and UF2, the final signals are formed by IC 
 
 NAND circuits in the control logic section of the TP. Thus the singly 
 
 term for UF1 (which is also the last term of UF2) is given the name UF12C 
 and is formed by a 21^-03 circuit using two inputs. The first input is 
 5sF and the second is the inverted output of a dot-or connection between 
 four NAND circuits. Each of these four NAND's has as an input the EU1 
 signal, a cell size signal and some function of the 3 low-order bits of 
 the SCR. 
 
 In addition to the UF12C signal, the UF2 signal has two other 
 
 terms which have been given the names UF2A and UF2B. The first term, U F2A, 
 consists of the output of one 21U-03 NAND which forms the term EU2-CSD. 
 The second term also comes from a 21H-03 circuit but uses two inputs. 
 The first is OSF. The second is the inverted output of a dot-or connection 
 between h NAND circuits. Each of these NAND circuits has as an input the 
 EU1 signal, a cell size signal, and some function of the 3 low-order bits 
 of the SCR. The 2 NAND circuits which form UF1 and UF2 in the TP Control 
 section are shown in Figure 2. 3. ^.2/3. 
 
 The final section of logic in the OS overflow/underflow logic 
 is the OSF flip-flop itself. As discussed in Section 2.3-l.U, the setting 
 and resetting of the OSF flip-flop is determined by the Main Control Logic, 
 specifically the OS ENTRY and SCR MOD sequences. 
 
 The OSF flip-flop will be set to "l" whenever the CKOF/E signal 
 goes to "1" and at the same time the two high order bits of the SCR are 
 equal to the OSTR, the three low-order bits of the SCR are "0", and the EU1 
 signal is on. In this situation the SCR is moving to the OSTR boundary from 
 the "full" side of the hardware registers. 
 
 OSF is reset by Main Control using the ROSF control line. 
 
 .. ,, Section 2.3. U. 2 - 6/7 
 
 8/13/69 
 
UFT2C 
 
 UFI 
 
 UF2A 
 UF2B 
 
 UF2 
 
 Figure 2. 3. U. 2/3 - UFI and UF2 IC Logic Implementation 
 
 9/10/69 
 
 Section 2.3.U.2 - 7/7 
 
2.3.^.3 3-Bit Adder-Logical Description 
 
 The 5-Bit Adder is a full carry lookahead adder generally 
 used for adding or subtracting constants from various operand stack 
 control registers. In basic construction it is somewhat similar to 
 the 32-Bit Adder (Section 2.7) except, of course, it is much simpler 
 since it has much fewer bit positions. The two 5 bit input busses 
 are the A bus and the B bus. The A bus is usually loaded with one of 
 the Operand Stack Registers and the B bus is usually loaded with a 
 + constant from the Constant Generator. The results of the addition 
 are stored in temporary Register TlR. 
 
 At each input bit position of the 5-bit Adder there are k 
 NAND gates. These NAND's are all activated by the ADD5/E signal and 
 produce for each bit position, i, a generate signal, GENi , and a transfer 
 signal, TRANi. 
 
 When a generate signal is on, it indicates that for the 
 particular bit position, i, a carry will be produced out of it independently 
 of whether or not a carry was made into the position. This can be 
 expressed as a function of the two input data bits for that position 
 by the equation: 
 
 GENi = Ai • Bi 
 
 When a transfer signal is on, it indicates that for the 
 particular position, i, a carry will be produced out of it only if a 
 carry is made into it. This can be expressed as a function of the two 
 input data bits for that position by the equation: 
 
 TRANi = Ai- m" v Ai 'Bi 
 
 Note that if a GENi signal is on for a given bit position the 
 TRANi signal for that bit position cannot be on and if the TRANi signal 
 is on, the GENi signal cannot be on. However, it is possible for both 
 signals to be off at the same time. 
 
 As can be seen in Drawing 16-3 of the TP Logic Book, these 
 two signals are actually each generated by "dot-oring" 2 NAND circuits 
 together. Figure 2. 3. U. 3/1 shows the GENi and TRANi logic for one bit 
 
 11/5/70 Section 2. 3.U. 3 - 1/5 
 
position of the 5-bit Adder. The so called "dot-ors" must really he 
 considered as MD circuits in the sense that if either input xs 
 forced to zero, the output will_be forced to zero. Thus we have: 
 
 GENi = (Ai) • (Bi) 
 = Ai * Bi 
 
 TRAM = (Ai • Bi) • (AT • "Bi ) 
 = (Ai • Bi) v 55 •"51) 
 = (Ai « Bi) v (Ai • Bi) 
 Once these two signals have been generated, they can be used 
 to calculate the carrys into every bit position of the adder by using 
 the following equations: 
 
 C5DI5 = C5MJ 
 
 C5Ilrt = G5 v 15 ' C51HJ 
 
 C5IN3 = Qlt v TU • G5 v TU • T5 • C5MJ 
 
 C5IN2 = G3 r T3 • Oh v 13 • A • G5 t T3 • TU • T 5 ■ C5IHJ 
 
 C5IH1 = G2 v T2 • G3 v T2 • T3 • Gl, v T2 • T3 • Tl, • G5 
 
 = Y T2 • T3 ' TU • T5 - C5MJ 
 C50V = Gl Y Tl • G2 T Tl • T2 • G3 v Tl • T2 • T3 • GU Y 
 
 = V Tl . T2 ■ T3 • T^ • G 5 Y Tl • 12 • T3 • TU • T5 • C 5 INJ 
 
 where Gi and Ti represent GESi and TRAHi respectiYely, C5IM is the 
 input carry into hit position i, C5H.J is an injected carry into the 
 low order hit (used in subtraction to conYert a Vs complement constant 
 to 2-s complement), and the adder hit positions are numhered heginnmg 
 with 1 at the highest order position. 
 
 The last k equations are implemented using the 236-00 Loohahead 
 Carry Generator diode matrix hoard shown in Figure 2.3.U.3/2. The two 
 initial ones are implemented using MB circuits. The outputs are sent 
 
 «* +h P S-bit Adder and the overflow indicator, 
 to the 5 output positions of the 5-bit Aaaer 
 
 The Adder outputs are determined by the equation: 
 
 Section 2.3.U.3 - 2/5 
 11/5/70 
 
Ai 
 Bi 
 
 Ai 
 Bi 
 
 Ai 
 
 Bi 
 ADD5/E 
 
 TRAN 
 
 — GEN 
 
 Figure 2. 3. h. 3/1 
 Generation of GENi and TRANi in the 5-Bit Adder 
 
 10/22/69 
 
 Section 2.3.^.3 - 3/5 
 
f 
 
 „ -*■ 1! S 
 
 
 >. — !! !! t 
 
 d 
 
 ^^ II 1 " 
 
 
 
 
 M i 1 1 * 
 
 3 !! !! !! y y- 
 
 U 
 
 -*j[i I jl I jl ; 
 
 2- 1 
 
 
 *■*■][! Ill 
 
 1 
 
 -H 1 — T T " 2 
 
 z ][ )[ j !1 
 
 
 -rtJ -T- ~ 0> 
 
 2 j ! 1 j : 
 
 >. 
 
 _H« 00 
 
 _j !! !! 
 
 > 
 
 
 
 y y y ± 
 
 10S 
 o 
 
 — W 1 1 1 lO 
 
 > 
 
 .-11 1 
 
 8^ 1 H 
 
 ro 
 
 1 
 
 *~II JL 
 
 s. 
 
 «~ : l! l_ _L 
 
 z 
 
 m m 't 
 z z z 
 
 «■ ro ro oj w = ^ 
 z z z z z § uj 
 
 LU < UJ < W 
 
 ^ I— i- r- H 
 
 Figure 2. 3. U.3/2 
 5-Bit Adder Lookahead Carry Generator - Diode Matrix - 236-00 
 
 10/22/69 Section 2 - 3 - k - 3 ~ k/5 
 
TIRi = TRANi ■ C5INi v TRANi ■ C5INi 
 The overflow bit is determined by: 
 
 A50V = C5INJ C50V v C5INJ C50V 
 
 This merely means that if an addition sum (C5INJ = 0) is greater than 
 31 or if a subtraction difference (C5INJ = l) is less than 0, the 
 A50V flip-flop will be set. This does not necessarily indicate a fatal 
 error. As is explained in Sections 2.3.1.U and k.^.l.k, this condition 
 is used to indicate stack wraparound. 
 
 Note that in the logic in Drawing 16-3 of the TP Logic Book 
 the inputs to the temporary register T1R and the 5-bit Adder Overflow 
 Flip-Flop, A50V, are enabled by the ADD51E signal. 
 
 10 /9/69 Section 2.3.U.3 - 5/5 
 
2.4 The Pointer Registers 
 
 There are 15 Pointer Registers (PR's) in the Taxicrinic 
 Processor. These registers are in some ways similar to the index 
 registers of more conventional machines, although they are much 
 more powerful. As with conventional index registers, the PR's may 
 be incremented, modified and tested. Thus they can be used in any 
 of the ways that an index register might be used, except that these 
 operations usually appear quite different in the TP because of the 
 unusual machine organization. 
 
 Primarily, however, the PR's are a means of addressing 
 storage. All storage accessing is performed "through" the PR's, by 
 indicating the name of the PR which contains the address desired instead 
 of requesting the actual address (the contents of the PR can be modified 
 as noted above). The indicated PR will contain a segment name and an 
 address in that segment relative to the segment base address. By 
 loading the PR's beforehand, the programmer can refer to any address in 
 memory by using only a 4-bit tag to indicate the name of the PR to be 
 chosen. (For a more detailed description of memory accessing, see 
 Section 4.1) . 
 
 In order to be able to choose a particular PR, each PR has 
 associated with it a 4-bit Name Register (NR). Each NR holds the 
 current "name" assigned to its associated PR. These names are unique 
 but not permanent, i.e., the name of the PR (which is a number for to 
 Ik) can be changed, but only one PR has any given name at any given time. 
 The process whereby the PR names are changed is called "name permutation" 
 and is described in detail in Section 4.2.4.3. 
 
 3/10/69 Section 2.4 - 1/2 
 
Since the PR's axe the onlv_ means hy which memory may he 
 accessed, the address of a variahle must he assigned to its particular 
 PR prior to its first call. Provisions are provided in the instruc- 
 tion set to initialize all designated PR's either one-at-a-time or hy 
 multiple assignment (using an imprimitive instruction, see Section U.2.U). 
 
 Section 2.U - 2/2 
 3/10/69 
 
2.U.1 Pointer Register Formats 
 
 There are three formats for the pointer registers. The 
 "normal" format is used in connection with the pointer stacks as 
 shown in Figure 2.U.1.1 of Section 2.U.I.I. 
 
 The "list processing format" is used with the list processing 
 instructions and does not utilize pointer stacking. Instead the pointer 
 is divided into two half-word link fields which are identical to the 
 contents in the cell currently being "looked at" by the pointer register. 
 
 The third format for pointer registers is the "available space" 
 format. This format is used whenever a PR is utilized to control the 
 assignment of list processing cells. In particular PRlU , which controls 
 the storage of the pointer registers in the pointer stacks, is in this 
 format . 
 
 3/10/69 Section 2.1+.1 - l/l 
 
2.4.1.1 Pointer Stack Format 
 
 Reflecting the nested nature of operand calls, pointer 
 stacks are provided into which the current value of a PR can be 
 pushed for safekeeping. When this value is again required, the 
 stack can be popped and the value reloaded into the PR. The pointer 
 stacks are maintained in main storage under the control of PRlU , which 
 is in the "available space" format (see Section 2.4.1.3). 
 
 The pointer stacks themselves are ordinary unidirectional 
 linked lists. The pointer stack cells take up two words of storage, 
 but only the first 6 bytes are currently being used. As shown in 
 Figure 2.4.1.1, the first two bytes are used to hold the 16 bit address 
 of the previous entry in the stack, while the next two bytes contain 
 the relative address within the segment. The final 2 bytes contain 
 the segment name. 
 
 □ D 
 
 □ D 
 
 □ □ 
 
 LINK 
 
 VALUE 
 
 NAME 
 
 Figure 2.4.1.1 Pointer Stack Cell 
 
 The physical Pointer Registers in the TP actually consist of 
 2 registers, a 4 byte register containing the link and value fields and 
 a 2 byte register containing the name field. This configuration of the 
 pointer register is referred to as the "normal" or "pointer stack" format 
 It should be noted that all flag bits are always pushed into the pointer 
 stacks along with the link, value and name fields. 
 
 6/17/69 
 
 Section 2.4.1.1 - l/l 
 
 
2.4.1.2 List Processing Format 
 
 The List Processing format for the pointer registers 
 differs from the normal PR format. As shown in Figure 2.4.1.2 it 
 consists of a left and right link instead of a link and value field. 
 The name field remains the same and indicates the name of the segment 
 being used as the base for the two links. There are no stacks con- 
 nected with PR's in this format. 
 
 □ 
 
 a 
 
 □ 
 
 □ 
 
 a 
 
 LEFT LINK 
 
 RIGHT LINK NAME 
 
 Figure 2.4.1.2 List Processing Format 
 
 In the list processing format, a PR can be considered to be 
 a "bug" which moves along a list structure in core. At any given 
 time the PR contains an image of the first four bytes of the cell cur- 
 rently being "looked at". These first four bytes will usually be inter- 
 preted as two separate pointers. It should be noted that the PR does 
 not contain a pointer to the cell being looked at. It only contains the 
 contents of the first 4 bytes of that cell. In the conventional method 
 of using the Illiac III list processing instructions (specifically SL 
 and SR), the address of the current cell will be available at the top 
 of the OS. 
 
 In use the PR can be used to sequence through a list structure. 
 At any given point, cells may be added or deleted to the "right" or "left" 
 of the current cell. Links in the structure may also be changed by using 
 the ASSIGN statement to load the contents of some PR into a cell in the 
 structure. Instructions such as POP and PUSH can also be used to load 
 and unload links from the OS. 
 
 3/10/69 
 
 Section 2.4.1.2 - l/l 
 
2.^.1.3 Available Space Format 
 
 The Available Space format la used whenever a PR is utilized 
 to control the assignment of list processing cells. nll U , which controls 
 
 11 r T of rointer resisters ln the polnter stackE - is *^ * «*. 
 
 iormat. As snown in Figure ? k i -z/i +i 
 
 qnp , «, g 2.4.1.3/1 the pointer register in the available 
 
 space format consists of a link f-i-i/i n ^ 
 
 ±lnk fleld and a co ^t field. The name field 
 
 L 6 rin^r 1 : T interPretati °" - fOT «» ~ -d list processing formats, 
 and lndl cates the n m e of the segnent being used as the base for the li„ k 
 
 and count relative addresses. 
 
 r 
 
 LINK 
 
 D 9 D D n 
 
 COUNT 
 
 NAME 
 
 Figure 2.4.1.3/1 Available Space Format 
 
 1116 baSlC "^ beMnd tMs f °™ at  0. 
 
 But what happens if the free list is empty? To solve this 
 problem the last cell in the free list (# 7 in the illustration) has its 
 link pointing to the lowest addressed cell in consecutive storage. The 
 second two bytes of the available space PR (called the COUNT) also con- 
 tains this address, so that whenever the LINK equals the COUNT, the 
 free list has been exhausted. When this happens and a request for 
 another cell is received, the first cell of consecutive storage is used 
 and both the count and link are incremented by the number of bytes in the 
 cell. (However, if the assigned cell crosses or exceeds the segment 
 boundary, an Available Space Empty interrupt is generated. In this 
 latter case the count and link are not incremented, and therefore reflect 
 the arrangement of the available space at the time of the illicit memory 
 access . ) 
 
 3/10/69 
 
 Section 2.U.1.3 - 3/k 
 
As an example, in Figure 2. U. 1.3/2 if the free list became 
 exhausted, the LINK and COUNT would both be equal to the address of 
 cell 10. If a request for a cell were then made, cell 10 would be 
 given out and both LINK and COUNT would be incremented by the value 
 stored in the first half word of the zeroth cell. LINK and COUNT would 
 then point to the address of cell 11. 
 
 The count receives its name from the fact that it is the 
 number of cells (times the cell size) in the list storage area. When 
 the count equals the cell size, all storage is consecutive. (The zeroth 
 cell is dedicated to the cell size.) When the high order byte of the 
 count equals the address bounds of the segment all storage in the segment 
 is of the list type. 
 
 One precaution should he noted. Since a PR in available space 
 m0 de does not have a pointer stack of its own, it cannot he pushed into 
 one as a result a programmer must he extremely careful to avoid pushing 
 an available space format PB or drastic confusion may result. In general 
 there is nothing in the hardware to prevent this. However in the case of 
 PR#lH, an interrupt will be initiated. 
 
 Section 2.U.1.3 - h/k 
 U/18/69 
 
2.U.2 Pointer Registers - Functional Description 
 2.!+. 2.1 Pointer Register Storage 
 
 The Pointer Register contents, consisting of a link field, a 
 value field, and a segment name field (or link, count and segment name 
 fields in the available space format), are stored in two separate areas 
 of the TP mainframe. This is mainly because the use of segment names was 
 not developed until after the rest of the PR logic had been designed. 
 
 The first two PR fields are stored in storage blocks whose design 
 is explained in Section 2.2. Each PR has k storage bytes consisting of 8 
 data bits and 1 flag bit each. This PR storage is divided into two groups, 
 PRO through PR7 and PR8 through PRlU. Also contained in the second group 
 is the Spare Buffer Register (SBR), which is physically exactly like the 
 first k bytes of a PR. It is not treated as a PR, however. Instead it is 
 intended to be an additional storage register to be used by the TP control 
 unit. It is not accessible to the programmer. 
 
 As shown in diagrams 01-0, 01-2 and 01-3 of the TP Logic Book, 
 each group of PR storage is made up of k of the 9 bit/byte storage blocks 
 described in Section 2.2. Each of these blocks represents 1 byte position 
 of a PR. Since each 20^-00 circuit board contains 8 fast register flip-flops, 
 this allows 8 registers in each group. 
 
 The data input to the PR storage blocks consists of the Distribu- 
 tion Bus from the Permuter (DBP). The selection lines from the Pointer 
 Register Selection Logic operate the byte select lines to the byte select 
 drivers (BSD) in the blocks. For writing data into the PR's only the 
 "Gate Both In" option is used by the Input Gate Drivers (see Section 2.2.1). 
 This signal is controlled by DBPR/G and gates the Distribution Bus into the 
 PR storage flip-flops selected by the PR Selection Logic. The DBPR/G signal 
 is common to all 15 Pointer Registers. 
 
 5/15/69 Section 2.4.2.1 - 1/5 
 
The other control inputs to the PR storage blocks are WRPRL/E , 
 the write PR link field enable signal, and WRPRV/E , the write value field 
 enable signal. These signals are inverted and then become the Read/Write 
 input to the BSD's as described in Section 2.2.1. The WRPRL/E and WRPRV/E 
 are common to all 15 Pointer Registers in the two storage groups. 
 
 The data outputs of the two PR storage groups are dot or'ed 
 together to give a single output line in each position, called PRBAi . 
 This presents a minor problem since if both output gates in a given posi- 
 tion are activated with a read/write input of "0" , the group which does 
 not have a select signal activated will have as its output all zeros and 
 this will "erase" the output of the group desired. Therefore a means to 
 gate out only that group which has a word selected in it must be provided. 
 
 This means is provided by the PRTG/S and PR8G/S signals. They 
 arise in the PR Selection Logic. If one of the PR's to 7 is selected, 
 the PRTG/S is "1", enabling the proper group to be gated out. PR8G/S is 
 always the inverse of PR7G/S, so if one group is not in a "selected" state, 
 the other is. This selection need not be made for input gating since the 
 PR actually written into is controlled by the PR select input. 
 
 Only the "Gate False Out" signal is used in the PR storage blocks, 
 since an inverted signal is desired at the output. The method of choosing 
 the select lines is explained in Section 2.14.2.3. 
 
 The final PR field, the segment name, is stored in a special 
 block of IC storage. This storage block consists of l6 registers, each 
 16 bits long and is made up of SN?U75N quadruple bistable latch chips. 
 The storage itself is organized into subgroups of 8 registers x 2 bits, 
 as shown in Figure 2. k. 2.1/1. 
 
 The data input lines come from the IC driver extension of the 
 DB. The output of the segment name storage is the PR Segment Name Bus, 
 PRSNB, which leads to the association logic and can also be gated to the 
 PRB input to the permuter. 
 
 11/12/70 Sectl0n 2 - U - 2 - 1 " 2/5 
 
DATA OUT A 
 
 DATA OUT B 
 
 A 
 
 Mill 
 
 o 
 m 
 
 cr. 
 
 r 
 
 DATA 
 IN A 
 
 DATA 
 IN B 
 
 FOUR ITERATIONS 
 PER BLOCK 
 
 AAAAi 
 
 5o" 
 
 o 
 
 o 
 
 on 
 
 "1 
 
 o 
 
 o 
 
 _l 
 o 
 
 ZT 
 
 o 
 
 _l 
 o 
 
 o 
 
 c 
 
 c 
 
 _ 
 
 IT 
 N 
 <* 
 
 N 
 
 Z 
 
 ,9 
 
 WRITE 
 SELECT 
 
 READ 
 SELECT 
 
 Figure 2.U.2.1/1-PR Segment Name Storage Registers 
 
 (Block Includes 8 Registers x 2 Bits 
 and Read/Write Logic) 
 
 Section 2.4.2.1 - 3/5 
 
To select the desired register, the logic shown in Figure 
 2. k. 2.1/2 is used. When the PR Selection Logic determines the PR which 
 which is to he accessed (see Section 2.U.2.3), the proper selection line, 
 PRiTs, will be activated and can he gated into the PR Segment Name Register 
 Selector Logic by activating SNsTg. Then in order to read out the selected 
 Segment Name, SNRD/E must be set to 0. As shown in Figures 2. k. 2.1/1 and 
 2. U. 2. 1/2 this will activate one of the PSNRi/S lines which in turn will 
 cause the selected PR Segment Name Register to appear on the PRSNB. A 
 write can be performed by activating SNWT/E. 
 
 Note that tie selector is not attached to PR Segment Name Register 
 #15. Since there is no PR#15, this segment name register is used as temporary 
 storage by the Memory Sequence. It has independent read and write control 
 lines so that it can be operated without affecting the selector logic. 
 
 . ., Section 2.U.2.1 - U/5 
 
 5/12/69 
 
 
PSNRO/Sl 
 
 PSNRO/S2 
 
 PSNRW15 
 
 Figure 2.4.2.1/2 - PR Segment Name Register Selector Logic 
 
 Section 2.4.2.1 - 5/5 
 
2,1*. 2. 2 Pointer Register Control Registers 
 
 In using the Pointer Registers several additional control 
 registers are necessary: 15 Name Registers (NR's), 15 Shadow Name 
 Registers (SNR's), 15 one-bit Name Flag Registers (NFR's), the Tag 
 Register (TGR), and two counters (CCT and ACT). They are arranged as 
 shown in Figure 2.H.2.2 along with the Name Bus (NB) and the Shadow 
 Name Bus (SNB). All the registers (except for the NFR's), counters and 
 buses are h bits in length 
 
 The SNR's, NFR's, CCT, ACT and the SNB are used in the process 
 of name permutation whose explanation is deferred until Section U.2.4.3. 
 
 As mentioned previously, the Name Registers are used to hold the 
 current name for each PR. The PR's themselves each have a fixed, "wired-in" 
 name (0 through Ik) corresponding to the PR's position in the hardware. 
 Each physical position however, can be assigned, via the name registers, 
 any distinct name from to Ik by loading this name into the appropriate NR. 
 
 The Tag Register is used to store the tag portion of an operand 
 phrase. This gives the name which is to be searched for in the Name Registers, 
 
 The Name Bus is in reality the input to the compare circuit. The 
 
 compare circuit compares whatever is on the Name Bus with the contents of 
 
 the Name Registers and produces an output on one of 15 output lines corres- 
 ponding to the Name Register which matches the input. 
 
 5/19/69 Section 2.H.2.2 - 1/2 
 
TAG 
 REGISTER 
 
 (TGR) 
 
 4 bits 
 
 •- )SNB- 
 
 15 
 SHADOW 
 
 NAME 
 
 REGISTERS 
 
 (SNR) 
 
 15 
 NAME 
 REGISTERS 
 (NR) 
 
 13 
 
 n 
 
 13 • 
 
 NAME REGISTER 
 
 VS 
 NAME BUS 
 
 COMPARE LOGIC 
 
 13 
 
 
 FIGURE 2.4.2. 2 POINTER REGISTER CONTROL REGISTERS 
 
 5/16/69 
 
 Section 2.4.2.2 - 2/2 
 
2.1*. 2. 3 Pointer Register Selection Process 
 
 When a Pointer Register must be accessed, its name is to be 
 found in the tag portion of the operand phrase currently being decoded. 
 Therefore the first step in the PR selection process is to gate the tag 
 portion of the IR into the TGR where it is stored for possible later use. 
 
 The TGR is subsequently gated onto the Name Bus which is con- 
 nected to the NR/NB Compare Logic. This logic has as inputs the Name Bus 
 and the 15 NR's, and has as outputs, 15 select lines. The NB is com- 
 pared with the NR's and the matching register activates an output on the 
 select line corresponding to the physical PR with that name. For example, 
 suppose the operand wants the PR currently named #3. This value is gated 
 through to the NB and compared with all of the NR's. The NR with 3 as its 
 contents then indicates which PR is #3 at the present time by activating 
 the output line corresponding to that PR. If a match is obtained in none 
 or more than one NR, a malfunction has occurred since the names in the NR's 
 are supposed to be unique. 
 
 After the selected output line from the NR/NB Compare Logic is 
 activated it is then used to activate the proper PR select line which is 
 sent to the storage blocks and the segment name register selector and also 
 to indicate which of the two storage groups (0 through 7 or 8 through lU)PR is 
 in. This latter indication is of no importance when data is to be written into 
 the storage group, since the writing process depends only on the word selected 
 to be written into. On a read out, however, the output gates of the byte 
 storage group which does not contain the selected word must be inhibited; 
 otherwise, all zeros are output from this group. These zeros will in turn 
 override any data output from the other group containing the selected cell. 
 
 5//19 ^ 69 Section 2.4.2.3 - 1/2 
 
The logic here senses for a select signal to one of the 
 (physical) PR's 8 through lU and enables the output select gate from 
 that group. If one of PR's 8-lU is not selected, it is assumed that 
 one of through 7 is selected and that group's output gate is enabled. 
 The group selection signals are PR7G/S and PR8G/S which select registers 
 0-7 and 8-lU, respectively. In the rest, or inhibit, state, the PR8G/S 
 rests '1', or in the select mode. This corresponds to the group containing 
 the SBR. The select signal, when up, enables the output gates of the PR 
 group selected. If no word internal to the 9 bit /byte storage group is 
 also selected, the data output lines from the storage group will all 
 rest '0'. 
 
 When the Spare Buffer Register (SBR) is to be used, the output 
 selection signals from the NR/NB Compare Logic are inhibited so that no PR 
 select lines are chosen. Therefore PR8G/S is on and PR7G/S is off. This 
 causes the group containing the SBR to be chosen. The select signal for 
 the SBR is given by the TP Control. 
 
 
 . ,. Section 2.U.2.3 - 2/2 
 
 5/19/69 
 
2.U.2.U Tag Setting and Sensing 
 
 Sense logic driven by the TGR is used to sense the contents of the 
 TGR for PR#13. If PR#13 is selected (PR#13 corresponds to the Operand 
 Stack Pointer), it may be necessary to clear out or initialize the hard- 
 ware portion of the OS. This signal, N13S is routed back to the control 
 logic;when N13S goes to *1*, it indicates that PR#13 is being (or is to 
 be) selected. 
 
 When the TGR, or either of the counters for that matter, is not 
 selected to be gated onto the NB, the NB contains the number (name) 0000 
 (zero). This name corresponds to the instruction pointer register. Whenever 
 it becomes necessary to access the instruction pointer, it is only necessary 
 to inhibit the TGR to NB gating in order to select the PR named zero. Two 
 other control signals NPR13/S and NPRlU/S are used to force the names '1101' 
 (PR#13) and '1110* (PR#lU) onto the NB. Again in these cases, the TGR to 
 NB gate is inhibited when the names are forced on to the NB. This allows 
 PR#13, the OS pointer, or PR#lU, the Available Space Pointer, to be selected 
 without explicitly gating it into the TGR. 
 
 5/19/69 Section 2.U.2.U - l/l 
 
2.1+.3 Signal Name Lists for Pointer Registers 
 2.U.3.1 Control Signals 
 
 ACT/E/ 
 
 ANB/G 
 
 ASB/G 
 
 BSR1/G/ 
 
 BSR2/G/ 
 
 CCT/E/ 
 
 CEQA 
 
 CNB/G 
 
 CTSB/G 
 
 DBDR/G 
 
 INB1/G/ 
 
 INB2/G/ 
 
 IRTGO/G/ 
 
 IRTG1/G/ 
 
 IRTG2/G/ 
 
 NFCK/E/ 
 
 NFONE 
 
 NFR/G/ 
 
 NOS 
 
 N13S 
 
 NPR13/S 
 
 NPRlU/S 
 
 ACT enable count (ACT = ACT +1) 
 
 ACT-» NB gate 
 
 ACT -* SNB gate 
 
 interrupt recovery - load higher SNR's from DB 
 
 interrupt recovery - load lower SNR's from DB 
 
 CCT enable count (CCT = CCT + l) 
 
 output - value of CCT = value of ACT 
 
 CCT -♦NB gate 
 
 CCT -» SNB gate 
 
 DB -¥ PR storage blocks 
 
 interrupt save - gate lower SNR's onto BR0S 
 
 interrupt save - gate higher NR's onto BR0S 
 
 interrupt save - tag field in byte 
 
 gate the IR->TGR, tag field in byte 1 
 
 gate the IR -» TGR, tag field in byte 2 
 
 name flag check enable 
 
 output - name flag of SNR indicated by NB is = 1 
 
 gate name flag register, i.e. set name flag register 
 
 indicated by NCE. 
 
 Output - set to 1 if TGR = (i.e. if instruction 
 
 pointer is selected) 
 
 Output - set to 1 if TGR =13 (i.e. if 0S pointer 
 
 is selected) 
 
 Load NB with +13 (i.e. the operand stack pointer 
 
 number) 
 
 Load NB with +lU (i.e. the available space pointer 
 
 number) 
 
 1/1/69 
 
 Section 2.U.3.1 - 1/2 
 
PSNRi/Sl - 
 PSNRi/S2 - 
 
 PSNRR15/ - 
 PSNRW15/ - 
 PSNWi/Sl - 
 
 PSNWi/S2 - 
 
 RACT 
 
 RCT 
 
 RNFR 
 
 RSNR/ 
 
 SBR/S 
 
 SBSR/G/ - 
 
 SNNR/G/ - 
 SNRD/E/ - 
 SNS/G/ 
 
 SNWT/E/ ■ 
 
 TNB/G 
 
 TSB/G 
 
 WRPRL/E 
 
 WRPRV/E 
 
 WSBV/E 
 
 PR Segment Name Register - Read Select Register i, 
 
 Signal 1 
 
 PR Segment Name Register - Read Select Register i, 
 
 Signal 2 
 
 PR Segment Name Register #15 - Read 
 
 PR Segment Name Register #15 - Write 
 
 PR Segment Name Register - Write Select Register i, 
 
 Signal 1 
 
 PR Segment Name Register - Write Select Register i, 
 
 Signal 2 
 
 Reset auxiliary k bit counter (ACT) 
 
 Reset k bit counter (CCT) 
 
 Reset all name flag registers 
 
 Reset all Shadow Name Registers to 
 
 Spare "buffer register select 
 
 Gate SNB-» SNR(i) where i is given by NCE which 
 
 is on 
 
 SNR-»NR gate - (all registers whose name flags = l) 
 
 Enable PR Segment Name Register Read 
 
 Gate PR Select Signals, PRi/S/ , into PR Segment 
 
 Name Selector Logic 
 
 Enable PR Segment Name Register Write 
 
 Gate the TGR -» NB 
 
 Gate the TGR -* SNB 
 
 DBP-* pointer link field selected by PRS's 
 
 DBP-*SBR link field if SBR/S is on 
 
 DBP-* SBR value field if SBR/S is on 
 
 7/7/69 
 
 Section 
 
 2.1+.3-1 - 2/2 
 
2.U.3.2 Internal Signals Used by Pointer Registers 
 
 ACTi 
 BR0Si 
 
 CCTi 
 
 DBi 
 
 DBPi 
 
 NBi 
 
 NCEi 
 
 NFRi 
 
 NjRi 
 
 PRBi 
 
 PRi/S/ 
 
 PR7G/S 
 
 PR8G/S 
 
 PRSNBi 
 
 PSNAi 
 
 PSNbi 
 
 SNBi 
 
 TGRi 
 
 Auxiliary h bit counter - bit i 
 
 Base register - Operand Stack bus bit i - to 
 
 empty NR's 
 
 h bit counter - bit i 
 
 Permuter Output Bus - from DBP - ith bit 
 
 Permuter Output Bus - directly from Permuter - bit i 
 
 Name Bus - bit i 
 
 Name Compare Equal for ith register - i.e. NB = value 
 
 in ith NR 
 
 Name Flag Register - bit i 
 
 jth name register - ith bit 
 
 Pointer Register Bus output - bit i 
 
 Pri has been selected 
 
 PR selected belongs to PR's through 7 
 
 PR selected belongs to PR's 8 through lU or SBR 
 
 PR Segment Name Register Output Bus, bit i 
 
 PR Segment Name Register, Out bus A, bit i 
 
 PR Segment Name Register, Outbus B, bit i 
 
 Shadow Name Bus - bit i 
 
 Tag Register, holds tag from IR - bit i 
 
 6/18/69 
 
 Section 2.U.3.2 - l/l 
 
2.U.U Pointer Registers - PL/I Description 
 
 // FXFC PL1 
 
 //(■'L 1 .SYSPDNCH mi SYSOUT*ft 
 
 //PL 1. SYS I M no * 
 
 pregin: ppoci 
 
 actf, anbg, asrgt cctf, ceqa» cmbg, 
 ctsbg, imm, inr1g, inb2g, n13sf nfckf, 
 
 NFflMF, NFRG, NPR13S, MPR14S» RACT, RCT, 
 RN'FR, RSNR, SBRS, SBSRG, S^NRG, TGIM, 
 TNBG, TSBG, IRTGG, PSMPRBG): 
 
 OCL( ACTF, ANBG, ASBG, CCTF, CFOA, 
 CNBG» CTSHGt IMM, INB1G, INB2G, M 13 S , 
 MFCKF, MFOMF, NFRG, MPR13S, NPR14S, RACT, 
 RCT, RNFR, RSNR, SBRS, SBSRG, SMMRG, 
 TGIM, TNBG, TSBG) B I T ( 1 ) , I R TGG ( : 2 ) RIT(l); 
 
 OCL PSMPRBG HIT ( 1 ) ; 
 OCL AOOl FNTRY( (4)RIT( 1 ) ) EXTERNAL; 
 
 OCL( (ACT,CCT,TGR) (4), NFR(0:14), ( BROS , I R t PRB , SBR ) ( 36 
 PRS(0:14), (NR,SNR) (0:14,4) , PR(0:14,36)) BIT(l) 
 
 external; 
 
 OCL MCE (0:14) BIT(l), 
 (MB, 
 SMB 
 
 ) (4) BIT( 1 ) , 
 ( PR7GS, 
 PR8GS 
 
 ) BIT ( 1) , 
 ( I , J ) FIXFO BIN; 
 
 /* SFT U P CniJMTFRS */ 
 
 IF RCT THEN CCT='0'B; 
 
 IF PACT THFM ACT='0'B; 
 
 IF ACTF THEM CALL AOOl (ACT); 
 
 IF CCTF THEM CALL AODKCCT); 
 
 nn i=i. in 4; 
 
 IF ACT( I )i=CCT( I ) THFM GO TO SKI PI; 
 
 F N ; 
 CFOA= • 1 • B; 
 
 .-■;-. i _,-ian MAMF BUS AND/OR SHAOOW MAMF BUS */ 
 C K i pi :mh , SNB=' O'B; 
 IF IRTGG(O) THEN 
 
 00 1=1 TO 4; 
 TGR( I ) = IR( I ) ; 
 TGIM=IR(8) 6 1 MM; 
 ENO; 
 I F IRTGG( 1 ) THFM 
 
 nn I = 1 TO 4; 
 TGR( I ) = IR( 1+9 ) ; 
 TGIM=IR( 17) SIMM; 
 END; 
 IF IRTGG(2) THEN 
 
 nn i= i tu 4; 
 
 TGR( I)=IR(I+18); 
 TGIM=IR( 26 )RIMM; 
 
 END; 
 IF TNBG THFM MR=TGR; 
 IF ANBG THEN NB=ACT; 
 
 II/5/7O Section' 2 . U, 4 - 1/3 
 
IF CM8G THEM NB=CCT; 
 IF TSBG THEN SNB=TGR; 
 IF ASBG THEN SNB=ACT; 
 IF CTSBG THEM SNB=CCT; 
 IF NPR13S THEN DO; 
 
 NB='l • B; 
 
 MB( 3)= , , B; 
 
 END; 
 IF MPR1AS THEN DO; 
 
 nn 1=1 to 3; 
 
 MB( I ) = • l'B; 
 end; 
 
 MB ( 4 ) = • ' B : 
 
 IF fr,*(l)RTGR(2)B-»Tr,R(3)GTGR(4) THEN N13S='l'B; 
 
 ELSE N 1 3 S = ' • B ; 
 
 /* COMPARE NAME BUS *IITH EACH REGISTER */ 
 
 nn i=o to ia; 
 
 NCF( I ) = •()' B; 
 nn j=i Tn 4; 
 
 IF MR(I,J)-=NB(J) THEM GO TO N0TF0; 
 
 E n n ; 
 
 MCF( I ) = ' 1 'b; 
 NOTEO : END ; 
 
 /:■, SFT up POINTER SFI.FCT SIGNALS */ 
 II- SBKSIPSNPRBG THEN PRS='0'B; 
 
 ELSE PRS=MCF; 
 
 />. qhFCK FOR MAMF FLAG RESETS */ 
 IF KNFR THEN NFR='0'B; 
 
 /:;; chFCK FOR GATING IN NAME FLAG REGISTER */ 
 j F MPRr-, thfm nn 1=0 TO 14; 
 
 IF MCF ( I ) THEN MFR ( I )= ' 1 ' B; 
 
 E\in; 
 
 / •-;= C H F C K MAMF FLA G * / 
 
 N F M F = • 1 ' B ; 
 
 IF MFCKF THFM 110 1=0 TO 14; 
 
 IF NCF ( I )f.MFR( I ) THEN NEONE='0'B; 
 
 FMO; 
 /:;: SFT up GROUP SFLFCT SIGNALS */ 
 PRRGS= ' O'B ; 
 \y) \=H TO 14; 
 
 I F MCF( I ) THEM PRBGS=' 1 'B; 
 
 f n o ; 
 IP SBRS THFM prsgs='1 , b; 
 PK7GS = -«(PRHGS ) ; 
 
 /* GATF POINTER TO POINTER BUS AS OUTPUT */ 
 if PR7GS them nn 1=0 TO 7; 
 
 IF PRS(I) THEM PRB(*)sPR( It *) S 
 
 F m n ; 
 
 IF PR8GS THFM 00; 
 
 nn i=b to 14; 
 H/5/70 Section 2.k.h- 2/3 
 
IF PRS( I ) THEM PRB(*)=PR (I,*); 
 FNin; 
 I F SBRS THEN PRR = SBR ; 
 END; 
 
 /* INTFRRIIPT RliS */ 
 
 IF IN81G then nn 1=0 TO 3; 
 
 on j=i to 4; 
 
 8R0S( I#9 + J )=NR (2*1 , J ) ; 
 
 bros(i*9+j+4)=nr(2*i+i t j); 
 
 EMO? 
 
 ENO; 
 IF INR2G THFN 00 1=0 TO 2; 
 
 DO J=l TO 4; 
 
 BRITS ( 1*9 + J )=NR (2*1+8, J ) ; 
 BRnS(I*9+J+4)=NR(2*I+9,J); 
 END; 
 
 DO J=l TO 4; 
 3R0S(27+J)=NR< 14, J ) ; 
 BRnS(31+J)=«0 , B; 
 END; 
 FND; 
 
 /* CHECK FOR RFSFT DF SNR */ 
 IF KSMR THEM SMR='0'B; 
 
 /•: CHFCK FOR GATIMG(SMB TO SNR)'*/ 
 It- SBSRG THEM OH 1=0 TCI 14; 
 
 IF MCE(I) THEN SNR ( I , * ) =SNB ; 
 
 FNO; 
 
 /■ CHFCK FOR SMR TO MR * / 
 
 if snmrg thfm nn i=n Tn 14; 
 
 IF MFR(I) THFM MR ( I , * ) =SNR ( I , * ) ; 
 END? 
 
 F • '■' P^FGI N : 
 
 11/5/70 
 
 Section 2.k.k - 3/3 
 
 
 
2. 5 Base Registers 
 
 The Base Registers (BR's) are used as a part of the memory 
 
 accessing scheme to contain information about the segments of the 
 
 Ik 
 
 current process. Up to 2 segments are allowed the programmer. But 
 
 as there are only 7 usable base registers, only the data on the 7 most 
 recently used segments is held within the TP. The remaining segment 
 base information is retained in memory in the Segment Name Table of the 
 current process. BR's 1 through 7 are used to address recent data. BR#0 
 is used to indicate the Segment Name Table. 
 
 To identify which segments have their bases in the TP, each 
 base register (other than BR#0) has an associative register assigned to 
 it which contains the name of the segment currently in that base register. 
 When a PR is selected as an address of a cell to be accessed from memory, 
 its segment name register is associatively compared with the associative 
 registers for each base register. If a match is found, the matching base 
 register will be used. If there is no match, the required base data will 
 be accessed from the Segment Name Table. 
 
 In order to completely determine a file, the base register must 
 
 1) a base address which indicates where the file storage 
 begins. (in Partitioned Mode the base address is the 
 address of the page map - see Section k. 1.3.2). 
 
 2) a bounds, which indicates how many pages have been assigned 
 
 3) a code bit to indicate the Data Access Mode (Contiguous or 
 Partitioned), and 
 
 h) two other code bits to determine the level of Accessing 
 Privilege (read-write, read only, trap, or no access). 
 
 contain : 
 
 3/12/69 
 
 Section 2.5 - 1/2 
 
 The base address uses a 16 bit page address which represents 
 the upper 16 bits of a normal 2k bit address. The rightmost 8 bits of 
 the corresponding absolute address are always taken to be zeros. The 
 bounds is an 8 bit quantity allotting the user a specified number (up 
 to 256) of pages of memory for this file. These two quantities are 
 placed in a 3 byte BR with the bounds in the leftmost byte, the base 
 address in the rightmost 2 bytes, as shown in Figure 2.5/1- The Data 
 Access Mode bit is in the flag position of the leftmost byte and the 
 Accessing Privilege bits are in the flag positions of the 2 rightmost 
 bits. How these various quantities are used is explained in Section k.l 
 on Memory Accessing. 
 
 Since the base information controls where and how a user may 
 access the memory, users must he prevented from changing the contents of 
 any BR. For this reason instructions which change the value of any portion 
 of a BR are considered "privileged" and may only he used hy the supervisor 
 routine. 
 
 Data Access 
 Mode Bit 
 
 Accessing Privi- 
 lege Bits 
 
 D 
 
 bounds 
 
 
 
 page address 
 
 D 
 
 n 
 
 Figure 2.5/1 - Base Register Format 
 
 
 5/16/69 
 
 Section 2.5 - 2/2 
 
2.5-1 Base Register Functional Description 
 
 The Base Register Logic is shown in block diagram form in Figure 
 2.5-1. In a memory access a pointer register will be selected and one 
 of the segment name registers will be gated out to the PRSN bus. This 
 is then associatively compared with all of the Associative Registers. 
 If there is a match, the corresponding BR select line will be activated 
 and the proper Base Register will be read out onto the BROS bus. If 
 there is no match, a special control sequence will be entered to access 
 the Segment Name Table for the proper base information. This data is 
 then stored in the base register which has been "inactive" for the longest 
 amount of time. This choice of BR is made by the Queue Counter Logic 
 (Section 2.5-1.2). 
 
 3/12/69 Section 2.5-1 - 1/2 
 
UJ 
 
 co 
 
 z o 
 
 o u 
 a. <" 
 
 ro 
 
 UJ* 
 CO 2 
 
 o < 
 
 UI z 
 cr 
 
 i- 
 cr z 
 
 UJ UJ 
 
 CD 
 
 z 
 
 CO 
 CL 
 
 O 
 UJ 
 
 cr 
 
 UJ 
 
 < 
 
 UJ 
 CO 
 
 cr 
 
 0. 
 
 in 
 
 1-3 
 o 
 ui CO 
 
 _l UJ 
 UI z 
 
 >- 
 
 cr 
 
 *— ♦ 
 
 00 
 Q 
 
 cr 
 
 UJ 
 
 h- 
 
 cr 
 ui 
 a. 
 
 o 
 
 CO 
 
 z 
 
 CO 
 
 < 
 
 o 
 o 
 
 CO 
 CO 
 
 < 
 
 o 
 
 UI 
 
 CO 
 
 > cr 
 
 •- y 
 
 < *7 
 
 o o 
 
 CO LU 
 
 co cr 
 < 
 
 lO 
 
 nnm 
 
 rrrrrn 
 
 
 co 
 cr 
 
 UJ UI 
 
 II 
 
 CO 
 
 cm 
 cr 
 
 CD 
 
 cr 
 
 I 
 
 cr cr 
 
 UJ UJ 
 
 co 
 
 CD 
 
 ui 
 cr 
 
 7/9/69 
 
 O 
 o 
 
 UI 
 
 Z> I- 
 
 UJ O 
 
 3 liJ 
 
 O -J 
 
 cr 
 
 UI 
 
 *9 < O 
 
 UJ cr o 
 
 CO 
 
 ♦i 
 
 CO 
 
 UJ 
 
 m 
 
 m 
 
 UJ 
 
 cr 
 cr> 
 
 Q 
 
 cr 
 
 o 
 
 CO 
 CO 
 
 cr 
 
 CD 
 
 ui 
 
 cr 
 co 
 < 
 
 UJ 
 
 T 
 
 ui 
 \ 
 
 cr 
 
 CD 
 Q_ 
 
 cr 
 
 tr 
 
 CD 
 
 CO 
 
 Sect 
 
 ion 2.5-1 " 2/2 
 
 o 
 
 CD 
 
 3 
 
 q: 
 uj 
 
 I- 
 co 
 
2.5.1.1 Base Register Storage 
 
 The Base Register storage is made up of the same type of 
 storage blocks as the Operand Stack and the Pointer Register, i.e. 9, 
 201+-00 circuit boards driven by 2, 205-00 circuit boards. The BR 
 storage consists of k blocks arranged as shown in Drawing Number 01-1 
 of the TP Logic Book. (For a detailed description of these blocks - 
 see Section 2.2). 
 
 Because of the fact that the BR's are only 3 bytes long, they 
 are staggered in their arrangement in the k subgroups. This arrangement 
 is shown in Figure 2. 5 .1.1, where BRij indicates the position of the jth 
 byte of the ith Base Register. Each Base/Bounds register is a 3 byte unit 
 and the Byte Select inputs are common in 3 byte groups. Note that in this 
 arrangement, there are 8 bytes of storage which remain unused. As will be 
 explained later (in Section 2.6), these are used for the Instruction Buffer 
 Register (IBR). 
 
 The inputs to the Base Register storage group consist of the 
 Distribution Bus from the Permuter (DBP), the Base Register select lines, 
 and read/write control lines. The Base Register select lines are connected 
 to the word select inputs of the storage block Byte Select Drivers (BSD). 
 The write operation takes two control lines ,DBBRS/G/ to gate the DBP to the 
 inputs of the flip-flops and WRBR/E which puts the selected flip-flops in 
 the "write in" state so that they will accept the data gated in. The 
 WRBR/E signal connects by means of an inverter to the read/write input of 
 the BSD while the DBBRS/G/connects directly to the "Gate Both In" line of 
 the Input Gate Drivers. 
 
 Previous to gating the data into the flip-flops, the Permuter is 
 used to shift the data so that when it is placed on the DBP, its boundaries 
 will coincide with those of Figure 2.5.1.1. 
 
 3/12/69 Section 2.5-1.1 - 1/2 
 
Group 
 
 BR01 
 BR12 
 BR23 
 BRUl 
 BR52 
 BR63 
 
 Group 1 
 
 BR02 
 BR13 
 BR31 
 BRU2 
 BR53 
 BRT1 
 
 Group 2 
 
 BR03 
 BR21 
 BR32 
 BRU3 
 BR6l 
 BRT2 
 
 Group 3 
 
 BR11 
 BR22 
 BR33 
 BR51 
 BR62 
 BRT3 
 
 RESERVED FOR INSTRUCTION BUFFER 
 
 REG. 
 
 Figure 2.5-1.1 Arrangement of Base Registers 
 
 The output of the BR Storage Group is the Base Register-Operand 
 Stack Bus (BROS). When the BRBSP/G signal, which is connected directly to 
 the "Gate False Out" input of the Output Gate JDrivers , is activated, the inverte 
 contents of the selected BR is gated to the BROS. The data, at this point, 
 is still in the position given in Figure 2.5-1.1. The Permuter can then 
 be used to shift it so that it is delivered to the DB, left justified. 
 
 11/5/70 
 
 Section 
 
 2.5-1.1 - 2/2 
 
2.5.1.2 Associative Register Storage 
 
 The Associative Register Storage "block is completely made 
 up of IC chips. It consists of 7 registers each containing 16 bits, 
 along with the appropriate input and output gating. An example of one 
 register is shown in Figure 2.5.1.2/1. 
 
 Each Associative Register itself is made up of four SN7I+75 
 quad bistable latch chips. The input data comes from the DBB bus which 
 is merely an extension of the DB bus into the IC logic part of the 
 machine. The input gating signals are generated by 2 NOR circuits 
 whose outputs go to 1 when the inputs, ASRW/E and RBRi /S , go to zero. 
 ASRwZe is the main signal for writing data into an Associative Register. 
 RBRi /S is a select signal generated by the Queue Counter logic (see 
 Section 2.5.1.3). It selects the particular Associative Register to be 
 written into. 
 
 Under normal program control there is never any need to read 
 out the contents of an associative register since these registers are 
 only used in comparisons with the PR Segment Name Bus. When a task is 
 removed from a TP the Associative Register contents are simply abandoned 
 by setting all of the OK bits to zero. 
 
 It is necessary, however, for the Engineering Console (see 
 Section k.T) to be able to display the contents of these registers. For 
 this reason the Associative Registers have output gates which allow a 
 selected register to be gated on to the PRSNB bus and from there to the 
 PRB bus and the Permuter input gate. 
 
 11/5/70 Section 2.5.1.2 - l/l 
 
2.5.1.3 Queue Counters 
 
 The Queue Counters are used to keep track of which base 
 register has not been used for the longest length of time. The queue 
 counter logic provides a series of output signals (REPLACE SELECT i) 
 which indicate which associative register has not been in use for the 
 longest period. 
 
 The overall idea is to use 3 bit counters to indicate a base 
 register position in a service queue from to 6. The register labeled 
 is that register most recently accessed, while the register labeled 6 
 was used least recently. Each time a memory access is performed (and 
 the segment name is among those currently in the associative registers), 
 the counter corresponding to the associative register is set to zero, 
 and all the counters with counts less than the previous contents of the 
 selected counter are incremented by one. This ensures that the order in 
 the queue will always be in the order of most recent usage. Therefore 
 the least recently used associative register will always have a counter 
 containing a 6. 
 
 11/5/70 Section 2.5.1.3 - l/k 
 
The detailed logic of the Queue Counters is shown in Figure 
 2. 5.1. 3. /I. Operation is as follows. 
 
 Each counter has an overflow detector in the form of a flip- 
 flop. After a base register-associative register combination has been 
 selected, all of the 3 bit queue counters are incremented one count at 
 a time until the counter corresponding to the selected register overflows. 
 At this point an extra count is added to all counters whose overflow flip- 
 flops are still off. Then the count pulses are continued until the total 
 number of pulses, not counting the extra pulse, is 8. All counters with 
 numbers . the count in the selected base register have now returned to 
 their initial value, while those with initial counts the selected count 
 have been incremented by 1. Also all overflow flip-flops are now on. 
 The overflow flip-flops are now reset by inserting a common 
 count pulse into each overflow flip-flop. Finally the selected counter 
 is reset to zero. An example of the counting is shown in Figure 2.5-1.3/2. 
 
 For the queue counters to function properly each counter must 
 initially contain a distinct number from to 6 inclusive. Therefore at 
 turn-on a special sequence must be performed to ensure that this condx- 
 tion is met. Once the counters have been set up, however, they will 
 continue to operate properly as long as no hardware error occurs. 
 
 The setup process is quite simple. It consists of using the 
 cycle counter to select each queue counter in turn to be reset. Between 
 each reset, all the queue counters are incremented once. Thus after 7 
 cycles there will be one counter with each number from to 6. The 
 logic is given in TP Logic Book, Drawing No. 23-3. 
 
 , , Section 2.5.1-3 - 2/U 
 
 11/5/70 
 
:nt/e qcnt/e 
 
 SOCTOV 
 
 RSCTR/S 
 
 RQOVF/S 
 
 BR7/S 
 
 Figure 2. 5.1. 3 A - Queue Counters 
 
 11/5/70 
 
 Section 2.5-1.3 - 3/k 
 
Contents 
 
 of 
 Counters 
 
 
 
 Counter of 
 Selected — * 3 
 Associa- 
 tive h 
 Register 
 
 5 
 
 1 
 2 
 3 
 
 k 
 
 5 
 6 
 
 Count Cycles 
 3 U 5 X 6 7 8 
 
 h 5 6 7 0* 1 
 
 5 6 T 0* 1 2 
 
 6 7 0* 1 2 3 
 T 0* 1 2 © 
 
 2 3 
 
 3 h 
 h 5 
 5 6 
 
 67 0* 1123^ 
 7 0* 1223^5 
 
 This is then reset to 0, 
 * = overflow 
 X = extra count 
 
 7 0* 1 
 
 3 U 
 
 Figure 2.5.1.3/2 Operation of the Queue 
 
 Counters : An Example 
 
 11/5/70 
 
 Section 2.5.1. 3 " ^ /U 
 
2.5.1.1* Association Logic and Associative Registers 
 
 The Association Logic compares the contents of the PRSNB bus 
 with each of the Associative Registers "connected" to the BR's. It is 
 conceptually similar to the comparison logic for matching the Name Bus 
 with the Name Registers in the Pointer Register logic. The Associative 
 Registers however are 16 bits long while the Name Registers are only k 
 bits in length. 
 
 The association logic is shown in Figure 2.5.1.3/1. The OKn 
 signal comes from a flip-flop attached to the particular association 
 register which indicates that the data in the register is valid. Thus 
 all that is needed to "empty" the registers is to set the seven OK flip- 
 flops to 0. 
 
 11/13/70 Section 2.5-l.U - 1/2 
 
figure 2.5.1.V1 
 
 ASSOCIATION LOGIC FOR ASSOCIATION REGISTER i 
 
 11/13/70 
 
 Section 2.5-l. 1+ - 2/2 
 
2.5.2 Signal Name Lists for the Base Registers 
 2.5.2.1 Control Signals 
 
 ASRiW/El 
 ASRiW/E2 
 ASRW/E 
 
 BRG/S 
 
 BRi/S/ 
 
 BRRi/S/ 
 
 BRQi/S 
 
 BRSBP/G/ 
 
 BRSS/G 
 
 CYC6 
 
 CYC^V 
 
 CYCT/E 
 
 DA 
 
 NYET 
 
 QCNT/E 
 
 QSETUP 
 
 RBRi/s/ 
 
 RCYCT/S 
 
 RPBR/E 
 
 RQ0VF/S 
 
 RSCTR/S 
 SNS/G 
 SQCT0V 
 XQCNT/E 
 
 Associative Register i, write enable 1 
 11 if 11 11 11 o 
 
 Associative Register write enable. Enables Associative 
 
 Register selected by RBRi/S signals. 
 
 Select BR portion of BR-IBR storage block. 
 
 Select BRi in BR-IBR storage block. 
 
 BRi was selected by association logic 
 
 Select BR Queue counter i 
 
 Gate base register storage to BROSi according to BRi/S signals 
 
 Gate BRNi/S signals to BR Queue counter select register. 
 
 Output Signal - cycle counter equals 6. 
 
 Output Signal - cycle counter overflow 
 
 Enable count of +1 on cycle counter. 
 
 Output signal - a match between PRSNB and an associative 
 
 register has been made. 
 
 Output signal - no match between PRSNB and an associative register 
 
 Enable count of +1 on all Queue counters 
 
 Turned on during initial Queue counter set up procedure. 
 
 Select BRi for reloading 
 
 Reset cycle counter 
 
 Enable the replacement of the BR selected by the RBRi/S signals 
 
 Reset overflow bit on Q counters. This signal only works if 
 
 all overflow bits are on. 
 
 Reset selected Q counter 
 
 Gate PR Select Signals into select register 
 
 Overflow by counter selected by BRi/S 
 
 Enable extra count of +1 for all Queue counters with their 
 
 overflow bit off 
 
 11/5/70 
 
 Section 2.5-2.1 - 1/1 
 
 
 
2.5.2.2 Base Register Control - Internal Signals Used by the Base Regi:;t'jr:; 
 
 CMAi/ 
 
 CMBi/ 
 
 CMCi/ 
 
 CMDi/ 
 
 BR/Si 
 
 DBBi 
 
 DBPi 
 
 OKi 
 
 PRSNBi 
 
 Compare result of first quarter of associative register i with 
 PRSNB. Set to if equal. 
 
 Compare result of second quarter of associative register i with 
 PRSNB. Set to if equal. 
 
 Compare result of third quarter of associative register i with 
 PRSNB. Set to if equal. 
 
 Compare result of fourth quarter of associative register i 
 with PRSNB. Set to if equal. 
 
 Output bus for Base Registers and Operand Stack. 
 
 Permuter Output Bus used by control logic. Logically equivalent 
 to DB, but produced by IC drivers, bit i 
 
 Permuter Output bus direct from Permuter. 
 Associative Register i contains valid data. 
 PR Segment Name Bus - bit i. 
 
 11/5/70 
 
 Section 2.5.2.2 - l/l 
 
2.5.3 Base Registers - PL/1 Description 
 E X 6 C P L 1 
 
 [■ACL CI. I 
 
 Ptl .SYSPUNCH DD SYSniJT = B 
 PL1. SYSIN DD * 
 
 BRFGIN: PROC(BRGS, BRSSG, CYC6, CYCOV, CYCTF, 
 DA, NYFT, PSNRR15, PSNRW15, QCNTF, 
 OSETUP, RCYCTSr RDBRF, RPBRF, RODVFSt 
 SNRDE, SNSG, SNWTF, SOTOV, WRRRF, 
 XOCNTF, BR S» PSNPRBG); 
 OCL(BRGS, BRSSGt CYC6, CYCOV, CYCTF, DA, 
 
 NYET, PSNRR15t PSNRW15, QCNTF, OSETI)P t 
 RCYCTS, RDBRE, RPBRFt RQOVFS, SNRDF, 
 SNSG, SNWTE, SQTOVt WRBRE, XQCN1 F ) 
 B I T { 1 ) ; 
 DCL PSNPRBG BIT ( 1 ) ; 
 OCL AOD1 EIMTRY( (4) BIT(l)) EXTERNAL; 
 OCL PRB(l:36) BIT(l) EXTERNAL; 
 
 DCU ASRG(7,18), BR<0:7,36), BROS(36), CYCTR(4), 
 QC0UNT(7,4) ,PRSNB( 1 : 36 ) ,PRSNR(0: 15, 18 ) , 
 ( PR S,PSNRS1,PSNRS2,PSNWS1,PSNWS2, SNSRG) (0:15), 
 (RRCS,BROS ,BRRS,BRWS,CMA,CMB,CMC,CMD,OK,RBRS ) 
 
 (0:7)) BIT ( 1 ) EXTERNAL; 
 DCL BRS(0:7 ) BIT ( 1 ) ; 
 PCL ( PSNA,PSNB) ( 1 : 17) BIT(l), 
 C00NTFR(4) BIT ( 1 ) , 
 (X,I,J) FI XFD bin; 
 DCL BRSRFG(0:7) RIT(l) EXTERNAL; 
 
 /* TORN ON ASSOC IATIVF LOGIC CONTROL SIGNALS */ 
 
 RPBRE=BRGSGWRBRE; 
 RDBRE = BRGSG-.WRBRF; 
 
 BRSSG=RDBRE ; 
 
 /* GATE PR SELECT SIGNALS INTO SELFCT REGISTFR SNSRG */ 
 
 IF SNSG THFN SNSRG=PRS; 
 
 IF SNRDE THFN 00 1=0 TO 14; 
 
 PSNRS1 ( I ) ,PSNRS2( I )= SNSRG ( I ) ; 
 END; 
 IF SNWTE THEN 00 1=0 TO 14; 
 
 PSNWS1(I),PSNWS2(I )= SNSRG ( I ) ; 
 END; 
 PSNRS1 ( 15) ,PSNRS2 ( 15)=PSNRR15; 
 PSNWS1(15),PSNWS2(15)=PSNRW15; 
 
 PSNA ,PSNB= ' O'B ; 
 
 00 J=l TO 8; 
 
 DO 1=0 TO 7; 
 
 PSNA( J )=PSNA( J) | (PSMRSK I ) EPRSNR ( I , J ) ) ; 
 END; 
 DO 1=8 TO IS; 
 
 PSNB(J)=PSNB(J) | (PSNRS1 ( I )£PRSNR< I , J ) ); 
 END; 
 END; 
 
 H/5/70 Section 2.5.3 - lA 
 
nn j =10 to 17; 
 
 ~PSNA(J)=PSNA(J) I  ; 
 
 END; 
 
 D ° I= PSNB(J)=PSNB(J)I (PSNRS2U ) f.PRSNR ( I , J ) ) ; 
 
 end; 
 end; 
 
 /* PR SEGMENT NAME REG OUTPUT BUS */ 
 
 Dfl 1 = 1 TO 17; 
 
 PRSNB( I )=PSNA( I ) |PSNB( I ) ; 
 
 end; 
 
 IF PSNPRBG THEN PRB=PRSNB; 
 
 /* fDMRARE THE A QUARTERS OF EACH ASSOCIATIVE REGISTER WITH 
 THE RESPECTIVE QUARTERS OF PRSMB. IE THE QUARTERS MATCH, SET 
 THF RESPECTIVE CM SIGNALS TO 1 */ 
 
 CMA,CMB,CMC,CMD=« l'B; 
 
 DO 1=1 TO 7; 
 
 DO J =1 TO A; 
 
 IF PRSNR(J)-. = ASRG(I,J) THEN CMA(I) = , 0'B; 
 
 end; 
 
 nn j=s to 8; 
 
 IF PRSNB(J)-=ASRG( I, J) THEN CMB(I)='0«B; 
 
 END; 
 
 DO J = 1 TO 13; 
 
 IF PRSNB(J)-=ASRG(I,J) THEM CMC(I)='0'B; 
 
 END; 
 
 DO J = 14 TO 17; 
 
 IF PRSNB(J)-=ASRG(ItJ) THEN CMD(I)='0'B; 
 
 END; 
 E N D ; 
 
 /* BASF REGISTER SELECT SIGNAL DRIVERS */ 
 
 brp-s=' O'B; 
 B R W S = ' ' B ; 
 IF rpbRE THEN DO I = 1 TO 7; 
 
 BRWSt I )=RBRS( I ) ; 
 
 end; 
 if rorpf thfn do 1=1 to 7; 
 
 BRRS(I)=OK(I )6CMA( I )&CMB( I KCMCd )6CMD(I )? 
 
 END; 
 /^--CALCULATE BRCS WHEN IMPLEMENTFD *l 
 
 B R S = ' ' B ; 
 IF BRGS THEM DO 1=1 TO 7; 
 
 BRS( I )=BRRS( I ) |BRWS( I ) ; 
 
 end; 
 
 /* BRSREG IS THE REGISTER ON DRAWING 23-3 */ 
 IF BRSSG THFN BRSRFG=BRRS; 
 
 
 11/5/70 
 
 Se 
 
 ction 2.5.3 - 2/h 
 
/* CYCTR IS THE 4 BIT COUNTFR (IN DRAWING 23-3 */ 
 
 IF CYCTF THEN CALL ADD 1 ( CYC TR ) ; 
 IF KCYCTS THFN CYCTR='0'B; 
 CYCOV= '0' ft; 
 IF CYCTR(l) THEN CYC0V='1'B; 
 
 /* nECnOF VALUE IN CYCTR-*/ 
 
 x = o; 
 
 IF CYCTR (2 ) THEM X=X+4; 
 
 IF CYCTR(3) THEN X=X+2; 
 
 IF CYCTR(4) THEM X=X+1; 
 
 CYC6= 'O'B; 
 
 IF X = 6 THEN CYCA = DA |BRRS( I ) ; 
 
 END; 
 
 NYET = -.DA ; 
 
 IE BRGSE-iWRBRF THEN DO; 
 
 H/5/70 
 
 Section 2.5.3 - 3/U 
 
BRns= , o , B; 
 
 DO 1=0 TO 7; 
 
 IF BRS(I) THEN BROS ( * ) = BROS ( * ) I BR ( I , *) ; 
 
 END; 
 
 END; 
 
 emo bregin; 
 
 /* 
 
 U/5/70 
 
 Section 2.5.3- hfi 
 
2.6 Instruction Buffer Register 
 
 The Instruction Buffer Register (IBR) is an eight byte (double 
 word) register used to store the instructions as they are obtained from 
 core. The Instruction Register (IR) is used to hold that part of the 
 instruction which is currently being processed and is loaded from the 
 IBR. In the case of Primitive Instructions the IR usually contains the 
 complete instruction. 
 
 The IR is loaded from the IBR according to the count in the 3 
 bit Instruction Counter (ICT). This counter indicates the first byte of 
 the next phrase to be worked on. When a new phrase is to be interpreted 
 the byte designated by the ICT and the three succeeding bytes are read out 
 on to the BROS bus from the fast registers. 
 
 In the next section a more detailed description of the operation 
 of the IBR and ICT will be given. 
 
 U/7/69 Section 2.6 - 1/1 
 
2 - 6 ' 1 Instruction Buffer Register-Functional Description 
 2.6.1.1 Instruction Buffer Register Storage 
 
 The Instruction Buffer Register is contained in the same 9 
 bit/byte storage blocks as the Base Registers (see Section 2.5.1.1). 
 As can be seen in Drawing 01- 1 of th e TP Logic Book, each byte of the 
 IBR has its own select line, IBRO/S, IBRlTs etc. which is connected to 
 the byte select input of the Byte Select Driver (BSD). The WRIB/E line 
 is used to indicate whether the selected byte should be read or written 
 
 over. 
 
 In order to write, WRIB/E must be "0",DBBRS/G must be "0" in 
 order to gate the data from the permuter to the flip-flop inputs, and 
 the proper select lines must be "0". 
 
 The output of the IBR is connected to the BROS bus. When the 
 BRSBPTg signal, which is connected directly to the "Gate True Out" input 
 of the Output Gate Drivers is activated, the four IBR bytes selected by 
 the ICT are gated to the BROS. The permuter is then used to place them 
 in sequential positions in the IR. 
 
 k/7/69 
 
 y Section 2.6.1.1 - 1/1 
 
.1.2 The Instruction Counter and Selection Logic 
 
 The Instruction Counter (ICT) is a three bit double-rank 
 counter which is capable of being counted up by ones or twos (refer 
 to TP Logic Book Drawing lU-2). It has a special added bit to indicate 
 overflow. The purpose of the ICT is to keep track of the initial byte 
 position of the instruction currently being executed by the TP. For 
 this reason it really represents the low order 3 bits of PR#0. 
 
 The ICT is used to drive the Instruction Buffer Register 
 selection logic so that whenever the IR is loaded from the IBR the 
 proper h bytes will be selected. The selection is done with a 23U-0U 
 diode matrix card, the same type as used in the Operand Stack selection 
 logic (see Section 2.3.1-3). As shown in the TP Logic Book Drawing lU-1, 
 the three output lines from the ICT can be gated to the input bus where 
 they are decoded using eight 3-input NANDS from a 2U1-00 board. These 
 eight outputs are then used as inputs into the 23^-OU. The diode matrix 
 card acrivates the four desired select signals. Note that the 23^-OU 
 utilizes a wrap-around feature so that h bytes are always selected no 
 matter what the value of ICT. 
 
 As can be seen in TP Logic Book Drawing 14-1, there is a pro- 
 vision for gating the last 3 bits of the DB into the ICT if the DBCT/G 
 line is on. Tnis is used whenever PR#0 is loaded with a new value field. 
 Whenever PR#0 is read out of storage, the 3 bits of the ICT are masked into 
 the 3 low-order bit positions. This masking is performed using the ICTP/G 
 signal and the OSR bus into the Permuter. 
 
 The overflow bit is used during instruction scanning. If it 
 turns on, PR#0 must be incremented by 8. 
 
 V7/69 Section 2.6.1.2 - l/l 
 
2.6.2 Signal Name Lists for the Instruction Buffer Register 
 2.6.2.1 Control Signals 
 
 BRSBP/G/ - BR Storage Block -» Permuter Input 
 
 DBBRS/G/ - Gate DB -4 BR-IBR Storage Block 
 
 DBCT/G/ - Gate DB-4 ICT 
 
 IBR/S/ - Selection IBR portion of BR-IRB storage 
 
 ICT1/E - Enable counter, ICT = ICT + 1 
 
 ICT2/E - Enable counter, ICT = ICT + 2 
 
 ICTP/G - Mask ICT into permuter output 
 
 WRIB/E/ - Load instruction storage buffer read-write 
 
 7/7/69 
 
 Section 2.6.2,1 - l/l 
 
2.6.2.2 Internal Signals Used by the Instruction Buffer Register 
 
 DBi 
 DBPi 
 ICTi 
 IBRi/S/ 
 
 IRi 
 0SRi 
 
 Output bus from DBP - bit i 
 
 Output bus directly from permuter - bit i 
 
 Instruction Counter - bit i 
 
 Instruction Buffer - select byte i (U chosen at 
 
 a time) 
 
 Instruction Register - bit. i 
 
 Bus from 0S registers to Permuter - bit i 
 
 6/18/69 
 
 Section 2.6.2.2 - l/l 
 
■• •*'' ■'-' '•"- '■'!' i-ui'i-.T !:, r ,i:-.t..T - Logical Degcrigtion 
 2.6. k.l Instruction Counter Logic 
 
 The Instruction Counter (lCT),as shown in Drawing lU-2 of 
 the TP Logic Book, is a three bit double rank counter which can count 
 by one's or two's and which has a special overflow flip-flop to indicate 
 when it has exceeded a count of 7. It can be set to a predetermined 
 number by gating the true and complement values of the 3 low order data 
 bits of the DB (DB33, DB 3 U , and DB35) to the true and complement output 
 lines of the upper rank of the counter. This causes the upper rank 
 flip-flops to be forced to the value which appears on the 3 low order 
 DB bit positions. 
 
 The ICT itself is a normal double rank counter in that the 
 upper rank, which contains the current state of the counter, is gated 
 into the lower rank during the time that the ICT is not counting (i.e. 
 both ICT1/E and ICT2/E are '0'). The output of the lower rank, in turn 
 is sent to the carry propagation logic which decides what the state of 
 the ICT will be the next time that one of the count signals is activated. 
 However since neither ICT1 or ICT2 is active at this time the actual 
 value of the next state cannot be gated into the upper rank. When this 
 does happen the gates which send the data from the upper rank to the 
 lower rank will close. This ensures that the data inputs to the carry 
 logic will not change. Then, depending on which signal was activated, 
 the proper new state will be gated into the upper rank. When enough 
 time has passed for the new count to be stable in the upper rank the 
 count enable signal can be deactivated. 
 
 The carry generation logic is complicated by the fact that the 
 ICT can be incremented by either one or two. In an incrementation by 
 one, the low order ICT bit position, ICT3 , will change state and the 
 ICT2, ICT1 and ICTOV bit positions will change state if the previous 
 state generated a carry. 
 
 In an incrementation by two, the second lowest order ICT bit 
 position, ICT2, will change state and ICT1 and ICTOV will change state 
 if the previous state generates a carry. In the count-by-two case ICT3 
 does not change state. 
 
 11/12/69 Section 2.6.1k! - 1/2 
 
Thus what we have, in effect, is two sets of carry generation 
 l06 ic - one set to increment the counter by 1 and the other set to 
 increment the counter by 2. Since the counter is oniy 3 hits long, full 
 carry looKahead is used since it adds almost no extra logic rn thrs 
 case All this means is that at any given hit position in the counter 
 that'position will change state if every previous position in the counter 
 ls a •!' (for the case of indention hy l) of if every prevxous posrtxon 
 with the possible exception of the lowest order position is a '1' (an 
 the case of incrementation by 2). 
 
 Thus for the lowest order position, ICT3, all that is necessary 
 ls to change state when I0T1/E = 1 and to do nothing when ICT2/E - 1. 
 For the second lowest order position, ICT2, the upper rank flip-flop 
 changes state every ti»e ICT2/E - 1 hut if ICTl/E - 1 it only changes I 
 state if 1CT3 was also a 1. This process of changing state is accomplrshed 
 hy double gating the signals of the lower rank flip-flop into the upper 
 rank flip-flop in such a manner as to reverse its setting. Cray one 
 of the gates will actually operate each time, one being used when the 
 flip-flop is set to 1, the other when the flip-flop is set to 0. 
 
 The highest order position ICT1 is the most complicated of the 
 
 ■ i~ t-p TPTP/E = 1, it will change 
 three, hut it is still fairly simple. If ICT2/h ±, 
 
 state if ICT2 and ICT3 were both previously 1. 
 
 v+ Tr^nv is set when ICT1 goes from a 1 
 The ICT overflow bit, ICIOV, is sex 
 
 ■111. to '000'. The set signal is determined from the proper gatxng 
 circuit for the ICT1 position. 
 
 It should be noted that in order to speed up the setting of 
 the ICTOV flip-flop, the count signals ICTl/E and 1CT2/E were used 
 cirectly instead of using a doubly inverted gate signal as an th b 
 ICT positions. This will not cause timing problems however sance ICTOV 
 o s ot feed back into a lower rank. It will enable a faster operation 
 siace the signals which indicate overflow will he valid at the tame the 
 count enable signals are activated. 
 
 Section 2.6.U.1 - 2/2 
 11/12/69 
 
 
2.7 The 32 Bit Adder 
 
 The 32 bit adder in the Taxicrinic Processor is used to perform 
 binary addition within the TP. It is also used to generate the outputs 
 for the boolean operations, EQV and XOR. The adder uses 2's complement 
 number representation and employs two levels of carry lookahead to hasten 
 carry propagation.* 
 
 The inputs to the adder are obtained from the Distribution Register 
 (DR) and the Permuter Distribution Bus (DB). These two inputs can be gated 
 to the adder only in "true" form. To calculate the difference of two 
 numbers, the subtrahend must be gated from the 9 bit /byte storage (Operand 
 Stack, Pointer Registers, etc.) in l's complement form (see Section 2.2). 
 In this case a carry is injected at the low-order end of the adder to obtain 
 the true 2's complement difference. 
 
 The adder itself is broken down into eight four-bit sum groups 
 with full carry lookahead within the groups. The second level of lookahead 
 occurs between groups, with lookahead between the leftmost groups 1, 2 and 3 
 
 and also between the rightmost groups k through 8. The final carry between 
 
 these two, second level groups is a "ripple" carry. 
 
 The adder output is the ARN bus. This is the input bus to the AR 
 and must be latched into the Arithmetic Register (see Section 2.1.2.5 for a 
 short description of a latch flip-flop). The ARN is in complemented form, 
 but converts to "true" form when it is latched into the AR. 
 
 *For a more complete discussion of carry lookahead adders see Wiegel, Roger E. , 
 "Methods of Binary Addition", DCS Report No. 195, February 1966. 
 
 11/5/70 Section 2.7 - 1/1 
 
2.7-1 32 Bit Adder-Functional Description 
 
 2.7«1»1 Block Diagram Description 
 
 As can be seen from the block diagram in Figure 2.7-1.1/1 the 
 32 bit Adder consists of the following sections: Input Gates, Carry- 
 Generators, Propagation Generators, Group Carry Generators, and Output 
 Gates. Each of these sections are represented by blocks in the diagram. 
 Note that the 32 bit Adder is divided into eight 4-bit groups. The 
 lines leaving the various sections are labeled with the number of signals 
 they represent, either 1 or k. 
 
 The purpose of the 8 Input Gates is to produce the carry trans- 
 mit and carry generate signal for each bit position in a 4-bit group, i.e. 
 
 Ti = Xi ' Yi v Xi * Yi = Xi 9 Yi 
 
 Gi = Xi • Yi 
 
 where Xi and Yi are the ith bits of the DR and DB , respectively. If 
 Gi = 0, the ith bit position will generate a carry into the next (left) 
 position, i-1. If Ti = 0, the ith bit will not generate a carry, but it 
 will transmit a carry if it receives one from the i + 1 th position. 
 
 Each Input Gate generates k Ti and k Gi signals. The Ti signals 
 are sent to the Carry Generator, Propagate Generator and the Output Gates. 
 The Gi signals are only sent to the Carry Generator. 
 
 The Carry Generator and Propagate Generator comprise the first 
 level of lookahead. The Carry Generator is used to generate the carry 
 signals for each position in each four bit group. The Boolean expressions 
 for the jth group are as follows: 
 
 CkGj = CINj 
 
 C3Gj = G4 v Tk • 
 
 CINj 
 
 
 
 C2Gj = G3 v T3 ' 
 
 G4 v T3 * 
 
 t4 • 
 
 CINj 
 
 CIGj = G2 v T2 • 
 
 G3 v T2 • 
 
 T3 * 
 
 G4 v T2 
 
 COUTj = GI v TI 
 
 • G2 v TI 
 
 . T2 
 
 • G3 v TI 
 
 T3 • Th ■ CINj 
 ■ T2 • T3 ' G4 
 
 where TI through ih and GI through G4 represent the Ti and Gi signals 
 for the first through fourth bit positions in the jth group, respectively, 
 CINj represents the carry into the jth group from the next lower order 
 group, and COUTj represents the carry out of the jth group into the next 
 
 higher order group. 
 
 11/4/70 Section 2.7-1.1 - 1/6 
 
DR.DR 
 BITS 32-35 
 
 1st LEVEL LOOKAHEAD 
 
 2nd LEVEL LOOKAHEAD 
 
 Figure 2.7.1.1/1 - TP - 32 Bit Adder 
 
 11/17/70 
 
 Section 2.7-1.1 - 2/6 
 
Note that the carries are produced by a carry generate signal 
 in some position to the right of the position of interest with an 
 unbroken series of carry transmit signals between the two positions. 
 Note also that except for the last signal, which is actually a carry 
 generate signal for the four bit group, all of the expressions depend 
 on the input carry which will come from the previous group and which will 
 not be known until later . However, at the first level of lookahead, we 
 are really only interested in finding out if this group will generate a 
 carry by itself, so only the last equation is important at this stage. 
 
 These carry signals are produced by using a diode matrix board. 
 In order to facilitate the hardware realization and to speed up the adder, 
 De Morgan's theorem was used to rewrite them in the following form: 
 
 Cl+.i = 
 
 CINj 
 
 C3j = Gk-Tk v GU.CINj 
 
 C2j = G3 • T3 v G3 • GU . TU v G3 • GU . CINj 
 
 Clj = G2 • T2 v G2 • G3 • T3 v G2 • G3 • GU • TU v G2 • G3 • Gl+ • CINj 
 
 COUTj = G1.T1 v G1»G2*T2 v G1«G2»G3*T3 v G1»G2«G3«GU 
 
 The logical drawing for the diode matrix is shown in Figure 
 2.7.1.1/2 while the diode layout is shown in Figure 2.7-1.1/3. 
 
 The Propagate Generator produces a propagate signal which 
 indicates if the particular four -bit group will conduct an input carry all 
 the way through the group. It is calculated from the Ti signals of the 
 four-bit group, i.e. 
 
 Pj = Tl • T2 • T3 • TU = Tl v T2 v T3 v T^ 
 
 Once the Pj and COUTj signals have been produced, the first 
 level of lookahead is completed. Note that the production of these 
 signals only depends on the Ti and Gi signals which were produced by the 
 Input Gates. 
 
 llA/70 Section 2.7.1.1 - 3/6 
 
T, 
 
 L7, L8 
 
 15,16 
 
 = 13,14 
 '2 
 
 G 2 
 
 9,10 
 
 T 3 
 
 G 3 
 
 7,8 
 
 5,6 
 
 T 3 ' 4 
 
 G 4 i— 
 
 c J— 
 
 'N 
 
 OUTPUT 
 SIGNAL 
 
 \ 
 
 R,S 
 
 ► COUTj 
 
 N 
 
 M 
 
 J,K 
 
 H 
 
 C,D 
 
 B 
 
 A 
 
 Figure 2. 7. 1.1/2 - Lookahead Carry Generator for Group j 
 
 CIG 
 
 
 C2G; 
 
 C3G; 
 
 9/18/69 
 
 bee 
 
 tion 2.7-1-1 - W6 
 
 ISI 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 00 
 
 
 >- 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 £- 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 co 
 
 
 > 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 in 
 
 
 z> 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ^ 
 
 c 
 
 H 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ro 
 
 
 
 
 
 
 
 
 
 
 * 
 
 1 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 CJ 
 
 
 
 
 
 
 
 
 !! 
 
 1 
 
 I 
 
 a. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 — 
 
 O 
 
 
 
 
 
 J 
 
 3 
 
 [ 
 
 3 
 
 ! 
 
 
 * 
 
 
 2 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 o 
 
 > 
 
 
 
 j 
 
 [ 
 
 
 ? 
 
 
 ? 
 
 
 * 
 
 z 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 o> 
 
 
 
 
 
 
 
 
 i 
 
 * 
 
 
 _) 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 CO 
 
 H 
 
 
 
 
 
 ? 
 
 ] 
 
 [ 
 
 3 
 
 ; 
 
 ~3 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 I s - 
 
 
 
 
 \ 
 
 : 
 
 E 
 
 3 
 
 ! 
 
 
 3 
 
 ; 
 
 
 X 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 (D 
 
 < 
 
 
 ; 
 
 [ 
 
 1 
 
 
 3 
 
 [ 
 
 
 3 
 
 » 
 
 U_ 
 
 
 
 
 
 
 
 
 ! 
 
 
 
 
 
 
 
 
 lO 
 
 
 
 
 
 
 3 
 
 ; 
 
 ' 
 
 .IT* ; 
 
 ID 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
 
 
 | 
 
 : 
 
 ) 
 
 
 ' 
 
 
 CD 
 
 
 
 
 
 
 ' 
 
 
 
 
 
 
 
 
 
 
 CVJ 
 
 J 
 
 
 
 2 
 
 ! 
 
 ' 
 
 n 1 
 
 < 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 — 
 
 ^_ 
 
 
 ; 
 
 [ 
 
 3 
 
 ! 
 
 
 
 =>UJ 
 
 i-o 
 
 OO 
 
 — 
 
 CJ 
 
 ro" 
 
 CO 
 
 » 
 
 O 
 
 of 
 
 rO 
 
 CO 
 lO 
 
 GO 
 
 05 
 
 CJ 
 
 CJ 
 
 •-CE 
 
 o 2 
 
 _ <3" 'J'rOroOJcvi — — 
 
 O lO |l- lO |l- |o |l- IO It- 
 
 Figure- 2.7.1.1/3 - 1st Level Lookahead Carry Generator - 236-1^ 
 
 9/26/69 
 
 Section 2.7.1.1 - 5/6 
 
The second stage of lookahead involves the Group Carry 
 Generators. We want to calculate the CINJ signals for each group so 
 that we can complete the calculation of the carry signals in the equations 
 given above. Taking the low order Group Carry Generator first, we have 
 the following equations : 
 CIN8 = CINJ 
 CINT = C08 vP8* CINJ 
 CIN6 = COT v PT ♦ C08 v PT • P8 * CINJ 
 CIN5 = C06 v P6*C07 v P6-PT-C08 v P6-P7 «P8 -CINJ 
 
 CINU = C05 v P5«C06 v P5-P6-COT v P5-P6-P7-C08 v P5-P6-P7-P8-CINJ 
 CIN3 = COU v PU-C05 v PH.P5-C06 v pU«P5'P6'COT v Pl+-P5'P6'PT*C08 
 v pU*P5'P6'PT-P8'CINJ 
 
 where CINJ is the low-order injected carry to the adder, and the CO j ' s 
 are the COUTj signals from the Carry Generators. Note that the form of 
 the equations is the same as in the equations for the Carry Generator 
 hut in this case the COj signals represent a carry generated hy the 
 
 group and the Pj signals represent a carry transmitted by the group. 
 The 0-3 Group Carry Generator has to wait for CIN3 to be 
 
 formed before it can "start" since in its equations CIN3 takes the 
 
 place of CINJ, i.e. : 
 
 CIN2 = C03 v P3 • CIN3 
 
 CIN1 = C02 v P2 • C03 v P2 • P3 • CIN3 
 
 This wait is what is referred to as the "ripple" carry in the 
 adder. 
 
 Finally, with all the input carries to the groups determined, 
 the carry generators can now generate the proper individual carries for 
 each bit simultaneously and the Output Gates can use these carries and 
 the Ti signals previously calculated, to determine the adder output. 
 These output signals are calculated for each bit position i, as follows: 
 
 ARN i = T i * C i ▼ T^" • C^. 
 
 Overflow-Underflow signals are formed using sign bit and output 
 information. This is explained in greater detail in Section 2.7-1.3- 
 
 iiA/70 Section 2 ' 1 ' 1 ' 1 ' 6/6 
 
2.7-1.2 Adder Timing 
 
 Figure 2.T-1-2 gives a timing chart for the adder. Time is given 
 in delay units in the left-hand column: 1 delay unit per NAND and 1/2 delay 
 unit per AND-OR diode matrix. The event column is subdivided into sum groups 
 1 and 2 and groups 3-8, (where group 8 contains bits 32-35)- The Sum in 
 groups 1 and 2 takes 2 delays more to form than the sum in 3-8 due to the 
 ripple-carry between second level lookahead units. . 
 
 5/5/69 Section 2.7-1.2 - 1/2 
 
EVENT 
 
 Time in 
 Delays 
 
 
 Sum Group: 
 1 2 
 
 
 
 X 
 
 and Y appear at inputs j 
 
 1/2 
 
 
 
 1 
 
  
 
 8-1/2 C., s in S.G, 
 
 9-1/2 SUM output 
 
 Groups 1 and 2 
 
 + 2 delays to set AR + k to 
 set 0V/UF 
 
 Figure 2.7.1.2 Lookahead Adder Timing 
 
 9/30/69 
 
 Section 2.7-1.2 - 2/2 
 
2.7-1.3 Adder Overflow 
 
 In considering the overflow conditions of the adder there are 
 eight possible sign configurations which can occur: 
 
 B: 
 
 Augend : 
 
 + 
 
 * 
 
 + 
 
 * 
 
 - 
 
 - 
 
 D: 
 
 Addend : 
 
 + 
 
 + 
 
 - 
 
 - 
 
 - 
 
 - 
 
 A: 
 
 Sum: 
 
 + 
 
 - 
 
 + 
 
 - 
 
 + 
 
 - 
 
 
 
 00 
 
 01 
 
 10 
 
 01 
 
 10 
 
 11 
 
 *2 cases each 
 
 The second and fifth cases are the error conditions. Overflow and underflow 
 may be illustrated by two examples, respectively: 
 
 +5 0101 
 
 +h_ 0100 
 
 -7 1001 
 
 -5 1011 
 
 -k 1100 
 
 +7 0111 
 
 An overflow (or underflow) signal is given by: 
 
 0V = D«B.AvD.B.A 
 as determined by the sign bits of the Augend (B) , Addend (j)} and Sum (A) 
 
 5/5/69 Section 2.7-1.3 - 1/1 
 
2-7.2 Signal Name Lists for the 32 Bit Adder Logic 
 2.7-2.1 32 Bit Adder Control Signals 
 
 ADD/E - Enable 32 bit adder 
 
 BAR/G - Gates DB to AR through ARN 
 
 7/8/69 
 
 Section 2.7.2.1 - 1/1 
 
2.7-2.2 32 Bit Adder Internal Signals 
 
 ARNi 
 
 CINi/ 
 
 CINJ 
 COUTi 
 
 PRi 
 
 Ti/ 
 
 AR input bus - bit i. Output of 32 bit adder is 
 loaded onto this bus . 
 
 Carry into ith adder group, i = 3, . . ., 7 
 
 Inject carry into low order bit of 32 bit adder 
 
 Carry generated within ith adder group, i = 2..., 8 
 In adder this represents ability of a given bit 
 position to transmit an incomming carry. 
 
 If on, indicates a carry will propagate through ith 
 adder group, i = 3, ..., 8 
 
 Equivalence function (NOT - XOR) between DBi and DRi, 
 Used by both adder and Boolean logic. 
 
 7/8/69 
 
 Section 2.7-2.2 - l/l 
 
2.7.3 32 Bit Adder - PL/1 Description 
 
 // EXEC PL1 
 //PL 1 .SYSPUNCH 
 //PL1 .SYSIN i)D 
 ADD32: PR 
 nCL ( AO 
 OCL AO 
 nCL (AR 
 OCL G 
 Gl 
 G2 
 G3 
 G4 
 G5 
 G6 
 G7 
 G8 
 G9 
 G10 
 Gil 
 G12 
 G13 
 G14 
 G15 
 G16 
 G17 
 G19 
 G2 
 G21 
 G2 2 
 G23 
 G2 4 
 G2 5 
 G2 6 
 G28 
 G29 
 G30 
 G31 
 G32 
 G33 
 G34 
 G35 
 Tl 
 T2 
 T3 
 T4 
 T5 
 T6 
 T7 
 TB 
 T10 
 Til 
 T12 
 T13 
 T14 
 T15 
 T16 
 T17 
 
 on SYsnuT=R 
 
 nc ( AnnF»c iMJt E 
 
 DF, CINJt FOVE, 
 
 nouT bit ( l ) ; 
 
 N,OB,DR,T ) (36 ) 
 
 OVE, XDREt AonnuT) 
 XORF ) B I T ( 1 ) ; 
 
 (36) B 
 B I T ( 1 
 BIT( 1 
 BITd 
 B I T ( 1 
 BITd 
 BITd 
 BITd 
 BIT(1 
 BITd 
 BITd 
 BITd 
 BITd 
 BITd 
 BITd 
 BIT(1 
 BIT(1 
 BITd 
 BITd 
 BITd 
 BITd 
 BIT(1 
 BITd 
 BITd 
 BITd 
 BITd 
 BITd 
 BITd 
 BITd 
 BIT(1 
 BITd 
 BITd 
 BITd 
 BIT(1 
 BITd 
 BITd 
 BITd 
 BIT(1 
 BITd 
 BITd 
 BITd 
 BITd 
 BITd 
 BITd 
 BITd 
 BITd 
 BITd 
 BIT(1 
 BITd 
 BIT( 1 
 
 T( 1 ) EXT 
 
 E F I M F 
 DEFINED 
 DEFINED 
 DEFINED 
 DEFINED 
 DEFINED 
 DEFINED 
 DEFINED 
 OFFIMFD 
 OFF I NED 
 DEFINED 
 DEFINED 
 DEFINED 
 DEFINED 
 DEFINED 
 DEF INED 
 DEFINED 
 OFF INED 
 DEFINED 
 F F I N E D 
 DFFINED 
 DEFINED 
 DEFINED 
 DEFINED 
 DEFINED 
 DEFINED 
 DEFINED 
 DEFINED 
 DEFINED 
 DEFINED 
 DEFINED 
 D F F I N E 
 D E F I N F D 
 OFF I NED 
 DEFINED 
 OFF INED 
 DEFINED 
 DEFINED 
 DEFINED 
 DEFINED 
 DEFINED 
 DEF INED 
 DEFINED 
 DFFINED 
 DEFINED 
 DEFINED 
 DEFINED 
 DEFINED 
 DFFINED 
 
 BITd ) 
 ERNAL, 
 
 ■G pdsi 
 pnsi 
 
 PDSI 
 
 posi 
 
 POSI 
 
 PDSI 
 POSI 
 POSI 
 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 POSI 
 
 FXTERNAL ; 
 
 G 
 G 
 
 G 
 G 
 G 
 G 
 
 G 
 G 
 
 G 
 G 
 G 
 G 
 G 
 G 
 G 
 G 
 G 
 G 
 G 
 G 
 G 
 G 
 G 
 G 
 G 
 G 
 G 
 G 
 G 
 G 
 G 
 G 
 T 
 T 
 T 
 T 
 T 
 T 
 T 
 T 
 T 
 T 
 T 
 T 
 T 
 T 
 T 
 T 
 
 TION( 1 
 TION(2 
 TI0N(3 
 TI0N(4 
 TION(5 
 TI0N(6 
 TION(7 
 TION(8 
 TI0N(9 
 TION( 10) 
 TI0N( 1 1 ) 
 TI0N( 12 ) 
 TI0N( 13) 
 TION( 14) 
 TION( 15) 
 TION( 16 ) 
 TI0N( 17) 
 TI0N( 19 ) 
 TI0N(20) 
 TION(21 ) 
 T I ON (22) 
 TION(23) 
 TION(24) 
 TION(25 ) 
 TI0N(26) 
 TI0NK2R ) 
 TI0N(29) 
 TION(30) 
 TI0N(31 ) 
 T I ON (32 ) 
 TI0N(33) 
 T I ON (34) 
 TION(35) 
 T I ON ( 1 ) 
 TI0N(2 ) 
 TI0N(3 ) 
 TI0N(4 ) 
 TION(5 ) 
 TI0N(6 ) 
 TI0N(7 ) 
 TION(8 ) 
 TION( 10) 
 TION( 11 ) 
 T I ON (12 ) 
 TION( 13) 
 TION( 14) 
 TION( 15) 
 TION( 16) 
 TION( 17) 
 
 11/5/70 
 
 Section 2.7.3 - 1/6 
 
T19 
 T20 
 T21 
 T22 
 T23 
 T24 
 T2S 
 T26 
 T28 
 T29 
 T30 
 T31 
 T32 
 T33 
 T34 
 T35 
 DCL ( 
 I 
 
 BIT(1 ) 
 BIT(l) 
 BITd) 
 BITd) 
 BIT(1 ) 
 BIT(l) 
 BIT(1 ) 
 BIT(l) 
 BIT(1 ) 
 BIT(l) 
 BIT(1 ) 
 BIT(l) 
 BIT(1 ) 
 BITd) 
 BlTd ) 
 BIT( 1) 
 
 DEFINED 
 DEFINED 
 DEFINED 
 DEFINED 
 
 DEFINED 
 
 DEFINED 
 
 DEFINED 
 
 DEFINED 
 
 DEFINED 
 
 DEFINED 
 
 DEFINED 
 
 DEFINED 
 
 DEFINED 
 
 DEFINED 
 
 DEFINED 
 
 T P0SITI0N(19 ) t 
 T PnSITI0N(20) » 
 T P0SITI0N(21 )t 
 T POSITION (22) , 
 T POSITION(23), 
 T POSITION(2^) t 
 T POSITION(25), 
 T POSITION(26>) » 
 T POSITION(2B ), 
 T POSITinN(29) » 
 T POSITION(30), 
 T POSITION(31) t 
 T POSITION(32 )t 
 T PGSITI0N(33) t 
 T POSITinN(3A)» 
 T POSITION(35) ; 
 
 
 DFFINED 
 /^INTERNAL VARIABLES,*/ 
 
 CARRY PROPAGATF SIGNALS*/ 
 Pl t P2,P3,P4,P5,P6,P7,P8, 
 
 CARRY INTO ITH ADDER 
 
 
 GROUP */ 
 
 r ari (-3G2tC3G3tC3G4,C3G5,C3G6tC3G7,C3G8, 
 
 /"JrYI^O FOURTH POSITION OF ITH ADDER 
 C4GltC4G2 f C4G3,C4G4,C4G5,C4G6tC4G7,C4G8 
 
 GROUP*/ 
 
 ) BITd); 
 PUT LlSTt ■ ADD32 ENTERED' ) ; 
 /* CALCULATE THE CARRY TRANSMI 
 
 SIGNALS (G) */ 
 
 if fovFI ADDFIXORE THEM 
 
 nn i=j*9+l to j-9+b; 
 
 T(I)=DB( I)6-DR( I) !-DB( I )f.DR( I); 
 Gd )=DB(I )&DR( I )? 
 
 END; 
 
 SIGNALS (T) AND CARRY GENERATE 
 
 DO J=0 TO 3; 
 
 THROUGH THF GROUP */ 
 Pl = Tlf.T2&T3f,TA; 
 P2=T5F,T6&T7£T8; 
 P3 = T10f>Tll£T12£T13; 
 P4 = T14&TlSf,T16&T17; 
 P5=T19&T20&T21&T22; 
 
 11/5/70 
 
 Section 2.T.3 - 2/6 
 
P6»T23£T24£T256T26 
 
 P7=T28£T29£T30£T31 
 P8=T32£T33£T34£T35 
 CIN3= C0UT4 
 
 lCniJT5f.P4 
 
 I CmiTft£P4£P5 
 
 |CniJT7£P4£P5£P6 
 
 lcnuT8£P4£P5£P6 
 
 ICINJ £P4£P5£P6£P'7£P8; 
 CIN4 = C0UT5 
 
 ! cm iT6 cp s 
 
 |CniJT7£P5£P6 
 ICC11JT8£P5£P6£P7 
 
 ICINJ £P5£P6£P7£P8; 
 CIM5= C0MT6 
 
 |C0UT7£P6 
 
 |CGUT8£P6£P7 
 ICINJ £P6£P7£P8; 
 CIN6= C0IJT7 
 
 |C0UT8£P7 
 
 ICINJ £P7£P8; 
 CIN7= C0JT8 
 
 ICINJ&P8; 
 CIMH=CINJ ; 
 
 /-CALCULATE RIPPLE CARRY */ 
 CIN2= COUT3|CIN3£P3; 
 CINla CCHJT2 lCriUT3£P2|CIN3£P2£P3; 
 
 C1G1=G2|T2£G3|T2£T3£G4|T2£T3£T4£CIN1; 
 C2G1=G3|T3£G4|T3£T4£CINI1; 
 C3G1=G4| T4£CIN1; 
 C4.G1=CIN1 ; 
 
 C1G2=G6|T6£G7|T6£T7£G8|T6£T7£T8£CIN2; 
 C2G2=G7|T7£G8|T7£T8£CIN2; 
 
 C3G2=G8 I T86CIN2 ; 
 C4G2=CIN2; 
 
 C1^3 = G11|T11£G12|T11£T12£G13|T11£T12£T13£CINI3; 
 
 C2G3=G12|T12£G13|T12£T13£CIN3; 
 
 C3G3=G13 I T13SCIN3; 
 
 C4G3=CIN3; 
 
 ClG4*G15|T15£G16|T15fiT16fiG17|T15£T166T17fiCIN4: 
 
 C2u4=G16|T16£G17|T16£T17£CIN4; 
 
 C3G4=G17 | T17£CIM4; 
 
 C4G4=CIN4; 
 
 C2G5=G21 I T21£G22 I T2 1£T22£C IN5 ; 
 C3G5=G22 |T22£CIN5; 
 C4G5=C IM5; 
 
 C1^ = G24|T24£G25|T24£T25£G26|T24£T25£T26£CIN6; 
 C2G6=G25|T25£G2^|T25£T26£CIN6; 
 C3G6=G26|T26£CIN6; 
 C«*G6 = C IN6 ; 
 
 ^r7 = r^! T29r ' G3 ° |T29&T30r ' G31,T29&T3 °ST31£CIN7; 
 
 C?G7=G30|T30£G31|T30£T31£CIN7; 
 
 C3G7=G31 I T31&CIN7; 
 
 C4G7=CIN7; 
 
 riro = ^ 3 ! T33&G34,T33&T34SG35 ' T33 ^34£T35£CIN8; 
 C2G8 = G34|T34£G35|T35£CIN8; ^i=TB&-C4G2|-T8&CAG2; 
 &RN(10)3T106-C1G3[-.T106C1G3; 
 ARN(11)=T11£^C2G3HT11£C2G3, 
 ARM(12)=T12&-C3G3|-T12&C3G3; 
 ARN(13)=T13R-C4G3|-«T136C^G3; 
 
 /*GR0UP#4*/ 
 ARN(14)=T14&-XlG4|-T14fXlG4; 
 
 ARN(15)=T156-.C2G4|--T15fX2G^; 
 ARN(16)=T16&-X3G4|-.T16fX3G4; 
 
 ARN117)=T17£-.C4G4|-.T17£C4G4; 
 
 /*GROUP#5 */ 
 ARN(19)=T19C-C1G5|-T19&C1G5; 
 
 ARN(?0)=T20£r.C2G5|-.T20£C2G5; 
 
 ARN(21)=T216-C3G5j-.T21CC3G5; 
 
 ARN(22)=T22 6-C4G5|-.T22£C4G5, 
 
 /*GROUP >*6 */ 
 ARN(23)=T23R-.C1G6|-.T23 6C.1G6; 
 
 ARN ( ? 4)=T24&-C2G6|-T24FX2G6; 
 
 ARN(25)=T2"'5R-«C3G6l-T25fiC3G6; 
 
 ARN(26)=T26K-X4G6|-T26fX4G6; 
 
 /*GROUP #7 */ 
 ARN(28)=T2MRiClG7l-T28£ClG7; 
 
 ARN(29)=T29&-.C2G7|-»T296C2G7; 
 
 ARN(30)=T30&-C3G7|-T30&C3G7; 
 
 ARM (31 )=.T31.&-«C4G7|-.T31£C4G7; 
 
 /*GROUP *8*/ 
 ARM 32 )=T32f^ClG8l-T32£ClG8, 
 ARM(33)=T33r.-C2G8l-T33fX2G8; 
 APN(34)=T34&-C3G8|--T34CC3G8; 
 ARN(35)=T35f.-.C4G8|r.T35 6C4G8; 
 IF AOnOUT THFN DO; 
 PUT SKIP(^); 
 CALL PRINT1 (DB, ' DB ' ) ? 
 CALL PRINTKORt'DR ' ) 5 
 CALL PR I NT 1 (Gt ' G ' ) » 
 
 CAI L PRlMTKTf 'T ' ) ; 
 
 CALL PRIMT1(ARN,'ARN »); 
 p l)T Fi)ITCGROUP','l'T'2«t'3',«4','5 
 
 ,.. T F rnif.c™.TSili! , .couTi i cmiT2 f cnuT3 f coiiT4 f cnuT5.couT6. 
 cnuT7,cnuT«) „,,,,,. 
 
 (SKIP, AllO), 8 (X(2),B<1>>). 
 PUT EOITCPm-.Pl,P2.P3;i;*.«,P6,P7.P8) 
 
 PUTE0IT ,.irNi.;:!:c !;!.«ii^«t«i*,ciH 9 .c.-6,c™T,c,-., 
 
 11/5/70 Section 2.7.3 _ ^/o 
 
PUT 
 
 PUT 
 
 PUT 
 
 PUT 
 
 END; 
 FMD AD032 
 
 (SKIP, A 
 
 EDI T( 'C1G( I )= 
 
 (SKIP, A 
 EDIT( 'C2G( I )= 
 
 (SKIP, A 
 EDIT( 'C3G( I ) = 
 
 (SKIP, A 
 EDIT( «C4G( I )= 
 
 (SKIP, A 
 
 10) tfl (X(2) ,B( 1 
 ,C1G1,C1G2,C1G3 
 1 ) , 8 ( X ( 2 ) , B ( 1 
 ,C2G1,C2G2,C2G3 
 10) ,8 (X( 2) ,B( 1 
 
 ) ) ; 
 C1G4,C1G5,C1G6,C1G7,C1G8 ) 
 
 ) ) ; 
 
 C2G4,C2G5,C2G6,C2G7,C2G8) 
 
 ) ) ; 
 
 ,C3G1,C3G2,C3G3,C3G4,C3G5,C3G6,C3G7,C3G8 ) 
 
 10) ,8 (X(2) ,B( 1 
 ,C4G1,C4G2,C4G3 
 10) ,8 (X( 2) ,B( 1 
 
 ) ) ; 
 C4G4,C4G5,C4G6,C4G7,OG8 ) 
 
 ) ) ; 
 
 /* 
 
 11/5/70 
 
 Section 2.7.3 - 5/6 
 
/* 
 
 ADDOVF: PROCUDDE, aov, aucg, csb, csh, 
 
 csw, RSYS); 
 DCLUDDE, AOV, AUCG, CSB, CSH, CSW, 
 
 RSYS ) BIT! 1 ) ? 
 DCL ( AR, DB, DR, LR ) ( 36 ) BIT(l) EXTERNAL; 
 PUT LISK'ADDOVF ENTERED'); 
 /* CHECK FOR ADDER OVERFLOW */ 
 AOV= 'O'B; 
 IF LR(9)£AUCG THEN AOV='l'B; 
 
 F t S E DO * 
 
 IF CSW THEN AOV = ADDE&(DR(l)&DB(l )£-ARU ) 
 
 | DR ( 1 )£-*DB( 1 )&AR( 1 ) ) 5 
 IF CSH THEN AO V = ADDE £ ( DR ( 19 ) &DB ( 19 ) &-AR ( 19 ) 
 
 |-,DR(19)&-DB(19)&AR(1) ) 5 
 
 IF CSB THEN AOV=ADDE£(DR(28)£DB(28 )£-AR(28) 
 
 |-,DR(28)&-DB(28 )f.AR(28) ) ; 
 
 end; 
 
 IF RSYS THEN AOV='0'B; 
 FND ADDOVF; 
 
 11/5/70 Section 2.7.3 - 6/6 
 
2.8 Boolean/Shift Logic 
 
 The boolean logic accepts operands from the Distribution Regis- 
 ter (DR) and the Distribution Bus (DB), performs one of the boolean func- 
 tions, "AND", "OR", "XOR" or "EQU" on them, and gates the result into the 
 Logic Register (LR). The "OR" function is a combination of a data transfer 
 from the DB to the LR and from the DR to the LR. 
 
 The "XOR" and "EQU' functions are generated using parts of the 32 
 bit adder. The appropriate outputs are then gated from the adder to the LR. 
 
 The shift logic employs the permuter to make shifts in multiples 
 of 8 bits. The shift control first makes the highest multiple-of-8 bit 
 shift that it can without exceeding the desired shift. This is done using 
 the permuter and inhibiting the necessary bytes. After this has been done 
 the shift control shifts the DR to the LR shifting one bit at a time and 
 then returning the LR to the DR until the proper number of additional bits 
 have been shifted and the properly shifted result is in the LR. Since the 
 flags are not touched in the bit shifting, the shift control only will 
 shift flags in multiples of 8 (i.e. when the permuter is used). 
 
 6/18/69 Section 2.8 - l/l 
 
■ 1 Boolean/Shirt Logic-Functional Description 
 2.8.1.1 Boolean Logic 
 
 As stated previously the "OR" function is a combination of a 
 data transfer from the DB and DR to the LR. The DR and DB are simultaneously- 
 gated in complemented form to the LR "in bus" (LRN) where they are dot-ored 
 and then gated into the LR. 
 
 The "AND" function is realized by a NAND gate, with a DR and a 
 DB input, in each position. The NAND outputs are dot-ored to the respec- 
 tive bit positions on the LRN. The LRN at this point is in complemented 
 form but this is compensated for in the output definitions of the LR. 
 
 Exclusive or's, "XOR" , and equivalences "EQV" are actually 
 generated in the 32 bit adder. The input gates generate the function 
 
 T. = DB. • DR. v DB. • DR. 
 ill 11 
 
 in every bit position. These T. signals are then routed to the boolean 
 logic as well as to the inner portions of the adder itself. In the 
 boolean logic, the T. signals are gated to the LRN inputs whenever the 
 XOR or EQV function is selected. The function that is formed is determined 
 as follows: If both operands are gated from the Operand Stack in 'true' 
 form, the EQV function is formed. If one of the operands is complemented 
 when it is gated from the OS, the XOR function is generated, since 
 X.YvX-Y = X.YvX»Y( alternately , X © Y = X ® Y ) . 
 
 Flag bits are treated the same way as the data bits in all 
 boolean operations. Extra logic is employed to generate the XOR and EQV 
 functions for the flags since none is provided in the adder. 
 
 U/T/69 Section 2.8.1.1 - l/l 
 
1.1.2 Shift Logic 
 
 Logical left and right shifts take place between the DR and the 
 LR. Gates are provided to allow an operand in the DR to be shifted one bit 
 position to either the right or the left while being transferred from the 
 DR to the LR. During these shifts the positions of the flags are not 
 changed. Shifts of more than one bit are effected by gating the LR directly 
 back to the DR, then shifting another bit position. The TP control uses the 
 M counter to keep track of the number of shifts still to be performed. 
 
 For shifts of 8 bits or more the Permuter Logic is also used. 
 Before single bit shifting is performed, the DR is shifted the highest 
 number of bytes possible without exceeding the bit shift count in the M 
 counter. The flags are shifted along with the data bits. By using the 
 permuter for large shifts, the one-bit -at-a-time shifter never has to make 
 more than 7 shifts to complete a given shift command. If a shift of more 
 than 31 positions is specified, the cell is set to all zeros. 
 
 The multiple-of-8 shift by the Permuter is made in one permuta- 
 tion regardless of how many byte places are being shifted. Since the 
 permuter does not shift bytes "off the end" the shift logic must provide 
 the proper inhibit signals to the Permuter so that these bytes will be 
 masked out. Figure 2.8.1.2 gives a table showing how far to permute and 
 which bytes must be inhibited as a function of the shift direction and the 
 high-order two bits of the M counter (these bits give the number of bytes 
 to be shifted). Using this table the following equations can be developed: 
 
 1+/T/69 Section 2.8.1.2 - l/k 
 
 
 Left 
 
 Sh 
 
 ift 
 
 Right 
 
 Shift 
 
 
 
 Permute 
 
 
 Inhibit 
 
 Permute 
 
 Inhibit 
 
 MCT 
 
 MCT 
 
 Signal 
 
 
 Bytes 
 
 Signal 
 
 Bytes 
 
 
 
 
 
 PLO 
 
 
 - 
 
 PLO 
 
 - 
 
 
 
 1 
 
 PL1 
 
 
 3 
 
 PL3 
 
 
 
 1 
 
 
 
 PL2 
 
 
 2,3 
 
 PL2 
 
 0,1 
 
 1 
 
 1 
 
 PL3 
 
 
 1,2,3 
 
 PL1 
 
 0,1,2 
 
 Figure 2.8.1.2 - Permuter Control Signals for Byte Shifting 
 
 , , „ Section 2.8.1.2 - 2/k 
 
 U/T/69 
 
PLO = LSP • M • M v RSP'M • M g 
 
 I BO = RSP • (M v M ) 
 
 PL1 = LSP • M • M v RSP-M 1 • M g 
 
 PL2 = LSP * M • M v RSP*M • M 2 
 PL3 = LSP • M • M v RSP-I^ • M 2 
 
 IB1 = RSP • M v LSP • M • M 
 
 IB2 = LSP * M v RSP ' M ■ M 
 IB3 = LSP * (M v M ) 
 
 where PLi = permuter left i bytes; RSP = right shift; LSP = left shift 
 
 However, referring to the equations for PLI and IB2, and PL3 
 and IB1 some simplification can take place if we let 
 
 IBPL21 = RSP • M 
 
 1 
 
 IBPL13 = LSP 
 
 M„ 
 
 M, 
 
 M, 
 
 1 2 
 
 where IBPLij = is a control line to the permuter which inhibits byte i 
 and also permutes left j bytes. 
 
 These signals go directly to the Permutation Control 
 Logic and turn on the appropriate permute and inhibit signals. This 
 means that the remaining parts of the shift equations can be written 
 as follows : 
 
 PLO = LSP 
 
 M 
 
 1 
 
 PLI = LSP • M 
 
 1 
 
 PL2 = LSP • M 
 
 1 
 
 M v RSP.M 
 
 M 2 v RSP»M 
 
 M, 
 
 M, 
 
 IBO = RSP • (M v M ) 
 
 IB1 = RSP 
 
 M, 
 
 PL3 = RSP • M 
 
 1 
 
 M, 
 
 IB2 = LSP • M, 
 
 IB3 = LSP • (M v M ) 
 
 Using these equations the permutation and inhibit signals are 
 decoded from the M-counter and the inputs from the TP control and are 
 then routed to the permuter. The rest state of the permuter is disabled 
 during this cycle when the operand is being shifted in steps of 8. 
 
 Double words are not shifted, primarily because of the problems 
 involved in masking bits shifted out of one half of the double word 
 into the proper positions in the other half. 
 
 11/16/70 
 
 Section 2.8.1.2 - 3/U 
 
When bytes or half-words are to he shifted they are initially 
 loaded into the DR by the Permuter, right or left justified depending 
 on the direction of the shift. The cell is placed so that the bits will 
 be shifted "off the end" of the DR and not into the "unused" portion. 
 During these loadings the "unused" portion of the DR is set to zero by 
 inhibiting the proper permuter bytes. 
 
 The Shift Logic contains several sections of "testing" logic 
 to detect certain conditions of which the TP control must be aware. MZER 
 
 is "one" if the M counter and all the high order bits of the shift count 
 
 (which is in the right-most bytes of the IR) are zero. 
 
 
 
 Section 2.8.1.2 - k/k 
 h/1/69 
 
 
2.8.2 Signal Name Lists for the Boolean/Shift Logic 
 2.8.2.1 Control Signals 
 
 AND/E/ 
 
 BLR/G/ 
 
 CTD/E/ 
 
 CTMHZ 
 
 CTMLZ 
 
 CTU/E/ 
 
 DLR/G/ 
 
 EQV/E/ 
 
 LS/E/ 
 
 LSP/E 
 
 MCT/E/ 
 
 MZER 
 
 0R/E/ 
 
 RMCT/ 
 
 RS/E/ 
 
 RSP/E 
 
 X0R/E/ 
 
 AND enable DB • DR -* LR 
 
 Gate DB -♦ LR 
 
 Enable count down for M counter (MCT) 
 
 Output Signal - High Order 2 bits of the MCT = 
 
 Output Signal - Low Order 3 bits of the MCT = 
 
 Enable count up for M counter (MCT) 
 
 Gate DR-^LR 
 
 Enable equivalence 
 
 Enable - left shift 
 
 "left shift" to be made by shift control using permuter 
 
 Enable M- counter 
 
 Output - M-counter and high order bits of IR all = 0. 
 
 0R enable DB v DR -^ LR 
 
 Reset M-counter 
 
 Enable - right shift 
 
 "right shift" to be made by shift control using 
 
 permuter 
 
 Exclusive 0R unable DB $ DR -f LR 
 
 6/18/69 
 
 Section 2.8.2.1 - 1/1 
 
 
2.8.2.2 Internal Signals Used by the Boolean/Shift Logic 
 CTD 
 
 CTU 
 DBi 
 DRi 
 
 IBi/ 
 
 IBPL13 
 
 IBPL21 
 
 IRi 
 
 LRi 
 
 LRi/G 
 
 LRLi 
 
 LRNi 
 
 MCTi 
 
 PLi/ 
 
 Ti/ 
 
 XRV/E 
 
 When on, M counter counts down 
 
 When on, M counter counts up 
 
 Distribution bus - bit i 
 
 Distribution register - one of the inputs for 
 
 shift - bit i 
 
 Inhibit signal for byte i in permuter output 
 
 Inhibit byte 1 - permute left 3 
 
 Inhibit byte 2 - permute left 1 
 
 Instruction Register - bit i 
 
 Logic register - output of shift/boolean - bit i 
 
 LR input gating signal: LRN -* LR - byte i 
 
 LR latch, must be for LRN -^ LR - byte i 
 
 Input bus to logic register - bit i 
 
 M counter - bit i 
 
 Permute left i bytes 
 
 Adder Output - equals EQV of DR and DB - bit i 
 
 Exclusive or or equivalence enable (goes to permuter) 
 
 11/5/70 
 
 Section 2.8.2.2 - l/l 
 
2.8.3 Boolean/Shift Logic - PL/l Description 
 
 / / E X F C P L 1 
 I//PL 1 .SYSPUNCH 
 //PL I. SYS IN do 
 KOULSHFT : 
 ANDF, 
 IBPL13, 
 orf, 
 IB, 
 DCL 
 
 no SYsni)T = R 
 
 PROC ( 
 
 CTDF, 
 IBPL21 , 
 RMCT, 
 PL) ; 
 ( ANDF,CTDE, 
 IBPL13, 
 MCTF, 
 
 CTMH2 , 
 
 LRMCTG, 
 
 RSF, 
 
 CTMHZ, 
 IBPL21, 
 
 ORE 
 
 DCL 
 
 DCL 
 
 CTMLZt 
 
 LSF, 
 
 RSPEt 
 
 CTMLZ» 
 
 LRMCTG, 
 RMCT, 
 
 CTUE, 
 
 LSPF, 
 
 CTUE, 
 
 LSE, 
 
 RSE, 
 
 (IB, PL ) (0:3 ) B I T ( 
 
 (DB,DR,LR,LRN) (36) BIT( 1 ) 
 
 (CTU,CTD) STATIC BIT( 1 ) , 
 
 MCT( 1:5) B I T ( 1 ) STATIC; 
 
 BI T ( 1 ) ; 
 
 EXTERNAL ; 
 (CTLZ,CTHZ,CTZ )BIT( 1 ) , 
 
 DLRG, 
 
 MCTE, 
 
 DLRG, 
 LSPE, 
 RSPF) 
 
 BIT( 1 
 
 LRN-'O'B; 
 
 /* 
 
 IF RSF T H F M 
 
 on 1=0 to 3; 
 
 ORAW ING 
 
 oo; 
 
 07-1*/ 
 
 00 J=I*9+1 TO 1*9+8; 
 
 end; 
 
 END; 
 
 LRN( J + l )=LRN( J + l ) | OR ( J ) ; 
 
 00 1=9 TO 36 BY 9; 
 LRN( I )=0R ( I ) ; 
 
 LRN(1)='0'B; 
 
 END; 
 
 E N ; 
 
 IF LSF THEN 00; 
 
 00 1=0 TO 3; 
 
 on j=i*9+i Tn 1*9+8; 
 
 LRM( J-l )=LRM( J-l ) I 0R( J ) ; 
 
 FND; 
 FNO; 
 00 1=9 TU 36 BY 9; 
 
 LRN( I )=0R ( I ) ; 
 
 C 
 END; 
 IF ANOE T 
 
 END; 
 
 LRN(35 )= '0' B; 
 
 "ALL PR INT1 (LRN, » LRN ' ) ; 
 
 /PRESET COUNTER, SELECT COUNT UP n 
 
 / :!: nuAIJTMr. 1 7 _ O ;i 
 
 */ 
 
 iHEN LRN( *)=0R( *) 8DB( *) ; 
 /- :: CALCULATE CONTROL INFORMATION DRAWING 17-1 
 CTMHZ=-.MCT( 5 )£^MCT(4) ; 
 CTMLZ=-.MCT(3) f.-.MCT( 2) £-.MCT( 1 ) ; 
 
 /* LOAD M-COUNTFR FROM THE LR DRAWING 17-1 *, 
 IF LRMCTG THEN DO 1=1 TU 5; 
 
 MCT ( I )=LR ( 1+30) ; 
 END; 
 
 T COUNT UP OR DOWN, AND COUNT */ 
 /* DRAWING 17-2 */ 
 
 */ 
 
 IF RMCT THEN MCT='0'B; 
 IF CTUE THEN 00; 
 
 CTU=« 1 'B; 
 
 CTD= 'O'B; 
 END; 
 
 11/5/70 
 
 Section 2.8.3 - 1/2 
 
IF CTDE THEN DO; 
 CTD=' l'B; 
 
 ctu= , o , b; 
 
 END; 
 
 IF MCTE THEN CALL 
 
 mctr; 
 
 /* nETFRMINE BYTF SHIFTING 
 
 /* DRAWING 
 
 FOR PERMUTER 
 17-1*/ 
 
 */ 
 
 IBPL21=RSPE6MCT(1 )£MCT(2) ; 
 IBPL13 = LSPEf.MCT(l)f»MCT(2) ; 
 PL(0)=-MCT(1 )£-,MCT(2)£(LSPE|RSPE); 
 PL (1 )=LSPE&-MCT( 1)£MCT(2) ; 
 PL(2)=(MCT(1 )&^MCT(2) ) £ ( LSPE I RSPE ) ; 
 PL(3)=RSPEC-.MCT(1)F.MCT(2) ; 
 IB(0)=RSPE&(MCT(1) |MCT(2) >! 
 18(1 )=RSPEf,MCT( 1 ) ; 
 IB(2)=LSPFCMCT(1 ) ; 
 IB(3)=LSPEf>(MCT(l) |MCT(2) ) ? 
 
 DLRG = DLRGlORE"; 
 u i — r p • p k ( ) C * 
 
 DCL (M-tl) FIXFD BIN (5,0), MS BIT(5),0NE FIXED BIN; 
 
 PUT LIST( 'MCTR ENTERED' ) ; 
 
 DNE = 1 ; 
 
 DO 1=1 Tn 5; 
 
 if mct(i) then *m*m+2**(5-i ) » 
 
 end; 
 
 IF CT.U THEN M = M + l; 
 
 IF CTD THEN M=M-1; 
 
 IF M<0 THEN MCT='1'B; 
 FLSE on; , 
 MS = M; 
 
 on 1=1 to 5; 
 
 MCT( I )=SDBSTR(MS,I ,DNE) *, 
 
 END; 
 END; 
 END mctr; 
 
 END BOOLSHFT; 
 
 
 /* 
 
 11/5/70 
 
 Section 2.8.3- 2/2 
 
2 ' Q ' k Boolean/Shi ft Logic - Logical Descrip t.i nn 
 2 ' 8 - I+ - 1 Basic Boolean/Shift Logic 
 
 The basic Boolean/Shift Logic is used to perform the actual 
 boolean and shifting operations on data. This logic is really cuite 
 straight forward. It consists of various sets of gates each of which 
 can be operated separately. Each set has 32 bit positions and the 
 corresponding bit positions of each set are dot-ored together to form 
 a 32 bit input bus (LRNi) to the Logic Register (LR). The flag 
 positions of the input data are handled separately and are also gated 
 to their corresponding positions in the LRNi. 
 
 The various boolean operations are accomplished as explained 
 a Section 2.8.1.1 and are activated by turning on the necessary gate 
 Signals, i.e. XOR/E, EQV/E, AND/E, and OR/E. The shifting operations 
 are performed between the DR and the LR by using a simple gate, but 
 gating each input bit position to the corresponding output bit position 
 which is one place to the right or left. In the case of a right or 
 left shift by one bit, the flags are gated straight through from the 
 DR to the LR without changing position. 
 
 11/17/69 Section 2.8.1..1 - 1/! 
 
2.8.14.2 M-Counter Logic 
 
 The M- Count er , as shown in the TP Logic Book, drawing 17-2, 
 is a double rank, up-down counter with a combination of ripple and 
 lookahead carry logic. The information is stored in the upper rank and 
 can be retrieved in true or complement form. The choice of up or down 
 counting is made by setting the direction flip-flop to either CTU or 
 
 CTD by means of the CTU/E or CTD/E control signals, respectively. 
 
 As in a normal double rank counter, the upper rank, which 
 contains the current state of the counter, is gated into the lower rank 
 of the counter during the time that the M Counter is not counting (i.e. 
 
 MCT/E = l). The output of the lower rank, in turn, is sent to the 
 carry propagation logic which in turn decides what the state of the 
 
 M-Counter will be the next time that MCT/E is activated. However, since 
 
 MCT/E is not active at this time, this result sits at the input of the 
 upper rank until such time as MCT/E goes to (i.e. MCT/E = l). As 
 soon as this happens, the gates to the lower rank close. This ensures 
 that the inputs (and thus the outputs also) of the carry propagation 
 logic will not change. One collector delay later, the output of the 
 carry propagation logic is gated into the upper rank. Thus, provided 
 that there is a sufficient length of time for the carry propagation logic 
 to have settled down after the previous count, a new count value will 
 appear at the output of the "M-Counter 1 collector delay time plus 1, 
 
 260 flip-flop storage time after MCT/E goes to 0. 
 
 The most complicated part of the M-Counter logic is the carry 
 propagation logic. It is also the key to the whole M-Counter operation. 
 Its inputs consist of the 5 data signals from the lower rank of the 
 counter (in both true and complement form), the CTU and CTD signals which 
 
 determine whether we will add 1 or subtract 1, and the MCT/E signal which 
 is inverted and then used to gate the output of the carry propagation 
 logic into the M-Counter' s upper rank. 
 
 As mentioned earlier, the carry propagation logic uses both 
 ripple and lookahead carry propagation techniques. The lookahead is 
 used between bits 1 and 2 and between bits 3, 1+, and 5 where bit 1 is 
 
 10/30/69 Section 2.8.U.2 - 1/7 
 
the high order bit and bit 5 is the low order bit. A ripple carry 
 
 i 
 is performed between bits 2 and 3. 
 
 The carry propagation logic itself can be thought of as two 
 sets of gates which if both are turned on, cause the corresponding bit 
 of the counter to change state.' A simplified logic diagram is shown in 
 Figure 2. 8. h. 2/1. The second gate is activated when the count enable 
 pulse is activated while the first gate is activated by a carry (or 
 borrow) from the previous lower order stage. Note that the inputs to 
 the gate system are arranged so that if either gate is off, the bit 
 represented by the upper rank flip-flop will not change. As can be 
 seen, therefore, the new state will be determined by what appears on 
 the second gate line at each position of the counter. 
 
 In actual fact, the "carry gates" at each counter position 
 are determined by 2 NAND circuits which are dot-ored together, one 
 NAND being activated when the M-Counter is counting up (CTU = l) 
 and the other NAND being activated when.the M-Counter is counting down 
 (CTD =1). The single exception to this scheme is the low order bit 
 position, MCT5, which always changes state when the MCT/E signal goes 
 to regardless of whether CTU or CTD is 1. 
 
 As an example, in the case of a count up, MCTU will change 
 state only if the next lower order position, MCT5, was a 1 during the 
 previous counter state. This is due to the fact that if a 1 is added 
 to the MCT5 position when it is already 1, a carry into position MCTU 
 will result which in turn will cause MCTH to change state. On the 
 other hand in the case of a count down, MCTU will change state only if 
 the next lower order position, MCT5, was a during the previous counter 
 state. This is due to the fact that if a 1 is subtracted from the MCT5 
 position when it is in the state, it will have to borrow from the 
 MCTU position which in turn causes MCTU to change state. The logic used 
 to generate the "carry gate" for position k is shown in Figure 2.8.U.2/2. 
 Note that in Drawing 17-2 of the TP Logic Book the MCT 5 and MCT5 signals ar 
 actually taken from the lower rank flip-flops of the M-Counter. 
 
 For the MCT3 position things become slightly more complicated. 
 In the first place the conditions which determine whether or not MCT3 
 changes state depend on both of the two lower order positions, MCTU and 
 MCT5. In a count up they must both be 1 and in a count down they must 
 
 10/30/69 
 
 Section 2.8.U.2 - 2/7 
 
MCTi 
 
 MCTi 
 
 MCTi MCTi 
 
 Figure 2. 8, k, 2/1 - Simplified Logic for One Position of the M-Counter 
 
 12/16/69 
 
 Section 2.Q.U.2 - 3/7 
 
CTU 
 
 MCT5 
 
 CTD- 
 MCT5 
 
 lt CARRY GATE 
 
 FOR POSITION 4 
 
 Figure 2 
 
 U.2/2 - Carry Gate Logic for Position MCTU 
 
 12/10/69 
 
 Se 
 
 ction 2.8A.2 - U/7 
 
both be in order to produce either a carry into or a borrow from the 
 third position. In Figure 2.8. k. 2/3 the logic used to generate the 
 3rd position "carry gate" is shown. Note that there are actually 2 
 "carry gates", one for each previous position, and that both must be on 
 in order to cause a change of state. Each of these "carry gates" is 
 produced in the same way as the "carry gate" for position MCTU. In fact 
 one of them is actually the same signal as was used in the MCTU position. 
 
 It can be seen from the above description, that if we wanted 
 to use full iookahead, each higher order position of the counter could 
 be constructed by adding an additional "carry gate" and AND'ing it along 
 with all of the previous gates. However this method would create the 
 need for NAND circuits with more and more inputs and since there is no 
 need for the high speed which can be achieved with a full Iookahead counter, 
 it was decided to save logic by using a ripple carry between the 2nd 
 and 3rd positions. 
 
 Using a ripple carry simply means that in the 2nd M-Counter 
 position, instead of looking at the contents of all 3 lower order 
 positions we will simply sit around and wait until the previous logic 
 has decided whether or not the immediately preceding position, MCT3, 
 will have to change state. It is called a ripple carry because if 
 every counter position acted this way we could only find out the new 
 count one bit position at a time beginning at the low order end of the 
 counter, and the new count would "ripple" through to the high order 
 end one bit position at a time. 
 
 If it turns out that the MCT3 position does change state 
 then one of the outputs from the "carry gate" circuits (labelled A 
 and B in Figure 2.8.U.2/1) will be '1' and the other will be '0'. 
 B will be *1' if MCT3 is going from 1 to and A will be '1' if 
 MCT3 is going from to 1. If no change in MCT3 is to occur, both 
 A and B will be 0. Thus the generation of the carry gate for the MCT2 
 position can be accomplished by the logic shown in Figure 2.8.U.2/H. 
 
 Finally the two carry gates for M-Counter position 1 can be 
 generated exactly the same way as for position 3 except that this time 
 the results from position 2 and the ripple results from position 3 are used. 
 
 10/30/69 Section 2.8.U.2 - 5/7 
 
MCT3 
 
 > 
 
 MCT3 
 
 > 
 
 CTU 
 
 MCT4 
 
 CTD 1 
 
 MCT4 
 
 MCT5 
 
 > 
 
 r> 
 
 MCT5 
 
 r> 
 
 Figure 2.8. U. 2/3 - Carry Gate Logic for Position MCT3 
 
 12/10/69 
 
 Section 2. 8.U. 2 - 6/7 
 
CTU 
 A 
 
 O 
 
 CTD 
 B 
 
 CARRY GATE 
 FOR MCT2 
 
 Note: the A and B inputs come from the positions indicated 
 in Figure 2. 8. h. 2/1. 
 
 Figure 2. 8. k. 2/h - Carry Gate Logic for "Ripple Carry" 
 to Position MCT2 
 
 12/10/69 
 
 Section 2.8.U.2 - 7/7 
 
2.9 Algebraic /Logical Compare Logic 
 
 The algebraic/logical compare logic in the TP is used to make 
 comparisons between byte, halfword or word size cells. If it is neces- 
 sary to compare two floating point or BCD numbers, this is done using 
 the Arithmetic Unit. 
 
 Generally speaking the comparisons are made by subtracting and 
 then comparing the result with zero. Therefore the hardware is set up to 
 test the AR for zero. Various groups of bits are tested depending on the 
 cell size and the type of comparison. The sign is also checked to set 
 the "greater" and "less" flip-flops. 
 
 The compare is usually done in two cycles. During the first 
 the "greater" or "less" flip-flops are set according to the signs and 
 the EQ is set to 1 if the AR is zero. In the second cycle, both the 
 "greater" and "less" flip-flops are reset to zero if the EQ flip-flop 
 was previously set to one. 
 
 In the following section the various hardware descriptions are 
 given. The actual sequencing of the various kinds of comparisons is 
 given in Section U.3.2.1. 
 
 I+/7/69 Section 2.9 - l/l 
 
2-9.1 A/L Compare Logic - Functional Description 
 
 The A/L Compare Logic is used to perform algebraic and logical 
 comparisons between two numbers. In an algebraic compare, the numbers 
 are treated as 2's complement numbers with the highest order bit being 
 the sign bit. In a logical compare, the numbers are treated as unsigned 
 positive numbers. 
 
 The logic for the A/L compare is shown in the 05-series of 
 drawings in the TP Logic Book. In order to understand this logic, it is 
 necessary to know how the control logic uses it. The basic comparison 
 method, as previously mentioned in Section 2.9, uses a subtraction. In 
 certain cases this is not necessary since the results of the comparison 
 can be determined directly from the high order bits of the two numbers when 
 these are different. When the sign bits are the same , however , the subtraction must 
 be performed and the proper indicator settings determined from the sign 
 bit of the result. 
 
 Since the cells are right justified and may be either bytes, half- 
 words, or words, the actual sign positions which are used will depend on 
 the cell size. Only the position corresponding to the highest order bit 
 of the present cell size cell is used. 
 
 Figure 2.9-1/1 shows a table giving the algebraic and logical 
 interpretation of the various bit strings in the set of ii-bit binary 
 numbers. Note that if two numbers are interpreted as algebraic they can 
 always be compared by 2 ' s complement subtraction and observation of the 
 sign of the result. This will also hold for logical numbers if both numbers 
 have the same first bit . It will not work if the numbers have opposite 
 high order bits. However, it is exactly this situation which can be pre- 
 dicted without subtraction. In the case of logical numbers the 
 operand with the '1' in the first bit position is larger while in the case 
 of algebraic numbers the operand with the '0* in the first bit is larger. 
 Figure 2.9.1/2 gives the indicator settings for the situation in which 
 both operands have the same high order bit. 
 
 11 A/TO Section 2.9-1 - lA 
 
. Bit Logical 
 
 Algebraic String Interpretation 
 
 Interpretation coring 
 
 -1 
 -2 
 -3 
 
 -5 
 
 -7 
 
 -8 
 
 7 
 
 5 
 
 3 
 
 2 
 1 
 
 
 1110 
 1101 
 
 _u iioo 
 
 _6 1° 10 
 
 1001 
 
 1000 
 
 mi 15 
 
 ik 
 
 13 
 12 
 11 
 10 
 
 1011 
 
 0111 
 
 g 0110 
 
 0101 
 
 li 0100 
 
 0011 
 0010 
 0001 
 0000 
 
 9 
 8 
 7 
 
 Figure 2.9.1/1 - Algebraic and Logical Interpretation 
 of U-Bit Numbers 
 
 Section 2.9-1 - 2 A 
 
Operand Stack: 
 
 ^TOP 
 Compare: A — B 
 
 First gate B -> DR (true); gate A - DB (complemented) 
 Second Form B - A; gate result into AR 
 
 Result in 
 
 AR 
 
 A 
 
 B 
 
 Compa 
 
 y-p A 1 cr 
 
 
 AR >0 (+) 
 
 
 small + 
 
 large + 
 
 < 
 
 Compare I 
 < 
 
 >0 ( + ) 
 
 
 large - 
 
 small - 
 
 
 < 
 
 < 
 
 =0 ( + ) 
 
 
 
 (B=A) 
 
 
 = 
 
 
 <0 (-) 
 
 
 large + 
 
 small + 
 
 
 > 
 
 > 
 
 <0 (-) 
 
 
 small - 
 
 large - 
 
 
 > 
 
 > 
 
 Figure 2.9.1/2 - Setting the GT and LT Flip-Flops When the First 
 Bit of Both Operands is the Same 
 
 7/8/69 
 
 Section 2.9.1 - 3/I4. 
 
 The 05-2 drawing shows the equality compare circuit. After 
 the subtraction this circuit checks for zero in the AE. Note that the 
 cell size signal is used to control which bits are checked. If all of 
 the applicable bits are zero, the EQ flip-flop is set. 
 
 Note that even if the EQ flip-flop is set, one of the GT or LT 
 flip-flops will still be set on the basis of the contents of the AR and 
 DR sign positions. Therefore in this case the RGL/E signal can be turned 
 on and if EQ is on, the GT and LT flip-flops will be reset. 
 
 The flag match logic is shown in Drawing 05-3- It is very 
 simple and merely compares the flags on the DR and DB before the sub- 
 traction takes place. 
 
 The match checking is effected by a gated "equivalence" between 
 the flags of the top and next-to-top operands in the OS. However, since 
 the second from the top operand was gated out in complement form, an 
 "exclusive or" is performed rather than an equivalence; the results are 
 the same, though, since: 
 
 FM = A ¥ B = A B v A B and if C is substituted for A: 
 FM = CB v CB 
 
 If any pair of flags do not match, the FM indicator is not set.^ The final 
 
 step for the main control in these instruction sequences is to "pop" the 
 top cell out of the OS. 
 
 Section 2.9-1 - **A 
 7/8/69 
 
2.9-2 Signal Name Lists for the A/L Compare Logic 
 2.9-2.1 Control Signals 
 
 AUC/G 
 CPA/E/ 
 CPH/E/ 
 CPL/E/ 
 
 FLM/E/ 
 RGL/E 
 RSYS/ 
 TZ/E/ 
 
 Gate AU condition code 
 Algebraic compare enable 
 Hollerith compare enable 
 Logical compare enable 
 Flag match enable 
 Reset GT and LT if EQ = 1 
 Reset system 
 Test zero enable 
 
 6/18/69 
 
 Section 2.9-2.1 - l/l 
 
 
 
2.9.2.2 Internal Signals Used by the A/L Compare Logic 
 
 ARi - Arithmetic Register - bit i 
 
 CSB - Cell size is byte 
 
 CSH - Cell size is halfvrord 
 
 CSW - Cell size is word 
 
 DBi - Distribution bus, from the permuter - bit i 
 
 DRi - Distribution Register 
 
 EQ - Equality flip-flop 
 
 FM - Flags of cells in DR and DB match 
 
 GT - Greater than flip-flop 
 
 LT - Less than flip-flop 
 
 6/18/69 Section 2.9-2.2 - l/l 
 
2.9.3 A/L Compare Logic - 1'L/j Description 
 EXFC PL 1 
 ML 1 .SYSPUMCH HO SYSnilT=H 
 
 •■I i . sys in do * 
 
 Compare: prdu aucg, cpae, cphf, cplf 
 CSB * csh, C sw, eo, GTf 
 
 IT, RCOMFF, RFOS, ROLF, SGTSvSLTS, 
 
 I C t I | 
 
 DCLUUCG, CPAF, CPHF, CPLF, csh, C SH 
 
 ""! E °' GT ' LT, RCOMFF, 
 
 RFOS,RGLF,SGTS,SLTS,TZF) BIT(l) ; 
 DCL( AR,I)K,LK ) ( 36) BIT(l) FXTFRNAl; 
 DC I (I»ZFR0)FIXFD KIN ; 
 IF RCDMFF THEM LT,GT=»0«R; 
 IF FQRRGLE THFN GT= ' 1 ' B; 
 IF I_R(27)£AUCG|SLTS THFN LT='1'B; 
 IF DR(9)f.AlJCG|SGTS THFN GT=»l'ft; 
 IF ( AR (28 I&CSB&CPLE 
 
 I AR( I )f,CSWf.(CPLF ICPAE) 
 I AR( 19)r.CSH£(CPLE ICPAE) 
 I A R ( 3 5 ) £C P H F ) 
 
 THEN GT=« 1«B; 
 
 IF (-AR(28 )SCSBSCPLF 
 
 l-AR( l >fi(CPLE|CPAE)6CSW 
 l-AR( 19)fv(CPLE|CPAE )£CSH 
 I -«AR ( 35 )SCPHE ) 
 
 THEN LT= • 1 • B; 
 
 IF RCOMFFIRFOS THEN FO='l'B; 
 IF -iLR ( 3.6 )-£ AUCG THEN EO= , l , B; 
 IF (CPLEICPAEITZE) THEN DO; 
 
 ZFRO='0'B; 
 
 IF (CSB ICSHICSW) THEM DO 1=28 TO 35; 
 ZFRO=ZERO|AR( I ) ; 
 
 END; 
 
 IF (CSHICSW) THEN 00 1=19 TO 26; 
 
 ZFRO=ZERO| AR( I ) ; 
 END; 
 
 IF CSW THEN DO 1 = 1 TO 17 WHILF (I-, = 9); 
 
 ZFRO = ZFRO | AR ( I ) ; 
 END; 
 
 I F -iZFRO THFN F0= • 1 ' B; 
 END; 
 
 FND COMPARE; 
 
 11/5/70 Section 2.9.3 - l/l 
 
2.10 Cell Size Generator 
 
 The cell size generator is used to drive the cell size sig- 
 nals for the various logic and control groups. These output signals 
 consist of true and complement forms of CSB, CSH, CSW and CSD which 
 indicate byte, halfword, word and double word cell sizes, and CSBH 
 which indicates that the cell size is either a byte or a halfword. 
 Only one of the first four signals will be active at any one time and 
 it is possible that none of them may be on. 
 
 There are four possible determinants for the cell size to be 
 activated: 
 
 1) the field designator bits when interpreted as a cell 
 
 size or immediate address field selector (selector state 00) , 
 
 2) the field designator bits when interpreted as a number type 
 (selector state 01), 
 
 3) the contents of the control cell size flip-flops 
 (selector state 10), or 
 
 h) the four individual cell size control signals (selector 
 state 11 ). 
 
 At any given time the decoding method actually chosen is deter- 
 mined by a four state selector. If the control cell size signals are 
 chosen, and no control cell size signal is turned on, none of the signals 
 will be activated. At most only one of the control cell size signals will 
 be on at any one time. 
 
 In addition to the cell size signals, this block of logic also 
 produces the signals which indicate the number type for arithmetic instruc- 
 tions. The rest of this section gives a more detailed explanation of the 
 various parts of the cell size generator. 
 
 6/19/69 Section 2.10 - l/l 
 
2.10.1 Cell Size Generator-Functional Description 
 
 The main output bus of the Cell Size Generator consists of five 
 signals obtained by dot-or'ing the outputs of several input gating 
 circuits. Each gating circuit transmits data from a different source 
 which is decoded to activate the proper signal(s). The gate signals 
 for the gating circuits are generated by means of decoding logic 
 attached to a selector (see Figure 2.10.1). Two flip-flops are set to 
 one of four possible states by four different control signals. The 
 state is then decoded by a group of NAND's. If the fourth state is 
 set (ll), all of the gates are turned off. 
 
 Note that the 00 state of the selector is actually used to 
 
 activate three possible signals, IMCSS/E, NICSS/E, and CSS/E. These 
 three signals distinguish two possible decodings of the IRT and IR8 bit 
 positions which contain the field designator code. In the 00 state, 
 if there is an immediate address option for the instruction and this 
 
 option is used, then IMM = 1, IMCSS/E = and the following decoding 
 is used: 
 
 IRT 
 
 IR8 
 
 Cell Size 
 
 Immediate Field 
 
 
 
 
 
 halfword 
 
 value field 
 
 
 
 1 
 
 halfword 
 
 link field 
 
 1 
 
 
 
 word 
 
 link-value field 
 
 1 
 
 1 
 
 halfword 
 
 segment name field 
 
 If IMM = then NICSS/E = and the decoding is strictly 
 according to cell size and is as follows: 
 
 RT 
 
 IR8 
 
 Cell Size 
 
 
 
 
 
 byte 
 
 
 
 1 
 
 halfword 
 
 1 
 
 
 
 word 
 
 1 
 
 1 
 
 double word 
 
 11/5/70 Section 2.10.1 - 1/3 
 
MM 
 
 IMM 
 
 > 
 
 IMCSS/E=OCMMM 
 
 NICSS/E =00* IMM 
 
 CSS/E = 00 
 
 r> 
 
 CSF/G = 10 
 
 :3 
 
 NCS/E = 01 
 
 SNCS/S 
 
 NOTE: THE 11 STATE CAUSES ALL GATES TO BE INACTIVE 
 
 FIGURE 2.10.1 
 CELL SIZE GENERATOR GATE SELECTOR 
 
 5/22/69 
 
 Section 2.10.1 - 2/3 
 
Note that 01 and 10 codes are the same whether I MM is on or off. 
 
 Therefore these decoders are driven by the CSS/E signal. IMCSS/E 
 
 and NICSS/E are used to drive the proper cell size signals when IMM = 1 
 and IMM = 0, respectively. 
 
 If the NCS/E signal is turned on, (i.e. the selector state 
 is 01) the cell size signals are determined by the IR7 and IR8 bits 
 which contain a field designator indicating a number type. One of 
 the number type signals will also be turned on in this case. The code 
 is as follows : 
 
 IRT 
 
 IR8 
 
 Number Type 
 
 Cell Size 
 
 
 
 
 
 short fixed 
 
 halfword 
 
 
 
 1 
 
 long fixed 
 
 word 
 
 1 
 
 
 
 floating point 
 
 doubleword 
 
 1 
 
 1 
 
 hollerith 
 
 doubleword 
 
 If the CSF/G signal is turned on, (i.e. the selector state 
 is 10) the cell size signals are determined by the control cell size 
 flip-flops. The coding is the same as that used for the cell size 
 field designator case (lMM=0) except that two control flip-flops 
 take the place of IR7 and IR8. These flip-flops are set in a manner 
 similar to the selector used in the gating signals. 
 
 If the selector is in the fourth state where the three 
 gating signals are off, the cell size signals may be set by using one 
 of the control cell size signals CCSB/E, CCSH/E, CCSW/E, or CCSD/E 
 which will activate the proper cell size signals. 
 
 11/10/70 Section 2.10.1 - 3/3 
 
2.10.2 Signal Name Lists for Cell Size Generator 
 2.10.2.1 Control Signals 
 
 CCSB/E Enable byte output line 
 
 Enable double word output line 
 
 Enable halfword output line 
 
 Enable word output line 
 
 Set cell size control flip-flop to byte 
 
 Set cell size control flip-flop to double word 
 
 Gate control flip-flops to CS generator 
 
 Set cell size control flip-flop to halfword 
 
 Enable decoding of field designator bits as a cell 
 
 size independent of immediate option 
 
 Set cell size control flip-flop to word 
 
 Immediate operand - cell size option 
 
 Control FF indicates instruction uses immediate 
 
 option 
 
 Enable decoding of field designator bits as a 
 
 number type 
 
 No immediate operand - cell size option 
 
 Set CS gate selector off for control signal select 
 
 Set CS gate selector for CSF/G 
 
 Set CS gate selector for CSS/E 
 
 Set CS gate selector for NCS/E 
 
 CCSD/E 
 
 CCSH/E 
 
 CCSW/E 
 
 CSBF/E 
 
 CSDF/E 
 
 CSF/G 
 
 CSHF/E 
 
 CSS/E 
 
 CSWF/E 
 IMCSS/E/ - 
 IMM 
 
 NCS/E 
 
 NICSS/E/ - 
 
 SCSC/S 
 
 SCSF/S 
 
 SCSS/S 
 
 SNCS/S 
 
 7/7/69 
 
 Section 2.10.2.1 - l/l 
 
2.10.2.2 Internal Signals Used by Cell Size Generator 
 
 CSB 
 CSBH 
 CSD 
 CSH 
 
 csw 
 
 FPT/ 
 H0L/ 
 IRi 
 
 LFX/ 
 SFX/ 
 
 Cell size is byte 
 
 Cell size is byte or half word 
 
 Cell size is double vord 
 
 Cell size is half word 
 
 Cell size is word 
 
 Floating point (CSD) 
 
 Hollerith ( CSD ) 
 
 Instruction Register, bit i 
 
 Long fixed (CSW) 
 
 Short fixed (CSH) 
 
 6/19/69 
 
 Section 2.10.2.2 - 1/1 
 
2.10.3 Cell Size Generator - PL/1 Description 
 
 / FXFC PL1 
 
 /PL 1 .SYSPUNCH DO SYSOUT=B 
 
 /PL1.SYSIN DO * 
 
 CSGFM: PROC( CCSBF, CCSDE, CCSHE, CCSWE, CSB, 
 
 CSBEE, CSBH, CSD, CSDEE, CSFG, 
 
 CSH, CSHFE, CSSE, CSW, CSWFF, 
 
 FPT, HDL, IMM, LFX, NCSE, 
 
 SCSCS, SCSFS, SCSSS, SFX t SNCSS); 
 
 OCL (CCSRE, CCSDE, CCSHE, CCSWE, CSB» CSBFEt 
 
 CSBH, CSO t CSDFE, CSFGt CSH, 
 
 CSHFE, CSSE, CSW, CSWFE, FPT, 
 
 HDL , IMM, LFX, NCSE, SCSCS, 
 
 SCSFS, SCSSS, SFX, SNCSS) RIT(l); 
 nCL IR(36) BIT < 1 ) external; 
 OCL (GSEF, /* GATE SELECTOR FLIP-FLOP OUTPUT */ 
 
 CSCEE) /* CELL SIZE CONTROL FLIP-FLOP OUTPUT */ 
 
 (1:2) BIT( 1 ) STATIC, 
 
 (IMCSSE, /* CELL SIZE DETERMINED BY IMM OPTION */ 
 
 NICSSE) /* CELL SIZE DETERMINED WITH IMM OPTION OFF */ 
 
 BITU) ; 
 
 /-RESFT CELL SIZE SIGNALS TO ZERO-/ 
 CSB, CSBH, CSH, CSW, CSD ='0'B; 
 SFT_SELECTOR: 
 
 /* SET CELL SIZE GATE SELECTOR FLIP-FLOP STATES */ 
 
 /* SET GATE SELECTOR FOR CSSE */ 
 
 IF SCSSS THEN DO; 
 GSFF( 1 )='0'B; 
 GSFF(2 )= 'O'B; 
 
 END; 
 
 /* SET GATE SELECTOR FOR NCSE */ 
 
 IF SNCSS THEN DO; 
 
 GSFF( 1 )='0'B; 
 
 GSFF(2)='1»B; 
 END; 
 
 /* SET GATF SELECTOR FOR CSFG */ 
 
 IE SCSFS THEN DO; 
 GSFFd ) = • l'B; 
 
 GSEF (2 )= 'O'B; 
 
 END; 
 
 /* SET GATE SELECTOR OFF FOR CONTROL SIGNAL SELECT */ 
 
 IF SCSCS THEN 00; 
 
 GSFF( 1 )=• 1 «B; 
 
 GSEF (2 )= ' 1 »B; 
 END; 
 
 11/5/70 Section 2.10.3 - lA 
 
FCnr)F 7* F CHEjK R iF FIELD DESIGNATOR BITS ARE TO BE DECODED AS 'A CELL 
 SIZE INDEPENDENT OF IMMEDIATE OPTION */ 
 
 CSSE = -.GSFF(1 )&-GSFF(2) ? 
 
 NICSSE=CSSF&-IMM; 
 IMCSSF = CSSEf.IMM; 
 
 /* CHECK IF CONTROL FLIP-FLOPS ARE TO BE GATED TO CELL 
 GENERATOR */ 
 
 CSFG=GSFF(1 )G-.GSFF(2) ; 
 
 /-CHECK IF FIELD DESIGNATOR BITS ARE TO BE DECODED AS A 
 NUMBFR TYPE */ 
 
 NCSE = -GSFFU )&GSFF(2) ; 
 
 cct fSCFFs 
 
 "/-SET CELL SIZE CONTROL FI IP-FLOP STATES *./ 
 
 /* ENABLE BYTE HOTPOT LINE */ 
 
 IF CSBFE THEN DO; 
 CSCFF( 1 ) = '0«B; 
 
 CSCFF(2)='0'B; 
 
 END; 
 
 /♦.ENABLE HALFWORD OUTPUT LINE */ 
 
 IF CSHFE THEN DO; 
 
 CSCFF( 1 ) = '0'B; 
 CSCFF(2)= , 1'B; 
 
 end; 
 
 /* ENABLE WORD OUTPUT LINE */ 
 
 IF CSWFE THFN DO; 
 
 CSCFFd ) = ' l'B; 
 
 CSCFF(2 )='o«b; 
 END; 
 
 /* EMABLF DOUBLE WORD OUTPUT LINE */ 
 
 IF CSDFE THEN DO; 
 
 CSCFFd ) = »1'B; 
 
 CSCFF(2 ) = • 1 'B; 
 END J 
 
 11/5/TO 
 
 section 2.10.3- 2 A 
 
SET_CFLL_SIZES: 
 
 /* SET CELL SIZES */ 
 
 /* CHECK IF CELL SIZE IS TO BE DETERMINED INDEPENDENTLY 
 OF THE IMMEDIATE OPTION */ 
 
 IF CSSE THEN DO; 
 
 CSH = -»IR(7)£IR(8) ; 
 CSBH = -IR(7) ; 
 CSW=IR( 7)fi-IR(8) ; 
 
 end; 
 
 /* CHECK IF CELL SIZE TO BE DETERMINED BY THE IMMFDIATE 
 OPTION ON #/ 
 
 IF IMCSSF THEN DO; 
 
 CSH = MR(7)&-.IR(8) |CSH; 
 CSW= IR(7)6 IR(8) ICSW; 
 
 END; 
 
 /* CHECK IF CELL SIZE IS DETERMINED BY IMMEDIATE OPTION OFF*/ 
 
 IF NICSSE THEN DO; 
 
 CSB=iIR(7)S-iIR(8) ICSB; 
 CSD= IR(7)S IR(8) ICSD; 
 
 END; 
 
 /* CHECK IF CELL SIZE IS TO BE DETERMINED BY CFLL SIZE CONTROL 
 FLIP-FLOPS */ 
 
 IF CSFG THEN DO; 
 
 CSB = -.CSCFF(1)&-CSCFF(2)|CSB; 
 
 CSH = -.CSCFF( 1 )6 CSCFF(2) ICSH; 
 CSBH= CSCFFd ) ICSBH; 
 
 CSW= CSCFF( 1 )S-.CSCFF(2) ICSW; 
 
 CSD= CSCFF(1)G CSCFF(2) ICSD; 
 END; 
 
 /* CHECK IF FIELD DESIGNATOR BITS ARE TO BE DECODED AS A 
 NUMBER TYPE #/ 
 
 IF MCSF THEN DO ; 
 
 CSH = -iIR(7)GIR(8) |CSH; 
 CSBH = -.IR ( 7)S-»1R(8) ICSBH; 
 CSD= IR (7) ICSD; 
 
 FPT= IR(7)G-.IR(8); 
 HOL= IR(7)G IR(8) ; 
 SFX = MR.(7)G-IR(8) ; 
 LFX = -.IR(7)fi IR(8) ; 
 
 END; 
 
 ELSE FPT,HOL,SFX,LFX='0'B; 
 
 11/5/70 Section 2.10.3 -3 A 
 
/* CHECK IF CELL SIZE IS DETERMINED BY CONTROL */ 
 
 csb=csb!ccsbe; 
 csh=csh|ccshe; 
 
 CSBH=CSBH|CCSHE|CCSBE; 
 
 csw=csw|ccswe; 
 csd=csdjccsde; 
 
 END CSGEN? 
 
 /* 
 
 11/5/70 
 
 Section 2.10.3- *+A 
 
3. INTERFACE TO THE OTHER SUBSYSTEMS 
 
 The purpose of this section of the manual is to briefly describe 
 the other subsystems in Illiac III with which the Taxicrinic Processor 
 comes in contact and to explain in detail the nature of the interactions 
 between these units and the TP. 
 
 There are six other subsystems with which the TP interacts: the 
 Exchange Net , the Storage Units, the Arithmetic Unit, the Input-Output 
 Processor, the Pattern Articulation Unit and the Interrupt Unit. The TP 
 is directly connected to only the Exchange Net and certain lines in the 
 Interrupt Unit. All other communication with processors and units is done 
 through the Exchange Net. 
 
 5/15/69 Section 3 - l/l 
 
3.1 The Exchange Net 
 
 The Exchange Net is depicted in Figure 3.1 as having six Processor 
 ports and eighteen Unit ports. The purpose of the Exchange Net is to pro- 
 vide a 50 bit Processor-to-Unit information path and a 50 bit Unit-to-Processor 
 information path, for every possible Processor-Unit pair. 
 
 5/15/69 Section 3.1 - 1/2 
 
 
 
 
 
 K 
 
 
 
 
 
 
 5 
 
 
 
 
 
 
 
 
 
 in 
 
 
 
 in 
 
 z 
 
 
 UJ 
 
 t 2 i 
 
 
 o o z H 
 
 
 
 
 H <_> UJ wtWHOZ 
 
 
 EFINtTIONS 
 EXCHANGE NET 
 PROCESSOR POR 
 INPUT -OUTPUT 
 TAXICRINC PRO 
 LOCAL EXCHANG 
 UNIT PORT 
 UNIT ADDRESS 
 FAST CORE UNI 
 SLOW CORE UN 
 DICTIONARY COR 
 INTERRUPT UN 
 PATTERN ARTIC 
 ; ARITHMETIC U 
 = NOT ASSIGNED 
 
 
 z a a. 
 u Q- 2 
 
 _ -J 3 3 ■*■ w ° M 2 z 
 
 
 
 
 1 
 
 
 | A 
 
 A 
 
 s 
 
 A 
 
 _i_ 
 
 A 
 
 A 
 it 
 
 -^^ 
 
 — + 
 
 
 
 
 ^J— ! » 
 
 a. 
 
 
 
 
 
 
 1 3T1 
 
 2. -J, * -> • 
 
 
 
 — 'c 
 
 
 s <; 
 
 \ 
 
 ^ 
 
 
 \ 
 
 
 
 
 Sit 
 
 
 UJ 
 
 < 
 
 
 
 V 
 
 N 
 
 V 
 
 
 N c 
 
 i r — - 
 
 
 
 
 
 h-: ^ 
 
 
 V 
 
 3^ 
 
 
 
 
 
 
 
 
 
 
 a 
 
 
 
 \ 
 
 
 s 
 
 ^ 
 
 -^t 
 
 
 ^5 
 
 — ^r-+ 
 
 
 
 
 
 
 
 7 % 
 
 
 
 
 
 a- 1 
 
 ^ 3 1 
 
 
 r=in — e- 
 
 
 , 
 
 > 
 
 .^ 
 
 
 -*< 
 
 —i 
 
 r-^ 
 
 
 
 
 
 
 
 — s 
 
 s 
 
 V 
 
 
 
 
 
 
 
 
 
 -. r-- 
 
 to 
 
 
 
 u < t. 
 
 a. ■ 
 
 3 1 
 
 UJ 
 
 N 
 
 
 N 
 
 V 
 
 N 
 
 
 V 
 
 >c- 
 
 
 
 |slt= 
 
 - o — j ► 
 
 
 
 ^ 
 
 "V 
 
 V 
 
 UJ 
 
 
 
 JJt 
 
 i 
 
 ^— ► 
 
 H 
 
 
 
 <\l — 1 k 
 
 a 
 
 N 
 
 
 
 o < 
 
 
 
 
 
 <\l 
 
 
 
  
 
 'i 
 
 
 ■^c 
 
 ,i 
 
 r - * 
 
 
 
 
 
 
 
 1  
 
 CO 
 
 I 
 
 viva 
 
 31V9^ 
 
 00 
 
 viva 
 
 4f 
 
 o 
 
 lO 
 
 viva 
 
 3 
 
 , 
 
 o 
 
 •H 
 
 o 
 
 •H 
 
 O 
 
 o 
 
 u 
 o 
 
 CO 
 
 en 
 
 a> 
 a 
 o 
 
 o '— 
 
 -p W 
 P 
 
 -p m 
 
 •H EH 
 
 fl p 
 
 P o 
 
 CM 
 CM 
 
 00 
 
 0) 
 U 
 
 I 
 
 •H 
 P>4 
 
 S3<7> 
 
 bfl H 
 
 •H \ 
 Pn CM 
 
 0) H 
 0) • 
 CO OO 
 
 lOViMliM! 
 
 39NVH3X3 - WKS100M 
 
 6/25/69 
 
 Section 3.1.2 - h/h 
 
3.1.3 Standard Signals Used in the Control Bytes of all Processors and Units 
 
 ■;nal Name 
 PREN 
 
 UA1 
 
 UA2 
 
 UA3 
 
 UAU 
 
 ENRP 
 
 Til 
 
 UCO 
 
 UC1 
 
 UC2 
 
 UC3 
 
 UCU 
 
 UC5 
 
 UREN 
 
 ENRU 
 
 TI0 
 
 USO 
 
 US1 
 
 US2 
 
 US 3 
 
 usU 
 
 US 5 
 
 Signal Assertion 
 
 Processor Requests Exchange Net 
 
 Unit Address bit (most significant) 
 " n ii -| 
 
 ti it ii p 
 
 II II II o 
 
 ii it ii ^ 
 
 Exchange Net Reply to Processor 
 
 Transfer Information In 
 
 Unit Command bit 
 " it tt -j 
 
 ti ti tt p 
 
 II tt tt q 
 
 II II tt ^ 
 
 tl tt II q 
 
 Unit Requests Exchange Net 
 Exchange Net Reply to Unit 
 Transfer Information Out 
 Unit Status bit = UB = Unit Busy 
 Unit Status bit 1 = UM = Unit 
 
 Malfunction 
 Unit Status bit 2 = UPE = Unit Parity 
 
 Error 
 Unit Status bit 3 
 Unit Status bit h 
 Unit Status Bit 5 
 
 Signal Type 
 Access 
 
 Transfer 
 Unit Command 
 
 Access 
 Access 
 Transfer 
 Unit Status 
 
 Unit Status 
 
 Unit Status 
 Unit Status 
 Unit Status 
 Unit Status 
 
 Standard signals are assigned to lines of the control bytes as shown in 
 Figure 3.1.3. 
 
 5/15/69 
 
 Section 3.1,3 - 1/2 
 
p 
 
 R 
 
 
 C 
 
 E 
 
 S 
 S 
 
 R 
 
 PROCESSOR-EXCHANGE EXCHANGE 
 
 NET INTERFACE 
 
 PREN 
 
 Til 
 
 NET 
 
 INBUS BIT 
 
 ► 
 
 * I * 
 
 uco 
 
 UNIT-EXCHANGE 
 NET INTERFACE 
 
 PREN 
 
 ENRU 
 
 Til 
 
 UC 
 
 UAO 
 
 UC2 
 
 UA 
 
 UC3 
 
 UA2 
 
 UC4 
 
 UA3 
 
 UC5 
 
 UA4 
 
 8 
 
 * 9 * 
 
 0UTBUS BIT 
 
 « L 
 
 UREN 
 
 ENRP 
 
 TI0 
 
 UB 
 
 = USO 
 
 UM = US I 
 
 UPE 
 
 US2 
 
 UCO 
 
 UCI 
 
 UC2 
 UC3 
 
 UC4 
 
 UC5 
 
 u 
 
 N 
 
 |! 
 T 
 
 
 
 * I* 
 
 UREN 
 
 TI0 
 
 USO = UB 
 
 US3 
 
 US4 
 
 US5 
 
 8 
 
 * 9 * 
 
 USI = UM 
 
 US2=JJPE 
 
 US3 
 
 US4 
 
 US5 
 
 VINDICATES THAT THIS LINE DOES NOT GO THROUGH THE 
 EXCHANGE NET, ie: IS BROKEN. 
 
 Figure 3.1.3 
 
 c t^,,- IC< 
 
 Section 3-1.3 - 2/2 
 
3.1. k Standard Signal Sequencing (Control Byte) 
 
 PREN is a Processor's request for an INBUS path, via the Exchange 
 Net, to a Unit specified in the Unit Address bits UAO-U . The unit address 
 bits must be valid before and 100 nsec. after PREN = 1. Then 100 nsec. after 
 PREN = 1, but before any Til signals are generated, the Unit Address lines 
 may be changed to contain other information, i.e. part of the Unit command 
 field. 
 
 Within the Exchange Net, the requesting Processor must compete 
 
 2 
 with other Processors that may be requesting the use of the same INBUS. 
 
 If the requesting Processor wins the priority competition, its identification 
 
 number is copied into the requested Unit's Processor Identification Register, 
 
 contained within the Exchange Net. The contents of this register are used 
 
 by the requested Unit to specify the address of the requesting Processor 
 
 when the Unit desires to respond. 
 
 When the INBUS path has been secured, the Exchange Net sends a 
 reply, ENRP = 1, back to the requesting Processor. Once ENRP = 1, the 
 Processor may transfer information to a Unit any time it desires to do so. 
 
 When the Processor desires to transfer information, it does so 
 by generating a sequence of Til signals: TIIO, Till, TII2, etc. on the Til 
 line. Associated with each Til signal, there is a discrete amount of informa- 
 tion on the INBUS which must be valid during the time each Til signal is valid. 
 The number and duration of Til signals generated, and the nature of the cor- 
 responding information on the INBUS, when the Til signals occur, is Unit 
 dependent . 
 
 When the last Til signal goes to "0", the Processor releases the 
 INBUS by setting PREN = 0. After the requesting Processor releases the 
 INBUS, the Exchange Net will set the Processor's ENRP = 0. 
 
 1. Processors cannot enter into Priority competition for a requested Unit if 
 that Unit is busy, i.e. UB = 1. 
 
 2. That portion of an INBUS that lies within the Exchange Net is used to service 
 a maximum of 3 Units. An INBUS may be requested by a maximum of 6 Processors, 
 
 5/15/69 Section 3.1.1+ - 1/3 
 
UREN is a Unit's request for an 0UTBUS path, via the Exchange 
 Net, to a Processor specified in the Unit's Processor Identification 
 Register. Except for the IU, this register always contains the identifica- 
 tion number of the Processor that last accessed the Unit via the INBUS. 
 The Processor Identification Registers, for all Units except the IU, are 
 set by the Exchange Net when ENRP goes to »l". The IU has the capability 
 of setting its own Processor Identification Register. 
 
 Within the Exchange Net, the requesting Unit must compete with 
 other Units that may be requesting the use of the same 3 0UTBUS. When the 
 0UTBUS has been secured, the Exchange Net sends a reply, ENRU, back to the 
 requesting Unit. Once ENRU = 1, the Unit may send information to the 
 Processor any time it desires to do so. When the Unit desires to transfer 
 information, it does so by generating a sequence of TI0 signals TI0O, TI01 
 etc. on the TI0 line. Associated with each TI0 signal, there is a discrete 
 amount of information on the 0UTBUS which must be valid during the time 
 each TI0 signal is valid. The number and duration of TI0 signals generated, 
 and the nature of the corresponding information on the 0UTBUS, when the 
 TI0 signals occur, is Unit operation dependent. 
 
 When the last TI0 signal goes to "0", the Unit releases the 0UTBUS 
 by setting UREN = . After the Unit releases the 0UTBUS, the Exchange Net 
 will set the Unit's ENRU = 0. Units holds the 0UTBUS (UREN = l) at 
 least until PREN = UB = . 
 
 UB is a Unit status line. UB = 1 during the Unit cycle time, i.e. 
 from the time the first Til signal goes to "l" until the last TI0 signal goes 
 to "0". Unit operation time begins when the last Til signal goes to "0" and 
 ends when the Unit sets UREN = 1 . The unit operation occurs as a result of a 
 Unit's receiving a Unit command. 
 
 UM is a Unit status line. UM = 1 whenever a condition, associated 
 with the Unit threatens or impairs reliable Unit operation. 
 
 3. That portion of an 0UTBUS that lies within the Exchange Net is used to 
 service a maximum of 6 Processors. An 0UTBUS may be requested by a 
 maximum of 3 Units. 
 
 . ., Section 3.1.U - 2 / 3 
 
 5/15/69 
 
UPE is a Unit status line. All Units will check all INBUS bytes, 
 except byte 0, for correct parity (odd) and set UPE = 1 if an error should 
 occur. All storage Units, drums, disks, tapes, core memories, etc. will 
 also set UPE = 1 should a Parity Error occur during a read operation. 
 
 The remaining sets of signals are peculiar to any Processor and 
 a particular Unit. INBUS bit lines 3-8 are the Unit Status field US0-US5 
 respectively. US0-US2 are the standard Unit Status lines UB, UM and UPE 
 respectively. US3-US5 are optional status lines. 
 
 5/15/69 Section 3-lJ* - 3/3 
 
3.1.5 Exchange Net - TF Interface - General 
 
 The main purpose of the Exchange Net - TP Interface Logic 
 is to provide a smooth transition between the TP control sequence logic 
 and the functions required by the Exchange Net. This logic allows the 
 TP control logic to access the Exchange Net using the same basic prin- 
 ciples that it uses when activating a subsequence, namely initiating an 
 action with a task signal and then waiting for either a normal return 
 or an interrupt return. The Exchange Net-TP Interface logic takes care 
 of generating all of the needed control byte signals and of checking for 
 invalid data or malfunctioning units. 
 
 The EN-TP Interface presently can handle requests for the core 
 units, the AU, the PAU, and the Interrupt Unit. The detailed logic for 
 these various requests will be explained in the relevant subsections of 
 Sections 3.2, 3-3, 3-5 and 3.6, respectively. 
 
 The first set of main input control signals are the Exchange Net 
 Control Byte Enable signals, ENMCB/E, ENACB/E, ENPCB/E and ENICB/E. These 
 signals enable the proper logic to generate the unit addresses as shown in 
 Figure 3.1.6. Note that in the case of the core units, the high order bits 
 of the core address must be decoded to determine the unit address. The 
 ENiCB/E signals also turn on the Processor Request for the Exchange Net 
 signal once the unit address has been generated, and also the logic which 
 keeps track of the length of time that the request has been active. An 
 interrupt will be generated if the TP is not answered within a sufficient 
 length of time. If a valid reply is made by the Exchange Net a proper 
 return signal will be generated by the interface logic. 
 
 The second set of input signals to the EN-TP Interface logic are 
 the unit activate enable signals. Only the Interrupt Unit and the AU 
 make use of these signals at the present time. Their purpose is to gen- 
 erate a unit command on certain bit lines in the INBUS control byte. 
 After this has been done the Til line is turned on to indicate to the 
 unit that a valid command is on the lines and that the unit is to begin 
 
 6/23/69 Section 3.1-5 - 1/3 
 
 Starting Core 
 
 Unit Address Bits 
 
 TTni t 
 
 Address 
 
 0123U 
 
 FC (0) 
 
 0101100 
 
 00000 
 
 FC (1) 
 
 0101101 
 
 00001 
 
 FC (2) 
 
 0101110 
 
 00010 
 
 FC (3) 
 
 0101111 
 
 00011 
 
 SC (0) 
 
 01100 
 
 00100 
 
 SC (1) 
 
 01101 
 
 00101 
 
 SC (2) 
 
 oino 
 
 00110 
 
 SC (3) 
 
 01111 
 
 00111 
 
 DC (0) 
 
 100 
 
 01000 
 
 DC (1) 
 
 101 
 
 01001 
 
 DC (2) 
 
 110 
 
 01010 
 
 DC (3) 
 
 111 
 
 01011 
 01100 
 
 IU 
 
 
 
 
 
 01101 
 
 PAU 
 
 
 OHIO 
 
 (not assigned J 
 
 
 01111 
 
 AUO, AU1 
 
 
 10000 
 
 (not used) 
 
 
 10001 
 
 (not assigned) 
 
 
 
 L INBUS bit 20. INDUS bit hk is the least sign fi ^jt f 3 Zl k 
 addresses. All core addresses are contained in INDUS bytes ,3d 
 Fla* bit positions are not used by the core address field. The most 
 significant bit of a FC address (lU bits is bit 27, of a SC address 
 (16 bits), bit 25, and of a DC address (l8 bits), bit 23- 
 
 Figure 3.1-5 - Unit Address Listing 
 
 6/23/69 
 
 Section 3.1-5 " 2 /3 
 
operation. The replies which might come back are unit dependent and 
 are explained in detail in the respective sections for each unit. 
 
 The EN-TP Interface also nas provision for independent setting 
 of the Til lines for those control sequences wnich send long strings of 
 data over the data lines once the accessing of tne unit has been completed, 
 
 As mentioned previously, the EN-TP interface logic will auto- 
 matically generate an interrupt return in the case of a "no reply condi- 
 tion. In this case it will set the proper interrupt indicators and 
 retain the unit address which caused the "no reply". In the case where 
 the unit malfunction or parity error lines are turned on during the 
 access, the Interface logic will set an appropriate temporary storage 
 flip-flop and turn on the access fail signal, ACFAIL. The control 
 sequence will have to test this line and set the appropriate interrupt 
 indicators, if necessary. Tne unit address will still be in the unit 
 address storage register in the EN-TP Interface Logic, however. 
 
 ll/U/70 Section 3.1-5 - 3/3 
 
 
3.2 The Core Storage Units 
 
 There are three types of Core Storage Units used in the 
 Illiac III system. 
 
 1) FC = Fast Core. This type of core storage has a 
 capacity of 16,381+ memory words and a cycle time 
 of TOO nsec. 
 
 2) SC = Slow Core. This type of core storage has a 
 capacity of 65,536 memory words and a cycle time 
 of 3ysec. 
 
 3) DC = Dictionary Core (read only). This type of core 
 storage has a capacity of 262, lUU memory words and a 
 cycle time of 8ysec. (No regeneration is required.) 
 
 All three forms of storage use the same type of accessing procedure; they 
 are distinguished within the computer only by the unit address which is 
 originally given to the Exchange Net. 
 
 In the Illiac III system there are a maximum of four units of 
 each type of storage. Each unit is self-contained assembly consisting of 
 all registers, timing circuits, power supplies, amplifiers, and interface 
 circuitry necessary for operation of the system and compatibility with 
 the Illiac III environment. 
 
 The standard memory word is 80 bits, consisting of 6h data bits, 
 8 flag bits, and 8 parity bits. This corresponds to an Illiac III double- 
 word cell, augmented by parity bits. Each memory word is divided into 
 eight byte zones which may be read and/or written (if not read-only storage) 
 independently of one another. One parity bit is associated with each byte 
 of the word. Correct parity is odd — the sum of 10 bits in each byte, 
 module 2, is 1 if the byte is error-free. 
 
 1. A core memory word = two data fields. A data field = bytes 1,2,3 and 
 k (bits 10-^9) of one INBUS or 0UTBUS word. One core memory word = 8 
 bytes (0-T) = 80 bits (0-79). 
 
 6/24/69 
 
 Section 3.2 - 1/2 
 
The data input to each storage unit consists of 36 information 
 lines plus U parity lines. The input lines may be time-shared and may 
 send the following information: 
 
 1) 18 address hits and 8 read/write control hits 
 
 2) UO Left Word hits 
 
 3) HO Right Word hits 
 
 In addition to the data input lines there are 10 lines for input control 
 information. This control byte (control field) of an INBUS word, is never 
 stored in any Core Storage Unit. The control bytes are used for accessing, 
 controlling data transmission and transmitting Unit status. The Core Storage 
 Units do not require a Unit command. 
 
 The data output to each storage unit also consists of 36 data lines 
 plus k parity bits . The output lines may be time-shared and may send the 
 following information: 
 
 1) kO Left Word bits 
 
 2) HO Right Word bits 
 
 In addition to the data output lines there are 10 lines for output control 
 information. 
 
 All input signals (control and data) are supplied to the memory 
 on the INBUS of the Exchange Net and all output signals are transmitted to 
 the OUTBUS. The requirements for Processors and Memory Units and the 
 detailed bit- to-bit relations of INBUS and OUTBUS lines are given in the 
 following sections along with a detailed explanation of each signal. Then 
 the Processor-Core Signal Sequencing will be described. The last section 
 deals with the various differences between the three types of core units. 
 
 5/15/69 SeCti ° n 3 ' 2 " 2/2 
 
3.2.1 Requirements for Processors and the Core Storage Unit:.; 
 
 When communicating with the Core Storage Units each Processor 
 must be capable of: 
 
 1) Generating a Til sequence TIIO, Till and TII2 on the Til line 
 of the INBUS control byte. 
 
 2) Transmitting in the INBUS data field during TIIO time: 8 Byte 
 Read /Write bits (BRW 0-7) and an address (ik bits for FC, 16 
 bits for SC, and 18 bits for DC). INBUS data byte 1 (bits 10- 
 17) is used to transmit BRW bits 0-7 respectively. BRW bits 
 0-7 are associated respectively with bytes 0-7 of a memory 
 word. INBUS data bytes 2 (bits 23-27), 3 (bits 30-37) and 
 Mbits U0-1+4) are used to transmit all core addresses. Bit kk 
 of an INBUS word is the least significant bit of all core 
 addresses . 
 
 The transfer of information from an INBUS data byte position 
 during Till or TII2 time, into a data byte position of a core 
 memory word, is conditional on the associated BRW bit being a 
 logical 1. If a particular BRW bit is a logical 0, the con- 
 tents of the associated byte of a core memory word is unchanged, 
 
 3) Transmitting information in the INBUS data field, during Till 
 and TII2 time. 
 
 k) Using a sequence of TI0 signals, TI0O and TI01, in the 0UTBUS 
 control byte, to transfer information from the 0UTBUS data 
 field into its buffer registers. 
 
 When communicating with the Processors each Core Memory Unit must 
 be capable of: 
 
 1) Generating a TI0 sequence TI0O and TI01 on the TI0 line of 
 the 0UTBUS control byte. 
 
 2) Transmitting information in the 0UTBUS data field during TI0O 
 and TI01 time. 
 
 3) Using a sequence of Til signals, TIIO, Till, and TII2, in the 
 INBUS control byte, to transfer information from the INBUS 
 data field into its buffer registers. 
 
 1. DC will not require BRW (zone) bits. 
 
 5/15/69 , Section 3.2.1 - l/l 
 
3-2.2 Input to the S torage Units 
 
 Figure 3.2.2/1 shows the positions of the eight read/write bits 
 and the 18 address bits during the time they are on the input lines. 
 Figure 3.2.2/2 shows the positions of the various control signals in the 
 input control lines to the memory units. The purpose of this section is 
 to explain in detail what these inputs mean. 
 
 The Byte Read/Write information comprises eight (8) bits, 
 BRW. , i = 0, 1,..., 7- 
 
 If BRW. = "1", the ith byte of the selected (addressed) 
 memory word is to be treated in the Clear/Write mode. 
 
 If BRW. = "0", the i th byte of the selected memory word is 
 to be treated in the Read/Restore mode. 
 
 The address information comprises 18 bits, a , a , , ..., a , 
 which is interpreted as the integer double-word address. 
 
 !7 i 
 A = Z 2 a. 
 
 i=0 
 
 Note that, as can be seen in Figure 3.2.2/1, the lower most 3 data bits 
 of the 3 byte address, which in the Illiac III system denote the byte 
 address within a double word, are not even used by the memory. However, 
 they are transmitted by the Taxicrinic Processor anyway. 
 
 The first Transfer Information In signal TIIO, going to a "l" , 
 causes the start of the memory operation cycle. It is only accepted if 
 another memory cycle is not already in progress. The TIIO signal must 
 be on for at least 50 nsec. in order to be definitely accepted by the 
 memory unit . 
 
 U/18/69 Section 3.2.2 - 1/U 
 
BYTE READ/WRITE 
 
 ADDRESS BITS 
 
 r 
 
 r 
 
 BYTE I 
 
 BYTE 2 
 
 BYTE 3 
 
 BYTE 4 
 
 10 
 
 5 °> 
 
 o 
 
 o 
 
 CL 
 
 BYTE NUMBER TO WHICH 
 THIS BRW SIGNAL APPLIES 
 
 10 
 
 o 
 
 o 
 
 Q. 
 
 8 
 
 10 
 
 o 
 
 ?», 
 
 5 O 
 
 Q. 
 
 '10 
 
 '13 °I2 
 
 '14 
 
 '15 
 
 16 
 
 '17 
 
 Figure 3.2.2/1 - Input to the Storage Units: 
 At Time TIIO 
 
 o 
 
 ' 
 
 Section 3.2.2 - 2/k 
 
TP-EN 
 Interface 
 
 PREN 
 (none) 
 
 Til 
 
 (not used) 
 
 (none) 
 
 Exchange Net 
 INBUS Bit No, 
 
 
 
 2 
 3 
 1+ 
 
 5 
 6 
 7 
 8 
 *9* 
 
 Description 
 
 Processor Request to Exchange Net 
 Exchange Net ' s Reply to Unit 
 Transfer Information In 
 
 •Indicates that this line does not go through the Exchange Net 
 
 Figure 3.2.2/2 - Memory Unit INBUS Control Byte 
 
 7/1/69 
 
 Section 3.2.2 - 3A 
 
The BRW and address signals are accepted by the memory if they 
 occur (i.e., reach mid-swing) not later than the time of occurrence of 
 the TIIO signal and remain stable for at least 60 nsec. after the TIIO is 
 accepted. 
 
 There will be three Transfer Information In (Til) signals in 
 each memory cycle. They are used to actively gate information to be 
 written from the INBUS into the memory address and data buffer registers. 
 In order of time of occurrence in the cycle, the three signals are desig- 
 nated TIIO, Till and TII2. These signals are always delivered to the 
 Til line. TIIO starts the memory cycle (as stated previously). 
 
 The widths of the Till and TII2 signals which are acceptable 
 to the memory are between kO and 80 nsec. The expected temporal positions 
 of the leading edges of Till and TII2 (when they occur) relative to the 
 leading edge of the TIIO is 120 and 2^0 nsec, respectively. 
 
 The memory contains internal circuitry for generating the Till 
 and TII2 signals. The occurrence of these signals relative to the occurence 
 of the TIIO can be adjusted to any time between the TIIO and the beginning 
 of the restore/write position of the memory cycle in steps of 25 nsec. 
 Till and TII2 gate information into the memory's data buffer 
 register. Till gates data into the left word of core and TII2 gates data 
 into the right word. In either case, the write information presented to the 
 memory on the U0 data input lines must be physically aligned with the memory 
 digit positions in which the input information is to be stored. This means 
 that it is the responsibility of the calling processor to permute the data 
 boundaries so that it coincides with the double word boundaries of the 
 accessed word in memory. 
 
 5/15/69 Section 3 - 2 - 2 " h/k 
 
3.2.3 Output from the Storage Units 
 
 Figure 3-2.3/1 shows the positions of the various control 
 signals in the output control lines from the storage units. The 
 purpose of this section is to explain in detail what these outputs mean. 
 
 The Transfer Information Out line is used to gate the left and 
 right data words of core into user (processor) data buffers. 
 
 The Unit Request's Exchange Net signal is used in the core to 
 retain the 0UTBUS after Unit Busy = 0, i.e. between cycles. 
 
 The Unit Busy signal is generated by the memory and remains in 
 the "l" state from the time of reception of a TIIO signal until TI01 
 goes to "0". 
 
 The Unit Malfunction signal becomes "l" when any measured 
 temperature or DC voltage substantially exceeds expected tolerances. 
 The signal is intended to indicate that a hardware condition clearly 
 prejudicial to continued operation of the memory has arisen. 
 
 The Unit Parity Error signal becomes "l" if the parity of one 
 or more bytes of the Word in the memory data buffer register has erroneous 
 parity at the beginning of the write/restore portion of the cycle. The 
 signal is generated and transmitted no later than 150 ns. after the write/ 
 restore begins. The signal is reset to "0" by the memory unit at the end 
 of each memory cycle, i.e. when Busy goes to "0". 
 
 Two pulses are used, TI0O and TI01. TI0O = 1 means that the 
 left word of a core address is on the 0UTBUS; TI01 = 1 means that the 
 right word of a core address is on the 0UTBUS, TI0O and TI01 are each 125 
 nsec. wide; they are separated by 100 nsec. in time. 
 
 6/2U/69 Section 3.2.3 - 1/3 
 
Memory- EN 
 Interface 
 
 UREN 
 
 ENRP 
 
 TI0 
 UB 
 
 UM 
 
 UPE 
 
 (not used) 
 
 (none) 
 
 Exchange Net 
 OUTBUS Bit No, 
 
 
 
 2 
 3 
 k 
 5 
 6 
 T 
 8 
 *9* 
 
 Description 
 
 Unit reauests Exchange Net 
 
 Trans, information out 
 Unit busy 
 Unit malfunction 
 Unit parity error 
 
 indicates that this line does not go through the Exchange Net 
 
 Figure 3.2.3/1 - Memory Unit OUTBUS Control Byte 
 
 7/1/69 
 
 Section 3-2.3 - 2/3 
 
At information ready time (data register is reliable for 
 
 reading) the core requests (Unit-Requests-Exchange-Net on line of 
 the OUTBUS) the Exchange Net. After the Exchange Net sends a reply 
 
 back to core, (Exchange Net-Reply-to-Unit on line 1 of the INBUS) 
 the core responds. Two TI0 signals, TI0O and TI01 , are sequenced on 
 the TI0 line (2) of the OUTBUS. When TI0O = 1 the left data word is on 
 the OUTBUS. TI0O and TI01 are equal to 1 for 125 nsec. each; they are 
 separated by 100 nsec. 
 
 When TI01 -> 0, Unit Busy -> and the core is ready to be 
 cycled again. Once the response logic of the core secures the OUTBUS, 
 it will not release it until (Unit Busy = 0). (Processor Requests 
 Exchange Net = , on line of the INBUS ). This technique allows a user 
 (Processor) to transfer (read or write) in a burst mode if desired, i.e. 
 the Exchange Net is accessed only once and the INBUS and OUTBUS are not 
 released until all data transfers are complete. 
 
 h/lQ/69 Section 3.2.3 - 3/3 
 
3.2. k Processor-Core Memory Unit Signal Sequencing 
 
 A core cycle is started when TIIO initially goes to a logical 
 1. During the time TIIO = 1 the core address and BRW 0-7 are gated, 
 from the INBUS data field, into their respective buffer registers, within 
 a Core Memory Unit. 
 
 During the time Till = 1, the contents of bytes 1 (bits 10-19), 
 2 (bits 20-29), 3(bits 30-39), and U(bits U0-U9), of the INBUS data field 
 are gated into bytes 0(bits 0-9), l(bits 10-19 ), 2 (bits 20-29), and 
 3(bits 30-39) > respectively, of a Core Memory's data buffer. 
 
 During the time TII2 = 1, the contents of bytes l(bits 10-19), 
 
 2(bits 20-29), 3(bits 30-39), and U(bits U0-U9), of the INBUS data field 
 
 p 
 are gated into bytes U(bits U0-U9), 5(bits 50-59), 6(bits 6O-69), and 
 
 7(bits 70-79), respectively, of a Core Memory's data buffer. 
 
 Till and TII2 will not be required for the Dictionary Core (DC). 
 
 After TII2 time a core is ready to transfer information back 
 to the requesting Processor. A core transfers information back to a 
 requesting Processorby generating a sequence of TI0 signals TI0O and TI01. 
 
 During the time TI0O = 1, the contents of bytes 0(bits 0-9), 
 l(bits 10-19), 2(bits 20-29), and 3(bits 30-39), of a Core Memory's data 
 buffer are contained in bytes l(bits 10-19), 2 (bits 20-29), 3 (bits 30-39), 
 and Mbits U0-U9), respectively, of the 0UTBUS data field. 
 
 During the time TI01 = 1, the contents of bytes U(bits U0-U9), 
 5(bits 50-59), 6(bits 6O-69), and 7(bits 70-79) of a Core Memory's data 
 buffer, are contained in bytes l(bits 10-19), 2(bits 20-29), 3(bits 30-39) 
 and Mbits I+O-U9), respectively, of the 0UTBUS data field. 
 
 1. Conditional on BRW bits 0-3. 
 
 2. Conditional on BRW bits U-7 
 
 U/I8/69 Section 3.2.U - 1/1 
 
 
3.2.6 Exchange Net-TP Interface for the Memory Units 
 
 The purpose of this part of the Exchange Net-TP Interface 
 Logic is to provide the needed control signals so that the memory 
 sequences can easily communicate through the Exchange Net to the core 
 memory units . The memory units are harder to control than the other 
 units for two reasons: 
 
 1) There are more of them. This means more logic is 
 needed simply to generate all of the unit addresses 
 which might be used. 
 
 2) Their timing is much more critical. Since they are 
 essentially synchronous devices the commands and data 
 being sent to them must appear at fairly accurately 
 specified times in relation to one another. 
 
 The first memory-related Exchange Net control signal is the 
 Exchange Net Memory Control Byte Enable signal, ENMCB/E. This signal 
 enables the logic which decodes the high order bits of the core address 
 and determines the unit address which must be placed on the INBUS control 
 byte (see Figure 3.1.6 for the listing of unit addresses). It also turns 
 on the Processor Request to the Exchange Net, once the unit address is 
 valid. At this time it also turns on the TIIO signal so that the memory 
 cycle will begin as soon as the path through the Exchange Net has been 
 cleared. This can be done in the case of the core memories since there 
 are no unit commands which must be sent and the other data needed by the 
 memory (i.e. address and read/write byte) is already valid at the time 
 the path is completed. 
 
 Finally the ENMCB/E signal activates the timing logic which keeps 
 track of the length of time the request has been active. This logic 
 basically consists of a pair of control points which turn the input count 
 signal of an 8-bit IC counter on and off. The desired length of time can 
 
 6/23/69 Section 3.2.6 - 1/3 
 
In 
 
 be measured by waiting for a pre-determined state of the counter 
 order to minimize the logic needed only a few high order hits of the 8 
 bit counter need be used. If the counter reaches this state before the 
 Exchange Net replies, the interface logic automatically cancels the 
 request, turns on the appropriate interrupt indicator, activates the 
 interrupt return signal, and turns on the Exchange Net No Reply signal, 
 XNNRP, which is used to turn off the activated control point. 
 
 Under normal circumstances the Exchange Net will send a reply 
 to the TP indicating that the path to the unit has been completed. When 
 this happens the interface logic will generate the XNRET signal which may 
 be used by the memory sequence to initiate any operations which might have 
 to take place before data from the sequence is returned, or in the case of 
 a write sequence, to initiate transmission of the data to be written. The 
 interface logic also insures that the TIIu signal is automatically turned 
 off an appropriate amount of time after the memory cycle has started. 
 
 Finally the interface logic resets the timing logic and begins 
 timing tne length of time for the unit to respond. If this does not occur 
 within the prescribed length of time, an interrupt is generated in a man- 
 ner analogous to the Exchange Net timing interrupt and tne Memory Unit No 
 Reply Signal, mUNRP, is turned on. In a read access, this signal is used 
 to turn off the control point which is currently waiting to store the 
 returning data into a register. In a write access the signal is sent Dack 
 to a null control point occurring immediately after sending tne second 
 data word to be written. This control point waits for either a data 
 ready signal from the memory unit (signifying that the unit is operating 
 and has reached the write portion of the memory cycle) or the MUNRP signal. 
 
 If more data is to be sent to the memory, as in the case of a 
 write command, it is the responsibility of the control sequence to see 
 that it is placed on the INBUS at the proper time. The Exchange Net Logic 
 can be used to transmit the information once it is on tne cable drivers to 
 
 ; ,, Section 3-2.6 - 2/3 
 
 7/1/69 
 
 k 
 
the Exchange Net by activating the TII/E signal which will turn on the 
 Til signal. The interface logic produces a delayed signal, TIID, which 
 can be used by the control point which generated Til/E to turn itself off 
 after Til has been on for the proper length of time. 
 
 When the last piece of data has been sent to the memory unit, 
 the control sequence must turn on the Exchange Net Release Signal, 
 XNREL wnich will cause the processor request to the Exchange Net to 
 turn off. 
 
 If and when the memory sends data to the TP, it will activate 
 the TIO control line on the OUTBUS control byte. The Exchange Net-TP 
 Interface uses this signal to produce several control signals for the TP 
 memory control sequence. 
 
 Since the read sequence must know which data word is being sent 
 back, i.e. the first or second, the interface logic uses two flip-flops, 
 MDAT1 and MDAT2, which are turned on when the first and second data words, 
 respectively, arrive. These flip-flops are reset the next time an access 
 is made to the Exchange Wet. It is important to note that there is a 
 built-in delay between the time there is valid data on the lines coming 
 from the memory and the time the MDAT1 or MDAT2 signals are sent to the 
 memory control sequence logic. This allows time for the data to be 
 gated into the desired register. The detailed operation is explained 
 in Section 4.1.3.6, the Read Access Control Logic. 
 
 If at any time after the Exchange Net has established the path, 
 the memory unit signals that a memory malfunction or parity error has 
 occurred, the interface logic will set a temporary storage flip-flop and 
 turn on the access failure line, ACFAIL. This signal must be tested by 
 the memory control sequence after it has completed an access. If it is 
 on, the control sequence must set the proper interrupt indicator, using 
 the two temporary storage flip-flops and then transfer control to the 
 Memory Interrupt Sequence. 
 
 7/1/69 Section 3.2.6 - 3/3 
 
3.3 The Arithmetic Units 
 
 The two identical Arithmetic Units (AU's) perform most of the 
 arithmetic operations in the Illiac III system. The exceptions are integer 
 addition and subtraction as well as several unary operations which are 
 executed by the Taxicrinic Processors. 
 
 The prime responsibility of the Arithmetic Units is the high- 
 speed execution of floating point arithmetic operations. The units also 
 provide facilities for integer multiplication and division and conversion 
 from one number-type to another, e.g. floating to long fixed. 
 
 As in the case with the other units in the system, communication 
 with the processors is via the Exchange Net. The AU's interact pri- 
 marily with the TP's although paths are also available between the AU's 
 and the I/O Processor. The Exchange Net assigns an AU to a requesting 
 processor and also makes certain that the results of an arithmetic opera- 
 tion are returned to the processor which initiated the operation. The 
 position of the AU's in the overall system is shown in Section 1.1 in 
 Figure 1.1. 
 
 The execution of an arithmetic instruction begins in a Taxicrinic 
 Processor. If the TP determines that the AU is required to execute the 
 operation, it sends a request to the Exchange Net which locates and assigns 
 an AU which is not in use. The TP then sends the AU a control byte and h 
 data bytes. The control byte contains the instruction variant ( add, subtract , 
 etc.) and the number type (fixed, floating, or decimal). Since in general 
 the operands will occupy more than h bytes , several data transmissions will 
 need to take place. The AU, based on a rapid decoding of the control byte, 
 will load the data as it is received into the proper AU registers. 
 
 5/8/69 Section 3.3 - 1/2 
 
When all of the operands have been sent, the Processor breaks 
 its link with the Exchange Net and the AU executes the instruction. When 
 the execution is finished,the AU notifies the Exchange Net which in turn 
 accesses the TP which made the original request. The result is then returned 
 one word at a time to the TP. If an error condition such as overflow has 
 occurred, a bit is set in the control byte accompanying the result and a 
 flag designating the nature of error is set in the data. 
 
 A more detailed description of the input and output operations in 
 the AU will be given in the following sections. 
 
 The expected execution time for floating point (56 bit mantissa) 
 addition, subtraction and multiplication in 3-6 ysec. For floating point 
 division, the expected execution time will be 8-9 ysec. These operations 
 are not interrupt able. However, POLY, the multi-cycle polynomial evalua- 
 tion instruction can require tens of microseconds and therefore is 
 interruptable by the Exchange Net. 
 
 d 
 
 5/8/69 
 
 Section 3-3 - 2/2 
 
3.3.1 Input to the Arithmetic Units 
 
 The structure of the control byte which is sent to an Arithmetic 
 Unit when its services are needed is shown in the table in Figure 3.3.1/1. 
 A brief description of each signal name is given in the table in Figure 
 3.3.1/2. The nomenclature is consistent with that defined in File No. 790, 
 "A Discussion of Illiac III Processor-Unit Communication via the Exchange 
 Net". 
 
 Assuming that the reader is now familiar with the signal names , 
 the next section describes the signal sequencing for a TP to AU transmission. 
 
 Having recognized the need for an AU, a TP sets PREN = "l" with 
 the Unit Address bits 5-8 of TP-EN Inbus Interface) set to 1111 = 15,q. The 
 unit address must be valid before, and 100 nsec. after, PREN = 1. One hundred 
 nsec. after PREN = 1 but before any Til signals are generated, the unit 
 address lines are changed to contain instruction variant and number type 
 information. 
 
 Within the Exchange Net, the TP is assigned to an AU and the TP 
 identification number is copied into the assigned AU Identification Register 
 (contained within the EN). The contents of this register are used by the AU 
 in returning results to the TP which requested it. 
 
 When the INBUS path to an AU has been secured, the Exchange Net 
 sends a reply, ENRP = 1, back to the requesting TP. Once ENRP = 1 the TP 
 may transfer information to the AU at any time it is available. The TP 
 transfers operands by generating a sequence of Til signals TIIO, Till, TII2 , 
 TII3, on the Til line. Associated with each Til signal is a full word of 
 data and one control byte on the INBUS which must be valid during the time 
 each TII signal is valid. The initial design values for the timing rela- 
 tionship between valid data and the TII signals are given in Figure 3.1.1/3- 
 
 5/12/69 Section 3.3.1 - 1/6 
 
TP - EN 
 
 Exchange 
 
 Net 
 
 AU - EN 
 
 Interface 
 
 INBUS Bit 
 
 
 * 1 * 
 
 No. 
 
 Interface 
 
 
 PREN 
 
 PREN 
 
 (none) 
 
 ENRU 
 
 Til (Transfer Information In) 
 
 2 
 
 
 Til 
 
 IVO = UCO 
 
 3 
 
 
 IVO 
 
 IV1 = UC1 
 
 h 
 
 
 IV1 
 
 IV2 = UC2 
 
 5 
 
 
 IV2 
 
 IV3 = UC3 
 
 6 
 
 
 IV3 
 
 NTO = UCU 
 
 7 
 
 
 NTO 
 
 NTl = UC5 
 
 8 
 * 9 * 
 
 
 NTl 
 
 (none) 
 
 IAUO 
 
 ^Indicates that this line does not go through the Exchange Net 
 
 Figure 3.3.1/1 - INBUS Control Bit Assignment 
 
 5/13/69 
 
 Section 3-3.1 - 2/6 
 
Name 
 
 Description 
 
 Equivalent Name in 
 AU Documentation 
 if Different 
 
 PREN * 
 ENRU * 
 Til * 
 IV 
 
 n 
 
 NT 
 
 UC * 
 n 
 
 IAUO 
 
 Processor Requests Exchange Net 
 
 Exchange Net Reply to Unit 
 
 Transfer Information In 
 
 Instruction Variant, Bit n 
 
 Number Type , Bit n 
 
 Unit Command, Bit n 
 
 (These bits are assigned to 
 
 instruction variant and number 
 
 type bits as shown in Figure 3-3.1/^ 
 
 during TP to AU transmission. ) 
 
 Interrupt AU 
 
 AU Request 
 
 In Info Ready 
 
 Interrupt 
 
 *Standard Signals used in control bytes for all Processors and Units 
 See DCS File No. 790. 
 
 Figure 3.3-1/2 - Description of INBUS Control Signals 
 
 5/13/69 
 
 Section 3-3.1 - 3/6 
 
Data Valid at 
 EN - AU 
 Interface 
 
 TIIO 
 
 FIRST DATA WORD: 
 300 ns 
 
 2U0 ns 
 
 -1 
 
 60 ns_ 
 
 Data Valid at 
 
 EN - AU 
 Interface 
 
 Til n 
 for n > 
 
 SUCCEEDING DATA WORDS: 
 220 ns 
 
 160 ns >h^° nS 
 
 Figure 3.3.1/3 - Relative Timing Between Valid Data 
 on INBUS and Til 
 
 5/19/69 
 
 Section 3.3-1 - U/6 
 
data must be valid longer for the first transmission since the 
 instruction variant and number type must be decoded prior to the loading 
 of the data (the IV and NT codes are given in Figure 3.1-lA). This 
 case is illustrated at the top of Figure 3- 1.1/3- The timing for all 
 successive transmissions is shown at the bottom. In both cases, the 
 data must remain valid at least 60 ns . after the Til is turned off. The 
 minimum interval required between successive Til pulses is only about 20 
 nsec, however in practice the TP cannot supply operands this rapidly. 
 There are no bounds on the maximum duration of this interval. It is 
 anticipated that emperical fine-turning will reduce these duration require- 
 ments by 50$. 
 
 With the exception of POLY, the AU knows how many transmissions 
 to expect based upon a decoding of the order (IV and NT). When the correct 
 number has been received the AU begins execution. In the case of POLY, 
 the TP must maintain the count of the number of coefficients sent. The 
 last coefficient is sent to the AU with the IV field all l's. When the 
 last Til signal goes to 0, the TP releases the INBUS by setting PREN = 0. 
 The Exchange Net in turn sets the TP's ENRP = 0. 
 
 The remaining signal in Table 3.1.1/1 to be discussed is IAU0. 
 This interrupt line is used in the case in which both AU's are performing 
 POLY orders in conjunction with two TP's and a third TP requires the use 
 of an AU. In this case, the Exchange Net will set IAU0 = 1 to interrupt 
 AU number 0. This unit will then return a partial result to the calling 
 TP and next accept the pending order. The TP holding the uncompleted 
 POLY will initiate a request to the EN for an AU to complete the work and 
 the request will be granted when either AU is free. 
 
 6/2U/69 Section 3-3.1 - 5/6 
 
IV Bit No. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 1 
 
 
 
 
 
 1 
 
 
 
 
 
 
 
 1 
 
 1 
 
 
 
 1 
 
 
 
 
 
 
 
 1 
 
 
 
 1 
 
 
 
 1 
 
 1 
 
 
 
 
 
 1 
 
 1 
 
 1 
 
 1 
 
 
 
 
 
 
 
 1 
 
 
 
 
 
 1 
 
 1 
 
 
 
 1 
 
 
 
 1 
 
 
 
 1 
 
 1 
 
 1 
 
 1 
 
 
 
 
 
 1 
 
 1 
 
 
 
 1 
 
 1 
 
 1 
 
 1 
 
 
 
 1 
 
 1 
 
 1 
 
 1 
 
 ORDER 
 
 Not used 
 CYL 
 CVF 
 CVD 
 
 NEG 
 ABS 
 MNS 
 TA 
 
 ADD 
 
 Not used 
 
 SUB 
 
 CPRA 
 
 MPY 
 
 POLY Note : End of POI 
 indicated by 111] 
 
 Not used (Except as 
 indication of end of P( 
 
 NTO NT1 
 
 
 1 
 
 1 
 1 1 
 
 Number Type 
 S. Fixed 
 L. Fixed 
 Floating 
 Decimal 
 
 Figure 3.3.1 A - Instruction Variant Code for Arithmetic Operations 
 
 5/1U/69 
 
 Section 3-3.1 - 6/6 
 
3.3.2 Output from the Ar it timet ic Units 
 
 The structure of the control byte which is returned to a TP 
 from an AU is shown in the table in Figure 3-3.2/1. A brief description 
 of each signal name is given in the table in Figure 3.3.2/2. The nomen- 
 clature is consistent with that described in Department of Computer Science 
 File No. 790. 
 
 When the AU has results to return to the calling TP, the signal 
 UREN is set to 1 and the EN makes a path to the TP specified into the AU 
 Processor Identification Register. This register contains the identifica- 
 tion number of the TP that last accessed the AU. When the return path is 
 made, ENRU (in the INBUS, Figure 3.1.1/1) is set to 1. The AU may then 
 transfer information by placing valid data on the 0UTBUS and generating 
 the appropriate sequence of TI0 signals. An AU returns either 1 or 2 words 
 When the last TI0 signal goes to 0, the AU may release the 0UTBUS by 
 setting UREN = 0. The Exchange Net will then set the AU's ENRU = 0. 
 
 When AU #0 is interrupted during a POLY order, the partial 
 result will be returned to the TP as described above except that MCI = 1, 
 indicating that the order has not been completed. The fact that AU#0 was 
 executing a POLY order is transmitted to the Exchange Net by UMC = 1. 
 
 If a Unit Malfunction such as low-voltage is detected in the 
 course of executing an AU order, UM will be set to 1. An error in the 
 result caused by improper format of operands or results out of bounds will 
 set the BR (Bogus Result) bit. A more specific indication of the nature 
 the error condition is given by the flags of result as shown in Figure 
 3.3.2/3. 
 
 The signal UB is set to 1 by the AU as soon as the pending AU 
 order is decoded. Being a 1 , it prevents the Exchange Net from assigning 
 it to another AU prior to completion of the present order. 
 
 5/13/69 Section 3.3-2 - 1/5 
 
TP - EN 
 Interface 
 
 UREN 
 
 
 ENRP 
 
 
 TI0 
 
 
 UB = 
 
 USO 
 
 UM = 
 
 US1 
 
 UPE 
 
 = US2 
 
 UMC 
 
 = US3 
 
 MCI 
 
 = usU 
 
 BR = US5 
 (none) 
 
 Exchange Net 
 
 AU - EN 
 
 0UTBUS Bit No. 
 
 Interface 
 
 
 
 UREN 
 
 * 2. * 
 
 (none) 
 
 2 
 
 TI0 
 
 3 
 
 UB 
 
 h 
 
 UM 
 
 5 
 
 UPE 
 
 6 
 
 US3 = UMC 
 
 T 
 
 USU = MCI 
 
 8 
 
 US5 = BR 
 
 * 9 * 
 
 (none) 
 
 indicates that this line does not go through the Exchange Net. 
 
 Figure 3.3.2/1 - 0UTBUS Control Bit Assignment 
 
 
 5/13/69 
 
 Section 3-3.2 - 2/5 
 
Name 
 
 UREN * 
 ENRP * 
 TI0 * 
 
 UB 
 
 UM 
 
 UPE 
 
 UMC 
 
 MCI 
 
 BR 
 
 US * 
 n 
 
 Description 
 
 Unit Requests Exchange Net 
 Exchange Net Reply to Processor 
 Transfer Information Out 
 Unit Busy- 
 Unit Malfunction 
 Unit Parity Error 
 Unit Multi-Cycle 
 
 Multi-Cycle Interrupt (to notify 
 TP that the AU it has been using 
 has been interrupted). 
 
 Bogus Result 
 
 (Indicates to the TP that 
 
 the result is incorrect . The 
 
 TP determines the nature of the 
 
 error from the flags of incorrect 
 
 result) . 
 
 Unit Status, Bit n 
 (These standard signals are 
 assigned to specific status 
 signals as shown in JFigure 3.3.2/1 
 
 Equivalent Name in 
 AU Documentation 
 if Different 
 
 Exchange Request 
 
 Out Info Ready 
 
 Parity Error 
 Multi-Cycle in progress 
 
 *Standard signals used in the control bytes of all Processors and Units 
 See DCS File No. 790. 
 
 Figure 3-3.2/2 - Description of 0UTBUS Control Signals 
 
 5/13/69 
 
 Section 3-3.2 - 3/5 
 
H 
 
 gs 
 
 % 
 
 
 E 
 
 ■j 
 
 % 
 
 > 
 
 TSk. 
 
 2 
 
 u 
 
 El 
 
 * 
 
 c? 
 w 
 
 
 > 
 
 E 
 
 > 
 
 2 
 
 ON 
 
 -P 
 
 •H 
 
 pq 
 
 
 
 -P 
 
 m 
 
 o 
 
 w 
 
 k3 
 
 n 
 
 ft 
 
 0) 
 
 •H 
 43 
 -P 
 
 •H 
 
 Ti 
 
 0) 
 
 en 
 pi 
 
 -P 
 
 o 
 
 > 
 
 X 
 
 Jh 
 O 
 -P 
 05 
 o 
 
 •H 
 
 -P 
 
 
 -P 
 •H 
 
 ^ 
 
 O 
 
  UNIVERSITY-TYPE CONTRACTOR'S RECOMMENDATION FOR 
 
 AECM3201 DISPOSITION OF SCIENTIFIC AND TECHNICAL DOCUMENT 
 
 I See Inttrvctioru on Rtvrw Sid* ) 
 
 I. AEC REPORT NO. l^y 
 
 COO-2118-0001 
 
 2. title ILLIAC III COMPUTER SYSTEM MANUAL: 
 TAXICRINIC PROCESSOR VOLUME 1 
 
 3. TYPE OF DOCUMENT (Check one): 
 
 CJJ a. Scientific and technical report 
 
 □ b. Conference paper not to be published in a journal: 
 
 Title of conference 
 
 Date of conference 
 
 Exact location of conference. 
 
 Sponsoring organization 
 
 □ c. Other (Specify) 
 
 4. RECOMMENDED ANNOUNCEMENT AND DISTRIBUTION (Check one): 
 
 Q a. AEC's normal announcement and distribution procedures may be followed. 
 
 □ b. Make available only within AEC and to AEC contractors and other US. Government agencies and their contractors. 
 ~2 c. Make no announcement or distrubution. 
 
 5. REASON FOR RECOMMENDED RESTRICTIONS: 
 
 6. SUBMITTED BY: NAME AND POSITION (Please print or type) 
 
 Bernard J. Nordmann, Jr. 
 Research Assistant 
 
 Organization 
 
 Department of Computer Science 
 University of Illinois 
 Urbana, Illinois 6l801 
 
 JHjlAsywJL J T^U^z^yL J^ 
 
 Date 
 
 November 2k. 1970 
 
 FOR AEC USE ONLY 
 
 7. AEC CONTRACT ADMINISTRATOR'S COMMENTS, IF ANY, ON ABOVE ANNOUNCEMENT AND DISTRIBUTION 
 RECOMMENDATION: 
 
 8. PATENT CLEARANCE: 
 
 □ a. AEC patent clearance has been granted by responsible AEC patent group. 
 
 b - Report has been sent to responsible AEC patent group for clearance. 
 
 1 I c. Patent clearance not required. 
 
# 
 
 % 
 
 \