# Apollo Guidance Computer

L'ordinador de guia Apollo (AGC) va ser un ordinador digital produït per al programa Apollo que s'instal·lava a bord de cada mòdul de comandament Apollo (CM) i mòdul lunar Apollo (LM). L'AGC va proporcionar interfícies de càlcul i electròniques per a la guia, la navegació i el control de la nau espacial. L'AGC va ser el primer ordinador basat en circuits integrats de silici. El rendiment de l'ordinador era comparable al de la primera generació d'ordinadors domèstics de finals de la dècada de 1970, com l'Apple II, TRS-80 i Commodore PET.
L'AGC té una longitud de paraula de 16 bits, amb 15 bits de dades i un bit de paritat. La major part del programari de l'AGC s'emmagatzema en una memòria especial de només lectura coneguda com a memòria de corda central, feta teixint cables a través i al voltant dels nuclis magnètics, tot i que hi ha disponible una petita quantitat de memòria bàsica de lectura/escriptura.
Els astronautes es van comunicar amb l'AGC mitjançant una pantalla numèrica i un teclat anomenats DSKY (per a "pantalla i teclat", pronunciat "DIS-kee"). L'AGC i la seva interfície d'usuari DSKY es van desenvolupar a principis dels anys 60 per al programa Apollo pel laboratori d'instrumentació del MIT i van volar per primera vegada el 1966.

## Funcionament

Els astronautes van fer volar manualment el Projecte Gemini amb controls, però els ordinadors van fer volar la major part del Projecte Apol·lo, excepte breument durant els aterratges lunars. Cada vol de la Lluna portava dos AGC, un al mòdul de comandament i el mòdul lunar Apol·lo, amb l'excepció de l'Apol·lo 7 que era una missió en òrbita terrestre i l'Apol·lo 8 que no necessitava un mòdul lunar per a la seva missió en òrbita lunar. L'AGC del mòdul de comandament era el centre del seu sistema de guia, navegació i control (GNC). L'AGC del mòdul lunar va executar el seu Apollo PGNCS (sistema principal de guia, navegació i control), amb les sigles pronunciades com a pings.
Cada missió lunar tenia dos ordinadors addicionals:
* El Launch Vehicle Digital Computer (LVDC) a l'anell d'instrumentació de reforç del Saturn V
* l'Abort Guidance System (AGS, pronunciat ags ) del mòdul lunar, que s'utilitzarà en cas de fallada del LM PGNCS. L'AGS es podria utilitzar per enlairar-se de la Lluna i per trobar-se amb el mòdul de comandament, però no per aterrar.

## Disseny

L'AGC va ser dissenyat al MIT Instrumentation Laboratory sota Charles Stark Draper, amb un disseny de maquinari dirigit per Eldon C. Hall. Els primers treballs arquitectònics provenen de JH Laning Jr., Albert Hopkins, Richard Battin, Ramon Alonso, i Hugh Blair-Smith. El maquinari de vol va ser fabricat per Raytheon, l'Herb Thaler del qual també formava part de l'equip d'arquitectura.
Segons Kurinec et al, els xips es van soldar a les taules en lloc de soldar-los com era d'esperar. Els dibuixos dels mòduls lògics d'ordinador Apollo Guidance especifiquen la soldadura per resistència.

### Maquinari lògic

