M5Stack:MZ-80C エミュレータ!

MZ-80Cエミュレータ M5Z-80は、MZ-700エミュレータ M5Z-700 と統合しました。以下の情報・操作方法は、統合後の物とは異なっているところがあります。


M5Stack の画面解像度は 320 x 240。つまり、MZ-80K/Cシリーズの画面サイズ 320 x 200がすっぽりと納まります。

MZ-80Cは、去年ミニチュア版が発売されたことでも話題になりましたね。

手のひらサイズのシャープ「MZ-80C」! ハル研究所のレトロミニパソコン「PasocomMini」を見てきた
http://ascii.jp/elem/000/001/488/1488379/

M5Stack を手にしてから、いつの日か、MZ-80K/Cエミュレータをこのサイズで動かせたらいいな、でもM5Stackはメモリ少ないし無理だよな…。と思ってました。

そこに登場した M5Stack FIRE!

PSRAMを4MB搭載していて、これをメモリとして使うことができるみたいです。

しかもこの本体色は!完全にMZ-80Cの赤色ですよね!なんか行ける気がしてきました

ちなみに、PSRAMは、疑似SRAM…とのことです。

IT用語辞典バイナリ
https://www.weblio.jp/content/PSRAM

本体のRAMより動作速度が遅いのかな?


MZ-80Cエミュレータ「M5Z-80」

以下のリポジトリでソースファイル公開します。

「M5Z-80」MZ-80シリーズエミュレータ for M5Stack
https://github.com/shikarunochi/m5z80

PSRAM搭載の M5Stack FIRE でのみ動作します。M5Stack / M5Stack Gray / M5GO では動作しません。

サウンドも対応しました。音量調整できないので、起動時はOFFにしています。

まるくんさんのWindows用MZ-700エミュレータ「MZ700WIN」を、Oh!石さんが「mz80rpi」としてRaspberryPiに移植されていたのですが、それをM5Stackで動作するように移植しました。


Arduino ボードマネージャでM5Stack FIREを選ぶと、PSRAM設定できるようになるので、PSRAM有効にしてコンパイルしてください。

形から入ることも重要なので、レゴブロックでMZ-80Cのカタチを作りました。

モニタ部分にM5Stack FIREを設置すれば…

完成!MZ-80C!完全に一致!

