後期TX-0命令
目次
Operate Class 命令
opr 命令は、相変わらず「先頭 2bit が 11」であり、他の命令のように 5bit には拡張されていません。
もちろん、「アドレス部分の機能を実行する」のアドレス部分も、16bit のままです。
1960 年の大改造では、互換性を保ったまま拡張が行われていましたが、その後互換性を失っても将来性を得る、という改造が行われています。
ここでは、他の命令と同じく、1966年9月の文書を元にした、互換性のないものを紹介します。
互換性を保ったまま改造された状態も、なかなか巧妙で美しいのですが、それはまた後日お話します。
--- -00 100 --- --- --- sel# SELect
--- -11 001 --- --- --- cll* Clear Left
--- -11 010 --- --- --- clr* Clear Right
--- 1-- --- --- --- --- amb* AC -> MBR
--1 --- --- --- --- --- cla# CLear AC
--- -01 000 --- --- --- EX0# EXternal 0
--- -01 001 --- --- --- EX1# EXternal 1
: : : : : : : :
--- -01 111 --- --- --- EX7# EXternal 7
--- -10 000 --- --- --- cpy# CoPY
--- -10 111 --- --- --- p7h Punch 7th Hole
--- -10 110 --- --- --- p6h Punch 6th Hole
--- -10 100 --- --- --- prt PriNT character
--- -10 001 --- --- --- r1l Read 1 Line
--- -10 011 --- --- --- r3l Read 3 Line
--- -10 010 --- --- --- dis DISplay
--- -00 001 --- --- --- tac* TAC or AC -> AC
--- -00 011 --- --- --- pen* read light PEN 1 and 2
--- -00 010 --- --- --- tbr* TBR -> MBR
--- -00 110 --- --- --- rpf# MBR -> PFR
--- --- --- 0x1 --- --- xmb# XR -> MBR
--- --- --- --- 1-- --- com COMpliment
--- --- --- --- --- 111 anb# LR and MBR -> MBR
--- --- --- --- --- 101 orb# LR or MBR -> MBR
--- --- --- --- --- 01x lmb? LR -> MBR
--- --- --- 01x --- --- mbl? MBR -> LR
--- --- --- --- -1- --- pad Partial ADd
--- -00 111 --- --- --- spf# PFR -> MBR
--- --- --- 100 --- --- shr SHfit Right
--- --- --- 110 --- --- cyr CYcle Right
--- --- --- --- --1 --- cry Partial ADd CaRrY
--- --- --- --- --- 0x1 mbx* MBR -> XR
--- -11 000 --- --- --- hlt? HaLT
3文字のニーモニックの後ろについた記号は、初期の機能との違いを表しています。
何もついていない機能は、基本的には機能・ビットフィールド共にオリジナルと変わっていません。
(ニーモニックや、実行順序などが変更されている場合はあります)
* が付いたものは、オリジナルにもあった機能ですが、ビットフィールドが変更されました。
# が付いたものは、新しい機能です。当然ビットフィールドも新規に作られています。
? が付いたものは、基本的にオリジナルと変わらないのですが、微妙にビットフィールドの構成が変わっています。そのまま動くかもしれませんし、調整が必要かもしれません。
基本的には、調整はあっても機能はすべて残されています。
ただ唯一の例外が iosです。
ios は、周辺機器アクセスのために TX-0 を止める機能で、bit 4 を使っていました。
再編されたビットフィールドでは、bit 4 を含むフィールドを周辺機器アクセス用に割り当てられています。
そのため、ios は明示的ではなくなりましたが、bit 4,5 のいずれか片方が 1 の場合は、TX-0は停止します。
ビットフィールドに x と書かれた個所は、0 でも 1 でも動作します。
ここ、微妙な問題です。たとえば xmb mbl shr syr の4命令は同じビットフィールドですが、 xmb と mbl は同時に実行可能です。しかし、shr と syr は、他の命令と一緒に実行できません。
ところで、今書いた mbl 命令と lmb 命令は、類似命令(動作がちょうど逆)なのに、違うフィールドに割り振られています。この命令だけ特例で、「同時に指定すると、LR と MBR の内容を入れ替える」という動作をするためです。
では、新たに追加された機能をざっと説明しましょう。
レジスタ操作
rpf | Read PFr | PFRをMBRに ORコピー |
---|---|---|
spf | Set PFr | MBRをPFRにコピー |
xmb | Xr -> MBr | XRをMBRにコピー |
mbx | MBr -> Xr | MBRをXRにコピー |
anb | ANd lr,mBr | LRをMBRに ANDコピー |
orb | OR lr,mBr | LRをMBRに ORコピー |
tbr | TBR or mbr | TBRをMBRに ORコピー |
インデックスレジスタ(XR)とプログラムフラグレジスタ(PFR)が新設されたため、レジスタ操作機能が増えています。
OR コピーと書いたものは、コピー先のレジスタの内容と OR したものが残る、と言う意味です。
AND コピーも同様。
PFR は「フラグ」と名付けられていますが、現代のフラグレジスタのように、条件分岐で使用されるわけではありません。
どうやら、プログラム中でなんらかの「状態」を示すのに使った様子。具体的には、呼び出したサブルーチン側でセットし、サブルーチンから戻った後でメイン側で「正しく終了したのか、エラーだったのか」などを把握するのに使ったようです。
複数のビットを順次立てていく、ということもよく行われたため、読み込む場合は「新たな状態との論理和」が取られるようになっているのでしょう。
AND と OR は、1959年5月の改造の際から、さらに改造されています。
元は AC と LR で演算を行って、LR に結果を残していました。
それが、LR と MBR で演算を行い、MBR に残すようになっています。
tbr は以前からある命令ですが、動作が調整され、tac と同じになりました。
以前は tac は ORコピーでしたが、tbr は通常のコピーでした。
テープ機器操作
sel | SELect | 機能を選択 |
---|---|---|
cpy | CoPY | データの読み書き |
新たに接続された、磁気テープドライブを制御する機能です。
sel 機能でアクセス方法などを指示し、cpy 機能で実際のアクセスを行います。
cpy では、LR レジスタを使用し 18bit 単位で読み書きを行います。
sel での方法指定などの詳細は省きます(興味がある方は、テープドライブのプログラミング・マニュアルをご覧ください)。
注意が必要なのは、sel 機能を使用すると、それ以外の機能のビットがすべて無効になることです。
そして、sel を指定するのに必要な 5bit 以外は、sel の機能指定に使用されます。
周辺機器操作
ex0~7 | EXternal 0~7 | 周辺機器のアクセス |
---|
オリジナルで使用していた機器以外に、ユーザーが自由に周辺機器を接続できるようになりました。
機能の詳細は周辺機器に依存しますので、説明はできません。
以上で、すべての追加機能の説明は終わりです。
初期の頃と同じように、増加した opr 機能を組み合わせて「よく使われる」擬似命令も作られているのですが…
ただでさえ量が増えているので、この組み合わせを紹介すると大変なことになります。
参考資料は提示しておきますので、興味のある方は自分で調べてみてください。
もう一回…次回は TX-0 の話から少し離れた落穂ひろい。NOP命令についてです。
参考文献 | |||
NEW ORDERS FOR TX-0 | E. W. Pughe, Jr. | 1959 | MIT |
NEW ORDERS - LLR - SLR | E. W. Pughe, Jr. | 1959 | MIT |
Proposed Revision of the TX-0 Operate Command | J. B. Dennis | 1959 | MIT |
Proposed Alterations of the TX-0 Operate Instruction | J. B. Dennis | 1959 | MIT |
A PROPOSED TAPE SYSTEM FOR THE TX-0 | C. G. Bell | 1960 | MIT |
A MORE POWERFUL OREDER CODE FOR THE TX-0 | Jack B. Dennis | 1960 | MIT |
PROGRAMMING FOR THE MAGNETIC TAPE SYSTEM | 1960 | MIT | |
(No Title:To TX-0 Users) | J. B. Dennis | 1960 | MIT |
THE FUTURE TX-0 INSTRUCTION CODE | J. B. Dennis | 1960 | MIT |
THE TX-0 INSTRUCTION CODE | 1960 | MIT | |
TX-0 INSTRUCTION CODE | 1961 | MIT | |
THE MIDAS ASSEMBLY PROGRAM | 1962 | MIT | |
THE TX-0 INSTRUCTION CODE | 1965 | MIT | |
THE TX-0 INSTRUCTION CODE | 1966 | MIT | |
その他、WEB上の各種ページ |