All Topics  
Apollo Guidance Computer

 
Apollo Guidance Computer

   Email Print
   Bookmark   Link






 

Apollo Guidance Computer



 
 
The Apollo Guidance Computer (AGC) was the first recognizably modern embedded system
Embedded system

An embedded system is a special-purpose computer system designed to perform one or a few dedicated functions, often with real-time computing constraints....
, used in real-time
Real-time computing

In computer science, real-time computing is the study of Computer hardware and computer software systems that are subject to a "real-time constraint"?i.e., operational deadlines from event to system response....
 by astronaut
Astronaut

An astronaut or cosmonaut is a person trained by a List of human spaceflight programs to command, pilot, or serve as a crew member of a spacecraft....
 pilots to collect and provide flight information, and to automatically control all of the navigational functions of the Apollo spacecraft
Apollo spacecraft

The Apollo spacecraft was designed as part of the Project Apollo, by the United States in the early 1960s to land men on the moon before 1970 and return them safely to earth....
. It was developed in the early 1960s for the Apollo program by the MIT Instrumentation Laboratory under Charles Stark Draper
Charles Stark Draper

Charles Stark Draper was an American scientist and engineer, often referred to as "the father of inertial navigation system."...
, with hardware design led by Eldon C. Hall
Eldon C. Hall

Eldon Hall was the leader of hardware design efforts for the Apollo Guidance Computer at Massachusetts Institute of Technology, and advocated the use of integrated circuits for this task....
. Based upon MIT documents, early architectural work
Computer architecture

Computer architecture in computer engineering is the conceptual design and fundamental operational structure of a computer system. It is a blueprint and functional description of requirements and design implementations for the various parts of a computer, focusing largely on the way by which the central processing unit performs internally an...
 seems to have come from J.H.






Discussion
Ask a question about 'Apollo Guidance Computer'
Start a new discussion about 'Apollo Guidance Computer'
Answer questions from other users
Full Discussion Forum



Recent Posts









Encyclopedia


The Apollo Guidance Computer (AGC) was the first recognizably modern embedded system
Embedded system

An embedded system is a special-purpose computer system designed to perform one or a few dedicated functions, often with real-time computing constraints....
, used in real-time
Real-time computing

In computer science, real-time computing is the study of Computer hardware and computer software systems that are subject to a "real-time constraint"?i.e., operational deadlines from event to system response....
 by astronaut
Astronaut

An astronaut or cosmonaut is a person trained by a List of human spaceflight programs to command, pilot, or serve as a crew member of a spacecraft....
 pilots to collect and provide flight information, and to automatically control all of the navigational functions of the Apollo spacecraft
Apollo spacecraft

The Apollo spacecraft was designed as part of the Project Apollo, by the United States in the early 1960s to land men on the moon before 1970 and return them safely to earth....
. It was developed in the early 1960s for the Apollo program by the MIT Instrumentation Laboratory under Charles Stark Draper
Charles Stark Draper

Charles Stark Draper was an American scientist and engineer, often referred to as "the father of inertial navigation system."...
, with hardware design led by Eldon C. Hall
Eldon C. Hall

Eldon Hall was the leader of hardware design efforts for the Apollo Guidance Computer at Massachusetts Institute of Technology, and advocated the use of integrated circuits for this task....
. Based upon MIT documents, early architectural work
Computer architecture

Computer architecture in computer engineering is the conceptual design and fundamental operational structure of a computer system. It is a blueprint and functional description of requirements and design implementations for the various parts of a computer, focusing largely on the way by which the central processing unit performs internally an...
 seems to have come from J.H. Laning Jr., Albert Hopkins, Ramon Alonso, and Hugh Blair-Smith. The actual flight hardware was fabricated by Raytheon
Raytheon

Raytheon Company is a major United States defense contractor and industrial corporation with core manufacturing concentrations in defense systems and defense and commercial electronics....
, whose Herb Thaler was also on the architectural team.

AGC in Apollo


