フロッピー版IPLwareおよびそのFD作成ツール

”フロッピー起動でIPLware”

FD-IPLware Version 3.14

Copyright (C) 2022-23 まりも(DOSsoft)

  フロッピー以外もブートできます 

■ このツールFD-IPLwareの目的

 当サイトでは、PC-98を強化するソフトウェアツールとして、20年前にIPLwareという仕組みのプログラムを発表しました。以来IPLwareのアプリケーションについても多数公開していますし、他の方が作成したものもいろいろ知られています。それらはハードディスクに組み込んで使うものでした。

 しかしハードディスクが無い環境であったり、IPLwareのようなものをインストールすることが禁じられている環境というのもあろうかと思います。またフロッピーディスクからOSを起動して運用したいだけなのにハードディスクを用意するのは面倒ということもあるでしょう。

 そのようなことから、「フロッピー起動でも従来のIPLwareアプリケーションが使える」という新たな仕組みを作りました。IPLwareのローダの入ったフロッピーから起動させ、それが終了したあとは、キーボード操作により、再度フロッピーから起動、あるいはIDE,SASI、SCSIのハードディスク、MOの起動に移行することができる仕組みです。ROM BASICが廃止された機種でも起動できるようにする機能がバージョン3.1から追加されています(日電製98のみ対応)。

[同意の上ダウンロードする]

■ 使い方

 起動に使う新しい(空の)フロッピーディスク(FD)が必要です。format /m コマンドなどで1024B/s 8セクタで物理フォーマットされたものを用意してください。FDはもっとも若い番号のドライブに挿入しておきます。2ドライブ仕様の機種ではフロントパネルに1と書かれているはずです。外付けドライブが接続されていて、かつDIP SWITCH 1-4を変更している場合、そちらが若い番号になることに注意しておいてください。

 アーカイブを解凍すると次のものがあります。
・IPLWMKFD.EXE  FD版IPLware フロッピー作成プログラム
これ以外にIPLwareのアプリケーションソフトのモジュールが必要です。そのファイル名を仮にXXXX.BIN としておきます。

 MS-DOSのコマンドラインから

IPLWMKFD   XXXX.BIN

のようにして実行します。引数としてのファイル名をつけ忘れた場合は途中で尋ねられます。カレントディレクトリ以外に存在する場合はfull path名で与えてください。なお日本語を含む文字(全角文字)のファイル名の場合でも正しく解釈されるはずです。

 IPLwareアプリケーションのファイルをみつけると、フロッピーに論理フォーマットとアプリケーションプログラムの登録が行われます。フロッピーの内容をみると、アプリケーションのプログラム名が拡張子.APPで存在しているはずです。ただしファイルのサイズは元とは変わって、8KBの倍数値(物理トラック単位)に丸めこまれます。

■ 運用法

 まず98本体のメモリスイッチ設定のBOOT装置項目は必ず「標準」にしておいてください。作成されたFDを最も若い番号のドライブに入れた状態で再起動すると、ローダプログラムが読み込まれ、登録したIPLwareアプリケーションが実行されます。実行終了後には、最下行付近に青バックでメッセージが出ます。

  「フロッピーディスクをOS起動用のものに交換してから、Enterキーを押してください」

 このとおりにすれば別のFDからの起動にはなります。しかし他のキーを操作すると、フロッピーが挿入されていても別デバイスのIPLの起動に移ります。それには以下のようなものがあります。
 キー  起動デバイス

フロッピーから起動したにもかかわらず、このあとは起動したいデバイスを選ぶことができるわけです。これはなかなか便利かと思います。なおF を押した場合はFDのみからの起動になります。

■ 応用(とくにOSインストール時) 

 FD-IPLwareがとくに有用な場面というのは、OSの新規インストールでしょう。このときはハードディスクがまっさらな状態ですからIPLwareは入っていません。しかし98の機種・環境によっては、適当なIPLwareが実行済みでないとハードディスクそのものやパーティションの認識ができないことがあります。たとえばDISK BIOSのCHSパラメータを変更するような場合です。

 LBA_IDEこのリンク中のIDE-BIOS-LBA-Patch.7z)やEXIDE32Gといったツールがそれですが、予めパラメータを変えてからインストールしないとならず、未使用のハードディスクではそれが難しいという問題がありました。しかしFD-IPLwareでそれらの入ったFDを作り、それを起動してからOSのインストール作業に入れば問題ありません。FD-IPLwareでは起動FDを入れっぱなしにしておいてもハードディスクからの起動が選べますから、適当な段階でハードディスクからの起動に移ればよいのです。

 2022年5月中旬現在で、LBA_IDEがFD-IPLwareとしても動作する確認は取れています。また旧作EXIDE32Gについてはいったん公開を終了しておりますが、ハードディスクに組み込まれたものを iplware -s exide32g として取り出したバイナリプログラム(EXIDE32G.BIN)は、単体でIPLwareアプリケーションですので、FD-IPLwareとしても使えます。ただしCHSパラメータは既に設定済みの状態のままとなります。

 IPLwuniで複数のアプリケーションをバインドしたモジュールも動作します。これにより、いちいち単一のアプリケーションごとにFDを差し替えてブートする必要がなくなるほか、実行順序を遵守しなければならないような場合にも対応できます。

 N88 DISK BASICのFD起動など、これまで起動前にIPLwareアプリケーションを使うことができなかったFD版OSでも使うことができます。

 OSが対応しておらずセクタ長が512バイトのハードディスクが使えなかった場合でも、FD-IPLwareならIPLwareアプリケーションが使用できます。

