阿波羅11

指令模塊(Comanche055)和月球模塊(Luminary099)的原始阿波羅11指導計算機(AGC)源代碼。虛擬AGC和MIT博物館的人們進行了數字化處理。目標是成為原始Apollo 11源代碼的回購。因此,對於這個存儲庫中的轉錄和Luminary 099和Comanche 055的原始來源掃描以及我可能錯過的任何文件之間發現的任何問題,PR都是受歡迎的。

請在打開拉取請求前閱讀CONTRIBUTING.md。

編譯

如果您有興趣編譯原始源代碼,請查看虛擬AGC。

歸因

虛擬阿波羅指導計算機

構建狀態特拉維斯CI(Linux)

在六十年代末和七十年代初用於月球任務的阿波羅號太空船實際上是兩種不同的航天器,命令模塊(CM)和月球模塊(LM)。CM被用來讓三名宇航員登上月球,然後再回來。LM被用來將兩名宇航員降落在月球上,而第三名宇航員則在月球軌道上的CM中。

每個航天器都需要能夠在宇航員的協助下在太空中導航,因此需要有一個「導航系統」。該指導系統由麻省理工學院儀器實驗室開發,現在是一家獨立的公司,稱為Charles Stark Draper實驗室。

制導系統的一個重要組成部分是阿波羅指導計算機(簡稱「AGC」)。在任何給定的阿波羅任務中,有兩個AGC,一個用於指揮艙,另一個用於月球艙。這兩個自動增益控制器是相同的,可以互換的,但是他們運行的是不同的軟體,因為太空船所執行的任務是不同的。而且,由AGC運行的軟體隨著時間的推移而變化,以至於後來像Apollo 17這樣的任務中使用的AGC軟體與早期的Apollo 8等任務有所不同。

被認為只是一臺電腦,AGC是由現代標準嚴重動力不足。

AGC規格

  • 2048字的RAM。一個「字」是15位的數據 - 因此只有2位元組(16位)的數據 - 所以總的RAM只有3840位元組。
  • 只讀存儲器36,864字,相當於69,120位元組。
  • 每秒執行最多約85,000條CPU指令。
  • 尺寸:24「×12.5」×6「。
  • 重量:70.1磅。
  • 電源:28V DC 2.5A電流
  • 真正的DSKY。

有時候偶爾會打個招呼,或許比智慧更大的機智 - AGC更像是一臺計算器而不是電腦。但要說這是嚴重低估了AGC的複雜性。例如,AGC是多任務的,所以它可能似乎同時運行多個程序。

指導系統的另一個重要部分是顯示器/鍵盤單元,或者簡稱為「DSKY」。AGC本身就是一個有電氣連接的箱子,沒有任何內置的方法讓宇航員進入。DSKY為宇航員提供了一個訪問AGC的介面。

月球艙有一個單一的DSKY,位於兩個宇航員之間,可以由他們任何一個操作。命令模塊實際上有兩個DSKY。其中一個CM的DSKY只是主要的控制面板,而另一個被放置在用於標記星星或其他地標位置的光學設備附近。

DSKY規格

  • 尺寸:8「×8」×7「
  • 重量:17.5磅。

也許制導系統最重要的部分是慣性測量單位,或簡稱為「IMU」。IMU不斷跟蹤航天器的加速和旋轉,並將這些信息報告給AGC。通過對這些數據進行數學處理,AGC可以一瞬間知道航天器的方位和位置。

這個項目是為了什麼

該存儲庫與虛擬AGC項目的網站相關聯,該虛擬AGC項目提供模擬AGC,DSKY以及制導系統的一些其他部分的虛擬機。換句話說,如果虛擬機(我們稱之為yaAGC)被賦予與真實的AGC原來運行的相同的軟體,並且在阿波羅任務期間提供與真實AGC相同的輸入信號,則它將響應與真正的AGC一樣。

虛擬AGC軟體是開放源代碼,因此可以對其進行研究或修改。存儲庫包含AGC的實際彙編語言源代碼,用於盡可能多的任務,以及用於處理AGC代碼的軟體。主要工具是彙編程序(從源代碼創建可執行代碼)和CPU模擬程序(用於運行可執行代碼)以及模擬外設(如DSKY)。提供了類似的源代碼和工具,為非常不同的放棄計算機居住在月球模塊。最後,我們提供了土星火箭的LVDC計算機或雙子星機載計算機(OBC)能夠找到或創建的任何補充軟體資料,儘管目前這些材料很少。

虛擬AGC是AGC的計算機模型。它並不試圖模仿AGC的表面行為特徵,而是模仿AGC的內部工作。其結果是AGC的計算機模型,其自身能夠在(例如)臺式PC上執行原始的Apollo軟體。在計算機方面,虛擬AGC是一個模擬器。虛擬AGC還提供模擬的中止制導系統(AGS)和(在規劃階段)模擬的運載火箭數字計算機(LVDC)。「虛擬自動增益控制」是一個全面的術語,包括所有這些。

