El ordenador de guiado del Apolo ( AGC ) es un ordenador digital producido para el programa Apolo que se instaló a bordo de cada módulo de mando (CM) y módulo lunar (LM) del Apolo. El AGC proporcionaba computación e interfaces electrónicas para el guiado, la navegación y el control de la nave espacial. [ 3 ] El AGC fue el primer ordenador basado en circuitos integrados (CI) de silicio . [ 4 ] [ 5 ] El rendimiento del ordenador era comparable al de la primera generación de ordenadores domésticos de la década de 1970, como el Kenbak-1 , el Apple II , el TRS-80 y el Commodore PET . [ 6 ] Con un tamaño aproximado de 1 pie cúbico (28 litros) , el AGC albergaba 4100 paquetes de CI. [ 5 ]
El AGC tiene una longitud de palabra de 16 bits , con 15 bits de datos y un bit de paridad . La mayor parte del software del AGC se almacena en una memoria especial de solo lectura conocida como memoria de cuerda de núcleo , formada mediante el entrelazado de cables a través y alrededor de núcleos magnéticos , aunque hay disponible una pequeña cantidad de memoria de núcleo de lectura/escritura.
Los astronautas se comunicaban con el AGC mediante una pantalla numérica y un teclado llamado DSKY (por "display and keyboard", pronunciado / ˈ d ɪ s k i / DISS -kee ). El AGC y su interfaz de usuario DSKY fueron desarrollados a principios de la década de 1960 para el programa Apolo por el Laboratorio de Instrumentación del MIT y volaron por primera vez en 1966. [ 7 ] Los sistemas AGC a bordo eran secundarios, ya que la NASA realizaba la navegación principal con computadoras centrales en Houston. [ 8 ]
Operación


En el programa anterior , el Proyecto Gemini , los astronautas volaban manualmente con palancas de control . En el programa Apolo, sin embargo, el vuelo era controlado por computadora. Los astronautas volaron manualmente brevemente durante los alunizajes. [ 9 ]
Cada vuelo lunar llevaba dos AGC, uno en el módulo de mando y otro en el módulo lunar Apolo , con la excepción del Apolo 7 , que fue una misión en órbita terrestre, y el Apolo 8 , que no necesitó un módulo lunar para su misión en órbita lunar. El AGC del módulo de mando era el centro de su sistema de guiado, navegación y control (GNC). El AGC del módulo lunar gestionaba su sistema primario de guiado, navegación y control ( PGNCS) del Apolo , cuyo acrónimo se pronuncia como "pings" .
Cada misión lunar contaba con dos ordenadores adicionales:
- La computadora digital del vehículo de lanzamiento (LVDC) en la unidad de instrumentos del propulsor Saturno V
- El Sistema de Guía de Aborto (AGS, pronunciado / æɡz / AGZ ) del módulo lunar, que se utilizaría en caso de fallo del PGNCS del módulo lunar. El AGS podría utilizarse para despegar de la Luna y para acoplarse con el módulo de mando, pero no para aterrizar.
Diseño



El AGC fue diseñado en el Laboratorio de Instrumentación del MIT bajo la dirección de Charles Stark Draper , con el diseño de hardware liderado por Eldon C. Hall . [ 2 ] El trabajo arquitectónico inicial fue realizado por JH Laning Jr. , Albert Hopkins , Richard Battin , Ramon Alonso, [ 10 ] [ 11 ] y Hugh Blair-Smith. [ 12 ] El hardware de vuelo fue fabricado por Raytheon , cuyo Herb Thaler [ 13 ] también formó parte del equipo arquitectónico.
Según Kurinec et al., los chips se soldaron a las placas en lugar de soldarse con estaño, como cabría esperar. [ 14 ] Los dibujos del módulo lógico de la computadora de guía del Apolo especifican soldadura por resistencia. [ 15 ] [ 16 ]
Hardware lógico
Tras el uso de chips de circuitos integrados (CI) en la Plataforma de Monitoreo Interplanetario (IMP) en 1963, la tecnología de CI se adoptó posteriormente para el AGC. [ 17 ] La computadora de vuelo del Apolo fue una de las primeras computadoras en utilizar chips de CI de silicio . [ 4 ] [ 8 ]
Mientras que la versión Bloque I utilizaba 4100 circuitos integrados, cada uno con una única puerta NOR de tres entradas , la versión posterior Bloque II (utilizada en los vuelos tripulados) utilizaba unos 2800 circuitos integrados, principalmente puertas NOR duales de tres entradas y un menor número de expansores y amplificadores de detección. [ 18 ] : 27, 266 Los circuitos integrados, de Fairchild Semiconductor , se implementaron utilizando lógica de resistencia-transistor (RTL) en un encapsulado plano . Se soldaron a placas de circuito impreso, que se interconectaron mediante envoltura de cables , y el cableado se incrustó en plástico epoxi fundido . [ 18 ] : 129
El uso de un único tipo de circuito integrado (el NOR3 dual) en todo el AGC evitó los problemas que afectaron a otro diseño temprano de computadora con circuitos integrados, la computadora de guía Minuteman II , que utilizaba una combinación de lógica de diodo-transistor y compuertas lógicas de diodo . Las compuertas NOR son compuertas lógicas universales a partir de las cuales se puede construir cualquier otra compuerta, aunque a costa de utilizar más compuertas. [ 19 ]
Memoria
La computadora Block II tenía 2048 palabras de memoria de núcleo magnético borrable y 36 864 palabras de memoria de núcleo de cuerda de solo lectura . [ 18 ] : 27, 90–93 Ambas tenían tiempos de ciclo de 11,72 microsegundos. [ 18 ] : 27 La longitud de palabra de memoria era de 16 bits: 15 bits de datos y un bit de paridad impar . El formato de palabra de 16 bits interno de la CPU era de 14 bits de datos, un bit de desbordamiento y un bit de signo ( representación en complemento a uno ). [ 18 ] : 35–37
Interfaz DSKY


