Apollo 11 導航電腦原始碼封存
Apollo 11 導航電腦原始碼封存
原始阿波羅 11 飛行軟體數位化
阿波羅 11 導航電腦 (AGC) 的原始碼以公開封存的形式提供,讓人們得以詳細了解用於將人類登陸月球的組合語言。該儲存庫包含了指令艙 (Comanche055) 和登陸艙 (Luminary099) 的原始碼,這些原始碼是從 MIT 博物館保存的硬copy掃描件數位化而來。
軟體版本與歸屬
- Comanche055:Colossus 2A 的原始碼,即指令艙 (CM) 的 AGC 程式。此版本於 1969 年 4 月 1 日組裝。
- Luminary099:Luminary 1A 的原始碼,即登陸艙 (LM) 的 AGC 程式。此版本於 1969 年 7 月 14 日組裝。
此專案是麻省理工學院 (MIT) 儀器實驗室的合作項目,由 NASA 的載人航天中心贊助。軟體由 Margaret H. Hamilton 領導,她是阿波羅導航與導引的 Colossus 程式領導人,並經 Daniel J. Lickly 和 David G. Hoag 等官員於 1969 年 3 月 28 日批准。
工程限制與設計決策
原始碼揭示了 1960 年代務實且高度受限的工程環境。由於 AGC 在極其有限的記憶體和處理能力下運行,開發者採用了特定的數學近似和嚴格的時間窗口。
數學近似
一個顯著的設計決策是使用多項式近似來進行天體定位。如源碼註釋所註明:
月球的位置以第九次方多項式近似的形式存儲在電腦中,此近似在發射前不久開始的 15 天區間內有效。因此,使用者輸入的時間應落在此 15 天區間內。
代碼實用性與「Load-Bearing」註釋
開發者在原始碼註釋中使用直白、無歧義的語言,以警告未來的維護者注意代碼中的關鍵或不穩定部分。一些註釋包含如 ** GROUP 6 TEMPORARY USED .. BEWARE ** 的警告,以及更具顏色的指令,例如 TC WHIMPER -1 # YES. DONT DO POODOO. DO BAILOUT.。
技術實現與現代訪問
組合語言與硬體
阿波羅 11 軟體完全以組合語言編寫,因為當時沒有適用於 AGC 硬體的高階編譯器。該硬體本身是最早的基於數字積體電路 (IC) 的電腦之一。與電腦的互動是透過 DSKY (顯示器和鍵盤) 控制面板進行的,這使得宇航員可以輸入數字「動詞」和名詞來執行指令,而無需直接與組合語言代碼互動。
模擬與編譯
雖然原始碼是以硬copy的轉錄形式提供,但可以透過模擬在現代硬體上運行。Virtual AGC 專案提供了編譯原始碼並在現代電腦上運行所需的工具,使得飛行軟體能夠在模擬原始硬體限制的環境中執行。
數位保存
數位化過程由 Paul Fjeld 完成,並由 MIT 博物館的 Deborah Douglas 安排。該儲存庫作為一個活躍的檔案庫,貢獻者可以提交 pull request 來修正轉錄錯誤,方法是將數位檔案與透過 Virtual AGC 專案空間可取得的原始碼掃描件進行比較。