THE CONTROL OF SIMON

So far we have said nothing about the control of Simon. Is he docile? Is he stubborn? We know what his capacity is, but we do not know how to tell him to do anything. How do we connect our desires to his behavior? How do we tell him a problem? How do we get him to solve it and tell us the answer? How do we arrange control over the sequence of his operations? For example, how do we get Simon to add 1 and 2 and tell us the answer 3?

On the outside of Simon, we have said, there are two ears: little mechanisms for reading punched paper tape. Also there are two eyes that can wink: light bulbs that by shining or not shining can put out information ([see Fig. 1]). One of the ears—let us call it the left ear—takes in information about a particular problem: numbers and operations. Here the problem tape or input tape is listened to. Each line on the input tape contains space for 2 punched holes. So, the information on the input tape may be 00, 01, 10, or 11—either a number or an operation. The other ear—let us call it the right ear—takes in information about the sequence of operations, the program or routine to be followed. Here the program tape or routine tape or control tape is listened to. Each line on the program tape contains space for 4 punched holes. We tell Simon by instructions on the program tape what he is to do with the information that we give him on the input tape. The information on the program tape, therefore, may be 0000, 0001, 0010, ···, 1111, or any number from 0 to 15 expressed in binary notation ([see Supplement 2]).

How is this accomplished? In the first place, Simon is a machine, and he behaves during time. He does different things from time to time. His behavior is organized in cycles. He repeats a cycle of behavior every second or so. In each cycle of Simon, he listens to or reads the input tape once and he listens to or reads the program tape twice. Every complete instruction that goes on the program tape tells Simon a register from which information is to be sent and a register in which information is to be received. The first time that he reads the program tape he gets the name of the register that is to receive certain information, the receiving register. The second time he reads the program tape he gets the name of the register from which information is to be sent, the sending register. He finishes each cycle of behavior by transferring information from the sending register to the receiving register.

For example, suppose that we want to get an answer out of Simon’s computer into Simon’s output lights. We put down the instruction

Send information from C5 into O

or, more briefly,

C5 → O

But he does not understand this language. We must translate into machine language, in this case punched holes in the program tape. Naturally, the punched holes in the program tape must be able to specify any sending register and any receiving register. There are 15 registers, and so we give them punched hole codes as follows:

Register Code Register Code
I 0001C11010
S10010C21011
S20011C31100
S30100C41101
S40101C51110
S50110O1111
S60111
S71000
S81001

To translate the direction of transfer of information, which we showed as an arrow, we put on the program tape the code for the receiving register first—in this case, output, O, 1111—and the code for the sending register second—in this case, C5, 1110. The instruction becomes 1111, 1110. The first time in any cycle that Simon listens with his right ear, he knows that what he hears is the name of the receiving register; and the second time that he listens, he knows that what he hears is the name of the sending register. One reason for this sequence is that any person or machine has to be prepared beforehand to absorb or take in any information.

Now how do we tell Simon to add 1 and 2? On the input tape, we put:

Add00
101
210

On the program tape, we need to put:

IC4
IC1
IC2
C5 → O

which becomes:

1101, 0001;
1010, 0001;
1011, 0001;
1111, 1110