Las misiones Apolo tenían una tecnología no más complicada que una calculadora de bolsillo.
Desde el enlace aquí , hay información sobre Apollo Guidance Computer (AGC)
El Apollo Guidance Computer (AGC) a bordo tenía aproximadamente 1 pie cúbico con 2K de RAM de 16 bits y 36K de memoria de cable duro con cables de cobre roscados o no a través de pequeños núcleos magnéticos. Las palabras de 16 bits eran generalmente 14 bits de datos (o dos códigos de operación), 1 bit de signo y 1 bit de paridad. El tiempo del ciclo fue de 11,7 microsegundos. La programación se realizó en lenguaje ensamblador y en un lenguaje interpretativo, en polaco inverso.
Entonces, me topé con un código fuente cuando investigué lo que había allí arriba, y noté excelentes comentarios (por ejemplo, TEMPORAL, ESPERO ESPERO ESPERANZA)
VRTSTART TS WCHVERT
# Page 801
CAF TWO # WCHPHASE = 2 ---> VERTICAL: P65,P66,P67
TS WCHPHOLD
TS WCHPHASE
TC BANKCALL # TEMPORARY, I HOPE HOPE HOPE
CADR STOPRATE # TEMPORARY, I HOPE HOPE HOPE
TC DOWNFLAG # PERMIT X-AXIS OVERRIDE
ADRES XOVINFLG
TC DOWNFLAG
ADRES REDFLAG
TCF VERTGUID
Los programas reales en la nave espacial se almacenaron en la memoria de la cuerda central , una tecnología de memoria antigua hecha (literalmente) tejiendo una tela / cuerda, donde los pedazos eran anillos físicos de material de ferrita. La memoria "núcleo" es resistente a los rayos cósmicos. El estado de un bit de núcleo no cambiará cuando sea bombardeado por radiación en el espacio exterior.
¡El software Virtual Apollo Guidance Computer (AGC) también está en GITHUB!
Alguna parte de la documentación está aquí.
Otra muestra de código fuente con excelentes comentarios.
033911,000064: 32,3017 06037 FLAGORGY TC INTPRET # DIONYSIAN FLAG WAVING
034090,000243: 32,3241 13247 BZF P63SPOT4 # BRANCH IF ANTENNA ALREADY IN POSITION 1
034091,000244:
034092,000245: 32,3242 33254 CAF CODE500 # ASTRONAUT: PLEASE CRANK THE
034093,000246: 32,3243 04616 TC BANKCALL # SILLY THING AROUND
034094,000247: 32,3244 20623 CADR GOPERF1
034095,000248: 32,3245 16001 TCF GOTOP00H # TERMINATE
034096,000249: 32,3246 13235 TCF P63SPOT3 # PROCEED SEE IF HE'S LYING
034101,000254: 32,3251 04635 TC POSTJUMP # OFF TO SEE THE WIZARD ...
034102,000255: 32,3252 74126 CADR BURNBABY
Mi pregunta aquí es esta:
- ¿Cómo fueron los equipos que escribieron este código capaz de hacerlo funcional dadas las herramientas en ese momento?
Porque si compilas tanto código que se usó en Apollo 11 ... tomaría días, incluso semanas. Dudo seriamente que los programadores en ese entonces dejaran que todo sucediera por casualidad.
HOPE HOPE HOPE
haces bien la primera vez.Respuestas:
Hubo un documental encantador que estoy tratando de perseguir acerca de que John 'Jack' Garman tuvo que "inventar" un "sistema operativo de multiprogramación programado por prioridad". Sin embargo, esto puede haber estado relacionado con el módulo de aterrizaje. La historia era que cuando aterrizabas en el módulo de aterrizaje, es mejor que le des prioridad a la orientación porque otras cosas, como la temperatura en la cabina durante los siguientes 15 segundos, realmente no importaban si te caes y te quemas. En el primer disparo sobrecargaron la computadora y las alarmas comenzaron a suceder porque algunas subrutinas no se ejecutaban. Había demasiados cargados, pero gracias al concepto de prioridad, que Garman previó e incorporó porque pensó que era una buena idea, las rutinas de baja prioridad no bloquearon la rutina de aterrizaje de mayor prioridad.
Al ver el documental en ese momento, me sorprendió lo que era hacer una refactorización importante del código sin decirle a la gerencia y casi ser despedido porque llegaste tarde en lo que se suponía que estabas trabajando. Sin embargo, en este caso, la refactorización salió a la luz cuando se investigó el motivo de las alarmas. (¡Y la gerencia todavía estaba enojada! :-)
Algunos enlaces:
No, un "error de la lista de verificación" casi no descarriló el primer alunizaje
CUENTOS DE LA COMPUTADORA DE ORIENTACIÓN DEL MÓDULO LUNAR
Cómo lo construyeron: el software del Apolo 11
Proyecto de Historia Oral del Centro Espacial Johnson de la NASA Transcripción de Historia Oral Editada
Breve historia del Extracto del Programa Apolo de la NASA : cinco minutos después de la quemadura de descenso y 1.800 m sobre la superficie de la Luna, la computadora de navegación y guía LM produjo la primera de varias alarmas inesperadas del programa "1202" y "1201". El ingeniero informático del Centro de Control de la Misión en Houston, Jack Garman, le dijo al oficial de orientación Steve Bales que era seguro continuar el descenso. Estas alarmas fueron indicaciones de "desbordamientos ejecutivos", lo que significa que la computadora de guía no pudo completar todas sus tareas en tiempo real y tuvo que posponer algunas de ellas.
Recordando el extracto del 'salto gigante' : sabíamos qué era eso y que no debería estar sucediendo. Pero habíamos diseñado un sistema que intentaba recuperarse de cualquier condición de sobrecarga. Así que recuerdo haber escuchado al [ingeniero informático de la NASA] Jack Garman gritar: "¡Ve, ve!" Y continuaron. Luego escuchamos mientras Neil voló el LEM y siguió tratando de encontrar un buen lugar para aterrizar. Nuestra nueva preocupación era la falta de combustible restante. Pero finalmente escuchamos el aviso de contacto y luego, "El águila ha aterrizado".
Entrevista a Jack Garman
EDITAR: Tal vez este fue el documental: Apollo 11: The Untold Story (2006)
Elenco: John R. Garman ...
Él Mismo - Apollo 11 Computer Engineer (como Jack Garman)
(Entre otros).
Actualización: Un pirata informático de Sudáfrica acaba de rescatar la primera computadora de la NASA en el espacio
fuente
Si entiendo correctamente, el proceso de desarrollo fue la revisión por pares y la experimentación.
El equipo estaba formado por personas como "Médicos de Matemáticas", personas extremadamente dedicadas, inteligentes, apasionadas y orientadas al detalle cuyas vidas estaban dedicadas a su trabajo. Entonces, cuando digo revisión por pares, me refiero a muchas revisiones por pares en el transcurso de muchos meses (más de un año).
Estos desarrolladores "ejecutaron las simulaciones en sus cabezas", "depuraron el software en papel" y trabajaron en grupos con muchos desarrolladores mirando el mismo código una y otra vez hasta que se convencieron de que era correcto. Había varios equipos, cada uno trabajando en una parte del todo.
Mi profesor de Métodos Numéricos en la Universidad Estatal de Ohio (Spring '96) escribió el código que decidió cuándo comenzar una etapa del cohete de refuerzo. Describió que la impresión era del tamaño de la guía telefónica (por lo tanto, tal vez de 2.5 a 3.5 pulgadas de grosor de papel de 8.5 x 11 pulgadas, no describió el tamaño de la fuente) del código Fortran.
Cuando se convencieron, lanzaron un misil no tripulado (los cohetes técnicamente no tienen giroscopios) con una radio a bordo que emitía un pitido a intervalos regulares. Escucharon los pitidos hasta el punto en que esperaban que la radio impactara en la luna (chocara contra ella y se destruyera a sí misma) y dejara de sonar. Sabían que si fallaban, la radio seguiría sonando mucho más allá del tiempo calculado de impacto. El impacto ocurrió 15 segundos después del tiempo calculado.
Esta historia ciertamente anecdótica son mis recuerdos de una visita al consultorio con el médico. Era muy viejo, y fue hace mucho tiempo. Este es mi mejor recuerdo.
fuente
El AGC se controla con verbos y sustantivos.
El software del comando Apollo no está escrito en ninguna sintaxis que los usuarios reconocerían hoy. Los astronautas ingresan comandos numéricamente, y cada número de dos dígitos representa un verbo o un sustantivo. El verbo describió la acción a realizar, y el sustantivo especificó los datos a ser afectados por la acción del verbo.
Los astronautas odiaban la configuración de verbos y sustantivos
Ramón Alonso, uno de los desarrolladores originales de hardware de AGC, dijo que la interfaz había sido inventada para impresionar a los visitantes de su laboratorio, pero se quedó para los vuelos cuando nadie desarrolló una mejor interfaz. Los críticos dijeron que no era "científico", y los primeros astronautas —todos los pilotos de élite— prefirieron diales e interruptores, similares a un panel de control de un avión.
El software tal como fue diseñado fue construido básicamente desde cero por el MIT.
Puede descargar e instalar el programa emulador de computadora Apollo Guidance en su computadora personal, no hay problema. Así es como se ve en Mac OS X.
fuente
Como casi cualquier otro proyecto de software, se realizó bajo una fecha límite agresiva y una presión de calidad. Afortunadamente, un gran archivo de material del gerente de proyectos de software Howard W. "Bill" Tindall, Jr. está disponible aquí .
Si prueba los memos, puede tener una idea muy clara del conflicto normal entre tiempo, características y defectos. Vale la pena señalar que el desarrollo continuó durante varios años como el resto del proyecto.
No puedo encontrar referencias específicas sobre cómo se creó el software, pero dada la fecha, solo puedo suponer que gran parte se realizó en lápiz y papel, con "simulaciones" hechas manualmente. Parece que había un sistema para cargar programas en el AGC con tarjetas perforadas, presumiblemente para pruebas "rápidas" en el terreno sin la necesidad de fabricar memoria de cuerda.
fuente