FM-7/8のROMを抜く (XM7/EM-7)

ここで紹介する方法は、データレコーダが必要になります。この方法を使えば、FM-7でもFM-8でもROMを抜き取ることが出来ます。

ここで出来るROMファイルはXM7のV1用のものになります。V2に必要なROMはPI.さん作成のSAVEROMを使用してください。

ただし、DOSモードのROMはBASICモード時のROM内容を複製しているだけですので、OSによってはうまく動かないものが出てきます。BASIC時とDOS時ではIPLのロードアドレスが違うためです。→”GETDOS"プログラムを使用することで、DOSモード時のROMも吸い出せるようになりました。

XM7のみに適用される記述はこの色でEM-7のみに適用される記述はこの色で記述されています。それ以外の部分(共通)は黒で記述されています。お使いのエミュレータに合わせて読み替えてください。特に、DOSモードのBoot ROMの内容はEM-7では使用されませんので、EM-7ユーザの場合、手順3は必要ありません(飛ばしてください)。


1.SUB側のROMをセーブする

1-1. SUBTFRをダウンロードする

ここからSUBTFRの記録されたファイルをダウンロードし、解凍してください。SUBTFR.WAVファイルが出てくるはずです(4KB)。

1-2. SUBTFRをテープに記録する

SUBTFR.WAVをWindows Media Playerなどで再生し(ダブルクリックするだけです)、それをテープに録音します。

私が試したときは、Media Playerのボリュームも、PCのボリュームも最大にし、Spk out端子をデータレコーダにつなぎ、録音しました。ボリュームはもう少し小さ目のほうがよさそうです。

1-3. SUBTFRをFM-7/8にロードする

データレコーダをFM-7/8につなぎ、1-2で記録したSUBTFRをロードします。具体的なコマンドは次のようになります。

CLEAR,&H1FFF
LOADM"CAS0:SUBTFR"

これで、

Searching
Found "SUBTFR"
Ready

のように表示されればロード完了です。

うまくロードできないときはデータレコーダの音量(再生レベル)や、フェーズを変えてみてトライしてみてください。

どうしてもうまくSUBTFRをロードできないときは直接ダンプリストを打ち込んでください。

1-4. SUBTFRを実行し、サブシステムROMをテープに記録する

SUBTFRを実行すると、サブシステム側の$D800-$FFFFが、メイン側の$3800-$5FFFに転送されます。

EXEC &H2000
(データレコーダを録音状態にする)
SAVEM "CAS0:SUBSYS_C",&H3800,&H5FFF,&H3800

"CAS0"の最後はゼロです。 

 

2. MAIN側のROMをセーブする

次のコマンドを打ち込み、MAIN側のROM内容をカセットテープに記録します。

(データレコーダを録音状態にする)
SAVEM "CAS0:FBASIC30",&H8000,&HFBFF,&H8000
SAVEM "CAS0:BOOT_BAS",&HFE00,&HFFFF,&HFE00 (XM7)
SAVEM "CAS0:BOOT_BAS",&HFE00,&HFFDF,&HFE00 (EM-7)

 

3. DOSモード時のBoot ROMをセーブする (EM-7の場合は必要ありません)

3-1. GETDOSをダウンロードする

ここからGETDOSの記録されたファイルをダウンロードし、解凍してください。GETDOS.WAVファイルが出てくるはずです(3KB)。

3-2. GETDOSをテープに記録する

GETDOS.WAVをWindows Media Playerなどで再生し(ダブルクリックするだけです)、それをテープに録音します。

私が試したときは、Media Playerのボリュームも、PCのボリュームも最大にし、Spk out端子をデータレコーダにつなぎ、録音しました。ボリュームはもう少し小さ目のほうがよさそうです。

3-3. GETDOSをFM-7/8にロードする

データレコーダをFM-7/8につなぎ、1-2で記録したGETDOSをロードします。具体的なコマンドは次のようになります。

CLEAR,&H1FFF
LOADM"CAS0:GETDOS"

これで、

Searching
Found "GETDOS"
Ready

のように表示されればロード完了です。

うまくロードできないときはデータレコーダの音量(再生レベル)や、フェーズを変えてみてトライしてみてください。

どうしてもうまくGETDOSをロードできないときは直接ダンプリストを打ち込んでください。

3-4. GETDOSを実行し、DOSモードBootROMをテープに記録する