La interfaz de usuario del AGC era el DSKY , acrónimo de display and keyboard (pantalla y teclado) , que se pronunciaba normalmente / ˈdɪski / DISS -kee . Contaba con una serie de luces indicadoras, pantallas numéricas y un teclado tipo calculadora . Los comandos se introducían numéricamente, como números de dos dígitos: Verbo y Sustantivo . El Verbo describía el tipo de acción a realizar y el Sustantivo especificaba qué datos se verían afectados por la acción indicada por el comando Verbo.
Cada dígito se mostraba mediante una pantalla electroluminiscente de siete segmentos de alto voltaje de color verde (especificada como 530 nm [ 20 ] ) ; estas eran controladas por relés electromecánicos , lo que limitaba la frecuencia de actualización. También se podían mostrar tres números con signo de cinco dígitos en octal o decimal , que se usaban normalmente para mostrar vectores como la actitud de la nave espacial o un cambio de velocidad requerido ( delta-V ). Aunque los datos se almacenaban internamente en unidades métricas , se mostraban en unidades del sistema anglosajón . Esta interfaz tipo calculadora fue la primera de su tipo.
El módulo de mando cuenta con dos indicadores DSKY conectados a su AGC: uno ubicado en el panel de instrumentos principal y otro en el compartimento inferior de equipos, cerca de un sextante utilizado para alinear la plataforma de guiado inercial . El módulo lunar disponía de un único indicador DSKY para su AGC. Un indicador de actitud del director de vuelo (FDAI), controlado por el AGC, se encontraba encima del DSKY, tanto en la consola del comandante como en el módulo lunar.
Momento
La referencia de sincronización del AGC provenía de un reloj de cristal de 2,048 MHz . Este reloj se dividía por dos para generar un reloj de cuatro fases de 1,024 MHz , que el AGC utilizaba para realizar operaciones internas. El reloj de 1,024 MHz también se dividía por dos para generar una señal de 512 kHz, denominada frecuencia maestra ; esta señal se utilizaba para sincronizar los sistemas externos de la nave espacial Apolo.
La frecuencia maestra se dividió posteriormente mediante un escalador , primero por cinco utilizando un contador de anillo para producir una señal de 102,4 kHz. Esta se dividió luego por dos en 17 etapas sucesivas denominadas F1 (51,2 kHz) a F17 (0,78125 Hz). La etapa F10 (100 Hz) se realimentó al AGC para incrementar el reloj en tiempo real y otros contadores involuntarios mediante Pinc (que se describe más adelante). La etapa F17 se utilizó para activar intermitentemente el AGC cuando este operaba en modo de espera .
Registros centrales
El AGC tenía cuatro registros de 16 bits para uso computacional general, llamados registros centrales :
- A : El acumulador , para cálculos generales.
- Z : El contador de programa : la dirección de la siguiente instrucción que se ejecutará.
- P : El resto de la
DVinstrucción y la dirección de retorno después deTClas instrucciones. - L : El producto inferior después de
MPlas instrucciones
También existían cuatro ubicaciones en la memoria principal, en las direcciones 20 a 23, denominadas ubicaciones de edición, ya que lo que se almacenaba allí aparecía desplazado o rotado una posición de bit, excepto una que se desplazaba siete posiciones de bit a la derecha para extraer uno de los códigos operacionales interpretativos de siete bits que se empaquetaban de dos en dos por palabra. Esto era común a los AGC de Bloque I y Bloque II.
Otros registros



