●EXAS-FM CompilerのROMを抜く!
FM7ZIP Rel3で対応したEXAS-FM Compilerは、とても珍しい「拡張ボード」として提供される整数型BASICコンパイラでした。FM-7の拡張スロットにさして使用するROMボードで、起動がとても高速です。(株)WonderSoftから発売されていました。BASICで書いたプログラムがそのままマシン語になるということでずいぶん遊んだ記憶があります。本格的に使おうとするとそれはそれでいろいろあるんですが…
ここでは、FM7ZIP Rel3でEXAS-FM Compilerを実行するために必要なROMファイルを作成する手順を紹介しています。
私が実際にROMを抜いたのはROMライタを使った方法です。ディスク/カセットでの抜き方はエミュレータで(!)検証していますが、実機では確認していません。抜けや間違いがあったらご指摘くださると助かります。
方法は全部で3通りありますので、一番やりやすい方法でチャレンジしてください。
ディスク/カセットを使った場合で、転送プログラムがうまく読み込めない場合は実機で次のリストを入力してください。
1.PCで転送プログラムをディスクに書き込む
ここから、EXAS-FM CompilerのROM内容を取り出すためのプログラムをダウンロードします(ZIP圧縮)。これはD77形式のディスクイメージになっていますので、DITTを使ってFDに書込みを行います。
dittはPC8801エミュレータ、M88のツールです。
C:>ditt w a: exassave.d77
2.FM上で転送プログラムを実行する
2-1. FMを起動する
作成したディスクにはDISK BASICコードは含まれていませんので、このディスクを使って起動することは出来ません。別のディスクを使ってDISK BASICを起動させます。
2-2. 転送プログラム実行
作成したディスクからプログラムを読み込み、実行します。
RUN"SAVEEXAS"
実行すると、自動的にディスクに4つファイルを作成します。
FILES
SAVEEXAS 0 B S 1
EXAS-0 2 B S 1
EXAS-1 2 B S 5
EXAS-2 2 B S 5
EXAS-3 2 B S 5
3.転送したディスクをイメージ化する
ROMデータの書き込まれたディスクをPCでイメージ化します。
C:\>ditt r a: exas.d77
4.イメージファイルから、必要なファイルを読み出します
FTOOLS(私のサイトにあります)に入っているfmreadコマンドを使用してファイルを読み出します。読み出しはクラスタ単位で行われるので、不要なデータが含まれています。
C:\>fmread exas.d77 EXAS-0 -v
Output file='EXAS-0.2B0'同様にして、EXAS-1〜3のファイルも読み出します。
5.読み出したファイルの中身をデコードする
デコードすることで、RAWクラスタデータから必要な情報のみを取り出すことが出来ます。これもFTOOLSに含まれているfmdecodeコマンドを使用します。
出来上がるファイルは'.MOT'の拡張子を持ったMotorola-Sフォーマットファイルになります。
C:\>fmdecode exas-0.2b0 -v
Output file='EXAS-0.mot'
FileName=EXAS-0 FileType=2 Ascii=B Random=S
StartAddr=fd40 EndAddr=fd7f Entry=fd40同様にして、EXAS-1〜3.2b0もデコードします。
6.Motorola-Sファイルをデコードする
さらに、Motorola-Sファイルをデコードし、バイナリファイルに変換します。このバイナリファイルにはまだ余分なデータが含まれています。
使用するコマンドはmot2bin(私のサイトにあります)です。
C:\>mot2bin exas-0.mot exas-0.bin
Motorola-S to Binary converter v0.0
Programmed by an XM7 supporter
BuffMemAlloc: 00010000
*** Used area
0000FD40 , 0000FD7F
*** Max address = 0x0000fd7f
*** File conversion succeeded.同様にして、EXAS-1〜3.motもバイナリに変換します。
7.バイナリファイルから必要な部分のみを取り出す
bincutコマンド(私のサイトにあります)を使用します。
必要な範囲は、
EXAS-0 FD40〜FD7F
EXAS-1 2000〜3FFF
EXAS-2 2000〜3FFF
EXAS-3 2000〜3FFF
となります。また、EXAS-3はEXAS-Xに変更する必要があります。C:\>bincut exas-0.bin exas-0.rom fd40 fd7f
Binary cutter V0.1
Programmed by an XM7 supporter同様にして、EXAS-1〜3.binも必要な部分を切り出します。
以上の4〜7の手順をまとめると、下のようなバッチファイルになります。
これでEXAS-FM Compilerに必要なROMファイルが出来上がります。
rem D77イメージからファイルを抜き取る
fmread exas.d77 EXAS-0 -v
fmread exas.d77 EXAS-1 -v
fmread exas.d77 EXAS-2 -v
fmread exas.d77 EXAS-3 -v
rem 抜き取ったファイルをデコードする(Motorola-S)
fmdecode exas-0.2b0 -v
fmdecode exas-1.2b0 -v
fmdecode exas-2.2b0 -v
fmdecode exas-3.2b0 -v
rem Motorola-Sファイルをバイナリに変換する
mot2bin exas-0.mot exas-0.bin
mot2bin exas-1.mot exas-1.bin
mot2bin exas-2.mot exas-2.bin
mot2bin exas-3.mot exas-3.bin
rem バイナリファイルから必要な部分のみを抜き取る
bincut exas-0.bin exas-0.rom fd40 fd7f
bincut exas-1.bin exas-1.rom 2000 3fff
bincut exas-2.bin exas-2.rom 2000 3fff
bincut exas-3.bin exas-x.rom 2000 3fff
1.カセットに転送プログラムを録音する
ここから、カセット用のEXAS-FM Compiler ROM転送プログラムをダウンロードします(ZIP圧縮)。このファイルはwavファイルになっています。
Windows Media Player等を使って再生し、カセットテープに録音してください。
2.FM上で転送プログラムを実行する
データレコーダをFMにつなぎ、プログラムを読み込みます。
LOAD"CAS0:"
次に、データレコーダを録音状態にし、プログラムを実行します。
RUN
すると、ROMデータがカセットに記録されます。"Ready"が出れば終了です。
3.カセットに録音した音声(データ)をPCで録音する
データレコーダの音声出力(イヤホン端子?)とPCのサウンドカードのLINE-INをケーブルでつなぎます。
適当なサンプリング(録音)ソフトを使ってPCで録音をします。Windows標準添付のサウンドレコーダは1分までしか録音することが出来ないので使えません。保存時は、44.1KHz, モノラル, 8ビットで保存してください。
ここでは、EXAS.WAVというファイル名で保存したものとして話を進めます。また、テープには全部で4本のマシンマシン語ファイルが保存されますが、それをすべて1つのwavファイルに保存(録音)した前提で進めます。
もちろん、ファイルごとに別々のwavファイルを作成してもかまいません。その場合以降の手順を適宜読み替えてください。
4.音声ファイル(wav)をテープイメージ(T77形式)にエンコードする
ファイルの中身を取り出すため、いったんXM7テープイメージ(T77形式)に変換します。変換にはwav2t77(私のサイトにあります)を使用します。
C:\>wav2t77 exas.wav exas.t77 -th8200 -tl7e00 -v
5.テープイメージからファイルを取り出す
t77dec(私のサイトにあります)を使用して、テープイメージファイルから必要なファイルを抜き出します。
出てきたファイルはベタのバイナリファイルになっています。
C:\>t77dec exas.t77 -v
T77 file decoder version 0.6
Programmed by an XM7 supporter
Phase = Normal
FOUND:"EXAS-0 " Machine language program
Output filename:"EXAS-0 .BIN"
LENGTH=$0040 START=$FD40 END=$FD7F EXEC=$fd40
FOUND:"EXAS-1 " Machine language program
Output filename:"EXAS-1 .BIN"
LENGTH=$2000 START=$2000 END=$3FFF EXEC=$2000
FOUND:"EXAS-2 " Machine language program
Output filename:"EXAS-2 .BIN"
LENGTH=$2000 START=$2000 END=$3FFF EXEC=$2000
FOUND:"EXAS-3 " Machine language program
Output filename:"EXAS-3 .BIN"
LENGTH=$2000 START=$2000 END=$3FFF EXEC=$2000
6.ファイル名を変更する
XM7ZIPが必要とする名前にファイル名を変更します
C:\>ren "EXAS-0 .BIN" exas-0.rom
C:\>ren "EXAS-1 .BIN" exas-1.rom
C:\>ren "EXAS-2 .BIN" exas-2.rom
C:\>ren "EXAS-3 .BIN" exas-x.rom
以上の4〜6の手順をまとめると次のようなバッチファイルになります。
rem wavファイルからt77ファイルに変換する
wav2t77 exas.wav exas.t77 -th8200 -tl7e00 -v
rem t77ファイルの中身をデコードする
t77dec exas.t77 -v
rem ファイル名を付け替える
ren "EXAS-0 .BIN" exas-0.rom
ren "EXAS-1 .BIN" exas-1.rom
ren "EXAS-2 .BIN" exas-2.rom
ren "EXAS-3 .BIN" exas-x.rom
1.ROMライタでROMを読み出し、PCに転送する
どうやって転送するかはお手持ちのROMライタのマニュアルをご参照ください。
PCにはMotorola-Sファイル形式で転送してください。
ROMはそれぞれ、貼ってあるシールにしたがって、
0 EXAS-0.MOT
1 EXAS-1.MOT
2 EXAS-2.MOT
X EXAS-X.MOTとして保存して下さい。
2.Motorola-Sファイルをベタバイナリに変換する
mot2bin(私のサイトにあります)を使用して、Motorola-Sファイルをベタバイナリに変換します。
C:>mot2bin exas-0.mot exas-0.rom
2の手順をまとめると以下のようなバッチファイルになります。
これで、XM7ZIPに必要なEXAS-FM Compiler用のROMファイルが出来上がります。
rem motファイルからバイナリファイルに変換する
mot2bin exas-0.mot exas-0.rom
mot2bin exas-1.mot exas-1.rom
mot2bin exas-2.mot exas-2.rom
mot2bin exas-x.mot exas-x.rom
1000 CLEAR,&H1FFF
1010 D$="0:"
1020 'D$="CAS0:"
1030 SAVEM D$+"EXAS-0",&HFD40,&HFD7F,&HFD40
1040 POKE &HFDFE,0
1050 FOR F=1 TO 3
1060 PRINT "TRANSFERING ROM";F
1070 FOR I=0 TO &H1FFF
1080 POKE &H2000+I,PEEK(&HFDFC)
1090 POKE &HFDFD,0
1100 NEXT
1110 PRINT "SAVING ROM";F
1120 SAVEM D$+"EXAS-"+RIGHT$(STR$(F),1),&H2000,&H3FFF,&H2000
1130 NEXT