PC-9821ハードディスクIPL組み込みプログラムローダ
IPLware 第3.93版 プログラム操作説明書
                Copyright(C) 2001-2005,2019-2023 まりも

組み込み仕様説明書を読む
プログラム(ZIP)をダウンロードする

【0】IPLwareとは---その目的---

 CPUや周辺回路などのハードウェアの中には、OSが起動するまえに適切に設定しておかないと、正常に動作しないものがあります。そのような設定は通常はBIOSが行なう仕事ですが、PC-9821シリーズの場合は1997年時点の設計で止まってしまっているため、BIOSは新しいハードウェアを知りません。ですから、自前でプログラムを作成して、ハードウェアの設定を行なう必要があります。そためのプログラムの実行環境を提供するのが、IPLwareです。

 マシンが起動する際に最初にハードディスクから読み込まれる領域をIPL(Initial Program Loader)と呼びますが、IPLwareではそこにプログラムを追加して、OS起動よりまえにいろいろな仕事をさせます。IPLは本来ユーザが自由いじってよい場所ではありませんから、いくつかのプログラムを組み込みたくても、そのためのインターフェイスが用意されているわけではありません。各人が作成したプログラム同士の競合が発生してしまいがちです。そこで独自に仕様を定めて、プログラムモジュールの組み込み・取り外しが容易にできるようにしました。IPLwareとは、IPLware.exeそのものというよりは、組み込み方式の名称と言えます。
 

【1】IPLwareプログラムの使い方

● 組み込み時に使用するDOS環境

 DOSコマンドの使い方が分からないということはないでしょうから、簡単に書いておきます。操作は全てDOSのコマンドラインから行ないます。Windows9xやNTのDOSプロンプト上(DOS窓)からは使用できませんので注意して下さい。必ずMS-DOSそのものまたはMS-DOSモードを使用してください。

● IPLwareが使用できる条件
・PC-9801,9821シリーズであること
・CPUが80386以上であること(80286機に80386以上のCPUアクセラレータは可)
・インストールされている固定ディスク起動メニューのバージョンが2.70であること
となっています。
バージョン3.86からは、セクタ長が256バイトのディスクドライブにも対応し、MS-DOS 3.30Dで作られる固定ディスク起動メニューバージョン2.20にも対応しています。

● 組み込まれるのは、「ローダ」と「アプリケーションプログラムモジュール」

 IPLwareでは、「ローダ」部分と「アプリケーション(ユーザ)プログラムモジュール」部分とに分けてIPLに組み込まれます。「アプリケーションプログラムモジュール」は、後述のとおり、各自が用意しなくてはなりません。ローダ部分は、IPLware.exe内部に格納されていて、IPLに組み込み時に抽出されます。
 

●コマンドラインの意味

◎組み込み時

 IPLware  filename

 ここで、filenameは、使用者が作成したプログラムモジュールのファイル名です(プログラムの、IPLwareとして実行可能な要件は、後述します)。任意の 8文字.3文字 拡張子の名前を与えて下さい。Windows9xの長い名前は使えません。大文字小文字の区別は行ないません。日本語文字(シフトJISコード)のファイル名を使用することはできますが、半角との混在でバイト数が9以上にならないように注意して下さい。組み込んだときのファイル名の、拡張子を除いた8文字(以内の部分)は、以降この組み込みプログラムモジュールの識別文字列(IDname)となります(下記)。

◎取り外し時

 IPLware  /r  IDname

 スイッチキャラクタ r が含まれると、取り外しと解釈します。IDnameをもつ組み込み済みのプログラムをIPLパッチから取り外します。/rと IDnameとの順序はどちらが先でも構いません。記号パラメータです。IDname は、組み込んだときのファイル名の、拡張子を除いた8文字(以内の部分)です。なおローダ部分は、一度組み込まれると、アプリケーションプログラムモジュールを全て取り外しても残ります。残っていてもとくに支障はないのですが、削除したいときは後述のオプション /x を使用してください。

