| The following text was OCRed from a manual kindly sent by Professor Keith Smillie of the University of Alberta, Edmonton, Alberta, Canada to the Computer History Museum Center. |
PROGRAMMING MANUAL
Royal McBee Corporation
Port Chester, New York
April 1957
Printed in the U.S.A
MEMORY AND RECIRCULATING REGISTERS
Table of LGP-30 Specifications
Programming is planning how to solve a problem. No matter what method is used -- pencil and paper, slide rule, adding machine, or computer -problem solving requires programming. Of course, how one programs depends on the device one uses in problem solving. Programming the Royal Precision LGP-30 is basically simple. Understanding certain problems requires special knowledge, however programming for the LGP-30 does not. Hence this manual is meant for beginners as well as those with experience in stored program computers and describes completely the fundamentals of programming for the LGP-30.
A Program for a Desk Calculator.
The Royal Precision Electronic Computer LGP-30 is a general purpose electronic digital computer. The phrase "general purpose" is intended to mean that the computer can solve to any required order of accuracy any mathematical problem expressable in numerical or logical terms. However, for any given computer there are always some problems beyond its practical reach because of the length of time required for their solution. By "electronic" is meant simply that the device uses vacuum tubes and germanium diodes. One way of classifying computers is by the terms analog and digital.There are other phrases, too, which help to classify the LGP-30.
Just as scaling can be handled by a program so also can conversion from binary to decimal so that the LGP-30 can be used as easily as any decimal computer. or
1/2's 1/4's 1/8's 1/16's 1/32's etc. .1 1 0 1 0 0...
.1101 = 13/16 BINARY = DECIMAL FRACTION
Functional Components of the LGP-30.
There are four basic functional groupings of the components of the Royal Precision Electronic Computer LGP-30 which are necessary for problem solving. These functional groupings are: The accumulator, the memory, the input-output system, and the control system. Each of these have analogs in the case of the desk calculator. For instance, the memory of the LGP-30 is equivalent in the desk calculator case to the paper required for storing initial data, intermediate results, and final results. An essential difference from the desk calculator, however, is that in the case of the LGP-30 the program itself is also stored in the memory.
Why a Stored Program Computer?
Since the desk calculator is a useful computer, the question arises, "What is the need for a stored program computer?" The answer lies in the speed of computation. For instance, the stored program computer LGP-30 can execute over 400 additions per second, whereas the desk calculator can only execute approximately one addition per second, not counting the time required to enter the numbers into the keyboard. A table at the back of the manual shows the important physical and operational specifications of the Royal Precision electronic computer LGP-30.
MEMORY AND RECIRCULATING
REGISTERS
Memory Drum.
The heart of the memory section of the Royal Precision electronic computer LGP-30 is the magnetic drum shown below. The drum is a metal cylinder 6.5 inches in diameter and 7 inches long. It is coated with material which can be magnetized, and it rotates at approximately 3700 revolutions per minute.
Read-record heads, which are for magnetizing and for detecting magnetization on the drum, are mounted in a frame around the drum. Reading and recording on the drum are done in a manner somewhat different from that used to record on tape in tape recorders. The read-record heads are spaced along the axis of the drum so that each one can record and read spots in a circle around the drum as the drum rotates. There are 64 such circles and they are called tracks.
In each track there are 64 groups of spots. Each group occupies a sector. Each sector consists of 31 spots each of which can be magnetized or de-magnetized and a 32nd spot, called the spacer, which is always unaffected by recording and is never examined by reading.
There are 64 tracks and 64 sectors per track in the memory. Hence every location in memory can be identified by a track and sector number and there are 64 x 64 = 4096 such locations. Location numbering is generally by track and sector, tracks being numbered 00 through 63, sectors 00 through 63, and locations 0000 through 6363. Note, however, that although there are 4096 locations, a location number such as 2089 is impossible with this numbering system since sectors number only through 63. A location number is called an address.
In addition to the 64 tracks of memory on the drum, there are three tracks each of which contains a recalculating register. Each of these recalculating registers is one sector in length. As the recalculating register passes under a read head, a record head continuously records the information read, back into the drum at a distance of one sector length from the read head. The advantage of the recalculating register is a reduction of sector access time to the equivalent of one sector length or about .26 milliseconds, whereas, a location in memory has an access time equivalent to one track length or 17 milliseconds.Fig. 1 - Schematic of LGP-30 drum
Each of the 31 spots in each sector on the drum can be in either of two states: not magnetized or magnetized. These two states may be interpreted as corresponding to 0 and 1 which are the number system just as 0 through 9 are the digits of the decimal system.
The information stored in a memory location in terms of magnetized or de-magnetized spots is called a word. A word can either be a number or, since this is a stored program computer, an instruction. We will discuss here what a word looks like once it is in the memory and defer until later how to get words in and out of the LGP-30.+-+-----------------------------------------------------------+-+ |0|1 0 1 0 0 0 0 1 0 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0 1 0 0 1 1 1|0| +-+-----------------------------------------------------------+-+ ^ ^ ^ | | | sign bit 30 magnitude bits spacer bit (always 0 in memory) If a number is positive, the sign bit will be 0. If the number is negative the sign bit will be 1.
An instruction word consists of two parts, an order part and an address part. For instance, the order part of the instruction might represent the operation add. The address part of the instruction represents, by track and sector, the location in memory of some number. For instance, add 2000 is interpreted as meaning add the number located in track 20 sector 00 to the contents of the accumulator and store the result in the accumulator. Note that add 2000 means add number in location 2000, not add the number 2000.-------------- bit numbers ---------------------------- 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -------------- bit values ----------------------------- 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 (-------) (----------)(------------) order bits track bits sector bits = add = 20 = 00instruction word = a 2000
In summary, the essential element with which we deal in the computer is the word, and it may be either a number or an instruction. The next section discusses the orders of the LGP-30 and the effect they have on number representations in the computer.
BUILDING A PROGRAM
Instruction Execution.
We have learned that an instruction consists of two parts, an order part such as the letter a to designate "add" and an address part such as 2000 to designate a memory location.The third phase is "search for operand". The LGP-30 searches for location 2000.
What orders do we need to evaluate the expression
- (((a0x + a1)x + a2)x + a3) x+ a4 ?
We said that four LGP-30 orders designated by b, m, a, and h (called bring, multiply, add, and hold) were sufficient. To make from these orders the instructions necessary to evaluate the given expression, we need the address of some memory locations.Hence let us assume that x, a0, a1, a2, a3, and a4 are in locations 2000 through 2005 respectively.
Now we can write an instruction such as b 2001. This means reset the accumulator to zero and add the number in 2001 (in this case a0) to the contents of the accumulator.
The instruction m 2000 means multiply the contents of the accumulator by the number in location 2000 and put the most significant half of the resulting product in the accumulator (in this case, a0x). In general, the multiplication of two numbers results in a product which has as many digits as the sum of the number of digits in the multiplier and the multiplicand. For instance, if we multiply .20 by .10, we get .0200. Hence, if we interpret these operands as x = 2 at a scale factor f = 1 and a0 = 1 at a scale factor f = 1 and if we retain only the significant half of the product, the result is a0x = 2 at a scale factor f = 2. Therefore by proper scaling, significance may be retained with the M multiply in keeping only the most significant half of the product. More about scaling later.
The instruction a 2002 means add the number in location 2002 to the contents of the accumulator and keep the result in the accumulator (in this case, a0x + a1).
The instruction h 2006 means store the contents of the accumulator in location 2006 and retain it also in the accumulator.
Location Instruction
or NumberOperand Result 1000 b 2001 a0 a0 1001 m 2000 x a0x 1002 a 2002 al a0x + a1 1003 m 2000 x (a0x + a1)x 1004 a 2003 a2 (a0x + a1)x + a2 1005 m 2000 x ((a0x + a1)x + a2)x 1006 a 2004 a3 ((a0x + a1)x + a2)x + a3 1007 m 2000 x (((a0x + a1)x + a2)x + a3)x 1008 a 2005 a4 (((a0x + a1)x + a2)x + a3)x + a4 1009 h 2006 Answer Store answer in 2006
Location Instruction
or Number2000 x 2001 a0 2002 a1 2003 a2 2004 a3 2005 a4 2006 (answer)
In the desk calculator, computation requires pressing the start button to execute each instruction. In the case of the LGP-30, however, pressing the start button may initiate the entire sequence of instructions. Hence, we need some method of instructing the computer to stop computation when we have accomplished what we desire.
The repetition of the group of two instructions, multiply and add, suggests a generalization of the program we have written. Perhaps we could in some way use the same multiply and add instructions repeatedly instead of writing a sequence of several pairs of multiply and add instructions. We require two additional types of functions to accomplish this:Since we have located the coefficients a0 through a4 in sequential memory locations, it will be useful to add 1 to the address portion of the add instruction before transferring back to the multiply and add instructions Let us consider program notes for the same expression as above which look as follows:
- an instruction to transfer back to the multiply and add instruction and
- a means of modifying the address in the add instruction.
Location Instruction
or NumberOperand Result 1000 b 2000 working storage initially zero 1001 m 2004 x . 1002 a (2005) an initially a0 1003 h 2000 . Intermediate and final answers into memory location 2000 1004 b 1002 a ( ) modify add instruction 1005 a 2001 1 " 1006 h 1002 a ( ) " 1007 u 1000 . .
Location Instruction
or Number2000 working storage 2001 1 2002 not used 2003 not used 2004 x 2005 a0 2006 a1 2007 a2 2008 a3 2009 a4
However, transfer back to the multiply instruction does require a new order. For this the LGP-30 provides an unconditional transfer order designated by the letter u. An instruction such as u 1000 means execute next the instruction in location 1000. Each repetition of the sequence preceding the u instruction is called an iteration. It should be noted that a u instruction does not affect the contents of the accumulator. So far the only other instruction of this nature is the stop instruction.
Besides transfer and address modification, there are two other ideas in our new program worth noting. First, the initial bring instruction when first executed does not bring a0 but brings the contents of 2000 which is zero. The reason is this: after executing the multiply and add pair, we must store the result each time because we need to make use of the accumulator in modifying the address of the add instruction. Having stored the intermediate result each time we have to bring it again after we transfer to the beginning. Since we want to avoid bringing a0 after the first time and need to bring the intermediate result, we provide a special memory location for storing intermediate results and find another method for bringing a0 initially. Since the add instruction initially has the address of a0 and the contents of working storage is initially zero. the effect of the first execution of the add instruction is to bring a0.
You probably notice several things wrong with the program as it stands. The principal fault is that there is no way of controlling when it stops. After the instruction in 1002 becomes a 2009, it becomes a 2010 and so on indefinitely. Numbers in locations following 2009 are added into the result, which we do not want. Two additional orders are helpful in controlling the number of iterations executed. These orders are "subtract" and "test".
The instruction s 2003 means subtract the number in location 2003 from the contents of the accumulator and keep the result in the accumulator.
The instruction t 1000 means that if the number in the accumulator is negative, transfer to location 1000 and if the number in the accumulator is zero or positive, execute the instruction following t 1000.Let us consider the following sequence of instructions:
Location Instruction
or NumberOperand Result 1007 b 2002 counter . 1008 a 2001 1 argument counter 1009 h 2002 counter store augmented counter 1010 s 2003 5 flag 1011 t 1000 . tests number if iterations 1012 z 000 . stops program 2001 1 at 29 . . 2002 working storage . counter initially zero 2003 5 . flag
Location Instruction
or NumberOperand Result 1004 b 1002 a( ) as counter . 1005 a 2001 1 at 29 augment counter 1006 h 1002 a( ) store augmented counter 1007 s 2003 a 2010 flag 1008 t 1000 . tests number of iterations 1009 z 0000 . stops program 2001 1 at 29 . . 2002 working storage . counter initially a 2005 2003 a 2010 . flag
There are still faults with the program. If we execute the computation a second time, we obtain a different answer. For one thing, when computation begins the second time, the contents of the working storage location 2000 contains the final answer and not zero. For another, the counter and initial add instruction is a 2010 not a 2005. We must provide instructions to precede those we have written which set correct initial values in both of these locations. If we store the instruction a 2005 in 2002 and a zero in 2010, the following four instructions are sufficient to properly initialize our program.
- b 2002
- h 1002
- b 2010
- h 2000
The LGP-30 provides a clear order which can make this initialization even simpler. The instruction c 1002 means replace the contents of memory location 1002 with the contents of the accumulator and replace the contents of the accumulator with zero. Now the initializing instructions can be reduced to:
A subroutine is a program which computes a frequently needed function such as the square root or the printing out of a number in the accumulator. The word "routine" simply means "program" and the prefix "sub-" simply reflects the fact that the evaluation of a function such as the square root is often needed as a subordinate part of a larger program. Subroutines are frequently retained in known locations in memory so that they may easily be used when needed.
The answer is provided by the return address order. If the instruction r 3050 is located in 1013, it stores the address 1015 in location 3050.If the instruction u 0000 is located in 3050, it becomes u 1015. Hence if we have
1012 b 2000 1013 r 3050 1014 u 3000 1015 z 0000
Now we can write a program to evaluate (((a0x + a1)x + a2)x + a3)x + a4 which incorporates all the devices we have learned to this point.
Location Instruction
or NumberOperand Result 1000 b 2002 a 2005 initial add instruction 1001 c 1005 . . 1002 h 2000 zero initialize working storage 1003 b 2000 working storage . 1004 m 2004 x . 1005 a(2005) an . 1006 h 2000 working storage intermediate and final results 1007 b 1005 a(2005 + n) . 1008 a 2001 1 at 29 . 1009 h 1005 a(2005 + n+1) . 1010 s 2003 a 2010 flag 1011 t 1003 . . 1012 h 2000 final result . 1013 r 3050 . . 1014 u 3000 print routine . 1015 z 000 . stop 2000 working storage 2001 1 at 29 2002 a 2005 2003 a 2010 2004 x 2005 a0 2006 a1 2007 a2 2008 a3 2009 a4
(. . .(a0x + a1)x + . . .an-1)x + an
Suppose we have a problem in which we wish to square all the numbers stored in track 20 and store each square in the location formerly occupied by the number. We might write a program to appear as follows:Location Instruction Operand Notes 1000 b(2000) x 1001 m(2000) x 1002 h(2000) x2 x2 1003 b 1000 b(2000+n) 1004 a 1015 1 at 29 1005 h 1000 b(2001+n) 1006 b 1001 m(2000+n) 1007 a 1015 1 at 29 1008 h 1001 m(2001+n) 1009 b 1002 h(2000+n) 1010 a 1015 1 at 29 1011 h 1002 h(2001+n) 1012 s 1016 h 2100 flag 1013 t 1000 loop 1014 z 0000 stop 1015 1 at 29 augmenter 1016 h 2100 flagLocation Instruction Operand Results or or number notes 1000 b(2000) x 1001 m(2000) x x2 1002 h( 2000) x2 1003 b 1000 b(2000 + n) 1004 a 1011 1 at 29 1005 h 1000 Counter and augmented instruction 1006 y 1001 1007 y 1002 1008 s 1012 b 2100 flag 1009 t 1000 1010 z 0000 stop 1011 1 at 29 1012 b 2100 flagWe have been able to shorten the program by 4 steps because each y instruction takes the place of the b, a, h sequence. A y instruction can put the same address into instructions which have different orders.
More than one kind of data may be stored in a given word. For instance, a calendar date consists of three types of data: month, day an year. A word with these three types of data might look this way.+-+---------------------------------------------------------+ |0|1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0| +-+---------------------------------------------------------+ (month )( day )( year )Sometimes it is desirable to deal with only one of the three pieces of data. The extract order makes it possible to separate different data stored in one word. The instruction e 2000 means: put zeroes in the wore in the accumulator wherever there are zeroes in the word in location 200( but otherwise leave the word in the accumulator unchanged. For instance; if the above data word is in the accumulator and in location 2000 is the word+-+---------------------------------------------------------+ |1|1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0| +-+---------------------------------------------------------+ (month )then the result in the accumulator is the following word which contains only the month part of the date.+-+---------------------------------------------------------+ |0|1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0| +-+---------------------------------------------------------+ (month )The word in location 2000 is called the extract mask. It is possible with another extract instruction and mask to retain the day and not the month or the year, or to retain any part of any given word in the accumulator. The extract order achieves its result by multiplying bits in corresponding positions of the extract mask and the accumulator. That is, if there is a one in position 29 of both words, there is a one in position 29 of the result; otherwise, there is a zero.
The instruction n 2000 means multiply the contents of the accumulator by the contents of location 2000 and retain the least significant half of the product in the accumulator. The N multiply and the divide order which follows are both discussed further in connection with binary representation.
The instruction d 2000 means divide the contents of the accumulator by the contents of location 2000 and retain the rounded quotient in the accumulator.
Both the print and input orders are discussed under input output and control.
There are 16 orders available for constructing instructions in the LGP-30. An instruction contains an order part such as the letter a for add and an address part such as 2000. It must be emphasized that 2000 in the instruction a 2000 is the location of a number stored in memory and not the number itself. Further properties of the m, n, d, a, and s orders are discussed in connection with binary representation, but a summary of the properties of each order can be found all in one place at the back of the manual.
Just as a number system can be developed using the ten digits 0 through 9, so also a number system can be developed using only the two digits 0 and 1. This number system is called the binary system In counting with the decimal system, when the digits 0 through 9 have been used in the low order position, a one is placed to the left of the low order position and counting continues with 10, 11, 12, etc. In the counting with the binary system we also first use all the digits in the low order position and then place a one to the left of the low order position so that counting goes 0, 1, 10, 11, etc. The binary numbers equivalent to the decimal digits are as follows:Decimal digit Binary number 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001Number representation can be looked on as an efficient method of counting. That is, we need just the ten digits, not as many digits as the magnitude of number we wish to represent, because the digit to the left of the low order position represents the number of 10's. For instance, the number 1,234 is
- (1 x 103) + (2 x 102) + (3 x 101) + (4 x 100)
- (1 x 23) + (1 x 22) + (0 x 21) + (1 x 20)
(where the digits are decimal).
1010 = 101 102 = 210 10010 = 102 1002 = 410 100010 = 103 10002 = 810
Arithmetic in the binary system is similar to arithmetic in the decimal system.
- a. The rules for addition are
1. 0 + 0=0 2. 1 + 0 = 1 3. 1 + l= 10 (0 with 1 carried)As an example the sum of the two numbers 1011001 and 1001010 isCarries 1 0 1 1 0 0 0 1 0 1 1 0 0 1 1 0 0 1 0 1 0 ------------- 1 0 1 0 0 0 1 1- b. The rules for subtraction are:
1. 0 - 0 = 0 2. l - l = 0 3. l - 0 = l 4. 0 - l = l (with one borrowed)As an example the difference of the two numbers 11001011 and 1010110 isBorrows 1 1 0 1 1 1 0 0 1 0 1 1 - 1 0 1 0 1 1 0 ------------------ Difference O 1 1 1 0 1 0 1- c. The multiplication table for binary digits is
1. 0 x 0 = 0 2. l x 0 = 0 3. l x l = lThe rules for multiplication and division in longhand are exactly the same as the rules in the decimal system. For example the multiplication of 1.011 by 0.110 is1. 0 1 1 0. 1 1 0 ---------- 0 0 0 0 1 0 1 1 1 0 1 1 0 0 0 0 ----------------- 1. 0 0 0 0 1 0To facilitate the handling of the binary point in binary arithmetic, most computers are constructed so that the binary point is fixed either to the left of the most significant digit or to the right of the least significant digit.
Number Conversion and Scaling.
Let us consider how we might represent the decimal number 19 in the LGP-30. First of all, let us convert 19 into binary. To do this we first find the largest number representable by a power of 2 which is equal to or smaller than 19.- The number in this case is 24 or 16, or in binary, 10000. Conversion is easier to visualize if we represent the binary number as
- (1 x 24) + (0 x 23) + (0 x 22) + (0 x 21) + (0 x 20)
- (1 x 24) + (0 x 23) + (0 x 22) + (1 x 21) + (0 x 20)
By this time it should be easy to see that 19 in decimal is equivalent to 10011 in binary.
+-+---------------------------------------------------------+ |0|1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0| +-+---------------------------------------------------------+ ^^ ^ || | || + scaled binary point |+ binary point +sign bit q = 5If the number we wish to represent is small enough, it is possible to represent it at a negative q. For instance, 1/8 decimal is equivalent to 0.001 in binary and 0.1 in binary is 1/8 at q = -2. In this case we moved the number two places to the left with respect to the binary point.
Suppose we consider multiplying 2 and 3. In binary 2 is 10 and 3 is 11. Each can be represented in the LGP-30 at a binary scale factor q = 2. Hence 2 at q = 2 is .10 and 3 at q = 2 is .11+-+---------------------------------------------------------+ |0|1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0| +-+---------------------------------------------------------+In memory+-+---------------------------------------------------------+ |0|1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0| +-+---------------------------------------------------------+Result in the accumulator+-+---------------------------------------------------------+ |0|0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0| +-+---------------------------------------------------------+
If we add 2 and 3 each at q = 2, the result is 5 at q = 2 which in binary is 1.01. Since this number is not fractional, it cannot be held in the LGP-30. Hence, although a q = 2 was sufficient for multiplication of 2 and 3, 3 is the minimum q for adding 2 and 3. Numbers can be added only if they are at the same q.
When addition results in a number too large for the LGP-30, we say computation overflows. The result is that the machine stops computing at the add order. Overflow can occur as the result of subtraction when numbers of opposite signs are the operands. Overflow due to division can also occur. Multiplication can never result in overflow since the multiplication of fractions can never result in a number as large as 1.
An M multiply, however, has another characteristic worth noting. Suppose we multiply 3 at q = 30 by 2 at q = 2. The result should be 6 at q = 32. In the accumulator+-+---------------------------------------------------------+ |0|0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0| +-+---------------------------------------------------------+In memory+-+---------------------------------------------------------+ |0|1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0| +-+---------------------------------------------------------+Result in the accumulator+-+---------------------------------------------------------+ |0|0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0| +-+---------------------------------------------------------+
Suppose we divide 3 at q = 2 by 2 at q = 2. The result is 1.5 at q = 0 since the q of a quotient is the q of the dividend minus the q of the divisor. This result in binary is 1.1, which is too large for the machine to hold. In this case, too, we have an overflow and the LGP-30 stops computation. However, if we divide 3 at q = 3 by 2 at q = 2 the result is 1.5 at q = 1. In the accumulator+-+---------------------------------------------------------+ |0|0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0| +-+---------------------------------------------------------+In memory+-+---------------------------------------------------------+ |0|1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0| +-+---------------------------------------------------------+The result in the accumulator+-+---------------------------------------------------------+ |0|1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0| +-+---------------------------------------------------------+In case the result of division includes a remainder, the quotient is rounded to the nearest bit in the thirtieth place.
Negative number representation.
In the LGP-30, negative numbers are represented by their complements. A complement is formed by changing all the ones to zeroes and all the zeroes to ones and then adding one in the thirtieth position. The complement of 6 at q = 4 is as follows:+-+---------------------------------------------------------+ |0|0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0| +-+---------------------------------------------------------+-6 at q = 4+-+---------------------------------------------------------+ |1|1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0| +-+---------------------------------------------------------+Subtraction is performed by adding the complement of the number to be subtracted.
Let us reexamine the program for
- (((a0x + a1)x + a2)x + a3) x+ a4
to see what happens in the accumulator when the program is executed. Suppose again that x = 1/2, a0 = 32, a1 = 24, a2 = 16, a3 = 10, and a4 = 1. Suppose we convert the numbers representing x and the coefficients into binary.a0 = 100000. a1 = 011000. a2 = 001000. x = O.1 a3 = 001010. a4 = 000001.Next, let us scale these numbers. The minimum q for a0 is 6. Since all the coefficients play similar roles in the program, let us keep them all a q = 6. The variable x requires no scaling since it is already a binary fraction. Now let us examine what happens in the program.a0 = .100000 = 32 at q = 6 a0x = .010000 = 16 at q = 6 a0x + a1 = .101000 = 40 at q = 6 . . . . . . a0x4 + a1x3 + a2x2 + a3x = .001110 = 14 at q = 6 a0x4 + a1x3 + a2x2 + a3x + a4 = .001111 = 15 at q = 6Suppose, however, in the preceding problem, matters are complicated by having x = I instead of x = 1/2 Then the minimum q at which we can keep x is 1. In this case, the first steps result ina0 = .100000 = 32 at q = 6 a0x = .010000 = 32 at q = 7Note that we now can no longer add a1 as we did before because a1 is at q = 6 and a0x is at q = 7 and we are permitted to add terms only if they are at the same q. One solution to this problem is to enter the coefficients at different q's. However, this requires a good deal of effort on the part of the operator. The best solution is to enter the coefficients-in some unconverted and unscaled decimal form and have a program to convert and scale. Subroutines can be written called floating point routines which can take care of this problem, so that the LGP-30 can be used as a floating point machine.
One of the essential requirements of such a program is that it scale numbers by shifting. There are three orders in the LGP-30 which can be used for shifting, M multiply, N multiply, and divide.
Suppose, now we are interested in the result of a multiply as a magnitude and not simply as a shift. If we multiply I at q = 20 in the accumulator by I at q = 20 in memory, the result is I at q = 40. The result from M multiplication is lost, since I at q = 40 is not in the most significant half of the product. However, we have an order which can preserve the least significant half of a product as well as the most significant half. The order which the LGP-30 provides for this function is the N multiply. The instruction n 2000 means: multiply the number in the accumulator by the number in location 2000 and retain the 31st through the 61st bits of the product in the sign position and the 30 magnitude positions of the accumulator. Note that the sign position in this case represents magnitude and not sign. The sign of the product is found as a result of the M multiply. If one of the two operands is negative, the result relates to the sign of the product to the extent that it is complement in form. Why the thirtieth magnitude position of the result is sometimes significant is shown in the discussion of input and output.
A shorthand is useful to indicate each word, since it is somewhat space consuming and time consuming to write out 32 0's and l's. In order to develop such a shorthand the word is marked off into groups of four bits each to total 32 bits consisting of the sign bit, the 30 magnitude bits, and the spacer bit. There are 16 possible combination: for any group of four bits. Hence, each combination of four bits can be represented by one of a group of 16 characters. The following table shows single character representations for each of the 16 possible combinations and their decimal equivalents.Scaling for Range.Decimal and Hexadecimal Equivalents of Binary Numbers Binary Hexadecimal Decimal 0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 8 8 1001 9 9 1010 f 10 1011 g 11 1100 j 12 1101 k 13 1110 q 14 1111 w 15This method of single character representation is, in fact, the number system of base 16 called the hexadecimal system. Just as there are the two digits 0 and 1 in the number system base 2 and the ten digits 0 through 9 in the number system base 10, so also there can be digits 0 through W in the number system base 16.+-+-----+-------+-------+-------+-------+-------+-------+-------+ |0|1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0| +-+-----+-------+-------+-------+-------+-------+-------+-------+ ( 4 )( j )( 0 )( 0 )( 0 )( 0 )( 0 )( 0 )
Suppose we have a problem which requires computing ALQ2 for various values of A, L, and Q but where each variable is confined to a range of values as follows:12 x 10-15 <= A <= 523,000 x 10-15 0 <= L <= 9,9999 0 <= Q <= 125,000and we want our result in the range0 <= ALQ2 <= 12but we want our accuracy to supply the third decimal place from 0.000 to 12.000.
- 2n-1 <= x < 2n
then q = n is sufficiently large for qmin but if x = 2n, q = n is not large enough and qmin = n + l is required.We follow this procedure to determine that
- for A, qmin = -30
- for L, qmin = 14
- for Q, qmin = 17
If we are to provide for the whole range of values for our variables, we must be sure that our program can store the values of these variables at no smaller q's than these.
Table of Powers of 2
(42 K bytes in size)Next, by following the rule that multiplication implies the addition of q's, we determine that
- for AL, qmin = -16
- for ALQ, qmin = 1
- for ALQ2 ,qmin = 18
Since word length is 30 bits, there are 30-18 = 12 bits used for expressing the fractional part of the answer. Since 2-12 << 0.00110, the result is at a q sufficient to provide the accuracy required. Note that we might have specified conditions which could not have been met by single precision operation. Floating point subroutines are available which take care of all such scaling problems as these.
Binary Representation of Orders.
The order part of an instruction is contained in bit positions 12 through 15 in a word. Each of the 16 order letters is represented by a unique pattern of zeroes and one's located in these four bit positions. The following table gives the binary equivalents of the orders.INPUT OUTPUT AND CONTROLBinary equivalents of order letters z 0000 b 0001 y 0010 r 0011 i 0100 d 0101 n 0110 m 0111 p 1000 e 1001 u 1010 t 1011 h 1100 c 1101 a 1110 s 1111
Before discussing how to get information into the LGP-30, we must discuss the print order. A print instruction executes the typewriter keyboard function indicated by the 6 track bit. A print instruction affects only the typewriter and has no effect on any memory location, the accumulator, or the counter register. For example, p 2000 has 010100 in the track bits which is the code for a back space on the typewriter. The execution of p 2000, then, results in the typewriter's back spacing. The following table gives a complete list of typewriter keyboard codes.![]()
The print order provides the means for executing any typewriter function.
The instruction p 0000 must always be followed, but not necessarily immediately, by the instruction i 0000, the input instruction. This instruction transfers the characters read on the tape into the accumulator. No address portion other than 0000 is ever associated with the input order, and the instruction p 0000 always precedes the instruction i 0000.
Consider, now the following program.
Location Instruction
or NumberOperand Results or
Notes0000 p 0000 . start tape reader 0001 i 0000 . bring in a word 0002 c (2000) input word . 0003 b 0002 c( ) . 0004 a 0007 1 at 29 modify c( ) 0005 y 0002 c( ) . 0006 u 0000 . return to input 0007 1 at 29 . .
First, let us consider turning the power on. Turning on the typewriter is simple. Just flip the toggle switch to ON. The typewriter can be turned on even if the computer is not on, but the computer must be plugged in. To turn on the computer; For fifty seconds the STANDBY light is on to indicate that tubes are at half filament power. For fifty more seconds the STANDBY TO OPERATE light is on indicating that the tubes are at full filament power and that the drum motor is energized. When the operate light comes on, the D.C. voltages are applied and the computer is ready for use.
Second, let us look at some of the other switches on the typewriter and on the control console of the computer. The CONNECT switch on the typewriter when turned off prevents start signals from passing from the typewriter to the computer and start-read signals from going from the computer to the typewriter. When the MANUAL INPUT switch on the computer is depressed, keyboard characters typed on or read by the typewriter fill into the accumulator even though the CONNECT switch may be off. With the MANUAL INPUT switch depressed, recording in the memory is impossible, and therefore pressing the START switch by mistake can do no harm if an error has been made in typing. The FILL INSTRUCTION switch transfers the contents of the accumulator to the instruction register. When the ONE OPERATION switch is depressed, pressing the START switch executes one instruction at a time. The instruction executed is the one contained in the location given by the counter register. However, if the EXECUTE INSTRUCTION switch is depressed when the ONE OPERATION switch is down, it is the instruction in the instruction register which is executed.![]()
Finally, let us consider the hexadecimal representation of instructions. Consider, for instance, the binary representation of the instruction c 2710.+-+-----+-------+-------+-------+-------+-------+-------+-------+ |0|0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 1 0 0 1 0 1 0 0 0| +-+-----+-------+-------+-------+-------+-------+-------+-------+ |<- c->| |<- 2710 ->|<- 1010 ->| ( 0 )( 0 )( 0 )( c )( 1 )( g )( 2 )( 8 )27/16 = 1 (+ remainder) 27-(lx16) = 11 = g 10/4 = 2 (+ remainder) (10 - 2x4) x 4 = 8
Now suppose we want to put the instruction p 0000 into location 0000.
- Depress MANUAL INPUT switch on computer control console
- Turn CONNECT switch off
- Turn on the typewriter and the computer
- Type c0000 on typewriter keyboard
- Depress FILL INSTRUCTION switch
- Type 000p0000 on typewriter keyboard
- Depress ONE OPERATION switch (8) Depress EXECUTE INSTRUCTION switch
The instruction p0000 has now been stored in location 0000.
- c0000'000p0000'c0004'000i0000' . . . etc.
- "Depress START READ switch on the typewriter."
and to fill the entire bootstrap we would add instruction (9)"Return again to step (3) until all the words of the bootstrap routine are filled into memory."c0000'000p0000'c0004'000i0000'c0008'000cxxxx'c000j'000b0008'c00l0'000a001j' c0014'000y0008'c0018'000u0000'c001j'000z0004'Carriage return codes may be interspersed among instructions on the tape in order to limit line length for typing. When used, carriage return codes should follow the stop orders.
Now let us execute the bootstrap.
- Turn CONNECT switch on
- Depress CLEAR COUNTER switch. This action puts zero in the counter register so that the next instruction to be executed is the instruction in location 0000. Since we usually place a program input routine such as the bootstrap starting in location 0000, clearing the counter is the quickest way to get to the program input routine. Either the MANUAL INPUT switch or the ONE OPERATION switch must be down, not the NORMAL switch.
- Depress the NORMAL switch
- Depress the Start switch
- When the last word on the tape has been read, depress the STOP READ switch on the typewriter.
The bootstrap input routine described has several shortcomings. For one thing, it requires manually filling the initial address- of the clear instruction, called the start fill address. For another, both numbers and instructions must be put in hexadecimal. However, a simple bootstrap such as this can be used to load another program capable of filling instructions expressed in decimal form, of distinguishing between instructions and data words, and of accepting a word on tape as a start fill instruction. Such a program input routine is described in the Subroutine Manual for the LGP-30.
If we wish to execute a program located somewhere other than in 0000. we cannot use the CLEAR COUNTER switch to reach it. To transfer manually to any location in memory At this point 2000 appears in the counter register. Next, if we depress the NORMAL switch and the START switch, the program beginning in 2000 is executed.
The pair p 0000 and i 0000 need not appear only at the beginning of a program input routine. They can appear in the middle of a program to bring in more data. We could have added them to the program discussed earlier so that values for x and the coefficients a0 through an, could have been brought in from tape. When these instructions are included in a program, be sure that the CONNECT switch is on. If the MANUAL switch on the typewriter is depressed when the p 0000 and i 0000 pair are executed, the reader does not start but the MANUAL FILL light on the typewriter comes on. When this happens data can be entered from the keyboard. After the desired characters have been typed, depressing the START COMPUTER switch on the typewriter continues execution of the program.
Typing a character such as 9 for input fills the last four bits of the accumulator so that 1001 appears in the 28th, 29th, 30th, and spacer positions of the accumulator. Hence, although the spacer for a word in a memory location is always zero, it may be a one in the accumulator. In order not to lose this bit by storing immediately following accumulator fill, it is often worthwhile to execute an N multiply by a 1 at 30 in order to shift the input word by one bit.
The typewriter handbook covers those functions of the typewriter which do not relate to the computer such as punching a tape. However, it is worth noting that a good safety precaution in punching tape or otherwise using the typewriter by itself is to turn the CONNECT switch off to prevent the interchange of start signals between the computer and the typewriter and to depress the MANUAL INPUT switch on the computer so that recording in memory is prevented.
An oscilloscope on the LGP-30 makes it possible to read the contents of the accumulator, the instruction register, and the counter register in binary representation. Wherever there is a square wave on the scope there is a one stored; otherwise, there is a zero stored. For instance,
- _|-|_|-|
represents 0101 in binary or 5 in decimal. In ONE OPERATION the LGP-30 executes a program one at a time as the START switch is depressed. The middle line on the scope shows a binary representation of the instruction which has been executed as the result of the last depression of the START switch. The counter register shown on the top line, gives the address of the next instruction to be executed, and the accumulator, shown on the bottom line, shows the results. In MANUAL INPUT, when the START switch is depressed successively, the contents of successive locations appears in the instruction register. The counter register, in this case also, gives the address of the location following the one shown in the instruction register. No change in the appearance of the accumulator occurs in this mode of operation since the contents of locations are simply being observed and instructions are not being executed. In ONE OPERATION the same instructions appear successively in the instruction register as in MANUAL INPUT except in the case of unconditional transfer instructions and test instructions which may result in a transfer.
If computation is to stop, the address portion of the stop instruction is usually of no significance. However, the stop order has a special' characteristic. If there is a one in the third bit from the right hand end of the track portion of a stop instruction,-------------- bit numbers ---------------------------- 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -------------- bit values ----------------------------- 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 (-------) (----------)(------------) order bits track bits sector bits = z = 4 = 00
Track bits Break Point Switch 000100 4 001000 8 010000 16 100000 32
The test order has one special
characteristic. If it is stored in memory with a one in the sign
position
-------------- bit numbers ----------------------------
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-------------- bit values -----------------------------
1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0
^ (-------) (----------)(------------)
| order bits track bits sector bits
| = t = 20 = 00
one in sign position
When a print instruction other than p 0000 is executed, a signal goes to the typewriter to execute a typewriter character or function such as the letter "a" or a carriage return. However, unlike the case when there is an input instruction following the print instruction, computation does not stop. After the typewriter has executed the character or function it sends a start signal to the computer. Hence, it is desirable to have computation in the computer stop before the completion of character execution at the typewriter. Therefore, a stop instruction should follow a print instruction. Since the execution of a typewriter character requires about 6 drum revolutions computation requiring up to 6 drum revolutions may occur between a print instruction and the following stop instruction.
To turn power off, first depress the MANUAL INPUT switch and then depress the POWER OFF switch. In MANUAL INPUT mode of operation, recording in the memory is impossible so that transients occurring when the LGP-30 is turned off cannot affect the contents of memory.
An instruction consists of an order part
such as the letter b for bring and an address part such as the
number 2000 to designate a memory location. All instructions have
a similar appearance in an LGP-30 word. The order bits occupy
positions 12 through 15 of the word and the address bits occupy
positions 18 through 29 of the word. For instance, the
instruction b 2000 appears as
-------------- bit numbers ----------------------------
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-------------- bit values -----------------------------
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0
(-------) (----------)(------------)
order bits track bits sector bits
= bring = 20 = 00
( address = 2000 )
Letter designation:Hold and Store:
b which is equivalent to 0001 binary, 1 decimal, 1 hexadecimal
Example of a bring order as used in an instruction:
Letter designation:Clear and Store:
h which is equivalent to 1100 binary, 12 decimal, j hexadecimal
Example of a hold order as used in an instruction:
Letter designation:Store Address:
c which is equivalent to 1101 binary, 13 decimal, k hexadecimal
Example of a clear order as used in an instruction:
Letter designation:Unconditional transfer;
Letter designation:Return address;
u which is equivalent to 1010 binary, 10 decimal, f hexadecimal
Example of an unconditional transfer order as used in an instruction:
Letter designation:Test:
r which is equivalent to 0011 binary, 3 decimal, 3 hexadecimal
Example of a return address order as used in an instruction:
Letter designation;Stop:
t which is equivalent to 1011 binary, 11 decimal, g hexadecimal
Example of a test order as used in an instruction.-------------- bit numbers ---------------------------- 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -------------- bit values ----------------------------- 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 ^ (-------) (----------)(------------) | order bits track bits sector bits | = t = 20 = 00 one in sign position
Letter designation:Print:
z which is equivalent to 0000 binary, 0 decimal, 0 hexadecimal
Example of a stop order as used in an instruction:-------------- bit numbers ---------------------------- 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -------------- bit values ----------------------------- 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 (-------) (-----------)(------------) order bits track bits sector bits = t = 04 = 00
Track bits Break Point Switch 000100 4 001000 8 010000 16 100000 32
Letter designation:Input:
p which is equivalent to 1000 binary, 8 decimal, 8 hexadecimal
Letter designation;AddNotes:
The address portion of an instruction constructed from this order
Letter designation:Subtract:-------------- bit numbers ---------------------------- 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -------------- bit values ----------------------------- In location 2000: 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 In the accumulator: 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 The result in the accumulator after execution is: 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0which is not 5 at any scale factor and hence has no significance in relation to the process of adding 2 and 3.
Letter designation;M Multiply:
s which is equivalent to 1111 binary, 15 decimal, w hexadecimal
Example of a subtract order as used in an instruction:0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0In the accumulator:0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0Complement of minuend:1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0Result in accumulator:0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0The result, of course, is 3 at a scale factor q = 3.
Letter designation:N multiply:
m which is equivalent to 0111 binary, 7 decimal, 7 hexadecimal
Example of an M multiply order as used in an instruction:0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0In memory:0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0Result:0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0As noted under add in this appendix, numbers to be added must be at the same scale factor. Hence, it is sometimes necessary to shift one of the numbers to be added so that it is at the same scale factor as the other. For instance, in the example above, the number in memory can as well be interpreted as I at a scale factor q = 3 as 2 at a scale factor q = 4. The result then can be interpreted a; 3 at a scale factor q = 6. Hence we can shift a number to the right using an M multiply by an amount equal to the scale factor at which we carry the I in the multiplier. In this case we shifted 3 from a scale factor q - 3 to a scale factor q = 6.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0Note that the result when an M multiply is used, is 6 at a scale factor q = 30 instead of 6.5. The reason is that it requires 31 bits to express 0.5 at a scale factor q = 30 and only the most significant 30 bits of the 61 bit product are retained by an M multiply. Note that the last bit in the above representation of the result is the spacer bit which is always zero as a result of an M multiply. This example also serves to point out the fact that an M multiply results in a truncated, not a rounded product.Another type of multiply, the N multiply, is described in the section that follows.
Letter designation:Divide:n which is equivalent to 0110 binary, 6 decimal, 6 hexadecimal
Example of an N multiply order as used in an instruction:
As pointed out in the discussion of the M multiply, scale factors add.
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1In memory:0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0Result:0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 01 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0which is, in this case, 0.5 at q = 31. Hence, the one in the sign position represents, in this case, magnitude and not sign. However, if one of the operands is negative, the sign of the product is represented to the extent that the result of the N multiply is complement in form although the sign bit is not included.
Letter designation:Extract:
d which is equivalent to 0101 binary, 5 decimal, 5 hexadecimal
Example of a divide order as used in an instruction:0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0In memory:0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0The result in the accumulator:0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0In case the result of division includes a remainder, the quotient is rounded to the nearest bit in the thirtieth place.
Letter designation;
e which is equivalent to 1001 binary, 9 decimal, 9 hexadecimal
Example of an extract order as used in an instruction:+-+---------------------------------------------------------+ |0|1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0| +-+---------------------------------------------------------+ (month )( day )( year )Sometimes it is desirable to deal with only one of the three pieces of data. The extract order makes it possible to separate different data stored in one word. The instruction e 2000 means: put zeroes in the wore in the accumulator wherever there are zeroes in the word in location 200( but otherwise leave the word in the accumulator unchanged. For instance; if the above data word is in the accumulator and in location 2000 is the word+-+---------------------------------------------------------+ |1|1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0| +-+---------------------------------------------------------+ (month )then the result in the accumulator is the following word which contains only the month part of the date.+-+---------------------------------------------------------+ |0|1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0| +-+---------------------------------------------------------+ (month )The word in location 2000 is called the extract mask. It is possible with another extract instruction and mask to retain the day and not the month or the year, or to retain any part of any given word in the accumulator. The extract order achieves its result by multiplying bits in corresponding positions of the extract mask and the accumulator. That is, if there is a one in position 29 of both words, there is a one in position 29 of the result; otherwise, there is a zero.
| Type: | General purpose, electronic, digital, single address, fixed binary point, fractional, stored program |
| Number Base: | 2 (binary) |
| Word Length: | 9 decimal digits plus sign (30 binary bits plus sign bit and spacer bit) |
| Mode of Operation: | Serial |
| Memory: | Magnetic drum, 4096 words, 3 one word recalculating registers. |
| Clock Frequency: | 120 KC |
| Access Time: | 2 ms. minimum, 17 ms. maximum |
| Transfer Time: | 1 ms. minimum, 17 ms. maximum |
| Addition Time: | .26 ms. excluding access time |
| Multiplication or Division Time: | 17 ms. excluding access time |
| Input-Output: | Paper tape or electric typewriter |
| Size: | Depth - 26", Length - 44", Height - 33" |
| Weight Uncrated: | 740 lbs |
| Cooling System: | Internal forced air blower |
| Heat Dissipation: | 5000 B.T.U. /hr. |
| Power Requirement: | 115-volt, 60-cycle, single phase, 13 ampere alternating current |
| Number of Tubes: | 113 |
| Number of Diodes: | 1350 |