「Z80-CP/M 2.2 emulator running on ESP8266」を試してみました
別のエミュレータ cpm8266(Z80-CP/M 2.2 emulator running on ESP8266)を試してみました。
cpm8266の存在もDEKOさんのSNSでの投稿記事で知りました(感謝!)。
2018/11/03 追記
DEKOさんがcpm8266のコンパイル手順を分かりやすくまとめています。
チャレンジする方は、こちらの手順を参考にした方が良いでしょう。
qiita@ht_deko - WSL(Windows Subsystem for Linux)で CP/M 8266 をビルドする
2018/11/04 追記
cpm8266では、フラシュメモリの容量が4Mバイト必要みたいです。
250kバイトの仮想フロッピディスク x 15本 = 3,750kバイト
ESP-WROOM-2は、フラッシュメモリが4Mバイトから2Mバイトに変更があったので
最近流通しているESP-WROOM-2では利用出来ないかもしれません。
公式配布サイト
https://github.com/SmallRoomLabs/cpm8266
構築とインストール作業について
cpm8266の構築とインストールは、公式配布サイトに掲載されている
「Installing, Compiling and Running」の手順に従て行いました。
作業にはDebian/Ubuntu環境が必要となりますが、
先日構築したWindows 10上で動くUbntu環境(WSL)を利用しました。
「Installing, Compiling and Running」の手順のコマンドをコピペして、
管理者権限が必要なコマンドはsudoで実行していきます。
$sudo apt-get install git $sudo apt-get install make unrar-free autoconf automake libtool gcc g++ $sudo apt-get install gperf flex bison texinfo gawk ncurses-dev $sudo apt-get install libexpat-dev python-dev python python-serial $sudo apt-get install sed git unzip bash help2man wget bzip2 libtool-bin
esp-open-sdkのコンパイル結構時間がかかりました。
私のcore i5マシンではこのコンパイルに1時間かかりました。
Windows 10上のUbuntuは若干パフォーマンスが悪いかもしれません。
$git clone --recursive https://github.com/pfalcon/esp-open-sdk.git $cd esp-open-sdk $make $export PATH=~/esp-open-sdk/xtensa-lx106-elf/bin:$PATH $cd ..
cpm8266本体のコンパイルとインストール、ボードへの書き込み
Windows 10上のUbuntu環境では、公開サイトの手順ではうまくいきませんでした。
また、esp-open-sdkのバージョンアップに対応するためにパッチを当てる必要がありました。
$sudo apt-get install z80asm cpmtools zip vim-common $git clone https://github.com/SmallRoomLabs/cpm8266.git $cd cpm8266/code $export ESP8266SDK=~/esp-open-sdk $export ESPTOOL=~/esp-open-sdk/esptool/esptool.py $export ESPPORT=/dev/ttyS6 $sudo chmod 666 /dev/ttyS6
環境変数ESPPORTにはESP-WROOM-2をWindows 10に接続した際の
シリアルポートをLinux形式で指定します。
Windows 10からみて、COM6の場合、数字の6をttySの後ろに指定します。
COMn -> /dev/ttySn
の対応となります。
また、アクセス権限も一般ユーザーが利用出来るように変更します。
次にパッチを当てます。そのままではコンパイルエラーとなります。
パッチファイル(diffファイル)は、issues#21にてdrawkulaさんが公開している
cpm8266-master-2-local.diff.gz を当ててからコンパイルします。
・issues#21
https://github.com/SmallRoomLabs/cpm8266/issues/21
パッチ当て作業とコンパイル
$cd ~/cpm8226 $wget https://github.com/SmallRoomLabs/cpm8266/files/2088791/cpm8266-master-2-local.diff.gz $gzip -d cpm8266-master-2-local.diff.gz $cd code $patch -u < ../cpm8266-master-2-local.diff $make full
これで、コンパイルとボードへの書き込みが行われます。
CP/M のシリアルポートはデフォルトでは9600bpsに設定されています。
これを変更したい場合は、MakefileのEMULATIONBAUD の設定を変更すれば良いようです。
変更後は再度、make fullでコンパイルと書き込みを行います。
私は115200bpsに変更しました。
私の利用しているボードでは書き込み後、
TeraTermにて接続すると起動時が不安定なのか、次のような画面になってしまいます。
TeraTermにて次の操作を行うことで正常に利用出来るようになりました。
・ 1) メニュー [編集] - [画面クリア]
・ 2) メニュー [コントロール] - [端末リセット]
・ 3) [Enter]キーを2~3回たたく
これで、利用可能状態になりました。
改行コードは下記の設定にしています。
CP/Mについては、私は知識がないので、MS-DOSのノリで操作してみました。
試行錯誤の上、マイクロソフトBASICが利用出来ました。
う~ん、いい感じ
かなり、まともに動作します。
TeraTermでの動作が確認できました。
せっかくなのでスタンドアロンなCP/Mマシンとして動かしてみたいと思い、
以前試したプロペラマイコンのVT100エミュレーション(VGA出力とPS/2キーボード)を
利用してパソコン無しで動かしてみました。
ブレッドボードのプロペラマイコン
シリアルポートを接続して、起動すると問題なく動作しました。
全体はこんな感じです。
小型のVGAモニタ、PS/2キーボードを接続しています。
部品点数も少なく意外とシンプルな構成です。
マイクロソフトBASICでスタートレックのゲームプログラムを実行している様子
ユニバーサル基板に実装すれば、コンパクトなCP/Mマシンが実装出来そうですね。
ケースなんかも作れば小型パソコンが出来そうです。
関連記事
・ESP-01モジュールにcpm8266を載せてみました
・プロペラでVT100端末の実装
最近のコメント