L I B R.AR.Y OF THE UNIVERSITY Of ILLINOIS 510.84 no. 140-147 copo2 CENTRAL CIRCULATION BOOKSTACKS The person charging this material is re- sponsible for its renewal or its return to the library from which it was borrowed on or before the Latest Date stamped below. You may be charged a minimum fee of $75.00 for each lost booic. Theft, mutilation, and underlining of books are reasons for disciplinary action and may result in dismissal from the University. TO RENEW CALL TELEPHONE CENTER, 333-8400 UNIVERSITY OF ILLINOIS LIBRARY AT URBANA-CHAMPAIGN OCT 5 NOV 2 13S When renewing by phone, write new due date below previous due date. L162 Digitized by the Internet Archive in 2013 http://archive.org/details/usersmanualforpa147stei IC.S4- l^y. DIGITAL COMPUTER LABORATORY /4-7 UNIVERSITY OF ILLINOIS 5P Z^ URBANA, ILLINOIS r Report No. 1^7* USER'S MANUAL FOR PAX AN IBM 7090 PROGRAM TO SIMULATE THE PATTERN ARTICULATION UNIT OF ILLIAC III James H. Stein July 29, 1963 This work "was supported in part "by Contract No. AT(ll-l)-10l8 of the Atomic Energy Commission * This report supercedes File No. 513. Return this book on or before the Latest Date stamped below. Theft, mutilation, and underlining of books are reasons for disciplinary action and may result in dismissal from th» University. University of Illinois Library m a uti3 L161— O-1096 TABLE OF CONTENTS c c^ 2 Page 1. Introduction ........... .^o .... o ...<,. . 1 2. The Simulated Machine ....... .«,.... . 1 3. Input .................... 2 3.1 Pictorial Format Patterns ................ 2 3.2 Binary Format Patterns ............... o . 3 3.3 Pattern Titles ..................... 5 h. Output ...................... 5 4.1 Punched Patterns ............. ...... , 5 4.2 Printed Patterns .................... 6 4.3 Auxiliary Information ........,.<,......, 6 5. Definitions, Notations, Conventions ...... .,.,., . 7 6. Direction Lists .......,..,.......,.',... 8 7. Plane Memory .................... 9 7.1 Plane Names .......... 9 7.2 Plane Size, Coordinates ............ 9 8. Special Registers, Indexing ................. 10 9. Order Code ................... 11 APPENDIX 1 . 25 1.1 Card Format, Symbolic Names ............... 25 1.2 Deck Arrangement .............. 26 1.3 Special Notice ..................... 27 APPENDIX II ... .................. 28 APPENDIX III .......... . .......... 30 APPENDIX IV ........................... 31 APPENDIX V .................... 32 1. Introduction This program (PAX) allows the simulation on the IBM 709^ ot routines written for the Pattern Articulation Unit (PAU) of the Pattern Recognition Computer, currently under construction by this Laboratory. Experimentation with and development of pattern recognition techniques is greatly facilitated by use of this simulator, since routines may be written in terms of basic, pattern-oriented operations of the PAU. For a brief introduction to the concepts which led to the design of the PAU in its present form, and examples of PAU programs in which meaningful pattern recognition is achieved, the reader is referred to "The Illinois Pattern Recognition Computer," by B. H. McCormick, National ACM Conference, Denver Colorado (August I963). This report describes the general structure of PAX and the details prerequisite to use of the simulator. Readers conversant with SCAT may wish to refer also to Report No. 151 by the author for details of the PAX code, particularly if they intend to modify PAX or use PAX in conjunction with extensive 709^ programming of their own. 2. The Simulated Machine The specific pseudo -machine simulated by PAX consists of five units: 1) Plane memory. This is a 51 x 72 x 72 array of bits. Normally one treats this array as a stack of 51 "planes," each plane a 72 x 72 -bit array. However, this memory is sometimes considered as a 72 X 72 = 518^ word memory, comprising 5l8^ Z-words (or "columns" or "stalactites") of 51 bits each. 2) Conventional memory. This memory is used for storing PAX code, 709^ code, direction lists, coordinate pairs, and similar information. 3) An input/output device for transmitting digitized pictorial information (planar arrays of bits), and an additional output device which transmits ancillary information. This report supercedes File No. 513^ January 2k, I963, by the author. Submitted for publication in the Comm. ACM. -1- k) Logical units which perform planar operations such as shifting, "bubbling (see Section 9)^ various set theoretic operations on planes, and standard arithmetic operations. 5) A control unit which interprets a sequence of pattern-analysis - orientated instructions stored in the conventional memory in terms of the basic operations of the logic units, doing all necessary bookkeeping and controlling the operation of the other four units. 3. Input All data input to PAX at the present time is on punched cards . Input pictures from the high resolution oscilloscope of this Laboratory will be possible when that unit is connected to the 709^. Input pictures from a magnetic tape library is also envisaged in the near future.- At present, three types of input are accepted: pictorial format patterns, binary format patterns, and titles. 3.1 Pictorial Format Patterns Patterns of size n x m (n rows with m bits/row) are acceptable if n,m < M = operating mode at time of input, a.nd if n,m are even. An n X m pictorial pattern is punched as a deck of n + 1 cards: a control card followed by n pattern cards. -2- The control card format is; columns 1,2 columns 3^^ columns ^,6 n ("base ten integer) m (base ten integer) If "ID" appears here, then all pattern cards will he checked for an identifying sequence n\:imber in colimns 79^80« Otherwise colimins 79^80 of the pattern cards are ignored. Pattern title (see Section 3.3 below). Arbitrary. The n pattern cards follow the control card, the i row of the pattern (from the top, i.e., starting with the largest y-coordinate) being punched on the i row card, 1 < i < n. The pattern card format is: colimns 7-72 columns 73-80 columns 1 m columns m + 1 - 78 columns 79; 80 Row of pattern. Any non-blank Hollerith character is read as a one, a blank is read as a zero. Arbitrary. Arbitrary if no sequence check is performed. Otherwise the i card must have the base ten integer i punched here, right-justified. 3.2 Binary Format Patterns Although the pictorial format above is easy to hand-punch and to read, it has the disadvantage of requiring a large number of cards per picture. For this reason a more compact format is provided. -3- Input patterns which will "be used continually on different runs should be punched in binary format. (This is most conveniently accomplished by hand- punching the pattern in pictorial format originally, then causing PAX to repunch the pattern in condensed form for subsequent use.) Patterns in binary format are of size 36 x 36 bits (requiring two cards) or of size 72 x 72 bits (requiring seven cards). The format (standard column binary 709^ card) is: Word 1 Column 1 Rows + through 6 Rows 7,9 Row 8 Column 2 Rows + through 3 Rows h through 6 Rows 7 through 9 Column 3 Rows + through 9 Words 2-23 Columns 73-80 Arbitrary Punched Blank Arbitrary If Blank, indicates that pattern is continued on next card. If punched, indicates that this is the last pattern card. Blank Number of words (rows of pattern) on card, least significant bit in row 9« Rows of pattern, top rows first, right-most bit is least significant bit of word Arbitrary 4- 3.3 Pattern Titles Frequently, input data is identified by a title, and when output is generated it is desirable to label it "with this same title. There is a region of the conventional memory called the "title buffer" which contains alphanumeric information which may, at any desired time, be output on the printer. The title buffer is automatically refilled (from the control card) when- ever a pictorial fonnat pattern is read in. In order to permit titles to be assigned to binary format patterns also, the title buffer may be refilled by reading a TITLE card, whose format is: columns 1-5 column 6 ■ colijmn 7 colimins 8-72 col\jmns 73-80 "TITLE" is punched Blank Carriage Control Character, one of "blank", "0% "-'', "1", "2", "V, or "6". (See Section I+.3.) Alphanumeric title. Arbitrary \. Output All data output from PAX at the present time is on the line -printer or on punched cards. Output on the high resolution oscilloscope of this Laboratory will be available when that unit is connected to the 709^ • The output information presently available is: h.\ Punched Patterns Patterns from the plane memory may be output in the binary format described in Section 3.2. -5- 4.2 Printed Patterns Patterns from the plane memory may be printed on the line -printer as a rectangular array. Printing characters may be specified by the programmer^ and a single printed pattern may be either a replica of a single plane in memory, or a composite determined by up to five separate planes. A page eject is executed by the printer immediately before a pattern is printed. ^.3 Auxiliary Information The nimiber contained in any PAX index register and the octal number contained in any 709^ location may be printed at any time. The printer is triple- spaced before printing, and the number is preceded by the comment "INDEX REGISTER K -" or "0CTAL W0RD", whichever is appropriate. The PAX orders which do this are INDEX and D0W (see Section 9)- PAX orders PRINTT and C0MMEN may be used to print a string of alpha- numeric characters. The former prints the contents of the title buffer (see Section 3.3); whereas the latter prints a comment determined by the instruction argument. "In either case, the first character of the string is not printed, but is detached to control the preprint skip of the line-printer. This character must be one of the following: blank 1 2 k 6 single space double space triple space sheet eject skip to next half page skip to next quarter page skip to next sixth page 5. Definitions, Notations, Conventions The following conventions will obtain throughout this report: k a positive integer which specifies one of seA/eral index registers. XRk designates an IBM 709^ index register (l < k < 7)« IRk designates a PAX index register (l < k < 25). c an integer usually associated with the contents of an index register. V(lRk) the integer contained in an index register (i.e., the value of IRk) . n,in positive integers. p a positive integer which specifies a number of planes d a non-negative integer (O < d < 8) which specifies a direction in a plane. The grid to the right indicates the specific directions with reference to the central point. (zero) indicates the null- direction, i.e., the central point itself. -d the niimber associated with the direction opposite to that specified by d. d = -> -d = d/0-*-d=l+ [(d+3) modulo 8] d-neighbor the d-neighbor of a point is the adjacent point in the d-direction. direction list a list of from 1 to 9 direction numbers, stored in the conventional memory and used as an operand by some instructions . -7- ^ 3 2 5 1 6 T 8 M designates the mode of operation (see Section 7.2) M = 36, 72. Mi designates a, particular plane of the memory (see Section 7,l) (O < i < 50)„ P designates a generic point in an array of bits, independent of any particular plane in memory, ioe., denotes a generic z-word of the plane memory. P(Mi) designates the bit in position P of plane Mi^ i.e.^ a generic bit of the plane Ml. 6. Direction Lists Some instructions perform a basic operation iteratively, where the operation is direction-dependent, the direction changing for each Iteration. These instructions require a "direction list" for the number of iterations and sequence of direction nimbers . A direction list may contain up to nine direction numbers, not necessarily distinct. A direction list is analagous to a constant: a programmer may interleave his PAX program with direction lists (see description of DL in Section 9) i^- ■'^■iie same way that nimierical constants are placed within a program for a conventional machine . Normally, a direction list will be given a symbolic name. The direction list may then be specified as the argument of an instruction by giving its name. However, if several direction lists are stored in the memory without intervening material, then only one of these direction lists need have a name. The others may be referred to by indexing (see Section 8). Certain sets of direction numbers will be used frequently in PAX programs. For this reason a few direction lists are automatically constructed by PAX, and may be referred to by their names without defining the names: -8- name of list directions DLd (0 < d < 8) d DL15 1, 5 DL26 2,6 DL37 3,7 DL48 k,Q DIALL 0,1,2,3,4,5,6,7,8 DLSUR 1,2,3,4,5,6,7,8 7. Plane Memory 7.1 Plane Names The 51 planes of the memory are designated by the symholle names MO, Ml, M2, ...,M50. Any plane may be specified as an argument of an instruction by giving its name (see also Section 8). However, programmers may wish to use more mnemonic names for planes than the unexciting Mi. Any plane may be renamed by use of t/he RENAME instruction (see Section 9)« A plane may be renamed as often as desired, and may always be referred to by any of its names. A plane need not be renamed before it is referred to by its new name, provided only that the plane must be properly renamed somewhere within the PAX program. 7.2 Plane Size, Coordinates PAX functions in either of two operation modes, 36-mode and 72-m.ode. The operating mode determines the effective size of the memory planes, eitner 36 x 36 bits or 72 X 72 bits. PAX will operate in 36-mode unless otherwise directed by ""/he programmer (see description of SETM0D in Section 8). Instructions which reference the plane memory have faster execution times in 36-mode. -9- It Is sometimes convenient to specify individual points within a plane by- coordinates. For this purpose the lower-left "bit of a plane has coordinates (O^O), the upper-right bit of a plane has coordinates (M-1,M-1) where M - 36 or 72, the current operating mode of the simulator. A coordinate pair may be stored in a single word of the conventional memory by use of the C00RD instruction. Two instructions^ WRITEP and LISTXY^ construct or refer to such coordinate pairs . 8. Special Registers, Indexing Associated with the control unit are 25 special registers, called IRl, IR2, . . ., IR25. The contents of these registers are under program control, and are referenced by the control unit during the execution of some instructions. Since the control unit occasionally modifies registers IR21-25; only the first twenty should be used by the programmer. One use of the special registers is that of counting. Since some jump instructions are conditional upon the special register contents, the prograrmner may write loops conveniently. Seven of the registers (IRI-7) can be used for indexing, which is the modification of an instruction argument at the time of execution. Let NAME be an argument of an instruction (frequently NAME will be the symbolic name of a plane or direction list, but it may also be an integer or direction number). If modification of the argument is per-missible, then an asterisk (*) will appear with the argument (e.g., NAME ) in the instruction description (see Section 8, Appendix l). If NAME is to be modified by special register IRk at the time of execution of the instruction, then it must be written "NAME, k."' If it is not to be so modified, it must be written as if it were to be modified by the (fictitious) regist^er IRO, i.e., "NAME,0" or just "NAME,". Observe that the comma following NAME in this case is not the comma which separates NAME from the following argument. Hence, if a string of three arguments is to be written without modification, the correct form is: NAMEl, , NAME2, , NAME3 -10- Assimie tha.t V(lRk) = c at the time of execution of an instruction with the argumenf'NAME, kV . If NAME is a name of plane Mi^ then the plane actually referenced by the instruction will be M(i+c). If NAME is the name of the n direction list (see Section 6), then the direction list actually referenced by the th instruction will be the (n+c) direction list in the list. Finally, if NAME is an integer, say d, then the integer actually used by the instruction will be (d+c). c is not restricted to positive values. 9. Order Code The following instructions are available in FAX. They should be punched, one order per card, in SCAT format (see Appendix l). Some instruction arguments may be modified by index registers IRI-7 at execution time (see Section 8). These arguments are indicated by an asterisk {*), which always implies a comma in addition to those shown explicitly. A plane argument is designated in the descriptions as Si, Wherever an Si appears, the programmer will write the name of some plane. Similarly, the name of a direction list must replace "DL" wherever it appears, and a symbolic name (defined somewhere by the programmer) must replace ''NAME." When an operation is described in terms of a generic bit P(Si), the operation occurs in parallel on every bit in the Si plane. If an instruction has several planes among its arguments, these planes need not be distdnct (unless specifically forbidden) . READ SI* Read a pattern from cards (see Section 3) • If the pattern is in binary format, then the pattern and plane size (either 36 x 36 or 72 x 72) is determined solely by the input cards, and not by the operating mode M at execution time. The pattern will replace the current contents of plane SI. -11- UNIVt.>SITY OF If the pattern is in pictorial format, then it ■will be stored in the center of plane SI, with a margin (if any) of zeroes. In this case the operating mode M is significant in that it determines the size (36 x 36 or 72 x 72) of the plane SI. If either n or m (as punched on the control card) is odd or is greater than M, PAX will print the comment "ERR 1" a,nd program execution will be terminated. If the control card indicates that the input card sequence is to be checked, and if the input cards are not in proper sequence, then PAX will print the comment "EKR 2" and program execution will be terminated. Columns 7-72 of the ID card are stored in the title buffer in the conventional memory, from which they may, at any later time, be printed as a comment by use of the PRINTT instruction. PUNCH Sl^ Punch the plane SI as a 36 x 36 or 72 x 72 -bit pattern, depending upon the current value of M. The pattern will be in binary format (see Section 3),- and will consist of two or seven cards as M is 36 or 72. READT Read Title: Read a TITLE input card, placing the title (columns 7-72) in the title buffer (see Section 3«3 for a description of the TITLE input card) . If the next input card is not a TITLE card, then PAX will print the comment "ERR 5" and program execution will be "nermljiated. PRINTT Print Title: The contents of the title buffer are printed on the line-printer. The first character of the title must be "blank!', "0!", "-.'-', "1", "2", "^"', or '"6,"i, and will determine the pre-print skip of the llne- printer (see Section ^.3). ■12- LETTER (C„C-C_...C ) 12 n I Reset the print characters to be used dioring future occurrences of the instructions PRINT and CPRINT. C. is any Hollerith character 1 except "(" or " )'S 1 < n < 31. If n < 31, then C, is taken as blank ("b") for n < k < 31. PAX will use the print characters bl2A3BGDi^EFGHIJK5LMN0PQRSTUVWXYZ until the first occurrence of a LETTER instruction. Thereafter, the print characters are determined by the most recently executed LETTER instruction. The number n need be no larger tha,n necessary to specify the n\;imber of print characters required by subsequent output instructions. PRINT uses only C„ and C . CPRINT uses C^^ through C/^p , \, where p is the number of planes examined. PRINT SI ,n,m Print the central n x m bit portion of the plane SI, using characters C for zero and C for one. (See LETTER, above.) If either n or m is odd, or is greater than M, then PAX will print the comment "ERR 3" and program execution will be terminated. CPRINT p,n,m,Sl*,S2*,S3*,Si|*,S5* Combined Print: Compare the central n x m portions of several planes and print a composite picture from them, p designates the number of planes to be examined, 1 < P < 5- The planes Sl,S2,S3,Sij-,S5 are assigned "weights" of 1, 2, k, 8, l6 respectively. The print character C (see LETTER, above) used in printing K. a position P of the output pattern is determined by the sum k of the weights of the planes for which the bit in position P is a 1. If either n or m is o.dd, or is greater than M, then PAX will print the comment "ERR 3" and program execution will be terminated. ■13- ► SHIFTD # * -x- SI ,d ,n Translate the plane SI n bits in the d-direction. Bits of the plane shifted off the "edge" of the plane are lost. Bits entering the plane are zero. < n < M. SHIFT SI ,x,j Translate the plane SI x bits to the right and y bits upward. Bits of the plane shifted off the "edge" of the plane are lost. Bits entering the plane are zero. -M < x, y < M (M is the mode n"umber, see Section 6.2) B00L0P SI*, TYPE, S2*, S3*, BAR Boolean Operation: TYPE is one of CLEAR, EQUAL, AND, 0R, or EX0R. This is a Boolean operation, bitwise, on one, two or three planes of the memory (not necessarily distinct). The specific operations are as follows : SI, , CT.EAR SI = zeroes SI, ,CT,EAR, ,,,,BAR SI = ones SI,, EQUAL, S2 SI = S2 SI,, EQUAL, S2,,,, BAR SI = S2 SI,, AND, S2,, S3 SI = S2 ^ S3 SI,, AND, S2,, S3,, BAR SI = S2 ^ S3 S1,,^R,S2,,S3 SI = S2 ^ S3 S1,,0R,S2,,S3,,BAR SI = S2 ^ S3 S1,,EX0R,S2,,S3 SI = (S2 /^ S3) ^ (S2 ^ S3) S1,,EX0R,S2,,S3,,BAR SI = (S2 ^ S3) N/ (S2 ^ S3) -ih- BUBBLE p ,S1 ,c The p planes Mi, M( i+l), c . . jM(i+p--l) undergo e cycles of bubbling. SI is a name for Mi;, arA C;,p are positive integers. A cycle of bubbling is a process whereby, whenever a zero-bit of a plane (Mk) has a one-bit directly above it (in plane M(k+l)), the two bits "exchange places." Since several cycles of this process cause zero -bits to drift upward through the plane memory, the name "bubbling-' is descriptive « A precise formulation of a single cycle of bubbling is the operation whereby every bit p(Mk) in the plane Mk is replaced by the value [ P(M(k+l)) ' P(Mk) ] -^ [ ¥(mj • p(M(k.l)) ] This process occurs in parallel for k = i, i+1, . . ., i+p-1. When applying the formula P(M(i-l)) is assumed to be zero, and P(M(i+p)) is assumed to be one. * ■¥: ^ WRITE SI ,x ,y Make the bit in the position (x,y) of plane SI a one-bit. < x,y < M. WRITEP SI*, NAME* Make the bit in the position (x,y) of plane SI a one-bit, where the coordinate pair (x,y) is contained in location MME of the conventional memory. C < x,y < M INDEX TYPE, k, c TYPE is one of SET, INCE, DECR, TRANS, DSPLY, designating one of the following operations: (l < k < 25) -15- SET, k, c INCR, k, c DEGR, k, c TRANS; k, c DSPLY^k Set V(lRk) equal to e Increment V(lRk) by c Decrement V(lRk) by c Set V(lRk) equal to V(lRc) Print V(lRk) (See Section ^,3) del <235) (|cl <235) del <235) (1 < c < 25) JUMP TYPE; NAME; TEST; c This instruction causes PAX to take as its next instr-j.ction the order with the symbolic name NAME (defined elsewhere in the code by the progrsjraner) if and only if some condition is satisfied. The specific condition or kind, of jump is deterTEined by tiie a^rgionent TYPE, which is one of UG; NULL; N0NULL; ZER0; N0ZER0; LESS; EXACT, M0RE; LINK; RETURN, TEST is the name of a plane or the number of an index register to be examinedo If c is specified; |c| < 2 The types of jumps are; 17 UC;NAME NU'LL; NAME; SI N0NULL; NAME:; SI ZER0, NAME; k N0ZER0; NAME; k LESS; I^AME; k; c EXACT; NAME; k, c M0RE; NAME , K; c LINK; NAME; k RETUiRN; ; k Jump unconditionally „ Jump if SI contains all zeroes. Jump unless SI contains all zeroes , Jump if V(IP,k) = 0, Jump if V(IEk) / 0, J-jmp if V(lRk) < c. Jump if V(lRk) = e. J'ump if ¥(lRk) > c. Plant a link in IRk; then jump. (This is analagous to the 709^ instruction TSX N/sj^iE;k) J^omp according to link in IRk, (i.e.; jump to the instruction following the LINK JUMP which, set the link in lEk. This is analagous to tne 709^ instruction TRA l,k) -16- SBTM0D M Reset the operating mode of PAX to M^mode (see Section 6.2) M - 36,72. HALT FjMP Stop execution. If "DUMP"' is -written, then the 709^ PAX program (including user's program) will te d'omped. This is sometimes useful in code -checking a PAX program. m (FG^C2C2C^...C^) This order causes the comm.ent G,C^..<,G to be written on the line- 12 n printer. The comment must not exceed 65 Hollerith ehai-acters. It; must be preceded by a format control character, F, which determines the pre- print skip of the line -printer . (See Section 4. 30 This instruction has two main uses. One is during code checking, where an output comment ascertains that the program, has reached a certain point. The other is the labeling of output patterns. Since PRIIMT and GPRIWT both perform a sheet eject before printing, a pattern label will normally be given after the output order, not before. D0W mm Display Octal Word: During code checking it is occasionally helpful to know the contents of some 709^ word during the execution of a PAX program. This instruction triple-spaces the line-printer, then prints the comment "0GTAL W0RD" followed by the 12 octal digits of the location NAME. RENAME i,NAME The plane Mi (O < i < 50) is assigned the name NAME. ■17- G00RD x,y Tne coordinates x, y (O < x^ y < 7l) are written in a 709^ word„ Thus, the C00RD instruction is a means of introducing "constants" into a PAX program code, just as DEC or 0CT may "be used to introduce constant's into a sta,ndard. 709^ SCAT code., LISTM NAME;, n This instruction defines a region of the conventional memory in ■which lists of coordinate pairs may be stored (by the instruction LISTXY) . KAME is the symbol which, wher. given to LISTXY as an argument, specifies this list, Tae list cannot accomodate m.ore than n coordinate pairs. As m.any LISTMs as desired may be used, but they must have different NAME-s LISTXY SI*, NAME, n* List X, y Coordinates: This instruction places in miemory, starting at location NAME, a list of the coordinate pairs which correspond to one- bits in the plane SI, If n = 0, or if n is not specified, then all one -bits in SI are listed, and the number of such points is placed in IR21. If n > 0, and SI contains fewer than n + i one-bits, then all black points in SI are listed, and the number of sucn points is placed in IR21. If n > 0, and SI contains more than n one -tits, then the fi.:rst n points in SI are listed, and n + 1 is placed in Ihc^i, Tne ordering of points in a plane begins with (0,0), and scans left -"o -right, bottom-to -top (e,g,, tne points (0,0), (0,it-), (0,5)^ (1,3); (1^9) a^? iJ^-i- ascending order). -18- ^ 1' 2'^ '^ n DL is a pseudo- instruction which generates a special kind of constant called a "direction list"' (see Section 6), n is the number of directions in the list (O < n < ^) , and d^nd^. ,.„,d denote the —■ — 1: d ' Ti sequence of direccion n^ombers. The d. need not "be distinct. This pseudo-instruction should be given a symbolic name (unless it occurs in a sequence of DL-instructions, see Sections G, 8) so that other instructions may refer to it as an operand. . . DLT^^IR DL ^k,NAME Direction List to Index Register: This eccentric Instruction has a slightly different effect during each cycle of a program loop. Let DL be a direction list "with m - 1 direction n^jmbers. d^.d.. ....d ' 1^ 2' ' m-1 On the 1" ' execution of DLT0IR, V(lRk) is set equal to d ;, tne first th direction in the list DL. On the i'"' execution of DLT0IR;, 1 < i < m^ V(lRk) tih is set equal to d,, the i direction in the direction list referenced by the first execution. The m"'^ execution of DLT0IR beha.\Aes as a JUMP UG, MME; indicating that the direction list in question has been exhausted. Notice that;, for the first m executions^, the same di::'eetion list is always referenced^ i.e., even if the index register- which modifies DL is changed, the effective direction list, is not. Furthe:rmore, the value of m is determined by the number of directions in that list. After m. executions the entire sequence may be repeated: if it is repeated for a different direction list (because of indexing), the new sequence miay have a differ-ent value for m. If a program contains several DLT0IR instructions, they will all operate completely Independently of each other. -19- An example will Illustrate the use of DLT0IR: Suppose that a SHIFTD Instruction occurs in a sequence of instructions which is to be repeated six timeS;, and that the shift is to "be in the direction- 2, 3;)^; 2, 8^1 on the 1 , 2^ ;,o,.,6' execution of the instruction, respectively. The program could read: START ------ DLT0IR DI5PEC, , 1 , EXIT SHIFTD SI, ,,7,1 JUMP UC, START DLSPEC DL 6,2,3,^,2,8,1 EXIT ------ -x- -^ ')f -)f KEADZ NAME,x ,y ,]d , (Sc^Sl, . . ., Sn) Read Z-word: Let NAME be the symbolic name of a 709^ location Lned by the ] coordinates x,yo (defined by the programmer), and let P be the position determined by Then the (b4i) bit (modulo 36) of NAME is set equal to P (Si), for < i < n. Other bits of NAME are unchanged. < x,y < M, < b < 35, < ^^ < 1''^ • If x,y > M, PAX will print the comment "EE^R 6*' and program execution will terminate , All planes Si will be modified by the same index register. -20- MARK DL*,S1*,S2*,S3 Mark points: Set P(Sl) - 1 if there is a. P'(S2) = 1 such that P is a d-nelght)or of P' for some d included in the direction list DL, and if P(S3) = 1. Otherwise set P(Sl) = 0. If S3 is not specified, the restriction that P(S3) = 1 is ignored. CONNEC DL ,S1 , S2"*^, S3 Connect: Set P(Sl) = 1 if there exists a set {P.: < i < n] of positions containing P such that P (32)-^ 1. P. (S3) = . 1« and for every P. there is a O J 1 i 1 d included in the direction list DL such that P, is a d-neighbor of P. -, . 1 1-1 Otherwise, set P(Sl) = 0. If DL contains only one direction (or a single direction and its opposite), the positions {P.} will form a straight line, or "chair,;,." If SI = S3 this operation gives incorrect results. Let c be the smallest integer such that if P(Sl) = P'(S2) = 1, then P may be reached from P' in c steps or less, where each step is taken in some d-direction included in DL. After execution of the C^NKEC order, y(lR2l) = c. In the next two orders, REL is one of LT, LE, EQ, GE, GT which mea,n <} <, =, >, > respectively, and defines a relation to the integer n. TMARK DL*,Sl*,S2*,S3*,REL,n Set P(Sl) = 1 if P(S2) = 1 and If the n'omber of directions d included in DL for which P|-,i(S3) = 1 satisfies the relation REL for n. i^r a] denotes the d-neighbor of P.) If the directions in DL are not all different, then d-neighbors of P(S3) will be counted as ma.ny times as d appears in DL. n > -21- ^ 4f- -V- -V- TCHAIN DL ^Sl ,S2 ,S3 ,REL;,n Set P (Sl) = 1 if there Is a set {P. : < 1 < m} of positions such that P (S2) = 1;, P. (S3) = 1 if i / m,, P (S3) - 0, P. is the d-neighbor m of P. T, and m - 1 satisfies the relation PEL for n. Otherwise set P(Sl) = 0. DL is a direction list containing the single direction d„ If DL contains more tnan one direction n"umberj incorrect results will occur „ BOOFUN SI*, S2*, S3"**', f function) Boolean Function: Let some "simple" (see below) Boolean function of nine or fewer variables be written wir.hin the parentheses, where "^,he variables have names 0, 1, 2, 3; • • •;.8. The domain of the function is the plane Mi where for any position P, the variable d is the d neighbor of P(Mi) (i.e., P|-^^(Mi)), Ttie BOOFUN instruction sets P(Sl) = if P(S2) = 0, otherwise P(Sl) is set to the value of the Boolean function at position P of the plane S3c A ''simple" function is defined as one which may be obtained from a union of product teims by first complementing some (or all or no) varia,bles within the product tenns, then by complementing some (or all or none) of the product terms. Examples of simple functions are: v/ (l '^ 2) V (3 ^ ^ ^ 5) ^ (6 ^ 7 ^ 8) 0^/(i^2) ^(3^^^^^ 5) ^(6^7^ 8) ^ (1^2,) ^ (3 ^ ^ ^ 5) ^ (6 ^ 7 ^ g) The function -^ (1 ^ 2) ^ 3 is not a simple function, but is equivalent to \/ (l '^ 3) ^ (2 ^ 3)^ which is simple. The function (l -^ 2) ^ (3 ^ '^) is not equivalent to any simple function. In writing the function, product terms are separated by "+'' signs. A complemented variable is indicated by a '•/''' preceding the variable. A complemented term is indicated by a "'/■'' following the ter-m. A '*$" must terminate the entire expression. The above four examples could be written: -22- B00FJN Ml, ,M2,,U3,A 0+12+3^ 5+678$ ) B00Fim M5; ; M5; , M5, , ( O+/12+3/4 5+67/8$ ) B00FUN Ml, 1, M7, , M7, , ( 0+/12/+3/4 5+67/8/$ ) B00FUTJ Ml, ,M1, ,M1, , (0+/l3+/23$) At times the programmer may desire to perform operations which are not realizable within the framework of the PAX order code. Use of the two instructions below causes suspension of PAX a.ctivity while the programmer's own 709^ code is executed, (if the 709^ code is to modify PAX or to refer to information stored within the PAX program, the user should refer to Report No.1'^1, by the author, for the necessary information concerning the PAX code,) J709i4-M n Jump to 709^ Mode: The next n cards will contain 709^ instructions rather than PAX instructions, and will be executed starting with the first. When the instruction I'M PAX is encountered, execution of PAX orders, ^.t beginning with the (n+l)"' ' card after the J709^M order, will be initiated. The 709^ code must not alter the contents of XR7 (unless the programmer is intentionally changing the PAX instruction counter',), J709i+G NAME Jump to 709^ Codes Execution of 709^ instructions will begin with the order at location NAME>. When the inst^ruction TRA PAX is encountered execution of PAX instructions will begin with the order immediately following the J709^C order. The 709^ code should not alter the contents of XR7 (except with malice of forethought). -23- The following two instructions may be used to time portions of PAX programs : TIME, TIMES Let the times of execution for subroutines A^B, ...^K be required. Execute the subroutines in the order TIME, A, TIME^B, TIME, ..., TIME; K, TIME, TIMES. When the TIMES Instruction is encountered a list of execution times for subroutines A,B, ,o.,K, accurate to 1/30 second, will be printed. No more than 200 TIME orders should occur without an intervening TIMES order. -2k- APPEOTDIX I I.l Card Forma,t^ Symbolic Names To use PAX; a program of PAX orders Is punched on cards^ and will be read into the conventional memory » Most users will probably also include direction lists^ coordinate pairsp and 709^ programming with this PAX code. All of these will be punched in SCAT format, i.e,; instruction names will begin in col\jmn 8, and instruction arguments will begin in column l6. Instruction arguments are wr-itten in an ordered sequence (as given in Section 9 and Appendix IV), separated by commas, and without intervening blanks , Any information which occurs after the first blank in the variable field will be treated as commentary which is listed along with the program instructions, but is otherwise ignored. Zero arguiT'ents need not be i^rritten explicitly. For example, 3, A, 0, BETA, 0,0 3, A,, BETA,, 3, A,, BETA ire all equivalent. However^ 3, A, BETA 3^ A, BETA are not equivalent to the above or to each other. A symbolic name m.ay be assigned to any PAX or 709^ instructdon, direction list, or coordinate pair by punching a legitimate SCAT symbol in column 1. A SCAT symbol is any string of from one to six non-blank Hollerith characters, at least one of whicn is non-numeric, and none of whicn is ''f", "-", "*", '"/■', "$", or ",". In addition, the string must not be any of those listed in Appendix II. -25- 1.2 Deck Arrangment The programmer will supply his own Order Deck in SCAT format, as described above. This deck is the program code which PAX will execute, (it may also contain 709^ coding to be executed in conjunction with the PAX code. See J709^M, J7094G in Section 9-) The first card of the Order Deck should be the first PAX instruction which is to be executed. Otherwise^ the sequence of cards is arbitrary (apart from the obvious restrictions that instructions^ both 709^ and PAX, will be executed in sequential order), PAX decks may be obtained from the secretary at l6l ERL. To run a program the following steps are necessary: 1, Insert the Order Deck just above the last card of the PAX decko 2. Place two ID cards on top of the PAX deck. These are for use by the University of Illinois Monitor System, and their format is specified by the Digital Computer Laboratory . 3c If input data is required, it follows the PAX deck. It should be preceded by a Monitor System Data Control Card ("$DATA" punched in column l) , h. The entire deck is now ready to run on the University of Illinois 7094 System. 16- I 1.3 Special Notice Until the University of Illinois Executive System is equipped with memory protect;, the internal clock on the 709^ is normally off. Thus, if the instructions TIME^ TIMES are to be used, the first occurrence of TIME should he preceded by the instruction GI^CKo This instruction causes a comment to be m^ade on the 709^ on-line printer, instructing the operator to turn on the internal clock. APPENDIX II RESTRICTED SYMBOLS The following symbols are defined internally "by PAXo The programmer must not attempt to define these symbols (although he may refer to them); since such an attempt will result in multiple -valued symbols and his program will not execute. AND BAR BjS^FUN BUBBLE CLEAR CL^CK CjZ^MMEN CjZ^NNEC DECR DLO DLl DL8 DL15 DL26 DL37 DL48 DLALL DLSUR DLTi25lR D0W DSPY DUMP EQ EQUAL EXACT EX0R FXM^DE GE GT INCR IR J709^c J7094M JUMP LE LESS LETTER LINK LISTXY LT MO Ml M50 MARK Mj^DIFY mj25dsel M0RDER M0RE N0NTJLL NjZ5ZERjZ5 NULL jZ^R 0RDERM 0RDERS PAX PRINT PRINTT PUNCH READ READT READZ RETURN SET SETM0D SHIFT SH,IFTD TCHAIN TIME TIMES TMARK TFLANE TRANS UC WRITE WRITEP ZER^ -28- Most of the above symbols are names of planes^ direction lists, or operations. A few are operation TYPEs. The rest are useful In referring to Important locations In the PAX program, as described In Report No, 151= I -29- APPENDIX III ERROR NOTATIONS The comment "ERE n" printed by PAX indicates a programming error, The following error comments are in PAX' s repertoires ERR 1 n^m > M (input). ERR 2 input card sequence is incorrect, ERR 3 n^m > M or n;,m odd (output) „ ERR h index register overflow. ERR 5 no title card for READT. ERR 6 x,y > M for READZ -30- APPENDIX IV The following resume shows the compact form_ the correct sequence of arg\mients for all PAX instructions „ An asterisk (*) following an argument indicates that indexing is permissible for that argument » A full description of each order will be found on the page given in column 1. Column 2 (headed "n" ) gives the number of 7^9^ words which each PAX instruction requires for its representation. A PAX program should not expand into more than l4^600 words » Page N Instruction 22 3-10 B^j^FUE Ik 2 B00L0P 15 2 BUBBLE 17 11 C0MMEN 21 k CjZ^NNEC 18 1 CjZ50RD 13 5 CPRIWT 19 2 DL 19 k DLTjZJiR 17 1 Dj?5w 17 1 HALT 15 2 INDEX 23 2 J7094C 23 2 J709i+M l6 2 JTJMP 13 7 LETTER 18 n LISTM 18 2 LISTXY 21 k MARK 13 5 PRINT 12 1 PRINTT 12 1 PUNCH 11 2 READ 12 1 READT 20 3+n READZ 17 RENAME 17 2 setmjz5d Ik 2 SHIFT li^ 2 SHIJTD 22 k TCHAIN 2k 1 TIME 2k 1 TIMES 21 k TMARK 15 2 WRITE 15 2 WRITEP Arguments Sl*^ S2*, S3*, (function $) SI*; TYPE, S2*; S3*^ BAR p*, SI*, c* (PC C . ooC ) DL*7 51*, §2*, S3* X, y P, n, m, SI*, S2*, S3*, S^*, S5* n, d , d^j . o „, d DL*, k, NAME: ' ^ NAME* DUMP TYPE, k, c NAME n TYPE, NAME, TEST, c NAMEJ n XI*, NAME, n* DL*, SI*, S2*, S3* SI*, n, m SI* SI* NAME,, X*, y*, b*, (Sl, S,^, . . ., S )* i, NAME M SI*, X, y SI*, d*, k* DL*, SI*, S2*, S3*; REL, n* DL*, SI*, S2*, S3*; REL, n* SI*, X*, y* SI*, NAME* -31- I » APPEND IK V TIMING . CONS.IDERATIONS The following list gives some indication of the speed of the PAX program o Execation times for orders not given are either negligible (e.go,, INDEX^ JUMP^ DLT^IR)., or are highly dependent upon the instruction arguments (eogo^ B^^Fim^ MARK^ TIVIAPX,, C0]MEC^ TCHAIN). In the latter case an estim.ate may be obtained by considering the ntmiber of SHIFT^ B^j2$I0P and/or BUEBLE instructions which would be necessary to perform the samie operation „ READ 8/2 msec READT 8«2 msec PRINT (9o2)n msec CPROTT (9o2)n msec CJ^MMEN 9«2 msec D^W 9,2 msec PUNCH lol m.sec LETTER gM msec READZ 6x msec SHlb'T loO msec 3-1 msec Bi25jZ$Lj25p lA msec k.2 m.sec BUBBLE r7o5 msec 12k. Q m.sec per input card "\ NOTE, > per output card The execution times for l/o operations are dominated by the time required for tape motion o WRITE O.k msec y maximum m_.ax im_um. (36-mode) maximtim (72-mode) max im^uro ( 36 -m.ode j maximum (72-mode) maximium (36-ffi;ode;, p £ ^) maximum (36-mode^ p < 10 ) (h times slower in 72-niode, m,aximium -32- m ? 01969