SCSI機器を使わずにX68とPCをつなぐ方法を考える(その3)
プリンタポートについて調べてみた。
- PC側
- データ8本(I/O) - PC起動時は出力!!
- 制御線5本(I) - 5本
- 制御線4本(O) - オープンドレイン出力に4.7Kで5Vにプルアップ
電気的特性は、基本的にLS244等LSバッファと同等のTTLレベルだが、大雑把でマザーボードによって違うのでアテにならないらしい。
- X68側
電気的特性は、LS07/LS244そのもの。
ということで、これらの電気的仕様の違いからケーブル結線のみで直結*1は無理ということがわかった。
X68側の8bit出力がプルアップなしのオープンコレクタなので、途中でなんらかの回路を挟んでプルアップしないとHighをPC側に知らせることができない。
さらにPC側のデータ8本は、基本的に出力となっている。ということは転送ソフトを起動して、パラレルポートを入力にする設定をレジスタに書きこむまでは、データ線をハイインピーダンスにして電気的に切り離す必要がでてくる。
ということで、バス線を4.7KでプルアップしLS244など3ステートバッファで受ける回路を作り、転送ソフト起動後にイネーブルにするという、回路/ソフト両方での対応が必要になってくる。
また、マザーボードにはそもそもパラレルポートがついていなかったり、付いていても入力に対応していないものもある。さらにWin98系ではレジスタを自由に触れたが、2K/XPではバイパスドライバを経由しての操作になるため、OS側のレスポンスの問題もある。さらにWin64では基本的に使えない。問題は山積みである。
わざわざ、出力8+1本/入力1本のI/Fにそこまでする回路を作るのであるならば、ジョイスティックポートに入力を入れるところまで頑張るのもたいした手間ではないですが、プログラムが複雑になります。
他の方法として、プリンタポートを利用した三線式接続〜クロック同期の半二重シリアル通信〜が簡単で、それなりに高速*2だそうなので、そっちに方向転換してみます。
ちなみに、なぜX68側はわざわざLS07のオープンコレクタを使っているかというと、プリンタの電源が入ったままX68の電源を消したり、プリンタ側の電圧が5Vよりも高い場合、プリンタ側からX68側に電流が流れてしまいプリンタポートが壊れてしまう*3のを防ぐためらしい。
ガチョンガチョンいうような、タイプライター時代を彷彿とさせる古いプリンタは、12Vやそれ以上で動いていたりしたのかもしれません。