El AGC disponía de registros adicionales que se utilizaban internamente durante su funcionamiento:
- S : registro de dirección de memoria de 12 bits, la parte inferior de la dirección de memoria.
- Bank/Fbank : registro de banco ROM de 5 bits, para seleccionar el banco ROM de 1 kilopalabra al direccionar en el modo fijo conmutable.
- Ebank : registro de banco de RAM de 3 bits, para seleccionar el banco de RAM de 256 palabras al direccionar en el modo borrable-conmutable.
- Sbank (superbanco): extensión de 1 bit para Fbank, necesaria porque las últimas 4 kilopalabras de la ROM de 36 kilopalabras no eran accesibles usando solo Fbank.
- SQ : registro de secuencia de 4 bits; la instrucción actual
- G : Registro de búfer de memoria de 16 bits, para almacenar palabras de datos que se mueven hacia y desde la memoria.
- X : La entrada 'x' al sumador (el sumador se utilizaba para realizar todas las operaciones aritméticas en complemento a uno ) o el incremento del contador de programa ( registro Z ).
- Y : La otra entrada ('y') al sumador
- U : No es realmente un registro, sino la salida del sumador (la suma en complemento a uno del contenido de los registros X e Y ).
- B : Registro de búfer de propósito general, también utilizado para precargar la siguiente instrucción. Al comienzo de la siguiente instrucción, los bits superiores de B (que contienen el siguiente código de operación) se copiaron a SQ y los bits inferiores ( la dirección) se copiaron a S.
- C : No es un registro separado, sino el complemento a uno del registro B.
- ENTRADA : Cuatro registros de entrada de 16 bits
- SALIDA : Cinco registros de salida de 16 bits
Conjunto de instrucciones
El formato de instrucción usaba 3 bits para el código de operación y 12 bits para la dirección. El bloque I tenía 11 instrucciones: TC, CCS, INDEX, XCH, CS, TS, AD, y MASK(básicas), y SU, MP, y DV(extras). Las primeras ocho, llamadas instrucciones básicas , eran accedidas directamente por el código de operación de 3 bits. Las últimas tres se denominaban instrucciones de código extra porque eran accedidas realizando un tipo especial de TCinstrucción (llamada EXTEND) inmediatamente antes de la instrucción.
Las instrucciones AGC del Bloque I consistían en lo siguiente:
TC(control de transferencia)- Una instrucción de salto incondicional a la dirección especificada. La dirección de retorno se almacenaba automáticamente en el registro Q, por lo que la
TCinstrucción podía utilizarse para llamadas a subrutinas. CCS(contar, comparar y saltar)- Una instrucción de salto condicional compleja. El registro A se cargó con datos recuperados de la dirección especificada por la instrucción. (Debido a que el AGC utiliza la notación de complemento a uno , hay dos representaciones de cero. Cuando todos los bits están en cero, esto se llama cero positivo . Si todos los bits están en uno, esto se llama cero negativo ). Luego se calculó el valor absoluto disminuido (DABS) de los datos y se almacenó en el registro A. Si el número era mayor que cero, el DABS decrementa el valor en 1; si el número era negativo, se complementa antes de que se aplique el decremento; este es el valor absoluto. Disminuido significa "decrementado pero no por debajo de cero". Por lo tanto, cuando el AGC realiza la función DABS, los números positivos se dirigirán hacia cero positivo, al igual que los números negativos, pero primero revelando su negatividad a través del salto de cuatro vías que se muestra a continuación. El paso final en
CCSes un salto de cuatro vías, dependiendo de los datos en el registro A antes del DABS. Si el registro A era mayor que 0,CCSsalta a la primera instrucción inmediatamente después deCCS. Si el registro A contenía más cero,CCSsalta a la segunda instrucción después deCCS. Menor que cero provoca un salto a la tercera instrucción después deCCS, y menos cero salta a la cuarta instrucción después deCCS. El propósito principal del contador era permitir que un bucle ordinario, controlado por un contador positivo, terminara en unCCSy unTCal principio del bucle, equivalente al de un IBM 360 .BCTLa función de valor absoluto se consideró lo suficientemente importante como para estar integrada en esta instrucción; cuando se usaba solo para este propósito, la secuencia después deCCSeraTC*+2,TC*+2,ADUNO. Un efecto secundario curioso fue la creación y el uso deCCShuecos cuando se sabía que el valor que se estaba probando nunca era positivo, lo que ocurría con más frecuencia de lo que uno podría suponer. Eso dejaba dos palabras completas sin ocupar, y un comité especial era responsable de asignar constantes de datos a estos huecos. INDEX- Agrega los datos recuperados en la dirección especificada por la instrucción a la siguiente instrucción.
INDEXSe puede usar para sumar o restar un valor de índice a la dirección base especificada por el operando de la instrucción que sigueINDEX. Este método se usa para implementar arreglos y búsquedas en tablas; dado que la suma se realizaba en ambas palabras completas, también se usaba para modificar el código de operación en una instrucción posterior (código adicional) y, en raras ocasiones, ambas funciones a la vez. RESUME- Un caso especial de
INDEX(INDEX25). Esta es la instrucción que se utiliza para regresar de las interrupciones. Hace que la ejecución se reanude en la ubicación interrumpida. XCH(intercambio)- Intercambia el contenido de la memoria con el contenido del registro A. Si la dirección de memoria especificada está en memoria fija (de solo lectura), el contenido de la memoria no se ve afectado y esta instrucción simplemente carga el registro A. Si está en memoria borrable, la "corrección" de desbordamiento se logra almacenando el bit más a la izquierda de los 16 bits en A como bit de signo en la memoria, pero no hay un comportamiento excepcional como el de
TS. CS(borrar y restar)- Carga el registro A con el complemento a uno de los datos a los que hace referencia la dirección de memoria especificada.
TS(traslado al almacén)- Almacena el registro A en la dirección de memoria especificada.
TSTambién detecta y corrige los desbordamientos de tal manera que propaga un acarreo para la suma/resta de precisión múltiple. Si el resultado no tiene desbordamiento (los 2 bits más a la izquierda de A son iguales), no sucede nada especial; si hay desbordamiento (esos 2 bits difieren), el más a la izquierda va a la memoria como bit de signo, el registro A se cambia a +1 o −1 según corresponda, y el control salta a la segunda instrucción que sigue a laTS. Siempre que el desbordamiento sea un evento posible pero anormal,TSfue seguido por unaTCa la lógica sin desbordamiento; cuando es una posibilidad normal (como en la suma/resta de precisión múltiple), elTSes seguido porCAFCERO (CAF=XCHa memoria fija) para completar la formación del acarreo (+1, 0 o −1) en la siguiente palabra de mayor precisión. Los ángulos se mantuvieron en precisión simple, las distancias y velocidades en precisión doble, y el tiempo transcurrido en precisión triple. AD(agregar)- Suma el contenido de la memoria al registro A y almacena el resultado en A. Los dos bits más a la izquierda de A pueden ser diferentes (estado de desbordamiento) antes y/o después de la operación
AD. El hecho de que el desbordamiento sea un estado y no un evento permite desbordamientos limitados al sumar más de dos números, siempre que ninguno de los totales intermedios supere el doble de la capacidad de una palabra. MASK- Realiza una operación AND bit a bit (booleana) de la memoria con el registro A y almacena el resultado en el registro A.
MP(multiplicar)- Multiplica el contenido del registro A por los datos en la dirección de memoria referenciada y almacena el producto de orden superior en el registro A y el producto de orden inferior en el registro LP. Las partes del producto coinciden en signo.
DV(dividir)- Divide el contenido del registro A entre los datos de la dirección de memoria referenciada. Almacena el cociente en el registro A y el valor absoluto del resto en el registro Q. A diferencia de las máquinas modernas, los números de punto fijo se trataban como fracciones (punto decimal virtual justo a la derecha del bit de signo), por lo que se podía generar basura si el divisor no era mayor que el dividendo; no había protección contra esa situación. En el AGC del Bloque II, un dividendo de doble precisión comenzaba en A y L (el LP del Bloque II), y el resto con el signo correcto se entregaba en L. Esto simplificó considerablemente la subrutina para la división de doble precisión.
SU(sustraer)- Resta (en complemento a uno) los datos de la dirección de memoria referenciada del contenido del registro A y almacena el resultado en A.
Las instrucciones se implementaron en grupos de 12 pasos, llamados pulsos de temporización . Los pulsos de temporización se denominaron TP1 a TP12. Cada conjunto de 12 pulsos de temporización se denominó subsecuencia de instrucción . Las instrucciones simples, como TC, se ejecutaban en una sola subsecuencia de 12 pulsos. Las instrucciones más complejas requerían varias subsecuencias. La instrucción de multiplicación ( MP) utilizaba 8 subsecuencias: una inicial llamada MP0, seguida de una MP1subsecuencia que se repetía 6 veces, y luego terminaba con una MP3subsecuencia. Esto se redujo a 3 subsecuencias en el Bloque II.
Cada pulso de temporización en una subsecuencia podía activar hasta 5 pulsos de control . Los pulsos de control eran las señales que realizaban el trabajo real de la instrucción, como leer el contenido de un registro en el bus o escribir datos del bus en un registro.
Memoria

