G2's Blog

Speedcoding (DRAFT)

February 9, 2025

This is a transcription of the manual for the Speedcoding interpreted high-level programming language, also known variously as Speedcode and SpeedCo I. This version is dated September 10, 1953. This was taken from a PDF scanned by the Computer History Museum. Their website also contains an earlier version of the same manual.

This manual is entitled IBM speedcoding system for the type 701 electronic data processing machines, INTERNATIONAL BUSINESS MACHINES CORPORATION.

Foreword

The IBM Type 701 Speedcoding System was designed to minimize the amount of time spent in problem preparation. It is applicable to small computing problems and to many large computing problems. Because programming for the IBM Electronic Data Processing Machines, Type 701 and Associated Equipment, is developing rapidly and because it is advantageous to make changes in the system easily and informally, this manual will be obsoleted fairly often, and new revisions published.

It is hardly possible to assign credit for the IBM Speedcoding System because the group in IBM which developed the system has benefited from the suggestions of so many. Historically, the ingenious development of general purpose systems for the IBM Card Programmed Calculator certainly influenced the basic thinking. Once the IBM 701 was announced, scientists concerned with preparing for these machines actively considered the problem of reducing problem preparation. Many useful and provocative ideas in this area were discussed in Poughkeepsie, New York, during the week of August 25-28, 1952, when representatives from the following organizations met to consider programming ideas: Boeing Airplane Company, Douglas Aircraft Company (El Segundo and Santa Monica), General Electric Company, International Business Machines Corporation, Lockheed Aircraft Corporation, Los Alamos Scientific Laboratory, National Bureau of Standards, U. S. Naval Ordnance Laboratory, U. S. Naval Ordnance Test Station (Inyokern), North American Aviation, Inc., United Aircraft Corporation, Bell Telephone Laboratories, RAND Corporation, U. S. Atomic Energy Commission. At that meeting there were specific discussions of systems analogous to Speedcoding.

The group at IBM which developed the Speedcoding System undertook to do so after discussing such systems with Dr. Willard Bouricius, head of the Type 701 Planning Group at Los Alamos Scientific Laboratory. This group, under the direction of Mr. Bengt Carlson, had completed a program with objectives similar to those of Speedcoding. Many discussions were held with Mr. Stuart Crossman's group at United Aircraft, particularly with Mr. Walter Ramshaw, whose assistance was extremely helpful in organizing and collating information and text.

Finally, appreciation is expressed to those at IBM who have been most closely associated with the Speedcoding project since its beginning in January, 1953. These are: Mr. John Backus, who supervised the project, Mr. Harlan L. Herrick, Mr. Donald A. Quarles, Jr., Mr. Sherwood Skillman, Mr. John Pulos, and Miss Lucy A. Siegel. The project was carried out under the general direction of Mr. John Sheldon.

Contents


TYPE 701 SPEEDCODING SYSTEM

General Information

SpeedCo I is the name of a system—an integrated combination of a large-scale digital computer and a method by which that computer may readily be programmed to solve scientific and engineering problems.

The computer used is the IBM Type 701. Its internal high-speed memory on cathode-ray tubes will be referred to as the electrostatic memory. When the amount of storage available in the electrostatic memory is not large enough, magnetic drums are used to store and supply large blocks of information for ready access at frequent intervals. The drum memory is also capable of retaining its contents while the power is turned off, so that intermediate results remain available overnight when the machine is shut down. Any part of the information on the drums may be selectively altered by SpeedCo I at any time.

If a larger secondary memory is needed, or if information is to be filed away for future reference, magnetic tapes may be used instead of magnetic drums. Magnetic tape is a storage and input-output medium that provides compactness, allows rapid reading and writing, and can be re-used many times.

To achieve greater computing efficiency, the machine works internally in the binary number system. The user of SpeedCo I will find, however, that this fact does not in any way affect the programming. During SpeedCo I operation all numbers introduced into the machine and all results printed by the machine are expressed in the decimal number system. SpeedCo I automatically performs all necessary conversions between the decimal and binary number systems.

The programs may be written and introduced into the computer in various ways. Usually the instructions are key-punched on cards and read into the machine. If the program is to be preserved for future use, it can then be recorded on tape and filed away in compact form. To prepare the machine for calculation, the appropriate magnetic tapes are inserted in the tape units, and the cards containing the instructions and data of the problem are placed in the hopper of the card reader. Pushing a button then causes the machine to store the program and data of the problem and start calculating. From then on, operation of the computer is fully automatic, with all its components under complete control of the program, although it is possible for the operator to interrupt the calculation manually at any time.

The primary unit of information handled by SpeedCo I consists of 72 binary digits and is called a word.

Storage

Information may be stored in electrostatic storage, on magnetic drums, and on magnetic tape. The following description covers, in general terms, the nature and extend of each of these storage media.

Electrostatic Storage

The heart of the machine is the electrostatic storage unit, through which all information to and from all other components of the machine must pass. Electrostatic storage consists of a bank of cathode-ray tubes. Information is stored on the screens of the tubes through the presence or absence of charged spots at certain locations on the screens. In this way a certain number of binary digits (or bits) may be stored on each tube. SpeedCo I provides for 714 words of this sort of storage.

The principal advantages of electrostatic storage over other types are the very small time necessary to extract information from any given location and send it to the computing unit, and the fact that the programmer has random access to any electrostatic storage location. Information is lost when the power is turned off.

Magnetic Drum Storage

Additional storage capacity is provided by two magnetic drums. These drums are rotating cylinders surfaced with a material that can be magnetized locally. Binary digits are stored on a drum through the presence or absence of small magnetized areas at certain locations on the surface of the drum. Each drum has a storage capacity of 1024 words. Information is transmitted to and from drum storage only through electrostatic storage. When such a transfer of information occurs, the machine is said to write on or read from the drum.

Any part of the information on a drum can be selectively altered by SpeedCo I at any time. Because access to individual words on a drum is slow compared to electrostatic storage access, it is more efficient to use the drums for storing large blocks of information. After the first word of such a block has been located, the remaining words are read at the rate of 400 per second. Magnetic drums will retain stored information even when the power is turned off.

Magnetic Tapes

There is also a tape-storage section which includes four magnetic tape units. Each tape, which may be up to 1400 feet long, is wound on a reel. The tape itself is a non-metallic, oxide-coated band one-half inch wide. Binary information is recorded on tape by means of magnetized spots. A block of words recorded consecutively on a tape is called a record or a unit record. The amount of information contained on each tape depends on the lengths of the individual records, because there is a certain amount of space between successive records to allow for starting and stopping the tape. It is possible to store approximately 140,000 words on each tape. The machine can read or write on a tape only through the medium of electrostatic storage. On the average, about 10 milliseconds are needed for the tape to accelerate to its reading or writing speed, after which the reading or writing of a unit record takes place at the rate of 625 words per second. Because the tapes are removable, a library of standard programming and mathematical tables may be kept on tapes.

