Qué es esto

Esta página emula el Apollo Guidance Computer (AGC) y su consola DSKY, usados en el programa Apollo. En esta versión se está ejecutando Colossus 249, el software de vuelo del módulo de comando del Apollo 9, misión realizada en 1969.

El módulo de comando era la cápsula tripulada del programa Apollo, y esta computadora se encargaba del guiado, la navegación y el control de la nave.

Moonjs: simulador online de la computadora de guiado Apollo (AGC)


Checklist de lanzamiento
NO ATT
STBY
KEY REL
OPR ERR
 
 
TEMP
GIMBALL
LOCK
PROG
RESTART
TRACKER
ALT
VEL
COMP
ACTY
PROG
00
VERB
00
NOUN
00
+00000
+00000
+00000
ST
00:00:00
MET
00:00:00
OGA
00
IGA
00
MGA
00
ROLL
00
PITCH
00
YAW
00
S-IC
S-II
S-IVB
Moonjs es un simulador online del Apollo Guidance Computer (AGC). Es un port de Virtual AGC de Ronald Burkey, llevado de C a javascript/asm.js usando el compilador Emscripten.

El AGC fue el sistema informático principal del programa Apollo, el que llevó a 12 astronautas a caminar sobre la Luna. Había un AGC en cada módulo de comando Apollo y otro en cada módulo lunar. También existía un segundo sistema de respaldo llamado Abort Guidance System (AGS) en los módulos lunares, que sí es simulado por Virtual AGC, pero no por esta versión actual de Moonjs.

Los astronautas interactuaban con el AGC usando el DSKY, una combinación de pantallas numéricas de 7 segmentos, luces indicadoras y un teclado simple, que es lo que se simula en esta página.

El DSKY simulado se comunica con un AGC simulado, que a su vez ejecuta una copia de Colossus 249, el software de vuelo que se usó en el módulo de comando del Apollo 9. La interfaz humana del DSKY estaba construida alrededor de los conceptos de Verbs y Nouns. Por ejemplo, el Verb 06 puede usarse para mostrar el valor de casi 100 posiciones de memoria distintas, según el Noun que se ingrese.

Algunos códigos de ejemplo

Para muchos más ejemplos y detalles sobre el AGC, su programación y su operación, dos fuentes muy buenas son el excelente sitio Virtual AGC de Ronald Burkey y el libro "The Apollo guidance computer: architecture and operation" de Frank O'Brien. La página de Wikipedia del AGC también tiene bastante información útil y una bibliografía amplia.

¿Por qué Javascript?

Los avances más recientes del lenguaje javascript, como los motores optimizados, la compilación ahead-of-time (AOT) y asm.js, hacen posible escribir aplicaciones computacionalmente exigentes en javascript. Mi experiencia previa con simulación online basada en javascript (svtsim y hemosim) fue muy positiva y me convenció de que la combinación HTML5/javascript sirve bien para escribir simuladores portables y fáciles de usar. Moonjs es el paso lógico siguiente: usa el compilador Emscripten para convertir código existente en C a asm.js, un subconjunto de javascript altamente optimizable.