阿波罗 11 导航计算机源代码存档

阿波罗 11 导航计算机源代码存档

原始阿波罗 11 号飞行软件已数字化

阿波罗 11 号导航计算机(AGC)的原始源代码以公开存档的形式提供,提供了详细的装配语言视图,用于将人类登陆月球。该仓库包含了指令舱(Comanche055)和登月舱(Luminary099)的源代码,这些源代码是从 MIT 博物馆保存的硬copy扫描件数字化而来。

软件版本和归属

存档保存了阿波罗 11 号任务期间使用的两个主要程序版本:

  • 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 天区间内。

代码实用主义和“承载”注释

开发者在源代码注释中使用了直白、无歧义的语言,以警告未来的维护者注意代码中的关键或不稳定部分。一些注释包含如 ** GROUP 6 TEMPORARY USED .. BEWARE ** 的警告,以及诸如 TC WHIMPER -1 # YES. DONT DO POODOO. DO BAILOUT. 这样的更具色彩的指令。

技术实现和现代访问

汇编语言和硬件

阿波罗 11 号软件完全使用汇编语言编写,因为当时没有可用于 AGC 硬件的高级编译器。硬件本身是最早的基于数字集成电路(IC)的计算机之一。通过 DSKY(显示和键盘)控制面板与计算机进行交互,该面板允许宇航员输入数字“verbs”和名词来执行命令,而无需直接与汇编代码交互。

模拟和编译

虽然原始源代码以硬件副本的转录形式提供,但可以通过模拟在现代硬件上运行。Virtual AGC 项目提供了编译原始源代码并在现代计算机上运行所需的工具,使得飞行软件能够在模拟原始硬件限制的环境中执行。

数字保存

数字化过程由 Paul Fjeld 完成,由 MIT 博物馆的 Deborah Douglas 安排。该仓库作为一个活跃的存档,贡献者可以通过将数字文件与 Virtual AGC 项目空间中提供的原始源扫描进行比较,提交拉取请求以纠正转录错误。

Sources