◎動作を無効にする時

  IPLware  /d   IDname

 スイッチキャラクタ d が含まれると、IDnameをもつ組み込み済みのプログラムの実行を抑止します。組み込みの解除は行いません。/dと IDnameとの順序はどちらが先でも構いません。記号パラメータです。IDname は、組み込んだときのファイル名の、拡張子を除いた8文字(以内の部分)です。オプション /r で解除するともとのIPLwareアプリケーションのファイルが無いと再び組み込むことができなくなってしまいますが、/d で動作無効にするだけなら、次の /a オプションにより復活できます。

◎動作を有効にする時

  IPLware  /a   IDname

 スイッチキャラクタ a が含まれると、IDnameもつ組み込み済みのプログラムの実行を有効に戻します。/d の逆動作です。

◎ チェックサムを調べないようにするとき<3.60新機能>

 IPLware /nochecksum IDname

 組み込み時にはチェックサムを必ず調べる機能が有効になりますが、このオプションと IDname を指定すると、その名前の組み込み済みプログラムについてはチェックサムを調べないようにします。このオプションは、ディスク 書き込み型(自己書き換え型)のIPLwareアプリケーションを開発した際に、チェックサムを復元するルーチンを付けなくてもよいことにする、という場合には有用でしょう。それ以外の目的ではむやみに使用すべきではありません。そのため非常に長い文字列のオプションとしてあります。

◎登録アプリケーションをファイルに書き出す時<3.50新機能>

  IPLware  /s   IDname

 スイッチキャラクタ s が含まれると、IDnameの名前の組み込み済みプログラムをカレントディレクトリ上のファイルに書き出します。拡張子はモジュールタイプ1のとき.BINに、モジュールタイプ2のとき .COMになります。ファイルサイズはもとの通りとなります。

◎登録アプリケーションの名前を変更する時<3.50新機能>

  IPLware  /n   IDname

 スイッチキャラクタ n が含まれると、IDnameの名前の組み込み済みプログラムに、半角で最大8文字までの新しい名前をつけることができます。既存の登録プログラムと同じ名前にすることもできてしまいますが、基本的には避けてください。むやみに全角文字を使用することも避けてください(きっちり全角4文字を守れば問題はないようですが)。

◎どんなIPLwareが組み込み(登録)済みかを確認する時

 IPLware  /i

とします。IDnameの一覧が、登録テーブルに格納された順序に従って表示されます。あわせて、IPLwareアプリケーションプログラムモジュールの占有状況が表示されます。アプリケーションのほか実行可否のフラグも表示されます。緑色およびシアン色で U と表示されているセクタ番号が使用中のところです。必ず連続配置となり、リストの先頭の格納番号が偶数のものは緑色、奇数のものはシアン色となります。

 /i オプションの使用結果の例

◎IPLwareとして登録されたプログラムを全て削除するとき

 IPLware  /c

◎IPLwareプログラムローダも削除して、何も残さないようにするとき

 IPLware  /x

とします。

◎IPLwareプログラムローダだけをインストールする、更新する、表示待ち時間や背景表示を変更するとき

 IPLware  /u

とします。IPLwareが全くインストールされていないディスクにインストールされます。既にインストールされていればローダプログラムを更新します。このバージョンで更新すると3.50となります。

 「ローダ実行開始時に背景グラフィック画面を表示しますか(y/n)?」という問いが出ます。Yで応答するとグラフィック画面の表示がONとなりますが、通常、既に何かが描かれていることはありませんので、とくに表示もされません。IPLwareのアプリケーション側で画面ONを省くことができるというだけです。Nで応答するとグラフィック画面表示がオフとなりますが、アプリケーション側で画面ONにすることは自由にできます。

 ついで、「ローダ実行開始時の待ち時間を延長しますか」という問いが出ます。Yで応答すると、赤から青に変化する時間を数秒に延長します。Nで応答するとほぼ一瞬です。ESCで応答すると標準のおよそ1秒待ちとなります。デバッグ中には延長し、通常使用時には短縮しておくとよいでしょう。

 【注意】これらのカスタマイズは、他のオプション操作やアプリケーションの登録をした際には標準値に戻されます。カスタマイズする場合は、改めて /u オプションを実行する必要があります。
 

