M5Stack:PC-8001 エミュレータ!

MZ-700エミュレータがいい感じで動作したので、もしかしていけるかも、と、PC-8001のエミュレータ移植にチャレンジしました。

移植元のエミュレータは「N80」です。PC-8001だけのエミュレートに絞ってあるので、ソースがコンパクトで移植が行いやすかったです。Windows版やDOS版など、いろいろな機種用が用意されていました。ここでは、Raspberry Pi用の「N80pi」を移植しました。

N80の部屋
http://home1.catvmics.ne.jp/~kanemoto/n80/index.html

同サイトのPC-8001やエミュレータに関する資料のページも、とても参考になりました。

N80解體新書
http://home1.catvmics.ne.jp/~kanemoto/n80/inside.html


PC-8001エミュレータ「M5N80」

ということで、M5Stack FIRE用 PC-8001エミュレータ「M5N80」です!

ソースはこちらです。

PC-8001エミュレータ for M5Stack
https://github.com/shikarunochi/m5n80

動作させるためには、実機から取得した「N-BASICのROMイメージ」が必要となります。
そちらについては、各自で準備をお願いします。

実機はヤフオクで3000円~4000円ぐらいですね。

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

サウンドには対応していません。


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


エミュレータ起動準備

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

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

  • N-BASIC ROM イメージファイル
    PC-8001実機から取得したROMイメージをファイル名「PC-8001.ROM」で入れてください。PC-8801のN-BASIC ROMでも動作します。その場合はファイル名「8801-N80.ROM」にしてください。
  • フォントファイル
    移植元エミュレータ「N80」のファイルに付属している「PC-8001.FON」を入れてください。

フォルダ: SDカード  /PC80ROM/N80/

  • N80イメージファイルを入れてください。

フォルダ: SDカード  /PC80ROM/CMT/

  • テープイメージファイル(CMT)を入れてください。

N-BASIC ROM と フォントファイルを入れて起動させると、N-BASICの画面が出ます!

シリアルターミナル経由で、BASICプログラムが入力可能ですので、いろいろ楽しんでください。Windowsの場合は、直接入力でカーソルやEnterが入力できる「Putty」や「TeraTerm」で接続するといいです。

PC-8001と比べて、横方向のドット数が半分しかないので、80文字モードは少々読みづらいですね。フォント横8ドットを、単純にORを取った4ドットで表示しています。

読めないことはないですね!


M5Stack のボタン割り当て

Aボタン:設定してある「N80」ファイル読み込み(設定は後述のWebブラウザから行います)
Bボタン:PCGのON/OFF切り替え
Cボタン:Wi-Fi接続&Webサーバ起動のON/OFF切替

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


設定画面

イメージファイルの選択など、各種設定をする場合は、M5Stack側でWebサーバを起動、Wi-Fi経由で接続して、外部Webブラウザを用います。

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

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

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


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

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


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

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

N80ファイルの選択、CMTファイルの選択、コマンドの送信、PCGのON/OFF、Wi-Fiの設定が可能です。

オートロード設定になっているN80ファイルを設定しておくと、M5Stack起動 → Aボタン押下 でN80ファイルの実行ができるようになります。

Wi-Fiパスワードは簡易的ではありますが暗号化して SDカード /PC80ROM/ の設定ファイルに保存しています。


ジョイパッド対応

こちらで紹介した簡易ジョイパッドに対応しています。

M5Stack:ジョイスティック&ボタンユニット
http://shikarunochi.matrix.jp/?p=2737

ジョイスティック上下左右は、ゲームでよく使用されるテンキーの 2 / 4 / 6 / 8 です。
押し込みで「RETURN」が入力されます。こちらは、ゲームスタートでよく使われてますね。

赤いボタンが「スペース」、青いボタンが「GRPH」キーに対応しています。

いいかんじ!


PC-8001は、人気機種なだけあって、いろいろなサイトで情報を得ることができます。

PC-8001 発掘隊
http://www.geocities.jp/upd780c1/n80/frame.html

企画展示室のところから、公開されているゲームへのリンクがあります。(geocitiesなので現在移転先を探しているとのこと)

両面テープ配線式電子工作
http://w01.tp1.jp/~a571632211/index.html

「昔作ったマイコン用ゲーム」でPC-8001用のゲームソフトが公開されています。

蘇る今風太ワールド
http://nonchansoft.on.coocan.jp/ocn/

今風太さん作のPC-8001用ゲームが公開されています。

D88形式のものは、N80形式に変換する必要があります。

PC-8001を懐かしむページ
http://bugfire2009.ojaru.jp/

こちらで公開いただいている t88tool で、各形式の相互変換が可能です。
D88からN80に変換するにはこういう感じで。

t88tool.exe -n [D88ファイル名]

MZ-80C / MZ-700の時は、レゴブロックで筐体作ったのですが、僕の手持ちレゴではPC-8001っぽさがうまく出せそうになかったので、今回は作ってないです。スイマセン。


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



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


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

“M5Stack:PC-8001 エミュレータ!” への2件の返信

  1. M5Stack Facesのキーボード繋いだらどんな感じになるんだろう?