今風太さんのminiシリーズを遊びたい

今風太さんPasocomMini PC-8001向けのゲームが続々発表されています。

勿論、PasocomMini PC-8001で遊べばいいんですが、ちょいと立ち上げてぱっと遊ぶには、モニターに繋いでキーボード出して、と敷居が高いのも確か。

エミュレータで遊べないかなあと思い、色々試してみた結果、一応動くところまでは来ました。

このシリーズが、PasocomMini専用な所以は、0x6000-0x7fffの8KBにあります。

この領域はPC-8001実機では未使用エリアですが、PasocomMiniではRAMが割り当てられて、ここをこのシリーズでは利用しているため、実機でもエミュレータでも動作しないのです。

ならば、ここにRAM割り付けちゃえばいいだろうということで、まず、quasi88のソースに手を入れて、この領域にRAMを割り付けてみたのですが、動きませんでした。

ま、エミュレータをいじるのは筋も悪いよな、と、別の方法をトライ。多くの場合PC-8001のエミュレーションは、PC-8801エミュレータで行っているのではないかと思います。

そう、実は N-BASICが動作していても、ハード的にはPC-8801なので、PORT 31Hを引っぱたいてやれば、0x0000-0x7fffをRAMにできるのです。なので、最初にやったのが、0x0000-0x5fffにN-BASICのROMをコピーして、オールRAMモードにして戻るというもの。

    PUSH    HL
PUSH DE
PUSH BC
LD HL,0
LD DE,0
LD BC,5FFFH
LDIR
DI
LD A,6
OUT (31H),A
EI
POP BC
POP DE
POP HL
RET

N-BASICモードでも、0x0000-0x7fffへの書き込みはRAMに対して行われるため、これでROMが丸っとコピーされます。

が、これを実行すると、ほどなくハングアップしてしまいます。調べてみると、私がPC-8801FHから取り出したN-BASIC ver 1.8は、ちょいと0x6000以降にはみ出していました。

つまり、このバージョンのN-BASICは、0x6000-0x7fffのRAM化に対応できないのです。

なので、N-BASIC ver 1.0ないしは1.1のイメージを用意して、RAMに書き込めばいいと判明。

CMT形式で、N-BASICを用意して、MONでロード。以下のコードを実行すると、オールRAMモードでN-BASICが起動します。

    DI
LD A,6
OUT (31H),A
EI
JP 0000H

あとは、今風太さんのサイトにある指示通りに、BASICと機械語プログラム二本をロードして起動すればごらんのとおりです。

一応、quasi88での動作を確認しましたが、現状、音が鳴りません。これはエミュレータの問題なのか、無理やり、バージョンの違うN-BASICを動かしているせいなのかはわかりません。

まあ、もともと、PasocomMiniで遊ぶように作られたものですので、是非PasocomMiniを購入して遊んでいただくのがいいとは思いますが、お手軽に遊んでみたい方には、こういうこともできました、と、いうお話でした。

(追記)X88000であれば、サウンドも画面もほぼ完全に再現されました。ただ、X88000は拡張子のチェックが厳密なので、拡張子.cmtをつけておかないとロードできません