# Apollo Guidance Computer

Der Apollo Guidance Computer (AGC) war der bei den Apollo-Raumflügen eingesetzte Computer für die Navigation. Er wurde benutzt, um in Echtzeit Fluginformationen zu sammeln und zur Verfügung zu stellen sowie alle Navigationsfunktionen des Apollo-Raumfahrzeugs automatisch zu steuern. Er war damit das erste erkennbar moderne eingebettete System.
Er wurde ab 1961 für das Apollo-Programm unter der Leitung von Charles Stark Draper am MIT Instrumentation Laboratory entwickelt. Die bei den Flügen benutzte Hardware wurde vom US-amerikanischen Rüstungs- und Elektronikkonzern Raytheon hergestellt.

## Einsatz im Apollo-Programm

Bei jedem Mondflug – abgesehen von Apollo 8, die kein Lunar Module (LM) mitführte – wurden jeweils zwei AGC eingesetzt. Einer befand sich im Kommandomodul (CM) des Apollo-Raumfahrzeugs, zuständig für die Navigation bis zur Mondumlaufbahn und zurück, und ein weiterer in der Mondlandefähre, primär zuständig für die sichere Landung auf dem Mond und das Rendezvous mit dem Kommandomodul bei Rückkehr der Aufstiegsstufe. Beide Systeme waren baugleich, aber mit unterschiedlicher Software ausgestattet; die Navigationsdaten waren zwischen den Geräten kompatibel. Der AGC war Bestandteil des sogenannten Primary Guidance, Navigation and Control System (PGNCS, ausgesprochen: pings), dem unabhängigen inertialen Navigationssystem der Apollo-Raumfahrzeuge.
Darüber hinaus wurden bei den Mondmissionen zwei weitere Computer eingesetzt:
* Ein Launch Vehicle Digital Computer (LVDC) genannter Flugcomputer, der im Booster Instrumentation Ring der Saturn V untergebracht war. Hierbei handelte es sich um einen von der IBM Federal Systems Division gebauten seriellen Rechner.
* Ein kleiner von TRW gebauter Rechner im sogenannten Abort Guidance System (AGS) der Mondlandefähre. Dieses sollte im Falle eines Fehlers des PGNCS eingesetzt werden. Das AGS konnte zum Start der Landefähre vom Mond und zum Rendezvous mit dem Kommandomodul (CM) benutzt werden, aber nicht zum Landen auf dem Mond.

## Anwendung außerhalb des Apollo-Programms

Der AGC bildete 1972 die Basis für ein experimentelles Fly-by-wire-System, welches in einer Vought F-8 „Crusader“ installiert wurde, um die Machbarkeit und die Vorzüge eines rechnergestützten Fly-by-wire-Systems zu demonstrieren. Dabei wurde der AGC nur in der ersten Phase dieses Projekts eingesetzt und in einer zweiten Phase durch einen anderen Rechner ersetzt. Die hierauf folgende Forschung führte zum Fly-by-wire-System des Space Shuttle und indirekt zu den Fly-by-wire-Systemen moderner Luftfahrzeuge.

## Beschreibung
### Prozessor

Der Apollo-Flugcomputer war der erste, bei dem integrierte Schaltkreise (IC) eingesetzt wurden. Die bis 1966 benutzte Block-I-Version des AGC war aus 4100 ICs aufgebaut. Jedes dieser ICs beinhaltete ein einzelnes NOR-Gatter mit drei Eingängen. Bei der ab Apollo 7 eingesetzten Block-II-Version des AGC waren jeweils zwei NOR-Gatter mit drei Eingängen in einem IC mit Flat-Pack-Gehäuse untergebracht. Es wurden etwa 5600 Gatter verbaut. Die in RTL-Logik aufgebauten Gatter wurden von Fairchild Semiconductor hergestellt. Die Verdrahtung der ICs war mittels Wickelverbindung aufgebaut und in Epoxidharz eingegossen. Der Prozessor arbeitete intern mit 16-Bit-Datenworten (14 Bit Daten, 1 Überlaufbit und 1 Vorzeichenbit (Einerkomplement)). Bei der Verwendung als Programmbefehl waren 3 Bit für den Opcode und 12 Bit für die Adresse reserviert.
Weitere Besonderheiten:
* Der Prozessor arbeitete im Einerkomplement.
* Der Adressbereich des Prozessors hatte je nach Befehl nur eine Größe von 1 bzw. 4 Ki-Worten. Um den gesamten Speicher ansprechen zu können, wurde der Speicher in umschaltbaren Speicherbänken organisiert.
* Der Prozessor besaß insgesamt 6 Timer.