虛擬AGC軟體的當前版本已經設計為在Linux,Windows XP / Vista / 7,Mac OS X 10.3或更高版本(但最好是10.5或更高版本)下工作。它也適用於FreeBSD的至少一些版本。但是,由於我親自在Linux工作,我對Linux版本有最大的信心。

這個項目不適合什麼

虛擬自動增益控制不是一個飛行模擬器,也不是月球著陸器模擬器,甚至不是對阿波羅月球模塊(LM)或命令模塊(CM)控制面板的行為模擬。(換句話說,如果你期望一個現實的LM控制面板突然出現在你的電腦屏幕上,你會感到失望的)。然而,虛擬AGC可以用作這種模擬的一個組成部分,這樣的軟體的開發者鼓勵這樣做。的確,一些開發者已經擁有了!

要求

  • 所有平臺都需要Tcl / Tk。

Linux的

  • 需要Fedora Core 4或更高版本。
  • 需要Ubuntu 7.04或更高版本。
  • 需要SuSE 10.1或更高版本。
  • 已知在Raspbian(樹莓派)上工作2016-05-27。
  • et,大概是cetera。
  • 32位和64位系統已經測試成功。
  • 必須安裝X-Window系統,xterm和gtk +庫。
  • 您將需要正常的gcc C / C ++編譯器工具鏈,以及wxWidgets,ncurses和SDL的開發包(「dev」或「devel」)。

在Fedora 22或更高版本中,您可能會遇到wxWidgets沒有wx-config,而是wx-config-3.0實用程序以及wxrc-3.0與wxrc。只需分別為wx-config和wxrc創建一個符號鏈接

視窗

  • 需要XP或更高版本。32位系統已經測試成功。
  • Vista和Windows 7可能需要解決方法。例如,在Windows平臺上,預計Tcl / Tk安裝程序將創建一個名為wish.exe的文件,但在Windows Vista上,安裝程序會創建一個名為wish85.exe的文件。這防止了虛擬AGC的某些功能工作。解決方法是複製文件c: tcl bin wish85.exe並調用重複的c: tcl bin wish.exe。
  • 已知Windows 98或以前版本不能正常工作。Windows 2000尚未經過測試。
  • 你將需要MinGW編譯器選擇包含g ++編譯器和make的選項(如果提供的話)。
  • 您還需要Msys環境,wxWidgets 2.8.9或更高版本,適用於Windows的POSIX Threads,適用於Windows的GNU readline以及來自MinGW的正則表達式庫,稱為libgnurx。

Mac OS X:

  • 英特爾或PowerPC需要10.4和更高版本
  • 10.2或以前已知不工作。

FreeBSD的:

  • 需要FreeBSD 7.2或更高版本。
  • 需要PC-BSD 7.1或更高版本。
  • 您需要將wxWidgets 2.8.9,GNU readline 6.0安裝到/ usr / local。
  • 必須安裝libSDL

OpenSolaris的

  • 需要OpenSolaris 0811。
  • 代碼只能在這個平臺上部分工作。
  • 您將需要SUNWgnome-common-devel,SUNWGtk,SUNWxorg-headers,FSWxorg-headers,SUNWncurses,SUNWtcl,SUNWtk和SUNWlibsdl
  • 您還需要GNU readline 6.0,wxWidgets 2.8.9(帶有「configure --disable-shared」),Allegro 4.2.2(帶有「configure --enable-shared = no --enable-static = yes」)和把/ usr / local / bin和/或/ usr / local / bin / wx-config鏈接到PATH中。

構建虛擬AGC軟體

Linux的

這些說明具體涉及從2016年8月7日起在64位Linux Mint 17.3上從源代碼構建。我很抱歉讓他們如此具體,但希望他們很容易適應其他Linux環境。

您可能需要安裝通常不安裝的各種軟體包。我發現我必須安裝以下內容,這些內容都可以從標準軟體庫(在Linux Mint中)獲得:

  • libsdl1.2-dev的
  • 好libncurses5-dev的
  • liballegro4.4-dev或liballegro4-dev
  • 克++
  • libgtk2.0-dev的
  • libwxgtk2.8-dev的

要構建,只需「cd」到包含源代碼的目錄中即可

注意:不要「配置」,也不要「安裝」。雖然提供了「配置」腳本,但目前它僅用於設置一些現在已經過時的程序的構建,無論是否運行它,也不管它是成功還是失敗。如果由於比較bin文件而造成構建不完整,那麼可以使用「make -k」來重建以繼續。但是,這可能會掩蓋其他問題。

你會發現這已經創建了一個目錄VirtualAGC / temp / lVirtualAGC /。

要匹配安裝程序的默認設置,請執行以下操作:

