人生最悪の忘れ物

MS-DOS(Ver7.1)のイニシャルプログラムローダを解析すると、
BIOSから制御が移された直後に
割り込み1EHの設定を変更しているくだりがあるのですが、
これは一体何をやっているのでしょうか?

以下に詳細を書きます。

・0000:0078からの4バイト(すなわちINT 1Eに対する割り込みベクタテーブル)を
スタックに保存し、新たに0000:0522というポインタを設定する。

・旧ジャンプ先の先頭から11バイトを新ジャンプ先にコピーする。
5バイト目(0000:0526)にディスクのトラックあたりのセクタ数を上書きし、
10バイト目(0000:052B)に即値0FHを格納する。
最終的には下のようなバイト列になる。
DF 02 25 02 12 1B FF 54 F6 0F 08
(トラックあたり18(=12H)セクタの場合)
これをディスアセンブルしても意味のある命令列にならない。

・この後、IO.SYSの探索に入る。スタックに積まれた旧ポインタは
エラーメッセージのあとのキー入力待ちを経て復元される。

御存知の方がいらっしゃいましたら教えてください。

A 回答 (1件)

INT 1Eh は割り込み処理アドレスではなく


フロッピーディスクパラメータアドレスです
内容は全て byte で下記の通りです

オフセット  内容
 00h  bit 7-4:ステップレート
      bit 3-0:ヘッドアンロード時間
 01h  bit 7-1:ヘッドロード時間
      bit 0 :DMAを使わない
 02h  モータ回転停止までの待ち時間(Tick単位)
 03h  セクタ長(00h:128バイト 01h:256バイト 02h:512バイト 03h:1024バイト)
 04h  トラックあたりのセクタ数
 05h  セクタ間のギャップ長
 06h  データ長
 07h  フォーマット時のギャップ長
 08h  フォーマットデータ
 09h  ヘッドセトリング時間(ミリ秒単位)
 0Ah  モータ回転開始時間(1/8秒単位)

なお
INT 1Dh は ビデオパラメータテーブルアドレス
INT 1Fh は 8x8ドットグラフィックフォントテーブルアドレス
となっています
    • good
    • 0
この回答へのお礼

ありがとうございます!なんで割り込みジャンプ先なのに命令列になっていないのだろう?とずっと悩んでおりました。ディスクのパラメータだったんですね。私は全くの趣味で解析をしているのですが、AT互換機の仕様が分からないせいで何日も進まないことがあり、本当に助かりました。

お礼日時:2002/07/08 19:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!