§ fl. 3:]! .LI .' I". R" 4‘3“. \sw‘ HWY??? ~ ‘ ‘4 . H s 5:. .: awn: Te. «\Jéu. =1u'4 ‘ i 1:. ah... Yhasia 4%: MESHQEJAM 5 Emma H-firfbéfi 53 “£95 23" LIBRARY '- Michigan State University IV1ESI_J RETURNING MATERIALS: P1ace in book drop to usamuss remove this checkout from .“ your record. FINES win be charged if book is returned after the date stamped below. THE SYMBOLIC ADDRESS INPUT CONVERTER By BRUCE HERBERT BARNES AN ABSTRACT Submitted to the College of Science and Arts Michigan State University of Agriculture and Applied Science in partial fulfillment of the requirements for the degree of MASTER OF SCIENCE Department of Mathematics 1957 Approvedzwg Ply/353:; ABSTRACT The SAIC is a symbolic address conversion input routine. It has the following modes of operation: 1. The SAIC will interpret the pseudo coded routine and store it in memory. 2. The pseudo coded routine will be interpreted and punched on tape. The first mode of operation is limited to routines which will, to- gether with the SAIC, fit into the 1024 words of electrostatic storage. The second option is used when the routine will not fit into electro- static storage. It is also useful if the routine is to be used repeatedly. The SAIC accepts instructions in the following format: operation code address connective O 02 A N C l 1e operation code is he standard Mistic sexadecimal operation code. A is a regional designator. The alphabetic characters may be used as regional designators. If the address of the instruction does not pertain to an electrostatic memory location or if a pure address is desired, A may be left vacant. N is a decimal number composed of one or more digits. If N is a negative number, it is preceded by a minus sign. When a regional designator is used, the value of N is added to the assigned value of A. The connective C is either a carriage return (CR) or a period. The carriage return is used if the next piece of information is of the same kind as the last accepted. The period is used when the next piece of information on tape is a directive. The SAIC uses alphabetical operation codes as directives. These directives are orders punched on tape which direct the input operation. The directives are as follows: 1. Dictionary. The dictionary is a set of memory locations in which the values of the regional designators are stored. 2. Store Orders. This directive will store the succeeding informa- tion on tape to be stored as order pairs beginning at the specified L memory location N. i 3. Store Fractions. This directive causes information following it on tape to be stored as fractions beginning at the Specified address N. A. Store Integers. This directive operates in the same way as the store fraction directive except that integers are stored. 5. gump, The jump directive informs the SAIC that the next piece of information on tape is an instruction and causes control to be trans- ferred to that instruction. This directive is usually used to transfer control from the SAIC to the routine just assembled in memory. 6. Jump to DOI. This directive transfers control to the DOI. It is ordinarily used to input DOI subroutines. 7. BEESB' When one desires the routine to be converted and punched on an output tape in machine language, the punch directive must appear as the first item on tape. 8. §tore, This directive is used to cause information to be stored rather than converted and punched. The store instruction is needed only if the routine has already been set to the punch mode of operation. ACKNOWLEDGMENTS ‘ The author wishes to express his gratitude to Professor Gerard P. Weeg for his understanding and guidance throughout the writing of this paper. ii THE SYMBOLIC ADDRESS INPUT CONVERTER By BRUCE HERBERT BAIU‘IES A THESIS Submitted to the College of Science and Arts Michigan State University of Agriculture and Applied Science in partial fulfillment of the requirements for the degree of MASTER OF SCIENCE Department of Mathematics 1957 . '2 3 £3." (1, Qt I. INTRODUCTION Michigan State University has recently completed the construction of the Mistic, a stored program digital computer, patterned after the Illiac of the University of Illinois. It operates on binary numbers, directed by orders stored two to a word in the memory of the computer. The memory is capable of holding 102M forty binary digit (bit) words, roughly the equivalent of 12 decimal digits. An order pair has the following format: (1) 8 bits 2 bits 10 bits 8 bits 2 bits 10 bits [operation codej waste 1 address L operation code I waste I addresfl The eight bits used for the instruction allow for the use of a two sexadecimal digit operation code. Since there are 102% memory locations, . ten binary bits are needed to assign a numerical address to each. The remaining two bits are not used. Thus, each instruction has an eight bit operation code telling the computer which Operation to perform and a ten bit address telling on which number to perform the operation. Some operations do not need an address on which to operate. In these cases the address is used to amplify the operation code, giving information such as how many times the operation is to be performed. Instructions may be input into the machine in the form described above. However, this method possesses several disadvantages. It is, therefore, advantageous to use an input routine which will accept instruc- tions and numbers in a form more amenable to programming and which will convert them into machine form. There have been a number of such routines . -——.v ‘ < sMI-—n...!7 A written, the most notable being the Decimal Order Input, which is described later in this paper. Although the Decimal Order Input has reduced program- ming difficulties, it possesses several difficulties. The present paper presents an input routine which attempts to remove certain of these dif- ficulties. It is called the Symbolic Address Input Converter (SAIC). I . ‘n._‘-_» n.r—_ I II. THE SYMBOLIC ADDRESS INPUT CONVERTER A. Description of the SAIC The SAIC is a symbolic address conversion input routine. It has the following modes of operation: 1. The SAIC will interpret the pseudo coded routine and store it in memory. 2. The pseudo coded routine will be interpreted and punched on tape. A combination of the two modes of operation may be employed if desired. The first mode of operation is limited to routines which will, to- gether with the SAIC, fit into the 1021+ words of electrostatic storage. The second option is used when the routine will not fit into electro- static storage. It is also useful if the routine, though short enough to fit in memory, is to be used repeatedly. The SAIC aeoepts instructions in the following format: operation code address connective 0 O A N C l 2 The operation code is the standard Mistic sexadecimal operation code. A is a regional designator. The alphabetic characters A through Z may be used as regional designators. If the address of the instruction does not pertain to an electrostatic memory location or if a pure address is desired, A.may be left vacant. N is a decimal number composed of one, two, three, or more decimal digits. If N is a negative number, it is preceded by a minus sign. When a regional designator is used, the value of N is added to the assigned value of A. The connective C is either a carriage return (CR) or a period. The carriage return informs the SAIC that the instruction is complete and that the next piece of information on tape is of the same kind as the last word accepted. The carriage return is not printed on the typed copy but causes the carriage of the page printer to return to the left margin. Thus, as the tape is run through the page printer, the instructions are listed in a column. If a period is used, the next piece of information on tape is a directive. The period is always followed by a carriage return. One of the outstanding features of the SAIC is its use of alphabeti- cal characters as directives. These directives are orders punched on tape which direct the input operation. The directives are as follows: 1. Dictionary. The dictionary is a set of memory locations in which the values of the regional designators are stored. This direc- tive is used by punching DY on tape followed by a CR. After this is the list of regional designators, each one followed by its numerical value and a CR. The last value is followed by a period and a CR. To give an illustration, if the letters A, B, P, Q, and T are to be used as regional designators and assigned the following values: A = 200 B = 1H5 P=5 Q=26 T=372 then the input tape would appear as ‘-.-_—_-.' ‘- DYCR A2OOCR BihSCR PSCR Q26CR T37CR 2. Store Orders. The symbol for this directive is 80. It appears on tape as SONCR. In this case N always contains a regional designator. This directive will store the succeeding information on tape to be stored as order pairs beginning at the specified memory location N. The first order after this directive is always a left hand order. There need not be an even number of instructions between successive store order direc- tives. For example, if it is desired to store a routine at A-7, the following would appear on tape: SOA-YCR 26A3CR LAB-2GB SSOCR 3. Store Fractions. This directive appears on tape as SFNCR fol- lowed by the list of fractions. This directive causes information follow- ing it on tape to be stored as fractions beginning at the specified address N. As in the preceding case, N always contains a regional designator. A. Store Integers. This directive appears on tape as SINCR followed by the list of integers. This directive Operates in the same fashion as the store fraction directive except that integers are stored. As before, the address contains a regional designator. 5. Jump. This will appear on tape as JP followed by the instruction to be obeyed. The jump directive informs the SAIC that the next piece of information on tape is an instruction and causes control to be transferred to that instruction. This directive is usually used to transfer control from the SAIC to the routine just assembled in memory. This directive appears on tape, for example, as JP2ANCR. 6. Jump to DOI.(2) The symbol for this directive is JD followed by a cR. This directive transfers control to the DOI. It is ordinarily used to input DOI subroutines. This directive is needed in order to take full advantage of the computer library. ; L- 7. 32222, When one desires the routine to be converted and punched on an output tape in machine language, the punch directive must appear as . the first item on tape. The symbol for punch is PUCR. 8. §39£g, This directive is used to cause information to be stored rather than converted and punched. The store instruction is needed only if the routine has already been set to the punch mode of operation. The symbol for store is STCR. B. Restrictions in Using the SAIC The routine is punched on tape in such a way that a printed teletype copy will appear in the same form that the program.appears on the program- mer's written COpy. For this reason, all letter shifts and number shifts must be punched. If they are neglected, it is an error; and the SAIC will either make an improper entry, or in some cases, will stop and punch ER on tape, indicating an error. This characteristic of the SAIC is a help to the programmer in checking the routine. By comparing the printed copy with the written copy, one can note many errors such as missed letters or number shifts. Some of the places where a letter or number shift must be punched are before and after the regional designators and before all directives. The operation code is always punched in number shift; therefore, K and S will appear on tape as + and - respectively. If the programmer makes a mistake in punching the tape, he will retype a space (all five holes punched) and continue with the routine. There are three types of addresses: pure addresses, symbolic addresses with N positive, and symbolic addresses with N negative. A few reasonable restrictions must be placed on the addresses. Since all addresses are positive, there is no need for negative addresses. All pure addresses, therefore, must be positive and lie between zero and lO23._ If N is negative, its numerical value must not exceed the value of the regional designator. If N is positive, N plus the value of the regional designator should normally not exceed lO23. For example, if A has the assigned value 200, then N should have the range -200$ N S 823. If the address is greater than 1023, it will be interpreted modulo 102h. In all cases N must be at least one digit. If the pure address zero is desired, 0 is written. If the address is the value of the regional desig- nator, A0 is used. As was previously noted, two types of constants may be input, integers and fractions. Since the Mistic is a fractional machine, integers will not 39. fit in memory without scaling. The scaling for integers is 2- Any in- teger n will be input as n-2’39. All integers will be followed by a CR except the last, which is followed by a period and a CR. If the integer is negative, it will be preceded by a minus sign; if positive, no sign is used. .‘, _._ fl-__.- When writing fractions for machine input, no decimal point is used. Terminal zeros may be included but are not needed. However, all zeros preceding the first non-zero digit must be written. As with integers, all fractions are terminated by a CR or a period and CR. When inputting negative fractions, the same notation is used as with integers, a minus sign preceding the fraction. C. Advantages of the SAIC The Computer Laboratory at Michigan State University, like many university installations but unlike most industrial installations, does not employ a staff of professional programmers. Each computer user will be responsible for his own programs. It was primarily for such individ- uals, not the professional programmer, that the SAIC was written. Since the SAIC is easier to use than any previous input routine, the time re- quired to learn to program should be lessened. There should also be a savings in time after one has learned to program. The time saved in coding will not be so appreciable as the time that may be saved in check- ing (finding and correcting errors). There are two reasons for this: (I) The format is natural and easy to use. (2) The printed copy is easier to read and to examine for errors. The most generally used input routine until now has been the DOI. The DOI, however, has four major defects: 1. Its program form is not natural. 2. Modification of address is difficult and in many cases impossible. 3. The input of constants is so difficult that the use of a constant input routine is almost essential. .f‘ A a-.~‘~_..---. If: A. Additions to a program are not easy to make. The DOI instructions have the following format: th2 N C. The XlX2 is the standard Mistic code. The N is the address and C is a connective. The connectives used for address modification are F, L, and S. F is used if the address is pure. When L is used, the address where the first in- struction is stored is added to the value of N. The symbol S is followed by a sexadecimal number m, m = 3, A,..., L. When this symbol is used, N l- is added to the value stored at memory location m. This method will accomplish most address modifications desired. However, it is difficult to use, especially for an inexperienced programmer. The S symbol can be used almost exactly as the Dictionary. The format is one of the major objections. It is difficult to learn how to obtain the maximum flexibility from the DOI. Not only training but con- siderable practice and experience are needed to learn the tricks and methods used for address modification with the DOI. This is not the case with the SAIC. ne use of the symbolic address makes address modification straightforward and simple to accomplish. Aside from the unnatural form of the DOI, there are many address modifications that cannot be accomplished with the DOI. Often after one has nearly completed his routine, he notices that it is necessary to adi instructions to the beginning. Since N is added to the address of the first instruction, all addresses using the L connective must be changed accordingly. This not only involves more time in completing the finished program, but it is a common source of errors. It is frequently desirable to store, in memory, an instruction that is not an Operating part Of the routine, but which is used to reset an lO instruction that has been changed in the performance of the routine. This is usually done with an Sm connective. In this case the L connective may not be used. The reason for this is that the address of the first instruc- tion stored in memory will not be the same. With the use of the dictionary, this difficulty has been eliminated, since the symbolic addresses are de- pendent only on the dictionary which is constant throughout the entire routine. When using the DOI, constants appear on tape as order pairs. To input a positive integer N, O (N S 239-1, the left h nd order would appear as 00 F and the right hand order as 00 NF. The address in an instruction in the DOI format is always positive; therefore, it is necessary to devise a method by which negative integers N may be input into the computer. inis is accomplished by inputting an order pair which is the sum of LLhO95FLLhO96F and OOFOONF. This will input the two's complement of the integer, the machine representation of a negative number. This, obviously, is not as easy as writing the integer and following it with a carriage return, which is the form used by the SAIC. With the SAIC, all integers are input in their standard form. It is not necessary to use an operation code or to find the complement of a number to input its negative, nor to write an integer as an order pair. The input of fractkans is further complicated by a prOblem of scaling. Fractions are input into the computer by use of the J connective. When fraction is followed by J, the address is multiplied by 239 x lO-le. In order that all fractions have the same scaling (20), it is imperative that l2 all fractions have a scaling of lO . Thus, when inputting fractions with the DOI, one not only has to concern himself with operation codes and calculating the complement of numbers, but one is also bothered with a problem of scaling. These problems are not encountered when inputting fractions with the SAIC. For most computer installations, the Decimal Order Input might be a satisfactory input routine. Wherever such is the case, the SAIC will be an improvement. The Symbolic Address Input Converter, with its natural format, straightforward methods of address modification, and its simple form of constant input, should lend itself to ease of programming. III. THE SAIC PROGRAM The Symbolic Address Input Converter is composed of seven major sub- routines: the directive determinater, the dictionary, store order routine, store integer and fraction routine, jump, punch, and store. The directive determinater does primarily just what its name implies. It inputs the alphabetical directives, determines which directive it is, and transfers control to the proper subroutine. When control is transferred to the directive determinater, it will first input one four bit character. This will be the P of punch, the Y of dictionary, the J of the two jump directives, or S of the store direc- tives. The values of the four possible characters are 0, 6, ll, and 13 for P, Y, S, and J respectively. Thus, if the negative of the character is brought into the accumulator, P will be the only one whose negative is greater than or equal to zero. A Sign check can be used here to determine P. The next step is to add six. This will Change the accumulator to zero, if the character was Y. Again a sign test will determine Y. The next step is to input one five bit character. All five hole inputs must be checked for a Space which is used to cover an error in typing. At this point in the routine, D (a five hole character), P (o), T (5), I (8), O (9), or F (lh) will be in the accumulator. When a five hole character is input, the fifth binary bit is placed in the sign position; therefore, we may use a sign test to determine D. If the character is not D, its negative is sent to the accumulator. Again a Sign test will determine P. The next step is to add six to the accumulator. This will make T positive. If the 12 13 character is not T, then -2, -3, or -8 will be in the accumulator. Now two may be added to check for I and then 1 may be added to determine 0. If the accumulator is still negative, then the character input was F. When a character is determined, control is transferred to the proper subroutine. The basic subroutine is the dictionary. It is in this that the sym- bolic addresses are assembled. The dictionary subroutine also has the function of storing the value of the regional designator. Before the symbolic addresses can be assembled, the value of the regional designator must be stored in memory. This is accomplished by inputting the regional designator and checking to determine if it is a five hole character. The reason for determining whether or not the char- acter has a fifth hole is that the regional designators are stored two to a memory location in order to save Space. The addresses will be assembled in the right hand address location. If the character has a fifth hole, preparation will have to be made to shift the addresses to the left hand address position. The last four bits of the character are added to the address of the instruction which sends to memory the value of the regional designator. Many times during the routine, letter shifts or number shifts will be needed on the tape so that the printed copy will appear in the correct form. Some of these are of special significance to the SAIC; others will be checked to see if they are present. If they are not present, ER is punched on tape and the machine will stop. Such a check is performed here. At this point the routine is prepared to assemble the address. As each character is input, it is stored in memory. The address storage, where the partial addresses are stored, is multiplied by ten and the new W. ‘ ““ My "‘ r." p r lh digit is added. The new partial address is then stored in the address storage. The partial address is multiplied by ten by shifting left two places. This multiplies it by four. Adding the partial address to this will put five times the partial address in the accumulator. A left shift of one bit will multiply it by two, leaving ten times the partial address in the accumulator. This process is continued until a carriage return or period is input. When a carriage return is input, the memory location where the regional designator is to be stored is added to the address. This memory location has previously been set to zero. The address is now sent to tis proper place in memory. If the address is the value of a five bit character, it is shifted to the left hand address position before the memory location is added. The dictionary routine will now prepare to input the next regional designator. When a period is en- countered, the address is stored and control is transferred to the directive‘determinater. The symbolic addresses are assembled in almost the same way as the regional values are stored. However, the memory locations where the regional designators are stored are no longer zero, but contain the values of the regional designators. When the two are added, the correct address will be in the accumulator. Instead of sending the address back to memory, control is transferred to the subroutine which requires this address. Pure addresses are assembled in the same way except that control is transferred before the regional designators are added. Negative addresses are handled by sending the negative of the address to the accumulator be- fore the regional designators are added. 15 The store order routine has the function of storing the order pair in memory. Before it can do this, it must pick up the address where the instructions are to be stored and send it to the store instruction. To do this, it first prepares the dictionary to jump back to the store order routine. Then control is transferred to the dictionary, the symbolic address is assembled, and control is transferred back to the store order routine. The store order routine now transfers this address to the store I. instruction. If the regional designator of the symbolic address is a 1 five hole character, the address is shifted to the right hand address before it is transferred to the store instruction. { The order pairs are assembled in the order storage before they are transferred into their proper place in memory. The first step in as- sembling the orders is to bring the order storage to the accumulator. If the instruction to be input is a left hand instruction, the order storage is zero. ,Otherwise, the order storage contains the left hand instructions in the right hand position. The operation code is now input, using a four bit input and the accumulator is shifted left twelve bits. This will put the operation code in its proper position; and if a left hand instruction was in the order storage, it will be shifted to the left hand position. The next step is to assemble the address and transfer it to the order storage. This is done in the same way that the address was sent to the store instruction. The address of the instructions is not necessarily symbolic. The pure addresses are distinguished from the symbolic addresses by the letter shift. Since the Operation code is in number shift, a letter l6 shift must precede all symbolic addresses. If the letter shift is not present, the address is assumed to be pure. With the pure address the dictionary is set to transfer control back to the store order routine before the regional designator is added. At this point it must be determined whether the instruction is a left or right hand instruction. A.left-right switch is used for this purpose. The left-right switch is originally set to the left. It is changed to right and back to left as the instructions are assembled. If a left hand instruction has just been input, it is left in the right hand side of the order storage. The left-right switch is set to right and control is transferred to input the next instruction. After a right hand instruction is assembled, the order storage containing the order pair is sent to its proper place in memory. One is then to be added to the address of the store instruction. The left-right switch is set to the left and control is transferred to input the next instruction. When a period is encountered, indicating that the last instruction has been input, it must be determined whether the last instruction was a left or right hand instruction. This is done by the use of the left- right switch. If the left-right switch is set for left, the last instruc- tion of a right hand instruction and all the order pairs were entered into memory. This is not the case if the last instruction was a left hand instruction. In this case the left hand instruction must be shifted to the left hand position in the order pair and transferred to its proper place in memory. The purpose of the integer-fraction routine is to assemble integers and fractions and store them in their proper place in memory. The address Wit.“ '~“ - m ‘r‘.’ l.';:‘v 17 where the first constant is to be stored is assembled in a similar way as is the store order routine and is sent to the store instruction in this routine. The integers are input in the following way: The first character is input and checked to see if it is a minus sign. If it is a minus sign, the routine is set to store its negative. Otherwise, it is stored in integer storage. The next character is then brought in and checked to see if it is a carriage return or period. If it is not a carriage return or period, it is stored and the integer storage is multiplied by ten and ”‘maq—u -_fi ‘1‘ my“! . r ‘ ‘ the new character is added. This procedure is continued until a carriage return or period is input. When a carriage return is input, the integer storage is sent to the accumulator. The integer is then sent to memory. One is added to the store instruction and control is transferred back to the beginning to input the next constant. If a period follows the integer, the same pro- cedure is followed as above eXCept that control is transferred to the directive determinater. The assembly of fractions follows closely that of integers. The major difference is that when the constant or its negative is sent to the accumulator, it is divided by a power of lO,x 2‘39. The power of ten is equal to the number of decimal digits in the constant. This changes it to the appropriate scaling (20). This is accomplished by adding one to the address of the divide instruction after each digit is input. The powers of ten are stored in ascending order beginning at the original address of the divide instruction. Thus, a fraction containing n digits is divided by lOn x 2‘39, leaving a scaling of 20. 18 The jump routine is the shortest routine. ts purpose is to transfer control to an instruction. It does this by preparing the store order routine to transfer control to the right hand order of the order storage after the order is input and assembled. After making this change, control is transferred to the store order routine. The purpose Of the punch routine is to set the routines previously described to the punch mode Of Operation. When the SAIC is in punch mode, the routine is punched on tape in a format to be input by a special input routine. The following format is used for the input tape: N1 000 00 X1X2X3. When this appears on tape, the succeeding information is stored in memory beginning at address X1X2X3. This address is a sexadecimal number. The order format is 0102 XlX2X3. The 0102 is the standard Mistic operation code and XlX2X3 is the sexadecimal address. Constants appear on tape in their standard sexadecimal form. To transfer control to a specific'instruction, N2 000 followed by the instruction is punched on tape. In order to produce this tape, it is necessary to make five major changes in the SAIC. These are as follows: l. When the address where information is to be stored is assembled, it is not sent to the store instruction. Instead, it is sent to a memory location containing Nl as the left hand Operation code. The contents of this memory location are then punched on tape. 2. The store instruction in the store order routine is set to punch the order pair on tape. 3. The store instruction in the integer-fraction routine is set to punch the constants on tape. ‘--a*M*“~*;llllv ; r 19 h. The jump routine is changed in such a way that it will set the store order routine to send the instruction to a memory location having N2 as its left hand Operation code. This order pair is then punched on tape. 5. The Decimal Order Input must be set to punch the information in the same format as previOusly described. The store routine has the function Of setting the SAIC back tO the store mode of Operation. It does this by replacing the instructions that were changed by the punch routine. In order to Obtain the desired results in as few memory locations as possible, it was necessary to require that each subroutine perform as many distinct functions as possible. For this reason, many instructions in the SAIC are changed several times. As one is reading through the SAIC and trying to understand exactly how it Operates, one must keep a close record as to what instruction is presently stored in each memory location that is changed. If one will do this and keep continually in mind the rough outline Of how the SAIC accomplishes its various functions, he should be able to follow the SAIC with a minimum amount of difficulty. LOCATION 762 763 76h 765 766 767 768 769 770 771 ORDER LS 936fi" no 89SF L5 946F 1+0 8951: L5 783F- uo 899F L5 763F to 879F L5 78hF 1+0 89831 LS 762§7 ho 907F L5 782F ho 92hF L5 78lF 1+0 9251'; LS 780F hO 827F LS 779F no 999F 20 IV. APPENDIX NOTES Stored order pairs i ' 1 1 a 1 Reset store order routine Reset integer-fraction routine Reset jump routine LOCATION 772 773 77k 775 776 777 778 779 780 781 782 783 ORDER L5 778F ho L5 to L5 ho 26 26 ho 22 A2 00 he Lh SS 26 L5 ho F5 ho 85 to F5 #0 lmBF 777F lOl9F 776F 100134 831F 831F 001F-1 OOOF lOlOF O39F lOOlF 1016F OOOF lOth 931F 895F 924F 92hF OOOF OOOF 898F 898F 21 NOTES Reset D.O.I. Jump to directive determinater Stored order pairs J 2".“ 1‘. ~‘\ ”x? I . “‘9‘ "~ ‘ .w- a ‘y-sfa:L- f" i LOCATION 78h 785 786 787 788 789 790 791 792 793 79+ 795 ORDER 22 888F ho OOOF L5 786]? #0 895F 1+2 827F 22 798F_i L5 785i"q no 907F L5 826E 1+0 8793; L5 82in?- l+o 898F L5 823F 1+0 899F_j L5 822F- 1+0 921“? L5 82lF no 9253; L5 82OF 1+0 8283' L5 8183"1 no 999F L5 817}? ho lOlBF 22 NOTES Prepare to punch store address on tape Set store order routine to punch Set integer-fraction routine to punch Set jump routine to punch N2 000 0102 x1X2X3 Set D.O.I. tO punch LOCATION 796 797 798 799 800 801 802 803 80% 805 806 807 ORDER LS 815F ho lOl9F L5 aqu #0 lOOIF .J 26 83lF L5 827F 82 nor 26 9lOF L5 827F 82 AGE 26 89uF 5o 8l3F J0 9SOF S5 00F Lh 8l2F 82 hos 26 83lF S5 OOOF no 002F Lh 827E 82 hOF 26 lO2OF ho OOlF SO 813R-l 23 NOTES Jump to directive determinater I N1 000 01021X1X2X3 E71 Punch on tape L Jump to integer-fraction routine i ' Add N1 000 Punch on tape Jump to store order routine OO°°°Oll°°'l Instruction to Q Q to A Add N2 0 0,0 l 2 3 Punch on tape Jump to directive determinater Address to A Address to 002 Add Nl 010203 to A Punch on tape Jump to D.O.I. Instructions to 001 LOCATION 808 809 810. 811 812 813 81h 815 816 817 818 819 L5 OOOF 82 uOF 26 lO2OF 26 102OF N2 OOOR-l OO OOOF OO OOOF 11 AO9SF 22 807F 22 OOlF 36 810F OO O39F lL 3O5uF J3 OOlF A2 lOOlF LO 816F 22 8th 22 BOAF A2 95OF 22 801F 2h NOTES Instruction to Q Instruction to A Punch on tape Jump to directive determinater Order pair to A Punch on tape Jump to D.O.I. Stored order pairs 15:4"— 0? ' LOCATION 820 821 822 823 82h 825 826 827 828 829 830 831 . ho 867F ORDER L5 819F no 895E 26 926F 26 926F S5 00F 82 uOF 26 9OOF 26 9OO§J 22 8881-?- 82 uOF ho 827F 26 800E L5 825E ho 895F N1 OOOF 00 000 [W L5 93lF #0 895 ILL—J L5 9h5F l__J 22 888F 22 888F L_____J 81 AF #0 962F 25 NOTES Stored order pairs Set store order routine for jump Set dictionary for store order Jump Jump to store order routine Input one A hole character Store character fi— LOCATION 832 833 83A 835 836 837 838 839 8h0 8A1 8&2 8A3 ORDER Ll 962F 36 787F LA 970F 32 8A3F 91 AF 32 836E LO 969F 36 83k 26 999F ho 962F L1 962F 36 828F Lu 97OF 36 76uF Lh'968F 32 903F LA 968F 36 878F 26 9O5F L5 953F ho 86hF 26 861F L5 967F ho 863E 26 Minus If P, Add 6 If positive, the character is Y Input Is it Is it If D, Store Minus If P, Add 6 Is it Add 2 Is it Add 2 Is it Is it NOTES character to A jump to punch one 5 hole character negative (D or space)? a space? jump to D.O.I. character character to A jump to jump routine a T? an I? an 0? an F? Set 86h for negative address Jump to input address Set first period jump LOCATION 8AA 8A5 8A6 847 8A8 8A9 850 851 852 853 85A 855 ORDER L5 966F A0 868F L5 965E A0 867F 91 AF 36 929F LO 969F 36 8A6F LS 963F A0 86AF A1 960F L5 959F A0 866F A2 867F L5 958F A0 865F 91,AF 32 857F LO 969F 36 852F LA 96AF AO 962F L5 956F A0 865E 27 NOTES Set second period jump Set store order jump Input one character Is it a five hole character? Is it a space? Set for positive address Set dictionary storage Set five hole jump Input one 5 hole character Does it have a fifth hole? Is it a space? Restore last four bits of character Store character Set five hole jumps LOCATION 856 857 858 859 860 861 862 863 86A 865 866 867 ORDER L5 955F AO 89AF L5 962F LA 866F A0 866F A2 867F 91 AF 36 929F L0 969F 36 859E 91 AF 32 868E L0 969F 36 861E LA 95AF 36 87AF L5 96OF 26 865F 22 866F J0 9S7F OO 20F LA 983R 22 867F A0 983F 28 NOTES Character to A Add character to dictionary instruction Send address to store instruction Input one character (N.S.) Does it have a fifth hole? Is it a space? Input one character Does it have a fifth hole? Is it a space? Is it a period? If not, it is a carriage return Address to A For use with a non-symbolic address Five hole jump Set Q to zero Left shift 20 bits Add dictionary Store order jump Store in dictionary LOCATION 868 869 870 871 872 873 87A 875 876 877 878 879 ORDER 26 8A6F L0 961F 32 8AiF LA 961F AO 962F LS 96oF 00 2F LA 96OF 00 IF LA 962F- A0 960F 26 861F LS 952F AO 868F 26 86AF L5 9SlF no 888F] 26 86AF 26 878F 26 878F L5 9A8F AO 888F L5 9A6F A0 895F NOTES Jump to input next regional designators Is it a minus sign? Restore character Store character Partial address to A Multiply by ten Add new character Store in address storage Jump to input next character Set period jump Jump to address assembly Set period jump Jump to address assembly Reset period jump Set tO send address to store instruction ‘lflfi’““""“”fififilf '14 LOCATION 880 882 883 88A 885 886 887 888 889 890 891 ORDER L5 9ASF AO 867F 26 8A8F AO 962F Ll 896E LA 9AAF 36 831F L5 962F OO 20F 22 898F L5 9h3F A0 895F L5 9A2F AO 863F L5 9AAF AO 896F Ai 95OF L5 950F 80 8F 00 12F AO 95OF 91 AF 30 NOTES Set to store order jump Jump to assemble address Store instruction Left-right switch to A Add left switch If positive, jump to directive determinater Instruction to A Left shift 20 bits Jump to store in memory Set to form instruction Set period jump Set left-right switch Set word storage to zero Set five hole jump Word storage to A Input eight bits (Operation code) Left shift twelve bits Store in word storage Input one character warm“ *"ERSEV i LOCATION 892 893 89A 895 896 897 898 899 900 901 902 903 ORDER 32 9O1F LO 969F 32 89lF 26 8A8F 26 895F 10 20F A2 95OF L5 950F 22 896F AO 950E L5 9A1F AO 896F 22 888F A0 (OOO)F F5 898F AO 898F L5 9AAF AO 896F 26 888F A0 960E L5 9AOF AO 86AF 26 861F L5 939F 1 31 NOTES Does it have a fifth hole? Is it a space? Jump to address assembly Five hole jump Right shift 20 bits Send address tO word storage Word storage to A Left-right switch Instruction to word storage Set left-right switch to right Jump to input next instruction Store in memory Add one to store address Set left-right switch to left Jump to input next instruction Store character Set for pure address Jump to address assembly LOCATION 90A 905 906 907 908 909 910 911 912 913 91A 915 A0 923F] 26 906F L5 938F AO 923F L5 937F AO 927F LS 936F AO 895F 26 880F L5 93SF AO 927F 22 922F L5 93AF A0 922F 81 AF LO 961F 32 927F LA 961F A0 933F 91 AF 36 917F LO 969F 32 913F LA 95AR] 32 NOTES Set integer-fraction switch to integer Set to input routine Set integer-fraction switch tO fraction Set integer jump Set to send address to store instruction Jump to pick up store address Set period jump Jump to store last integer Set for positive integer Input one character Is it a minus sign? Restore character Send to integer storage Does it have a fifth hole? Is it a space? LOCATION 916 917 918 919 920 922 923 92A 925 926 927 ORDER 32 908F__l 22 922F AO 962F 15 933F J0 957F 00 2F LA 933F 00 1F AA 962F 1+0 933F F5 923F AO 923F 22 913F 15 933F 22 923F 66 971F 85 F AO (OOO)F F5 92AF A0 92AF LS 939F A2 923F 26 9lOF L5 93% _| 33 NOTES Is it a period or carriage return? If period, jump Jump to store integer Store character Integer storage to A Set Q tO zero 1 Multiply by ten Add new character Store in integer storage Add one to divide instruction Jump to input next character Integer to A Integer-fraction switch Divide by a power of ten Fraction to A Store in memory Add one to store instruction Reset divide instruction Jump to pick up next integer LOCATION 928 929 930 931 932 933 931+ 935 936 937 938 939 ORDER A0 9223' 22 911F 92 259F 92 19AF 92 258E OF F A2 950E 22 950E 22 913F Ll 933F 00 F 00 F 22 913F L5 933F 26 831F L5 932F A2 92AF 26 910F 26 910F L5 932F 22 923F 66 971E 22 92AF 66 971F 3A NOTES Set for negative integer Jump to input next character Punch letter shift Punch E Punch R Stop 1 -~asl Integer storage LOCATION 9A0 9A1 9A2 943 9AA 9A5 9A6 9A7 9A8 9A9 950 951 OmmR L5 960F 26 895F 22 898 A0 95OF LA 95AF 32 875F A2 950E L5 950F 22 896F A0 95OF 26 89AF A0 983F A2 898F 26 885F 26 895F 1O 20F A1 95OF L5 9A7F 82 20F 26 885F 00 F ’00 F A1 950F 22 881F 35 NOTES Word storage LOCATION 952 953 95A 955 956 957 958 959 960 961 962 963 ORDER 26 831F » LO 961F Ll 96OF 26 865E OO OOOF OO OO5F 22 89AF 10 20F 22 865F J0 957F OO OOOF OO OOOF 22 866F J0 957F OO 20F LA 983F 00 F 00 F 00 OOOF OO O11F 00 F 00 F L5 96OF 26 865F 36 Address storage Storage NOTES 1.5 LOCATION 96A 965 966 967 968 969 970 971 - 982 983 - 998 999 - 1023 ORDER OO OOOF OO 015F 22 867F AO 983F 26 8A6F LO 961F LA 95AF 36 87AF OO OOOF OO OO2F 80 OOOF OO O15F OO OOOF OO OO6F 37 NOTES Powers of ten Dictionary D.O.I. V. REFERENCES Gill, 8., et a1. Illiac Programming A Guide to the Preparation of Problems for Solution by the University of Illinois Digital Computer. Digital Computer Laboratory, Graduate College, University Of Illinois, Urbana, Illinois, April 1, 1955. Wheeler, D. J. University Of Illinois Digital Computer Library Routine X1-18, Decimal Order Input. Urbana, Illinois, December 2, 195 3. (Mimeographed) 38 § m R m L Y .h S R E w N U E T A T“?- IIHIWIW