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
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:- Créez un module de service.
- Envolez-vous vers l'orbite lunaire.
- 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 ordinateursdu 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 ApolloLes 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