Computing

The numbers handled by SpeedCo I are expressed in scientific, or floating-point, notation. Every number read, stored, computed, or printed is of the form

where is the fractional part, is the radix of the number system used, and is the exponent.

All numbers that are of direct concern to the programmer (that is, all numbers read into or printed by the machine) are expressed in the decimal system. For these numbers the following relationships apply:


  1. For less restricted input, see Appendix B

Note particularly that the absolute value of the decimal exponent of any quantity read into or printed by the machine may not be greater than 236. Any attempt to read or print an exponent that does not fall in this range will result in an automatic machine stop.

The fractional part is a ten-decimal digit fraction. Hence the maximum precision attainable by SpeedCo I is one part in .

Numbers that do not come to the direct attention of the programmer (that is, numbers handled inside the machine) are expressed in the binary system. For these numbers the corresponding relationships are:

As has been pointed out above, the necessary conversions between the decimal information read into and printed by the machine and the binary information used inside the machine are performed automatically by SpeedCo I. Note, however, that SpeedCo I permits the binary quantities inside the machine a much greater magnitude range than is permitted those quantities to be converted to decimal and printed. In this connection the programmer should not attempt to print any quantity whose decimal exponent is larger, in absolute value, than 236.

It is important to note that because of the intrinsic error involved in conversion from the decimal floating-point form to the binary floating-point form, the programmer should not expect an exact correspondence between his decimal input and the resulting binary numbers stored in the machine. For example, the floating-decimal number with fractional part and exponent part (which is a floating-decimal representation of the integer 1) happens to result in the stored binary number .

Numbers are stored in the various memory organs of the machine as shown in Figure 1.

Because bits are about equivalent in information content to one decimal digit, the 35 bits allotted to the fractional part are more than adequate to preserve the precision of the ten decimal-digit-input quantities.

Bit Positions Item
1 Sign of the quantity
2 - 36 Fractional part
37 Sign of the exponent
38 - 54 Exponent
55 - 72 These bit positions are not used
Figure 1

Each portion of the electrostatic memory capable of storing a word is called a storage location or a memory cell. These locations are numbered. The number associated with any particular location is called its address. In SpeedCo I the 714 locations available to the programmer are numbered from 300 to 1013, inclusive.

In describing a program, it is frequently necessary to refer to a particular location in memory. These references are often conveniently abbreviated by referring merely to the address itself. For instance, the phrase "x is stored at a" is customarily used in place of the more precise phrase "the quantity x is located in that memory cell whose address is the integer a." The same phrase is often further abbreviated to:

Similarly, it is often necessary to refer to the word stored in a particular memory cell. This word is usually referred to as "the contents of a" or "the quantity at a" where in both cases the precise phrase abbreviated is "the quantity located in that memory cell whose address is the integer a." The symbolic abbreviation used here is:

To cause SpeedCo I to carry out a numerical calculation, the programmer must supply four pieces of information. The first of these, referred to as OP1 tells the machine which numerical operation it is to perform. The second and third, designated and , are the addresses in electrostatic storage, of the two operands. The fourth, , is the address of the electrostatic memory cell in which the result is to be stored.

This information having been supplied, SpeedCo I then selects the two numbers located at memory cells and , performs upon them the operation OP1, and sends the result to electrostatic memory cell C where it is stored in place of the previous contents of .

The following paragraphs describe the elementary arithmetic operations in general terms. The actual methods and instructions necessary for performing these operations are explained later.

Addition and Subtraction

The addition operation is performed as follows.

The exponent at is compared with the exponent at . If these exponents are not equal, the fractional part associated with the smaller exponent is shifted to the right as many binary places as are necessary to make the two exponents equal.

The fractional parts are then added algebraically. Next the machine checks the fractional part of the result. If the absolute value of this fractional part is in the range equal to or greater than one-half and less than one, the fractional part and the exponent are stored at . If this absolute value falls outside this range, however, the fractional part itself is shifted to the left or right as necessary to restore it to this range, and the exponent is modified accordingly. The new fractional part and exponent are then stored at . In the case where the two operands are exactly equal and of opposite sign, plus zero is stored as the fractional part of the result, and the decimal equivalent of the stored exponent of the result becomes minus 235.

Subtraction proceeds in exactly the same way—except, of course, that the fractional part at is algebraically subtracted from the fractional part at .

Both addition and subtraction may also be performed, if the programmer so desires, by using the absolute value of the quantity at in conjunction with either the algebraic or the absolute value of the quantity at .

Multiplication

Two computations are performed. In one, the fractional part at is multiplied by the fractional part at . In the other, the exponent at is added to the exponent at . The absolute value of the product of the fractional parts is then checked.

If this absolute value is equal to or greater than one-half, the product of the fractional parts is then the fractional part of the product, and the sum of the exponents is the exponent of the product. These numbers are therefore stored at . If, on the other hand, the absolute value of the product of the fractional parts is less than one-half, the fractional part of the product is obtained by doubling the product of the fractional parts, and the exponent of the product is formed by reducing the sum of the exponents by one. These modifications having been made, the result is then stored at .

Two multiplication operations are available. The one forms the product with its correct algebraic sign. The other forms the negative of the product.

Division

Here also two computations are performed. In one, one-half of the fractional part at is divided by the fractional part at to obtain a 35-bit rounded quotient. In the other, the exponent at is subtracted from the exponent at . The absolute value of the quotient of the fractional parts is then checked. If this absolute value is less than one-half, the fractional part of the quotient is taken as twice the quotient of the fractional parts, and the difference of the exponents is the exponent of the quotient. If, on the other hand, the absolute value of the quotient of the fractional parts is greater than or equal to one-half, the fractional part of the quotient is taken as the quotient of the fractional parts, and the exponent of the quotient is formed by increasing the difference of the exponents by one. These modifications having been made, the result is then stored at .

Two division operations are available. The one forms the quotient with its correct algebraic sign. The other forms the negative of the quotient.

If during any division operation the fractional part of the divisor happens to be zero, the calculator will stop and a signal light called the Divide-Check light will light up on the operator's panel.

Elementary Arithmetic Operations: General

Note that each of the above ten operations takes two numbers already expressed in the standard floating-binary form previously specified, performs upon them the desired elementary arithmetic operations, and then adjusts the result so that it, too, is in the standard form.

Note also that the result returned to memory by any one of these operations is not rounded—except in the case of division, where either a 35-bit or a 34-bit rounded quotient is obtained.

Control

SpeedCo I is a stored program system in which the programmer's instructions to the machine are all stored in the machine's memory before the calculation begins. The procedure leading to this result is:

  1. The programmer analyzes his problem and breaks its solution down into the basic steps thatSpeedCo I can perform.

  2. By means of an alphamerical code, determined by the design of SpeedCo I, he translates these steps into a form that can be interpreted by the machine. Each of these steps, which will here after be referred to as an instruction, is then stored in the machine's memory.

  3. Data necessary for the solution of the problem are also stored in the memory of the machine.

  4. Upon completion of this storing process, calculation automatically begins with the execution of the instruction which is at that time in electrostatic memory cell 300. From this point on the machine operates without any further intervention on the part of the programmer, automatically locating and executing all succeeding instructions of the program.

