COPElAND | 207
centralized design.^62 ‘Newman explained the whole business of how a computer works to us’,
Williams remarked.^63 As he recalled in a letter to Brian Randell:^64
I remember Newman giving us a few lectures in which he outlined the organisation of a com-
puter in terms of numbers being identified by the address of the house in which they were
placed and in terms of numbers being transferred from this address, one at a time, to an accu-
mulator where each entering number was added to what was already there. At any time the
number in the accumulator could be transferred back to an assigned address in the store and the
accumulator cleared for further use.
At this point, Williams left it to Kilburn to fathom out the details of what they were going to
build; apart from being preoccupied with perfecting the new memory, Williams now had his
Department of Electro-Technics to run.^65 Kilburn eagerly put his ideas for an ACE-like design
behind him, and began to plan out a centralized computer.
Kilburn consulted Good, asking him to suggest an instruction set for a centralized com-
puter.^66 The instruction set is the logical heart of any computer; it details the computer’s
‘atomic’ operations, the elementary building blocks for all its programmed activity. In May
1947 Good suggested a set of twelve basic instructions to Kilburn, as shown in Table 20.1.^67
Good announced this important historical fact to the computing world in 1998, in his accept-
ance speech for the IEEE Computer Pioneer Award, where he explained that he had ‘made a
proposal, at Kilburn’s request, for the basic mathematical instructions for the Baby machine’.^68
Kilburn simplified the twelve instructions that Good gave him, reducing them to five. (I
established this by comparing Baby’s instructions as given by Williams and Kilburn in their
Table 20.1 Good’s Princeton instructions. This table shows the twelve basic
instructions that Good recommended to Kilburn in May 1947. Good himself gave only
the symbolic form of each instruction, noted here in square brackets.
1 Transfer the number in storage register x (there were sixty-four
storage registers or ‘houses’) to the accumulator
[x → A]
2 Add the number in x to the number in the accumulator and store the
result in the accumulator
[A + x → A]
(^3) Transfer the negative of the number in x to the accumulator [–x → A]
(^4) Subtract the number in x from the number in the accumulator and
store the result in the accumulator
[A – x → A]
5 Transfer the number in the accumulator to the (arithmetic) register R [A → R]
6 Transfer the number in R to the accumulator [R → A]
7 Transfer the number in the accumulator to x [A → x]
8 Transfer the number in x to R [x → R]
9 Shift the number in the accumulator one place to the left [l ]
10 Shift the number in the accumulator one place to the right [r]
11 Transfer control unconditionally to the instruction in x [C → x]
12 Conditional transfer of control, viz, transfer control to the instruction
in x if the number in the accumulator is greater than or equal to 0
[CC → x if A ≥ 0]