● ROMファイルの取り出し方
ここの情報は私の実機(FM-NEW7)に搭載されていたROMをROMライタで吸い出した結果を元に作成されています。FM-7やFM-77など別機種では当然、また別機種でも製造時期やレビジョンの違いによりシルク型番やROM型番、含まれている内容など異なるかもしれません。ご注意ください。
★FM-NEW7に搭載されているROMの種類と中身
★ROMライタでROMを吸い出す
★ROM内容詳細
あまり詳しくないとの噂も…
ROMのありかはこちら(写真つき:FM-NEW7)
ここでは、ROMライタを使ってROMデータを吸い出す方法をご紹介します。ROMライタ個別の使用方法、操作手順などについては説明いたしません(っていうか、できない)。ご了承願います。
前述のように、FM-NEW7にはROMが3個載っています。これを抜き取り、ROMライタでデータを読み出すわけです。
1.ROMを取り外す
まずはFM-NEW7を分解します。普通のドライバさえあれば分解できるはずです。内部のシールド板はツメを起こさないと外せません。
ROMは、M60, M74, M73の3つです。ROMの場所はこちらをご参考ください。3つともソケットに載っているはずですので、マイナスドライバなどを駆使(?)してROMを取り外してください。取り外す際は、端のピンが曲がりやすいので注意してください。ROMの足は2〜3度も曲げると折れることがあります。まぁ、DIP品ですからいくらでもはんだ付けでリカバリできますけどね。
2.ROMライタで読み出す
各ROMをROMライタに装着し、データを読み出します。私はシリコンシグネチャを使ったオートデバイスセレクトを使って読み出しました。オートデバイスセレクトができないROMライタの場合は、読み出しの際のデバイス名は「FM-7NEWに搭載されているROMの種類と中身」の表に載っているROMの種類を参考に設定してください。
読み出したあとのデータはMotorola-SレコードかバイナリファイルにしてDOS/V PCに転送してください。その際、各ROMに対応するファイル名を以下のようにしてください。ちなみに、バイナリファイルとしてPCに転送できる場合は、次の3.を飛ばして4.に進んでください(ROMライタがZ-Modemとか使えないとだめなはずだよね…)。
ROM | Motorola-S時のファイル名 | バイナリ時のファイル名 |
Sub System Monitor | SUBMON.MOT | SUBMON.BIN |
F-BASIC | FBASIC.MOT | FBASIC.BIN |
IPL | BOOTROM.MOT | BOOTROM.BIN |
3.Motorola-Sファイルからバイナリファイルに変換する
ROMライタから転送したMotorola-Sファイルを、ベタのバイナリイメージに変換します。
私のホームページのダウンロードコーナーから、「mot2bin」ユーティリティーをダウンロードしてください。これを使用して、
C:\> mot2bin submon.mot submon.bin
C:\> mot2bin fbasic.mot fbasic.bin
C:\> mot2bin bootrom.mot boortom.bin
のようにしてベタイメージに変換してください。これでROMの内容がそのままファイルになったことになります。
4.バイナリファイルからXM7に必要なROMファイルを作成する
XM7にはROMの内容(3.で作成したファイル)をそのまま与えても動きません。ROM内の必要な部分だけを切り出し、ファイル化する必要があります。バイナリエディタ(Bzエディタ、Foxなど)をお持ちの方はこれを使って必要な部分をカット&ペーストして、必要なファイルを作成できます。必要なのは以下の部分です。
XM7に必要なファイル | 元ファイル | 元ファイルの中の必要な範囲 | 内容 |
FBASIC30.ROM | FBASIC.BIN | $0000-$7BFF | F-BASIC & F-BIOS |
SUBSYS_C.ROM | SUBMON.BIN | $5800-$7FFF | サブシステムモニタ&キャラクタROM |
BOOT_BAS.ROM | BOOTROM.BIN | $0000-$01FF | BASICモード用IPL |
BOOT_DOS.ROM | BOOTROM.BIN | $0400-$05FF | DOSモード用IPL |
しかし、バイナリエディタでファイルを作るは面倒なので、XM7に必要なROMファイルを作成する「ROMCUT」というツールを作ってみました(10分くらいで作った超突貫工事品です)。このツールを使うと、先ほどのFBASIC.BIN, SUBMON.BIN, BOOTROM.BINから必要なファイルを自動作成します。詳しい使い方はダウンロードページで確認してください。
ROMライタで吸い出したROMの内容は以下のようになっています。
ここに掲載した表のデータは、私が吸い出したROM内容のダンプ結果からの推測です。実機のデコーダ内容を解析したわけではありませんので、間違っているかもしれません。まぁ、私はこの内容を元にXM7用ROMを作って動いているので問題ないと思いますが…
ちなみに、F-BASIC ROMにもBOOT ROMらしき内容が含まれていますが、実機からこの内容は見ることができません(たぶん)。この部分を切り出してBOOT_BAS.ROMとしてXM7に与えてみると、何の問題も無くゲームやF-BASIC(DISKモード、ROMモード)が起動できます。ただし、ROM内容は本物(IPL ROMに格納されているBASICモード用IPL)とは異なっていますので何か問題があるかもしれません。
●SUB System Monitor
ROM内アドレス | 実機でのSUBシステム内の割り当て範囲 | 割当容量 | 内容 |
$0000-$57FF | $8000-$D7FF | 22KB | キャラクタROMのシャドウなど(たぶん未使用)。実機ではVRAM(G)、コンソールバッファ、ワークRAM、共有RAM、I/O領域がある |
$5800-$5FFF | $D800-$DFFF | 2KB | キャラクタROM |
$6000-$7FFF | $E000-$FFFF | 8KB | サブモニタ |
●F-BASIC Interpreter
ROM内アドレス | 実機でのMAINシステム内の割り当てアドレス | 割当容量 | 内容 |
$0000-$7BFF | $8000-$FBFF | 31KB | F-BASICインタプリタ |
$7C00-$7DFF | $FC00-$FCFF | 0.5KB | 0で埋められている。実機ではRAM、共有RAM、I/O領域がある |
$7E00-$7FFF | $FE00-$FFFF | 0.5KB | ブートROM(F-BASIC)。実機ではこの内容ではなく、別のIPL ROMに書かれているブートROMが使用される |
●IPL
ROM内アドレス | 実機でのMAINシステム内の割り当てアドレス | 割当容量 | 内容 |
$0000-$01FF | $FE00-$FFFF(*1) | 0.5KB | BASICモード時 (SW1=ON, SW2=ON) |
$0200-$03FF | $FE00-$FFFF(*1) | 0.5KB | 未使用 |
$0400-$05FF | $FE00-$FFFF(*1) | 0.5KB | DOSモード時 (SW1=ON, SW2=OFF) |
$0600-$07FF | $FE00-$FFFF(*1) | 0.5KB | 未使用 |
(*1) FM-7背面のディップスイッチの1,2番スイッチの設定によりいずれかひとつの内容が$FE00-$FFFFに現れる。