From 1992 to 2006, I had the opportunity to engage in historical research on the Apollo Guidance Computer (AGC) and its interfaces with the Apollo spacecraft. This work led me to learn about computers in the 1960s, the beginnings of integrated logic gate circuits, and to personally meet the designers (Eldon C. Hall - Chief Designer, Hugh Blair-Smith - Designer of AGC's basic assembler language and Interpreter, Alan Green - DISKY interface software programmer, Ramon Alonso - Designer of the DSKY and AGC's architecture, Robert Stengel - Designer and programmer of the Apollo lunar module's hand-controller software, all from MIT's Instrumentation Lab), Cline Frasier (from NASA), David Bates (from Raytheon), some of the AGC programming team (Donald Eyles, John Dyest), astronauts (John Young - Apollo 10 and Apollo 16, Fred Haise - Apollo 13) who were the AGC's users, computer historians (Prof. James Tomayko, Frank O'Brien, Ronald Burkey), and modern NASA engineers (Richard Katz - organizer of MAPLD conferences). I did a lot of research during my visits to MIT's Drapper Lab (1998 - 1999) and to NASA's Office of Logic Design MAPLD conferences in Washington (2004 and 2006). This research is the hardware or hardware-interface part of computing. For an abstract or high-level treatment of computing take a look at The abstract level: Some notes on abstract N-dimensional objects and operations
As a device, the AGC was a rectangular structure machined of magnesium, divided in two trays and measuring two feet (60.96 cm) by one foot (30.48 cm) by six inches (15.24 cm), weighing 70 pounds (31 kg) and consuming 55 watts. As an electronic system it was a general-purpose microprogrammed NOR-Gate logic based computer with an 2.048-MHz oscillator as the primary timming source, and a memory cycle of 11.7 microseconds and addition time 23.4 microseconds. However, its interfaces with the outside world were purpose-specific, designed to integrate with the Apollo spacecraft (although later it was also used in a modified F-8 Crusader). One of those interfaces was with the hand controller, which allowed the crew to send commands (of different electrical types) to the mission software during different mission phases. Some commands were low-level, while others were high-level (used to intervene in or guide the automatic system toward a territorial target different from the one pre-programmed before the mission). The AGC was the "brain" part of an inertial navigation, guidance and control system. Inertia is just resistance to change in direction of motion. This resistance is electrically measured and processed. Single-precision arithmetic relied on a single adder, which handled all input/output activities. In contrast, multiple precision, required for vector/matrix guidance and navigation operations, was implemented in software. The microprogramming level was implemented in a Sequence Generator circuit inside the wire-wrapped machined logic.
At the software system level (above the microprogramming level), there were programs and subroutines stored in the AGC's read-only memory modules (Core Rope memory), organized into two categories: "low-level" programs and "high-level" programs. The low-level programs were control software that interfaced the AGC with the outside world, including the hand controllers. The high-level programs were part of the "mathematical world" in which Apollo conducted its space missions. This virtual space was modeled and operated inside the computer as pseudo-mathematical expressions that programmers called "equations," such as the list that applies a transformation (matrix vector product) to an state vector (taken from the lunar landing software equations): VLOAD MXV VATT1 REFSMMAT VSR1 VAD UNFC/2 STORE V. All those matrices and vectors are just realizations of objects living in abstract vector spaces. You can read about this abstract part of computing in my memo Linear Transformations, Matrices, and Composition.
In 2004, I presented the results of my research on the interface between the AGC and the manual control of the Apollo lunar module's Digital Autopilot as a use case of the same hardware interface (the "A" interface circuit and the "D" interface circuit) with different functions (implemented through high-level mission software) and the use of software virtual machines (Interpreters) during the 1960s. Is at hardware/software interfaces where human ideas enter into an automatic system's high-level guidance loop. This research has been used as a reference in some publications. Take for example the Virtual AGC project (https://www.ibiblio.org/apollo/yaTelemetry.html#gsc.tab=0). From that site: "The purpose of this project is to provide computer simulations of the onboard guidance computers used in the Apollo Program's lunar missions. yaACA, yaACA2, and yaACA3 The Attitude Controller Assembly (ACA)—also known as the rotational hand-controller (RHC)—is used by astronaut to affect the pitch, roll, and yaw of the LM. José Portillo has described the interaction between the ACA and AGC in great detail in a paper (klabs.org/mapld04/papers/g/g202_portillo_p.pdf) which is the basis of all ACA-related work in Virtual AGC. Refer to the developer page and to the assembly-language manual if you're interested in knowing more about the integration between the ACA simulation and yaAGC. Note that yaAGC retransmits any input-channel data received from the ACA simulation, so other onboard devices (such as yaAGS) wishing to receive RHC data automatically receive this data even though not connected to the ACA simulation."
Below, I present some links of interest regarding the events, technical papers, presentations and photographs.
Visit to MIT's Draper Lab with Eldon C. Hall (AGC chief designer), Cambridge MA, January 1999. Over the years, Eldon and I developed a friendship that encompassed our mutual interest in computers and history. Read more about Eldon at From the Farm to Pioneering with Digital Computers: An Autobiography
Meeting some Apollo Guidance Computer personnel
MAPLD 2004 Conference
Invitation to the MAPLD 2004 Conference
Letter from George Cherry, chief designer of the AGC's Digital Autopilot
MAPLD 2004 Blog: MAPLD 2004 Blog
Some participants of the MAPLD 2004 conference: Eldon C. Hall, Ramon Alonso, Cline Frasier, Hugh Blair-Smith and myself
With astronaut John Young (Apollo 10, Apollo 16) user of the AGC, and Eldon C. Hall AGC chief designer
APOLLO Lunar Landing Challenge: An Opportunity to review what was learned from the Apollo project? By Eldon C. Hall APOLLO Lunar Landing Challenge, Eldon C. Hall
You can read my 2004 memo Lunar Module Attitude Controller Assembly Input Processing at:
MIT's Digital Apollo web site
MAPLD 2004 web site
MAPLD 2006 Conference: MAPLD 2006 Conference
With NASA historian Frank O'Brien and AGC designer and assembler language designer Hugh Blair_Smith (behind us is the Apollo 11 command module). I had the privilege of sharing many writings and discussions with Blair-Smith, Frank O'Brien, Ramon Alonso, Cline Frasier, and Donald Eyles on the history of computing and the AGC during the Apollo missions. Hugh, Donald Eyles, and Frank O'Brien published books on the AGC and the history of computing.
Apollo Guidance Computer's A Circuit interface module
Apollo Guidance Computer's A Circuit interface module diagram (from Grumman Aircraft Interface Document
Apollo Guidance Computer's interface modules
Apollo Guidance Computer's D interface circuit (taken from Grumman Aircraft Interface Document)
AGC manufacture processes: wire-wrap machinery (for the logic design) and magnesium drilling (for the mechanical design)
AGC’s adder electronic components, as well as the (microprogram) sequence generator that controls it, were built as a wire-wrapped fixed panel
The Apollo Guidance Computer Block II
An AGC silicon chip (top left) made by Philco-Ford (about 1962-1964) and a single bit adder from AGC's Adder (below). The chip contains two gates each one consisting of three modified direct-coupled transistors (DCTL) in parallel, along with four resistors (top right). By using Morgan's Law any logic circuit can be built using only NOR-Gates like these. The single-bit Adder circuit includes a single-bit flip-flop as the basic storage pice
Compare AGC's Dual NOR-Gate logic module versus an MOTOROLA's 68701 Microcontroller (1970s era) and an Microchip's RISC microcontroller (1990s era). I had the opportunity to program both processors
The Apollo Guidance Computer Block I Tray (left) and Block II (right) - MAPLD 2004 conference
AGC's "A" interface circuit (MAPLD 2004 conference)
Disassembly of the Apollo Guidance Computer (MAPLD 2004 conference)
Eldon C. Hall and the Apollo Guidance Computer and DSKY (MIT/IL 1969)
The Apollo Guidance Computer in its test stand at Raytheon
The Apollo Guidance Computer inplace inside the Apollo 15's Lunar Module: A use case of the AGC as a control box
AGC Display and Keyboard (DSKY) in the Apollo Command Module main panel: A use case of the AGC as a control box
Apollo lunar landing approach and landing phases (McCall): A use case of the AGC as a control box
MAPLD 2004 presentation: My MAPLD 2004 Conference presentation
All about the AGC's Interpreter and virtual machines: All about Software Virtual Machines (Interpreters)