フォト
2018年12月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
無料ブログはココログ

« Arduino用SJIS漢字フォントライブラリ SDカード版を作成しました | トップページ | ESP-01モジュールにcpm8266を載せてみました »

2018年10月31日 (水)

「Z80-CP/M 2.2 emulator running on ESP8266」を試してみました

DEKOさんが面白そうなこと(RunCPM (Z80 CP/M 2.2 エミュレータ))をやっていたので、
手持ちのESP-WROOM-2(ESPr Developer)で、
別のエミュレータ cpm8266(Z80-CP/M 2.2 emulator running on ESP8266)を試してみました。
cpm8266の存在もDEKOさんのSNSでの投稿記事で知りました(感謝!)。

     2018/11/03  追記
       DEKOさんがcpm8266のコンパイル手順を分かりやすくまとめています。
       チャレンジする方は、こちらの手順を参考にした方が良いでしょう。
        qiita@ht_dekoWSL(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では利用出来ないかもしれません。


公式配布サイト

・cpm8266(Z80-CP/M 2.2 emulator running on ESP8266)
  https://github.com/SmallRoomLabs/cpm8266

Dscn8937

02

先に結果をいうと、完成が高く、問題なく動作しました。


構築とインストール作業について

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

08

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 ..

09

10


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

11

これで、コンパイルとボードへの書き込みが行われます。

CP/M のシリアルポートはデフォルトでは9600bpsに設定されています。
これを変更したい場合は、MakefileのEMULATIONBAUD の設定を変更すれば良いようです。
変更後は再度、make fullでコンパイルと書き込みを行います。

12

私は115200bpsに変更しました。

私の利用しているボードでは書き込み後、
TeraTermにて接続すると起動時が不安定なのか、次のような画面になってしまいます。

13

TeraTermにて次の操作を行うことで正常に利用出来るようになりました。
・ 1) メニュー [編集] - [画面クリア]
・ 2) メニュー [コントロール] - [端末リセット]
・ 3) [Enter]キーを2~3回たたく

14

これで、利用可能状態になりました。

改行コードは下記の設定にしています。

15

CP/Mについては、私は知識がないので、MS-DOSのノリで操作してみました。

16

試行錯誤の上、マイクロソフトBASICが利用出来ました。

17

う~ん、いい感じ
かなり、まともに動作します。

TeraTermでの動作が確認できました。

せっかくなのでスタンドアロンなCP/Mマシンとして動かしてみたいと思い、
以前試したプロペラマイコンのVT100エミュレーション(VGA出力とPS/2キーボード)
利用してパソコン無しで動かしてみました。

ブレッドボードのプロペラマイコン

Dscn8944

シリアルポートを接続して、起動すると問題なく動作しました。

Dscn8941

全体はこんな感じです。
小型のVGAモニタ、PS/2キーボードを接続しています。
部品点数も少なく意外とシンプルな構成です。

Dscn8953

マイクロソフトBASICでスタートレックのゲームプログラムを実行している様子

Dscn8950

ユニバーサル基板に実装すれば、コンパクトなCP/Mマシンが実装出来そうですね。
ケースなんかも作れば小型パソコンが出来そうです。




« Arduino用SJIS漢字フォントライブラリ SDカード版を作成しました | トップページ | ESP-01モジュールにcpm8266を載せてみました »

ESP-WROOM-02」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/571408/67331290

この記事へのトラックバック一覧です: 「Z80-CP/M 2.2 emulator running on ESP8266」を試してみました:

« Arduino用SJIS漢字フォントライブラリ SDカード版を作成しました | トップページ | ESP-01モジュールにcpm8266を載せてみました »