Github上发布的Apollo 11源代码



2009年7月20日,为纪念登月40周年,将带有阿波罗制导计算机(AGC)机载计算机程序源代码的打印输出数字化并发布到了互联网上。七年过去了-现在,这个计算机历史独特的例子有了第二次生命。如今,汇编器中AGC的源代码全部发布在Github上,可以进行搜索,注释,派生等。

在代码中,您可以找到带有代码12011202的著名错误的调用,这是尼尔·阿姆斯特朗非常担心的,还有更多。

在Github上,Apollo-11资料库迅速每天最受欢迎的资料库列表中排名第一(毫无疑问,在每周评级中,明天它将排名第一)。确实有什么值得一看的。读取一些过程名称(BURN_BABY_BURN-MASTER_IGNITION_ROUTINE.s)和原始代码中的注释尤其有趣

CAF	CODE500		# ASTRONAUT:	PLEASE CRANK THE
TC	BANKCALL	#		SILLY THING AROUND
CADR	GOPERF1
TCF	GOTOP00H	# TERMINATE
TCF	P63SPOT3	# PROCEED	SEE IF HE'S LYING

TC	BANKCALL	# ENTER		INITIALIZE LANDING RADAR
CADR	SETPOS1

TC	POSTJUMP	# OFF TO SEE THE WIZARD ...
CADR	BURNBABY

与许多现代程序一样,该程序具有“临时”代码。

TC	BANKCALL	# TEMPORARY, I HOPE HOPE HOPE
CADR	STOPRATE	# TEMPORARY, I HOPE HOPE HOPE
TC	DOWNFLAG	# PERMIT X-AXIS OVERRIDE

这是1969年流行评论“这个绝不能发生”的版本

CA	A		# SHOULD NEVER HIT THIS LOCATION

第一张票 已在Github存储库中创建-有关“错误”的讨论,需要在程序中进行修复。

SilverWingedSeraph的开发人员写道:“一个用户在氧气罐中进行低温混合时出现了一个相当严重的问题,出现了故障消息。” 要在程序中重现该错误,请重复以下操作序列:

  1. 构建服务模块。
  2. 飞向月球轨道。
  3. 在月球轨道上,开始在氧气罐中混合。

“如果模块中的接线出现问题,则可以重现该错误。小心一点,因为这种情况对于试图重现错误的测试人员可能是危险的,” Github上的开发人员说,这并非毫无幽默感。

当然,他指的是阿波罗13号服务模块设备发生的著名事故,此后必须通过非常规操作将模块紧急返回地球。

通常,迄今为止,保留了月球模块程序打印输出的一个物理副本。一本印刷版的书保存在麻省理工学院博物馆。

程序代码由Don Isles编写与同事。 Isles亲自编写了约2000行代码,负责着陆登月舱。

您可以尝试在模拟器中运行Apollo控制命令(这只是计算机模拟器,而没有航天器本身)。


Apollo航天器计算机


模拟器Apollo模拟器指令

Apollo命令模块(CM)和月球模块(LM)计算机自动降落在月球表面。计算机实时控制电动机和伺服电动机。


阿波罗航天器


车载控制计算机车载控制计算机显示器

管理由Apollo指导计算机(AGC)进行。车载计算机配备了支持多线程的实时操作系统,可控制所有系统,并接收来自雷达,望远镜,陀螺仪和加速度计的信号。

Digital Apollo一书很好地描述了程序如何确定优先级并分配CPU时间。



阿波罗航天器机载控制计算机的技术规范
AGC时间标准由石英谐振器设定,其频率为2.048 MHz。计算机存储器由2048字的可擦写RAM和36 K的ROM组成,并在多个针脚上进行线性采样。RAM和ROM的读写周期为11.72μs。字长为16位:15位数据和1位奇偶校验。处理器的16位字格式包括14个数据位,一个溢出位和一个符号位。

另请参阅:《
Apollo指导计算机编程指南》

Source: https://habr.com/ru/post/zh-CN395973/


All Articles