您可以製作一個名為「虛擬AGC」的桌面圖標,鏈接到VirtualAGC / bin / VirtualAGC。通常用於桌面圖標的圖像可在VirtualAGC / bin / ApolloPatch2.png中找到。

視窗

運行Msys啟動一個命令shell並輸入你的主目錄。

使用以下命令安裝SDL庫:

構建虛擬AGC所需的所有軟體都將安裝在/ usr / local下,因此最終將使用/ usr / local / bin,/ usr / local / include,/ usr / local / lib等子目錄進行填充。等等。虛擬AGC makefile被硬編碼以承擔這些安裝位置。請注意,您要創建的虛擬AGC二進位文件不會安裝在/ usr / local下。

目前,虛擬AGC二進位包總是使用wxWidgets 2.8.9構建,所以2.8.9是一個安全的選擇。解壓你的主目錄下的壓縮包,cd到這個目錄下,然後執行「./configure」,「make」和「make install」。「配置」步驟將接受各種命令行選項,選擇unicode與ansi,靜態鏈接與動態鏈接等,但默認選項似乎工作正常。

安裝Windows的POSIX線程(「pthreads」)。您可以通過將源代碼壓縮包「cd」解壓縮到所創建的目錄中,然後運行「make clean GC-inlined」命令來執行此操作。這將創建您應該複製到/ usr / local的各種文件,如下所示:將* .dll複製到/ usr / local / bin; 將* .h複製到/ usr / local / include; 將創建的單個libpthread * .a文件複製到/ usr / local / lib中,並將其重命名為libpthread.a。

為Windows安裝GNU readline。您應該可以找到「二進位文件」和「開發人員文件」的zip文件可供下載。它們都應該被下載並解壓到/ usr / local。(也就是說,每個zip文件都包含bin /,include /,lib /等目錄,我們希望將這些目錄合併到/ usr / local / bin /,/ usr / local / include /等目錄中)

安裝一個正則表達式庫。MinGW項目有一個「貢獻」的正則表達式庫(「libgnurx」),你可以使用。下載「bin」和「dev」tarball並將它們解壓到/ usr / local。

如果所有這些都正確完成,您可以構建虛擬AGC,如下所示:

在您的主目錄下解壓縮開發包:

建立它:

在Windows 7上(但不是在XP上),還需要將c: MinGW bin mingwm10.dll複製到yaAGC / VirtualAGC / temp / lVirtualAGC / Resources /。

這將創建一個目錄yaAGC / VirtualAGC / temp / lVirtualAGC /這是「安裝目錄」。這個目錄是可重定位的,需要保留在Msys環境中,所以你可以隨意移動它。無論你真的需要創建一個桌面圖標來運行程序。桌面圖標應指向lVirtualAGC bin VirtualAGC.exe作為可執行文件,並應使用lVirtualAGC Resources的「開始目錄」。通常用於桌面圖標的圖形是lVirtualAGC Resources目錄中的ApolloPatch2.jpg。

Mac OS X

從命令行解壓縮開發快照tarball,如下所示:

打開Terminator dmg文件並將Terminator應用程序拖到您創建yaAGC / above所在的工作目錄中。

從該工作目錄中的命令行,從Terminator.app製作一個tarball:

一旦你有了tarball,你可以刪除Terminator應用程序和它的dmg文件。

從工作目錄(而不是在yaAGC /目錄內)構建虛擬AGC:

在文件夾yaAGC / VirtualAGC / temp /中,您現在可以找到VirtualAGC應用程序。

將VirtualAGC應用程序從yaAGC / VirtualAGC / temp /拖到桌面上。

FreeBSD的

從命令行解壓縮開發快照tarball,如下所示:tar --bzip2 -xf yaAGC-dev-YYYYMMDD.tar.bz2

解壓後會有一個新的名為「yaAGC」的目錄。建立方案:

不要「配置」,不要「gmake安裝」。

你會發現這已經創建了一個目錄yaAGC / VirtualAGC / temp / lVirtualAGC /。

要匹配安裝程序的默認設置,請執行以下操作:

您可以製作一個名為「Virtual AGC」的桌面圖標,鏈接到/ VirtualAGC / bin / VirtualAGC。通常用於桌面圖標的圖像位於/VirtualAGC/bin/ApolloPatch2.png。

解壓縮虛擬AGC快照tarball:

打開yaAGC /目錄並構建:

不要「配置」,不要「gmake安裝」。

你會發現這已經創建了一個目錄yaAGC / VirtualAGC / temp / lVirtualAGC /。

要匹配安裝程序的默認設置,請執行以下操作:

您可以製作一個名為「Virtual AGC」的桌面圖標,鏈接到/ VirtualAGC / bin / VirtualAGC。通常用於桌面圖標的圖像位於/VirtualAGC/bin/ApolloPatch2.png。

不幸的是ACA模擬(操縱桿)程序在這個環境下不起作用。


推薦閱讀:
相關文章