アポロのプログラムは、銅線で編まれていた

「アポロ11号のコードを読む」のレッスン 2 / 8・約5分

2隻の船に載った2つのプログラムと、打ち上げたら二度と書き換えられないメモリの仕組みを見ます。

このレッスンで学ぶこと

  • 固定メモリと書き換えメモリ

レッスンの内容

月へ行ったのは2隻

アポロ11号は、月を回り続ける司令船コロンビアと、月面へ降りる着陸船イーグルの2隻でした。

イーグルは月面から飛び立ち、もう一度コロンビアに戻ります。

船ごとに、別のプログラム

2隻には同じ型の誘導コンピューターが載っていましたが、中のプログラムは別物でした。

コロンビアはComanche055、イーグルはLuminary099。仕事が違えば必要な計算も違うためです。

月面から飛び立ち、コロンビアへ戻る上昇。これを計算したのはどちらのプログラム?

問題:月面から飛び立ち、コロンビアへ戻る上昇。これを計算したのはどちらのプログラム?

  1. Luminary099(正解)
  2. Comanche055
  3. 地上の管制室のプログラム

解説:上昇するのはイーグル自身なので、着陸船のLuminary099です。降下も上昇も、イーグルの仕事でした。

これがプログラムの正体

細い銅線が小さな輪の列を通り抜けているコアロープメモリ
アポロ誘導コンピューターのコアロープメモリ

写真はコアロープメモリです。小さな輪の列に細い銅線を通して作ります。

輪を通せば1、通さなければ0。プログラムは文字通り「編まれて」いました。

1と0を、銅線で編む

輪をタップして、銅線を通すかよけるかを決めましょう。目標の数ができたら「編み込む」を押してください。

編んだら、もう変えられない

編み上げた銅線は入れ替えられません。飛行中にプログラム本体を直す方法はありませんでした。

そのため、打ち上げ前に完成させて工場で編み込んでおく必要がありました。

○か✕か

○か✕か:飛行中にバグが見つかったら、地上からLuminary099のプログラム本体を書き換えられた。

答え:✕。✕です。プログラム本体は編まれた固定メモリにあり、飛行中は変えられませんでした。地上から送れたのは、書き換えメモリに置くデータです。

書き換えられるのは、ほんの少し

固定メモリは36,864語。計算の途中を書き込める書き換えメモリは2,048語だけです。

位置や速度など飛行中に変わる値は、すべてこの小さな机に置くしかありません。

同じ1語を、2つの名前で

ERASABLE_ASSIGNMENTS.agcには置き場所が1語ずつ決めてあります。

「WAITEXIT」と「EXECTEM1」は同じ1語の別名。同時には動かないWaitlistとExecutiveが分け合っていました。

書き換えメモリの同じ1語に、2つの名前を付けて使い回したのはなぜ?

問題:書き換えメモリの同じ1語に、2つの名前を付けて使い回したのはなぜ?

  1. 2,048語しかなく、置き場所が足りないから(正解)
  2. 名前を覚えやすくするため
  3. 固定メモリの中身を守るため

解説:置き場所が足りなかったからです。同時に使わない値どうしで、同じ1語を分け合いました。

机が小さいと、順番が要る

着陸中は計算や表示などの仕事が次々に来ますが、同時に広げる余裕はありません。

この小さな机をどう分け合ったかが、のちの1202警報の謎を解く鍵になります。

2隻と、編まれたプログラム

  • コロンビアはComanche055、イーグルはLuminary099で動いた
  • プログラムは銅線で編んだ固定メモリにあり、飛行中は変えられない
  • 書き換えメモリは2,048語だけ。同じ1語を別名で分け合った

アポロ11号のコンピューターで、飛行中に書き換えられたのはどれ?

問題:アポロ11号のコンピューターで、飛行中に書き換えられたのはどれ?

  1. 書き換えメモリに置いた位置や速度(正解)
  2. コアロープに編んだプログラム本体
  3. Luminary099の命令の並び

解説:位置や速度の値です。次は、宇宙飛行士がこのコンピューターにどう話しかけたかを見ます。キーボードに文字はなく、使えたのは数字だけでした。

用語

司令船(Command Module)
月を回って待ち、3人を乗せて地球へ帰る船。アポロ11号ではコロンビアです。
着陸船(Lunar Module)
月面へ降りて飛び立つ小さな船。アポロ11号ではイーグルと呼ばれました。
Comanche055(Comanche 055)
アポロ11号の司令船に載ったプログラム。月の周回や地球への帰還を担いました。
Luminary099(Luminary 099)
アポロ11号の着陸船に載ったプログラム。月面への降下や上昇を担いました。
書き換えメモリ(Erasable memory)
計算の途中の値を書き直せるメモリ。アポロでは2,048語しかありませんでした。
コアロープメモリ(Core rope memory)
小さな輪に銅線を通すかよけるかで1と0を表すメモリ。一度編むと変えられません。
誘導コンピューター(Apollo Guidance Computer (AGC))
船の位置と速さを計算しエンジンの向きを決める機器。宇宙飛行士も操作しました。