M5 Cardputer で MZ-700

キーボードとLCD付いてるのだから、レトロPCエミュレータを動作させたい。とはいえ、PSRAM無し&低解像度なので、PC-8801エミュレータは厳しい。(デゼニランドをプレイしたいところではあるが…w)

ということで、以前にも M5StickC Plus(Cardputerと解像度同じ&PSRAM無し)で動かしてみた、MZ-700エミュレータを動かしてみることにします。

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


公式のサンプルだと、microSD へのアクセス方法がわかりませんでした。M5Stack と違って、LCD と microSD の SPI 共有はされていないっぽいです。

SPI2 を使っていけました!

らびやん(https://twitter.com/lovyan03)さんからのアドバイスで、ピン番号取得は M5Unified にお任せすることにします。

microSD アクセスさえ可能なら、あとはそんなに詰まるところも無く、MZ-700エミュレータ起動!

この時点では、まだキーボード対応&ボタン対応できてなくて、操作は I2C 接続の CardKB、テープデータの読み込みはできませんでした。

M5.BtnA が ボタンG0 に対応してたので、メニュー表示が可能に。テープデータ読み込みOKです。

音も鳴らしてみました。(まだ「鳴ってるだけ」状態ですが)

キーボードの扱い方を確認するために、InputText のサンプルを確認…。

そして、エミュレータ側に実装。

MZ-700エミュレータ、キーボードで動作できました!画面も収まりきっています。(読めるかどうかはまた別の話)
カーソルが Fn 併用なのがだいぶ厳しいかもw


プログラムファイルはこちらです。

https://github.com/shikarunochi/m5z80/tree/master/m5z700AtomHDMI

ターゲットに cardputer を選択してビルドしてください。


microSD カードに以下のフォルダを作成して、必要なファイルを入れてください。

/MZROM/
NEWMON.ROM(MZ-80K/C 互換モニタROM
NEWMON7.ROM(MZ-700 互換モニタROM
SP-1002.ROM(あれば。MZ-80K/C実機ROM)
1Z009.ROM(あれば。MZ-700実機ROM)

エミュレータ内に 6×8 で作成したフォントを持っていますので、フォントデータ MZ700FON.JP は必要ありません。

/MZROM/MZTAPE/
MZT イメージファイル


ファイル選択時のキーボード使用は、まだ対応してないです。M5Atom バージョンと同様に、以下の操作になります。

G0キー 押下:ファイル選択画面
G0キー 長押し:システムメニュー画面

各画面では、以下のようになります。

G0キー 押下:選択移動
G0キー 長押し:選択実行


プログラムの2段階ロード(BASIC読み込んだ後のBASICプログラム読み込みも含む)には、まだ対応できてないです。
2回目以降のロードは、直接メモリ転送できないので、いったんテープイメージをSDカードに展開しているのですが、うまくできていないっぽく…。