能書き
PCからMSX0にシリアルコンソール経由でファイル転送するプログラム群です。
PC側はChromebookのLinux環境を想定していますが、正直、Linuxなら多分なんでも大丈夫なんではないかと思います。PC側のプログラムはPythonとodコマンドを利用していますので、それらがなければインストールしておいていただければ動くと思います。Windowsでもodコマンド相当のものがあれば動かせると思いますが検証していません。
シリアルポートのデバイスファイルが /dev/ttyACM0
に割り当たっていることを想定したコードになっていますので、環境によって異なる場合は変更してお使いください。
PCとMSX0はシリアルコンソールが利用できる必要があるため、USBで接続しておく必要があります。
MSX側の受信プログラムはZ88DKを使ってC言語で書いております。プログラムのビルドにはZ88DK環境が必要です。
MSX側の実行環境はDiskBASICになります。ディスクアクセスにファンクションコールを使っていますが、DiskBASICとMSX-DOSではファンクションコールの実行アドレスが異なるため、そのままではMSX-DOSでは実行できません。ソースコードの一部とビルドオプションを変えればいけると思われますが未確認です。
肝心の転送速度は、1KBあたり10秒くらいかかってしまい、はっきり言って遅いです。 あくまで、こんなこともできるんだなというサンプルとしてご参考になりましたら幸いです。
数キロバイトとかの小さいプログラムの転送であれば、コマンド一発でCプログラムのビルドと転送、MSX0側での保存までできるので、それなりに便利に使えると思います。自分は使ってます。
転送用のテキストファイルの内容を使うと、コピーペーストのひと手間ふた手間はかかりますが、WebMSXなどへのファイル転送にも応用できます。
ファイル群の説明
- linuxフォルダ
- PC(Linux環境)上に配置します。パスの通ったフォルダに配置してください。置かれているサンプルコードは、
~/bin
へ配置し、~/bin
にパスが通っていることを前提としているものがありますので、ご注意ください。
- PC(Linux環境)上に配置します。パスの通ったフォルダに配置してください。置かれているサンプルコードは、
- MSXフォルダ
- MSX側に配置する受信プログラムのソースコードや実行ファイル、また受信プログラムをMSX0側で生成するためのテキストファイルなどが含まれています。
linuxフォルダ
ファイル名 | 説明 |
---|---|
build.sh | Cソースコードファイル名(拡張子なし)を指定するとCプログラムをビルドし、転送用のBASICプログラムソースコード+αを生成 |
buildsend.sh | build.sh実行後に、MSX0にバイナリを転送する |
printBinAsBasic.py | 転送用ではなく、MSX0のシリアルコンソールにコピペする用のテキストファイル(BASICプログラムとその前後で実行したいコマンドが含まれる)を生成するプログラム |
printBinAsBasic.sh | printBinAsBasic.py実行のシェル。対象のファイル名を指定して利用する。 |
crebin.bas.txt | 上記のprintBinAsBasicで出力に利用されるテキストファイル。 |
serialSendBin.py | MSX0のシリアルコンソール経由でデータ送信するプログラム。プログラム内で受信プログラムを実行するため、あらかじめ受信プログラムをMSX0側に入れておく必要あり。 |
serialSendBin.sh | 上記のserialSendBin.py実行のシェル。対象のファイル名を指定して利用する。 |
serPri.py | 上記Pythonファイルでインポートされるファイル |
conPri.py | 上記Pythonファイルでインポートされるファイル |
MSXフォルダ
ファイル名 | 説明 |
---|---|
serbinsv.c | 受信プログラムの本体 |
serbinsv.msx | 受信プログラムの実行バイナリ |
serbinsv.msx.bas | 受信プログラムを最初にMSX0に格納するためのBASICプログラム |
mymsx.c/mymsx.h | 主にMSX BIOSを実行するための共通ユーティリティ |
利用手順
MSX側の準備
- PCとMSX0をUSBケーブルで接続します
telnet
等でserbinsv.msx.bas
の内容をコピーペーストします- MSX0側にBASICプログラムが入力、実行されます。
serbinsv.msx saved.
と表示されると転送プログラム(serbinsv.msx
)がディスクに保存完了しています。
Linux側の操作
- 何かしらのバイナリファイルをMSX0に転送したいとき
serialSendBin.sh [転送したいファイル名]
- Cプログラムをビルドしたいとき
build.sh [Cソースファイル名(拡張子なしで指定)]
- Cプログラムをビルドし、ビルド結果のバイナリファイルをMSX0に転送したいとき
buildsend.sh [Cソースファイル名(拡張子なしで指定)]
- 何かしらのバイナリファイルをMSX0にコピペして生成するためのBASICプログラムを作成したいとき
printBinAsBasic.sh [バイナリファイル名]
その他
serbinsv.msx
はBSAVE形式なので、単独でbload"serbinsv.msx",r
で実行することも可能です。
以上
コメント
コメントを投稿