A complete analysis of the SpeedCo I instruction system follows.

Program Counter

The numerical representation of an instruction occupies the space of one word in memory. SpeedCo I instructions may temporarily be stored on drums or tape, but at the time they are to be used they must be in electrostatic storage.

A program contains a set of instructions, usually to be executed in sequence, which will cause the machine to compute a desired result. These instructions are ordinarily introduced into consecutively-numbered storage locations in the order in which they are to be executed. The reasons for this follow.

Each time an operation is to be performed, the machine looks up the instruction in electrostatic memory, executes it, and then goes back to the memory for the next instruction. The order in which instructions are executed is controlled by the program counter. This counter contains the address of the instruction currently being executed. After each execution, the number in this counter is automatically increased by one. Consequently, the machine automatically takes its next instruction from that electrostatic storage location whose address is one higher than the address of the cell from which the current instruction was obtained. In this way the machine continues to execute instructions in the sequence in which they were stored in memory.

This normal sequence of instructions can be altered by means of certain transfer operations explained below. By means of these operations, any electrostatic storage location from 300 to 1013 inclusive can be designated as the source of the next instruction. The transfer operation used accomplishes this result by placing into the program counter the address of the designated storage location. Following this, the machine looks up and executes the instruction in the designated memory cell; thereafter, execution of the program proceeds sequentially from this new electrostatic storage location. Under these circumstances, a transfer of control is said to have occurred.

An important observation about stored program technique should be noted. Instructions are stored in the machine just like numerical data; the only distinction between the two is the way they are interpreted by the machine. Hence the addresses that are part of SpeedCo I instructions may be modified while they are in the machine through the use of special operations. Thus, one part of a program may modify an other instruction of the same program by directing the machine to compute a new address, or new addresses, for the instruction to be modified.

A further consequence of the fact that both data and instructions are stored in the machine's memory in the form of binary words is that if, for any reason, a transfer operation enters the address of a piece of data into the program counter, the data at that location will be interpreted as if it were an instruction. Exactly what will happen when SpeedCo I attempts to execute this instruction is in general quite unpredictable, but certainly such misuse of a transfer operation is bound to result in erroneous calculations.

A further similar difficulty will arise if a transfer operation enters any address from 0 to 299 or 1014 to 1023 into the program counter. During SpeedCo I operation these electrostatic-storage regions are always occupied by a block of control information. If it were not for this control information, the 701 would operate under the guidance of its own built-in control circuits only, and would therefore behave as a fixed-point binary calculator. The combination of the built-in 701 circuitry and the control information (stored in electrostatic memory cells 0 to 299 and 1014 to 1023) enables SpeedCo I to read and print in the decimal system, to calculate on a floating-point basis and to perform those other SpeedCo I operations that are not part of the machine's built-in order code.

Because this control information has been stored in these electrostatic locations, it is necessary that SpeedCo I programs be so written as to use only those memory cells with addresses from 300 to 1013 inclusive. In particular, a transfer operation that enters any number not in this interval (300 to 1013) into the program counter, is always in error, since it will cause the control information at that location to be interpreted as if it were an instruction. Here too it is impossible to predict exactly what will happen when SpeedCo I attempts to execute this instruction, but it is again true that the results will be erroneous.

Instruction Layout

Each operation that SpeedCo I can execute is assigned an alphabetical-code designation and a numerical-code designation. The alphabetical designations have been chosen on a mnemonic basis, and consist of combinations of from two to five letters each. These alphabetical designations are solely a programming convenience, however, because the calculator is not able to recognize them. If the programmer has prepared his program using these alphabetical designations, his instruction cards must first be processed on standard IBM sorting and gang punching equipment. The effect of this preliminary processing will be to punch in the cards of his instruction deck the numerical code designations that correspond to the various alphabetical code designations used in his program. This having been accomplished, the instruction cards are then ready to be loaded by SpeedCo I, because the machine uses the numerical designations to identify the desired operations.

If the programmer is willing to forego the mnemonic advantages of the alphabetical code, there is no reason why he cannot prepare his program entirely in numerical form, specifying each desired operation by giving its numerical designation. This procedure has the advantage of making the preliminary sorting and gang-punching operations referred to above unnecessary.

Each numerical code designation is a three-digit integer. The complete list of all SpeedCo I operations, together with their alphabetical and numerical code designations, appears in the section entitled Operations.

In general, each SpeedCo I instruction may specify two distinct operations, referred to as OP1 and OP2. A summary of the OP2 operations is as follows: elementary arithmetic operations, computation of square root, evaluation of elementary trigonometric and exponential functions, transfers of information between tapes or drums and electrostatic storage, and final-result printing.

The addresses , and are used in connection with the OP1 operations.

Frequently it is desirable to be able to execute the same series of instructions a number of times, each time increasing or decreasing any or all of the addresses , and/or by one. As will be explained in the section entitled Address Modification, SpeedCo I provides a convenient means of accomplishing this purpose. In order to designate which addresses, if any, should be so modified, the programmer includes in each instruction a quantity called the R-code. In addition to the above information, each instruction (in all but a few exceptional cases to be pointed out later) can also call for an OP2 operation.

A summary of the OP2 operations follows: conditional and unconditional transfers of control, address-modification operations, and error-checking operations.

Each instruction also contains an address portion designated . The address is used in connection with almost all OP2 operations.

Finally, every instruction contains a portion designated L. The numbers coded here, together with the positions of certain switches on the operator's panel, control a detailed listing of the entire program—instructions, intermediate results and final results. This feature is extremely helpful in tracking down programming errors when the program is first being tested.

Instructions are stored in the various memory organs of the machine as shown in Figure 2.

Bit Positions Item
1 Sign of instruction (automatically supplied by SpeedCo I)
2 Always zero
3 - 5 R-code
6 Always zero
7 - 18 OP₁
19 - 26 OP₂
27 - 36 D
37 Always zero
38 - 47 A
48 - 57 B
58 - 59 Always zero
60 - 62 L
63 - 72 C
Figure 2

Operations

Following is a list of all SpeedCo I operations. For convenient reference, the descriptions are given in abbreviated form. Complete descriptions of all these operations appear in other sections.

OP1 Operations

