TX-0の操作方法
目次
コンソール操作の方法
メインコンソールは、一応実機の写真などを元に構成していますが、エミュレータが(今のところ)対応していない機能に関連する表示などは省略しています。
また、詳細がわかる写真は 58年時点のもの(右上図)しかなく、おそらく最終形の写真(右下図)は細部が確認できません。
そこで、増えた表示パネルは増やされたレジスタのものだろう…などと想像しながら作っています。
なんらかの変化があったことは間違いないのですが、その変化が何であったか、十分な資料が残っていません。
TX-0 実機は保存されているから、MIT博物館で見てこられればいいのですけどね (^^;
2進数と8進数
TX-0 のメインコンソールは、情報の表示も入力も、2進数で行います。
一方、TX-0 関連の情報は基本的に、8進数で表記されます。
2進数は、3桁づつ区切ることで簡単に8進数に変換できます。
そのため、メインコンソールで2進数を扱う部分は、必ず3つごとに隙間があけられています。
2進数は、1の次で桁が大きくなります。(0,1の2種類で桁が進むので、2進法)
普段我々が使う10進数と同じように、右側に小さな桁を書き、左に行くにしたがって大きくなります。
なので、3桁の2進数では、右から、1の位、2の位、4の位となります。
101 という2進数があった場合、4の位と1の位が 1 なので、4+1で5を意味します。
111 ならば、4+2+1で7を意味します。
対応表を書くと次のようになります。(コロン (:) の左側が2進数、右側が10進数)
000:0 001:1 010:2 011:3 100:4 101:5 110:6 111:7
それほど難しくない規則ですし、8種類しかないので丸暗記もできます。
2進数3桁で「8」を表す方法はありません。
そのため、2進数3桁は、7の次で桁が大きくなる「8進法」で表記するのが簡単です。
これが、TX-0 で基本的に8進法が使用されている理由です。
各部の詳細
各部分の「意味」を説明します。
知らなくてもゲームを遊ぶことはできます。
しかしこのエミュレータは、当時のゲームを見たくて作ったものですが、ちゃんと「TX-0 のだいたいの機能を」網羅しています。
詳細を知っていれば、新しいプログラムを作成することも可能です。
メインコンソール左側
コンソール左側は、主に TX-0 の内部に関連した機能が集められています。
プログラムからは操作できない、内部的なレジスタを表示したり、動作モードを切り替えたり、などです。
内部状態パネル
58年の写真からは、上部の2つのパネルに、各種動作状況のインジケーターがまとめられているのが読み取れます。
しかし、エミュレータでは不要な機能を省き、1つにまとめています。
このパネル内の表示は、左から次のようになっています。
・IR および IR EXT。
実行中の命令です。58 年時点では IR (Instruction Register) は 2bit でしたが、59年の改造で 5bit になっています。
58年の写真では IR は2つのランプしかありません。最終形の写真では詳細が確認できませんが、エミュレータでは 5bit表示にしています。
・C R T
C は Cycle 。クロック(当時は Cycle と呼ばれました)が供給され、連続動作中であることを意味します。
R は READ-IN モードであることを意味します。
T は TEST モードであることを意味します。
READ-IN モードは、内部的には TEST モードの拡張です。そのため TESTモードランプも同時に点灯します。
そのため、R が点灯するのは、紙テープ読み込み開始のほんの一瞬だけです。
・PAR
MBR (Memory Buffer Register) は、信頼性の劣る「メモリ」との橋渡し役でした。
そこで、信頼性チェックのためにパリティが用意されていました。
PAR ランプは、MBR のパリティを示します。
・LP
LP 0 と LP 1 の二つがあります。
ライトペン・フリップフロップの状態を示します。
ライトペンフリップフロップは、ライトペンに光が入ると ON になり、TX-0 の命令で「ライトペンに光が入っているか」を調べると OFF になります。
ライトペンは2本あったため、0 と 1 の二つがありますが、エミュレータでは 0 しか(今のところ)対応していません。
・PETR
光学テープリーダ (Photo Electoric Tape Reader) が最後に読み取ったデータ6ビットのうち、下位4ビットを示します。
INDEX REGISTER
60 年の改造で用意された indeX Register (XR) の内容を表示します。
このレジスタは「内部状態」ではなく、プログラムで使用するものですが、後で改造で付けたため例外的に左側に配置されています。
MEMORY ADDRESS REGISTER
MAR は、プログラムから明示的に操作することはないレジスタです。
しかし、メモリアクセスを行う際には、必ずアクセスするアドレスが格納されます。
このパネルは、MAR の内容を表示します。
PROGRAM COUNTER
現在実行している命令のアドレスを示す、PC の内容を表示します。
トグルスイッチ
この下に、トグルスイッチがついています。
58年時点の写真では存在せず、最終形の写真では2つの(大きな)トグルが見られます。
写真からは、これが何のスイッチかは読み取れません。
残された文書から、ライトペンが60年に高機能なものに変更され、通電していると熱を持つために通電スイッチがつけられたことがわかっています。
また、ディスプレイが 61~65 年の間のどこかで改造され、トグルスイッチで機能を切り替えられるようになったことがわかっています。
ディスプレイとライトペンは共に使うものなので、2つの大きなトグルスイッチはこれらの機能だと判断しました。
しかし、ライトペンのスイッチはエミュレーターでは不要なので、実装していません。
・DISPLAY MODE
61 年の命令解説文書には、ディスプレイの原点は中央だと書いてあります。
65 年の命令解説文書には、ディスプレイの原点は左下だが、スイッチで中央に切り替えられる、と書いてあります。
この間の4年間の「どこか」で、改造されてスイッチがつけられたのでしょう。
DISPLAY MODE トグルスイッチは、この切り替えを行うものです。
動作指定ボタン
メインコンソール左最下部には、ボタンが4つ並んでいます。
実機は縦に並んでいましたが、エミュレータでは表示スペースを減らすために2×2に並んでいます。
エミュレータでは紙テープ「イメージ」を使用するだけで、物理的な紙テープがないため、このボタンは作っていません。
・STOP
TX-0 を停止します。
・RESTART
TX-0 を実行モードで動作させます。
・READ IN
TX-0 を READ IN モードで動作させます。
・TEST
TX-0 を TEST モードで動作させます。
現在の動作モードは、メインコンソール左上の CRT 表示で読み取れます。
PETR
本来はPETR の機能ですが、メインコンソール左下に配置しています。
読み込むための紙テープをセットすることが出来ます。
リストから選ぶと、エミュレータに内蔵した紙テープイメージをセットします。
Read File を選ぶと、その隣のファイルボタンでローカルファイルを指定できます。
読み込める紙テープイメージは、bitsaver で公開されているイメージファイルの形式です。
実機での読み込み速度は、1分間に 200~250line だったそうです。紙テープを送る、という物理的な部分がありますので、何もデータが書き込まれていない部分があれば実効速度は低下します。
エミュレータでも読み込み速度を再現していますが、無駄に待つのも無意味なため、「読み飛ばしの部分は含めずに」250line と設定しています。
これは、TX-0 のリーダーがすでに失われているために、別のリーダーで無理やり読み込ませたため。
本来、紙テープは 7bit 記録なので、最上位 bit は常に 1 になっている。
1-7 の穴は、1 が最下位に来て、 7 が最上位にある。(本来の順序と逆)