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 | 0001 | C1 | 1010 |
| S1 | 0010 | C2 | 1011 |
| S2 | 0011 | C3 | 1100 |
| S3 | 0100 | C4 | 1101 |
| S4 | 0101 | C5 | 1110 |
| S5 | 0110 | O | 1111 |
| S6 | 0111 | ||
| S7 | 1000 | ||
| S8 | 1001 | ||
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:
| Add | 00 |
| 1 | 01 |
| 2 | 10 |
On the program tape, we need to put:
I → C4
I → C1
I → C2
C5 → O
which becomes: