Apollo 11-Quellcode auf Github veröffentlicht



Am 20. Juli 2009 wurden zu Ehren des 40. Jahrestages der Mondlandung Ausdrucke mit dem Quellcode des Programms für den Bordcomputer Apollo Guidance Computer (AGC) digitalisiert und im Internet veröffentlicht . Sieben Jahre sind vergangen - und jetzt hat dieses einzigartige Beispiel der Computergeschichte ein zweites Leben erhalten. Heute wird der Quellcode für AGC in Assembler vollständig auf Github veröffentlicht und kann gesucht, kommentiert, gegabelt usw. werden.

Im Code finden Sie die Aufrufe der berühmten Fehler mit den Codes 1201 und 1202 , über die Neil Armstrong so besorgt war, und vieles mehr.

Auf Github belegte das Apollo-11- Repository schnell den 1. Platz in der Liste der beliebtesten Repositories pro Tag (es besteht kein Zweifel, dass es in der wöchentlichen Bewertung morgen den 1. Platz haben wird). Es gibt wirklich etwas zu sehen. Es ist besonders interessant, einige Prozedurnamen ( BURN_BABY_BURN - MASTER_IGNITION_ROUTINE.s ) und Kommentare im Originalcode zu lesen .

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

Das Programm hat einen "temporären" Code, wie in vielen modernen Programmen.

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

Und hier ist die 1969er Version des beliebten Kommentars "This Must Never Happen".

CA	A		# SHOULD NEVER HIT THIS LOCATION

Das erste Ticket wurde bereits im Github-Repository erstellt - eine Diskussion über den „Fehler“, der im Programm behoben werden muss.

Der Entwickler von SilverWingedSeraph schreibt: "Ein Benutzer hatte ein ziemlich ernstes Problem mit dem kryogenen Mischen in Sauerstofftanks mit dem Auftreten einer Fehlermeldung." Wiederholen Sie die folgende Abfolge von Aktionen, um den Fehler im Programm zu reproduzieren:

  1. Erstellen Sie ein Servicemodul.
  2. Fliege zur Mondumlaufbahn.
  3. Beginnen Sie in der Mondumlaufbahn mit dem Mischen in Sauerstofftanks.

„Wenn es ein Problem mit der Verkabelung im Modul gibt, kann der Fehler reproduziert werden. Seien Sie vorsichtig, denn die Situation kann für einen Tester gefährlich sein, der versucht, den Fehler zu reproduzieren “, sagte der Entwickler von Github, nicht ohne Sinn für Humor.

Natürlich meint er den berühmten Unfall mit der Ausrüstung des Apollo 13-Servicemoduls, nach dem das Modul mit außergewöhnlichen Manövern dringend auf die Erde zurückgebracht werden musste.

Bisher ist im Allgemeinen nur eine physische Kopie der Ausdrucke des Mondmodulprogramms erhalten geblieben . Ein Ausdruckbuch wird im Museum des Massachusetts Institute of Technology aufbewahrt.

Der Programmcode wurde von Don Isles geschriebenmit Kollegen. Isles persönlich ist der Autor von etwa 2.000 Codezeilen, die für die Landung des Mondmoduls verantwortlich waren.

Sie können versuchen, Apollo-Steuerbefehle im Emulator auszuführen (dies ist nur ein Computersimulator ohne das Raumschiff selbst).


Apollo-Raumfahrzeug-Computeremulator


Apollo-Emulator-Anweisungen

Apollo Command Module (CM) - und Lunar Module (LM) -Computer landeten automatisch auf der Mondoberfläche. Der Computer steuerte die Motoren und Servomotoren in Echtzeit.


Bordsteuerungscomputer des Apollo-Raumfahrzeugs


Anzeige des Steuercomputers an Bord

Das Management wurde von Apollo Guidance Computer (AGC) durchgeführt. Der Bordcomputer war mit einem Echtzeit-Betriebssystem mit Unterstützung für Multithreading ausgestattet. Er steuerte alle Systeme und empfing Signale von Radargeräten, Teleskopen, Gyroskopen und Beschleunigungsmessern.

Das Buch „ Digital Apollo “ beschreibt gut, wie das Programm die CPU-Zeit priorisiert und zugewiesen hat.



Technische Daten des Bordsteuercomputers des Apollo-Raumfahrzeugs
Die AGC-Zeitstandards wurden von einem Quarzresonator mit einer Frequenz von 2,048 MHz festgelegt. Der Computerspeicher bestand aus 2048 Wörtern wiederbeschreibbarem RAM und 36 K Wörtern ROM mit linearer Abtastung auf mehreren zusammengefügten Kernen. Der Lese- / Schreibzyklus von RAM und ROM dauerte 11,72 μs. Die Wortlänge betrug 16 Bit: 15 Datenbits und 1 Bit Parität. Das 16-Bit-Wortformat des Prozessors enthielt 14 Datenbits, ein Überlaufbit und ein Vorzeichenbit.

Siehe auch:
Apollo Guidance Computer Programming Guide

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


All Articles