阿爾忒彌斯2號成功完成了算不上真正的繞月之旅,邁出了美國重返月球的重要一步,但一直有很多人質疑,當年阿波羅登月那麼成功、那麼順利,如今怎麼就如此磕磕絆絆呢?
其中的原因不是一句兩句就能講清的,甚至有什麼圖紙全都丟失了之類的說法。
不過,至少程序代碼看起來沒丟!

近日,NASA正式公開了輔助阿波羅11號登月的計算機軟件代碼,任何人都可以在GitHub上查閱、下載。
這次公開的代碼有兩部分,一是“Comanche055”,指令模塊(CM)中的Colossus 2A部分,二是“Luminary099”,登月模塊(LM)中的Luminary 1A部分。都曾用於阿波羅11號的制導計算機(AGC),均採用yaYUL彙編語言。
Comanche055中第一個引人關注的文件是ALARM_AND_ABORT.agc。
文件開頭是常規的代碼說明引言,隨後就是代碼的用途,而且從文件名也能直觀地看出,它用於記錄警報狀態,在必要時點亮警示燈,處理各類中止級警報與非中止類警報。
這些代碼由虛擬阿波羅制導計算機項目(Virtual AGC)團隊與麻省理工學院(MIT)博物館合作完成的數字化處理,都是從印刷本電子化圖片抄錄、改編而來的。
如果你不滿足於只是看看代碼,可以藉助這個Virtual AGC工具,嘗試進行編譯,Windows XP、Mac OS X 10.3、Linux和部分FreeBSD系統都可以跑。



網上還流傳著另一段精彩的代碼示例,來自阿波羅11號導航軌跡計算程序,其中包括最為關鍵的30行彙編代碼,主要是計算正弦、餘弦等超越函數。

20世紀60年代的阿波羅登月計算機,其配置和性能如今看起來不值一提,比如AGC只有3840字節(3.75KB)的內存、69120字節(67.5KB)的存儲,每秒鐘只能執行最多8.5萬條指令。
它的體積和如今一臺桌面遊戲臺式機差不多,達到了61.595 x 31.580×15.174釐米,重量則有31.8公斤。
指令艙部分需要兩個DSKY控制器,登月艙則有一個。

如此簡陋的套件下,科學家和工程師們完成了史無前例的壯舉,著實令人敬仰。
