☰
阿波罗11号制导计算机源码仓库深度解读:Comanche055 指令舱程序与 Luminary099 登月舱程序的数字化归档
2026/9/30 7:33:20 网站建设 项目流程
  • 嵌入式
  • 固件

【免费下载链接】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 开源仓库为对象,系统解读其核心内容:阿波罗11号制导计算机(Apollo Guidance Computer,简称 AGC)面向指令舱(Command Module)与登月舱(Lunar Module)的原始源代码。读完本文,你将理解两套核心程序(Comanche055/Colossus 2A 与 Luminary099/Luminary 1A)的由来与身份、如何使用 yaYUL 汇编器重建源码、仓库的组织结构与参与转录核对的贡献流程,以及其版权归属与历史合约记录。

仓库定位:原始 AGC 源码的权威数字化归档

仓库的定位在 README.md 中写得非常明确:它是阿波罗11号制导计算机原始源代码的归档仓库,涵盖两大模块:

  • 指令舱(Command Module,CM)——对应Comanche055程序,存放于 Comanche055/ 目录;
  • 登月舱(Lunar Module,LM)——对应Luminary099程序,存放于 Luminary099/ 目录。

这些源码由 [Virtual AGC] 团队与MIT Museum(麻省理工学院博物馆)协作完成数字化:原始纸质打印件被扫描成数字图像,再逐行转录为文本源码。仓库设立的目标就是成为阿波罗11号原始源码的「事实标准」存档点。正因为是手工转录,转录文本与原始扫描件之间难免存在出入,因此仓库欢迎任何针对 [Luminary 099] 与 [Comanche 055] 扫描件与转录文本之间差异的 Pull Request,也欢迎补交遗漏的文件。

两套核心程序:Comanche055 与 Luminary099

仓库在 Attribution(归属说明)表中给出了两套程序的身份标识,这是理解整个仓库的关键:

程序所属模块程序别名汇编版本标识
Comanche055指令舱(CM)的 AGCColossus 2AAssemble revision 055 of AGC program Comanche by NASA,2021113-051. 10:28 APR. 1, 1969
Luminary099登月舱(LM)的 AGCLuminary 1AAssemble revision 001 of AGC program LMY99 by NASA,2021112-061. 16:27 JUL. 14, 1969

也就是说,Comanche055 是Colossus 2A程序的第 055 次汇编修订版(1969 年 4 月 1 日 10:28 汇编);Luminary099 则是Luminary 1A程序的 LMY99 汇编(1969 年 7 月 14 日 16:27)。前者负责指令舱的导航、制导与姿态控制,后者承载登月舱的月面下降、着陆与上升制导。

在 Luminary099/README.md 中还可看到登月舱程序硬拷贝上的原始标注:

ASSEMBLE REVISION 001 OF AGC PROGRAM LMY99 BY NASA 2021112-061 16:27 JULY 14,1969 [注意:这是硬拷贝生成的日期,而非程序修订或汇编日期。] ... THIS LGC PROGRAM IS INTENDED FOR USE IN THE LM DURING THE MANNED LUNAR LANDING MISSION OR ANY SUBSET THEREOF.

该标注明确说明此程序用于载人登月任务(或任何子集)中的登月舱。

编译:使用 yaYUL 汇编器重建原始源码

原文档的「编译」一节指向了 [Virtual AGC] 项目——如果你有兴趣把原始源码真正汇编成可运行的 AGC 机器码,需要借助yaYUL汇编器。这里有几点背景值得展开:

  1. 原始汇编器已不可得:Apollo 时代 AGC 使用的汇编器叫YUL,在阿波罗11号时期已被GAP取代,但两者如今都已不可用。
  2. yaYUL 是兼容替代品:yaYUL 接受的源码格式与 YUL/GAP 略有不同,因此本仓库的源码已按 yaYUL 的格式规范编写,目标就是能用 yaYUL 直接汇编。这一点在 Comanche055/README.md 与 Luminary099/README.md 的 Background 一节均有明确说明。
  3. GAP 生成的附表仍有价值:yaYUL 不生成 GAP 时代汇编清单中的交叉引用表(按页码交叉引用),因此即使是已经拿到全部源码文件,查看原始页图像中的 GAP 生成表格依然有参考价值。

此外,仓库根目录的 package.json 提供了 Markdown 格式检查脚本(基于 markdownlint-cli2),用于校验文档排版规范:

