The Apollo Abort Guidance System (AGS, also known as Abort Guidance Section) was a backup computer system providing an abort capability in the event of failure of the Lunar Module's primary guidance system (Apollo PGNCS) during descent, ascent or rendezvous. As an abort system, it did not support guidance for a lunar landing. [1]
The AGS was designed by TRW independently of the development of the Apollo Guidance Computer and PGNCS.
It was the first navigation system to use a strapdown Inertial Measurement Unit rather than a gimbaled gyrostabilized IMU (as used by PGNCS). [2] Although not as accurate as the gimbaled IMU, it provided satisfactory accuracy with the help of the optical telescope and rendezvous radar. It was also lighter and smaller in size.
The Abort Guidance System included the following components: [3]
The computer used was MARCO 4418 (MARCO stands for Man Rated Computer) whose dimensions were 5 by 8 by 23.75 inches (12.7 by 20.3 by 60.33 centimeters); it weighed 32.7 pounds (14.83 kg) and required 90 watts of power. Because the memory had a serial access it was slower than AGC, although some operations on AEA were performed as fast or faster than on AGC.
The computer had the following characteristics:
The AEA has the following registers: [4]
Other registers include:
The AEA instruction format consisted of five-bit instruction code, index bit and a 12-bit address.
The computer had 27 instructions:
ADD
: The contents of memory location are added to Accumulator A. The contents of the memory location remain unchanged.
ADZ
(Add and Zero): The contents of memory are added to Accumulator A. The contents of memory are set to zero.
SUB
(Subtract): The contents of memory are subtracted from Accumulator A. The contents of memory remain unchanged.
SUZ
(Subtract and Zero): The contents of memory are subtracted from Accumulator A. The contents of memory are set to zero.
MPY
(Multiply): The contents of Accumulator A are multiplied by the contents of memory. The most significant part of the product is placed in the Accumulator A, the least significant part is placed in Register Q.
MPR
(Multiply and Round): Identical to MPY
instruction, the most significant part of the product in Accumulator A is rounded by adding one to the contents of Accumulator A if bit 1 of Q Register equals one.
MPZ
(Multiply and Zero): Identical to MPR
instruction, the contents of memory are set to zero.
DVP
(Divide): The contents of Accumulator A and Register Q that form a dividend are divided by the contents of memory. The quotient is placed in Accumulator A and rounded unless the rounding would cause overflow.
COM
(Complement Accumulator): The contents of Accumulator A are replaced with their two's complement. If the contents of the Accumulator A are positive, zero or minus one, the contents remain unchanged.
CLA
(Clear and Add): The Accumulator A is loaded from memory. The contents of memory remain unchanged.
CLZ
(Clear, Add and Zero): Similar to CLA
instruction; the contents of memory are set to zero.
LDQ
(Load Q Register): The Q Register is loaded with contents of memory. The contents of memory remain unchanged.
STO
(Store Accumulator): The contents of Accumulator A are stored in memory. The contents of Accumulator A remain unchanged.
STQ
(Store Q Register): The contents of Q Register are stored in memory. The contents of Q Register remain unchanged.
ALS N
(Arithmetic Left Shift): The contents of Accumulator A are shifted left N places.
LLS N
(Long Left Shift): The contents of Accumulator A and bits 1 - 17 of Q Register are shifted left as one register N places. The sign of Q Register is made to agree with sign of Accumulator A.
LRS N
(Long Right Shift): Similar to LLS
, but the contents are shifted right N places.
TRA
(Transfer): The next instruction is taken from memory.
TSQ
(Transfer and Set Q): The contents of the Q Register are replaced with an address field set to one greater than the location of the TSQ
instruction. Next instruction is taken from memory.
TMI
(Transfer on Minus Accumulator): The next instruction is taken from memory if the contents of the Accumulator A are negative. Otherwise the next instruction is taken in sequence.
TOV
(Transfer on Overflow): If the overflow indicator is set, the next instruction is taken from memory.
AXT N
(Address to Index): The Index Register is set to N.
TIX
(Test Index and Transfer): If the Index Register is positive, it is decremented by one and the next instruction is taken from memory.
DLY
(Delay): Execution stops until a timing signal is received. The next instruction is taken from memory.
INP
(Input): The contents of input register specified by address are placed in Accumulator A. The input register is either set to zero or remains unchanged (depending upon the selected register).
OUT
(Output): The contents of the Accumulator A are placed in output register specified by address.
First design ideas of the Abort Guidance System did not include the use of the computer but rather a sequencer without any navigation capability. This would be adequate to put the Lunar Module into lunar orbit where the crew would wait for rescue by the Apollo CSM. Later design included a digital computer to provide some autonomy. [2]
The AGS software was written in LEMAP assembly language that uses 27 instructions described above and a set of pseudo-operations used by the assembler.
The main computation cycle was 2 seconds long. This 2-second cycle was divided into 100 segments; each of these segments had a duration of 20 ms. These segments were used for computations that needed to be recalculated every 20 ms (like IMU signal processing, update of PGNCS downlink data, direction cosines update, etc.).
There was also a set of computations that had to be performed every 40 ms (engine commands, external signal sampling, attitude control, etc.).
Other computations were performed every 2 seconds and these equations were divided into smaller groups so they could be recalculated during the remaining (i.e. unused) time of 20 ms segments (e.g. radar data processing, calculation of orbital parameters, computation of rendezvous sequence, calibration of IMU sensors, etc.) [5]
The software for AGS was reviewed many times to find program errors and to reduce the size of the software. There are some known versions of the software that were used for uncrewed and crewed tests. [6]
The AGS User interface unit was named DEDA (Data Entry and Display Assembly). Its function was entry and readout of data from the AGS. Some of the system's functionality was built into DEDA unlike the DSKY used by AGC.
DEDA had the following elements:
There are few actual descriptions of the use of the AGS, as a landing abort was never needed during the Apollo missions. There were, however, four cases in which the AGS was used.
Its first use was for testing of the Lunar Module descent stage in Earth orbital flight during the Apollo 9 mission. [7] It was used again in the Apollo 10 mission, following separation of the Lunar Module descent stage prior to the APS burn. An incorrect switch setting [8] leaving AGS in Auto rather than Attitude Hold mode led to a prompt and pronounced deviation in attitude moments before staging. [9] The situation was quickly brought under control.
The next use of the AGS was during the lunar ascent phase of the Apollo 11 mission, when the LM crew performed a sequence of rendezvous maneuvers that resulted in gimbal lock; the AGS was subsequently used to acquire attitude control. [3]
The AGS played an important role in the safe return of Apollo 13 after an oxygen tank explosion left the Service Module crippled and forced the astronauts to use the Lunar Module as a "lifeboat." Supplies of electrical power and water on the LM were limited and the Primary Guidance and Navigation System used too much water for cooling. As a result, after a major LM descent engine burn two hours past its closest approach to the Moon to shorten the trip home, the AGS was used for most of the return, including two mid-course corrections. [10] pp. III-17,32,35,40
In a computer's central processing unit (CPU), the accumulator is a register in which intermediate arithmetic logic unit results are stored.
The Data General Nova is a series of 16-bit minicomputers released by the American company Data General. The Nova family was very popular in the 1970s and ultimately sold tens of thousands of units.
The Honeywell 6000 series computers were rebadged versions of General Electric's 600-series mainframes manufactured by Honeywell International, Inc. from 1970 to 1989. Honeywell acquired the line when it purchased GE's computer division in 1970 and continued to develop them under a variety of names for many years. In 1989, Honeywell sold its computer division to the French company Groupe Bull who continued to market compatible machines.
The LINC is a 12-bit, 2048-word transistorized computer. The LINC is considered by some to be the first minicomputer and a forerunner to the personal computer. Originally named the Linc, suggesting the project's origins at MIT's Lincoln Laboratory, it was renamed LINC after the project moved from the Lincoln Laboratory. The LINC was designed by Wesley A. Clark and Charles Molnar.
A one-instruction set computer (OISC), sometimes referred to as an ultimate reduced instruction set computer (URISC), is an abstract machine that uses only one instruction – obviating the need for a machine language opcode. With a judicious choice for the single instruction and given arbitrarily many resources, an OISC is capable of being a universal computer in the same manner as traditional computers that have multiple instructions. OISCs have been recommended as aids in teaching computer architecture and have been used as computational models in structural computing research. The first carbon nanotube computer is a 1-bit one-instruction set computer.
The Apollo Guidance Computer (AGC) was a digital computer produced for the Apollo program that was installed on board each Apollo command module (CM) and Apollo Lunar Module (LM). The AGC provided computation and electronic interfaces for guidance, navigation, and control of the spacecraft. The AGC was the first computer based on silicon integrated circuits. The computer's performance was comparable to the first generation of home computers from the late 1970s, such as the Apple II, TRS-80, and Commodore PET.
The IBM 709 is a computer system that was initially announced by IBM in January 1957 and first installed during August 1958. The 709 was an improved version of its predecessor, the IBM 704, and was the third of the IBM 700/7000 series of scientific computers. The improvements included overlapped input/output, indirect addressing, and three "convert" instructions which provided support for decimal arithmetic, leading zero suppression, and several other operations. The 709 had 32,768 words of 36-bit magnetic core memory and could execute 42,000 add or subtract instructions per second. It could multiply two 36-bit integers at a rate of 5000 per second.
An index register in a computer's CPU is a processor register used for pointing to operand addresses during the run of a program. It is useful for stepping through strings and arrays. It can also be used for holding loop iterations and counters. In some architectures it is used for read/writing blocks of memory. Depending on the architecture it may be a dedicated index register or a general-purpose register. Some instruction sets allow more than one index register to be used; in that case additional instruction fields may specify which index registers to use.
COMPASS, COMPrehensive ASSembler, is any of a family of macro assembly languages for Control Data Corporation's 3000 series, and for the 60-bit CDC 6000 series, 7600 and Cyber 70 and 170 series mainframe computers. While the architectures are very different, the macro and conditional assembly facilities are similar.
In computer science, random-access machine is a model of computation that describes an abstract machine in the general class of register machines. The RA-machine is very similar to the counter machine but with the added capability of 'indirect addressing' of its registers. The 'registers' are intuitively equivalent to main memory of a common computer, except for the additional ability of registers to store natural numbers of any size. Like the counter machine, the RA-machine contains the execution instructions in the finite-state portion of the machine.
Addressing modes are an aspect of the instruction set architecture in most central processing unit (CPU) designs. The various addressing modes that are defined in a given instruction set architecture define how the machine language instructions in that architecture identify the operand(s) of each instruction. An addressing mode specifies how to calculate the effective memory address of an operand by using information held in registers and/or constants contained within a machine instruction or elsewhere.
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. The Apollo command module (CM) and lunar module (LM), were each equipped with a version of PGNCS. PGNCS, and specifically its computer, were also the command center for all system inputs from the LM, including the alignment optical telescope, the radar system, the manual translation and rotation device inputs by the astronauts as well as other inputs from the LM systems.
The Western Design Center (WDC) 65C02 microprocessor is an enhanced CMOS version of the popular nMOS-based 8-bit MOS Technology 6502. It uses less power than the original 6502, fixes several problems, and adds new instructions. The power usage is on the order of 10 to 20 times less than the original 6502 running at the same speed; its reduced power consumption has made it useful in portable computer roles and industrial microcontroller systems. The 65C02 has also been used in some home computers, as well as in embedded applications, including medical-grade implanted devices.
NAR 2 is a theoretical model of a 32-bit word computer created by Faculty of Mathematics of University of Belgrade professor Nedeljko Parezanović as an enhancement to its predecessor, NAR 1. It was used for Assembly language and Computer architecture courses. The word "nar" means Pomegranate in Serbian. Many NAR 2 simulators have been created — for instance, one was named "Šljiva" as that fruit grows in Serbia, while "nar" does not.
The Launch Vehicle Digital Computer (LVDC) was a computer that provided the autopilot for the Saturn V rocket from launch, through Earth orbit insertion, and the trans-lunar injection burn that would send the Apollo spacecraft to the Moon. Designed and manufactured by IBM's Electronics Systems Center in Owego, New York, it was one of the major components of the Instrument Unit, fitted to the S-IVB stage of the Saturn V and Saturn IB rockets. The LVDC also supported pre- and post-launch checkout of the Saturn hardware. It was used in conjunction with the Launch Vehicle Data Adaptor (LVDA) which performed signal conditioning from the sensor inputs to the computer from the launch vehicle.
The 65xx family of microprocessors, consisting of the MOS Technology 6502 and its derivatives, the WDC 65C02, WDC 65C802 and WDC 65C816, and CSG 65CE02, all handle interrupts in a similar fashion. There are three hardware interrupt signals common to all 65xx processors and one software interrupt, the BRK instruction. The WDC 65C816 adds a fourth hardware interrupt—ABORT, useful for implementing virtual memory architectures—and the COP software interrupt instruction, intended for use in a system with a coprocessor of some type.
The Mitsubishi 740, also known as MELPS 740, is a series of 8-bit CMOS microcontrollers and microprocessors with an enhanced MOS Technology 6502 compatible core based on the expanded WDC 65C02. The ICs were manufactured by Mitsubishi Electric during the 1980s and 1990s.
The W65C816S is a 16-bit microprocessor (MPU) developed and sold by the Western Design Center (WDC). Introduced in 1983, the W65C816S is an enhanced version of the WDC 65C02 8-bit MPU, itself a CMOS enhancement of the venerable MOS Technology 6502 NMOS MPU. The 65C816 is the CPU for the Apple IIGS and, in modified form, the Super Nintendo Entertainment System.
The SDS 9 Series computers are a backward compatible line of transistorized computers produced by Scientific Data Systems in the 1960s and 1970s. This line includes the SDS 910, SDS 920, SDS 925, SDS 930, SDS 940, and the SDS 945. The SDS 9300 is an extension of the 9xx architecture. The 1965 SDS 92 is an incompatible 12-bit system built using monolithic integrated circuits.
The Raytheon 704 is a 16-bit minicomputer introduced by Raytheon in 1970. It was an updated and repackaged version of the Raytheon 703 with new input/output features. The basic machine contained 4 kwords (8 kB) of memory and a simple arithmetic logic unit (ALU) running at 1 MHz. It was normally operated with a Teletype Model 33 acting as a computer terminal. It sold for "less than $10,000".