以下の手順に従ってGETDOSを実行してください。実行が終わるとDOSモード時のBootROMの内容が、メイン側の$3000-$31FFに転送されます。

EXEC &H2000
(ビープ音が鳴る)
(ディップスイッチをDOSモードにする)
(BREAKキーを押す)
(ビープ音が鳴る)
(ディップスイッチをBASICモードにする)
(BREAKキーを押す)
(データレコーダを録音状態にする)
SAVEM "CAS0:BOOT_DOS",&H3000,&H31FF,&H3000

"CAS0"の最後はゼロです。
 

モード

FM-8 FM-7/NEW7
SW9 SW10 SW1 SW2
BASICモード ON ON ON ON
DOSモード OFF ON ON OFF

 

4. 録音した内容をWindowsマシンでサンプリングする

例えば、Ulead Media Studioに付属するAudio Editorのような、サウンドカードから入力された音声を無圧縮WAVに記録できるサンプリングソフトが必要です。Windows標準添付のサウンドレコーダーは1分までしか録音を行うことが出来ないので使用できません。Vector窓の杜に行けばなんらかのフリーウエアがあるはずです。

保存形式は、44KHz、8ビット、モノラルが良いでしょう。録音時のボリュームは、適度にレベルを調整してください。レベルオーバーしない程度に出来るだけ大きいほうが良いです。

ここでは、先に録音した3つの内容(サブ×1、メイン×2)を別々のファイルに録音したとして話を進めます。それぞれ、

SUBSYS_C → SUBSYS_C.WAV
FBASIC30 → FBASIC30.WAV
BOOT_BAS → BOOT_BAS.WAV
BOOT_DOS → BOOT_DOS.WAV

として録音されたものとします。

 

5. WAVファイルを、いったんT77ファイルに変換し、その後、BINファイルに変換する

・T77はXM7が扱うことの出来るテープイメージファイル形式です。また、BINはベタバイナリ形式です。
・一度T77に変換するのは、手持ちのツール的にT77形式を介さないとBINに変換できないためです。
・使用する2つのツールはどちらも「XM7お手伝いぺ〜じ」(つまりここですよ)からダウンロードできます。

コマンドは以下のようになります。

C:\>WAV2T77 SUBSYS_C.WAV SUBSYS_C.T77 -V -TH8200 -TL7E00
C:\>WAV2T77 FBASIC30.WAV FBASIC30.T77 -V -TH8200 -TL7E00
C:\>WAV2T77 BOOT_BAS.WAV BOOT_BAS.T77 -V -TH8200 -TL7E00
C:\>WAV2T77 BOOT_DOS.WAV BOOT_DOS.T77 -V -TH8200 -TL7E00 (XM7)
C:\>T77DEC SUBSYS_C.T77 -V
C:\>T77DEC FBASIC30.T77 -V
C:\>T77DEC BOOT_BAS.T77 -V
C:\>T77DEC BOOT_DOS.T77 -V (XM7)

実行例を示します

C:\>WAV2T77 BOOT_BAS.WAV BOOT_BAS.T77 -V -TH8200 -TL7E00
WAV to T77 converter v0.3
Programmed by an XM7 supporter
Record Level High 0x8200 Low 0x7e00
Sample freq 44100[Hz] Channel 1[ch] Quantize bit 8[bit] Phase Normal
PASS2: Converting...
Done.

C:\>T77DEC BOOT_BAS.T77 -V
T77 file decoder version 0.6
Programmed by an XM7 supporter
Phase = Normal

FOUND:"BOOT_BAS" Binary file
Output filename:"BOOT_BAS.BIN"
LENGTH=$01de START=$FE00 END=$FFDF EXEC=$fe00

・T77DEC使用時に、CHECK SUM ERRORが出る場合は、コマンドラインの最後に-PRオプションを追加して実行してみてください。それでもダメな場合は、データレコーダや録音/再生時のボリュームなどを調整してベストコンディションを試行錯誤で探すほかありません。

・データレコーダと、その辺のオーディオカセットプレーヤでは成功確立がかなり違います。なるべくデータレコーダを使用してください。

・T77DECはこの作業時に発覚したバグを修正してあります。必ずV0.6以上を使用してください(V0.5以下ではファイルサイズが誤って作成されます。v0.4, v0.5は未発表ですが…)

出来上がったBINファイルはそれぞれ次のサイズになっているはずです。

