Die Apollo-Missionen hatten eine Technologie, die nicht komplizierter war als ein Taschenrechner.
Unter dem Link hier finden Sie Informationen zu Apollo Guidance Computer (AGC).
Der integrierte Apollo Guidance Computer (AGC) hatte eine Größe von etwa 1 Kubikfuß mit 2 KB 16-Bit RAM und 36 KB fest verdrahtetem Kernseilspeicher mit Kupferdrähten, die durch winzige Gewinde geführt wurden oder nicht) Magnetkerne. Die 16-Bit-Wörter bestanden im Allgemeinen aus 14 Datenbits (oder zwei Operationscodes), 1 Vorzeichenbit und 1 Paritätsbit. Die Zykluszeit betrug 11,7 Mikrosekunden. Die Programmierung erfolgte in Assemblersprache und in einer Interpretation Sprache, in umgekehrter polnischer Sprache.
Ich bin also auf einen Quellcode gestoßen, als ich nachgeforscht habe, was dort oben war, und ich habe großartige Kommentare bemerkt (z. B. 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
Die eigentlichen Programme im Raumschiff wurden in Kernseilspeicher gespeichert, einer alten Speichertechnologie, die durch (buchstäblich) Weben eines Gewebes/Seils hergestellt wurde, wobei die Bits physische Ringe aus Ferritmaterial waren. "Kern" -Speicher ist resistent gegen kosmische Strahlung. Der Zustand eines Kernbits ändert sich nicht, wenn er mit Strahlung im Weltraum bombardiert wird.
AGC-Software (Virtual Apollo Guidance Computer) ist auch auf GITHUB verfügbar!
Ein Teil der Dokumentation ist hier.
Ein weiteres Beispiel für Quellcode mit tollen Kommentaren.
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
Meine Frage hier ist folgende:
Denn wenn Sie so viel Code kompilieren, der in Apollo 11 verwendet wurde, würde es Tage oder sogar Wochen dauern. Ich bezweifle ernsthaft, dass Programmierer damals alles dem Zufall überlassen haben.
Es gab eine schöne Dokumentation, die ich über John 'Jack' Garman verfolgen wollte, der ein "vorrangig geplantes Multiprogramming-Betriebssystem" "erfinden" musste. Dies könnte jedoch mit dem Lander-Modul zusammenhängen. Die Geschichte war, dass Sie bei der Landung des Landers der Führung Vorrang einräumen sollten, da andere Dinge, wie die Temperatur in der Kabine für die nächsten 15 Sekunden, keine Rolle spielten, wenn Sie abstürzten und verbrannten. Beim ersten Schuss wurde der Computer überlastet, und es wurden Alarme ausgelöst, da einige Unterprogramme nicht ausgeführt wurden. Es wurden zu viele geladen, aber dank des Prioritätskonzepts, das Garman vorausgesehen und eingebaut hat, weil er es für eine gute Idee hielt, haben die Routinen mit niedriger Priorität die Landeroutine mit höherer Priorität nicht beeinträchtigt.
Als ich mir damals den Dokumentarfilm ansah, war ich beeindruckt, wie es war, den Code grundlegend umzugestalten, ohne das Management zu informieren, und beinahe entlassen zu werden, weil Sie zu spät an dem waren, woran Sie eigentlich arbeiten sollten. In diesem Fall wurde das Refactoring jedoch bekannt, als der Grund für die Alarme untersucht wurde. (Und das Management war immer noch sauer! :-)
Einige Links:
Nein, ein „Checklistenfehler“ hat die erste Mondlandung nicht fast entgleist
GESCHICHTEN VOM LUNAR MODULE GUIDANCE COMPUTER
Wie sie es gebaut haben: Die Software von Apollo 11
Oral History Project des NASA Johnson Space Center, bearbeitetes Oral History Transcript
Kurze Geschichte des Apollo-Programms der NASA Auszug: Fünf Minuten nach dem Abstieg und 1.800 m über der Mondoberfläche produzierte der LM-Navigations- und Leitcomputer den ersten von mehreren unerwarteten "1202" und Programmalarme "1201". Der Computeringenieur im Mission Control Center in Houston, Jack Garman, sagte dem Führungsbeamten Steve Bales, es sei sicher, den Abstieg fortzusetzen. Diese Alarme waren Anzeichen für "Executive Overflows", was bedeutete, dass der Führungscomputer nicht alle seine Aufgaben in Echtzeit erledigen konnte und einige von ihnen verschieben musste.
nter Hinweis auf den 'Riesensprung' Auszug: Wir wussten, was das war und dass es nicht passieren sollte. Wir hatten jedoch ein System entwickelt, das sich bemühte, sich von Überlastungsbedingungen zu erholen. Ich erinnere mich also, wie Jack Garman [NASA-Computeringenieur] rief: "Los, los!" Und weiter gingen sie. Dann hörten wir zu, wie Neil das LEM weiter flog und versuchte, einen guten Ort zum Aufsetzen zu finden. Unsere neue Sorge war der verbleibende Kraftstoffmangel. Aber schließlich hörten wir die Kontaktbenachrichtigung und dann: "Der Adler ist gelandet."
EDIT: Vielleicht war dies der Dokumentarfilm: Apollo 11: The Untold Story (2006)
Darsteller: John R. Garman ...
Selbst - Apollo 11 Computer Engineer (als Jack Garman)
(Unter anderen).
Update: Ein Hacker aus Südafrika hat gerade den ersten NASA-Computer im Weltraum gerettet
Wenn ich das richtig verstehe, war der Entwicklungsprozess Peer Review und Experimentieren.
Das Team bestand aus Leuten wie "Math Doctors" - äußerst engagierten, intelligenten, leidenschaftlichen, detailorientierten Leuten, deren Leben ihrer Arbeit gewidmet war. Wenn ich also Peer Review sage, meine ich viele Peer Reviews über viele Monate (mehr als ein Jahr).
Diese Entwickler "führten die Simulationen in ihren Köpfen durch", "debuggten die Software auf Papier" und arbeiteten in Gruppen mit vielen Entwicklern, die immer wieder denselben Code betrachteten, bis sie davon überzeugt waren, dass er korrekt war. Es gab mehrere Teams, die jeweils an einem Teil des Ganzen arbeiteten.
Mein Professor für Numerische Methoden an der Ohio State University (Frühjahr '96) schrieb den Code, der entschied, wann eine Stufe der Booster-Rakete gestartet werden sollte. Er beschrieb den Ausdruck als die Größe des Telefonbuchs (also vielleicht 2,5 bis 3,5 Zoll dick aus 8,5 x 11 Zoll Papier - er beschrieb die Schriftgröße nicht) des Fortran-Codes.
Als sie überzeugt waren, starteten sie eine unbemannte Rakete (Raketen haben technisch gesehen keine Gyroskope) mit einem Radio an Bord, das in regelmäßigen Abständen einen Piepton ausstrahlte. Sie hörten die Pieptöne bis zu dem Punkt, an dem sie erwarteten, dass das Radio den Mond treffen würde (gegen ihn stoßen und sich selbst zerstören) und aufhören würden zu piepen. Sie wussten, dass das Radio lange nach der berechneten Aufprallzeit piepsen würde, wenn sie es versäumten. Der Aufprall erfolgte 15 Sekunden nach der berechneten Zeit.
Diese zugegebenermaßen anekdotische Geschichte sind meine Erinnerungen an einen Bürobesuch beim Arzt. Er war sehr alt und es ist lange her. Dies ist meine beste Erinnerung.
Die AGC wird mit Verben und Substantiven gesteuert
Die Apollo-Befehlssoftware ist in keiner Syntax geschrieben, die Benutzer heute erkennen würden. Astronauten geben Befehle numerisch ein, wobei jede zweistellige Zahl ein Verb oder ein Substantiv darstellt. Das Verb beschrieb die auszuführende Aktion, und das Substantiv gab die Daten an, die von der Aktion des Verbs betroffen sein sollen.
Astronauten hassten das Verb- und Substantiv-Setup
Ramón Alonso, einer der ursprünglichen Hardware-Entwickler von AGC, sagte, die Schnittstelle sei erfunden worden, um die Besucher ihres Labors zu beeindrucken, blieb aber bei den Flügen, als niemand eine bessere Schnittstelle entwickelte. Kritiker sagten, es sei nicht "wissenschaftlich", und die ersten Astronauten - alle Elite-Jet-Piloten - bevorzugten Zifferblätter und Schalter, ähnlich einem Flugzeugbedienfeld.
"Die AGC war für diese Zeit in der Geschichte der digitalen Computer sehr langsam, aber sehr zuverlässig und sehr klein. Es war die früheste Verwendung integrierter Schaltkreise."
Die Software, wie sie entworfen wurde, wurde vom MIT im Wesentlichen von Grund auf neu erstellt.
Sie können das Apollo Guidance Computer-Emulatorprogramm problemlos herunterladen und auf Ihrem PC installieren. So sieht es unter Mac OS X aus.
Wie so ziemlich jedes andere Softwareprojekt wurde es unter aggressivem Termin- und Qualitätsdruck durchgeführt. Glücklicherweise ist hier ein großes Archiv mit Material von Software-Projektmanager Howard W. "Bill" Tindall, Jr. verfügbar .
Wenn Sie die Memos testen, können Sie einen sehr guten Eindruck vom normalen Konflikt zwischen Zeit, Funktionen und Fehlern bekommen. Es ist erwähnenswert, dass die Entwicklung wie der Rest des Projekts über mehrere Jahre verlief.
Der Entwurf des Systems begann im zweiten Quartal 1961, und die NASA installierte am 22. September 1965 eine Block I-Version in einem Raumschiff. Die Veröffentlichung der ursprünglichen Software (CORONA) erfolgte im Januar 1966, mit dem ersten Flug am 25. August. 1966. Weniger als drei Jahre später erreichten die Designer das endgültige Programmziel ( http://history.nasa.gov/computers/Ch2-5.html )
Ich kann keine spezifischen Hinweise darauf finden, wie die Software erstellt wurde, aber angesichts des Datums kann ich nur davon ausgehen, dass ein Großteil davon auf Stift und Papier erstellt wurde, wobei "Simulationen" manuell durchgeführt wurden. Es scheint, dass es ein System zum Laden von Programmen mit Lochkarten in die AGC gab, vermutlich für "schnelle" Tests am Boden, ohne dass ein Seilspeicher hergestellt werden musste.