Common Source Code Project のPC-6001mkIIエミュレータをM5Stack FIREに移植しました。
https://github.com/shikarunochi/CommonSourceCodeProjectM5Stack/tree/master/src/pc6001mk2
ビルド済みの bin ファイルも用意してあります。
https://github.com/shikarunochi/CommonSourceCodeProjectM5Stack/tree/master/bin
pc6001mk2.bin
ROMやフロッピーディスクのイメージファイルはSDカードの /pc6001mk2ROM/ に入れておいてください。
binファイルをSDカードに入れておけば、LovyanLauncher から読み込み可能です。
LovyanLauncher
https://github.com/lovyan03/M5Stack_LovyanLauncher
キー入力は、M5Stackオプションの CardKBか、シリアルコンソール経由で行います。
M5Stack Official CardKB Mini Keyboard
下記サイトで公開されているPC-6001mkII用互換BASIC(BASICROM.62)を用いれば、実機ROMが無くともエミュレータ起動可能です。
秋川藤志のページ:PC-6001用互換BASIC
http://000.la.coocan.jp/p6/basic.html
フォントROM(CGROM60.62 / CGROM60M.62)は、サイトにもありますように、PC-6001用のファイルを2つ連結させて使ってください。
WindowsならDOSプロンプトからこういう感じで。
copy /b CGROM60.60+CGROM60.60 CGROM60.62 copy /b CGROM60.60+CGROM60.60 CGROM60m.62
フロッピーディスクイメージ読み込み・書き込みに対応しました。ハードウェアとしてはPC-PC-6031のエミュレート。5.25インチ・片面倍密度(1D)で160KBです。
ファイルの選択は、カセットと同じところから行います。拡張子によって、カートリッジ・テープ(CAS / P6 / P6T)・フロッピー(D88)それぞれに自動的にセットされます。D88の1ファイル複数イメージ格納には対応していません。
フロッピーディスクはドライブ1のみ使用可能です。(どのドライブにセットするかのUIをまだ作ってないので…。)
元エミュレータではディスクイメージをメモリにすべて読み込んで処理していたのですが、M5Stack FIREの4MB PSRAMだとその方式は厳しかったので、メモリに読み込まずに毎回ファイルを直接見に行く方式にしました。
当然、メモリより遅いですが「実機のフロッピーディスクも、こんなもんだったかな?」ぐらいの速度で動いているのではないかと思います。
セーブにも対応しています。ディスクイメージのフォーマットを行う機能は実装していません。PCでフォーマット済のディスクイメージを使用してください。
ディスクイメージに書き込みを行う場合は、元のファイルのバックアップをお忘れなく!
フロッピーディスクイメージはD88形式のみ対応しています。他の形式に対応するには、オンメモリでのイメージ変換が必要になり、前述の通りPSRAM 4MBのM5StackFIREでは無理なので、ひとまずはD88だけです。
1Dフォーマットのディスクイメージは、下記サイトの「PC-6000 シリーズ用 D88 ディスクイメージ書き込みツール」で作成が可能です。
Bookworm’s Library : Research & Development
http://mydocuments.g2.xrea.com/html/p6/randd.html
エミュレータで使用できるのはBASICフォーマットされた1Dディスクです。以下のように作成してください。
d88tool ディスク名.d88 -1dbas
Cボタンでシステムメニューが出ます。エミュレータのリセットと、SDカード差し替え時の再読み込み、ジョイパッドの設定を行えるようになってます。
フロッピーディスクをセットした状態でリセットすると、フロッピーディスクから起動できます。(残念ながら、互換ROMではフロッピーディスクからの起動がうまく動作しないみたいです)
PC-6001mkII用MZ-700用タイニーゼビウスを起動してみました。
PC-6001mkII用MZ-700用タイニーゼビウス
http://000.la.coocan.jp/p6/xevious.html
サイトの指示に従い、xevious.bin を xevious.d88 に変換。フロッピーイメージに設定してリセット。
PC-6001mkII用MZ-700用タイニーゼビウスをM5StackのPC-6001mkIIエミュレータで起動!https://t.co/4qfFtlNKXY pic.twitter.com/EOm6El6FSR
— Nochi (@shikarunochi) 2019年3月31日
互換ROMの場合は、リセットでディスクからの起動がうまく動作しませんでした。テープイメージ xevious1.p6、xevious2.p6を順にロードすれば起動可能です。「cload」→ Bボタンでファイル xevious1.p6 選択 → ロード終わったら「run」→ Bボタンでファイル xevious2.p6 選択。ロードには数分かかります。
描画するキャラクターに違いはありますが、動作自体は可能でした。
PC-8801のディスクサブシステムROM (DISK.ROM)を用いて、5.25インチ2D外付けフロッピーディスクPC-80S31Kのエミュレートを行う処理も移植はしたのですが、まだ動作が変です。ここはまた後日。
PC-6601エミュレータは、ソースはコミットしてあるのですが、まだ動作怪しい感じなのでビルド済 bin は上げてないです。
このエミュレータが実行可能なのは、2019/03/31 時点では M5Stack FIRE のみです!
Amazonリンク貼りつつ、なんですけど、海外からの通販に抵抗が無い場合は、本家M5Stack の AliExpress で購入してみるのもいいかと思います。販売されている商品の種類も多くて、価格も少し安めです。ただし、到着まで半月~1ヶ月ぐらいかかります。