SHARP MZ-700/1500 のエミュレータです。
以下の機能を実装しています。
- メイン RAM(64KB)
- VRAM
- PCG (MZ-1500)
- テープ
- QD(読み込みのみ)
- Beep
- PSG
- RAM ファイル (MZ-1R28)
速度は調整していませんが、単純にCPU の速度は実機より数割増し、描画は少し遅めなのでほぼトントンと思われます。
BML3 や FM-7 エミュレータと同じです
- GPIO0 VGA:H-SYNC
- GPIO1 VGA:V-SYNC
- GPIO2 VGA:Blue
- GPIO3 VGA:Red
- GPIO4 VGA:Green
- GPIO6 Audio
VGA RGB 信号との間には 220~270 ohm 程度の抵抗を直列に入れてください。 VGA、Audio の GND に Pico の GND を接続してください。
Pico の USB 端子に、OTG ケーブルなどを介して USB キーボードを接続します。 USB キーボードに存在しないキーは以下のように割り当てています。
- 英数 → Tab
- カナ → カタカナ・ひらがな
- GRAPH → ALT
また F12 でメニュー画面に移ります。 QD イメージや MZT イメージの操作ができます。
いつもの VGA 出力ですが、データ量節約のため 320x400 ドットで描画しています。 PCG の変更があるたびに、キャラクタ単位で書き換えているので、グラフィック命令の速度が遅いです。
いつもと違って、UART 入出力に対応していません。 LittleFS 上の MZT 形式のファイルをロード・セーブに用います。
QDF / MZT 形式のファイルの読み込みのみ対応しています。 littleFS 上においてください。
LittleFS の扱い方については、 こちらの記事を参照してください。
いつものように純正ROM が必要です。
mznewrom.h
を mzrom.h
にコピーしたのち、
mzipl
mzext
mzfont
にそれぞれ、IPL、拡張 ROM、フォントのデータを入れてください。
なお実機の ROM がなくても MZ-700 として使えるように、互換 ROM & FONT を同梱しています。(拡張 ROM がないので、QD は使えません)
冒頭の #define USE_NEWMON
を有効にしてください。
MZ-NEWMON http://mzakd.cool.coocan.jp/mz-memories/mz700win.html##6
漢字 ROM は互換 FONT で動作確認していますが、辞書 ROM の動作は未テストです。
コンパイル済みバイナリを prebuild
ディレクトリ以下に置きました。
- mz1500emulator.uf2 拡張ROM使用
- mz700emulator.uf2 拡張ROM非使用 (MZ NEWMON 向け)
各 uf2 を、Pico に書き込むのと合わせて、ROM ファイルを Pico に置きます。
picotool を使う場合は、以下の通りで行けると思います。 (picotool は pico-sdk に含まれています)
$ picotool load -v -x IPL.ROM -t bin -o 0x10070000
$ picotool load -v -x FONT.ROM -t bin -o 0x10074000
$ picotool load -v -x EXT.ROM -t bin -o 0x10078000
MZ-700 として使う場合は、EXT.ROM の書き込みは不要です。
- 最初に起動する際に LittleFS のフォーマットで固まることがあります。(リセットでOK)
- 辞書ROMの動作確認をしていません。
- Pico SDK 2.0 ではうまく動かないかもしれません。
このエミュレータは以下のライブラリを使用しています。