「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でのファイル転送の手段として利用価値がありそうです。
関連記事
« FUSION-C、MSXの開発環境? (2) | トップページ | 安価なボイスレコーダーをMSX用データレコーダに利用する »
「ESP32・ESP8226」カテゴリの記事
- M5Stackで日本語表示(2)(2020.02.04)
- M5StackでMML単音演奏(2020.01.26)
- M5Stackのビープ音、Tone音の爆音対策(2020.01.22)
- M5stackで日本語表示(2020.01.18)
- M5Stack始めました(2019.12.05)
「MSX・レトロPC」カテゴリの記事
- 不調なMSX PV-7のメンテナンス(2025.02.15)
- MSXのジョイスティックポートを使ったシリアル通信 (2)(2025.02.11)
- キーボードの黄ばみ落とし(2021.01.28)
- MSX関連の書籍を収集中!(2020.06.17)
コメント
« FUSION-C、MSXの開発環境? (2) | トップページ | 安価なボイスレコーダーをMSX用データレコーダに利用する »






たま吉さん
xmodem、minicomの使い方を詳しく説明していただいて有難うございます(xmodemの方はパソコン通信の時代に常用していたはずなのですが、殆ど記憶がありません)。当方でも動作確認できました。
例えが悪いかもしれませんが、難破して無人島に漂着したような感じだったのが、これで本当に安心してcpm8266が使えるようになりました。
取り敢えず部品箱に眠っているAKI-80ボードにかつて製作したプログラムを移植してみようと思います。それを使って、あわよくば、何か役に立つガジェットを作ってみたいと思います。今のマイコンとは速度、大きさの点は比べようもないのでしょうが...。
投稿: vabenecosi | 2019年1月24日 (木) 08時38分
vabenecosiさん
私も今回は勉強になりました。
XMODEMプロトコルは、Arduinoのライブラリがあるので実験したいと思います。
投稿: たま吉さん(管理者) | 2019年1月24日 (木) 09時49分