[今更誰得] MSX本体のみでシリアル通信してみる(2) #MSX

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

の続きです。

ではさっそく本題です。

必要な道具


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

PC側
  • シリアル-USB変換できるキット等

あと、もちろん、できることならCMTケーブル(データレコーダ接続)やFDDなどの外部記憶装置があるのがベターです。CMTも、昔は面倒に思ったものですが、今はPCの音声入出力でデータレコーダの代わりが出来てしまうので、むしろ外付けFDDとかを用意して繋ぐよりもよっぽどスマートかもしれないと思ったりしますね。

ジョイスティックケーブルは、ATARI9ピン、今で言えばD-Sub9ピンのシリアルケーブルにあたります。PC用のD-Sub9ピンのシリアルケーブルは確実性が高いですがコネクタ形状が微妙にMSXのものと違うらしいので、注意が必要です。

ATARI9ピンは最近ですとFC互換機なんかでも多く採用されていて、入手性を考えるとFC互換機のジャンク品から引っこ抜くというのもありかなと思ったんですが、FC互換機のケーブルは一部のピン(5本)しか結線されていないものとかもあって、利用には注意が必要です。

↓知らずにFC互換機のケーブルを流用しようとして詰んだ例w


上のツイートの人は、メガドライブ→MSXのジョイスティック変換ケーブルを作ろうとしていたようなので、結線が一部しかないと詰むわけですが、今回のようなシリアル通信用であればせいぜい3~4ピンしか利用しないので、そのピンに接続されるように結線を変えれば良いだけなので、FC互換機のコネクタやケーブルでも問題ないかもしれないです。

中の人は、大昔にPSコントローラをMSX(かMDかもう忘れましたww)に変換する自作キットみたいなやつを買ってあったのがあったので、そこからATARI9ピンケーブルだけ持ってきました。

ぶっちゃけ、MSXからの付け外しの面倒をいとわないなら、MSXのポートと下記のキットを直結しちゃえば、ジョイスティックケーブルはなくてもできますかね。

そして、PC側のシリアルUSB変換できるものは、いろいろあるので、お好きな物を使っていただければと思いますが、中の人は実験目的でいろいろ試しやすいので、秋月電子で入手したAE-UM232Rというキットを使っています。
 
AE-UM232R

これ、キットの基盤にピンアサインも書いてあるし、電源共有もPC側のUSBからやってくれるし、電圧レベルの相互変換とかそういう面倒なこともいらないし、あと正論理・負論理の切り替えもPC上のソフトから行えたりするので、いろいろ遊ぶにはちょうどいいなーと思っています。

このAE-UM232Rを、IoT工作なんかでよく使われる(らしい)ブレッドボードに挿して、送受信用のポートからブレッドボード→ブレッドボード用ケーブル→ワニ口クリップ→ATARI9ピンケーブルと繋いで実験してみました。
 



MSXとPCを接続する


接続は、MSX側ポートの9番ピンをAE-UM232RのGNDに、同じく6番ピンをAE-UM232RのRxDに接続します。当たり前ですがMSXは送信側ですが、PCは受信側なので、信号はRxDに繋ぎます。

Joy232のプログラムをMSX上で実行する


あとは、Joy232のプログラム本体をMSX上で実行しなければなりませんが、中の人が入手したCX5Fは残念ながらキーボードの認識がやや微妙なので、実機で直接タイピングは少々面倒です。

ということで、ネットの情報を参考に、MSX Taperというエミュレータ用のテープイメージファイル(CASファイル)を操作するツールを使ってみます。

MSX Taper 1.10 | MSX Resource Center https://www.msx.org/news/software/en/msx-taper-110

Joy232は「.bas」と「.bin」の2つの形式で実行用プログラムが提供されていますが、「.bas」形式のファイルはMSX Taperではうまく認識できませんでしたので、.binファイルを選んで[Add]メニューで追加します。

 


無事に読み込まれたら、[WAV]ボタンをクリックすればMSX実機で直接bloadできる音声ファイルが生成されますので、

BLOAD "CAS:",R

でロードしてJoy232を常駐させれば準備完了です。
Joy232が常駐すると、LPRINT文、LLIST文で出力した内容がMSXのジョイスティックポートからPC側にシリアル送信されます。

ちなみに、Joy232はデフォルトでは9600bpsのシリアル通信なので、LLISTした内容をレシートプリンタのFP-1100に流し込めば、プログラムリストの印刷も出来てしまいます。

ところで、中の人は実はJoy232のアプリ本体はバイナリファイルではなく、BASICのリストから作成しました。理由としてはボーレートやパリティチェックの変更がBASICからのほうが簡単にできそうだったから(=中の人はマシン語がさっぱりできないから)です。

でも、さっきの実験では「.bas」のファイルはMSX Taperでは読み込めませんでした。
なので、変換後の.bas形式のファイルではなく、エミュレータ上で実際に入力してテープに保存した方のファイルから、WAVファイルを作る方法でやってみました。

これには、WebMSXというブラウザオンリーでMSXエミュレータを動かせるツールが激しく便利なので、これがおすすめです。ブラウザでMSXがエミュレートできちゃうとは・・・スゴい時代w
 

WebMSXでBASICのリストを入力、実行する方法ですが、まず入力に関しては、[Alt]+[B]でPC側のテキストをエミュレータ上のキーボード入力として流し込める機能があるので、これを使って、Joy232の公式HPで公開されているBASICプログラムリストをコピペでエミュレータに入力します。

WebMSXの最下部のカセットテープのアイコンでテープイメージの管理ができます。このアイコンをクリック→[New Blank Tape]で空のテープイメージが出来ますので、入力されたプログラムをCSAVEなどで保存します。

そのあとで、[Save Tape Image]を選択するとテープイメージファイル(.cas)がダウンロードされますので、これをMSX Taperで読み込めば、WAVファイル化できます。

ということで、とりあえずMSX→PCへのデータ送信ができることは分かりました。正直、PC→MSXからデータを送れなければ不便かなと思いますが、これについては別の手段での解決を模索したいと思います。

ん?その(1)で言っていたポケコンへの通信はどうした?って感じになっていますが、これは、(3)でチャレンジしてみます。

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


コメント