今年買ってよかったもの 2023年版

PC-98(PC-9821)実機からBIOSやフォントなどをダンプする - 実践編

 前回の記事で、PC-98エミュはどのようなものがあり、どのあたりのダンプデータを要求し、どのツールで用意できるかをまとめました。
今回はそれを踏まえた実践編です。

【全体を通じた注意点】
フロッピーディスクはドライブ動作中に抜かないでください
      - 必ずドライブの回転が停止している事を確認してから抜いてください
・作業に使うフロッピーディスクはフォーマットするため、元あったデータは消えます
      - 一応念のため書いておきます

【必要なもの】
=ハード類=
・Windowsパソコン
      - 10で確認しました。恐らく11でも大丈夫です。
      - 各ツールの動作環境を見るに、最低でもNT4.0があればどうにかなりそうです。
      - 以後の解説はWindows10 21H2 64bit版での場合となります。

・3モード対応のUSB-FDD

      - フロッピーディスクドライブ。必ず3モード対応を選んでください。
      - より具体的には1.23MB(または1.25MB)の2HDへの対応が必須です。
      - Amazonで現在新品販売されているようなものは非対応だったりで、中古ドライブになると思います。
      - 私は恐らくThinkPad付属品だったIBMのUSB-FDDを使いました。中身はTEAC FD-05PUBです。

・2HDの空FD

      - フロッピーディスク。実際に使うのは1枚のみです。
      - トラブルがあった際の手間を考えると、数枚あると安心だと思います。
      - 2HDであればDOS/V用やWindows用、多分Machintosh用でも大丈夫でしょう。

・3.5インチの2HD対応FDDが一基以上動作するPC-98本体

      - 2ドライブある場合、どちらからでも起動可能です。
      - SOUND.ROMをダンプしたい場合は、86音源を搭載した本体でサウンドBIOSを有効化してください。
      - IDEBIOS.ROMとSCSIBIOS.ROMをダンプする場合は、ツールの注意書きに従って設定してください。

・PC-98の操作に必要な周辺機器

      - キーボードとディスプレイが最低限必要です。
      - キーボードはPC-98シリーズ専用のものが必要になります。
      - PC-9821であれば、31kHzモード(起動/リセット時に[GRAPH] + [2])で何かしら読み取れると思います。
      - 2列タイプのD-Subコネクタを採用している機種の場合は、3列タイプに変換するのが無難です。
      - PC-9801の場合は、24kHz対応ディスプレイとDIN-VGA変換を用意する必要があると思います。
      - PC-9821は24kHzモード(起動/リセット時に[GRAPH] + [1])にも設定できます。
      - 24kHzを受け付けるディスプレイの情報は色々あるので、調べてみる事をお勧めします。
      - 私はメインモニターが24kHzを受け付けるRDT234WXなので、それに繋ぎました。

=ソフト類=
FreeDOS(98)
   (執筆時最新版: fd98_2hd144_20220123.zip)
      - この記事ではFreeDOS(98)を使用した方法を説明します。
      - 詳細は省きますが、FreeDOS(98)はオープンソースのMS-DOS互換OSです。
      - PC-98用MS-DOSを何かしら持っている場合は、ここでは説明しませんがそちらでも大丈夫です。
      - ダンプツールで出力されるROMは、FreeDOS(98)とMS-DOS5.0Aとの間で違いがない事を確認済みです。
      - 「FreeDOS(98)起動フロッピーディスクイメージ(2HD&1.44M)」から入手。

フロッピーディスクを 1.2M (2HD) でフォーマットするツール
   (執筆時の最新版: format2hd-wip-20191025-bin.zip)
      - FreeDOS(98)の開発者が制作しているフォーマットツールです。
      - 「[おまけ] フロッピーディスクを 1.2M (2HD) でフォーマットするツール(Windows用)」から入手。

DiskExplorer
   (執筆時の最新版: editd169.lzh)
      - FDイメージを編集するツールです。
      - 複数のイメージ形式に対応していますが、今回の作業ではplain image形式しか使いません。
      - リンク先ダウンロード欄から入手。

RawWrite for Windows
   (執筆時の最新版: rawwritewin-0.7.zip)
      - FDイメージを作成/書き込みするツールです。
      - リンク先Download欄から入手。

・PC-98のシステムROMダンプツール
      - 前回の記事で挙げた通り種類が多いです。必要に応じて選んでください。
      - せっかく行うことですし、一通り揃うオススメの構成を以下に提示します。