La memoria AGC del Bloque I estaba organizada en bancos de 1 kilopalabra. El banco más bajo (banco 0) era memoria borrable (RAM). Todos los bancos superiores al banco 0 eran memoria fija (ROM). Cada instrucción AGC tenía un campo de dirección de 12 bits. Los bits inferiores (1-10) direccionaban la memoria dentro de cada banco. Los bits 11 y 12 seleccionaban el banco: 00 seleccionaba el banco de memoria borrable; 01 seleccionaba el banco más bajo (banco 1) de memoria fija; 10 seleccionaba el siguiente (banco 2); y 11 seleccionaba el registro de banco que podía usarse para seleccionar cualquier banco superior al 2. Los bancos 1 y 2 se denominaban memoria fija-fija , porque siempre estaban disponibles, independientemente del contenido del registro de banco. Los bancos 3 y superiores se denominaban fijo-conmutable porque el banco seleccionado estaba determinado por el registro de banco.
El AGC del Bloque I inicialmente tenía 12 kilopalabras de memoria fija, pero posteriormente se aumentó a 24 kilopalabras. El Bloque II tenía 36 kilopalabras de memoria fija y 2 kilopalabras de memoria borrable.
El AGC transfería datos desde y hacia la memoria a través del registro G en un proceso denominado ciclo de memoria . El ciclo de memoria duraba 12 pulsos de temporización (11,72 μs). El ciclo comenzaba con el pulso de temporización 1 (TP1), cuando el AGC cargaba la dirección de memoria que se iba a recuperar en el registro S. El hardware de memoria recuperaba la palabra de datos de la memoria en la dirección especificada por el registro S. Las palabras de la memoria borrable se depositaban en el registro G con el pulso de temporización 6 (TP6); las palabras de la memoria fija estaban disponibles con el pulso de temporización 7. La palabra de memoria recuperada estaba entonces disponible en el registro G para el acceso del AGC durante los pulsos de temporización 7 a 10. Después del pulso de temporización 10, los datos del registro G se escribían de nuevo en la memoria.
El ciclo de memoria del AGC se producía de forma continua durante su funcionamiento. Las instrucciones que necesitaban datos de memoria debían acceder a ellos durante los pulsos de temporización 7 a 10. Si el AGC modificaba la palabra de memoria en el registro G, la palabra modificada se volvía a escribir en la memoria después del pulso de temporización 10. De esta forma, las palabras de datos circulaban continuamente entre la memoria y el registro G, y viceversa.
Los 15 bits inferiores de cada palabra de memoria contenían instrucciones o datos del control automático de ganancia (AGC), y cada palabra estaba protegida por un decimosexto bit de paridad impar. Este bit se establecía en 1 o 0 mediante un circuito generador de paridad, de modo que el recuento de unos en cada palabra de memoria siempre producía un número impar. Un circuito de verificación de paridad comprobaba el bit de paridad durante cada ciclo de memoria; si el bit no coincidía con el valor esperado, se asumía que la palabra de memoria estaba corrupta y se encendía una luz de alarma en el panel de control .
Interrupciones y contadores involuntarios
El AGC tenía interrupciones vectorizadas , incluidas las siguientes:
- Dsrupt se activaba a intervalos regulares para actualizar la pantalla del usuario (DSKY).
- La interrupción se generó debido a diversas fallas de hardware o alarmas.
- Keyrupt1 y Keyrupt2 señalaban, respectivamente, la pulsación de una tecla del teclado principal o del teclado de navegación del usuario.
- T3Rupt se generaba a intervalos regulares mediante un temporizador de hardware para actualizar el reloj en tiempo real del AGC .
- Se generaba una interrupción cada vez que se cargaba una palabra de 16 bits de datos de enlace ascendente en el AGC.
El AGC respondía a cada interrupción suspendiendo temporalmente el programa actual, ejecutando una breve rutina de servicio de interrupción y, a continuación, reanudando el programa interrumpido.
El AGC también contaba con 20 contadores involuntarios . Estos eran ubicaciones de memoria que funcionaban como contadores ascendentes/descendentes o registros de desplazamiento. Los contadores se incrementaban, decrementaban o desplazaban en respuesta a las entradas internas. El incremento ( Pinc ), el decremento ( Minc ) o el desplazamiento ( Shinc ) se gestionaban mediante una subsecuencia de microinstrucciones insertada entre dos instrucciones regulares cualesquiera.
Las interrupciones podían activarse cuando los contadores se desbordaban. Las interrupciones T3rupt y Dsrupt se producían cuando sus contadores, controlados por un reloj de hardware de 100 Hz, se desbordaban tras ejecutar varias subsecuencias Pinc. La interrupción Uprupt se activaba después de que su contador, al ejecutar la subsecuencia Shinc, hubiera transferido 16 bits de datos de enlace ascendente al AGC.
Modo de espera
El AGC disponía de un modo de ahorro de energía controlado por un interruptor de modo de espera . Este modo desactivaba la alimentación del AGC, excepto la del reloj de 2,048 MHz y el escalador. La señal F17 del escalador activaba y reactivaba el AGC a intervalos de 1,28 segundos. En este modo, el AGC realizaba sus funciones esenciales, comprobaba el interruptor de modo de espera y, si seguía activado, desactivaba la alimentación y volvía al modo de reposo hasta la siguiente señal F17.
En el modo de espera, el AGC permanecía inactivo la mayor parte del tiempo; por lo tanto, no estaba activo para ejecutar la instrucción Pinc necesaria para actualizar su reloj en tiempo real a intervalos de 10 ms. Para compensar, una de las funciones que realizaba el AGC cada vez que se despertaba del modo de espera era actualizar el reloj en tiempo real en 1,28 segundos.
El modo de espera se diseñó para reducir el consumo de energía entre 5 y 10 W (desde 70 W) durante la fase intermedia del vuelo, cuando no se necesitaba el control automático de ganancia (AGC). Sin embargo, en la práctica, el AGC permanecía activado durante todas las fases de la misión y esta función nunca se utilizó.
buses de datos
El AGC disponía de un bus de lectura de 16 bits y un bus de escritura de 16 bits. Los datos de los registros centrales (A, Q, Z o LP) u otros registros internos podían enviarse al bus de lectura mediante una señal de control. El bus de lectura se conectaba al bus de escritura a través de un búfer no inversor, de modo que cualquier dato que apareciera en el bus de lectura también aparecía en el bus de escritura. Otras señales de control permitían copiar los datos del bus de escritura de vuelta a los registros.
La transferencia de datos funcionaba así: para mover la dirección de la siguiente instrucción del registro B al registro S, se emitía una señal de control RB (lectura B); esto provocaba que la dirección se moviera del registro B al bus de lectura y, posteriormente, al bus de escritura. Una señal de control WS (escritura S) movía la dirección del bus de escritura al registro S.
Se podían leer varios registros simultáneamente en el bus de lectura. Cuando esto ocurría, los datos de cada registro se combinaban mediante una operación OR inclusiva en el bus. Esta función OR inclusiva se utilizaba para implementar la instrucción Mask, que era una operación AND lógica . Dado que el AGC no tenía la capacidad nativa de realizar una operación AND lógica , pero sí podía realizar una operación OR lógica a través del bus y complementar (invertir) los datos a través del registro C, se utilizó el teorema de De Morgan para implementar el equivalente a una operación AND lógica . Esto se lograba invirtiendo ambos operandos, realizando una operación OR lógica a través del bus y, posteriormente, invirtiendo el resultado.
Software