Alphabetical Code Numerical Code Name Description
ADD 658 Add
SUB 696 Subtract
ADDAB 699 Add absolute
ABADD 703 Absolute add
SUBAB 707 Subtract absolute
ABSUB 711 Absolute subtract
MPY 715 Multiply
NGMPY 731 Negative multiply
DIV 734 Divide
NGDIV 748 Negative divide
SQRT 782 Square root
SINE 780 Sine
ARTAN 781 Arc tangent
EXP 783 Exponential
LN 784 Logarithm
MOVE 690 Move The block of information stored in electrostatic cells to is stored in electrostatic cells to . See Appendix E.
WRTPJ 532 Write tape The block of information stored in electrostatic cells to is written on the designated tape. The most recent previous instruction affecting the same tape must be either WRITE or REWIND.
WRTPK 533 Write tape
WRTPL 534 Write tape
WRTPM 535 Write tape
RFTPJ 435 Read forward tape The first B - A + 1 words of the next block of information stored on the designated tape are read and stored in electrostatic cells to . (Notes 1, 3, and 4.)
RFTPK 437 Read forward tape
RFTPL 439 Read forward tape
RFTPM 441 Read forward tape
RBTPJ 416 Read backward tape The first words of the preceding block of information stored on the designated tape are read and stored in electrostatic cells to . (Notes 2, 3, and 5.)
RBTPK 417 Read backward tape
RBTPL 418 Read backward tape
RBTPM 419 Read backward tape
SFTPJ 556 Skip forward tape The designated tape is advanced (without being read) to the end of the next block of information. (Notes 1 and 4.)
SFTPK 557 Skip forward tape
SFTPL 558 Skip forward tape
SFTPM 559 Skip forward tape
SBTPJ 546 Skip backward tape The designated tape is backspaced (without being read) to the beginning of the preceding block of information. (Notes 2 and 5.)
SBTPK 547 Skip backward tape
SBTPL 548 Skip backward tape
SBTPM 549 Skip backward tape
RWTPJ 572 Rewind tape The designated tape is rewound to its starting position. The most recent previous instruction affecting the same tape may have been anything except WRITE.
RWTPK 574 Rewind tape
RWTPL 576 Rewind tape
RWTPM 578 Rewind tape
EFTPJ 564 End file tape The next 6 feet of the designated tape are erased. This erased length identifies the end of the tape during future tape reading operations. The most recent previous instruction affecting the same tape must be WRITE.
EFTPK 566 End file tape
EFTPL 568 End file tape
EFTPM 570 End file tape
WDRP 497 Write drum The block of information stored in electrostatic cells to is written on the designated drum starting at drum address . The writing process is then automatically checked. If any errors are detected the program skips the next two instructions.
WDRQ 498 Write drum
RFDRP 526 Read forward drum The block of information stored on the designated drum starting at drum address is read and stored in electrostatic cells to .
RFDRQ 528 Read forward drum
PRINT 580 Print The block of data stored in electrostatic cells to is printed. For identification purposes the address and a line number are printed at the left end of each line of the report.
EJECT 767 Eject The printer paper is ejected. (See Appendix C.)
NOOP 751 No operation No operation.
Note 1:

The most recent previous instruction affecting the same tape must be either READ FORWARD, READ BACKWARD, SKIP FORWARD, SKIP BACKWARD or REWIND.

Note 2:

The most recent previous instruction affecting the same tape must be either READ FORWARD, READ BACKWARD, SKIP FORWARD, SKIP BACKWARD or END FILE.

Note 3:

If the recomputed check sum fails to agree with the check sum on the tape, the program skips the next two instructions.

Note 4:

If the designated tape is already at the end-of-file gap when this instruction is given, the program skips the next instruction.

Note 5:

If the designated tape is already at the beginning-of-file gap when this instruction is given, the program skips the next instruction.

OP2 Operations

Alphabetical Code Numerical Code Name Description
TR 104 Transfer Control is unconditionally transferred to electrostatic cell D.
TRPL 109 Transfer plus Control is transferred to electrostatic cell D if is positive.
TRMN 115 Transfer minus Control is transferred to electrostatic cell D if is negative.
TRZ 112 Transfer zero Control is transferred to electrostatic cell D if the fractional part of is zero.
SNTRP 117 Sense and transfer P Control is transferred to electrostatic cell D if operator’s panel sense switch P (or Q) is down. (These sense switches, P and Q, are numbered 4 and 5, respectively, on the operator’s panel.)
SNTRQ 120 Sense and transfer Q
TIA 128 Transfer and increase , , and are quantities stored in electrostatic memory which can be used to modify the addresses A, B, and C, respectively. Execution of one of these instructions increases each of the designated R-quantities by one and transfers control to electrostatic cell D.
TIB 126 Transfer and increase
TIC 125 Transfer and increase
TIAB 130 Transfer and increase
TIBC 127 Transfer and increase
TIAC 129 Transfer and increase
TIABC 131 Transfer and increase
TDA 133 Transfer and decrease Same as the corresponding transfer-and-increase operations except that each of the designated R-quantities is decreased by one.
TDB 135 Transfer and decrease
TDC 132 Transfer and decrease
TDAB 137 Transfer and decrease
TDBC 134 Transfer and decrease
TDAC 136 Transfer and decrease
TDABC 138 Transfer and decrease
SETRA 139 Set The designated R-quantity is replaced by the D address.
SETRB 250 Set
SETRC 145 Set
SKRA 152 Skip The program skips the next instruction if the designated R-quantity is equal to the D address.
SKRB 159 Skip
SKRC 162 Skip
RADDA 199 Reset and add A The designated address of the instruction located at D is added into the address counter after this counter has been reset to zero.
RADDB 202 Reset and add B
RADDC 205 Reset and add C
RADD 208 Reset and add D
ADDA 177 Add A The designated address of the instruction located at D is added to the contents of the address counter.
ADDB 184 Add B
ADDC 190 Add C
ADDD 193 Add D
SUBA 211 Subtract A The designated address of the instruction located at D is subtracted from the contents of the address counter.
SUBB 216 Subtract B
SUBC 221 Subtract C
SUBD 226 Subtract D
STA 251 Store A The designated address of the instruction located at D is replaced by the contents of the address counter.
STB 252 Store B
STC 235 Store C
STD 244 Store D
SKIP 165 Skip The program skips the next instruction if the D address is equal to the contents of the address counter.
PRCH 232 Prepare check This operation must always be given prior to the first use of the start-check operation.
STCH 253 Start check This operation causes the instruction of which it is a part to become the first instruction in a checking loop, that is, in a sequence of instructions which will be performed twice to check for machine errors.
ECHTR 254 End check and transfer This operation causes the instruction of which it is a part to become the last instruction in a checking loop. The first time it is encountered it causes a transfer to D, where D is usually the location of the preceding start-check operation. The second time it is encountered it compares the results of the two passes through the loop. If the results are the same the next instruction is skipped. If there is a discrepancy this skip does not occur.
STOP 232 Stop and transfer Upon encountering this instruction the calculator stops. If it is then restarted by the operator, the first instruction executed is a transfer of control to D. At the time of the stop, the address D is visible (in binary) on the accumulator register lights on the operator's panel.
000 No operation

(Note that the alphabetical code for no OP1 is NOOP, and for no OP2 is simply a blank.)