Each flight to the Moon (with the exception of Apollo 8, which didn't take a Lunar Module on its lunar orbit mission) had two AGCs, one each in the command module
Apollo Command/Service Module

The Command/Service Module was a spacecraft built for NASA by North American Aviation. It was one of the two spacecraft that were utilized for the Apollo program, along with the Apollo Lunar Module, to land astronauts on the Moon....
 and the lunar module
Apollo Lunar Module

The Apollo Lunar Module was the Lander portion of the Apollo spacecraft built for the United States Apollo program by Grumman to achieve the transit from cislunar orbit to the surface and back....
. The AGC in the command module was at the center of that spacecraft's guidance & navigation system (G&C). The AGC in the Lunar Module ran its Primary Guidance, Navigation and Control System
Apollo PGNCS

The Apollo Primary Guidance, Navigation and Control System was a self-contained inertial guidance system that allowed Apollo spacecraft to carry out their missions when communications with Earth were interrupted, either as expected, when the spacecraft were behind the moon, or in case of a communications failure....
, called by the acronym PGNCS (pronounced pings).

Each lunar mission also had two additional computers:
  • A flight computer on the Saturn V
    Saturn V

    The Saturn V was a multistage rocket liquid-fuel expendable launch system rocket used by NASA's Apollo program and Skylab programs from 1967 until 1973....
     booster instrumentation ring called the Launch Vehicle Digital Computer (LVDC)
    Launch Vehicle Digital Computer

    The Saturn Launch Vehicle Digital Computer was one of the major components of the Saturn V Instrument Unit fitted to the S-IVB stage of the Saturn V and Saturn IB rockets....
    —a serial computer built by IBM Federal Systems Division.
  • A small machine in the lunar module's Abort Guidance System (AGS)
    Abort Guidance System

    Abort Guidance System was a backup computer system in Apollo Lunar Module. It was completely different computer system than Apollo Guidance Computer because it was designed by TRW independently from the AGC development....
    , built by TRW
    TRW

    TRW Incorporated was an American corporation involved in a number of businesses, mostly defense industry-related, but including automotive industry, aerospace and credit reporting....
    , to be used in the event of failure of the PGNCS. The AGS could be used to take off from the Moon, and to rendezvous with the command module, but not for landing.


Applications outside Apollo


The AGC formed the basis of an experimental fly-by-wire system installed into an F-8 Crusader
F-8 Crusader

The F-8 Crusader was a single-engine aircraft carrier-based fighter aircraft built by Vought. It replaced the Vought F-7 Cutlass. The first F-8 prototype was ready for flight in February 1955, and was the last United States fighter with guns as the primary weapon....
 to demonstrate the practicality of computer driven FBW system. The AGC used in the first phase of the program was replaced with another machine in the second phase, and research done on the program led to the development of FBW systems for the Space Shuttle
Space Shuttle

NASA's Space Shuttle, officially called the Space Transportation System , is the spacecraft currently used by the United States government for its human spaceflight missions....
. The AGC also led, albeit indirectly, to the development of FBW for the generation of fighters that were being developed at the time.

Description


The Apollo flight computer was the first to use integrated circuits (ICs)
Integrated circuit

In electronics, an integrated circuit is a miniaturized electronic circuit that has been manufactured in the surface of a thin Wafer of semiconductor material....
. The Block I version used 4,100 ICs, each containing a single 3-input nor
NOR gate

The NOR gate is a digital logic gate that implements logical NOR - it behaves according to the truth table to the right. A HIGH output results if both the inputs to the gate are LOW ....
 logic gate
Logic gate

A logic gate performs a logical operation on one or more logic inputs and produces a single logic output. The logic normally performed is Boolean logic and is most commonly found in digital circuits....
. The later Block II version used dual 3-input nor gates in a flat-pack, approximately 5,600 gates in all. The gates were made by Fairchild Semiconductor
Fairchild Semiconductor

Present day Fairchild Semiconductor International, Inc. is a spin-off company resulting from reconstitution of assets in National Semiconductor....
 using resistor-transistor logic
Resistor-transistor logic

File:RTL NPN NOR Gate.svgFile:RTL 3-Input NOR Gate.svgResistor?transistor logic is a class of digital circuits built using resistors as the input network and bipolar junction transistors as switching devices....
 (RTL). They were interconnected by a technique called wire wrap
Wire wrap

Wire wrap is a technique for constructing small numbers of complex electronics assemblies. It is an alternative technique to the use of small runs of printed circuit boards, and has the advantage of being easily changed for prototyping work....
, in which the circuits are pushed into sockets, the sockets have square posts, and wire is wrapped around the posts. The edges of the posts press against the wire with very high pressure, causing gas-tight connections that are more reliable than soldered PC boards. The wiring was then embedded in cast epoxy
Epoxy

In chemistry, epoxy or polyepoxide is a thermosetting epoxide polymer that cures when mixed with a catalyst agent or hardener. Most common epoxy resins are produced from a reaction between epichlorohydrin and bisphenol-A....
 plastic. The decision to use a single IC design throughout the AGC avoided problems that plagued another early IC computer design, the Minuteman II
LGM-30 Minuteman

The LGM-30 Minuteman is an United States Nuclear weapon missile, a land-based intercontinental ballistic missile . As of 2008, it is the only land-based ICBM in service in the United States....
 guidance computer
D-37C

The D-37C is the computer component of the all-inertial NS-17 Missile Guidance Set for accurately navigating to its target thousands of miles away. The NS-17 MGS was used in the Minuteman II ICBM....
, which used a mix of diode-transistor logic
Diode-transistor logic

Diode?Transistor Logic is a class of digital circuits built from bipolar junction transistors , diodes and resistors; it is the direct ancestor of transistor?transistor logic....
 (DTL) and diode logic
Diode logic

Diode logic or Diode-resistor logic, is a circuit style that uses diodes to construct Boolean logic logic gates for electrical circuit. Only non-inverter functions may be implemented, so it is not a complete logic family....
 (DL) gates made by Texas Instruments
Texas Instruments

Texas Instruments , better known in the electronics industry as TI, is an United States company based in Dallas, Texas, Texas, United States, renowned for developing and commercializing semiconductor and computer technology....
.

The computer's RAM
Random-access memory

Random-Assess Memory Card is a form of computer data storage. Today it takes the form of integrated circuits that allows the stored data to be accessed in any order ....
 was magnetic core memory
Magnetic core memory

Magnetic core memory, or ferrite-core memory, is an early form of random access computer memory. It uses small magnetic ceramic rings, the cores, through which wires are threaded to store information via the Polarity of the magnetic field they contain....
 (2 kibiwords) and ROM
Read-only memory

Read-only memory is a class of computer storage media used in computers and other electronic devices. Because data stored in ROM cannot be modified , it is mainly used to distribute firmware ....
 was implemented as core rope memory
Core rope memory

Core rope memory is a form of read-only memory for computers, first used by early NASA Mars space probes and then in the Apollo Guidance Computer designed by Massachusetts Institute of Technology and built by Raytheon....
 (36 kibiwords). Both had cycle times of 11.72 ms. The memory word length was 16 bits: 15 bits of data and 1 odd-parity bit
Parity bit

A parity bit is a bit that is added to ensure that the number of bits with value of 1 in a given set of bits is always even number or odd number....
. The CPU
Central processing unit

A central processing unit is an electronic circuit that can execute computer programs. This broad definition can easily be applied to many early computers that existed long before the term "CPU" ever came into widespread usage....
-internal 16-bit word format was 14 bits of data, 1 overflow
Arithmetic overflow

The term arithmetic overflow or simply overflow has the following meanings.# In a digital computer, the condition that occurs when a calculation produces a result that is greater in magnitude than what a given processor register or Computer storage location can store or represent....
 bit, and 1 sign bit (one's complement
Computer numbering formats

The term computer numbering formats refers to the schemes implemented in digital computer and calculator hardware and software to represent numbers....
 representation).

Dsky user interface


The user interface
User interface

The user interface is the aggregate of means by which people—the User s—Interaction with the system—a particular machine, device, computer program or other complex tools....
 unit was called the Dsky. Dsky stood for display and keyboard and was usually pronounced dis-key. It had an array of numeric displays and a calculator
Calculator

A calculator is a device for performing mathematical calculations, distinguished from a computer by having a limited problem solving ability and an interface optimized for interactive calculation rather than programming....
-style keyboard. Commands were entered numerically, as two-digit numbers: program, verb, and noun. The numerals were green high-voltage electroluminescent
Electroluminescence

Electroluminescence is an optical phenomenon and electrical phenomenon in which a material emits light in response to an electric current passed through it, or to a strong electric field....
  seven segment displays. The segments were driven by electromechanical relay
Relay

A relay is an electrical switch that opens and closes under the control of another electrical circuit. In the original form, the switch is operated by an magnet to open or close one or many sets of contacts....
s, which limited the display update rate (Block II used faster silicon controlled rectifiers). Three 5-digit signed numbers could also be displayed in octal
Octal

The octal numeral system, or oct for short, is the radix-8 number system, and uses the digits 0 to 7. Numerals can be made from Binary numeral system numerals by grouping consecutive digits into groups of three ....
 or decimal. These were typically used to display vectors such as space craft attitude
Aircraft attitude

Aircraft attitude is used to mean two closely related aspects of the situation of an aircraft in flight....
 or a required velocity change (delta-V
Delta-v

In astrodynamics, the term delta-v, literally "change in velocity" , has a specific meaning: it is a scalar which takes units of speed that measures the amount of "effort" needed to carry out an orbital maneuver, i.e., to change from one trajectory to another....
). This calculator-style interfaceThe first advanced desktop calculators hit the market in roughly the same time frame, with scientific and then programmable pocket calculators appearing during the following decade. The first programmable handheld calculator
Programmable calculator

Programmable calculators are calculators capable of being computer programming much like a computer.Since the early 1990s, most of these flexible handheld units belong to the class of graphing calculators....
, the HP-65
HP-65

The HP-65 was the first magnetic card-programmable handheld calculator. Introduced by Hewlett-Packard in 1974, it featured nine storage registers and room for 100 keystroke instructions....
, was tried on backup computations aboard the Apollo Command/Service Module in the Apollo-Soyuz Test Project
Apollo-Soyuz Test Project

mission_name = ASTP Apollo|insignia = ASTPpatch.png|crew_size = 3|command_module = CMmass |spacecraft_mass = total...
 in 1975.
was the first of its kind, the prototype for all similar digital control panel interfaces.

The command module (CM) had two Dskys; one located on the main instrument panel and another located in the lower equipment bay near a sextant
Sextant

:For the history and development of the sextant see Reflecting instrument#The sextantA sextant is an measuring instrument generally used to measure the altitude of a astronomical object above the horizon....
 used for aligning the inertial guidance platform. Both Dskys were driven by the same AGC. The lunar module (LM) had a single Dsky for its AGC. A Flight Director Attitude Indicator
Flight director (aviation)

In aviation, a flight director is a navaid that is overlaid on the Attitude indicator that shows the aviator of an aircraft the attitude required to follow a certain trajectory....
 (FDAI), controlled by the AGC, was located above the Dsky on the commander's console and on the LM.

Timing


The AGC was controlled by a 2.048 MHz crystal
Crystal oscillator

A crystal oscillator is an electronic circuit that uses the mechanical resonance of a vibrating crystal of Piezoelectricity#Materials to create an electrical signal with a very precise frequency....
 clock
Clock rate

The clock rate is the fundamental rate in cycles per second for the frequency of the clock in any synchronous circuit. For example, a crystal oscillator frequency reference typically is synonymous with a fixed sinusoidal waveform, a clock rate is that frequency reference translated by electronic circuitry into a corresponding square wav...
. The clock was divided by two to produce a four-phase 1.024 MHz clock which the AGC used to perform internal operations. The 1.024 MHz clock was also divided by two to produce a 512 kHz signal called the master frequency; this signal was used to synchronize external Apollo spacecraft systems.

The master frequency was further divided through a scaler, first by five using a ring counter to produce a 102.4 kHz signal. This was then divided by two through 17 successive stages called F1 (51.2 kHz) through F17 (0.78125 Hz). The F10 stage (100 Hz) was fed back into the AGC to increment the real-time clock
Real-time clock

A real-time clock is a computer clock that keeps track of the current time. Although the term often refers to the devices in personal computers, server s and embedded systems, RTCs are present in almost any electronic device which needs to keep accurate time....
 and other involuntary counters using Pinc (discussed below). The F17 stage was used to intermittently run the AGC when it was operating in the standby mode.

Central registers


The AGC had four 16-bit register
Processor register

In computer architecture, a processor register is a small amount of Computer storage available on the CPU whose contents can be accessed more quickly than storage available elsewhere....
s for general computational use. These were called the central registers: A: The accumulator
Accumulator (computing)

In a computer's central processing unit , an accumulator is a processor register in which intermediate arithmetic logic unit results are stored....
, used for general computation Z: The program counter
Program counter

The program counter, or PC is a processor register that indicates where the computer is in its instruction sequence. Depending on the details of the particular computer, the PC holds either the address of the instruction being executed, or the address of the next instruction to be executed....
, which contained the address of the next instruction to be executed Q: Used to hold the remainder in the DV instruction, and to hold the return address
Return address

In postal mail, a return address is an explicit inclusion of the address of the person sending the message. It provides the recipient with a means to determine how to respond to the sender of the message if needed....
 after TC instructions LP: Used to hold the lower product after MP instructions

There were also four locations in core memory, at addresses 20-23, dubbed editing locations because whatever was stored there would emerge shifted or rotated by one bit position, except for one that shifted right 7 bit positions, to extract one of the 7-bit interpretive op. codes that were packed 2 to a word. This was common to Block I and Block II AGCs.

Other registers


The AGC had additional registers that were used internally in the course of operation. These were: S: The 12-bit memory address register, which held the lower portion of the memory address Bank or Fbank: The 4-bit ROM bank register, which selected the 1 kibiword ROM bank when addressing was in the fixed-switchable mode Ebank: The 3-bit RAM bank register, which selected the 256-word RAM bank when addressing was in the erasable-switchable mode Sbank (super-bank): The 1-bit extension to Fbank, required because the last 4 kibiwords of the 36-kibiword ROM was not reachable using Fbank alone SQ: The 4-bit sequence register, which held the current instruction G: The 16-bit memory buffer register, which held data words moving to and from memory X: Used to hold one of the two inputs to the adder; the adder was used to perform all 1's complement arithmetic, and to increment the program counter (Z register) Y: Used to hold the other input to the adder U: Not really a register, but the output of the adder (the 1's complement sum of the contents of registers X and Y B: A general-purpose buffer register, also used to pre-fetch the next instruction. At the start of the next instruction sequence, the upper bits of B (containing the next op. code) were copied to SQ, and the lower bits (the address) were copied to S. C: Not a separate register, but a different output from the B register, containing the 1's complement of the contents of B IN: Four 16-bit input registers OUT: Five 16-bit output registers

Instruction set


The instruction format
Instruction set

An instruction set is a list of all the instruction , and all their variations, that a processor can execute.Instructions include:* Arithmetic such as add and subtract...
 was 3 bits for opcode
Opcode

In computer technology, an opcode is the portion of a machine language instruction that specifies the operation to be performed. Their specification and format are laid out in the instruction set architecture of the processor in question ....
, 12 bits for address. Block I had 11 instructions: TC, CCS, INDEX, XCH, CS, TS, AD, and MASK (basic), and SU, MP, and DV (extra). The first eight, called basic instructions, were directly accessed by the 3-bit op. code. The final three were denoted as extracode instructions because they were accessed by performing a special type of INDEX instruction (called EXTEND) immediately before the instruction.

The Block I AGC instructions consisted of the following: TC (transfer control): An unconditional branch to the address specified by the instruction. The return address was automatically stored in the Q register, so the TC instruction could be used for subroutine calls. CCS (count, compare, and skip): A complex conditional branch instruction. The A register was loaded with data retrieved from the address specified by the instruction. (Because the AGC uses ones' complement notation, there are two representations of zero. When all bits are set to zero, this is called plus zero. If all bits are set to one, this is called minus zero.) The diminished absolute value (DABS) of the data was then computed and stored in the A register. If the number was greater than zero, the DABS decrements the value by 1; if the number was negative, it is complemented before the decrement is applied—this is the absolute value. Diminished means "decremented but not below zero". Therefore, when the AGC performs the DABS function, positive numbers will head toward plus zero, and so will negative numbers but first revealing their negativity via the four-way skip below. The final step in CCS is a four-way skip, depending upon the data in register A before the DABS. If register A was greater than 0, CCS skips to the first instruction immediately after CCS. If register A contained plus zero, CCS skips to the second instruction after CCS. Less than zero causes a skip to the third instruction after CCS, and minus zero skips to the fourth instruction after CCS. The primary purpose of the count was to allow an ordinary loop, controlled by a positive counter, to end in a CCS and a TC to the beginning of the loop, equivalent to an IBM 360
System/360

The IBM System/360 is a mainframe computer system family announced by IBM on April 7, 1964. It was the first family of computers making a clear distinction between computer architecture and implementation, allowing IBM to release a suite of compatible designs at different price points....
's BCT. The absolute value function was deemed important enough to be built into this instruction; when used for only this purpose, the sequence after the CCS was TC *+2, TC *+2, AD ONE. A curious side effect was the creation and use of CCS-holes when the value being tested was known to be never positive, which occurred more often than you might suppose. That left two whole words unoccupied, and a special committee was responsible for assigning data constants to these holes. INDEX: Add the data retrieved at the address specified by the instruction to the next instruction. INDEX can be used to add or subtract an index value to the base address
Base address

In computing, a base address is an address serving as a reference point for other addresses.In computers using relative addressing scheme, to obtain an absolute address, the relevant base address is taken and Offset is added to it....
 specified by the operand of the instruction that follows INDEX. This method is used to implement arrays and table look-ups; since the addition was done on both whole words, it was also used to modify the op. code in a following (extracode) instruction, and on rare occasions both functions at once. RESUME: A special instance of INDEX (INDEX 25). This is the instruction used to return from interrupts. It causes execution to resume at the interrupted location. XCH (exchange): Exchange the contents of memory with the contents of the A register. If the specified memory address is in fixed (read-only) memory, the memory contents are not affected, and this instruction simply loads register A. If it is in erasable memory, overflow "correction" is achieved by storing the leftmost of the 16 bits in A as the sign bit in memory, but there is no exceptional behavior like that of TS. CS (clear and subtract): Load register A with the one's complement of the data referenced by the specified memory address. TS (transfer to storage): Store register A at the specified memory address. TS also detects, and corrects for, overflow
Arithmetic overflow

The term arithmetic overflow or simply overflow has the following meanings.# In a digital computer, the condition that occurs when a calculation produces a result that is greater in magnitude than what a given processor register or Computer storage location can store or represent....
s in such a way as to propagate a carry for multi-precision add/subtract. If the result has no overflow (leftmost 2 bits of A the same), nothing special happens; if there is overflow (those 2 bits differ), the leftmost one goes the memory as the sign bit, register A is changed to +1 or -1 accordingly, and control skips to the second instruction following the TS. Whenever overflow is a possible but abnormal event, the TS was followed by a TC to the no-overflow logic; when it is a normal possibility (as in multi-precision add/subtract), the TS is followed by CAF ZERO (CAF = XCH to fixed memory) to complete the formation of the carry (+1, 0, or -1) into the next higher-precision word. Angles were kept in single precision
Single precision

In computing, single precision is a computer numbering format that occupies one storage location in computer memory at a given address. A single-precision number, sometimes simply a single, may be defined to be an integer, fixed point, or floating point....
, distances and velocities in double precision
Double precision

In computing, double precision is a computer numbering format that occupies two adjacent storage locations in computer memory. A double precision number, sometimes simply called a double, may be defined to be an integer, fixed point, or floating point....
, and elapsed time in triple precision. AD (add): Add the contents of memory to register A and store the result in A. The 2 leftmost bits of A may be different (overflow state) before and/or after the AD. The fact that overflow is a state rather than an event forgives limited extents of overflow when adding more than two numbers, as long as none of the intermediate totals exceeds twice the capacity of a word. MASK: Perform a bit-wise (boolean) and of memory with register A and store the result in register A. MP (multiply): Multiply the contents of register A by the data at the referenced memory address and store the high-order product in register A and the low-order product in register LP. The parts of the product agree in sign. DV (divide): Divide the contents of register A by the data at the referenced memory address. Store the quotient in register A and the absolute value of the remainder in register Q. Unlike modern machines, fixed-point numbers
Fixed-point arithmetic

In computing, a fixed-point number representation is a real data type for a number that has a fixed number of digits after the radix point . Fixed-point number representation can be compared to the more complicated floating point number representation....
 were treated as fractions (notional decimal point just to right of the sign bit), so you could produce garbage if the divisor was not larger than the dividend; there was no protection against that situation. In the Block II AGC, a double-precision dividend started in A and L (the Block II LP), and the correctly signed remainder was delivered in L. That considerably simplified the subroutine for double precision division. SU (subtract): Subtract (one's complement) the data at the referenced memory address from the contents of register A and store the result in A.

Instructions were implemented in groups of 12 steps, called timing pulses. The timing pulses were named TP1 through TP12. Each set of 12 timing pulses was called an instruction subsequence. Simple instructions, such as TC, executed in a single subsequence of 12 pulses. More complex instructions required several subsequences. The multiply instruction (MP) used 8 subsequences: an initial one called MP0, followed by an MP1 subsequence which was repeated 6 times, and then terminated by an MP3 subsequence. This was reduced to 3 subsequences in Block II.

Each timing pulse in a subsequence could trigger up to 5 control pulses. The control pulses were the signals which did the actual work of the instruction, such as reading the contents of a register onto the bus, or writing data from the bus into a register.

Memory


Block I AGC memory was organized into 1 kibiword banks. The lowest bank (bank 0) was erasable memory (RAM). All banks above bank 0 were fixed memory (ROM). Each AGC instruction had a 12-bit address field. The lower bits (1-10) addressed the memory inside each bank. Bits 11 and 12 selected the bank: 00 selected the erasable memory bank; 01 selected the lowest bank (bank 1) of fixed memory; 10 selected the next one (bank 2); and 11 selected the Bank register that could be used to select any bank above 2. Banks 1 and 2 were called fixed-fixed memory, because they were always available, regardless of the contents of the Bank register. Banks 3 and above were called fixed-switchable because the selected bank was determined by the bank register.

The Block I AGC initially had 12 kibiwords of fixed memory, but this was later increased to 24 kibiwords. Block II had 32 kibiwords of fixed memory and 4 kibiwords of erasable memory.

The AGC transferred data to and from memory through the G register in a process called the memory cycle. The memory cycle took 12 timing pulses (11.72 µs). The cycle began at timing pulse 1 (TP1) when the AGC loaded the memory address to be fetched into the S register. The memory hardware retrieved the data word from memory at the address specified by the S register. Words from erasable memory were deposited into the G register by timing pulse 6 (TP6); words from fixed memory were available by timing pulse 7. The retrieved memory word was then available in the G register for AGC access during timing pulses 7 through 10. After timing pulse 10, the data in the G register was written back to memory.

The AGC memory cycle occurred continuously during AGC operation. Instructions needing memory data had to access it during timing pulses 7-10. If the AGC changed the memory word in the G register, the changed word was written back to memory after timing pulse 10. In this way, data words cycled continuously from memory to the G register and then back again to memory.

The lower 15 bits of each memory word held AGC instructions or data. Each word protected by a 16th odd parity bit. This bit was set to 1 or 0 by a parity generator circuit so a count of the 1s in each memory word would always produce an odd number. A parity checking circuit tested the parity bit during each memory cycle; if the bit didn't match the expected value, the memory word was assumed to be corrupted and a parity alarm panel light was illuminated.

Interrupts and involuntary counters


The AGC had five vectored interrupt
Interrupt

In computing, an interrupt is an asynchronous communication signal from hardware indicating the need for attention or a synchronous event in software indicating the need for a change in execution....
s:
  • Dsrupt was triggered at regular intervals to update the user display (Dsky).
  • Errupt was generated by various hardware failures or alarms.
  • Keyrupt signaled a key press from the user's keyboard.
  • T3Rrupt was generated at regular intervals from a hardware timer to update the AGC's real-time clock
    Real-time clock

    A real-time clock is a computer clock that keeps track of the current time. Although the term often refers to the devices in personal computers, server s and embedded systems, RTCs are present in almost any electronic device which needs to keep accurate time....
    .
  • Uprupt was generated each time a 16-bit word of uplink data was loaded into the AGC.
The AGC responded to each interrupt by temporarily suspending the current program, executing a short interrupt service routine, and then resuming the interrupted program.

The AGC also had 20 involuntary counter
Counter

In digital logic and computing, a counter is a device which stores the number of times a particular event or Process has occurred, often in relationship to a clock signal....
s. These were memory locations which functioned as up/down counters, or shift registers. The counters would increment, decrement, or shift in response to internal inputs. The increment (Pinc), decrement (Minc), or shift (Shinc) was handled by one subsequence of microinstructions inserted between any two regular instructions.

Interrupts could be triggered when the counters overflowed. The T3rupt and Dsrupt interrupts were produced when their counters, driven by a 100 Hz hardware clock, overflowed after executing many Pinc subsequences. The Uprupt interrupt was triggered after its counter, executing the Shinc subsequence, had shifted 16 bits of uplink data into the AGC.

Standby mode


The AGC had a power-saving mode controlled by a standby allowed switch. This mode turned off the AGC power, except for the 2.048 MHz clock and the scaler. The F17 signal from the scaler turned the AGC power and the AGC back on at 1.28 second intervals. In this mode, the AGC performed essential functions, checked the standby allowed switch, and, if still enabled, turned off the power and went back to sleep until the next F17 signal.

In the standby mode, the AGC slept most of the time; therefore it was not awake to perform the Pinc instruction needed to update the AGC's real time clock at 10 ms intervals. To compensate, one of the functions performed by the AGC each time it awoke in the standby mode was to update the real time clock by 1.28 seconds.

The standby mode was designed to reduce power by 5 to 10 W (from 70 W) during midcourse flight when the AGC was not needed. However, in practice, the AGC was left on during all phases of the mission and this feature was never used.

Data buses


The AGC had a 16-bit read bus and a 16-bit write bus. Data from central registers (A, Q, Z, or LP), or other internal registers could be gated onto the read bus with a control signal. The read bus connected to the write bus through a non-inverting buffer, so any data appearing on the read bus also appeared on the write bus. Other control signals could copy write bus data back into the registers.

Data transfers worked like this: To move the address of the next instruction from the B register to the S register, an RB (read B) control signal was issued; this caused the address to move from register B to the read bus, and then to the write bus. A WS (write S) control signal moved the address from the write bus into the S register.

Several registers could be read onto the read bus simultaneously. When this occurred, data from each register was inclusive-ored onto the bus. This inclusive-or feature was used to implement the Mask instruction, which was a logical and operation. Because the AGC had no native ability to do a logical and, but could do a logical or through the bus and could complement (invert) data through the C register, De Morgan's theorem
De Morgan's laws

In formal logic, De Morgan's laws are rules relating the logical operators 'and' and 'or' in terms of each other via logical negation.History...
 was used to implement the equivalent of a logical and. This was accomplished by inverting both operands, performing a logical or through the bus, and then inverting the result.

Software


AGC software was written in AGC assembly language
Assembly language

An assembly language is a low-level language for programming computers. It implements a symbolic representation of the numeric machine codes and other constants needed to program a particular CPU architecture....
 and stored on rope memory. There was a simple real-time operating system
Real-time operating system

A Real-Time Operating System is a Computer multitasking operating system intended for real-time computing applications. Such applications include embedded systems , industrial robots, spacecraft, industrial control , and scientific research equipment....
 consisting of the Exec, a batch job-scheduling system that could run up to 8 'jobs' at a time using non-preemptive multi-tasking (each job had to periodically surrender control back to the Exec). There was also an interrupt-driven component called the Waitlist which could schedule multiple timer-driven 'tasks'. The tasks were short threads of execution which could reschedule themselves for re-execution on the Waitlist, or could kick off a longer operation by starting a 'job' with the Exec.

The Exec jobs were priority-based. The lowest priority job, called the dummy job, was always present. It did diagnostic checks and controlled a green computer activity light on the Dsky display: If the dummy job was running, this meant the computer had nothing better to do, so the light was turned off. The dummy job exited if there was some higher priority job to be done and this was indicated by the computer activity light being illuminated.

The AGC also had a sophisticated software interpreter that implemented a virtual machine with more complex and capable instructions than the native AGC. Interpreted code, which featured double precision scalar and vector arithmetic, even an MXV (matrix × vector) instruction, could be mixed with native AGC code. The assembler and version control system, named YUL for an early prototype Christmas Computer, enforced proper transitions between native and interpreted code.

A set of interrupt-driven user interface routines called Pinball provided keyboard and display services for the jobs and tasks running on the AGC. A rich set of user-accessible routines were provided to let the operator (astronaut) display the contents of various memory locations in octal
Octal

The octal numeral system, or oct for short, is the radix-8 number system, and uses the digits 0 to 7. Numerals can be made from Binary numeral system numerals by grouping consecutive digits into groups of three ....
 or decimal in groups of 1, 2, or 3 registers at a time. Monitor routines were provided so the operator could initiate a task to periodically redisplay the contents of certain memory locations. Jobs could be initiated. The Pinball routines performed the (very rough) equivalent of the UNIX shell.

The Block II


A Block II version of the AGC was designed in 1966. It retained the basic Block I architecture, but increased erasable memory from 1 to 2 kibiwords. Fixed memory was expanded from 24 to 36 kibiwords. Instructions were expanded from 11 to 34 and I/O channels were implemented to replace the I/O registers on Block I. The Block II version is the one that actually flew to the moon. Block I was used during the unmanned Apollo 4
Apollo 4

Apollo 4 was the first Unmanned space mission of the Saturn V launch vehicle. It was also the first flight of the S-IC and S-II stages of the rocket....
 and 6
Apollo 6

Apollo 6, launched on April 4, 1968, was the Apollo program's second and last unmanned test flight of its Saturn V launch vehicle....
 flights, and was onboard the ill-fated Apollo I.

The decision to expand the memory and instruction set for Block II, but to retain the Block I's restrictive 3-bit op. code and 12-bit address had interesting design consequences. Various tricks were employed to squeeze in additional instructions, such as having special memory addresses which, when referenced, would implement a certain function. For instance, an INDEX to address 25 triggered the RESUME instruction to return from an interrupt. Likewise, INDEX 17 performed an INHINT instruction (inhibit interrupts), while INDEX 16 reenabled them (RELINT). Other instructions were implemented by preceding them with a special version of INDEX called EXTEND which arithmetically modified the 3-bit op. code by employing the overflow bit to extend it. The address spaces were extended by employing the Bank (fixed) and Ebank (erasable) registers, so the only memory of either type that could be addressed at any given time was the current bank, plus the small amount of fixed-fixed memory and the erasable memory. In addition, the bank register could address a maximum of 32 kibiwords, so an Sbank (super-bank) register was required to access the last 4 kibiwords. All across-bank subroutine calls had to be initiated from fixed-fixed memory through special functions to restore the original bank during the return—essentially a system of far pointer
Far pointer

In a memory segment computer, a far pointer is a pointer which includes a Memory segment, making it possible to point to addresses outside of the current segment....
s.

The Block II AGC also has the mysterious and poorly documented EDRUPT instruction (the name may be a contraction of Ed's Interrupt, after Ed Smally, the programmer who requested it) which is used a total of once in the Apollo software: in the Digital Autopilot of the Lunar Module. At this time, while the general operation of the instruction is understood, the precise details are still hazy, and it is believed to be responsible for problems emulating the LEM AGC Luminary software.

PGNCS trouble

The PGNC System
Apollo PGNCS

The Apollo Primary Guidance, Navigation and Control System was a self-contained inertial guidance system that allowed Apollo spacecraft to carry out their missions when communications with Earth were interrupted, either as expected, when the spacecraft were behind the moon, or in case of a communications failure....
 malfunctioned during the first live lunar descent, with the AGC showing a 1201 alarm ("Executive overflow - no vacant areas") and a 1202 alarm ("Executive overflow - no core sets"). In both cases these errors were caused by spurious data from the rendezvous radar, which had been left on during the descent. When the separate landing radar acquired the lunar surface and the AGC began processing this data too, these overflow errors automatically aborted the computer's current task, but the frequency of radar data still meant the abort signals were being sent at too great a rate for the CPU to cope.

Happily for Apollo 11
Apollo 11

The Apollo 11 mission was the first manned mission to land on the Moon. It was the fifth human spaceflight of Apollo program and the third human voyage to the Moon....
, the AGC software executed a fail-safe routine and shed its low-priority tasks. The critical inertial guidance tasks continued to operate reliably. The degree of overload was minimal because the software had been limited so as to leave very nearly 15% available spare time which, wholly by luck, nearly matched the 6400 bit/s pulse trains from the needless, rendezvous-radar induced Pincs, wasting exactly 15% of the AGC's time. On the instructions of Steve Bales
Steve Bales

Steve Bales is a former NASA engineer and flight controller. He is best known for his role during the Apollo 11 lunar landing....
 and Jack Garman
Jack Garman

John R. "Jack" Garman is a computer engineer, former senior NASA executive and a noted key figure of the Apollo 11 lunar landing. As a young specialist on duty during the final descent stage on 20 July 1969 he dealt with a series of computer alarms which could have caused the mission to be aborted....
 these errors were ignored and the mission was a success.

The problem was caused by neither a programming error in the AGC nor by pilot error. It was a procedural (protocol) and simulation error. In the simulator, the astronauts had been trained to set the rendezvous radar switch to its auto position. However, there was no connection to a live radar in the simulator and the problem was never seen until the procedure was carried out on Apollo 11's lunar descent when the switch was connected to a real AGC, the landing radar began sending data and the onboard computer was suddenly and very unexpectedly tasked with processing data from two real radars.

00404 error code

The computer's other error codes included error 00404, which was shorthand for "IMU orientation unknown". Since the Inertial Measurement Unit
Inertial measurement unit

An inertial measurement unit, or IMU, is the main component of inertial guidance systems used in aircraft, spacecraft, and watercraft, including guided missiles....
 device literally told the craft where to go, this has been compared to the HTTP 404 not found or browser navigation error code used on the World Wide Web
World Wide Web

The World Wide Web is a very large set of interlinked hypertext documents accessed via the Internet. With a Web browser, one can view Web pages that may contain writing, s, videos, and other multimedia and navigate between them using hyperlinks....
. However, the later familiar HTTP error code did not originate with the AGC.

See also

  • AP-101 (IBM S/360-derived) computers used in the Space Shuttle
    Space Shuttle program

    NASA's Space Shuttle, officially called Space Transportation System , is the United States government's current Human spaceflight launch vehicle....
  • History of computer hardware
    History of computing hardware (1960s-present)

    The history of computing hardware starting at 1960 is marked by the conversion from vacuum tube to Solid state devices such as the transistor and later the integrated circuit....


External links

Documentation on the AGC and its development:

  • – The infamous memo that served as de facto official documentation of the instruction set
  • – By James Tomayko (Chapter 2, Part 5, The Apollo guidance computer: Hardware)
  • – By James Tomayko
  • (PDF
    Portable Document Format

    Portable Document Format is a file format created by Adobe Systems in 1993 for document exchange. PDF is used for representing two-dimensional documents in a manner independent of the application software, hardware, and operating system....
    ) – By David Scott, Apollo mission astronaut
  • (PDF
    Portable Document Format

    Portable Document Format is a file format created by Adobe Systems in 1993 for document exchange. PDF is used for representing two-dimensional documents in a manner independent of the application software, hardware, and operating system....
    ) – By José Portillo Lugo, History of Technology
  • – With comprehensive document archive
    • , for Lunar Module guidance computer.
    • , for Command Module guidance computer.
  • and
  • – From in Space: our gateway to the stars by the Australian Broadcasting Corporation
    Australian Broadcasting Corporation

    The Australian Broadcasting Corporation, commonly referred to as the ABC, is Australia's national Public broadcasting.With a budget of Australian dollar840 million annually, the corporation provides television, radio, online and mobile services throughout metropolitan and regional Australia, as well as overseas through the Australia Net...
     (1999)
  • – An AGC system programmer discusses some obscure details of the development of AGC, including specifics of Ed's Interrupt


Documentation of AGC hardware design, and particularly the use of the new integrated circuits in place of transistors:


Documentation of AGC software operation:
  • - Manual for CSM and LEM AGC software used on the Apollo 15 mission, including detailed user interface procedures, explanation of many underlying algorithms and limited hardware information. Note that this document has over 500 pages and is over 150 megabytes in size.


Some AGC-based technology history projects:
  • – John Pultorak's successful project to build a hardware replica of the Block I AGC in his basement
  • – Ronald Burkey's AGC simulator, plus source and binary code recovery for the Colossus (CSM) and Luminary (LEM) SW
  • – Addon for Orbiter spaceflight simulator, working towards a full simulation of the CSM and LEM including the Virtual AGC.
  • Shareware Lunar Lander Simulator with a working AGC and Dsky (Windows only)