QUASI88 の ROM イメージファイルの再構成

で、素直に元々手元に用意していた PC-8801 の ROM イメージと共に Y's のディスクイメージを、Linux Zaurus に放りこんで、zQUASI88(PC-8801 エミュレータ)を動かそうとして、いきなりつまづく。
以前から用意していた PC-8801 の ROM イメージは M88 や PC88SR 用のツールを使って吸い出していたので、QUASI88 でそのままでは使えないみたいなのだ。後でオプションでそれにも対応できることは判ったらしいが、何となく思い立って勝手に分割&再構成ツールを作ってみる。
まずはシステム ROM イメージの分割ツールから。112KB の PC88.ROM ってファイルが対象。どうやら PC88SR で使えるヤツなので、そこのページ見て内容を把握。いくつかの ROM がまとめられているので、これを個別に分割する。

#include 

int sub(FILE *fp1,char *file,int size) {
    int i;
    char buf[1024];
    FILE *fp2;
    fp2=fopen(file,"wb");
    for(i=0;i

PC88.ROM に含まれる N88-2.ROM はどうやら QUASIS88 では不要みたい。逆に N88-1.ROM を N88.ROM にリネームしておく必要がある。あと、N-BASIC の ROM は分割されているので、N88N-1.ROM と N88N-2.ROM を結合して N88N.ROM としてやる必要がある。
次にフォントの ROM イメージに手をつける。これは 6KB の font.rom ってファイルで、バイナリダンプすると先頭 2KB が 8×8ドットのフォント(8 バイト×256 文字)、次の 4KB が 8×16ドットの半角フォント(16 バイト×128 文字)なので、これを分割するプログラムを作った。

#include 

int sub(FILE *fp1,char *file,int size) {
    int i;
    char buf[1024];
    FILE *fp2;
    fp2=fopen(file,"wb");
    for(i=0;i

QUASI88 で必要なのは 8×8 ドットの半角フォントだけみたいなので、FONT0808.ROM を FONT.ROM にリネームして使えばおっけーみたい。
ちなみにこの C のソースは LSI-C86 試食版でも、恐らく Linux Zaurus の dev_img-1.3 や zgcc などでもそのままコンパイルできると思う。最後に今回利用した ROM イメージファイル群を一気に QUASI88 用に変換するバッチファイルを以下に置いておく。これは ROM イメージを用意したディレクトリ内に上記プログラムと共に置き、実行すれば1つ上のディレクトリに QUASI88 で必要なイメージが作成される。

ROM88DIV.EXE
COPY N88-1.ROM ..\N88.ROM
COPY N88EXT0.ROM ..
COPY N88EXT1.ROM ..
COPY N88EXT2.ROM ..
COPY N88EXT3.ROM ..
COPY /B N88N-1.ROM+N88N-2.ROM ..\N88N.ROM
COPY N88SUB.ROM ..
DEL N88-1.ROM
DEL N88N-2.ROM
DEL N88-2.ROM
DEL N88EXT0.ROM
DEL N88EXT1.ROM
DEL N88EXT2.ROM
DEL N88EXT3.ROM
DEL N88SUB.ROM
DEL N88N-1.ROM
COPY KANJI1.ROM ..\N88KNJ1.ROM
COPY KANJI2.ROM ..\N88KNJ2.ROM
FNT88DIV.EXE
COPY FONT0808.ROM ..\FONT.ROM
DEL FONT0808.ROM
DEL FONT0816.ROM

これらプログラムのお持ち帰り用セットを作ってみた。MS-DOS 及び Windows で動作可能な EXE ファイル及びバッチファイル入りです。Linux Zaurus では zgcc インストールして gcc rom88div.c 等としてコンパイルしませう。

QUASI88 用 ROM イメージ変換 toquasi.zip
http://www.areanine.gr.jp/~nyano/archives/nikki/toquasi.zip