ツール名テスト時アーカイブ名出力バイナリ備考
GETBIOS.COMnp2_getbios.zipBIOS.ROM
FONT.ROM (Fill=0x00)
SOUND.ROM
np2系などで使う基本的なセット
FONT.ROMの空データ部分の取り扱いが何故かこれだけ違う
MAKEFONT.EXEnp2_makefont.zipFONT.BMPnp2系などで使える別形式のフォントデータ
ノイズのような部分の出力結果が実行する毎に若干変わる(後述)
ROMMAKE.EXEntool007.lzhBIOS.ROM
FONT.ROM (Fill=0xFF)
SOUND.ROM
FONT.ROMの空データが0xFFで埋められたものを出力
FONT.ROMは
v98tools.lzh内のMKFONT.COMのものと同一
MKROMIMG.EXEforPC-98_160803.zipBIOS.ROM
SNDBIOS.ROM
ITF.ROM
BANK.ROM
IDEBIOS.ROM
SCSIBIOS.ROM
FONT.DAT
SL9821用のツール
IDEBIOSとSCSIBIOSについては公式サイトの注意書きを参照
FONT.DATはFONT.ROMともFONT.BMPとも一致しない
np2系の一部で使われているITF.ROMはこれが使える
ITF.ROMは
v98tools.lzh内のMKBIOS.COMの出力物でもOK
RECRTM.EXEforPC-98_160803.zipRHYTHM.DATSL9821用のツール
リズム音源を再生し、PCM音源で録音してリズム音源データを生成
86音源が無い場合は実行不要
GETITF98.EXEitf98220.zipBANK0.BIN
BANK1.BIN
BANK2.BIN
BANK3.BIN
BANK4.BIN
BANK5.BIN
BANK6.BIN
BANK7.BIN
オプション
この形式を要求するエミュレーターは今の所ありませんITF等のITF/BIOSのROMチップ全体をバンクごとにダンプします
機種によってはBANK8~BANKFもダンプされます
このツールの出力を得ようとするとFDの入れ替え回数が一回増える


【作業手順】
=起動ディスクイメージの準備=
1. FreeDOS(98)の、fd98_2hd.imgをコピーして適当な名前に変更してください。説明上はfd98_dumper.imgとします。

2. DiskExplorerでfd98_dumper.imgを開きます。plain imageで開くと、以下の画像のような中身が見えます。

3. fd98_dumper.imgから、COMMAND.COMとKERNEL.SYS以外を全て削除します。作業後は以下の画像のようになるはずです。
(DOS上からディスクをフォーマット→システム転送した直後の状態を再現しています)

4. fd98_dumper.imgに、PC-98のシステムROMダンプツール達を書き込んでいきます。
以下の画像のように、ツール名のディレクトリを作り、その中にツールを入れるのがオススメです。
こうしておくことで、実行したツールの出力結果が分からなくなることを防ぎます。

5. 上記作業が終わったらDiskExplorerを終了(閉じる)します。
この手順は非常に重要で、DiskExplorerはイメージを開いている間はそのイメージファイルをロックし、プログラムの終了(または他のイメージを開く)タイミングで編集内容を保存する仕組みになっているためです。 

 

=イメージを物理FDに書き込む=
1. 3モード対応のUSB-FDDをWindowsパソコンに接続し、ドライブが正常に認識されていることを確認します。ドライブレターを覚えておいてください。
以後の説明はAドライブであった事を前提とするので、他のドライブレターだった場合は読み替えてください。

2. ライトプロテクトを外した2HDの空FDを、USB-FDDに挿入します。

3. フロッピーディスクを 1.2M (2HD) でフォーマットするツールのx64フォルダ(32bit版Windowsの場合はx86)に入り、右クリックから端末(またはPowerShell)を開きます。

3. 端末上で以下のコマンドを実行します。
.\format2hd.exe A: /F:1.23 /VERIFY
フォーマットが実行され、プロンプトに戻ってきたら完了です。端末は閉じてください。

4. RawWrite for Windowsを起動し、Floppy driveボックスで正しいドライブレターを選択し、Writeタブを開きます。

5. image fileのボタンから「起動ディスクイメージの準備」で作成したfd98_dumper.imgを選択し、Number of copiesは1のまま、Writeボタンを押します。

6. 書き込みに成功するとダイアログが表示されます。成功後、USB-FDDからFDを取り出します。

RawWrite for Windowsは開いたままの方がこの後スムーズです。


=PC-98からダンプ=
1. USB-FDDから取り出したFDを、PC-98のFDDに挿入し、電源を入れます。
正常に起動すれば、このような画面が表示されます。