Elementary Mathematical Functions

SpeedCo I provides for the direct computation of the following elementary mathematical functions: square root, sine, arc tangent, exponential, and natural logarithm.

For each of these operations the programmer must specify the appropriate alphabetical or numerical OP1 code, the address A of the independent variable, and the address at which the result is to be stored. These instructions do not require the specification of a address; hence the number coded there is immaterial.

The present available set of these five elementary functions is designed to give at least seven significant decimal digits of accuracy. For details as to the range of the argument and accuracy of approximation, see Appendix A.

Problems may arise where the accuracy provided is inadequate. In such cases it is possible to modify the SpeedCo I control information to obtain greater accuracy. Such modifications may, however, increase the storage requirements for this control information. Hence the programmer must balance the advantages of greater precision against the disadvantage that the electrostatic storage capacity may decrease from the 714 words now available with the present approximations.

Descriptions of alternative sets of approximations will be added to the appendix as they become available.

Input-Output Components

The card reader, printer, magnetic tapes and magnetic drums are all classified as input-output components of the machine, because they all share the common property of being able to automatically receive information from, or transmit information to, electrostatic storage. In fact, it must be remembered that, whenever information is transmitted from one component of the machine to another, it must pass through electrostatic storage.

Any machine component capable of automatically transmitting information both to and from electrostatic storage (such as tapes and drums) may be regarded as an auxiliary storage (as distinguished from the electrostatic working storage). However, the common input-output terminology will be used in this section.

The computer has full automatic control over all input-output components. As will be seen from what follows, this control is exercised by means of the stored program.

Punched Cards

SpeedCo I uses punched cards as its primary input medium because of their great flexibility and because of the availability of apparatus for key-punching, verifying, and duplicating. Errors in key-punching are easily detected and corrected. Input data may readily be prepared on several key-punches simultaneously, and the cards may then be collected for entry into the computer. Cards are particularly desirable for manual access to a file because they can easily be separated, and their contents can be printed on them.

Instruction Card Form (Figure 3)

SpeedCo I instructions are initially entered into the calculator by means of punched cards, one instruction being punched per card. The punching fields are shown in Figure 4.

Note that the instruction card form provides space for both the alphabetical and the numerical OP1 and OP2 code designations. If the program has been written using the alphabetical designations, the following procedure applies: (1) the alphabetical designations are key-punched from the programmer's manuscript into card columns 15-19 and 35-39; (2) after the key punching has been verified, a sort and gang-punch process is carried out which punches the corresponding numerical designations into columns 46-48 and 49-51.

If, on the other hand, the program was written using the numerical designations for OP1 and OP2, these numerical designations have only to be key punched and verified. In this case the alphabetical fields (columns 15-19 and 35-39) are left blank, and no sorting and gang-punching operations are necessary.

Note that the Type 701 is controlled by the numerical code punching only, the alphabetical punching being unintelligible to the machine. For this reason, SpeedCo I instruction cards should never be fed into the Type 701 with only the alphabetical OP1 and OP2 code designations punched. All columns, except those specifically designated to be blank or not used and except the alphabetical operation codes, must have a single numerical punch.

Data Card Form

Data are initially entered into the calculator by means of punched cards, five or fewer pieces of data being punched per card. The punching fields are shown in Figure 5.

A sign must be specified for each fractional part and each exponent. In each case the sign is punched over the least significant digit of the fractional part or exponent to which it applies. A 12 punch means plus, and an 11 punch means minus. If the word count is less than 5, the irrelevant signs need not be punched, but the card itself must be filled out with zeros or, at least, some single numerical punch for each irrelevant column.

In no case may the absolute value of an exponent exceed 236.

Card Reader

The process of loading the data and instructions of a program into the calculator is carried out as follows.

The data and instruction cards are key-punched and verified, and any necessary sort-and-gang-punch operations are performed. The programmer will be supplied with a certain constant deck of cards labelled SPEEDCODING I. (This deck will contain all of the control information necessary to cause the 701 to operate according to the SpeedCo I system. The last card of this deck will be labelled Transfer Control Card.) From this constant deck and his own variable deck he will make up a single deck by inserting his variable deck between the last and the next-to-last card of the constant deck, and adding three blank cards after the last card of the constant deck. The resulting deck is then placed in the hopper of the card reader, and the card-reader start button is depressed to ready the card reader. The calculator is then started by pressing the load button on the operator's panel. No further manual intervention is necessary, subsequent operation being entirely automatic.

The cards in the hopper feed through the card reader, and the information on them is transmitted to electrostatic storage. SpeedCo I then directs and controls the conversion of the decimal information read from the cards

In the case of instruction cards, the information is converted to binary and assembled in the standard binary instruction form given in the section entitled Control. In the case of data cards, the conversion process involves not only the change from decimal to binary, but also includes the change from the powers-of- ten punched on the cards to the powers-of-two employed within the calculator. This converted data is then assembled in the standard floating-binary-number form given in the section on Computing. In both cases the converted information is stored in electrostatic memory at the designated locations. The execution of the problem then automatically begins with execution of the instruction stored at location 300.

During this read-in process the card reader operates at the rate of 150 cards per minute. Hence data is read and converted at the rate of 750 numbers per minute, while the rate for instructions is 150 per minute.

All calculations made in the process of converting the decimal information on the cards to the required binary form are automatically checked. Any discrepancy causes the machine to stop and give an error indication.

Magnetic Tape

Magnetic tapes may be used either as a high-capacity long-term memory or as input from a previous problem that had stored its results on tape. Input data from cards, including programs, can be transcribed by the computer on tape to conserve storage space or to save time when the data must be repeatedly entered into the computer.

There are four tape units designated by the letters , , and . Each contains a magnetic tape of any length up to 1400 feet. After the tape has been placed in motion, it can read or write information at the rate of 625 words per second.

Information is recorded on tape in six channels that run parallel to the length of the tape. A bit of information is represented by a magnetized spot in a channel. A set of six bits recorded in a line perpendicular to the six channels will be referred to as a group of bits. Twelve groups recorded serially on a tape are needed to store one binary word of 72 bits.

A seventh channel on the tape serves to check the reading and writing in the other six channels by the so-called redundancy-check principle. That is, either a 0 or a 1 is recorded in the seventh channel so that across the seven channels there is an odd number of 1's in each set of seven bits. When the tape is read, the number of 1's is automatically checked. If the number is even, the calculator stops, and a signal light on the operator's panel called the tape-check light is turned on.

If the number of 1's is odd (as it should be when correct), the machine continues the reading process. It should be emphasized that the operation of this seventh channel is completely automatic and requires no attention whatever on the part of the programmer.

A schematic diagram of how a word of 72 bits is recorded on tape is shown in Figure 6. Each x denotes a binary 1 or 0 recorded in that position on the tape. The 72 bits recorded in the six recording channels represent the full word. The tape moves in the direction of the arrow. The group numbered 1 contains the first six bits of the word. The remaining eleven groups contain the following bits of the word in groups of six. Thus, group 2 contains bits 7 through 12 of the word, etc.