◎オプションを指定しなかったとき(バージョン3.75から) IPLware

とだけ打った場合、バージョン3.75からは警告表示のあと、デバイス選択となり、そこで選択した先のIPLwareの組み込み状況を表示するようにしました。すなわち/i オプションをつけたのと同じです。とりあえず内容を知りたいときにわざわざオプションをつけるのは面倒であるので、そのように仕様を変更しました(従来はオプションをつけよというメッセージでエラー終了としていた)。

【2】 組み込み先ハードディスクと、手動操作

● 組み込み先と実行優先順序

 PC-98で複数のハードディスクが接続されている場合、IDE#1→IDE#2→SCSIの先頭ID の順に検索され、正しいIPLが存在しているところからIPLが起動します。これはメモリスイッチのブート装置が「標準」の場合です。特定の装置に固定にすると、それ以外は検索されません。

 IPLwareも、この検索順序規則に従っており、現環境で起動優先順位先頭にあるハードディスクに組み込まれます。取り外しの際や確認の際も、組み込んだ時と同じハードディスクが選択されます。したがって、優先順位先頭にあるハードディスクを取り外してしまうと、IPLwareプログラムも実行されないことになります。その場合は現在のハードディスク構成で再度組み込んで下さい。IPLwareを組み込んであるハードディスクを他のマシンに繋いだ場合、それが起動優先順位にあれば、IPLwareも実行されてしまう点に注意して下さい。

 よくわからない場合や、頻繁に接続環境が変わる場合は、接続されている全ての装置に組み込んでおけばよいでしょう。組込先確認のところで[Y]以外を押すと、組込先を選ぶことができます。特殊なフォーマット、または未フォーマットとなっている場合は、IPLwareも組み込みできませんが、どのみちIPLが存在せず実行もされません。接続リスト上で次に現れる装置に組み込んでください。