2. ダンプツール達を実行していきます。任意のツール名のディレクトリに移動(cd [ディレクトリ名])し、中に入っているツールを実行します。
オススメ一覧の全てをダンプする場合、容量の関係上FDを4往復する必要があります。
ツール実行順のオススメは以下です
・1回目 - GETBIOS, MAKEFONT
                  (FONT.ROM (0x00埋め)とBIOS.ROMなど基本的なもの)
・2回目 - ROMMAKE
                  (FONT.ROM (0xFF埋め)とBIOS.ROMなど基本的なもの)
・3回目 - MKROMIMG, RECRTM
                  (SL9821用一式、ITF.ROMも生成)
・4回目 - GETITF98
                  (ITF/BIOSのROMの全体)

画像はGETITF98実行時の一例です。

3.ダンプツールの実行が一回終わったら、PC-98の電源を切り、使用したFDを取り出してWindowsのUSB-FDDに再度挿入します。

4. RawWrite for Windowsを開き、Readタブに切り替えます。

5. image fileのボタンからイメージの保存先と名前を選択します。fd98_dumper_[回数].imgのように名前をつけ、上書きしないようにしましょう。

6. 名前と保存先が決まったらReadボタンを押します。左下の数値が100%になれば完了です。ReadはWriteのようなダイアログは表示されません。

7. 再びWriteタブを開き、「起動ディスクイメージの準備」で作成したfd98_dumper.imgをFDに書き込み(上書き)します。

8. 当「PC-98からダンプ」の手順1に戻り、実行するダンプツールを変えて必要回数分繰り返します。

 

=ダンプしたROMの取り出し=
1. DiskExplorerでfd98_dumper_[回数].imgとして保存したイメージを開きます。

2. fd98_dumper_[回数].img内のディレクトリ(「SYSTEM~1」というディレクトリがある場合はこれを除く)を全て選択し、任意の場所にコピーします。

3. DiskExplorerで別のfd98_dumper_[回数].imgとして保存したイメージを開き、手順2を再び行います。保存したイメージ全てに対してこの作業を行います。
DiskExplorerから同じ場所に上書きコピーしていきます。

4. 全てのイメージでの作業が完了したら、それぞれのツール名のディレクトリにそれぞれのダンプ内容と(とダンプツール)が保存されたものができあがります。おつかれさまでした。

 ==================================================

手順を一から説明したので長くなってしまいましたが、 2022年現在はこの手順であればMS-DOSや古いWindowsなどを持っていなくてもダンプが行えるので、一番手軽ではないかと思います。
よく要求されるBIOSやフォントは決まっているので、ツール名ディレクトリとは別に、取り出しやすくまとめておくのもいいと思います。
以下画像の組み合わせであれば、概ね何にでも対応できて便利だと思います。

カスタムしたFreeDOS(86)のイメージを書き込んだ FDからDOSが立ち上がらない場合の、自分が遭遇した状況と原因もまとめておきます。
・「No system files」の出た場合
      - フォーマットに失敗
      - イメージ書き込みに失敗
      - FreeDOS(86)の起動に必要なファイルが足りない (COMMAND.COMとKERNEL.SYSが最小)
・「システムディスクをセットしてください」の場合
      - FDドライブ不調
・FreeDOS(98)のカーネルは立ち上がったがプロンプトが出ない
      - イメージの書き込み不良
      - ディスクの損傷

RawWrite for Windowsで保存したイメージにあったりなかったりする「SYSTEM~1」というディレクトリはWindowsのSystem Volume Informationで、マウントした際にライトプロテクトがオフ、かつWindowsがアクセスしていた場合に書き込まれる事があります。PC-98にとっては余計な存在なのですが、今回の作業では影響がないので、ライトプロテクトを一度も切り替えずに最後まで作業するような手順にしてあります。

86音源が搭載されているにもかかわらず、SOUND.ROMがうまくダンプされない場合は、ディップスイッチ設定を確認しましょう。サウンドBIOSが切り離されているとダンプできません。
機種によりますが、ディップスイッチが物理の場合は見た目通りに、ソフトの場合はテンキー上の[HELP]キーを押しながら起動です。ハードの場合は第三研究所さんの記事を参考に設定しましょう。ソフトの場合は画面に表示されます。
ソフトDIPの初期化キーは、テンキー上の[HOME|CLR]キーです。確認ダイアログ等はありませんので注意してください。

また、FONT.BMPはダンプの試行毎に画像上黄色になっているのノイズのようなエリアの内容が変化する様子です。

念のためMS-DOS5.0A環境で2回ダンプしたものを比較したりもしましたが、異なった内容が出力されました。
この領域は恐らく表示される事もないと思われるので気にすることもないと思いますが、複数回やってもチェックサムが一致しないのが普通らしい事はここに記しておきます。

2022/10/04 初版

コメント