Figure 6

Writing on Tape

The general procedure for writing a file of information on tape is as follows. A write-tape instruction is given. This instruction causes the selected tape to be started in motion and causes it to record, as one unit record, the information stored in that block of consecutively-numbered electrostatic memory cells which begins at cell and ends at cell .

For example, consider the following write-tape instruction:

OP1 A B C
WRTPK 0301 0387

This instruction will cause the block of information stored in electrostatic cells 301 to 387 inclusive to be written, as a unit record, on tape .

The writing process requires that all previous magnetic marks be erased from that portion of the tape being written on. To accomplish this, an erasing apparatus precedes the recording apparatus by approximately two inches. As the tape moves under the impetus of the write-tape instruction, the erasing apparatus is continually active, while the recording apparatus does not operate until told to do so by SpeedCo I.

If the write-tape instruction is given when the tape unit is in the rewound condition (i.e., in position to write a file of records), the actual writing on tape is delayed eight-tenths of a second. The erase circuits, however, are functioning during this time, and the result is a blank portion of tape called the beginning-of-file gap.

As soon as the beginning-of-file gap has been written, the recording process begins. The selected tape unit takes the word located at A and records it on the tape as 12 six-bit groups in the manner shown in the diagram above. Next the word at is recorded. This is followed immediately by the recording of the word at . This process continues until the word located at has been recorded.

During this process two other operations have also been taking place. First, as each group of bits was recorded on tape, the corresponding redundancy bit was automatically computed and recorded. Second, as the successive words of the record being written were selected from electrostatic storage a calculation was carried on that resulted in the formation of a weighted sum of all the binary information comprising the record. This sum (called the check sum) is then automatically recorded on the tape immediately behind the word taken from location .

Note that the length of the unit record is variable, the number of words recorded being given by the expression . This number of words and their associated check sum having been written, the tape unit automatically disconnects itself from the calculator and stops. Because of the time necessary for the tape to come to a complete stop, and the two-inch distance between the erase head and writing head, there results a small section of erased tape. The gap caused by this erasure is called an end-of-record gap.

Note that the write-tape instruction makes no use of the address ; and so any number coded in the address field is irrelevant to the execution of the instruction.

The first unit record of the file has now been written. To write a second unit record, a second write-tape instruction is programmed. In this way a series of records may be recorded. Note again that the records may be of variable size if desired.

The complete recording on a tape consists of a number of unit records that make up a file of information.

Tapes can be re-used many times, and a new file can be written over an old file, the old one being erased in the process. Each time a new file is written, it is started at the beginning of the tape, and only one usable file of unit records can be on a tape at one time. Different files, however, will have different lengths, so that there is a possibility that beyond the last record of the most recent record file, bits may be left over from a previous use of the tape. These residual bits of information may not be properly spaced in relation to the record just written. This may result in an error on a later reading of the new record.

To avoid having to erase the entire tape every time, and for certain control purposes to be mentioned later, an instruction called end file tape has been provided. This instruction, which must be given after writing any file, erases a further section of tape after the last unit record. The section of tape erased in this way is called an end-of-file gap.

For example, to end a file of records just written on tape , the following instruction should be given:

OP1 A B C
EFTPK

In this instruction the addresses A, B and C are irrelevant to the execution of the instruction.

Figure 7 shows schematically how a typical file of information is recorded on tape. The arrow designates the forward direction of tape motion. Writing can be done only when the tape is moving forward. A beginning-of-file gap is followed by a number of unit records with intervening end-of-record gaps. Note that these gaps are of a fixed length regardless of the lengths of the unit records themselves. Finally, an end-of-file gap appears after the last unit record. Note, too, that the machine operates so that the lengths of the two gaps at each end of a file are equal to each other, but are longer than the intervening end-of-record gaps.

Figure 7

To recapitulate, there are three kinds of gaps in the recording of information on tape:

  1. The normal spacing between successive groups of six bits within a unit record.
  2. The longer gap between unit records. This gap is long enough to allow the tape to start and stop between records.
  3. The still longer gaps at the ends of the file.

Reading from Tape

The general procedure for reading a file of information from tape is as follows.

Assume that the tape is in position to read the first unit record of the file. A read-forward-tape instruction is given. This instruction causes the selected tape to be started in motion and causes it to transmit the first words of the first unit record to electrostatic memory where they are stored in that block of consecutively-numbered memory cells which begins at cell and ends at cell .

For example, consider the following read-forward-tape instruction:

OP1 A B C
RFTPK 0851 0885

If the first unit record of the file contains 35 words (in establishing the number of words in a unit record on tape, the check sum is not included in the count), this instruction will cause those 35 words to be read from tape K and stored blockwise in electrostatic memory cells 851 to 885 inclusive. If, on the other hand, the first unit record contains more than 35 words, this instruction will cause the first 35 of these words to be read from the tape and stored in the designated memory cells.

In detail, the read-forward process proceeds as follows. The selected tape transmits the first word to electrostatic memory where it is stored at . Next the second word is transmitted and stored at . This is followed immediately by the transmittal of the third word and its storage at . This process continues until the word to be stored at has been transmitted and recorded in electrostatic memory.

During this process two other operations have also been taking place. First, as each group of bits was read from the tape, the corresponding redundancy bit was also read and checked. Any discrepancy in this redundancy check will stop the calculator and light the tape-check light.

Second, as the successive words of the record being read were transmitted to electrostatic storage, the check sum was recomputed and compared with the check sum read from the tape. Any discrepancy in this comparison will cause the calculator to ignore the next two instructions of the program and skip to the third instruction following the read-forward-tape instruction.

Note that both of these checking procedures are carried out for the entire unit record being read, even in those cases where only part of the record is being stored in electrostatic memory. In such cases the storing process is discontinued after the st word has been read and stored, but the tape unit continues transmitting until all words of the unit record, including the check sum, have been transmitted. During this latter phase, when the words being read from tape are not being stored in electrostatic memory, the redundancy-check process and the check sum calculation still continue. Hence if the calculator does not stop, and if it does not skip the two instructions following the read-forward-tape instruction, the programmer is assured that the tape-writing and reading process has been correctly performed.

Note also that since the reading process is always continued to the end of the record, even when only part of the record is stored in electrostatic memory, the tape always stops at the end-of-record gap; this concludes the record just read.

Because the read-forward-tape instruction makes no use of the address , any number coded in the address field is irrelevant to the execution of the instruction.

If for any reason the A and B addresses of a read-forward-tape instruction are so chosen that is larger than the number of words in the record being read, the calculator will stop and a signal light on the operator's panel called the copy-check light will be turned on.

The process described above reads the first unit record of the file. The remaining records of the file may be read in the same way. After the last unit record of the file has been read, the tape is positioned at the end-of-file gap.

