Les missions Apollo n'avaient pas une technologie plus compliquée qu'une calculatrice de poche.
Du lien ici , il y a des informations sur Apollo Guidance Computer (AGC)
L'ordinateur de bord Apollo Guidance Computer (AGC) mesurait environ 1 pied cube avec 2 Ko de 16 bits RAM et 36 Ko de mémoire de base câblée avec des fils de cuivre enfilés ou non enfilés dans de minuscules fils). noyaux magnétiques. Les mots de 16 bits étaient généralement 14 bits de données (ou deux codes op), 1 bit de signe et 1 bit de parité. Le temps de cycle était de 11,7 micro-secondes. La programmation était faite en langage assembleur et dans une interprétation langue, en polonais inversé.
Donc, je suis tombé sur du code source lorsque j'ai fait des recherches sur ce qui était là-haut, et j'ai remarqué d'excellents commentaires (par exemple. TEMPORARY, I HOPE HOPE HOPE)
VRTSTART TS WCHVERT
# Page 801
CAF TWO # WCHPHASE = 2 ---> VERTICAL: P65,P66,P67
TS WCHPHOLD
TS WCHPHASE
TC BANKCALL # TEMPORARY, I HOPE HOPE HOPE
CADR STOPRATE # TEMPORARY, I HOPE HOPE HOPE
TC DOWNFLAG # PERMIT X-AXIS OVERRIDE
ADRES XOVINFLG
TC DOWNFLAG
ADRES REDFLAG
TCF VERTGUID
Les programmes réels dans le vaisseau spatial étaient stockés dans mémoire de corde de base , une technologie de mémoire ancienne faite en tissant (littéralement) un tissu/corde, où les bits étaient des anneaux physiques de ferrite. La mémoire "noyau" est résistante aux rayons cosmiques. L'état d'un trépan ne changera pas lorsqu'il sera bombardé par des radiations dans l'espace extra-atmosphérique.
Le logiciel Virtual Apollo Guidance Computer (AGC) est également sur GITHUB!
ne partie de la documentation est ici.
Un autre échantillon de code source avec d'excellents commentaires.
033911,000064: 32,3017 06037 FLAGORGY TC INTPRET # DIONYSIAN FLAG WAVING
034090,000243: 32,3241 13247 BZF P63SPOT4 # BRANCH IF ANTENNA ALREADY IN POSITION 1
034091,000244:
034092,000245: 32,3242 33254 CAF CODE500 # ASTRONAUT: PLEASE CRANK THE
034093,000246: 32,3243 04616 TC BANKCALL # SILLY THING AROUND
034094,000247: 32,3244 20623 CADR GOPERF1
034095,000248: 32,3245 16001 TCF GOTOP00H # TERMINATE
034096,000249: 32,3246 13235 TCF P63SPOT3 # PROCEED SEE IF HE'S LYING
034101,000254: 32,3251 04635 TC POSTJUMP # OFF TO SEE THE WIZARD ...
034102,000255: 32,3252 74126 CADR BURNBABY
Ma question ici est la suivante:
Parce que si vous compilez autant de code utilisé sur Apollo 11 ... cela prendrait des jours, voire des semaines. Je doute sérieusement que les programmeurs à l'époque aient tout laissé par hasard.
Il y avait un beau documentaire que j'essaie de poursuivre sur John 'Jack' Garman a dû "inventer" un "système d'exploitation multiprogrammation prioritaire". Cela peut cependant être lié au module d'atterrisseur. L'histoire était que lorsque vous atterrissiez l'atterrisseur, vous feriez mieux de donner la priorité au guidage parce que d'autres choses, comme la température dans la cabine pendant les 15 secondes suivantes, n'avaient pas vraiment d'importance si vous vous écrasiez et brûliez. Au premier coup, ils ont surchargé l'ordinateur et des alarmes ont commencé à se produire parce que certains sous-programmes n'étaient pas exécutés. Il y en avait trop chargé, mais grâce au concept de priorité, que Garman avait prévu et intégré parce qu'il pensait que c'était une bonne idée, les routines de faible priorité n'empêchaient pas la routine d'atterrissage de priorité plus élevée.
En regardant le documentaire à l'époque, j'ai été frappé de voir comment c'était comme faire une refactorisation majeure du code sans en parler à la direction et presque se faire virer parce que vous étiez en retard sur ce sur quoi vous étiez censé travailler. Dans ce cas cependant, la refactorisation a été révélée lorsque la raison des alarmes a été étudiée. (Et la direction était toujours énervée! :-)
Quelques liens:
CONTES DE L'ORDINATEUR DE GUIDAGE DU MODULE LUNAIRE
Comment ils l'ont construit: le logiciel d'Apollo 11
Transcription de l'histoire orale du projet d'histoire orale du NASA Johnson Space Center
Bref historique du programme Apollo de la NASA Extrait: Cinq minutes après la descente et à 1800 m au-dessus de la surface de la Lune, l'ordinateur de navigation et de guidage LM a produit le premier de plusieurs "1202" inattendus et Alarmes de programme "1201". L'ingénieur informatique du Mission Control Center de Houston, Jack Garman, a déclaré à l'agent d'orientation Steve Bales qu'il était prudent de poursuivre la descente. Ces alarmes étaient des indications de "débordements exécutifs", ce qui signifie que l'ordinateur de guidage ne pouvait pas accomplir toutes ses tâches en temps réel et devait en différer certaines.
Rappelant le "saut géant" Extrait: Nous savions ce que c'était et que cela ne devrait pas se produire. Mais nous avions conçu un système qui s'efforçait de se remettre de toute condition de surcharge. Je me souviens donc d'avoir entendu [ingénieur en informatique de la NASA] Jack Garman crier: "Allez, allez!" Et ils ont continué. Ensuite, nous avons écouté Neil voler sur le LEM et essayer de trouver un bon endroit pour le toucher des roues. Notre nouvelle préoccupation était le manque de carburant restant. Mais finalement, nous avons entendu l'avis de contact, puis, "L'aigle a atterri."
EDIT: C'était peut-être le documentaire: Apollo 11: The Untold Story (2006)
Interprètes: John R. Garman ...
Lui-meme - Apollo 11 Computer Engineer (comme Jack Garman)
(Entre autres).
Mise à jour: n pirate d'Afrique du Sud vient de sauver le premier ordinateur de la NASA dans l'espace
Si je comprends bien, le processus de développement a été l'examen par les pairs et l'expérimentation.
L'équipe était composée de gens comme "Math Doctors" - des gens extrêmement dévoués, intelligents, passionnés et soucieux du détail dont la vie était consacrée à leur travail. Donc, quand je dis examen par les pairs, je veux dire de nombreux examens par les pairs au cours de plusieurs mois (plus d'un an).
Ces développeurs "ont exécuté les simulations dans leur tête", "débogué le logiciel sur papier" et travaillé en groupes avec de nombreux développeurs qui regardaient le même code encore et encore jusqu'à ce qu'ils soient convaincus qu'il était correct. Il y avait plusieurs équipes - chacune travaillant sur une partie de l'ensemble.
Mon professeur de méthodes numériques à l'Ohio State University (printemps 1996) a écrit le code qui a décidé quand lancer une étape de la fusée d'appoint. Il a décrit l'impression comme étant la taille de l'annuaire téléphonique (donc, peut-être 2,5 à 3,5 pouces d'épaisseur de papier 8,5 x 11 pouces - il n'a pas décrit la taille de la police) du code Fortran.
Une fois convaincus, ils ont lancé un missile sans pilote (les roquettes n'ont techniquement pas de gyroscopes) avec une radio à bord qui a émis un bip à intervalles réguliers. Ils ont écouté les bips jusqu'au point où ils s'attendaient à ce que la radio impacte la lune (s'écrase dessus et se détruise) et arrête de biper. Ils savaient que s'ils manquaient, la radio continuerait de sonner longtemps après l'heure calculée de l'impact. L'impact s'est produit 15 secondes après le temps calculé.
Cette histoire, certes anecdotique, sont mes souvenirs d'une visite au bureau avec le médecin. Il était très vieux et c'était il y a longtemps. Ceci est mon meilleur souvenir.
L'AGC est contrôlé avec des verbes et des noms
Le logiciel de commande Apollo n'est écrit dans aucune syntaxe que les utilisateurs reconnaissent aujourd'hui. Les astronautes saisissent les commandes numériquement, chaque nombre à deux chiffres représentant un verbe ou un nom. Le verbe décrivait l'action à effectuer et le nom spécifiait les données à affecter par l'action du verbe.
Les astronautes détestaient la configuration du verbe et du nom
Ramón Alonso, l'un des développeurs de matériel AGC d'origine, a déclaré que l'interface avait été inventée pour impressionner les visiteurs de leur laboratoire, mais qu'elle était restée pour les vols lorsque personne n'avait développé une meilleure interface. Les critiques ont dit que ce n'était pas "scientifique", et les premiers astronautes - tous les pilotes de jet Elite - préféraient les cadrans et les commutateurs, similaires à un panneau de commande d'avion.
"L'AGC a été très lent, mais très fiable et très petit pour l'époque de l'histoire des ordinateurs numériques. Ce fut le premier à utiliser des circuits intégrés."
Le logiciel tel qu'il a été conçu a été construit à partir de zéro par le MIT.
Vous pouvez télécharger et installer le programme d'émulation Apollo Guidance Computer sur votre ordinateur personnel, sans problème. Voici à quoi cela ressemble sur Mac OS X.
Comme à peu près tous les autres projets logiciels, il a été réalisé dans des délais très serrés et sous une pression de qualité. Heureusement un ne grande archive de matériel du chef de projet logiciel Howard W. "Bill" Tindall, Jr. est disponible ici .
Si vous échantillonnez les mémos, vous pouvez avoir une très bonne idée du conflit normal entre le temps, les fonctionnalités et les défauts. Il convient de noter que le développement s'est déroulé sur un certain nombre d'années comme le reste du projet.
La conception du système a commencé au deuxième trimestre de 1961, et la NASA a installé une version Block I dans un vaisseau spatial le 22 septembre 1965. La sortie du logiciel original (nommé CORONA) a eu lieu en janvier 1966, avec le premier vol le 25 août. 1966. Moins de 3 ans après cela, les concepteurs ont atteint l'objectif final du programme ( http://history.nasa.gov/computers/Ch2-5.html )
Je ne trouve pas de références spécifiques sur la façon dont le logiciel a été créé, mais étant donné la date, je ne peux que supposer qu'une grande partie a été effectuée sur un stylo et du papier, avec des "simulations" faites manuellement. Il semble qu'il y ait un système pour charger des programmes dans l'AGC avec des cartes perforées, vraisemblablement pour des tests "rapides" sur le terrain sans avoir besoin de fabriquer une mémoire de corde.