● ROMファイルの取り出し方

ここの情報は私の実機(FM-NEW7)に搭載されていたROMをROMライタで吸い出した結果を元に作成されています。FM-7やFM-77など別機種では当然、また別機種でも製造時期やレビジョンの違いによりシルク型番やROM型番、含まれている内容など異なるかもしれません。ご注意ください。

FM-NEW7に搭載されているROMの種類と中身
ROMライタでROMを吸い出す
ROM内容詳細 あまり詳しくないとの噂も…


●FM-NEW7に搭載されているROMの種類と中身

ROMの内容 シルク 実際のROM型名 ROMライタで読み出したときに使用したROM型名 読み出したあとのサイズ 格納されている範囲 備考
SUB-System Monitor M60 (SC4) MB83256 MB27C256 32KB Sub: $D000-$FFFF キャラクタROMとサブシステムモニタ
F-BASIC Interpreter M74 (SC3) MB83256 MB27C256 32KB Main: $8000-$FFFF $FC00-$FFFFは未使用
IPL M73 (SC1) MB8516 MB8516 2KB Main:
    $FE00-$FFFF×4
$FE00-$FFFFの512バイトの内容が4バンク分収められている

ROMのありかはこちら(写真つき:FM-NEW7)


●ROMライタでROMを吸い出す

ここでは、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の内容は以下のようになっています。

ここに掲載した表のデータは、私が吸い出した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に現れる。