FBASIC30.BIN → 31,744
BOOT_BAS.BIN 512 (XM7)
BOOT_BAS.BIN
480 (EM-7)
BOOT_DOS.BIN
512 (XM7) (EM-7
では必要ありません)
SUBSYS_C.BIN → 10,240

 

6.ファイル名を変更します

XM7に必要なファイル名に変更します

FBASIC30.BIN → FBASIC30.ROM
BOOT_BAS.BIN → BOOT_BAS.ROM
BOOT_DOS.BIN → BOOT_DOS.ROM
SUBSYS_C.BIN → SUBSYS_C.ROM

コマンドは以下のようになります

C:\>REN FBASIC30.BIN FBASIC30.ROM
C:\>REN BOOT_BAS.BIN BOOT_BAS.ROM
C:\>REN BOOT_DOS.ROM BOOT_DOS.ROM
C:\>REN SUBSYS_C.BIN SUBSYS_C.ROM

EM-7に必要なファイル名に変更します

FBASIC30.BIN → FB30ROM1.DAT
BOOT_BAS.BIN → FB30ROM2.DAT
SUBSYS_C.BIN → FB30SUB.DAT

コマンドは以下のようになります

C:\>REN FBASIC30.BIN FB30ROM1.DAT
C:\>REN BOOT_BAS.BIN FB30ROM2.DAT
C:\>REN SUBSYS_C.BIN FB30SUB.DAT


以上で準備OKです。

あとは、XM7/EM-7の実行ファイルと同じディレクトリに*.ROMファイル/*.DATファイルを置くだけです。

XM7でのF-BASIC V1.0の起動画面(FM-8のROM)

EM-7でのF-BASIC V1.0の起動画面(FM-8のROM)


SUBTFRのダンプリスト

一応ポジションインデペンデントのはず。試してないけど(^^;

Add  +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F Sum
2000 CC 38 00 ED 8D 00 A8 CC D8 00 ED 8D 00 A3 CC 28 :DB
2010 00 ED 8D 00 9E 8D 01 39 EC 8D 00 95 ED 8D 00 9F :06
2020 C3 00 40 ED 8D 00 8A EC 8D 00 88 10 83 00 40 23 :FE
2030 03 CC 00 40 ED 8D 00 8B 34 06 EC 8D 00 75 A3 E1 :C0
2040 ED 8D 00 6F 8D 42 33 8D 00 6B 8E FC 82 C6 11 8D :53
2050 2C 8D 4A 8D 52 8D 31 CE FC C0 AE 8D 00 51 E6 8D :29
2060 00 62 8D 19 B6 FC 80 8A 80 B7 FC 80 8D 2F 8D 37 :F7
2070 30 85 AF 8D 00 39 EC 8D 00 39 26 9C 39 34 56 37 :98
2080 02 A7 80 5A 26 F9 35 D6 34 02 B6 FD 05 2B FB 1A :DB
2090 50 86 80 B7 FD 05 B6 FD 05 2A FB 35 82 34 02 4F :28
20A0 B7 FD 05 1C AF 35 82 34 02 4F 4A 26 FD 35 82 60 :44
20B0 00 00 00 00 00 3F 59 41 4D 41 55 43 48 49 91 FF :20
20C0 C0 D3 C0 00 40 90 00 00 00 00 00 00 00 00 00 00 :23
20D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :00
20E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :00
20F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :00
--------------------------------------------------------
Sum: A4 EF 18 E9 4C 20 C9 36 89 6A 0F FF 84 FC 99 1B :34

START = 2000
END   = 20C5
ENTRY = 2000


GETDOSのダンプリスト

一応ポジションインデペンデントのはず。試してないけど(^^;

Add  +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F Sum
2000 1A 50 8D 17 CE FE 00 8E 30 00 10 8E 02 00 37 02 :71
2010 A7 80 31 3F 26 F8 8D 03 1C AF 39 34 02 86 41 B7 :FD
2020 FD 03 B6 FD 04 85 02 26 F9 B6 FD 04 85 02 27 F9 :BB
2030 35 82 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :B7
2040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :00
2050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :00
2060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :00
2070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :00
2080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :00
2090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :00
20A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :00
20B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :00
20C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :00
20D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :00
20E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :00
20F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :00
--------------------------------------------------------
Sum: F3 55 74 53 F8 7B 8F B7 45 65 46 C6 89 88 9F B2 :E0


START = 2000
END   = 2031
ENTRY = 2000