Le code source d'Apollo 11 publié sur Github



Le 20 juillet 2009, en l'honneur du 40e anniversaire de l'alunissage, des impressions avec le code source du programme de l' ordinateur de bord Apollo Guidance Computer (AGC) ont été numérisées et publiées sur Internet . Sept ans se sont écoulés - et maintenant cet exemple unique d'histoire de l'ordinateur a reçu une seconde vie. Aujourd'hui, le code source d'AGC dans l'assembleur est publié sur Github dans son intégralité, ouvert à la recherche, aux commentaires, aux fourches, etc.

Dans le code, vous pouvez trouver les appels des célèbres erreurs avec les codes 1201 et 1202 , dont Neil Armstrong était si inquiet, et bien plus encore.

Sur Github, le référentiel Apollo-11 a rapidement décollé à la 1ère place de la liste des référentiels les plus populaires par jour (il ne fait aucun doute que dans le classement hebdomadaire il aura la 1ère place demain). Il y a vraiment quelque chose à voir. Il est particulièrement intéressant de lire certains noms de procédure ( BURN_BABY_BURN - MASTER_IGNITION_ROUTINE.s ) et des commentaires dans le code d'origine.

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

Le programme a un code «temporaire», comme dans de nombreux programmes modernes.

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

Et voici la version de 1969 du commentaire populaire, "Cela ne doit jamais arriver".

CA	A		# SHOULD NEVER HIT THIS LOCATION

Le premier ticket a déjà été créé dans le référentiel Github - une discussion sur le «bug» qui doit être corrigé dans le programme.

Le développeur de SilverWingedSeraph écrit: "Un utilisateur a eu un problème assez sérieux avec le mélange cryogénique dans des réservoirs d'oxygène avec l'apparition d'un message d'erreur." Pour reproduire l'erreur dans le programme, répétez la séquence d'actions suivante:

  1. Créez un module de service.
  2. Envolez-vous vers l'orbite lunaire.
  3. Dans l'orbite lunaire, commencez à mélanger dans des réservoirs d'oxygène.

«S'il y a un problème avec le câblage dans le module, l'erreur peut être reproduite. Soyez prudent, car la situation peut être dangereuse pour un testeur qui essaie de reproduire l'erreur », a expliqué le développeur sur Github, non sans humour.

Bien sûr, il signifie le fameux accident avec l'équipement du module de service Apollo 13, après quoi le module a dû être ramené d'urgence sur Terre à l'aide de manœuvres extraordinaires.

En général, à ce jour, une seule copie physique des impressions du programme du module lunaire a été conservée . Un livre imprimé est conservé au Musée du Massachusetts Institute of Technology.

Le code du programme a été écrit par Don Islesavec des collègues. Isles est personnellement l'auteur d'environ 2 000 lignes de code qui étaient responsables de l'atterrissage du module lunaire.

Vous pouvez essayer d'exécuter les commandes de contrôle Apollo dans l' émulateur (ce n'est qu'un simulateur informatique, sans le vaisseau spatial lui-même). Émulateur d'


ordinateur de vaisseau spatial


Apollo Instructions d'émulateur d'Apollo Les ordinateurs

du module de commande Apollo (CM) et du module lunaire (LM) atterrissent automatiquement sur la surface lunaire. L'ordinateur contrôlait les moteurs et les servomoteurs en temps réel. Ordinateur de contrôle embarqué du


vaisseau spatial Apollo


Affichage de l'ordinateur de contrôle embarqué

La gestion a été effectuée par Apollo Guidance Computer (AGC). L'ordinateur de bord était équipé d'un système d'exploitation en temps réel avec prise en charge du multithreading, il contrôlait tous les systèmes, recevant les signaux des radars, des télescopes, des gyroscopes et des accéléromètres.

Le livre « Digital Apollo » décrit bien comment le programme a priorisé et alloué le temps CPU.



Spécifications techniques de l'ordinateur de bord du vaisseau spatial Apollo
Les normes de temps AGC ont été fixées par un résonateur à quartz avec une fréquence de 2,048 MHz. La mémoire de l'ordinateur se composait de 2048 mots de RAM réinscriptible et de 36 000 mots de ROM avec échantillonnage linéaire sur plusieurs cœurs cousus. Le cycle de lecture-écriture de la RAM et de la ROM a pris 11,72 μs. La longueur du mot était de 16 bits: 15 bits de données et 1 bit de parité. Le format de mot 16 bits du processeur comprenait 14 bits de données, un bit de débordement et un bit de signe.

Voir aussi:
Apollo Guidance Computer Programming Guide

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


All Articles