Després de l'ús de xips de circuits integrats (IC) a la Plataforma de Monitorització Interplanetaria (IMP) el 1963, més tard es va adoptar la tecnologia IC per a l'AGC. L'ordinador de vol Apollo va ser el primer ordinador que va utilitzar xips IC de silici.
Mentre que la versió del Bloc I utilitzava 4.100 circuits integrats, cadascun amb una única porta NOR de tres entrades, la versió posterior del bloc II (utilitzada en els vols tripulats) utilitzava uns 2.800 circuits integrats, la majoria portes NOR de tres entrades i un nombre més petit d'expansors i sensors. amplificadors. $^{:27,266}$Els circuits integrats, de Fairchild Semiconductor, es van implementar mitjançant la lògica de resistència-transistor (RTL) en un paquet pla. Es van connectar mitjançant un embolcall de filferro i després el cablejat es va incrustar en plàstic epoxi fos. $^{:129}$
L'ús d'un sol tipus d'IC (el NOR3 dual) a tot l'AGC va evitar problemes que afectaven un altre disseny d'ordinadors IC primerenc, l'ordinador de guia Minuteman II, que utilitzava una barreja de lògica de díode-transistor i portes lògiques de díode. Les portes NOR són portes lògiques universals a partir de les quals es pot fer qualsevol altra porta, encara que a costa d'utilitzar més portes.

### Memòria

