[今更誰得] MSX本体のみでシリアル通信してみる(3) カシオPB-1000との通信を試す #MSX #カシオ #ポケコン

mobileFF's blog: [今更誰得] MSX本体のみでシリアル通信してみる(2) #MSX https://mobileff.blogspot.com/2022/01/msx2-msx.html
の続きです。

ご興味あるか分かりませんが、能書きだけしか書いていない(1)はこちらです。
 
mobileFF's blog: [今更誰得] MSX本体のみでシリアル通信してみる(1) #MSX https://mobileff.blogspot.com/2022/01/msx1-msx.html

さて、(2)でPCへのデータ送信はできたわけですが、ポケコンへの送信がまだでした。
ポケコンとやりとりするには、レベルコンバータというものを介する必要があるようでして、別の道具が必要になります。

必要な道具


MSX側
  • MSX1以降の本体
  • ATARI仕様のジョイスティックケーブル(5番ピン、6番ピンと9番ピンに結線されているもの)

ポケコン側
  • レベルコンバータ用のIC(ADM3202ANZ)
  • 0.1μF以上のコンデンサ x 2個(今回は1μFのコンデンサを利用)
  • 25ピンシリアル変換コネクタ オス-オス

MSX側はPCの時とほぼ同じですが、レベルコンバータ用のIC(ADM3202ANZ)に+5V電力を供給する必要があるので、ジョイスティックポートの5番ピンの5V出力が必要になります。

ADM3202の回路図・ピンアサインは以下の通りです。



レベルコンバータにコンデンサを接続


用意したコンデンサを一つは1番ピン(C1+)と3番ピン(C1-)、もう一つは4番ピン(C2+)と5番ピン(C2-)に接続します。


MSXとレベルコンバータを接続

MSXのジョイスティックポートの5番ピン(+5V)をADM3202の16番ピン(VCC+)に接続します。
 
ジョイスティックポートの6番ピン(TxD)をADM3202の11番ピン(T1in)に、同じく9番ピン(GND)をADM3202の15番ピン(GND)に接続します。


レベルコンバータとポケコンを接続


レベルコンバータの14番ピン(T1out)を、D-sub25ピンコネクタの3番ピン(RxD)に、同じくレベルコンバータの15番ピン(GND)をD-Sub25ピンコネクタの7番ピン(GND)に接続します。

これで、PB-1000側で受信待ちにして、MSX側からLPRINTなどを使うとデータをポケコン側に転送することが出来ます。

実行の結果は↓です。  



ですが、ポケコンとの通信はいくつか問題がありました。

①9600bps以外に設定すると通信ができない


これは、私ごときでは原因が分からないのですが、Joy232側の設定でボーレートは変更できるのですが、9600bps以外だとPB-1000側で受信できませんでした。

②一度に送るデータ量が多いとBV Error(Buffer overflow)になる


Joy232はおそらくフロー制御機能がないので、受信側が処理で手一杯になっても、送信側に送信を止めてもらう手立てがありません。なので、MSX側の送信ペースがPB-1000側の受信能力を上回ってしまうとエラーになってしまうものと思われます。

LPRINTで文字列を100回ループで送信するプログラムを書いて試したのですが、ループ内でさらに空ループを0~9の10回くらいでも回して待ちが入るようにすると、エラーにならず受信することができました。

所感


MSXとポケコンでのシリアル通信は、昭和の当時であっても、もちろん設備を整えればできないわけではありませんでしたが、MSXではモデム用途以外での純粋なRS232Cインターフェースがほとんどなく、あったとしても高額だったのではないかと思います。

令和の現代ではその実現ハードルはかなり下がりましたよね。良い時代です。



コメント