[MSX0] シリアルコンソール経由でファイル転送するプログラム #MSX #MSX0 12月 19, 2023 リンクを取得 Facebook Twitter Pinterest メール 他のアプリ - [能書き](#能書き) - [ファイル群の説明](#ファイル群の説明) - [linuxフォルダ](#linuxフォルダ) - [MSXフォルダ](#msxフォルダ) - [利用手順](#利用手順) - [MSX側の準備](#msx側の準備) - [Linux側の操作](#linux側の操作) - [その他](#その他) ## 能書き 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`にパスが通っていることを前提としているものがありますので、ご注意ください。 - 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`で実行することも可能です。 以上 コメント
コメント
コメントを投稿