● キー操作
 IPLwareのプログラムは、組み込まれていれば、システム起動時に自動的に実行されます。何かの理由で実行させたくない場合、あるいはIPLwareの処理は行ないたいのだけれどもフロッピーから起動したい時(OS導入時など)には、次のように手動で実行を制御することができますいずれもIPLwareローダの実行直前からキーが押されている必要があります。IPLwareローダが起動すると、画面背景がに約1秒間で変化します。この間にキーを押すようにしていて下さい。

 
  • [F]キー    IPLwareが一通り実行された後、フロッピーからブートします。フロッピーディスクは、画面がシアン色になり挿入メッセージとビープ音が出てから入れて下さい。最初から入れていると、IPLwareは全く実行されずに、いきなりフロッピーのIPLが起動してしまいます。IPLwareアプリケーションプログラムは、ハードディスクに組み込んであっても、起動時に実行されなければなんの効果もありません。なお、フロッピー起動機能はハイレゾモードでは使用できないため、リターンキーを押すと固定ディスク起動メニューに戻ります。

  •  
  • [DEL]キー IPLwareのプログラム実行をキャンセルします。
  • [HELP]キー IPLwareのアプリケーションプログラムの実行前に、Yes/Noを問い合わせてきます。
  •  DELやHELPの操作は、万一バグのあるアプリケーション作成プログラムを登録してしまって起動できなくなったような場合に、使用することになるでしょう。そのほか、当該機種では実行できないプログラムを回避したい場合などにも使えます。
     
     

    【3】諸注意

    ● 実行前・実行中の背景画面
     実行前に背景画面は赤から青に変化します。オプション /U によりその時間の長短を変えることができるほか、グラフィック画面をそのまま表示可に保つか表示不可とするかを選べます。

    ● 異常時の実行回避
     アプリケーションプログラムのバグにより、組み込んだ後にハードディスクから起動ができなくなる可能性があることに十分留意して下さい。従って、メモリスイッチの「ブート装置」設定を「標準」にしておくことをお勧めします。それと同時に、DOSが最低限起動できる起動フロッピーを予め作成し、その中に、IPLware.exeを入れて置いて下さい。ハードディスク起動が不能になったときには、このフロッピから起動して、問題のアプリケーションプログラムを組み込み解除して下さい。通常はそこまでしなくとも、手動コマンドで問題のあるプログラムモジュールの実行をキャンセルすれば大丈夫す。

    ● 複数プログラムの順序依存
     複数のプログラムを組み込む場合、その実行順序に依存関係をもたせないようにして下さい。アプリケーションプログラムモジュールの登録テーブルに書かれた順序どおりに実行をします。もし実行順序に意味を持たせる必要があるならば、実行順に組み込みを行なって下さい。しかし解除を行うと順序が変更になる場合があります。 /I オプションを使って登録内容を確認して下さい。

    ● 強制組み込み
     「IPLware以外のプログラムがあって組み込めない」というエラーが万一出た場合は、IPLware /F オプションを使うことで、強制的に組み込みはできます。しかし本当に他のソフトが入っていた場合も消去してしまいます。以前にそのようなソフトを入れていないか、確認して下さい。もし既存のソフトが本当にあった場合は、それを解除しない限り組み込めません。強制的に組み込むと、おそらく起動できなくなります。つまり、どうしてもIPLwareとは共存できない仕様の他のIPL組み込みソフトウェアは、存在するということです。

    ● 固定ディスク起動メニューの更新があった場合
     ハードディスクに対して、FDISKで最初の一個目の領域確保を行なうと、起動メニューが書き直しになる場合があります。その場合は、既に組み込んだIPLwareのローダとテーブルはすべて消去されますから、再度組み込みなおして下さい。DISKINITやMS-DOSの FORMAT /H の「装置初期化」を施した場合も同様です。Windows98 では、 FDISK /MBR あるいは /CMBR (番号)でも、IPLwareは消去されてしまいます。というように、何かの拍子に、IPLwareは他のソフトによって消去される可能性があることに留意しておいて下さい。

    ● 98フォーマットされていないHDDにIPLwareを入れることができない
     何もない状態のハードディスクが起動優先順位先頭にあり、そこにIPLwareを入れる場合には問題が発生します。IPLが未だ書かれていない未フォーマットのハードディスクにはIPLwareを組み込めません。一度本体内蔵インターフェイス(SCSIならSCSIアダプタ)につなぎDISKINITを施してあれば、組み込めるようになります。UIDE接続のためにそれができない場合は、UIDEに接続した状態でWin98をフロッピー起動して、FDISK /MBR として下さい(または FDISK /MBR 起動優先番号)。Win95しかないなどの理由でこの方法が使えない場合は、FDISKで仮に小さな領域を1つ作った状態にしてから組み込んでみてください。IPLwareを組み込んだらば当該ハードディスクの仮領域は削除しておきます。

    ● CHECKSUM不正の場合
     IPLwareを組み込んだマシンの起動時に、CHECKSUM不正 と表示されてビープ音が鳴りっぱなしになる場合は、なんらかの原因で、過去に組み込んだプログラムの本体が破壊されています。どれかのキーを押せば、とりあえず実行を回避して起動メニューに戻ります。そのプログラムを正常に動作させるには、再度組み込みなおしてください。あるいは削除して下さい。

    ● ハードディスク BIOS IPLwareアプリケーションにおける注意

     IPLwareアプリケーションのうち、ハードディスクの起動に直接関与するタイプ(DISK BIOSを操作するタイプ)のプログラムは、先にそれが組み込まれ実行されていないと、ハードディスクの領域認識や起動ができなくなる場合があります。現時点でそのようなアプリケーションとして、EXIDE32G, UIDESCSIがあります。 これらのプログラムの対象とするハードディスクが起動優先順位先頭である場合、組み込みを行なおうとしても、ハードディスク内の既存のDOS領域からの起動ができなくなっている場合があります。まさに箱を開ける鍵が箱の中にある状態です。このような場合はまずフロッピーからDOSを起動させてIPLwareアプリケーションプログラムを入れる必要があります。そして次回の起動のときには、フロッピーを抜いて、ハードディスクからまず起動させるようにします。【2】の組み込み先ハードディスクと、手動操作の項目を参照し、IPLware実行後のフロッピー起動を行ないます。あとはOSのインストール用フロッピーを入れることができますし、DOSを起動させてそこからFDISKやFORMATをすることもできます。

     ただしハードディスクIPLwareアプリケーションが作用させたいハードディスクとは別に、起動優先順位が高いハードディスクが存在していれば、そちらにIPLwareアプリケーションを入れることができるので、フロッピーから起動してIPLwareを組み込むという方法をとる必要はとくにありません。

     EXIDE32G(32GB超えのとき)およびUIDESCSI(SCSI互換にするとき)は、処理対象ハードディスクのパーティション位置を決定するDISK BIOSパラメータを変更してしまうプログラムです。そのためプログラム導入前に存在していた領域は、導入後には読めなくなります(そこからのOS起動もできなくなる)。確保容量値も不正なものになります。これらのアプリケーションでDISK BIOSパラメータが変更となる際は、処理対象ハードディスク内のすべての領域を事前に削除し、導入状態で再び領域確保を行なう必要があります。

    ● セクタ長256バイトのディスクドライブへの対応

     バージョン3.86からセクタ長256バイトのディスクドライブで動作するようになりましたが、IPLwareの入った当該ハードディスクをセクタ長512MBに切り替えた直後には、領域が見えなくなるほか、IPLwareも動作しなくなります。アプリケーションのディスクアドレスが変更となるので、ロード実行ができなくなります。ローダの再インストールから改めて組み込み直してください。よくわからない場合はいったん iplware -x で全削除してから組み込みなおしてください。
     

    【4】お約束

    ●フリーソフト作者は転載自由

     このIPLware.exeと、IPLwareのためのローダ部分のコードの著作権は、「まりも」にあります。ただし、ローダ部分のコードは、組み込み仕様を変更しない限り、改良のために使用者がいかようにも改変して構いません。いっぽう、IPLwareとしてアプリケーションが作成し、組み込んだプログラムについては、もちろん作成した あなたに 著作権があります。

     このIPLware.exeおよび添付文書 IPLware.txtは、自由に配布してよいフリーソフトウェアとします。特に許可無く転載も自由とします。すなわち、使用者が組み込みたいプログラムを開発した際に、IPLwareを添付して配ってよいこととします。ただし、フリーソフトウェアとしてアプリケーションプログラムを公開する場合に限ります。商用ソフトに無断添付することは認めません。

     転載(添付)に当たっては、IPLware.exeのバイナリコードを絶対に改変しないで下さい。また、必ずこの文書 IPLware1.txtも一緒に配布して下さい。
     

    ●無保証・無責任

     IPLwareは、ある程度のテストを経て公開していますが、組み込みや取り外しが完璧に行なわれるということを、作者は保証するものではありません。IPLアプリケーションプログラムを組み込んだことによる、ハードディスク起動不能などのトラブル(質問)には一切応じません。アプリケーションプログラムの作者が対処するか、またはアプリケーションプログラムの作者も、同様に責任放棄してください。

     システムが起動しなくなったことに付随した、逸失利益や精神的損害について、IPLwareの作者である私は、一切責任は負わないものとします。これらの点を了承できない方には、IPLwareを使用/作成することを認めません。
     

    ●改版履歴  IPLware.exe s
    2001/04/05 1.00  とりあえず初めの一歩(公開せず)
    2001/06/012.0β 組み込み仕様を変えた EXIDE32G,MEMSETUPに使用
    2001/09/17 2.00  仕様を公開
    2001/09/19 2.01  CHEKSUMが00のとき実行回避してしまう誤り修正(ローダ)
    2001/09/22 2.02  アプリケーションプログラム入り口でのSS:SPが正しくなかったのを修正
    将来の拡張のためにモジュール最大登録数を8に変更した
    2001/12/ 8 3.00 ローダプログラムの最大サイズを640バイトに拡張
    ハイレゾモード時にもIPLware終了後のFDブートを可能にした
    RETFでなくRETで終了するプログラムも扱うようにした
    2002/02/03 3.02 64GBを超えるHDDへの組み込み時の、容量表示の誤りを修正
    2003/04/10 3.30 プログラム開始時点でのレジスタ値に意味を持たせるようにした
    これにより起動IPLwareアプリケーションプログラムの位置がわかる
    2003/07/12 3.31 ハイレゾリューションモードで実行できなかったのを修正
    2004/09/17 3.32 ハイレゾリューションモードでも表示時間待ちをするようにした
    ハイレゾリューションモードで[F]機能は使えないことを明記
    2005/09/20 3.33 アプリケーションプログラム開始時点のCXレジスタ値が正しくなかったバグを修正
    (2005年以前の公開アプリではこの機能を使用したものはありません)
    2019/10/17 3.35 起動時にグラフィック画面をONにしない別バージョンとして作成
    起動時の待ち時間も短縮されている
    4.3GB以下のIDE以外のHDDで格納可能セクタ数を256に拡大した
    IPLwareアプリケーションの最大サイズを32KBから36KBに拡大した
    対応する「固定ディスク起動メニュー」のバージョンを2.30以上とした
    (ただし 2.70でない場合は警告メッセージが出る)
    2019/11/12 3.40 実行開始時にグラフィック画面をOFFのままにする
    動作無効にするオプション /D 、有効にする /Aを追加

    2019/11/15 3.50 3.40でモジュールの新規組み込みや解除ができなくなった問題を修正
    組み込み済みプログラムモジュールをファイルに保存する機能の追加
    実行開始時グラフィック画面表示/非表示の機能選択(/U 使用時)の追加
    実行開始前待ち時間が3段階で選択可能(/U 使用時)とした
    IPLware.exe実行時の音の鳴動を廃止し, プログラムのサイズを大幅縮減
    IPLwareアプリケーションの最大サイズを36KBから40KBに拡大
    2019/12/30 3.500 セクタ長が256バイトのディスクは扱えないことを明記
    2020/ 4/ 4 3.60 チェックサムを無視するオプション /NOCHECKSUM 追加
    2020/ 9/ 8【98の日】 3.61 32bitレジスタを保持しないようにした(スタックメモリ不足対策)
    旧版3.61のリンク
    2021/ 9/ 8 3.70 バグがあるので使わないでください(3.75で修正)
    2021/ 9/ 9 3.75 アプリケーション追加・削除・変更の後に登録内容を表示するようにした
    アプリケーション削除後に登録リストを先頭に詰めるようにした
    その他占有状況表示の画面レイアウトを変更した
    2021/ 9/15 3.80 このバージョンは組み込み時ファイルサイズが異常となるバグがあるため使用しないでください
    2021/10/1 3.80V
    このバージョンは組み込み時ファイルサイズが異常となるバグがあるため使用しないでください
    2021/10/ 3 3.86 IPLwareアプリケーションの最大サイズを45KBまで拡張した
    セクタ長256バイトのディスクに対応、起動メニューバージョン2.20に対応
    (80286,V30にはデバイス一覧表示の機能が対応しませんので80386以上が必要)
    2021/10/10 3.90 デバイスリスト表示を改良(モジュール名が不正になるバグあり)
    2021/10/17 3.91 モジュール名(ファイル名)が化ける問題を修正、80286,V30に対応
    旧版3.91のリンク
    2023/02/15 3.92 モジュール名(ファイル名)に日本語(全角)文字が使用できるようにした
    2023/02/17 3.93 ドライブリスト表示前にハングアップすることがあるバグ(3.92)の修正

    [もとに戻る]