アポロ11号のソースコード

http://upload.wikimedia.org/wikipedia/commons/thumb/c/cb/AGC_user_interface.jpg/300px-AGC_user_interface.jpg
Google Code Blog - Apollo 11 mission's 40th Anniversary: One large step for open source code...

アポロ11号の月面着陸から40周年ということで,最近やたらとアポロ計画関連の話題を見かける。そんな中,アポロ計画にちなんだ話題として Google Code Blog に投稿されたのが上のエントリー。 Google Code 上で公開されている Virtual AGC and AGS プロジェクトの中に, NASA のハードコピーから転記された本物の AGCアポロ誘導コンピュータ)のソースコードがありますよ……とのこと。

このソースコードには,オリジナルのアセンブリコードに記されていたラベルやコメントまでしっかり転記されている。それらの記述に目を通していると,そのコードを書いた人の考えや気持ちが伝わってくるようで面白い。

例えば Lambda the Ultimate などで話題になっているのが [http://code.google.com/p/virtualagc/source/browse/trunk/Luminary099/LUNAR_LANDING_GUIDANCE_EQUATIONS.s?r=258:title=LUNAR_LANDING_GUIDANCE_EQUATIONS] にある次の一節。

# Page 801
	CAF	TWO		# WCHPHASE = 2 ---> VERTICAL: P65,P66,P67
	TS	WCHPHOLD
	TS	WCHPHASE
	TC	BANKCALL	# TEMPORARY, I HOPE HOPE HOPE
	CADR	STOPRATE	# TEMPORARY, I HOPE HOPE HOPE
	TC	DOWNFLAG	# PERMIT X-AXIS OVERRIDE
	ADRES	XOVINFLG
	TC	DOWNFLAG
	ADRES	REDFLAG
	TCF	VERTGUID

テンポラリのコードのまま月まで行ってはる! いやもちろん,実質的に問題の無いコードだからこそ,このような形で残っているのだろう。ただもうちょっと頑張ってもっともらしい事を書いておけば,40年後に総ツッコミを受けるようなことにはならなかったと思うのだけれど。

命名のセンスにも,今とはちょっと違うものが感じられる。 UI ルーチンの名前は [http://code.google.com/p/virtualagc/source/browse/trunk/Luminary099/PINBALL_GAME_BUTTONS_AND_LIGHTS.s?r=258:title=PINBALL] だし,点火ルーチンの名前は [http://code.google.com/p/virtualagc/source/browse/trunk/Luminary099/BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.s?r=258:title=BURNBABY] だ(当時話題になっていた黒人運動家の言葉から引用したらしい)。

#
# THE MASTER IGNITION ROUTINE WAS CONCEIVED AND EXECUTED,
AND (NOTA BENE) IS MAINTAINED BY ADLER AND EYLES.
#
# 		   HONI SOIT QUI MAL Y PENSE
#

"Honi soit qui mal y pense" ――「思い邪なる者に災いあれ」の言葉に,どのような意味が込められているのだろう。このプログラムを担当した Peter AdlerDon Eyles は ,AGC 開発チームの中では最も若い2人組だった(Eyles は当時 23 歳)とのことだから,ベテランばかりの職場の中で若者らしい自己主張をすべく,意味深長な引用をしてみたり,ルーチンに妙な名前を付けてみたり,そういうちょっと青臭いことをしたのかな,と思う。

おまけ

ニコニコ動画にこんな映像がアップされていた。 AGC の概要と当時の技術的背景を知るのに役立つと思う。
D