OS起動前の時点での割り込みベクタの保存

SVINTVECT 説明書 

Version 1.10  Copyright(C) 2020 まりも (DOSsoft)

1.【このプログラムの目的】

 8086アーキテクチャには割り込みベクタというものがあります。割り込み番号00hからFFhに対応する、ダブルワードの飛び先番地を、リアルモード物理アドレスの000h〜3FFhに記述しておくと、当該割り込みが発生したときに、対応アドレスにある割り込み処理ルーチンに飛ぶという仕組みです。なお、ベクタという言葉で呼ばれてはいますが、数学的なベクタの意味は全くありません。セグメント:オフセットの2組から成るダブルワードのジャンプテーブルに過ぎません。

 OSが起動したあとには、割り込みベクタが変更されていることがあります。割り込みルーチンの機能を追加したり変更するためです。したがって例えばMS-DOSのconfig.sysの段階で割り込みベクタを知ろうとしても、それはMS-DOSが改変してしまったものとなります。有名なリブートツールHSBでもその段階の割り込みベクタを保存していて、中途(高速)再起動時に利用していたりします。

 しかし、98のシステムを解析したり、DOSバージョンによる機能の違いを調査するといった場合には、DOS起動前の割り込みルーチンがわかると助かります。そこでハードディスク起動前の段階の割り込みベクタをプログラム自身のデータエリアに保存するプログラムを作成しました。それをDOS起動後に参照することで役立てます。

  本プログラムはIPLwareのアプリケーションとして実行されます。最初に実行されるアプリケーションとして登録しておけば、ハードディスク起動時点での割り込み ベクタを保存できます。

2.【使い方】

 IPLwareですので、svintvect.bin に加え、別途IPLware.exe(バージョン3.50以上)もカレントディレクトリに用意しておいて下さい。

 MS-DOSまたはWindows95/98のMS-DOSモードのコマンドラインより、

IPLware svintvect.bin

と打てば組み込まれます。組込先に関することはIPLwareの説明書を参照して下さい。通常はブート優先順位のトップの起動デバイスに組み込まれます。

■ 再起動

 再起動すると、そのPC-98のそのときの割り込みベクタ環境が svintvectのデータエリアに書き込まれます。つまり本プログラムは自己書き換え型のIPLwareであるということになり、IPLwareのバージョンは少なくとも3.33以上が必要です。IPLware実行中の画面を一時停止したい場合は SHIFTキーを押し続けていて下さい。といっても15行目に本プログラムのタイトルが表示されるだけです。SHIFTキーを押していない場合1秒程度表示します。

■ 割り込みベクタ参照

 保存した情報を参照したい場合は、IPLware 3.50以上を使用し、

IPLware -s svintvect

のようにコマンドラインから打ちます。すると svintvect.binというファイルがカレントディレクトリに作られます。このファイルの先頭はプログラムです。オフセット200h番地以降に割り込みベクタテーブルが400h続きます。バイナリデータですので、適当なバイナリエディタを使って読んで下さい。

■ 別アプリケーション IntVectG について

 IntVectG というアプリケーションも付属しています。これはsvintvecと使い方は同じですが、割り込みベクタの情報をグラフィック画面のE700:0000〜にも保存するという違いがあります。ファイル化を経ることなく、GVRAMをバイナリエディタやデバッガで覗いてしまえば情報が得られるという便利さがあります。さらには割り込みベクタの後ろにある「システム・ワークエリア」のデータも退避します。リアルモードアドレスで 0000:0000h〜0000:0FFFh までのデータがグラフィック画面に退避されます。システムワークエリアもDOS起動後に改変されることがよくありますので、DOS起動前の状態を知りたいときには利用価値があるでしょう。

 しかし別のIPLwareによりGVRAMに描画されるとデータは消えてしまいます。またDOS起動後にグラフィック画面を表示していると見にくいという問題があります。適切に使い分けて下さい。

3.【諸注意】

 このプログラムはNEC PC-9801/9821/H98シリーズ専用です。PC/AT互換機では使用できません。Windows9x のGUIモード下では使用できません。

 自己書き換え型IPLwareであり、保存されたものをファイル化して情報を参照することから、IPLwareのバージョンは必ず3.50以上として下さい。

 書き込みプロテクトがかけられたディスクシステムを使用している場合、赤文字で" DISK WRITE ERROR! " という表示が現れbeepが鳴ります(1.10版より)。SCSI I/FボードのDISK BIOSの付加機能としてプロテクト機能があったり、HDD自体に書き込みプロテクトを設定しているような場合に起こります。そのような機能は解除して下さい。

 書き込みプロテクトをかけているわけではなくこれが発生する場合は、本当にディスクのエラーです。マスタブートレコードやそれに続く比較的先頭のほうのセクタに異常ががあるようなハードディスクは、もう使用すべきではありません。

 その他は一般にIPLwareアプリケーションの注意に準じます。

 ソースプログラムが付属しています。source.lzhというアーカイブに封入されています。プログラム内のデータ配置などはそれを参照して下さい。なおIPLwareではアプリケーションのバイナリのチェックサムが検査されますが、本アプリケーションでは自己のチェックサムを最初に調べ、割り込みベクタのデータ取得後にサムを調整して元のチェックサム値と一致させるということを行っています。このため正常な動作ではIPLwareのチェックサムエラーは発生しません。

4.【お約束】(無保証・無責任)

 本プログラムの著作権は、作者である「まりも」 が有します。基本的にコピーフリーなソフトとします。しかし不特定多数の人がダウンロードできる場所への転載は禁止とします。

 動作の検証はある程度行なっていますが、作者は、本プログラムの動作を細部に至るまで保証するものではありません。

 いかなる状況下でも、本ソフトを実行・適用した場合における、損害(データの損失・機器の故障・利益の損失・精神的苦痛など)に関する一切の責任をとりませんので、予めご了承下さい。それに同意できない方は、本ソフトを使用してはいけません。

 本プログラムは上級者向けのツールですので、8086およびPC-98のシステムに関して充分な知識のある方を対象としています。そうでない方がむやみに使用することは推奨していません。

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

     2020-1-7 まりも(DOSsoft)

【改版履歴】

日付     版  内容
2020- 1- 6 1.00 新規公開
2020- 1- 7 1.10 情報書き込み時にDISK I/Oエラーがあれば通知するようにした

[戻る]