アポロ 11 ガイダンス コンピュータ ソースコード アーカイブ
Apollo 11 ガイダンス コンピュータ ソースコード アーカイブ
オリジナル Apollo 11 フライト ソフトウェア デジタル化
アポロ 11 ガイダンス コンピュータ (AGC) のオリジナル ソースコードは、パブリック アーカイブとして利用可能で、人間を月に着陸させるために使用されたアセンブリ言語を詳しく見ることができます。このリポジトリには、コマンド モジュール (Comanche055) と 月面モジュール (Luminary099) の両方のソースコードが含まれており、MIT ミュージアムに保管されているハードコピー スキャンからデジタル化されています。
ソフトウェア バージョンと帰属
このアーカイブは、アポロ 11 ミッションで使用された2つの主要なプログラム バージョンを保持しています:
- Comanche055: コマンド モジュール (CM) 用の AGC プログラムである Colossus 2A のソースコード。このバージョンは 1969 年 4 月 1 日にアセンブルされました。
- Luminary099: 月面モジュール (LM) 用の AGC プログラムである Luminary 1A のソースコード。このバージョンは 1969 年 7 月 14 日にアセンブルされました。
このプロジェクトは、マサチューセッツ工科大学 (MIT) のインストゥルメンテーション ラボラトリが関与し、NASA の有人宇宙センターが後援しています。ソフトウェアは、アポロ ガイダンスおよびナビゲーションのコロッサス プログラム リーダーである Margaret H. Hamilton が率い、Daniel J. Lickly と David G. Hoag などの関係者によって 1969 年 3 月 28 日に承認されました。
エンジニアリングの制約と設計上の決定
ソースコードは、1960年代の実用的かつ極めて制約されたエンジニアリング環境を明らかにしています。AGC は極めて限られたメモリと処理能力で動作していたため、開発者は特定の数学的近似と厳格な時間ウィンドウを採用しました。
数学的近似
注目すべき設計上の決定の一つは、天体位置決めに多項式近似を使用することです。ソース コメントに記載されているように:
THE POSITION OF THE MOON IS STORED IN THE COMPUTER IN THE FORM OF A NINTH DEGREE POLYNOMIAL APPROXIMATION WHICH IS VALID OVER A 15 DAY INTERVAL BEGINNING SHORTLY BEFORE LAUNCH. THEREFORE THE TIME INPUT BY THE USER SHOULD FALL WITHIN THIS 15 DAY INTERVAL.
コードの実用性と "Load-Bearing" コメント
開発者は、ソース コメントで率直かつ曖昧さのない言葉を使い、将来のメンテナンサーにコードの重要または不安定な部分について警告しました。一部のコメントには、** GROUP 6 TEMPORARY USED .. BEWARE ** のような警告や、TC WHIMPER -1 # YES. DONT DO POODOO. DO BAILOUT. のようなよりカラフルな指示が含まれています。
技術的実装と最新のアクセス
アセンブリ言語とハードウェア
アポロ 11 ソフトウェアは、当時 AGC ハードウェア用のハイレベル コンパイラが利用できなかったため、完全にアセンブリ言語で記述されていました。ハードウェア自体は、最初期のデジタル統合回路 (IC) ベースのコンピュータの一つでした。コンピュータとのやり取りは、DSKY (ディスプレイとキーボード) コントロール パネルを介して行われ、これにより宇宙飛行士は数値の「動詞」と「名詞」を入力してコマンドを実行し、アセンブリ コードと直接やり取りする必要がありませんでした。
エミュレーションとコンパイル
オリジナル ソースはハードコピーの転写として提供されていますが、エミュレーションを通じて最新のハードウェアで実行することができます。Virtual AGC プロジェクトは、オリジナル ソースコードをコンパイルし、最新のコンピュータで実行するために必要なツールを提供し、これによりフライト ソフトウェアは元のハードウェア制約を模倣した環境で実行できます。
デジタル保存
デジタル化プロセスは Paul Fjeld が実施し、MIT ミュージアムの Deborah Douglas が調整しました。このリポジトリは、貢献者がプル リクエストを送信して転写エラーを修正できる生きたアーカイブとして機能しており、デジタル ファイルを Virtual AGC プロジェクト スペースで利用可能なオリジナル ソース スキャンと比較することで行われます。