Código fuente del Apolo 11 publicado en Github



El 20 de julio de 2009, en honor al 40 aniversario del alunizaje, se digitalizaron y publicaron en Internet impresiones con el código fuente del programa para la computadora de a bordo Apollo Guidance Computer (AGC) . Han pasado siete años, y ahora este ejemplo único de historia de la computadora ha recibido una segunda vida. Hoy, el código fuente de AGC en ensamblador se publica en Github en su totalidad, abierto para búsqueda, comentarios, tenedores, etc. En el código puede encontrar las llamadas de los famosos errores con los códigos 1201 y 1202 , que tanto preocupaban a Neil Armstrong, y mucho más.



En Github, el repositorio Apollo-11 despegó rápidamente en el primer lugar en la lista de los repositorios más populares por día (no hay duda de que en la clasificación semanal tendrá el primer lugar mañana). Realmente hay algo para ver. Es especialmente interesante leer algunos nombres de procedimientos ( BURN_BABY_BURN - MASTER_IGNITION_ROUTINE.s ) y comentarios en el código original.

CAF	CODE500		# ASTRONAUT:	PLEASE CRANK THE
TC	BANKCALL	#		SILLY THING AROUND
CADR	GOPERF1
TCF	GOTOP00H	# TERMINATE
TCF	P63SPOT3	# PROCEED	SEE IF HE'S LYING

TC	BANKCALL	# ENTER		INITIALIZE LANDING RADAR
CADR	SETPOS1

TC	POSTJUMP	# OFF TO SEE THE WIZARD ...
CADR	BURNBABY

El programa tiene un código "temporal", como en muchos programas modernos.

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

Y aquí está la versión de 1969 del comentario popular, "Esto nunca debe suceder".

CA	A		# SHOULD NEVER HIT THIS LOCATION

El primer ticket ya se creó en el repositorio de Github , una discusión sobre el "error" que debe corregirse en el programa.

El desarrollador de SilverWingedSeraph escribe: "Un usuario tuvo un problema bastante serio con la mezcla criogénica en tanques de oxígeno con la aparición de un mensaje de falla". Para reproducir el error en el programa, repita la siguiente secuencia de acciones:

  1. Construye un módulo de servicio.
  2. Vuela a la órbita lunar.
  3. En la órbita lunar, comience a mezclar en tanques de oxígeno.

“Si hay un problema con el cableado en el módulo, entonces el error puede reproducirse. Tenga cuidado, porque la situación puede ser peligrosa para un probador que está tratando de reproducir el error ", dijo el desarrollador en Github, no sin sentido del humor.

Por supuesto, se refiere al famoso accidente con el equipo del módulo de servicio Apollo 13, después del cual el módulo tuvo que ser devuelto urgentemente a la Tierra mediante maniobras extraordinarias.

En general, hasta la fecha, solo se ha conservado una copia física de las impresiones del programa del módulo lunar. Se conserva un libro impreso en el Museo del Instituto de Tecnología de Massachusetts.

El código del programa fue escrito por Don Isles.con colegas Isles personalmente es el autor de unas 2.000 líneas de código que fueron responsables del aterrizaje del módulo lunar.

Puede intentar ejecutar los comandos de control de Apollo en el emulador (esto es solo un simulador de computadora, sin la nave espacial en sí). Emulador de


computadora de la nave espacial


Apollo Instrucciones del emulador de Apolo Las computadoras

del Módulo de Comando Apollo (CM) y el Módulo Lunar (LM) aterrizaron automáticamente en la superficie lunar. La computadora controlaba los motores y servomotores en tiempo real. Computadora de control a bordo de la


nave espacial Apollo


Pantalla de computadora de control a bordo

La gestión fue realizada por Apollo Guidance Computer (AGC). La computadora de a bordo estaba equipada con un sistema operativo en tiempo real con soporte para subprocesos múltiples, controlaba todos los sistemas y recibía señales de radares, telescopios, giroscopios y acelerómetros.

El libro " Apolo digital " describe bien cómo el programa priorizó y asignó el tiempo de CPU.



Especificaciones técnicas de la computadora de control a bordo de la nave espacial Apollo
Los estándares de tiempo AGC fueron establecidos por un resonador de cuarzo con una frecuencia de 2.048 MHz. La memoria de la computadora consistía en 2048 palabras de RAM regrabable y 36 K palabras de ROM con muestreo lineal en múltiples núcleos cosidos. El ciclo de lectura y escritura de RAM y ROM tomó 11.72 μs. La longitud de la palabra era de 16 bits: 15 bits de datos y 1 bit de paridad. El formato de palabra de 16 bits del procesador incluía 14 bits de datos, un bit de desbordamiento y un bit de signo.

Ver también:
Guía de programación de computadoras Apollo Guidance

Source: https://habr.com/ru/post/es395973/


All Articles