Von Neumann's First Computer Program * 249
vantages which could be expected from an
electronic high speed computer such as he
felt could reasonably be developed. He was
familiar with previous American develop-
ments in computing, and he was also aware
of the extensive calculations needed by the
Ballistic Research Laboratory (BRL) in
connection with World War II; many of
these calculations were currently being done
on a Differential Analyzer at the Moore
School. It was by no means obvious that a
useful electronic computer could be built;
but Mauchly and a young electrical engineer
named J. P. Eckert, Jr., drew up a tentative
technical outline of a suitable machine, and
Prof. J. G. Brainerd decided it was worth the
risk of committing the Moore School to a
major effort in this direction. A technical
proposal was submitted to Col. Leslie E.
Simon, Col. Paul N. Gillon, and Lt. Herman
H. Goldstine of the BRL in the spring of
1943, and in a remarkably short time the US
government entered into a contract with the
Moore School for research and development
of high speed electronic calculating devices,
beginning July 1, 1943. The project, super-
vised by Brainerd, had Eckert as chief
engineer, Mauchly as principal consultant,
and Goldstine in charge of technical liaison
with BRL. A first machine, the ENIAC
(Electronic Numerical Integrator And Com-
puter), was soon designed, and its design was
frozen at an early stage so that future efforts
could be concentrated on its production and
testing; it was dedicated on February 15,
1946. (For further details about the develop-
ment of the ENIAC, see [6].)
The ENIAC was a highly parallel com-
puter; weighing over 30 tons, it involved
over 19,000 vacuum tubes, 1500 relays, etc.
Because of its electronic circuitry, it was
considerably faster than any computing
machine previously built. But it had only 20
words of internal memory, and it required
complicated manual operations for setting
up a program on plugboards. Long before
ENIAC was completed, it became clear to
the designers that they could utilize the
equipment more efficiently if they would
adopt serial methods instead of so much
parallelism; so in January 1944 they sketched
out a "magnetic calculating machine" in
which successive digits of numbers were
transmitted serially from a memory device
to central electronic computing circuits and
back again. Early in 1944, Eckert and
Mauchly invented an acoustic delay-line
memory device which made it possible to
obtain a fairly large storage capacity with
comparatively little hardware; so it became
evident that great improvements over
ENIAC could be made, at considerably less
cost. "Therefore, by July, 1944, it was
agreed that when work on the ENIAC
permitted, the development and construc-
tion of such a machine should be undertaken.
This machine has come to be known as the
EDVAC (Electronic Discrete VAriable
Computer)" [5].
In the latter part of 1944, John yon Neu-
mann (a consultant to BRL) became a
consultant to the EDVAC project. He con-
tributed to many discussions on logical
circuitry, and he designed the order code
which was to be used. In the spring of 1945,
he wrote a preliminary report [17] which
gives a detailed discussion of arithmetic
circuitry and the motivation for various
design decisions which were made as EDVAC
evolved. This takes us to the beginning of
our story.
THE EARLY EDVAC
VOD Neumann's first draft report [17, 18] on
the EDVAC proposed building a serial
computer with three 32-bit registers and
8192 32-bit words of auxiliary memory. The
three registers were called i and j (for inputs
to the arithmetic circuitry) and o (for out-
put) ; for convenience in what follows we will
denote these registers by the upper-case
letters I, J, and A. The EDVAC memory
was to be divided into 256 "tanks" of 32
words each, operating in a cyclic fashion.
Word 0 of each tank would pass a reading
station one bit at a time, then (32 bit-times
later) word 1 would be available,..., finally
word 31, then word 0 again, etc. Thus the
accessing of information from tanks is essen-
tially the same as we now have from drums
or head-per-track disks. A bit-time was to be
1 #sec, so the cycle time for each tank came
Computing Surveys, Vol 2, No. 4, December 1970