「Z80-CP/M 2.2 emulator running on ESP8266」でのファイル転送
「Z80-CP/M 2.2 emulator running on ESP8266を試してみました」の続きです。
パソコンと cpm8266(Z80-CP/M 2.2 emulator running on ESP8266)間で
ファイルのやり取りの方法の質問があり、私も知りたいと思っていたので、
ちょっと調べてみました。
その際の調査のメモです。
方法としては、XMODEMプロトコルを使う方法があります。
XMODEMは昔、電話回線(モデム利用)でパソコン通信をやっていた頃に
ファイル転送手段として使っていました。
cpm8266では、CP/Mの標準コマンドXMODEMコマンドが正常動作しないようで、
cpm8266の開発者さんが別途、専用コマンドを用意しています。
下記のリンク先に、コマンドの使い方が解説されています。
関連情報
・ Xmodem for CP/M Z80 for CON:
https://github.com/SmallRoomLabs/xmodem80
Windows 10上で試してみる
XMODEMに対応しているTeraTermで試してみたのですが、
XSにコマンドによる、Winfows => cpm8266 は出来たのですが、
XRにコマンドによる、cpm8266 => Winfows は出来ませんでした。
下記のサイトのページの一番下にTeraTermで転送出来ている記載があるので
私の環境に問題がある可能性もあります。
関連情報
・ Homecomputer DDR - cpm8226
・Windows 10上で動くUbuntu環境(WSL)のminicom コマンドで転送成功
環境がちょっとややこしいですが、
minicom コマンドをインストールして使ったところ、転送出来ました。
minicomのインストール
%sudo apt install minicom
XMODEM関連コマンドのインストール
%sudo apt install lrzsz
minicomの使い方、XMODEMの使い方については、下記の情報を参考にしました。
参考にしたサイト
・ シリアル端末ソフト/minicom
・職業としてのプログラミング Linuxでシリアル通信 - Ubuntu+minicom
日本語環境の場合、セットアップメニューが崩れるので
LANGを変更して起動した方が良いです。
minicomのセットアップ
% sudo LANG=c minicom -s
-sオプションを付けて起動すると、初期画面にメニューが表示されます。
管理者権限で起動しないと、シリアルポートのアクセスに失敗します。

[Serial prot setup] を選択してシリアルポートの設定を行います。
WSL環境では、シリアルポートは、
COMn => /dev/ttySn
の対応となります。

[Save setup as dfl]で 設定の保存

[Exit from Minicom]にて一旦、終了します。
minicomでcpm8266を利用する
% sudo LANG=c minicom
日本語環境でも動作しますが、メニューボックス内の表示が崩れるため
英語モードでの利用を推奨します。
また、日本語環境では画面下のステータスバーが表示出来ないようです。
起動後、ENTERキーをたたくと、起動メッセージが表示されます。
minicom を終了する場合は、CTRL-A入力後、Xキーを押します。
XMODEMによるファイル転送
1)Windows 10(Ubuntu) => cpm8266
①cpm8266側でXRコマンドを実行する
a>A:XR F:test.txt
②minicomによるファイル転送
とりあえず、今月のカレンダーを送ってみます。
ubuntu端末をもう一つ起動し、ユーザーホームディレクトリに
% cal > test.txt
と実行し、ファイルを作成しました。
minicomにて、CTRL-X入力後、Sキーを押します。
カーソルキーでxmodemを選択し、ENTERキーを押します。
ファイル選択状態となります。
カーソルキー[↑][↓]でファイルを選択、スペースキーで確定、
カーソル[←][→]で下のメニューのコマンドの選択、ENTERキーで実行します。
[OKay]選択&ENTERキーで転送開始です。
転送状況が表示され、完了したら何かキーを押します。
③転送されたファイルの確認
転送されたファイルを確認すると、ちゃんと転送出来ていました。
中身を表示すると改行コードがlinuxと異なるため、ちゃんと表示出来ませんが、
転送自体は上手くいっています。
2)cpm8266 => Windows 10(Ubuntu)
試しに、GドライブにあるBIO.BASを転送してみます。
①cpm8266側でXSコマンドを実行する
a>A:XS g:bio.bas
これで、cpm8266側は送信待機状態となります。
②minicom側での受信
minicomにて、CTRL-X入力後、Rキーを押します。
カーソルでxmodemを選択し、ENTERキーを押します。

ファイル名を入力し、ENTERキーを押します。
これで転送が始まります。
転送中は、その状況が表示されます。
完了したら、何かキーを押します。 ③転送されたファイルの確認
別端末画面にて、カレントホームにファイルがちゃんとあるのを確認します。
minicomを管理者権限で実行したため、アクセスが権限がないため
sudoコマンドでheadコマンドを実行して、先頭の10行を表示しています。
ちゃんと受信も出来ています。
これで、もう少し使い込めるようになりました。
XMODEMプロトコル、組み込みマイコン用に使いには意外と良いプロトコルかもしれません。
ArduinoにもXMODEMライブラリがあるようなので、ちょっと調べてみたいと思います。
豊四季タイニーBASICでのファイル転送の手段として利用価値がありそうです。
関連記事
最近のコメント