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)
    • 接続用USBマイコン回路が必要
    • X68->PC側へはパラレルポート(8bit)で高速通信が可能、PC->X68側へはジョイスティックポートx2(8bit)での高速転送が可能
    • 速度は、高速だと思う。
    • X68/Win/マイコン三種のソフトウェアの作成が必要


これでなんとかなるかなー。
汎用性皆無ですけど。

あとは、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も載せて入力ポートつくって、サターンパッドの制御とかもやってみたいな。