L'ordinador tenia 2.048 paraules de memòria de nucli magnètic esborrable i 36.864 paraules de memòria de corda de només lectura. $^{:27,90–93}$Tots dos tenien temps de cicle d'11,72 microsegons. $^{:27}$La longitud de la paraula de memòria era de 16 bits: 15 bits de dades i un bit de paritat imparell. El format de paraula de 16 bits intern de la CPU era de 14 bits de dades, un bit de desbordament i un bit de signe (representació del complement d'uns). $^{:35–37}$

### Interfície DSKY

La interfície d'usuari de l'AGC era el DSKY, que significava pantalla i teclat i normalment es pronunciava "DIS-kee". Té una sèrie de llums indicadores, pantalles numèriques i un teclat d'estil calculadora. Les ordres s'introduïen numèricament, com a nombres de dues xifres: verb i substantiu. Verb va descriure el tipus d'acció a realitzar i Noun va especificar quines dades estaven afectades per l'acció especificada per l'ordre Verb.
El mòdul de comandament té dos DSKY connectats al seu AGC: un situat al quadre d'instruments principal i un segon situat a la badia de l'equip inferior prop d'un sextant utilitzat per alinear la plataforma de guia inercial. El mòdul lunar tenia un únic DSKY per al seu AGC. Un indicador d'actitud del director de vol (FDAI), controlat per l'AGC, es trobava a sobre del DSKY a la consola del comandant i al LM.

### Temporització

La referència del temps AGC prové d'un rellotge de cristall de 2.048 MHz. El rellotge es va dividir per dos per produir un rellotge de quatre fase de 1.024 MHz que l'AGC utilitzava per realitzar operacions internes. El rellotge de 1.024 MHz també es va dividir per dos per produir un senyal 512 kHz anomenat freqüència mestra; aquest senyal es va utilitzar per sincronitzar sistemes externs de naus espacials Apollo.

### Memòria

La memòria AGC del Bloc I es va organitzar en bancs d'1 quiloparaules. El banc més baix (banc 0) era la memòria esborrable (RAM). Tots els bancs per sobre del banc 0 eren de memòria fixa (ROM). Cada instrucció AGC tenia un camp d'adreça de 12 bits. Els bits inferiors (1-10) s'adreçaven a la memòria dins de cada banc. Els bits 11 i 12 van seleccionar el banc: 00 va seleccionar el banc de memòria esborrable; 01 seleccionat el banc més baix (banc 1) de memòria fixa; 10 van seleccionar el següent (banc 2); i 11 van seleccionar el registre bancari que es podria utilitzar per seleccionar qualsevol banc per sobre de 2. Els bancs 1 i 2 es deien memòria fixa-fixa, perquè sempre estaven disponibles, independentment del contingut del registre bancari. Els bancs 3 i superiors es van anomenar commutables fixos perquè el banc seleccionat era determinat pel registre bancari.

### Programari

El programari AGC es va escriure en llenguatge assemblador AGC i es va emmagatzemar a la memòria de corda. La major part del programari estava en memòria de corda de només lectura i, per tant, no es podia canviar en funcionament, però algunes parts clau del programari s'emmagatzemaven a la memòria estàndard de nucli magnètic de lectura-escriptura i els astronautes podien sobreescriure-les mitjançant la interfície DSKY, com es va fer a l'Apollo 14.
Un sistema operatiu senzill en temps real dissenyat per J. Halcombe Laning que consisteix en el 'Executiu', una programació de treballs per lots que utilitza multitasques cooperatives, i un programador preventiu basat en interrupcions anomenat 'Llista d'espera'. ", que programava "tasques" impulsades per un temporitzador, controlava l'ordinador. Les tasques eren fils curts d'execució que podien reprogramar-se per tornar-los a executar a la llista d'espera, o podrien iniciar una operació més llarga iniciant un "treball" amb l'executiu. Els càlculs es van dur a terme mitjançant el sistema mètric, però les lectures de la pantalla eren en unitats de peus, peus per segon i milles nàutiques, unitats a les quals estaven acostumats els astronautes de l'Apol·lo.
L'AGC tenia un intèrpret de programari sofisticat, desenvolupat pel MIT Instrumentation Laboratory, que implementava una màquina virtual amb pseudoinstruccions més complexes i capaços que l'AGC natiu. Aquestes instruccions van simplificar els programes de navegació. El codi interpretat, que presentava una doble precisió trigonomètrica, escalar i aritmètica vectorial (16 i 24 bits), fins i tot una instrucció MXV (matriu × vector), es podia barrejar amb codi AGC natiu. Tot i que es va augmentar el temps d'execució de les pseudoinstruccions (a causa de la necessitat d'interpretar aquestes instruccions en temps d'execució), l'intèrpret va proporcionar moltes més instruccions de les que AGC suportava de manera nativa i els requisits de memòria eren molt més baixos que en el cas d'afegir aquestes instruccions al Llenguatge natiu AGC que requeriria memòria addicional integrada a l'ordinador (a la dècada de 1960 la memòria era molt cara). La pseudoinstrucció mitjana va requerir uns 24 ms per executar-se. L'assemblador, anomenat YUL per un primer prototip d'ordinador de Nadal, va fer complir les transicions adequades entre el codi natiu i interpretat.
Un conjunt de rutines d'interfície d'usuari basades en interrupcions anomenades "Pinball" proporcionava serveis de teclat i visualització per als treballs i tasques que s'executen a l'AGC. Es va proporcionar un conjunt de rutines accessibles per l'usuari per permetre als astronautes mostrar el contingut de diverses ubicacions de memòria en octal o decimal en grups d'1, 2 o 3 registres alhora. Es van proporcionar rutines de "supervisar" perquè l'operador pogués iniciar una tasca per tornar a mostrar periòdicament el contingut de determinades ubicacions de memòria. Es podrien iniciar treballs.
Els principis de disseny desenvolupats per a l'AGC pel MIT Instrumentation Laboratory, dirigit a finals de la dècada de 1960 per Charles Draper, es van convertir en fonamentals per a l'enginyeria de programari, especialment per al disseny de sistemes més fiables que es basaven en programari asíncron, programació de prioritats, proves i capacitat de decisió de bucle. Quan es van definir els requisits de disseny de l'AGC, no existien el programari i les tècniques de programació necessàries, per la qual cosa s'havien de dissenyar des de zero. Molts dels algorismes de trajectòria i guia utilitzats es van basar en treballs anteriors de Richard Battin. El primer vol del mòdul de comandament va ser controlat per un paquet de programari anomenat CORONA, el desenvolupament del qual va ser liderat per Alex Kosmala. El programari per a missions lunars consistia en COLOSSUS per al mòdul de comandament, el desenvolupament del qual va ser dirigit per Frederic Martin, i LUMINARY en el mòdul lunar dirigit per George Cherry. Els detalls d'aquests programes van ser implementats per un equip sota la direcció de Margaret Hamilton. Hamilton estava molt interessat en com interactuarien els astronautes amb el programari i va predir els tipus d'errors que podrien produir-se a causa d'un error humà. En total, el desenvolupament de programari del projecte va incloure 1.400 anys-persona d'esforç, amb una plantilla màxima de 350 persones. El 2016, Hamilton va rebre la Medalla Presidencial de la Llibertat pel seu paper en la creació del programari de vol.
El programari Apollo Guidance Computer va influir en el disseny de Skylab, transbordador espacial i els primers sistemes d'avions de caça fly-by-wire.
L'ordinador Apollo Guidance ha estat anomenat "El quart astronauta" pel seu paper d'ajuda als tres astronautes que hi van confiar: Neil Armstrong, Buzz Aldrin i Michael Collins.

## Referències

* ↑ Interbartolo, Michael. «Apollo Guidance, Navigation and Control Hardware Overview» (en anglès), 01-01-2009.
* ↑ «How did the Apollo flight computers get men to the moon and back ?» (en anglès), 11-03-2017.
* ↑ James E. Tomayko. «The Apollo guidance computer: Hardware» (en anglès). Computers in Spaceflight: The NASA Experience. NASA, 1988. Arxivat de l'original el December 29, 2023.
* ↑ Herb Thaler introduction, MIT, <http://authors.library.caltech.edu/5456/1/hrst.mit.edu/hrs/apollo/public/conference2/thaler-intro.htm>. Consulta: 30 agost 2009
* ↑ Kurinec, Santosh K. «Recreating History: Making the Chip that went on the Moon in 1969 on Apollo 11» (en anglès). Rochester Institute of Technology, 2021. [Consulta: 29 agost 2023].
* ↑ «LOGIC MODULE ASSEMBLY NO. A1-A16» (en anglès). MIT Instrumentation Lab, 11-07-1963.
* ↑ «Apollo Requirements for Process Control and Fabrication of Resistance-Welded Electronic Circuit Modules and Assemblies» (en anglès). Archive.org. NASA, 22-05-1963. [Consulta: 19 febrer 2024].
* ↑ Butrica, Andrew J. «Chapter 3: NASA's Role in the Manufacture of Integrated Circuits». A: Dick. Historical Studies in the Societal Impact of Spaceflight (en anglès). NASA, 2015, p. 149–250. ISBN 978-1-62683-027-1.
* ↑ «Apollo Guidance Computer and the First Silicon Chips» (en anglès). National Air and Space Museum. Smithsonian Institution, 14-10-2015. [Consulta: 1r setembre 2019].
* 1 2 Hall, Eldon C. MIT's Role in Project Apollo: Final report on contracts NAS 9-163 and NAS 94065 (en anglès). Cambridge, MA: MIT, 1972.
* 1 2 3 Hall, Eldon C. MIT's Role in Project Apollo: Final report on contracts NAS 9-163 and NAS 94065 (en anglès). Cambridge, MA: MIT, 1972.
* ↑ Weinstock, Maia. «Scene at MIT: Margaret Hamilton's Apollo code». MIT News, 17-08-2016. [Consulta: 17 agost 2016].
* ↑ Mindell, 2008, p. 154, 157.
* ↑ Hoag, David. «The History of Apollo On-board Guidance, Navigation, and Control» (en anglès). Charles Stark Draper Laboratory, 01-09-1976.
* 1 2 Mindell, 2008, p. 149.
* ↑ «The Moon landings» (en anglès). UK Metric Association, 18-10-2018.
* 1 2 Hoag, David. «The History of Apollo On-board Guidance, Navigation, and Control» (en anglès). Charles Stark Draper Laboratory, 01-09-1976.
* ↑ «Virtual AGC Luminary Page» (en anglès).
* ↑ «About Margaret Hamilton» (en anglès). NASA Office of Logic Design, 03-02-2010.
* ↑ A.J.S. Rayl. «NASA Engineers and Scientists-Transforming Dreams Into Reality» (en anglès). Arxivat de l'original el May 16, 2016.
* ↑ Fong, Kevin. «13 minutes to the moon: Episode 5 The fourth astronaut» (en anglès). bbc.co.uk. BBC World Service.