MZ-700エミュレータがいい感じで動作したので、もしかしていけるかも、と、PC-8001のエミュレータ移植にチャレンジしました。
移植元のエミュレータは「N80」です。PC-8001だけのエミュレートに絞ってあるので、ソースがコンパクトで移植が行いやすかったです。Windows版やDOS版など、いろいろな機種用が用意されていました。ここでは、Raspberry Pi用の「N80pi」を移植しました。
同サイトの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」キーに対応しています。
描画ロジックをM5Stackのライブラリに合わせた実装にして、だいぶ軽くなりました。20fps出るか出ないかですが、ゲームが遊べるぐらいの速度になったかな、と思います。
動いているゲームは、こちらの「昔作ったマイコン用ゲーム」で公開されている「VARIOUS2」です。https://t.co/xD0jUmbMcp pic.twitter.com/dkmqsBhv1C— Nochi (@shikarunochi) 2018年11月19日
いいかんじ!
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 Facesのキーボード繋いだらどんな感じになるんだろう?
Facesのサンプル見ると、キーボード入力の取得は簡単にできそうですね。
https://github.com/m5stack/M5Stack/blob/master/examples/Modules/FACES/I2C_Keyboard/I2C_Keyboard.ino
キーボードのボトムパーツだけバラ売りしてほしいとこです。