{ "scripts": { "lint": "markdownlint-cli2 *.md translations/*.md Comanche055/*.md Luminary099/*.md --config .markdownlint.yml", "lint:fix": "markdownlint-cli2 *.md translations/*.md Comanche055/*.md Luminary099/*.md --config .markdownlint.yml --fix" } }

目录结构与源码组织方式

仓库的两个主目录各自以MAIN.agc为汇总入口,通过文件包含(include)机制把几十个分片源码拼接成一个整体:

  • Comanche055/MAIN.agc 定义了指令舱程序的全部包含顺序;
  • Luminary099/MAIN.agc 定义了登月舱程序的全部包含顺序。

之所以用「包含」而非「分别汇编再链接」,是因为原始开发团队根本没有链接器——整个构建本来就是单体式的(monolithic)。原始项目非常强调代码复用,但复用的方式是把一摞穿孔卡片插到另一摞卡片中的对应位置(实际开发中演变为磁带库中的模块混搭,原理一致)。因此,文件包含法是对原始开发方式非常忠实的还原,只是不再担心把卡片掉在地上。

以 Comanche055/MAIN.agc 为例,指令舱源码被划分为六个逻辑分组:

  • COMERASE:可擦写存储分配(Comanche055/ERASABLE_ASSIGNMENTS.agc);
  • COMAID:中断引导、T4 中断程序、下行链路列表、冷启动与重启、重启表、扩展动词、引脚球名词表、CSM 几何、IMU 补偿包、引脚球按键与指示灯、R60/R62、ANGLFIND、万向锁定规避、KALCMANU 制导、系统测试引导、IMU 校准与对准等;
  • COMEKISS:地面跟踪测定程序(P21)、P34-P35/P74-P75、R31、P76、R30、稳定轨道等;
  • TROUBLE:P11、TPI 搜索、P20-P25、P30-P37、P32-P33/P72-P73、P40-P47、P51-P53、日月星历子程序、P61-P67、SERVICER207、再入词典、再入控制、指令舱姿态、P37/P70、S 波段天线、指令舱月面地标选择等;
  • TVCDAPS:TVC 初始化/执行/质量特性/重启、TVC DAP、TVC 行程测试、TVC 滚转 DAP、MYSUBS、RCS-CSM 数字自动驾驶仪、自动机动、RCS-CSM DAP 执行程序、喷气选择逻辑、指令舱再入数字自动驾驶仪等;
  • CHIEFTAN:下行遥测程序、存储体间通信、解释器(Interpreter)、固定常量池、解释性常量、单精度子程序、执行程序(Executive)、等待列表(Waitlist)、经纬度子程序、行星惯性定向、测量纳入、圆锥子程序、积分初始化、轨道积分、飞行中对准例程、动力飞行子程序、自由落体时间、恒星表、AGC Block Two 自检、相位表维护、重启例程、IMU 模式切换、KEYRUPT/UPRUPT、显示接口例程、服务例程、报警与中止、更新程序、RT8 操作码等。

分组结构在 Comanche055/ASSEMBLY_AND_OPERATION_INFORMATION.agc 开头的「SUBROUTINE CALLS」清单中也有系统罗列,它本身就指明了各子程序的组织关系。登月舱一侧的组织方式与之对应,完整索引见 Luminary099/README.md 的 Source Code Index 表(含 GAP 生成表格页码 89、1511-1743)。

参与贡献:转录核对与格式规范

仓库的贡献入口是 CONTRIBUTING.md,其核心工作不是写新功能,而是校验转录正确性:由于源码是从纸质打印件手工数字化而来,转录过程会无意引入错字和偏差,因此源码必须被修正到与扫描打印件一致。核对内容包括:

  • 注释必须与扫描件逐字一致:包括原作者笔误(如扫描件印成SPAECRAFT而转录误改为SPACECRAFT,则必须改回SPAECRAFT)也应保留,不得「好心纠正」;
  • 空格规范:注释中字符间空格应对齐扫描件,通常规则是:新词单空格、新句子双空格、缩进三空格,但若扫描件本身只有单空格则随扫描件;
  • 换行规范:第 1 列带R0000的行必须与扫描件完全一致;不带R0000的换行最多保留 1~2 个空行;源码图像中的空行来源于第 8 列未打印的数字——2 强制双倍间距(单个空行)、3 强制三倍间距(两个空行),4-8 有定义但从未使用。

