El código fuente del Apollo disponible en Google Code

Como parte de la conmemoración de los 40 años de la llegada del hombre a la Luna, se ha publicado el código fuente de los programas del Módulo de Comandos y Módulo Lunar utilizados en el Apollo.

Se trata de código que se transcribió desde copias impresas que fueron digitalizadas y se encuentran disponibles en PDF.  El código transcrito ahora se encuentra en los repositorios de Google Code y se puede ejecutar sobre Virtual AGC (Apollo Guidance Computer), un emulador del AGC que se muestra en el video y que puede correr sobre Linux, MacOSX y Windows entre otros.

El código fuente se trata de un lenguaje muy cercano al código de máquina que se interpretaba en el AGC.  Por restricciones de memoria no convenía escribir el código directamente en lenguaje ensamblador o assembly del AGC, por lo que se creó un interprete que funcionaba un poco más lento pero cumplía con las condiciones especiales de estas máquinas.  Algunas gracias del código interpretado es que contenía instrucciones para manejar vectores y funciones trigonométricas, algo muy importante en aplicaciones de este tipo.

El código se grababa como firmware y sólo se podían hacer pequeñas modificaciones en caliente.  Es notable el hecho de que estas modificaciones no solo se podían recibir desde la tierra, sino que los astronautas también estaban capacitados para meter su propio código en caso de ser necesario.

Aquellos que entiendan código assembly de procesadores antiguos como el MOS6502 (Atari, Commodore, Apple) o Z80 (Spectrum, MSX) no tendrán problemas en entender el del Apollo. Increíblemente el lenguaje interpretado es el que necesita un poco más de habilidad.

Aunque no lo lleguen a ejecutar en sus computadores, es bastante interesante ver cómo se programaban estas máquinas, sobre todo considerando qué tan crítico era la calidad del código.   Aún así, se pueden encontrar segmentos que los astronautas no hubieran querido ver:

TC      BANKCALL    # TEMPORARY, I HOPE HOPE HOPE
CADR    STOPRATE    # TEMPORARY, I HOPE HOPE HOPE
TC      DOWNFLAG    # PERMIT X-AXIS OVERRIDE

Links:
Apollo 11 mission’s 40th Anniversary: One large step for open source code… (blog de Google Code)
Virtual AGC and AGS emulation (proyecto en Google Code)
The Apollo Guidance Computer A Kinder, Gentler Introduction (Virtual AGC Home page)