If, at this time, another read-forward-tape instruction is given, the designated tape unit starts up and attempts to read another unit record. Instead of a unit record, however, it finds the end-of-file gap. This causes the calculator to ignore the next instruction of the program and skip to the second instruction following the read-forward-tape instruction. The programmer may then take advantage of this automatic skip to go into a new phase of the program. This end-of-file skip cannot be obtained from a blank tape; at least one unit record must be written on the tape to distinguish the normal space at the start of the file from the end-of-file gap obtained by use of the end-file-tape instruction.

It should be emphasized, however, that this is not the only function of the end-of-file gap (see section entitled Writing on Tape). Even if the program is so written as to make no use whatever of the end-of-file skip feature, it is still necessary to give an end-file-tape instruction after writing a file on tape.

Any OP2 operation may be used with a read-forward-tape instruction. However, it is important to note that SpeedCo I is so constructed that such an OP2 operation will only be executed if neither the check-sum-discrepancy skip nor the end-of-file skip has occurred.

In certain types of programs it is convenient to be able to read the unit records which make up a file on tape in the reverse order from the order in which they are written. To facilitate such tape reading programs, the read- backward-tape instruction has been provided as part of SpeedCo I.

The read-backward-tape instruction is very similar to the read-forward-tape instruction.

They differ only in the following respects. When read backward tape is given, the designated tape is first backspaced one unit record. During this back spacing no reading, checking or storing takes place. The unit record is then read in the forward direction and checked, exactly as in the read-forward-tape case. The designated tape then backspaces once more—again without reading, checking or storing. After execution of the read-backward-tape instruction, the tape stops at the end-of-record gap that precedes, on the tape, the unit record just read.

For example, assume that the tape to be read is stopped at the end-of-record gap between the fourth and fifth unit records on the tape. The instruction read forward tape will read and store the fifth record. and the tape will stop at the end-of-record gap between the fifth and sixth unit records. If the instruction given had been a read-backward-tape instruction, however, the fourth record would have been read and stored, and the tape would have stopped at the end-of-record gap between the third and fourth unit records.

Note that the addresses and have the same significance in the instruction read backward tape as they have in the instruction read forward tape. Thus the instruction read backward tape causes words to be transmitted to electrostatic memory and stored in cells through . If the unit record contains more than this number of words, only the first words of the record are stored in electrostatic memory (where first is used in the sense first written).

The redundancy-check process and the check-sum calculation are carried out for the entire unit record involved, even though only part of the record may be stored.

If any discrepancy is detected in the redundancy check, the calculator will stop, and the tape-check light will be turned on. If the recomputed check sum fails to agree with the check sum read from the tape, the calculator will skip the next two instructions.

If and are so chosen that exceeds the number of words in the record being read, the calculator will stop, and the copy-check light will be turned on.

In all three of the above cases the error is detected during the second (or read-forward) phase of the read-backward-tape instruction. For this reason the tape comes to rest, not at the end-of-record gap that precedes the record read, but at the end-of-record gap that follows the record read. The final back- spacing, which is normally part of the read-backward-tape instruction, does not take place when one of these three error conditions is encountered.

The address of the read-backward-tape instruction is irrelevant to the execution of the instruction.

When reading a tape backward, an end-of-file gap is recognized just as in reading forward. After the unit record at the beginning of the file has been read backward, the tape will be positioned at the beginning-of-file gap. A further read-backward-tape instruction causes the tape unit to treat the beginning-of-file gap as if it were an end-of-file gap, and the calculator skips the next instruction.

As in the case of a read-forward-tape instruction, any OP2 operation may be used with a read-backward-tape instruction, but the OP2 operation will only be executed if neither the check-sum-discrepancy skip nor the end-of-file skip has occurred.

Tape Skipping

Cases will frequently arise where the unit records of a file on a tape must be read in a more-or-less random order. The instructions read forward tape and read backward tape do not by themselves conveniently permit such tape reading, because the instruction read forward tape reads only the record which immediately follows the end-of-record gap at which the tape is stopped, while the instruction read backward tape reads only the record which immediately precedes this same end-of-record gap. In order to facilitate random tape reading, therefore, the instructions skip forward tape and skip backward tape have been provided.

The instruction skip forward tape advances the designated tape one unit record, the tape stopping at the end-of-record gap following the one at which it was stopped when the instruction was given. No reading or checking is performed.

The instruction skip backward tape backspaces the designated tape one unit record, the tape stopping at the end-of-record gap preceding the one at which it was stopped when the instruction was given. Again, no reading or checking is performed.

For example, suppose that the last operation involving tape was a read-backward-tape-K instruction that read and stored the fifth unit record of the file. Tape is therefore stopped at the end-of-record gap between the fourth and fifth records. If the next record to be read is the second, the programmer could accomplish this by giving the instruction skip backward tape two times, followed by the instruction read backward tape .

The two skip-backward-tape- instructions would backspace tape to the end-of-record gap between the second and third records; and the read-backward-tape- instruction would read and store the second record, the tape finally stopping at the end-of-record gap between the first and second records.

The instructions skip forward tape and skip backward tape both embody an end-of-file skip feature. If skip forward tape is given when the designated tape is stopped at the end-of-file gap, or if skip backward tape is given when the tape is stopped at the beginning-of-file gap, the calculator ignores the next instruction and proceeds immediately to the execution of the second instruction following the tape skip instruction.

Any OP2 operation may be used with a skip-for ward-tape or skip-backward-tape instruction. However, it is important to note that such an OP2 operation will only be executed providing an end-of-file skip has not occurred.

The , and addresses of the instructions skip forward tape and skip backward tape are irrelevant to the execution of the instructions.

After the instruction skip forward tape or skip backward tape has been given and interpreted and the actual tape motion has begun, the calculator proceeds with the interpretation and execution of the following instructions of the program without waiting for the tape to come to a stop. If a subsequent instruction calls for the same tape while it is still in motion, the program is automatically delayed until the tape stops.

Tape Rewinding

The instruction rewind tape is used to cause the designated tape to return to the starting point of its file of records.

When writing a file of unit records on a tape, the instruction rewind tape should not be given until after the instruction end file tape has been used to terminate the file.

The , and addresses of the instruction rewind tape are irrelevant to the execution of the instruction.

After the instruction rewind tape has caused the rewinding action to begin, the calculator proceeds to the following instructions of the program without waiting for the tape to stop. If a subsequent instruction calls for the same tape before the actual rewinding is complete, the program is then automatically delayed until the tape comes to a stop.

Tape Status

It is not possible both to read and write on a single passage of a tape in one direction through the tape unit. If information is being written on a tape, the file should first be completed by writing an end-of-file gap before the information is read. The tape can then be read backward immediately, or it can be rewound and then read in the forward direction. When a tape has been used for reading, it must first be rewound before any new information can be written on it.

