拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Apollo-11 阿波罗 11 号制导计算机(AGC)源码仓库解析:Comanche055 与 Luminary099 的组织结构、编译方法与溯源认证

Apollo-11 阿波罗 11 号制导计算机(AGC)源码仓库解析:Comanche055 与 Luminary099 的组织结构、编译方法与溯源认证
  • 嵌入式
  • 固件

【免费下载链接】Apollo-11

Original Apollo 11 Guidance Computer (AGC) source code for the command and lunar modules.

项目地址:https://gitcode.com/GitHub_Trending/ap/Apollo-11
点击查看免费下载

本篇文章以 Apollo-11 仓库主 README(及其挪威语译本 Translations/README.no.md)为骨架,系统讲解阿波罗 11 号制导计算机(Apollo Guidance Computer,AGC)原始源码在仓库中的存放形态:指挥舱软件 Comanche055 与登月舱软件 Luminary099 各自代表什么、整套源码如何通过"文件包含"组织成单体程序、用什么汇编器编译,以及源码的数字化出处与合同审批链条。读完本文,你将能独立定位仓库中的任一 AGC 源码文件、理解其汇编环境约定,并理清这段历史代码的版权与来源背景。

仓库定位:登月计算机的原始源代码

Apollo-11 仓库保存的是阿波罗 11 号任务中两台 AGC 的原始源代码:

  • Comanche055—— 指挥舱(Command Module,CM)的 AGC 程序,属于 Colossus 2A 源码的一部分;
  • Luminary099—— 登月舱(Lunar Module,LM)的 AGC 程序,属于 Luminary 1A 源码的一部分。

这些代码由 Virtual AGC 项目与 MIT 博物馆(MIT Museum)的成员数字化而来。仓库的目标定位非常明确:作为阿波罗 11 号原始源码的存储仓库。因此,任何发现"仓库转录文本与原始扫描件不一致"的问题,都通过 Pull Request 提交;README 中特别提及两类常见差异来源:Luminary 099 与 Comanche 055 的原始扫描件,以及仓库中遗漏的文件。

说明:本仓库顶层 README(README.md)被翻译为数十种语言,Translations/README.no.md 即挪威语译本,内容与英文版一一对应,本文后续引用均以仓库源码作为事实佐证。

两套飞行软件:Comanche055 与 Luminary099

版本与装配记录

README 的署名表给出了两套程序的关键元数据,这是理解整个仓库命名的钥匙:

项目内容
Comanche055源码属于 Colossus 2A——指挥舱(CM)阿波罗 11 号 AGC 程序
Assemble revision 055 of AGC program Comanche by NASA
2021113-051. 10:28 APR. 1, 1969
Luminary099源码属于 Luminary 1A——登月舱(LM)阿波罗 11 号 AGC 程序
Assemble revision 001 of AGC program LMY99 by NASA
2021112-061. 16:27 JUL. 14, 1969

这些装配记录直接印刻在源码文件头中。打开 Comanche055/CONTRACT_AND_APPROVALS.agc,即可看到同样的两行注释:

# Assemble revision 055 of AGC program Comanche by NASA # 2021113-051. 10:28 APR. 1, 1969

而在 Luminary099/README.md 的引言中,还特别注明了一个容易误读的细节:"16:27 JULY 14,1969" 是硬拷贝(hardcopy)的制作日期,而非程序修订或装配的日期——也就是说,Luminary 099 这套源码在阿波罗 11 号发射(1969 年 7 月 16 日)前两天的 7 月 14 日才完成最终版硬拷贝装订。

为什么叫 Comanche / Luminary

从文件头注释可以看出,这套 AGC 程序"应被称为Colossus 2A"(这是指挥舱程序的代号),而目录名 Comanche055 中的 "055" 指的是程序装配修订号 055;Luminary099 则对应登月舱程序 Luminary 1A(代号 LMY99)的装配修订 001。文件名与目录名的这种对应关系,正是整个仓库命名的依据。

源码组织:万行代码如何拼成"单体程序"

没有链接器的时代:文件包含即构建方式

Comanche055 与 Luminary099 两个目录下各有上百个.agc文件,但真正决定"构建顺序"的是各自的 MAIN.agc 文件。以 Comanche055 的 MAIN.agc 开头为例,它通过$文件名指令按顺序包含全部源码块,并标注了原始扫描件的页码:

