Central Control for ENIAC by Adele K. Goldstine, July 10, 1947 2014
Total Page:16
File Type:pdf, Size:1020Kb
Central Control for ENIAC By Adele K. Goldstine, July 10, 1947 2014 Edition from www.EniacInAction.com Edited by Mark Priestley and Thomas Haigh During 1947 and 1948 a collaborative group designed and implemented a new programming system for ENIAC. The group included John von Neumann, Herman Goldstine, Nick Metropolis, Adele Goldstine, Klara von Neumann, members of the staff of the Ballistic Research Laboratory where ENIAC was housed, and a team of contractors at the Moore School led by Jean Bartik. ENIAC became the first computer to implement what we call the modern code paradigm introduced in von Neumann’s seminal First Draft of a Report on the EDVAC in 1945. We described this process in T. Haigh, M. Priestley, and C. Rope, "Engineering 'The Miracle of the ENIAC': Implementing the Modern Code Paradigm," IEEE Annals of the History of Computing, vol. 36, no. 2, Jan-Mar 2014, pp. 41-59. Before their eventual implementation in March 1948 by Nick Metropolis and Klara von Neumann the plans went through a succession of revisions. One intermediate plan, for a “60 order code” (i.e. a set of 60 instructions) was published in a technical report and so has been relatively widely cited. R. F. Clippinger, A Logical Coding Scheme Applied to the ENIAC (BRL Report No. 673). Aberdeen, MD: Aberdeen Proving Ground, 1948. During the course of our research we uncovered what seems to be the first detailed plan for the conversion. This described a set of 51 instructions, and so is generally called the “51 order code.” As described in our paper the report is in the handwriting of Adele Goldstine and contemporary letters suggest that it was produced in July 1947. This followed a series of meetings between von Neumann, members of the BRL staff, and Bartik’s group held in Princeton. So while the document is Goldstine’s, the design it describes undoubtedly includes ideas shaped in this collaborative discussion. The report is interesting in showing that the basic approach taken to the conversion was fixed early in the process and remained largely unchanged through the end of ENIAC’s career in 1955. Unlike the later 60- and 100-order codes this one required no additions to ENIAC’s original hardware. It would have worked more slowly and offered a more restricted range of instructions but the basic structure of accumulators and instructions changed only slightly. We did not locate the original copy of this document, but a photocopy was submitted by Herman Goldstine during a legal deposition connected to the landmark Honeywell vs. Sperry Rand trial. That became plaintiff exhibit 5988 and remains in CBI 1: Honeywell vs. Sperry Rand Records at the Charles Babbage Institute in Minneapolis. This copy was duplicated in turn for a “Central Control for ENIAC” by Adele K. Goldstine, July 1947. Page 2 www.EniacInAction.com reproduction in the personal papers of Herman H. Goldstine at the American Philosophical Society in Philadelphia (Series X, Box 3) and the microfilm copies of the ENIAC trial records at the Hagley Museum and Library and in the University of Pennsylvania Archives. Our thanks go to Arvid Nelsen, CBI archivist, for providing a scan of the document more legible than these microfilm reproductions. Editorial Notes Small portions of the text are illegible, or have been reconstructed from their context. These are marked in the transcription by being printed in red. The original does not have numbered pages, so the pagination and numbering used here is Table 3 gives details of the ENIAC set-up for the main control sequence, and also for instructions 48 – 51. We have only transcribed the portion of this table relating to the control sequence: Goldstine describes this in detail in section III of comments C–3, “Blow-by-Blow Description of Control Process”. That section is reproduced without transcription. The set-up in Table 3 uses the notation that Goldstine explains in section II of comments C–3. There are also a number of informal comments and markings on the table. To aid the reader, we have reproduced this informal material in blue to distinguish it from the official notation. This edition is edited by Mark Priestley and Thomas Haigh, with transcription assistance from Ann Graf. “Central Control for ENIAC” by Adele K. Goldstine, July 1947. Page 3 www.EniacInAction.com Central Control for ENIAC Table 1 – 51 order vocabulary (& C-1) Table 2 – Digit Connections for Control System (& C-2) Table 3 – Set up for Control Process (& C-3) “Central Control for ENIAC” by Adele K. Goldstine, July 1947. Page 4 www.EniacInAction.com 7/10/47 Table – 1 51 order vocabulary Acc. 1 2 4 5 7 9 10 11 12 13 14 16 17 18 19 20 Acc. __, AO to acc. 15 Code Symbol 01 02 03 04 05 06 11 12 13 14 15 16 21 22 23 24 Order # 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 T Clear acc. __ Code Symbol 25 26 31 32 33 34 35 36 41 42 43 44 45 46 51 52 and receive from acc. 15 AC. Order # 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 L C. Order C. Order Instruction Instruction S. # S. # 53 33 Dummy. Clear for acc. 15. D 75 38 +1 shift to left 71 34 MULTIPLY X 76 39 -1 1) clear 12 & 15 AC→12 2) Mult., 10 places ier, 81 40 +5 NRO (not rounded off), leave prod. in 15 and do not 82 41 -5 clear ier & icand 72 35 SUBTRACT – take S Clear 11 F.T.3 complement of no. 83 42 A(11) & A(6)-A(1) →acc. 11 Numeric in acc. 15. { B(11) & B(6)-B(1) → acc. 13 73 36 DIVIDE ÷ 84 43 CONSTANT TRANSMITTER, ABC 1) Clear acc. 7 & 15 AC→7 85 44 “ “ DEF 2) Clear 12 & 4 AC→12 86 45 “ “ GH 3) 9 AC→15 91 46 Read 4) ÷, RO. to 10 places, NI (no interlock). 92 47 Print hold denom. & remainder 93 48 NEXT TWO DIGITS – send N2D from numerator next instruc. From 6 to 15, places 1,2. 5) Acc. 15 AC→ 9 94 49 SUBSTITUTION -- SU Acc. 4 AC→ 15 1) Clear acc. 8L. Acc. 12 AC→ 4 2) transmit FTSG from A(11) & B(11) 74 37 SQUARE ROOT √ & next instruc. to 8L 1) Clear acc. 5 & 15 AC→ 5 95 50 U.T. 1) Clear acc. 8R 2) Clear 12 & 7 AC→12 2) transmit FTSG & next instruc. to 8R 3) 9 AC → 15 3) Clear acc. 6 4) √, RO 10 places, NI. 96 51 C.T. 1) Transmit PM from 15→ 8 hold remainder 2) Discriminate 5) 15 AC → 9 3) If M, continue to next instruc. 7AC 2√ 5 times → 15 If P, clear 6 and send 8L→ 8R 12 AC → 7 “Central Control for ENIAC” by Adele K. Goldstine, July 1947. Page 5 www.EniacInAction.com Comments for Table 1 C-1 I Special purpose accumulators A. For Control System 1) Acc. 3 a) Shifts instructions (Ij+4, Ij+3, Ij+2, Ij+1, Ij) stored in acc. 6. b) Performs discrimination to determine whether code symbol is to be interpreted by master programmer steppers B-G or by H-K. c) Sends code symbol to steppers H-K. d) Holds the contents of acc. 8, future control argument, αfβf, (for conditional transfer +) with its function table selection group, xx, and the current control argument, αcβc, with its FTSG during the magnitude discrimination of a conditional transfer. e) Builds up argument and function table selection group for substitution order and unconditional transfer. 2) Acc. 6 a) Store 5 instructions (i.e. 5 pairs of code symbols). b) Performs discrimination to determine whether or not a new line of instructions is to be read from the function tables. c) Sends code symbol to steppers B-G. d) transmits future control argument to acc. 3 in substitution order, new current control argument to acc. 3 in unconditional transfer, and 2 digit constant to acc. 15 in the “next two digits” order. 3) Acc. 8 a) Stores the current control argument in the first two counters at the right, the function table selection group for the current arg. in the 3rd and 4th counters from the right, the future control argument and associated FTSG in the next 4 counters, and the 6th instruction of a function table line in the remaining two decade counters. b) Performs the magnitude discrimination of a conditional transfer. c) Shifts the future control argument with its FTSG into the position of the current argument & FTSG in case C.T. +. B. For the Arithmetic system. 1) Accumulator 4 – builds up quotient which it then transmits with clearing to acc. 15 at end of division. 2) Acc. 5 – holds numerator during division or radicand (clear & receive radicand from acc. 15 is part of √ order) during square rooting. Programming for division & √ will be “Central Control for ENIAC” by Adele K. Goldstine, July 1947. Page 6 www.EniacInAction.com such that remainder is retained at end of ÷ & √ in case operations with 10k digits are performed. 3) Acc. 7 – holds denominator (clear & receive denom. from acc. 15 is part of ÷ order) in ÷ and builds up twice the square root in √. Programming for √ includes instructions to send twice the square root to acc. 15. five times so as to avoid the necessity for halving. 4) Acc. 9 – shifts the remainder from the numerator or radicand when overdraft occurs in ÷ or √.