格式层面要求使用 Tab 缩进、Tab 宽度为 8、去除行尾空白。提交 PR 前务必确认改动与扫描件一致。

版权归属与来源说明

原文档的 Attribution 表格是了解代码出处的权威信息源:

条目内容
版权(Copyright)公有领域(Public domain)
Comanche055Colossus 2A 源码的一部分,即阿波罗11号指令舱(CM)的 AGC;汇编版本标识见上文
Luminary099Luminary 1A 源码的一部分,即阿波罗11号登月舱(LM)的 AGC
汇编器(Assembler)yaYUL
联系(Contact)Ron Burkey<info@sandroid.org>
网站(Website)www.ibiblio.org/apollo
数字化(Digitalisation)源码转录自 MIT Museum 硬拷贝的数字图像;数字化由 Paul Fjeld 执行,由博物馆的 Deborah Douglas 协调安排

每个源码文件的文件头注释也都带有同样标准的元信息块(Copyright、Filename、Purpose、Assembler、Contact、Website、Mod history),例如 Comanche055/CONTRACT_AND_APPROVALS.agc 与 Comanche055/ASSEMBLY_AND_OPERATION_INFORMATION.agc 均可印证。若扫描图像不清晰,可联系 Ron Burkey 获取 Paul Fjeld 制作的高质量原图。

合约与批准记录(Contract and Approvals)

该节内容直接派生自 Comanche055/CONTRACT_AND_APPROVALS.agc 的第 1 页硬拷贝标注,记录了程序的官方身份与授权链条:

  • 本 AGC 程序在官方文档中亦称为Colossus 2A;
  • 该程序按R-577 报告的要求用于指令舱(CM);
  • 程序在 DSR 项目55-23870下编制,由美国国家航空航天局载人航天器中心通过合同NAS 9-4065资助,执行方为麻省理工学院(MIT)仪器实验室,马萨诸塞州剑桥。

提交人(Submitted by):

姓名角色日期
Margaret H. HamiltonColossus 编程负责人,阿波罗制导与导航1969 年 3 月 28 日

批准人(Approved by):

姓名角色日期
Daniel J. Lickly任务计划发展总监,阿波罗制导与导航计划1969 年 3 月 28 日
Fred H. MartinColossus 项目经理,阿波罗制导与导航计划1969 年 3 月 28 日
Norman E. Sears任务发展总监,阿波罗制导与导航计划1969 年 3 月 28 日
Richard H. Battin任务发展总监,阿波罗制导与导航计划1969 年 3 月 28 日
David G. Hoag总监,阿波罗制导与导航计划1969 年 3 月 28 日
Ralph R. Ragan副总监,仪器实验室1969 年 3 月 28 日

多语种文档与本地化

仓库的 README.md 通过 Translations/ 目录维护了大量语言的翻译版本(包括本文所基于的尼泊尔语版 Translations/README.ne.md、简体中文版 Translations/README.zh_cn.md、繁体中文版 Translations/README.zh_tw.md 等),CONTRIBUTING.md 同样提供多语种翻译。这使不同语言背景的开发者都能无障碍理解仓库的定位、编译方式与贡献规范。

进一步深入阅读

若想继续深入,建议按以下路径阅读仓库:

  1. Comanche055/README.md:指令舱源码完整索引(按页码列出全部.agc文件及其分组);
  2. Luminary099/README.md:登月舱源码完整索引与硬拷贝标注原文;
  3. Comanche055/MAIN.agc与Luminary099/MAIN.agc:理解单体式包含构建的装配顺序;
  4. Comanche055/ASSEMBLY_AND_OPERATION_INFORMATION.agc:SUBROUTINE CALLS 清单,摸清子程序间的调用关系;
  5. Comanche055/CONTRACT_AND_APPROVALS.agc:合约与批准记录的源码原文。

这套源码既是航天史的重要史料,也是理解 20 世纪 60 年代实时嵌入式软件工程实践(单体构建、文件包含式模块复用、可擦写存储管理、解释器设计)的绝佳标本。

  • 嵌入式
  • 固件

【免费下载链接】Apollo-11

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

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

相关推荐

上一篇:STL视觉预览引擎:5分钟解决3D模型文件管理痛点
下一篇:STL文件可视化革命:告别黑盒模型,拥抱即时预览新时代

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询