El software AGC fue escrito en lenguaje ensamblador AGC y almacenado en memoria de cuerda . La mayor parte del software estaba en memoria de cuerda de solo lectura y, por lo tanto, no podía modificarse durante el funcionamiento, [ 22 ] pero algunas partes clave del software estaban almacenadas en memoria de núcleo magnético estándar de lectura y escritura y podían ser sobrescritas por los astronautas mediante la interfaz DSKY, como se hizo en el Apolo 14 .
Un sistema operativo simple en tiempo real diseñado por J. Halcombe Laning [ 23 ] que constaba del 'Exec', un planificador de trabajos por lotes que utilizaba multitarea cooperativa , [ 24 ] y un planificador preventivo controlado por interrupciones llamado 'Waitlist' que programaba 'tareas' controladas por temporizadores, controlaba la computadora. Las tareas eran hilos cortos de ejecución que podían reprogramarse para volver a ejecutarse en la Waitlist, o podían iniciar una operación más larga comenzando un 'trabajo' con el Exec. Los cálculos se realizaban utilizando el sistema métrico , pero las lecturas de la pantalla estaban en unidades de pies, pies por segundo y millas náuticas, unidades a las que los astronautas del Apolo estaban acostumbrados. [ 25 ] El diseño de Laning salvó la misión de aterrizaje del Apolo 11 cuando el programa de interfaz del radar de encuentro comenzó a utilizar más conjuntos de núcleos de registro y áreas de "Acumulador Vectorial" de las que estaban físicamente disponibles en la memoria, causando los infames errores 1201 y 1202. De no haber sido por el diseño de Laning, el aterrizaje se habría abortado por falta de una computadora de guía estable. [ 26 ]
El AGC contaba con un sofisticado intérprete de software, desarrollado por el Laboratorio de Instrumentación del MIT , que implementaba una máquina virtual con pseudo-instrucciones más complejas y potentes que las del AGC nativo. Estas instrucciones simplificaban los programas de navegación. El código interpretado, que incluía aritmética trigonométrica , escalar y vectorial de doble precisión (16 y 24 bits), e incluso una MXVinstrucción (matriz × vector), podía combinarse con el código nativo del AGC. Si bien el tiempo de ejecución de las pseudo-instrucciones aumentaba (debido a la necesidad de interpretarlas en tiempo de ejecución), el intérprete proporcionaba muchas más instrucciones que las que admitía el AGC de forma nativa, y los requisitos de memoria eran mucho menores que si se añadieran estas instrucciones al lenguaje nativo del AGC, lo que habría requerido memoria adicional integrada en el ordenador (en la década de 1960 la memoria era muy cara). La pseudo-instrucción promedio requería unos 24 ms para ejecutarse. El ensamblador, denominado YUL por un prototipo temprano de Christmas Computer , [ 27 ] garantizaba transiciones adecuadas entre el código nativo y el interpretado.
Un conjunto de rutinas de interfaz de usuario controladas por interrupciones, denominadas «Pinball», proporcionaban servicios de teclado y visualización para los trabajos y tareas que se ejecutaban en el AGC. Se disponía de un conjunto de rutinas accesibles para el usuario que permitían a los astronautas visualizar el contenido de diversas ubicaciones de memoria en formato octal o decimal, en grupos de 1, 2 o 3 registros a la vez. Se proporcionaban rutinas de «monitorización» para que el operador pudiera iniciar una tarea que permitiera volver a mostrar periódicamente el contenido de ciertas ubicaciones de memoria. Se podían iniciar trabajos.
Los principios de diseño desarrollados para el AGC por el Laboratorio de Instrumentación del MIT , dirigido a finales de la década de 1960 por Charles Draper , se convirtieron en fundamentales para la ingeniería de software , particularmente para el diseño de sistemas más confiables que dependían de software asíncrono , programación de prioridades , pruebas y capacidad de decisión con intervención humana . [ 28 ] Cuando se definieron los requisitos de diseño para el AGC, el software y las técnicas de programación necesarias no existían, por lo que tuvieron que diseñarse desde cero. Muchos de los algoritmos de trayectoria y guía utilizados se basaron en trabajos anteriores de Richard Battin . [ 23 ] El primer vuelo del módulo de mando fue controlado por un paquete de software llamado CORONA, cuyo desarrollo fue liderado por Alex Kosmala. El software para las misiones lunares consistió en COLOSSUS para el módulo de mando, cuyo desarrollo fue liderado por Frederic Martin, y LUMINARY [ 29 ] en el módulo lunar, liderado por George Cherry. Los detalles de estos programas fueron implementados por un equipo bajo la dirección de Margaret Hamilton . [ 30 ] Hamilton estaba muy interesada en cómo los astronautas interactuarían con el software y predijo los tipos de errores que podrían ocurrir debido a errores humanos. [ 24 ] [ 30 ] En total, el desarrollo del software en el proyecto comprendió 1400 años-persona de esfuerzo, con una fuerza laboral máxima de 350 personas. [ 23 ] En 2016, Hamilton recibió la Medalla Presidencial de la Libertad por su papel en la creación del software de vuelo.
El software Apollo Guidance Computer influyó en el diseño del Skylab , el transbordador espacial y los primeros sistemas de aviones de combate fly-by-wire. [ 31 ] [ 32 ]
La computadora de guía del Apolo ha sido llamada "El cuarto astronauta" por su papel en ayudar a los tres astronautas que dependieron de ella: Neil Armstrong , Buzz Aldrin y Michael Collins . [ 33 ]
Bloque II
En 1966 se diseñó una versión Block II del AGC. Conservaba la arquitectura básica del Block I, pero aumentaba la memoria borrable de 1 a 2 kilopalabras. La memoria fija se amplió de 24 a 36 kilopalabras. Las instrucciones se ampliaron de 11 a 34 y se implementaron canales de E/S para reemplazar los registros de E/S del Block I. La versión Block II es la que viajó a la Luna. El Block I se utilizó durante los vuelos no tripulados del Apolo 4 y 6 , y estaba a bordo del desafortunado Apolo 1 .
La decisión de ampliar la memoria y el conjunto de instrucciones para el Bloque II, pero de conservar el restrictivo código de operación de tres bits y la dirección de 12 bits del Bloque I, tuvo interesantes consecuencias de diseño. Se emplearon varios trucos para incluir instrucciones adicionales, como direcciones de memoria especiales que, al ser referenciadas, implementaban una función determinada. Por ejemplo, una instrucción INDEXa la dirección 25 activaba la RESUMEinstrucción para regresar de una interrupción. Del mismo modo, la instrucción INDEX17 ejecutaba una INHINTinstrucción (inhibir interrupciones), mientras que INDEXla 16 las volvía a habilitar ( RELINT). Otras instrucciones se implementaban precediéndolas con una versión especial TCllamada EXTEND. Los espacios de direcciones se extendieron empleando los registros Bank (fijo) y Ebank (borrable), de modo que la única memoria de cualquiera de los dos tipos que podía direccionarse en un momento dado era el banco actual, más la pequeña cantidad de memoria fija-fija y la memoria borrable. Además, el registro de banco podía direccionar un máximo de 32 kilopalabras, por lo que se requería un registro Sbank (superbanco) para acceder a las últimas 4 kilopalabras. Todas las llamadas a subrutinas entre bancos debían iniciarse desde memoria fija-fija a través de funciones especiales para restaurar el banco original durante el retorno: esencialmente un sistema de punteros lejanos .
El AGC del Bloque II también tiene la EDRUPTinstrucción (el nombre es una contracción de Ed's Interrupt , en honor a Ed Smally , el programador que la solicitó). Esta instrucción no genera una interrupción, sino que realiza dos acciones comunes al procesamiento de interrupciones. La primera acción inhibe las interrupciones posteriores (y requiere una RESUMEinstrucción para habilitarlas de nuevo). En la segunda acción, el ZRUPTregistro se carga con el valor actual del contador de programa (Z). Solo se usó una vez en el software Apollo, para configurar la secuencia de terminación del ciclo DAP en el piloto automático digital del módulo lunar . [ 34 ] Se cree que es responsable de los problemas al emular el software Luminary del AGC del LEM .
Alarmas de programa 1201 y 1202

El PGNCS generó advertencias imprevistas durante el descenso lunar del Apolo 11 , con el AGC mostrando una alarma 1202 ("Desbordamiento ejecutivo: NO HAY CONJUNTOS DE NÚCLEO"), [ 35 ] y luego una alarma 1201 ("Desbordamiento ejecutivo: NO HAY ÁREAS DE VAC"). [ 36 ] La respuesta del AGC a cualquiera de las alarmas fue un reinicio suave. La causa fue un flujo rápido y constante de robos de ciclo espurios del radar de encuentro (que rastreaba el módulo de comando en órbita), intencionalmente dejado en espera durante el descenso en caso de que fuera necesario para un aborto. [ 37 ] [ 38 ]
Durante esta parte de la aproximación, el procesador normalmente estaría casi al 85% de su capacidad. Los 6400 robos de ciclo adicionales por segundo añadieron el equivalente a un 13% de carga, dejando el tiempo justo para que todas las tareas programadas se ejecutaran hasta su finalización. Cinco minutos después de iniciado el descenso, Buzz Aldrin dio al ordenador el comando 1668 , que le indicaba que calculara y mostrara periódicamente DELTAH (la diferencia entre la altitud detectada por el radar y la altitud calculada). [ nb 1 ] El 1668 añadió otro 10% a la carga de trabajo del procesador, provocando un desbordamiento de la ejecución y una alarma 1202. Tras recibir la autorización de Houston, Aldrin volvió a introducir el 1668 y se produjo otra alarma 1202. Al informar de la segunda alarma, Aldrin añadió el comentario: «Parece que se activa cuando tenemos un 1668 activo». El software AGC había sido diseñado con programación por prioridades y se recuperaba automáticamente, eliminando las tareas de menor prioridad, incluida la tarea de visualización 1668 , para completar sus tareas críticas de guiado y control. El controlador de guiado Steve Bales y su equipo de apoyo, que incluía a Jack Garman, emitieron varias llamadas de "GO" y el aterrizaje fue exitoso. [ 39 ]
El problema no fue un error de programación en el AGC, ni un error del piloto, ni una falla de hardware. Fue causado por un documento de control de interfaz (ICD) defectuoso entre el PGNCS y el ATCA (Conjunto de Control de Actitud y Traslación), que no especificó la sincronización de fase entre dos señales de 800 Hz , un problema ya conocido y documentado durante las pruebas en el sitio de lanzamiento del LM-3 en el Apolo 9. [ 40 ] Sin embargo, debido a que el problema solo había ocurrido una vez durante las pruebas, concluyeron que era más seguro volar con el hardware existente que ya habían probado, que volar con un sistema de radar más nuevo pero en gran parte sin probar . En el hardware real, la posición del radar de encuentro estaba codificada con sincros excitados por una fuente de CA de 800 Hz diferente a la que usaba la computadora como referencia de tiempo. Las dos fuentes de 800 Hz estaban bloqueadas en frecuencia pero no en fase, y el desfase de fase aleatorio hacía que pareciera que la antena estaba "oscilando" rápidamente en su posición, aunque estaba completamente estacionaria. Estos movimientos fantasma generaron la rápida serie de robos de ciclo y, por lo tanto, el 1202. [ 40 ]
El software y el diseño informático de J. Halcombe Laning salvaron la misión de alunizaje del Apolo 11. De no haber sido por el diseño de Laning, el alunizaje se habría abortado por falta de un ordenador de guiado estable. [ 40 ] [ 41 ]
Aplicaciones fuera de Apollo

El AGC constituyó la base de un sistema experimental de control de vuelo por cable (FBW) instalado en un F-8 Crusader para demostrar la viabilidad del FBW controlado por computadora. El AGC utilizado en la primera fase del programa fue reemplazado por otra máquina en la segunda fase, y la investigación realizada en el marco del programa condujo al desarrollo de sistemas de control de vuelo por cable para el transbordador espacial . El AGC también propició, aunque indirectamente, el desarrollo de sistemas de control de vuelo por cable para la generación de cazas que se estaban desarrollando en ese momento. [ 42 ]
Lanzamiento del código fuente
En 2003, Ron Burkey inició el Proyecto Virtual AGC, con el objetivo de recuperar el código fuente de la computadora de guía del Apolo (AGC) y construir un emulador funcional. [ 43 ] [ 44 ] Como parte de este proyecto, el código original, transcrito y digitalizado a partir de copias impresas de la década de 1960, [ 45 ] se puso a disposición a través del Proyecto Virtual AGC y el Museo del MIT . [ 46 ] Este esfuerzo volvió a cobrar relevancia a mediados de 2016 cuando el ex becario de la NASA, Chris Garry, subió el código a GitHub, generando una importante atención mediática. [ 47 ] [ 48 ] [ 49 ]
Véase también
- Apollo PGNCS : el sistema primario de guía y navegación del Apolo.
- Computadoras AP-101 (derivadas de IBM S/360) utilizadas en el transbordador espacial.
- Ordenador de guía Géminis
- Historia del hardware informático
Notas
- ↑ Más concretamente, el verbo 16 indica al AGC que imprima el sustantivo (en este caso, 68, DELTAH) aproximadamente dos veces por segundo. Si Aldrin hubiera sabido esto, un simple 0668 (calcular y mostrar DELTAH, una sola vez) solo habría añadido aproximadamente un 5 % de carga al sistema, y solo lo habría hecho una vez, al pulsar la tecla ENTER.
Referencias
- ↑ Manual del programador, Bloque 2, Lenguaje ensamblador AGC , consultado el 27 de agosto de 2018.
- 1 2 Hall, Eldon C. (1996), Viaje a la Luna: La historia del ordenador de guiado del Apolo , Reston, Virginia, EE. UU.: AIAA , pág. 196, ISBN 1-56347-185-X
- ↑ Interbartolo, Michael (enero de 2009). "Descripción general del hardware de guía, navegación y control del Apolo" (PDF) .
- 1 2 "1962: Los sistemas aeroespaciales son las primeras aplicaciones de los circuitos integrados en las computadoras" . Museo de Historia de la Computación . 2025. Recuperado el 13 de marzo de 2025 .
- 1 2 tluong (17 de julio de 2019). "Los chips de silicio llevan al hombre a la Luna" . CHM . Recuperado el 31 de marzo de 2025 .
- ↑ "¿Cómo lograron las computadoras de vuelo del Apolo llevar a los hombres a la Luna y traerlos de regreso ?" 11 de marzo de 2017.
- ↑ James E. Tomayko (1988). "La computadora de guía del Apolo: Hardware" . Computadoras en vuelos espaciales: La experiencia de la NASA . NASA. Archivado del original el 29 de diciembre de 2023.
- 1 2 "Computadora de guía del Apolo y los primeros chips de silicio" . Museo Nacional del Aire y el Espacio . Institución Smithsonian . 14 de octubre de 2015. Recuperado el 1 de septiembre de 2019 .
- ↑ Agle, DC (septiembre de 1998). "Volando el Gusmobile" . Air & Space . Recuperado el 15 de diciembre de 2018 .
- ↑ "Introducción de Ramón Alonso" , Proyecto de Historia de AGC (archivo de Caltech, sitio original cerrado) , MIT, 27 de julio de 2001 , consultado el 30 de agosto de 2009.
- ↑ "La entrevista de Ramon Alonso (español)" , Ramón Alonso, el argentino que llevó a la Apollo 11 a la Luna , Diario La Nacion, 7 de marzo de 2010
- ↑ "Biografía de Hugh Blair-Smith" , Proyecto de Historia AGC (archivo de Caltech, sitio original cerrado) , MIT, enero de 2002 , consultado el 30 de agosto de 2009.
- ↑ "Introducción a Herb Thaler" , Proyecto de Historia de AGC (archivo de Caltech, sitio original cerrado) , MIT, 14 de septiembre de 2001 , consultado el 30 de agosto de 2009.
- ↑ Kurinec, Santosh K; Indovina, Mark; McNulty, Karl; Seitz, Matthew (2021). "Recreando la historia: la creación del chip que fue a la Luna en 1969 en el Apolo 11" (PDF) . Instituto Tecnológico de Rochester . pág. 9. Consultado el 29 de agosto de 2023 .
- ↑ "ENSAMBLAJE DE MÓDULO LÓGICO N.° A1-A16" . Laboratorio de Instrumentación del MIT. 11 de julio de 1963. pág. Hoja 1 de 2, Nota 2.
- ↑ "Requisitos del programa Apolo para el control de procesos y la fabricación de módulos y ensamblajes de circuitos electrónicos soldados por resistencia" . Archive.org . NASA. 22 de mayo de 1963. Consultado el 19 de febrero de 2024 .
- ↑ Butrica, Andrew J. (2015). «Capítulo 3: El papel de la NASA en la fabricación de circuitos integrados». En Dick, Steven J. (ed.). Estudios históricos sobre el impacto social de los vuelos espaciales (PDF) . NASA . págs. 149–250 . ISBN 978-1-62683-027-1.
- 1 2 3 4 5 Hall, Eldon C. (1972). El papel del MIT en el Proyecto Apolo: Informe final sobre los contratos NAS 9-163 y NAS 94065 (PDF) . Cambridge, MA: MIT . Recuperado el 15 de junio de 2021 .
- ↑ Peirce, CS (manuscrito invierno de 1880–81), "Un álgebra booleana con una constante", publicado en 1933 en Collected Papers vol. 4, párrafos 12–20. Reimpreso en 1989 en Writings of Charles S. Peirce vol. 4, págs. 218–221, Google. Véase Roberts, Don D. (2009), The Existential Graphs of Charles S. Peirce , p. 131.
- ↑ "Reencendido del panel DSKY del Apolo: La historia completa" . YouTube . 27 de julio de 2021.
- ↑ Weinstock, Maia (17 de agosto de 2016). "Escena en el MIT: el código Apolo de Margaret Hamilton" . Noticias del MIT . Consultado el 17 de agosto de 2016 .
- ^ Mindell 2008 , págs.154 , 157.
- 1 2 3 Hoag, David (septiembre de 1976). "La historia de la guía, navegación y control a bordo del Apolo" (PDF) . Laboratorio Charles Stark Draper.
- 1 2 Mindell 2008 , pág. 149.
- ↑ "Los alunizajes" . Asociación Métrica del Reino Unido. 18 de octubre de 2018.
- ↑ "CUENTOS DEL ORDENADOR DE GUÍA DEL MÓDULO LUNAR" . klabs.org .
- ↑ "Introducción de Hugh Blair-Smith" , Proyecto de Historia de AGC (archivo de Caltech, sitio original cerrado) , MIT, 30 de noviembre de 2001 , consultado el 21 de marzo de 2010.
- ↑ "La NASA homenajea a un ingeniero del programa Apolo" (Comunicado de prensa). 3 de septiembre de 2003.
- ↑ "Página virtual de la Luminaria de AGC" .
- 1 2 Harvey IV, Harry Gould (13 de octubre de 2015). "Su código llevó a los humanos a la Luna y también inventó el software" . WIRED . Recuperado el 25 de noviembre de 2018 .
- ↑ "Acerca de Margaret Hamilton" . Oficina de Diseño Lógico de la NASA. 3 de febrero de 2010.
- ↑ AJS Rayl. "Ingenieros y científicos de la NASA: transformando sueños en realidad" . Archivado del original el 16 de mayo de 2016.
- ↑ Fong, Kevin (2019). "13 minutos a la luna: Episodio 5 El cuarto astronauta" . bbc.co.uk. BBC World Service .
- ↑ O'Brien, Frank (25 de junio de 2010). El ordenador de guiado del Apolo: arquitectura y funcionamiento . Springer Science & Business Media. ISBN 978-1-4419-0877-3.
- ↑ Collins, Michael ; Aldrin, Edwin (1975). «El águila ha aterrizado» . En Cortright, Edgar M. (ed.). Expediciones Apolo a la Luna . Washington, DC: NASA. págs. 210–215 . ISBN 978-0486471754. NASA SP-350 . Consultado el 30 de agosto de 2009 .
- ^ "chrislgarry/Apolo-11" . GitHub . Consultado el 17 de julio de 2016 .
- ↑ Adler, Peter (1998), Jones, Eric M. (ed.), "Alarmas del programa Apolo 11" , Apollo 11 Lunar Surface Journal , NASA , consultado el 1 de septiembre de 2009.
- ↑ Martin, Fred H. (julio de 1994), Jones, Eric M. (ed.), "Apollo 11 : 25 años después" , Apollo 11 Lunar Surface Journal , NASA , consultado el 1 de septiembre de 2009.
- ↑ Cortright, Edgar M., ed. (1975), "The Lunar Module Computer" , Apollo 11 Lunar Surface Journal , NASA , consultado el 4 de febrero de 2010.
- 1 2 3 Eyles, Don (6 de febrero de 2004), "Historias del ordenador de guiado del módulo lunar" , 27.ª Conferencia anual de guiado y control , Breckenridge, Colorado: Sociedad Astronáutica Americana
- ↑ Witt, Stephen (24 de junio de 2019). "Apollo 11: Misión fuera de control" . Wired . San Francisco: Condé Nast Publications . Consultado el 18 de septiembre de 2019 .
- ↑ Tomayko, James E. (2000), "NASA SP-2000-4224 — Las computadoras alzan el vuelo: Historia del proyecto pionero de control digital por cable de la NASA" (PDF) , The NASA History Series , Washington, DC: NASA , consultado el 1 de septiembre de 2009.
- ↑ Burkey, Ron. "VirtualAGC" . iBiblio . Consultado el 10 de abril de 2021 .
- ↑ "Colección de código fuente de AGC en Github, mantenida por iBiblio" . GitHub . Archivado del original el 7 de mayo de 2021.URL alternativa
- ↑ "Archivado y referencia del código fuente de Apollo" . www.softwareheritage.org . 20 de julio de 2019. Consultado el 9 de septiembre de 2021 .
- ↑ "Página principal virtual de AGC" . ibiblio.org . Consultado el 9 de septiembre de 2021 .
- ↑ Collins, Keith (9 de julio de 2016). "El código que llevó a Estados Unidos a la luna acaba de ser publicado en GitHub, y es como una cápsula del tiempo de los años 60" . Quartz . Consultado el 19 de agosto de 2016 .
- ↑ Garry, Chris. "Código fuente original del ordenador de guiado (AGC) del Apolo 11 para los módulos de mando y lunar" . GitHub . Archivado del original el 12 de abril de 2021.URL alternativa
- ↑ "El código fuente del Apolo 11 ya está en GitHub" . Engadget . 10 de julio de 2016. Consultado el 9 de septiembre de 2021 .
Fuentes
- Mindell, David A. (2008). Apolo digital: El ser humano y la máquina en los vuelos espaciales . Cambridge, Massachusetts: The MIT Press. ISBN 978-0-262-26668-0.
Enlaces externos
- Documentación sobre la AGC y su desarrollo
- Memorando AGC4 n.° 9, Instrucciones del Bloque II : El infame memorando que sirvió como documentación oficial de facto del conjunto de instrucciones.
- Computadoras en vuelos espaciales: La experiencia de la NASA – Por James Tomayko (Capítulo 2, Parte 5, La computadora de guía del Apolo: Hardware )
- Las computadoras alzan el vuelo – Por James Tomayko
- El ordenador de guiado del Apolo: la perspectiva del usuario ( PDF ) – Por David Scott, astronauta de la misión Apolo.
- Procesamiento de entrada del conjunto del controlador de actitud del módulo lunar ( PDF ) – Por José Portillo Lugo
- El proyecto MIT AGC – Con un archivo documental completo
- Listado del código fuente del software Luminary , para el ordenador de guiado del módulo lunar. (Nota: 622 MB)
- Listado del código fuente del software Colossus , para el ordenador de guiado del módulo de mando. (Nota: 83 MB)
- El Bloque I del AGC y Dsky del Museo Nacional del Aire y el Espacio
- Anotaciones al viaje de Eldon Hall a la Luna : un programador del sistema AGC analiza algunos detalles poco conocidos del desarrollo de AGC, incluyendo detalles específicos de la interrupción de Ed.
- Documentación del diseño del hardware AGC, y en particular del uso de los nuevos circuitos integrados en lugar de transistores.
- Paquetes de circuitos integrados AGC
- Circuitos integrados en la computadora de guía del Apolo
- Documentación del funcionamiento del software AGC
- Delco Electronics, Apollo 15 - Manual del software AGC para el módulo de mando y servicio (CSM) y el módulo lunar (LEM) utilizado en la misión Apollo 15. Incluye procedimientos detallados de la interfaz de usuario, explicación de numerosos algoritmos subyacentes e información limitada sobre el hardware. Tenga en cuenta que este documento tiene más de 500 páginas y un tamaño superior a 150 megabytes.
- Código fuente del módulo de mando (Comanche054) y del módulo lunar (Luminary099) en formato de texto.
- Código fuente completo de GitHub. Código fuente original del ordenador de guiado (AGC) del Apolo 11 para los módulos de mando y lunar.
- Algunos proyectos y simuladores basados en AGC
- Réplica de AGC : el exitoso proyecto de John Pultorak para construir una réplica de hardware del AGC Block I en su sótano. Sitio espejo: Réplica de AGC .
- Página principal de Virtual AGC : el simulador AGC de Ronald Burkey, además de la recuperación de código fuente y binario para el software Colossus (CSM) y Luminary (LEM).
- Moonjs : un simulador AGC basado en web, basado en Virtual AGC.
- Simulador de aterrizaje lunar Eagle Lander 3D Shareware con AGC y DSKY funcionales (solo para Windows).
- AGC se reinició 45 años después – YouTube
Artículos destacados
- Computadora para Apolo (1965) MIT Science Reporter – YouTube
- Abriendo camino a la Luna (BBC News)
- Los restauradores intentan poner en marcha el ordenador de guiado del módulo lunar ( Wall Street Journal ).
- Vídeo de la computadora para el programa Apollo – YouTube
- Ordenadores de guía
- Hardware del programa Apolo
- Introducciones relacionadas con la informática en 1966
- Software programado en lenguaje ensamblador
- Instituto Tecnológico de Massachusetts
- Disoluciones de 1975
- Instrumentos de navegación de naves espaciales
- computadoras de 16 bits