### Speicher

Der Schreib-Lese-Speicher (RAM) des AGC war als Ringkernspeicher und der Festwertspeicher (ROM) als Core Rope Memory aufgebaut. Der RAM-Bereich konnte von den Astronauten, falls erforderlich, manuell beschrieben werden.
Die Block-I-Version des AGC verfügte über ein RAM mit einer Kapazität von 1024 Datenworten à 16 bit und ein ROM mit einer Kapazität von 12288 Datenworten à 16 bit, die später auf 24576 Datenworte erweitert wurde. Die Block-II-Version des AGC verfügte über ein RAM mit einer Kapazität von 2048 Datenworten und ein ROM mit einer Kapazität von 32768 Datenworten à 16 bit.
Beide Speicher hatten eine Taktzeit von 11,72 μs. Die Datenworte hatten eine Länge von 16 Bit (15 Bit Daten und 1 Paritätsbit (ungerade Parität)).
In heutiger, damals allerdings noch nicht üblicher Terminologie verfügte der AGC so insgesamt über 68 KiB Speicher. 64 KiB wurden als ROM für die gespeicherte Software verwendet. Die restlichen 4 KiB dienten als RAM.

### Taktgeber

Als primärer Taktgeber wurde beim AGC ein Quarzoszillator mit einer Taktfrequenz von 2048 kHz benutzt. Dieses Taktsignal wurde durch 2 geteilt, um die internen Operationen des AGC mit einer Frequenz von 1024 kHz abzuarbeiten. Das 1024 kHz-Signal wurde ebenfalls durch 2 geteilt, um ein zweites Taktsignal mit einer Frequenz von 512 kHz zu erzeugen. Dieser MASTER FREQUENCY genannte Takt diente zur Synchronisation der externen Systeme des Apollo-Raumfahrzeugs.

### Software

Nachdem die Entwicklung von Software für den AGC ursprünglich im Plan und Budget des Apollo-Programms nicht vorgesehen war, arbeiteten schließlich über 300 Personen daran. Zu den bekannteren gehört heute die Teamleiterin des Flug- und Navigationsprogramms, Margaret Hamilton. Erstmals wurde der Begriff des Software-Engineering etabliert sowie zahlreiche grundlegende Paradigmen desselben. Insbesondere das Prioritätsscheduling erwies sich als entscheidend für den Erfolg der ersten Mondlandung von Apollo 11. Die Software des AGC war in Assembler geschrieben. Ein EXEX genanntes Echtzeitbetriebssystem konnte bis zu sieben Prozesse nach Priorität gewichtet in einem nichtpräemptiven Multitasking-Verfahren bearbeiten. Jeder Prozess musste dabei periodisch die Kontrolle an EXEX zurückgeben. Ein achter Prozess mit diagnostischen Aufgaben wurde mit niedrigster Priorität ständig ausgeführt. Darüber hinaus gab es eine unterbrechungsgesteuerte Komponente, die WAITLIST genannt wurde.

### Benutzerschnittstelle

Die Benutzerschnittstelle des AGC wurde DSKY (Display/Keyboard) genannt und bestand aus einer Reihe von Ziffernanzeigen und einer Tastatur, die an einen Taschenrechner erinnert. Befehle wurden numerisch als zweistellige Zahlen eingegeben. Für den eigentlichen Befehl gab es die Taste VERB (Verb), während der Parameter, falls erforderlich, mit der Taste NOUN (Substantiv) eingegeben wurde.
Das Kommandomodul verfügte über zwei DSKY, eins auf der Hauptinstrumententafel und eins im unteren Geräteraum in der Nähe des Sextanten zur Ausrichtung des inertialen Navigationssystems. Beide DSKY wurden durch denselben AGC betrieben. Die Mondlandefähre verfügte über nur ein DSKY für seinen AGC.

### Gewicht

Zusammen mit dem Interface wogen die AGCs in der Apollo-Kapsel und in der Landefähre je rund 32 kg.