Circuits associated with each tape unit remember whether the tape is being read or written. When the circuits are set up for reading, the tape unit is said to be in read status; when the circuits are set up for writing, the tape unit is said to be in write status. If the tape unit is in neither read status nor write status, it is said to be in neutral status.

When a tape unit is in read status, it may be used only for reading and skipping; when in write status, it may be used only for writing. If the instruction write tape is given for a tape unit that is in read status, the instruction is not executed, the calculator stops, and the copy-check light is turned on. Similarly, if any one of the instructions read forward tape, read backward tape, skip forward tape, or skip backward tape is given for a tape unit that is in write status, the instruction is not executed, the calculator stops, and the copy-check light is turned on.

If the instruction end file tape is given for a tape unit that is in read status, the instruction is not executed, and the tape remains stationary.

Any write, read or skip instructions will be executed in the normal manner, if the tape called for is in neu tral status. After the execution of a normal write instruction, the tape unit used will be left in write status. After the execution of a normal read or skip instruction, the tape unit used will be left in read status. Irrespective of its previous status, the execution of a rewind instruction will always restore a tape unit to neutral status. An end-file-tape instruction will return the tape to neutral status only if it was origininally in write status.

Figure 8 shows the status that will result when each one of the tape instructions is given under all possible conditions.

rewind tape will be executed with the tape unit in any status. However, rewind tape should not be given while the unit is in write status, end file tape, which resets the tape unit to neutral, should always precede rewind tape in those cases where the tape was originally in write status.

A rewind-tape instruction must always be given before writing on a tape previously in read status, even after reading backward all the way to the beginning-of-file gap.

Once a tape has been rewound, further rewind-tape instructions may be given, but they will be ignored as long as the tape remains rewound.

After an end-of-file gap has been written, the tape unit will be in neutral status. At this point the programmer must not give any of the instruction read forward tape, skip forward tape , write tape, or end file tape (each of which would move the tape further forward) although the neutral status would permit such meaningless action. Only read backward tape, skip backward tape , or rewind tape can follow end file tape.

When a tape is being read or skipped in the forward direction and the end-of-file gap has once been sensed, no further read-forward-tape or skip-forward-tape instructions (which would move the tape further forward) should be given. Only read backward tape, skip backward tape, or rewind tape can follow the detection of an end-of-file gap. Similarly, after sensing the beginning-of-file gap on reading or skipping backward, or after giving the instruction rewind tape, the programmer must not give read backward tape or skip backward tape.

FIGURE 8 GOES HERE AT SOME POINT

Magnetic Drums

The magnetic drum storage is divided into two blocks of 1024 words each, with addresses consisting of the integers from 0 to 1023. Each block will be referred to as a drum. The two drums are designated by the letters and . These drums provide an auxiliary memory that is, for many purposes, more accessible than tape memory. Individual words on a drum can be selectively altered at any time. Drums are used to a large extent for storing tables of data and sections of long programs that may not fit into the electrostatic memory.

Information is usually recorded on the drum as blocks of words called unit records. The words of a unit record are stored in locations with consecutive addresses, although the first word of a record may be placed at any drum address. The following paragraphs describe the process of writing a unit record on a drum.

A write-drum instruction is given. This causes the designated drum to be connected to the calculator and causes it to record, as one unit record, the information stored in that block of consecutively-numbered electrostatic memory cells which begins at cell and ends at cell . The first word of the unit record is written on the drum at drum address , and the last word is written at drum address .

For example, consider the following write-drum instruction:

OP1 A B C
WRDRQ 0947 1013 0032

This instruction will cause the block of information stored in electrostatic cells 947 to 1013, inclusive, to be written on drum as a unit record beginning at drum address 32 and ending at drum address 98.

The instruction write drum also includes a checking feature that operates as follows. After the block of information from electrostatic storage has been written on the drum, and before the calculator goes on to the next instruction of the program, the information just written on the drum is read back into electrostatic storage and checked, word for word, against the in formation originally in electrostatic storage. If there is no discrepancy, the calculator proceeds to the interpretation and execution of the next instruction of the program. If, on the other hand, the calculator detects any discrepancy between the original information and the information read back from the drum, the next two instructions of the program are ignored, and the calculator skips to the third instruction following the write-drum instruction. Hence, if the calculator does not skip the two instructions following the write-drum instruction, the programmer is assured that the drum writing process has been correctly performed.

Any OP2 operation may be used with a write-drum instruction. However, it is important to note that such an OP2 operation will only be executed if a check-sum-discrepancy skip has not occurred.

The drum reading operation is very similar. It is carried out as follows. A read-forward-drum instruction is given. This causes the designated drum to be connected to the calculator and causes it to transmit to electrostatic storage that block of words which is stored on the drum beginning at drum address .

Upon its transmittal to electrostatic memory, this information is stored in that block of consecutively-numbered electrostatic memory cells which begins at cell and ends at cell .

For example, consider the following read-forward-drum instruction:

OP1 A B C
RFDRQ 0811 0820 0041

This instruction will cause the block of information stored on drum Q, beginning at drum address 41 and ending at drum address 50, to be transmitted to electrostatic storage and stored in electrostatic cells 811 to 820 inclusive.

No checking features are included in the drum-reading operation.

Note that a unit record written on a drum does not preserve its identity as a unit record, there being no end-of-record gaps to mark its beginning and end. For instance, the information read in the above read-forward-drum example would be the 10th through the 19th words of the unit record written in the preceding write-drum example, unless another write-drum instruction involving this region of the drum had intervened.

If only a single word is to be written or read, the electrostatic address of this word must be used as both the A and the B addresses of the instruction concerned.

Drum reading and writing have none of the status limitations that affect tape reading and writing, nor is there anything in drum reading and writing which corresponds to the end-of-file features of tape reading and writing.

The programmer must not attempt to read or write beyond drum address 1023. For example, it is not possible to write a 7-word record beginning at drum address 1022 and ending at drum address 4.

Loading Procedures for Lengthy Programs

In the section entitled Card Reader a procedure is described for loading short programs into the calculator. This procedure does not apply, however, to programs which involve more than 714 words of instructions and data. In such cases, the additional storage capacity of tapes or drums must be utilized. This is done in the following way.

During the writing of the program the programmer subdivides it into a number of blocks, each of which requires no more than 714 words of storage to accommodate all of its input data, its instructions, its output data and any erasable storage needed to retain intermediate results temporarily.

The punched cards that contain the instructions and data of the problem are then grouped in blocks in the same way, the cards of each block being separated from those of the next block by means of a control card. This control card contains information that completely specifies a tape-writing or drum-writing operation.

The layout of the loading control card is as follows:

LAYOUT OF LOADING CARD

With one important exception, the loading process is the same as in the simpler case already described. That is, the programmer inserts his variable deck of instruction, data and loading control cards between the last and the next-to-last cards of the constant deck labelled speedcoding i, adds three blanks, puts this resulting deck in the hopper of the card reader, depresses the start button of the card reader and the load button on the operator's panel