Pasocom Mini MZ-80Cと比べると、ちょっと大きめサイズです。(写真はPasocom Mini MZ-80C と同サイズのペーパークラフトMZ-80K

(2020/01/17追記)
改めて確認してみたところ、Pacocom Mini MZ-80Cが幅102.5mm、ペーパークラフトが幅75mmで、全然サイズ違いました…。1/6弱ですね。
レゴブロック製が幅88mmなので、Pasocom Mini MZ-80Cは、これよりちょい大きめでした。


エミュレータ起動準備

ROMデータやテープイメージデータはmicroSDカードにフォルダ「/MZROM」「/MZROM/MZTAPE」を作成して入れてください。

フォルダ: SDカード /MZROM/

  • モニタROMファイル
    拡張子 *.ROMにしてください。
    実機持っていない方も、下記サイトで公開されている NEWMON.ROM で動作可能です。使用許諾に同意した後、ダウロードしてください。

MZ-700/80K/C/1200用互換モニタ MZ-NEW MONITOR
http://retropc.net/mz-memories/mz700/kyodaku.html

  • フォントデータ:MZ700FON.JP
    まるくんさんのMZ700WIN同梱のフォント作成ツールで作成できます。MZ700WINのリポジトリにも上がっていました。
    ファイル名は「MZ700FON.JP」にしてください。

MZ-700/1500 Emulator for Win32
https://github.com/marukun700/mz700win

  • 設定ファイル:m5z80.conf
    エミュレータを起動すると作成されます。基本的には直接触らなくても大丈夫です。

フォルダ: SDカード  /MZROM/MZTAPE/

テープのイメージデータを用意してください。拡張子は何でもいいです。日本国内ではMZT/M12、海外ではMZF が使われていて、フォーマットは同じみたいです。

エミュレータで動作可能なMZ-80K/C用のイメージファイルは、以下のサイトでも公開されています。大感謝です。ありがたく使わせていただきました!

ZEPLISシリーズ
http://www.maroon.dti.ne.jp/youkan/mz700/zeplis/

ワンダーハウス
http://retropc.net/mz-memories/mz700/tfk.html

KM-BASIC
https://www.recfor.net/blog/mycom/?itemid=866


M5Stack のボタン割り当て

Aボタン:「LOAD(CR)」入力
Bボタン:カセット再生開始
Cボタン:Wi-Fi接続&Webサーバ起動のON/OFF切替

Cボタン押したまま起動:Wi-Fiアクセスポイントモードとして起動

AボタンとBボタンは、本体だけでモニタからのソフト起動を可能にするために用意しました。


初回起動時の動作

デフォルトで以下のファイルを読み込むようにしています。(互換モニタROMとWonderHouseテープイメージ)
ROM: NEWMON.ROM
TAPE: WH_newmon.mzt

モニタROMがあればモニタ画面が起動します。
Aボタン押すと「LOAD(CR)」が入力され、カセットプレイが促されます。
Bボタンでカセットプレイ開始。プログラムが読み込まれます。

各種設定をする場合は、M5Stack側でWebサーバを起動、Wi-Fi経由で接続して、外部Webブラウザを用います。

Cボタン押下で、Wi-Fi準備がされて、Webサーバが起動します。

Wi-Fiの接続SSIDが設定されていない場合、またはCボタン押したままM5Stackを起動した場合、M5Stack本体がWi-Fiアクセスポイントになります。
SSID:M5Z-80_ + 5桁乱数
パスワード:なし
IPアドレス:192.168.4.1
最下行にSSIDと接続URLが表示されますので、SSIDを指定してWi-Fi接続後、ブラウザからURLを開いてください。

ここに接続している間は、外部のインターネットには接続できないです。


Wi-Fiの接続SSIDが設定されていた場合、M5Stackは、そのSSIDに接続します。

接続完了後、画面下に接続URLが表示されますので、外部WebブラウザからURLを開いてください。


ブラウザでURLを開くと、以下の画面が表示されます。

(設定ページ内容は簡易的な実装なのであまり多くを期待しないでください~。)

モニタROMを選択する時は、SDカードの /MZROM/*.ROM ファイルが表示されているので、選択して「SELECT ROM and REBOOT」を押してください。ROM選択時に、いったん本体リブートされます。

テープファイルを選択する時は、SDカードの/MZ/ROM/MZTAPE/*.* ファイルが表示されているので、選択して「SELECT TAPE」を押してください。


エミュレータに文字入力したい場合は、文字列を入力して「SEND COMMAND」を押してください。ゆっくりと入力されます。たまーに、取りこぼし発生します…。

アドベンチャーゲームならこのコマンド入力を使って、結構遊べるものもあると思います。リアルタイム入力じゃないので、アクションゲームは難しいですね。

「SHIFT+BREAK」は、BASICプログラムの実行中止をするキー入力です。マシン語プログラム実行時は効かないと思います。


「SoundON」「SoundOFF」サウンドの切り替えをします。(新機能なので上のスクリーンショットに載ってないです)


Wi-Fi 「SSID」 / 「PASSWORD」で、接続するSSID と パスワードを設定します。設定後、再起動されます。

再起動後に、Cボタン押下すると、設定したSSIDに接続します。
SSIDとパスワードは、設定ファイルに保存します。パスワードは簡易的ではありますが暗号化して保存してます。

SSID設定後、一時的に M5Stackをアクセスポイントとして起動したい場合は、起動時に「Cボタン」押したままにしてください。強制アクセスポイントモードになります。

「DELETE Wi-Fi SSID info and REBOOT」で、設定ファイルに保存したSSIDとパスワードを消去して再起動します。(アクセスポイントモードになります。)


起動からの一連の流れは、こういう感じです。


Webサーバを起動していると、エミュレータの動作速度が遅くなるので、必要時のみ起動するようにするといいです。とはいえ、キー入力が必要な場合には起動せざるをえないですけれど。


PC等からUSBシリアルで接続して、シリアルコンソールからのキー入力で操作することが可能です。
正確には、可能な場合もあります、という感じです。できない場合もあります。

ZEPLISの操作はできたので、結構いけるかもしれないです。


Webからのコマンド入力はリアルタイム入力じゃないので、ゲーム操作は厳しいですね。
WebSocket使う方法もありますが、今のとこ、そこまで作りこんでないです。
Bluetoothキーボードに対応できればいいですが、そのあたりのことは、まだ調べてないので、わからないです。

M5 Facesのキーボードで操作できたら面白そうと思います。Facesサンプルを見ると、キーの取得は簡単にできそうですね。


それではみなさま、良きMZ-80ライフを!



このエミュレータが実行可能なのは、2018/11/03 時点では M5Stack FIRE のみです!


Amazonリンク貼りつつ、なんですけど、海外からの通販に抵抗が無い場合は、本家M5Stack の AliExpress で購入してみるのもいいかと思います。販売されている商品の種類も多くて、価格も少し安めです。ただし、到着まで半月~1ヶ月ぐらいかかります。