初期TX-0命令

目次

ハードウェア構造

メモリレジスタトグルスイッチ周辺機器

4つの命令

opr命令詳細

アセンブラ

擬似命令


アセンブラ

ところで、TX-0 のニーモニックはすべて3文字です。

…賢明な方はすでに気づいているかもしれませんが、6bit を1文字として、3文字で18bit。ちょうど TX-0 のワード長と一致するのです。


ぴったり一致していることが重要なので、「3文字まで認識できる」のではなく、3文字ちょうどです。

これは opr 命令で使われる定数にもいえることで、やはりすべて3文字で定義されています。


opr はアドレス部分の数値をビットフィールドとみなすことで命令を出します。

アドレスは8進数で指定します。


つまり、 cll + clr の機能を使いたいときは、次のように書きます。


opr 140000


もっとも、アセンブラなどでは、opr 命令で扱える機能のビット指定を「定数」として持っていました。

そのため、たとえば cll と clr を同時に指定したいときは、


opr cll + clr


と書けば同じ指定になります。


これをさらに推し進め、後にはアセンブラで「擬似命令」が使えるようになりました。

上の指定は、 cla という「擬似命令」に割り振られています。そのため、


opr 140000

opr cll + clr

cla


の3つの行は、同じ意味を持ちます。


定番の組み合わせは結構多かったようで、アセンブラやデバッガでは、最初から組み込みでいくつかの擬似命令を解釈できました。

後には、自分で定数定義したり、マクロ定義することで擬似命令を作り出せるアセンブラも作られています。


擬似命令

それでは、定番の組み合わせと、それに割り振られた擬似命令を紹介します。


まず、opr コマンドの「特定の1つ」を擬似命令に割り振ったものがあります。

opr cll と書くべきところを cll だけで済ませるようにする、というものです。


cll clr com shr cyr tac tbr ios は、定番だったようで擬似命令が作られていました。

この説明は、特に不要と思われますので割愛します。




ところで、先に説明が必要なことが、1つだけあります。

opr 実行時に、MBR がどうなっているか、ということ。


MBR は、メモリと演算部分の橋渡しをするためのレジスタです。しかし、opr 命令ではメモリアクセスは行われません。

そこで、opr 命令実行時には、冒頭で MBR は 0 クリアされます。

このことは、組み合わせ命令を知るうえで重要です。


では、各種ツールで共通して使われていた擬似命令を紹介します。


レジスタ操作

claCLear Accll + clr

AC のビットをすべて 0 にする。


clcClear and Complementcll + clr + com

AC のビットをすべて 1 にする。


lr0LR <- 0mlr

LR を 0 にする。

MBR を LR に転送しているだけです。

先に説明しましたが、opr 命令実行時には、MBR は 0 クリアされていることに注意が必要です。


calClear Ac and Lrcll + clr + mlr

AC と LR を 0 にする。

MBR が 0 であることに注意。


lacLr -> ACcll + clr + lmb + pad

LR を AC に転送。

AC をクリアしてから、LR を MBR に転送。その後、MBR と AC の半加算を行っている。


alrAc -> LRamb + mlr

AC を LR に転送。

AC を MBR に転送してから、MBR を LR に転送している。


lpdLr Partial aDdlmb + pad

AC と LR を半加算。

LR を MBR に転送してから、AC と MBR を半加算している。


ladLr Addlmb + pad + cry

AC と LR を加算。

LR を MBR に転送してから、AC と MBR を半加算し、繰上り処理。


cylCycle Leftamb + pad + cry

左ローテート。

AC を MBR に転送後、AC と全加算する。つまり、AC を2倍している。

この際、opr 命令での全加算では最上位ビットの繰上りが最下位ビットに入るため、シフトではなくローテートとなる。


周辺機器操作

disDISplayios + dis

dis 命令は ios と共に使う必要があったため、あらかじめ組み合わせた擬似命令です。


prtPRinTios + pnt

pnt 命令は必ず ios と同時に発行する必要があるため、組み合わせた擬似命令です。

しかし、擬似命令語は pnt ではないことに注意。


実際、pnt が使われるときは cyr と組み合わされることが多いため、pnt は次の擬似命令に使われています。


pntPriNTios + pnt + cyr

AC から1文字印字し、右ローテートします。


pnaPriNt and clear Acios + pnt + amb + pad
pncPriNt and Compliment acios + pnt + com + amb + pad

AC から1文字印刷後、AC をクリアします。

AC を MBR に転送後、AC と MBR の半加算で「AC クリア」になることに注意。(同じ値同士の XOR は、0 になる)

pnc では、0 クリアではなく、1クリア(全ビットを 1 にする)します。


r1cRead 1line cll + clr + ios + r1c
r3cRead 3line cll + clr + ios + r3c

AC クリア後、AC にテープリーダからのデータを読み込みます。

r1c は 6bit 、r3c は 18bit の読み込みを行います。


r1rRead 1 and cycle Rightcll + clr + ios + cyr
r1LRead 1 and cycle Leftcll + clr + ios + r1c + amb + pad + cry

AC クリア後、テープリーダから 6bit 読み込み、ローテートします。

r1r は右ローテート、r1L は左ローテートです。


「命令は小文字」ルールで書いていますが、この命令だけ、元資料が小文字の際も、必ず L だけ大文字で書かれています。
理由は不明。数字の 1 や大文字の I と区別するためなら、他の命令では l を小文字で書いているのが不自然です。
なにか特別の理由があるのかもしれない、と考え、ここでも同じ表記とします。


p6sPunch Spacecll + clr + ios + p6h

紙テープを1行分空送りします。

AC クリア後紙テープをパンチしていますが、全ビットが 0 なので何もパンチされません。


p6hPunch 6 Holeios + p6h + cyr
p7hPunch 7 Holeios + p7h + cyr

AC から 6bit パンチ後、右ローテートします。

p7h では、7番目の穴も開けます。


p6aPunch 6 hole and clear Acios + p6h + cyr + amb + pad
p7aPunch 7 hole and clear Acios + p7h + cyr + amb + pad

AC から 6bit パンチ後、AC をクリアします。

pna と同じ仕組み。

p7a では、7番目の穴も開けます。


以上が、よく使われていた擬似命令です。

これ以外にも状況に応じて便利な組み合わせが考えられていたようです。




TX-0 は、たった4つしか命令の無いコンピューターです。

しかし、擬似命令まで含めてみてみると、結構命令が多いことに気づくかと思います。実際、これで十分なプログラムが作られていました。


それでも、やはり命令が少ないが故の苦労は多かったようです。

そのため、しばらく後に TX-0 は大改造をされ、命令が大幅に追加になります。


…長くなりすぎましたので、今回はここまで。次回は改造後の命令についてお伝えします。



参考文献
Preliminary Programming for TX-0Earle W. Pughe, Jr.1958MIT
A FUNCTIONAL DESCRIPTION OF THE TX-0 COMPUTERJT.Gilmore,Jr. & H.P.Peterson1958MIT
TX-0 COMPUTER HISTORYJohn A.McKenzie1974MIT
Computer history archiveMIT'50sComputer History Museum
TX-0 COMPUTER (AI FILM #105)MIT'60sMIT CSAIL
その他、WEB上の各種ページ


前ページ 1 2 3 4

(ページ作成 2013-06-26)
(最終更新 2013-07-04)

前記事:TX-0 世界初のホビーマシン     戻る     次記事:後期TX-0命令
トップページへ

-- share --

1000

-- follow --




- Reverse Link -