MSXとWindowsで通信してみよう 「ジョイジョイファイルシステム」

「ジョイジョイファイルシステム」とは?

動画

ダウンロード

「ジョイジョイファイルサーバー(Windows)」+「ジョイジョイファイルシステム(MSX)」

接続ケーブルの作成

必要なもの

作り方

※写真のように、ケーブルにQIコネクタを装着するにはこちらのサイトなどを参考にしてください。

使用準備

PC側(Windows)

MSX側

MSX-BASIC拡張コマンド

「ジョイジョイファイルシステム」がインストールされると、BASICから以下の拡張コマンドが使用可能になります。


バージョン表示コマンド

インストールされているバージョンを表示します。正しくインストールされているかどうかの確認に使ってください。


PC → MSX転送コマンド

PC上のファイルを、MSXのメモリやVRAMにロードします。

(「ジョイジョイファイルサーバー」で指定した「ファイルサービングフォルダ」直下にあるものをロードします)


MSX → PC転送コマンド

MSXのメモリやVRAMを、PC上にファイルとして保存します。

(「ジョイジョイファイルサーバー」で指定した「ファイルサービングフォルダ」直下に保存されます)


フロッピーディスク用コマンド

フロッピーディスクのファイルにアクセスするコマンドです。BLOAD用のヘッダを付加せず、純粋なバイナリーファイルとしてセーブ・ロードするものが欲しかったので作りました。

簡易的なエラー処理しかしていないので、大切なディスクには使わないほうが良いかもしれません(^_^;)


VRAM制御コマンド

VRAMアドレスのオフセットを設定するコマンドです。

セーブ・ロード系コマンドの Sオプションで VRAMのセーブ・ロードを行う際、引数で指定できるVRAMのアドレスは0000H-FFFFHの64KBですが、MSX2以降でこのオプションを 1 にすることで、後半のVRAM(10000H-1FFFFH)にアクセスすることができます。


テキスト送信同期モード用コマンド

「ジョイジョイファイルサーバー」(Windows)のテキスト送信ウィンドウに入力された文字列を、MSXにリアルタイム転送するためのコマンドです。

※同期モードがONの状態で他のシリアル通信コマンドを実行しないでください。他のコマンドを実行する際には、必ず _JJINPUT(0) を行って、同期モードをOFFにしてください。
※同期モードがONの状態で通信が遮断された場合、MSX側は通信待ち状態でフリーズしてしまいます。通信を切断する前に、必ず _JJINPUT(0) を行って同期モードを終了させてください。
※同期モード用のプログラムは、BASICワークエリアの「ファイルコントロールブロック(FCB)」の最後に常駐するので、MSX-BASIC の最大ファイル数が0(MAXFILES=0)だとエラーになります。また、同期モードがONの状態で、 OPEN や PRINT#1 などのファイル操作命令を行わないでください(SAVE,LOAD等は大丈夫です)。どうしても利用したい場合、同期モードをONにする前にMAXFILES=2以上にしてください。


汎用送受信コマンド

38400bpsの汎用シリアル通信を行うためのコマンドです。

ターミナルソフトと通信したり、2台のMSXで通信を行う場合などに使ってください。

2台のMSXを繋ぐには、AMP9ピンケーブルを2本用意して、GND(9番ピン)どうしを繋ぎ、あとはお互いに自分の1番ピンを相手の6番ピンに繋いでください。
また、双方が_JJRECV待ち状態になると、デッドロックを起こしてフリーズしてしまいます。双方向通信のプログラムを書く場合は注意してください。


デバッグ用コマンド

ジョイジョイファイルサーバーを使う際の注意点

最後に

38400bpsという(MSXとしては)高速な通信を実現するのは苦労しました。

アセンブラレベルでかなりギリギリのチューニングをやっているため、エラー処理などもほとんど入っていません。

そのため、通信が遮断されたり、予想外のデータが送られてくると、よくフリーズしてしまいます。ごめんなさい(T_T)

とにかく、困ったときはダメ元で「ジョイジョイファイルサーバー」の [×]ボタン を押してみてください。運が良ければ復活するかもしれません(^_^;)

また、開発にあたっては、以下のサイトを大いに参考にさせていただきました。

Joy232
https://hackaday.io/project/18552-joy232

ご意見・ご質問は twitter で @tiny_yarou まで、よろしくお願いします。