SCSI機器を使わずにX68とPCをつなぐ方法を考える。
表題のとおりです。
いきなり拡張ボードなんか作れるわけないので、習作としてもう少し簡単な方法から手をつけていく。
- X68(シリアルポート) <-> PC(シリアルポート)
- シリアルクロスケーブル一本で可能
- 双方向通信が可能
- 速度は遅い。38400bps(スタート1ストップ1データ8の10bitだとして、3.75Kbyte/s程度。実際はそれよりさらに遅いと思われ。)
- ソフトウェアは既に有る(ZMODEM/M-Linkなど)
- X68(パラレルポート) <-> PC(パラレルポート)
- ケーブル一本で可能(作成する必要がある)
- X68->PC側へは高速通信が可能(少なくとも3倍は行けるはず)、PC->X68側へはソフトウェアシリアル転送になる為上記より遅い。
- 速度は、PCへの転送は高速、X68への転送は遅い
- X68/Win両方でソフトウェアの作成が必要
やっぱりシリアル転送が簡単ですかね。ZMODEMならファイルリストを使った転送方法がありますし。
でもUSBつかいたいなー。
- X68(パラレルポート/JOYSTICKポート) <-> PC(USB)
これでなんとかなるかなー。
汎用性皆無ですけど。
あとは、X68の場合、カラーイメージユニットをつなぐ端子があり、16bitの入力が可能になってます。
いまいち良く使い方が分からないんですけど。
どうやらCRTCに直結されているようで、CRTCを操作してコマンドをカラーイメージユニットに送り、戻ってきたデータを直接VRAMに取り込む仕様のようです。
ビデオ信号なのでVBLANK期間など非表示期間はデータ転送が行われないなどいろいろ癖があるようです。ハテサテ。
最終手段になりますが、プリンターポートのラッチを外して双方向バッファに交換し、ポートの先に双方向ラッチ回路を取り付け、8bit入出力ポートに改造するなどの荒業もあります。本体ボードの改造になるし、難しいだろうなー。
ジョイスティックポートは壊すとX68の存在価値が0になるほど致命的な故障になる。あまり使いたくないので、できれば他の手段で実現したいものです。
追加
秋月でFT245RLというUSB-パラレル変換モジュールが\980で販売されている。
これをWinPCに刺すと、USB接続のシリアルポートとして見えるらしい。
本物のシリアルポートは、ハードウェア的には1ビットずつデータを入出力する回路ですが、シリアルコントローラはマイコンに対して1バイトずつデータをやりとりするようにできてるので、プログラムを作成するときはバイト単位でデータを処理するようにプログラミングします。
このFT245RLは、ハードウェアはパラレル8bitながらプログラミング上はシリアルポートを扱うのと同様らしいです。
つまり、一番しち面倒臭いUSB絡みのプログラムは一切作る必要はなくなり、Win上からシリアルAPIを叩くプログラムをかけばパラレルデータのやりとりができるという、お手軽極まりない便利アイテムみたいです(Linuxのドライバもあるのかな?)。
あとはX68側の問題で、どうやって8bitパラレルを実現させるかです。
やっぱり、出力(プリンタ)/入力(カラーイメージユニット)の両方で8bit双方向を実現するのが一番簡単みたいです。
さらに追加
FT245RLは、パラレル8bitポート側に入出力合わせて総計384バイトものFIFOバッファがあり、接続するX68側からすればタイミングもなにも考えずとにかくポートのデータ読み書きするだけで高速なデータ転送ができそうです。
この高速性を活かすには...やっぱり拡張ボードをつくるのが一番簡単で速いような気がしてきました(あれ!?。
-
- 8bitの双方向バスバッファx2(データ8bit/ハンドシェイク線4bit)
- 2^23bitのアドレスデコーダ($EC0000から1ワードとればok)
- R/W~ 制御回路
こんなもんで完成しそうです。
これならFPGAつかわなくとも、標準ロジックでなんとか。
でもせっかくアドレスデコーダを作るのなら、パラレルスレーブモードのある40pinのPICも載せて入力ポートつくって、サターンパッドの制御とかもやってみたいな。