ThinkPad R31 ポートリプリケーターの修理2020年09月12日 22:44

R31ポートリプリケーター

ノートパソコンはThinkPadをずいぶん長いこと愛用しています。 トラックポイントが付いていてマウスが不要だからです。最近、 Windows 2000の頃に使用していたThinkPad R31をPC-DOS機として復活させました。 PC-DOSをインストールするにはFDDポート接続のディスケット・ドライブが必要ですが、 R31本体にはこのポートが有りません。そこで、ポートリプリケーターの登場になります。 ポートリプリケーターは脱着式で、パラレルポート、シリアルポート、デジタルVGAポート、オーディオ 入出力ポート、EtherNetポートなどに加え、FDDポートが付いて専用ディスケット・ドライブを接続し 使用します。

このところこの組み合わせで使用してきたのですが、脱着レバーを操作しても ポートリプリケーターを取り外すことができなくなってしまいました。どうも脱着メカが 破損したようです。なんとか取り外したところ、振るとカラカラ音がしま ダメ元でリプリケーターを分解してみました。 ねじを回してみると、手応えのないものがあります。イヤな感じです。


内部を見ると、ねじ穴が割れてしまいねじ止めができなくなっていました。 これが原因でガタが生じ脱着メカがうまく動作しなくなってしまったのでしょう。

さて、ねじ穴を修復をするにはプラモデル用のパテなどを盛って作り直しますが、プラモデル用のパテ では強度に不安があります。今回は奮発してBONDICを使ってみました。

これは紫外線を当てると硬貨する樹脂の接着剤です。 樹脂を盛って紫外線を約4秒間当てるだけで硬化します。樹脂を少し盛っては硬化させ、必要な高さにします。 ヤスリなどで整形することができますし、ドリルで穴開けもできます。

実際にやってみました。とても簡単でスピーディーに作業ができます。


これは盛り上げたところ。


ヤスリで高さを調節し、ドリルでねじ穴を開けました。ここまで約15分と行ったところでしょうか。

組見立てて、脱着動作を確認し完成しました。

BONDICは高価ですが、作業性が非常に良く強度もあります。充分に元が取れる素材です。

SBC6809でASSIT09 -- 検討編2020年09月23日 12:54

Vintage ChipさんのSCB6809でASSIST09を制限付きながら動かすことができました。 制限とはPTMが搭載されていないため、トレース機能が使えないことです。 誤動作します。SBC6809には、ACIAのクロックを生成するためにPIC12F1822が使われています。これで PTMの代替えができない物かと検討してみました。

ASSIST09で、PTMをどのように使っているのかを調べてみました。モトローラの 「MC6809-MC6809E マイクロプロセッサ プログラミング マニュアル」に掲載されている ASSIST09のリストを読むと、PTMは2カ所に出てきます。まずは、初期化のところ、
です。 コメントにあるように、PTMのチャネル1をシングルショット動作で8ビットの二つのカウンタとして使います。クロックはEクロックです。もう一カ所は、NMI割り込みが起きたときのルーチン、
です。 次の割り込みのために、カウンタのMSBに7をLSBに1をセットし、RTIでも取ります。この時のPTMの 動作は、モトローラの「M6800ファミリ8ビット・データブック」によると、
の下の図のようになります。 この図の中で、Mは"7"、Lは"1"ですので、Eクロックの立ち下がりを16エッジ((M+1)*(L+1)エッジ)検出すると動作が終わります。 この間、15クロックを検出したら、出力パルスが出力され、これを反転した信号をNMIに入りNMI割り込みが 発生します。LSBにセットされた"1"は、出力パルスの幅です。これをさっ引いた15クロックは何を示して いるのでしょうか?これは、STD命令に続くRTI命令の実行クロック数に一致します。すなわち、RTI命令の次の 命令の始まりでNMI割り込みを発生させることになります。この「次に命令」とは、次にトレースする命令です。 実にスマートなやり方でトレースを実現しています。

PIC12F1822で、STD命令でPTMに何かが書き込まれたら、Eクロックの立ち下がりをカウントし、15クロック目から 16クロック目にNMI割り込みパルスを発生させればなんとかなりそうです。

大筋が見えたので、PICをどう使うか検討しました。 PICに入れる信号は、/WE,/PTM(A000H),D0,E、出力は、/NMIです。Eは、TIMER#0でカウントすることにしました。 そのため、TIMER#0の入力ピンと従来のボーレイトクロックを出力するピンとぶつかるため、 ボーレイトはRA5から取り出すことにしました。その他はRA3が入力専用に注意して割り当てることに。

TIMER#0は、カウント値が"255"から"0"に変化するときに割り込みを発生させるので、これを引っ掛けて /NMIを出力すれば良いでしょう。

さて、結果はどうなるでしょうか。