$CONTRACT_AND_APPROVALS.agc # p. 1 $ASSEMBLY_AND_OPERATION_INFORMATION.agc # pp. 2-26 $TAGS_FOR_RELATIVE_SETLOC.agc # pp. 27-35 # p. 36 contains no code. # COMERASE $ERASABLE_ASSIGNMENTS.agc # pp. 37-130 # COMAID $INTERRUPT_LEAD_INS.agc # pp. 131-132 $T4RUPT_PROGRAM.agc # pp. 133-169 ...

Luminary099 侧的结构完全一致,Luminary099/MAIN.agc 同样以$ASSEMBLY_AND_OPERATION_INFORMATION.agc # pp. 1-27起始,依次包含CONTROLLED_CONSTANTS.agc、INPUT_OUTPUT_CHANNEL_BIT_DESCRIPTIONS.agc、FLAGWORD_ASSIGNMENTS.agc等文件。

从仓库背景说明看,这套组织方式并非人为偏好,而是对 20 世纪 60 年代真实开发流程的还原:当年开发团队没有链接器,构建本身就是单体式的(monolithic)。源码的"复用"方式是在他人程序的穿孔卡片组(punched cards)中插入自己的卡片组(实际开发中可能演进为磁带库方式,但原理相同)。文件包含(file inclusion)因此是原始开发方式非常忠实的复现。

按功能划分的代码分区

MAIN.agc 中的注释揭示了源码的自然分区,这些分区与 ASSEMBLY_AND_OPERATION_INFORMATION.agc 开头的SUBROUTINE CALLS(子程序调用表)一一对应。以 Comanche055 为例:

  • COMERASE:可擦除存储分配(ERASABLE_ASSIGNMENTS);
  • COMAID:中断引导(INTERRUPT_LEAD_INS)、T4RUPT、下行链路表、重启、扩展动词、Pinball 数字/名词表、IMU 标定等;
  • COMEKISS:轨道与导航相关程序(P34/P74、R31、R30、稳定轨道等);
  • TROUBLE:各 P 系列任务程序(P11、P20-P25、P40-P47、P61-P67 等);
  • TVCDAPS:数字自动驾驶仪与喷气选择逻辑(TVC 初始化、TVCDAPS、RCS DAP 等);
  • CHIEFTAN:解释器、执行程序(EXECUTIVE)、WAITLIST、轨道积分、再入控制等基础运行环境。

Luminary099 侧对应程序则针对登月任务调整,例如包含 THE_LUNAR_LANDING.agc(月球着陆)、BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc(主点火)、ASCENT_GUIDANCE.agc(上升制导)、THROTTLE_CONTROL_ROUTINES.agc(节流控制)等登月专属模块。

提示:各目录下的 Comanche055/README.md 与 Luminary099/README.md 给出了完整的"源码文件 ↔ 原始页号"对照索引,是快速定位代码在扫描件中位置的第一手工具。

编译方法:yaYUL 汇编器与 Virtual AGC

汇编器的代际沿革

README 的"编译"一节指出:若想编译这套原始源码,请查看 Virtual AGC 项目。这里存在一个重要的兼容性背景(仓库背景说明中明确交代):

  • 原始 AGC 汇编器YUL已不可得;
  • 阿波罗 11 号时代实际已被另一汇编器GAP取代,但 GAP 同样已不可得;
  • 替代汇编器yaYUL接受的源码格式与 YUL/GAP 略有不同,因此本仓库源码已按 yaYUL 的格式进行适配。

换句话说,仓库中的.agc文件是面向 yaYUL 汇编的现代转录版本,而不是当年打在穿孔卡片上的原始二进制形式。这也是每个源文件头部都标注# Assembler: yaYUL的原因——例如 Comanche055/CONTRACT_AND_APPROVALS.agc 头注释中列出的元数据即包含Assembler: yaYUL、Contact: Ron Burkey <info@sandroid.org>、Website: www.ibiblio.org/apollo。

编译前需要知道的限制

