フォト
2019年1月
    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」カテゴリの記事

コメント

こんにちは。

私も貴殿の記事を参考に作成してみました。
コンパイルの部分では、Windowsのファイアウォールに引っかかってトラブったり、ボードに自動書き込み機能が必須だったので苦労しました(USBシリアル&自動書き込み機能付きのボードは貧乏性なので持っていません)。

私は40年ほど前に中古の8インチ片面単密FDDとS-100バスユニバーサル基板を使って最初のCP/Mマシンを製作したのをきっかけとしてマイコン関連の趣味やシステム開発のアルバイトにずいぶん時間を費やすことになりました。
今回作ったものは当時のものを思い出すと笑ってしまう程小さくて感慨が大きいです。
こんなものがあることを紹介して頂いて有難うございます。

ところで質問させて頂きたいのすが、外からこのシステムにファイルを出し入れするにはどうするのが正解でしょうか。

vabenecosiさん

こんにちはです。
コメントありがとうございます。私も、若いころZ80をいじっていたのですが、
こんなちっちゃいのでシステムが完結して動くのを見て、笑っちゃいました。

ご質問について
>外からこのシステムにファイルを出し入れするにはどうするのが正解でしょうか。

cpm8266付属のドキュメントを見た限り、記載が無く、私も方法が分かりません。

ただし、CP/MのMディスクにXMODEMコマンドがあるので、シリアル経由で、
ファイル転送が出来るかもしれません。
TeraTermはXMODEMのプロトコルを使ったファイルの送受信機能があり、
メニュー [ファイル]/[転送]/XMODEMから送信、受信することが出来ます。
私はCP/Mに不慣れで、まだ試していません。

下記のエミュレータでも、ESP-WROOM-2にてCP/Mが動くようです。SDカードにファイル保存出来るようです。ただし、利用可能なRAMが少ないようです。

RunCPM (Z80 CP/M 2.2 エミュレータ)
https://ht-deko.com/arduino/runcpm.html?20181029
のESP8266 (ESP-WROOM-02) への対応に手順等の説明があります。

そう言えば昔、シリアルを通じてPROMライターにデータを送っていましたね。
でもシリアルが使えたとしてもファイルを外の世界と自在にやり取りするのはしんどそうですね。

今、ht-dekoさんのRunCPMについての記事を斜め読みしたところですが、ファイルのやり取りにSDカードが使えそうなところが魅力的です。ESP32上だとCP/Mのメモリの容量が比較的大きいようですので、試してみようと思いました。

そんなことができたとして今更CP/Mで何をするのか、と思う一方で、昔手掛けた8080系のプログラムがCD-ROMにとってあるはずなので引っ張り出していじって見たいなと思ったりもしました。
まあ、ともかくRunCPMを試してみたいと思います。

RunCPM動作しました。
ht-dekoさんの記事に従って手持ちのパーツだけで(といってもマイコンモジュールとSDカードインタフェースだけですが)作ってみました。あっけなくCP/M80システムができてしまいました(ArduinoIDEベースなのでアップロードはスイッチ操作による書き込みモード入りで問題なしでした)。

WindowsPCにSDカードを入れると、(FAT32フォーマットなので当たり前かも知れませんが)フォルダ、ファイルが丸見えですから、ファイルの出し入れは簡単ですね(今後何か予期せぬ問題が起きるかも知れませんが)。

まず、昔アセンブラで作った、組み込み用浮動小数点BASICを探し出してきてコンパイルしてみようと思います。

有難うございました(-> ht-decoさんにも感謝です)。

vabenecosiさん

ご報告ありがとうございます。
SDカードで、パソコンとファイルのやり取りが出来るのはいいですね。
私も、Z80のアセンブルをやっていたので、MSX上でやる方法を模索しています。
ただし、ソースの移植等はアセンブラは厳しいので、C言語 z88dk、BDS Cを使いたいところです。

cpm8266のXMODEMコマンドの実行をを試したのですが、シリアルポート利用でエラーになり、
利用出来ませんでした。
周辺機器のエミュレーション状況の記載が無いので、簡単には出来そうにないです。


コメントを書く

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

トラックバック

この記事のトラックバック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を載せてみました »