TM03/TE16のサポート

2003.12.8

TE16って?
Version 7 Unix の Setup Docutment に出てくる TE16 って、 実はただの 1/2 inch の磁気テープユニットのみらしい。 で、コンピュータと接続するためには テープユニット・コントローラーが必要で、 それが TM03 ってわけです。 実際 PDP-11 や VAX-11 から制御するのは TM03 なので、 そのプログラミング情報が手に入らない限り、 手も足も出ない。 (そんな事情は知らないから、 長いこと TE16 で検索しまくっていたんですが)

で、 TM03マニュアル を見つけました。この TM03 って、 もともと PDP-10 のために開発されたものらしくて、 それ故にか Massbus デバイスです。 マニュアルの 1-3 ページに絵があるように、 テープユニットのキャビネットの下半分に 収まっていたらしい。(そんなの分かるか!)

ちなみに、この TE16 を接続できる Unibus デバイスのコントローラもあるらしい(だから混乱したけど)んですが、 Unix では TM03 を制御する ht ドライバしかないので、 TE16Massbus デバイスと理解した方が良いでしょう。


SIMH の DEVICE を書く戦略
で、SIMH にこの TE16 でサポートさせるわけですが、 もちろん SIMH の中をほとんど知らない私ですから、 例によって GODZILLA アプローチ (適当な雛型を持ってきて、 適当に直していく) で臨みます。

SIMH で新しいデバイスをサポートするには、 の DEVICE を書く必要があります。 ソースの中に pdp11_XX.c とかありますよね? あれです。 SIMH の本体は scp.c にあるのですが、 これは起動時に立ち上がる 例のコマンドインタプリターが実装されています。 また、 エミュレータエンジンは PDP-11 の場合 pdp11_cpu.c の中の sim_intr() って関数に記述されています。 で、この2系統の呼び出し、 つまり ATTACH とか DETACH といった SIMH のコマンドを実行する部分、 それから sim_intr() から呼び出される入出力処理エミュレーションの部分を pdp11_XX.c に実装するというお約束になっています。 さらに SIMH には Magnetic Tape Emulation Library というライブラリがあるので、 例のテープイメージファイルへの操作は このライブラリを使って行うのもお約束みたい。 (詳しい話は "Writing a Simulator for the SIMH System" を読んでね)

そこで基本的な戦略なんだけど、、、

まず、テープ周りに関わる部分、 つまり SIMH のコマンドを実行する部分と テープイメージファイルへの操作の部分は、 PDP-10 の RH11/TM03/TU45 のエミュレータである pdp11_tu.c からパチッて来ることにします。 だって磁気テープの物理的な要素まで、 エミュレートするわけではないからね。
で、入出力処理エミュレーションの部分は Massbus デバイスの RP04/RP05/RP06 のエミュレータである pdp11_rp.c からパチッて来ることにします。 コマンド/ステータスレジスタとかの 操作はおそらく一緒だと思うし、、、



PREV   NEXT