在尝试编译前应了解以下几点:

  1. 本仓库只包含.agc汇编源码文本,编译工具链(yaYUL 及配套模拟器)位于 Virtual AGC 项目,不在本仓库内;
  2. yaYUL 汇编时不会生成 GAP 当年产生的交叉引用表(cross-reference tables),因此仓库保留的扫描件(含 GAP 生成的大量表格、按页号交叉引用)仍有独立参考价值;
  3. 页码注释(# p. 1、# pp. 2-26)是为了方便对照扫描件校对而标记的,不影响汇编结果。

贡献与校对:逐字符还原历史代码

由于这套源码是从纸质打印件人工数字化而来,转录过程中不可避免地引入了笔误与差异。仓库的 CONTRIBUTING.md 明确了校对规则,这也正是挪威语 README 中"欢迎提交 Pull Request 修正转录差异"的展开:

  • 注释必须与扫描件完全一致:即使扫描件本身有拼写错误(如SPAECRAFT少了一个 C),转录文本也必须保留该错误,而不是"修正"它;反之,若转录引入了扫描件不存在的错误,则必须修正;
  • 空格规则:单词间用单空格、句子间用双空格、缩进用三空格(个别扫描页例外时以扫描件为准);
  • 空行规则:第 1 列以R0000开头的行其换行必须与扫描件严格一致;不带R0000的行之间最多保留 1~2 个空行,多余空行需删除。

这套规则的背后动机是:仓库追求的是对历史扫描件最大程度的保真,而非对代码"优雅性"的现代重构。

溯源认证:合同、审批与署名

合同背景(源自 CONTRACT_AND_APPROVALS.agc)

README 的"Contract and Approvals"章节内容直接摘录自 Comanche055/CONTRACT_AND_APPROVALS.agc,其正文明确写道:

  • 该 AGC 程序亦应被称为Colossus 2A;
  • 按报告R-577的规定用于指挥舱(CM);
  • 依据 DSR 项目55-23870编写,由 NASA 载人航天中心(Manned Spacecraft Center)通过合同NAS 9-4065资助;
  • 合同相对方为马萨诸塞理工学院(MIT)仪表实验室(Instrumentation Laboratory, Cambridge, Mass)。

提交与审批签名页

同文件的后续部分(对应 README 中的表格)记录了完整的审批链条,日期均为 1969 年 3 月 28 日:

提交/审批人职务日期
Margaret H. HamiltonColossus 编程组长,阿波罗制导与导航28 Mar 69
Daniel J. Lickly任务程序开发主任,阿波罗制导与导航项目28 Mar 69
Fred H. MartinColossus 项目经理,阿波罗制导与导航项目28 Mar 69
Norman E. Sears任务开发主任,阿波罗制导与导航项目28 Mar 69
Richard H. Battin任务开发主任,阿波罗制导与导航项目28 Mar 69
David G. Hoag主任,阿波罗制导与导航项目28 Mar 69
Ralph R. Ragan仪表实验室副主任28 Mar 69

数字化出处与联系人

README 署名表还澄清了版权与来源:本仓库代码为公共领域(Public domain);数字化工作由 Paul Fjeld 依据 MIT 博物馆的硬拷贝图像完成,由博物馆的 Deborah Douglas 安排协调。仓库维护联系人(README 标注)为 Ron Burkey(info@sandroid.org),项目站点为 www.ibiblio.org/apollo;扫描件(经压缩、画质降低)同样可在线获取,若图像难以辨认,可联系索取 Paul 制作的高清原图。

结语

Apollo-11 仓库并不是一个普通的"读源码"项目——它是人类首次登月任务中两套飞行控制软件的最终形态档案。通过本文你可以建立三条清晰的索引线索:按目录(Comanche055 / Luminary099)区分指挥舱与登月舱软件;按 MAIN.agc 的包含顺序还原整套程序的构建逻辑;按页码注释回查原始扫描件。若想进一步动手,可从 Comanche055/README.md 的源码索引出发,结合 Virtual AGC 项目的 yaYUL 汇编器尝试编译,并在 CONTRIBUTING.md 的规则指导下参与转录校对。

  • 嵌入式
  • 固件

【免费下载链接】Apollo-11

Original Apollo 11 Guidance Computer (AGC) source code for the command and lunar modules.

项目地址:https://gitcode.com/GitHub_Trending/ap/Apollo-11
点击查看免费下载
上一篇:GitHub 汉化插件:3分钟让GitHub界面说中文,新手也能轻松玩转
下一篇:Blender 3MF插件:如何让你的3D模型完美适配3D打印工作流?🚀

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

返回列表