La misión Artemis II que tenía por objetivo volver a la Luna (o al menos a su órbita) para recabar nueva información sobre nuestro satélite ha concluido con éxito. Pero no es lo único que la NASA ha celebrado y mostrado al mundo. Casi al mismo tiempo que en Houston estaban descorchando el champagne y los cuatro astronautas eran devueltos a casa, se ha viralizado el código original de los programas que permitieron a las misiones Apollo llegar a la luna y alunizar en ella.
Se trata de dos programas que ha publicado un ex pasante de la NASA, Chris Garry, en el repositorio GitHub. Lo asombroso del hecho no es que por fin se aplique la política de código abierto con los que, probablemente, son sus dos programas más importantes con respecto a la exploración lunar, sino cómo estaban diseñados para funcionar en sistemas y ordenadores que, pese a estar pensados para funcionar en el espacio, los llevaban al límite.
Los malabares de compresión para instalar el AGC
Básicamente, el Apollo Guidance Computer -AGC-, se valía de dos programas, el Comanche055 que permitía al módulo de mando orbitar la Luna mientras Edwin Buzz Aldrin y Neil Armstrong daban los primeros pasos del ser humano sobre la superficie lunar, y el Luminary099, el programa que permitió alunizar y despegar al módulo lunar.
En aquella época, la digitalización del software tal y como la conocemos hoy era un reto, por lo que los ingenieros tuvieron que escribir el programa a mano. El núcleo matemático de las trayectorias de navegación eran apenas unas 30 líneas de código de ensamblador, y debían contemplar cualquier eventualidad para que las rudimentarias computadoras de navegación de ambos ingenios espaciales, desde permitir a los astronautas realizar correcciones en caso necesario, o incluso abortar la misión y evitar que quedasen atrapados en el espacio. El "ordenador" que los albergaba apenas tenía 4KB de memoria RAM, y consumía 67.5 KB de los 72 que tenía de almacenamiento disponible.
Hoy en día son cifras irrisorias, y son programas que hasta una calculadora científica moderna sería capaz de procesar por capacidad de memoria. Sin embargo, considerando que esos ordenadores y dispositivos debían tener también protección contra la radiación solar, las extremas turbulencias por la velocidades de despegue y retorno a la atmósfera, y las variaciones extremas de temperatura en el vacío espacial -donde no contamos con la protección de la atmósfera terrestre contra estos fenómenos.
Y tampoco olvidemos que no podían ocupar mucho espacio de una nave que apenas tenía espacio para tres tripulantes, pues es un logro técnico sorprendente. Físicamente ocupa 62 x 32 x 15 centímetros, y pesaba 32Kg; para la época eso era miniaturización extrema de un sistema digital.
Un código para aficionados y para la preservación
Aparte del momento en el que este código ha salido a la luz, y como señala el medio Techspot, el que la base de los programas del AGC se pueda "instalar" ahora en ordenadores con Windows o Linux permitirá a los entusiastas y aficionados recrear simulaciones de un vuelo estelar de la Tierra a la Luna y viceversa, incluso sería posible ampliarlos ahora que han sido digitalizados y ya no dependen de los soportes de memoria física cableada de aquellos primeros ordenadores.
Pero más importante que eso, es el hecho de que el Virtual AGC -como se ha llamado al proyecto- es el compendio de instrucciones, contexto, y documentación que acompañan los programas de los módulos lunar y de servicio, lo que lo convierte en una pieza pública de preservación de software, y una invitación para ingenieros informáticos y de codificación para explorar y comparar cómo era programar para esas primitivas máquinas comparadas con las "todopoderosas" (en comparación) que encontramos incluso en casi cualquier vivienda, o incluso la que estás usando para leer esta pieza.
Ver 0 comentarios