アポロ誘導コンピュータ
アドレス部で指定されたメモリの内容をAレジスタから減算し、結果をAレジスタに置く。
命令の実装はグループ化された12のステップでなされており、そのステップを「タイミングパルス」と呼ぶ。タイミングパルスはTP1からTP12まである。12のタイミングパルスのそれぞれのグループを命令の「サブシーケンス」と呼ぶ。TC命令のような単純な命令では、12のタイミングパルスを1つのサブシーケンスとして実行する。複雑な命令ではいくつかのサブシーケンスを必要とする。乗算命令 (MP) は8個のサブシーケンスを使用する。最初のサブシーケンスを MP0 と呼び、次の MP1 サブシーケンスは6回反復され、MP3 サブシーケンスで完了する。Block II ではこれが3サブシーケンスに短縮された。
サブシーケンス内の各タイミングパルスは最大5個の「コントロールパルス」を発生できる。コントロールパルスは命令の実際の動作を行わせる信号であり、レジスタの内容をバスに送り出したり、バス上の内容をレジスタに取り込んだりする。
AGCは5種類の割り込みを扱う。
DSRUPTはユーザディスプレイ (DSKY) のアップデートインターバル毎に発生する
ERRUPTはハードウェアの障害や警告の場合に発生する
KEYRUPTはユーザキーボードのキーが押されたときに発生する。
T3RUPTはAGCのリアルタイムクロックをアップデートするタイミングで定期的に発生する。
UPRUPTは16ビットのアップリンクデータがAGCにロードされたときに発生する。
AGCは割り込みが発生すると、それまで実行していたプログラムの実行を中断し、短い割り込みサービスルーチンを実行して、割り込まれたプログラムに復帰する。
AGCは20個の強制カウンタを持っている。それらはメモリの固定の場所に存在し、アップ/ダウンカウンタとシフトレジスタとして機能する。インクリメント(PINC)、デクリメント(MINC)、シフト(SHINC)は通常の命令と命令の間に挿入されるマイクロ命令によって実行される。
割り込みはカウンタがオーバーフローしたときに発生する。T3RUPTとDSRUPTはこのPINCオーバフローの発生をトリガーとして発生する。UPRUPTはSHINCで16ビットぶんシフトしたときに発生する。これはAGCへのアップリンクデータが16ビットシフトし終わったことを示す。
AGCおよびその開発に関する文書:
AGC4 Memo #9, Block II Instructions – 命令セットに関する公式文書
Computers in Spaceflight: The NASA Experience – By James Tomayko (Chapter 2, Part 5, "The Apollo guidance computer: Hardware")
Computers Take Flight – By James Tomayko
The Apollo Guidance Computer - A Users View (PDF) – By David Scott, アポロ飛行士の1人
Lunar Module Attitude Controller Assembly Input Processing (PDF) – By José Portillo Lugo, History of Technology
The MIT AGC Project – 包括的な文書アーカイブがある。 Luminary software source code listing - 着陸船のAGCについて(注意:622MB) Colossus software source code listing - 指令船のAGCについて(注意:83MB)