■ 注意事項

 対応IPLwareのアプリケーションのバージョンは 3.00となります。3.33以上を要求するものは動作しません。またIPLwareアプリケーション自身のデータを書き換えるもの、すなわちハードディスクに書き込むものも動作しません。なおそのようアプリケーションが正しくバージョンチェックをしなかった場合でも、ハードディスクへの誤った書き込みは起こさないようにはなっています。

 アプリケーションの実行モジュールのサイズは、56320バイトまで扱うことができます。これはHDD用のIPLware.exeの上限より少し大きいです。

 IPLwareのアプリケーションにはCOMプログラム完全互換のタイプ2とそうでないタイプ1がありますが、拡張子が.COMの場合に限って タイプ2と判断します。

 MS-DOSコールが存在するかどうかの検索を行っています。もし意図せずそのように表示された場合は、アプリケーションプログラムが本当にIPLwareとして正しいものか点検してください。

 FD-IPLwareのFD作成時、IPLWMKFD.EXE を実行させるときのMS-DOSとしてはバージョン5以上が望ましいです。MS-DOS 3.xでも実行できるようにはしましたが、MS-DOS 2.11ではテストされていません。意図しないドライブや意図しない位置のセクタに書き込む可能性があります。

 CPUの制約はないという報告を受けていますので少なくとも80286/V30から使用できるはずです。

 アプリケーションプログラムのファイルを削除して別のものを上書きした場合は実行を回避します。IPLのみでもブート選択機能としては使えます(バージョン3.02)。

■ 技術的情報

 アプリケーションプログラムがセグメント6000hオフセット0100hにロードされる点は、HDD版のIPLwareとまったく同じです。IPLwuniでバインドしたモジュールでも動作します。HDD版と異なるのは、バージョンが3.30未満であることです。たとえば開始時点のレジスタがSI=0303h,DI=0000hであれば3.03を意味します。その場合開始時点のレジスタはモジュールのディスク上の存在場所を示しません。CX=FFFFh, DX=FFFFhとしています。

 セグメントレジスタはCS=DS=ES=SS=6000hです。スタックポインタは BP=SP=F7FEhです。なおこれは3.00版と3.05版とで異なる点です。オフセットF800h-FFFFhのところをFD-IPLwareのアプリケーション(PCISETなど)で設定記憶域として使う目的で予約としています。

 FD-IPLwareのフロッピーは必ず2HD 1024B/sect,1232KBのフォーマットです。ファイルシステム上は、アプリケ−ション部はファイルとして見えるようにしてあります。8192〜57344バイトの書き込み禁止ファイルとなっています。空いているところに関係ないデータファイルを保存することは問題ありません。

 FD-IPLwareのフロッピーにCHKDSKをおこなうと「スキップセクタ」が5120バイト存在すると出ますが、これはクラスタ番号2〜6のところを将来予約としているためです。FDのIPLは1024バイトいっぱいまで使い切っており、今後に改良や修正が発生した場合、不足を補うためそこを使う可能性があります。

 FD上のマップは次の通りです。ただし先頭0からの通しの論理セクタ単位で表記しています。
LBA  内容
0   マスタブートレコード(内容はBPB,IPLコード)
1,2  FAT#1
3,4  FAT#2
5〜10 ディレクトリエントリ<ここまで通常のDOSフォーマットと同じ>
11〜15将来予約(IPLコード域の拡張用)5セクタ(クラスタ番号2〜6)
16〜 8セクタ単位でアプリケーションプログラムの存在場所

 マスタ−ブートレコードの内容については次のとおりです。
オフセット00h〜3Dh 通常のBIOS parameter blockとしてのデータ
オフセット3Eh〜3Fh IPLコードへのジャンプ命令
オフセット40h    bit6が1のときタイプ2、0のときタイプ1
オフセット41h    1〜7の値でアプリ部の8KB単位ファイルサイズ
以降3FFhまで    IPLコードと自身が使うデータ

 全ソースコードがこちらにあります。ZIPアーカイブにまとめられています。IPLWMKFD.EXEのソースはCで書かれたIPLWMKFD.Cがメインのソースですが、一部の関数はMKFDDOS.S にあるように x86アセンブリ言語で書かれています。80386オプションは使っていないので8086機でも動作するはずです。IPL部はFDIPLW.Sにあるとおりのx86アセンブリ言語で書かれています。これのバイナリデータをテキスト化したものを、Cのソースで取り込んでいます。

 このソースプログラムを参考に別のフリーソフトを開発することは妨げません。自由にお使いいただいて構いません。

■ お約束

 このプログラムはフリーソフトウェアです。自由に使用してよい代わりにサポートはありません。直接的・間接的に、このプログラムの運用の結果に何があっても、作者は一切責任を負わないものとします。著作権は作者が保持しています。著作権侵害のないようにお使い下さい。他のサイトへの転載は認めません。連絡先メールアドレスは、トップページに記載されています。

2022-5-20,30 まりも (連絡先メールアドレスはホームページ上で)

【改版履歴】

2022. 5.20 3.00版 新規作成 HDD版と一致させるため3.00で開始
2022. 5.24 3.01版 モジュールTYPE2の拡張子判別の誤りと、i486機でTYPE2が動作しなかった問題を修正
2022. 5.25 3.02版 3.01版がほとんどのアプリケーションで動作しなかったバグを修正、IPLのみでもブート選択は実行できるようにした
2022. 5.27 3.03版 開始時16色mode,IPLのOEM文字列,コードサイズ縮小など小改良
2022. 5.30 3.05版 DOS 3.3以下で実行可能に, ファイル名で相対path名対応,区切り文字に / も使用可能に
2022. 7.17 3.10版 [B]でROM BASICが起動できる機能を追加した
2023. 2.15 3.14版 日本語(全角)ファイル名に対応した

[戻る]