DOS2解析

  データセグメント編   カーネルパッチ編


ファイルハンドル(36hバイト)

  -03h - 02h   リンクアドレス(BBF2hからたどるアドレス)
  -1       デバイスコード?
  +0       常にFFh
  +01h - 0Dh   ファイル名
  +0Eh      ファイルの属性
  +0Fh - 10h   最終変更時刻
  +11h - 12h   最終変更日付
  +13h - 14h   開始クラスタ
  +15h - 18h   ファイルサイズ
  +19h      論理ドライブ
  +1Ah - 1Dh   VOL.No.
  +1Eh      READ/WRITEのフラグ(BBC4hと同じ)
  +1Fh      ?
  +20h - 21h   データセグメント内のドライブ登録テーブルのアドレス
  +22h - 23h   ディレクトリのセクタ番号
  +24h      ディレクトリの何番目のファイルか
  +25h - 26h   ディレクトリのクラスタ番号(FFFFhはルートディレクトリ)
  +27h - 28h   開始クラスタ
  +29h - 2Ah   最終クラスタ
  +2Bh - 2Ch   相対クラスタ
  +2Dh - 30h   ファイルリードのポインタ
  +31h      オープンモード(ファンクションコール43hでAレジスタにセットした値)


ドライブ登録テーブル(60hバイト)

  +0       ドライブのDISK ROMのスロット番号
  +01h      RAMDISKは80h、それ以外は10h 
          ここを使って独自のディスクアクセスルーチンに飛ばすこともできるのでは。
  +02h - 03h   DPBアドレス
  +06h      DISK ROMからみたドライブ番号
  +08h       論理ドライブ番号(A=01, B=02・・・)
  +09h       フラグ?
  +0Ah       クラスタマスク
  +0Bh       クラスタシフト
  +0Ch - 0Dh   FATの先頭(セクタ)
  +0Eh      FATの数
  +0Fh   
  +10h	   ルートディレクトリのセクタ数
  +11h      FATサイズ
  +12h - 13h   ディレクトリの先頭(セクタ)
  +14h - 15h   データ領域の先頭(セクタ)
  +16h - 17h   クラスタ総数
  +18h      00=UNDEL不可、 01=UNDEL可能なファイルがある
  +19h - 1Ch   VOL.No.
  +1Dh      メディアID
  +1Eh - 1Fh   カレントディレクトリのクラスタ番号(FF00hはRoot directory)
  +20h -     サブディレクトリ名(Rootなら00)


 ディスクバッファ (20Bhバイト) 

  +00h - 01h   リンクアドレス
  +02h      ドライブ番号
  +03h      フラグ 
  +04h - 05h   バッファに読み込んだセクタの番号
  +06h      01はディレクトリ又はデータ、02はFAT
  +07h      FATサイズ
  +08h      (空いているようなので、FAT16パッチではセクタ番号のbit16-23に使用)
  +09h - 0Ah   データセグメント内ドライブ登録テーブルのアドレス
  +0Bh - 20Ah  セクタの内容(200hバイト)



BB80h〜BBFFh(80hバイト)   BB9Eh - Fh   FIBのポインタ   BBA2h   セクタをディスクバッファに読み込むとき、+06hにこの値が入る。   バッファのデータをディスクに書き出すときの回数なので、   FATは02h、それ以外は01hが入ります。   BBA3h - 4h   空きクラスタ番号の保存場所。           ファイルやサブディレクトリを作成するとき、FATを調べて空きクラスタを           探します。   BBA5h - 6h   クラスタ番号の一時保存場所。           FAT12でクラスタ番号が2つのセクタにまたがるとき使用。   BBA7h - 8h   FATの先頭セクタ番号      BBB4h - 5h   アクセスするクラスタのセクタ番号   BBB6h - 7h   アクセスするクラスタ番号(最終クラスタ) BBB8h   クラスタマスク+1(クラスタサイズ)   BBB9h - Ah   1セクタ未満のファイルの半端(バイト数)   BBBCh   相対クラスタ   BBBEh - Fh   リード/ライトしたバイト数   BBC0h - 1h   リード/ライトするバイト数   BBC2h - 3h   DTAアドレス   BBC4h   リード/ライトのフラグ bit0が0はリード、1はライト   BBC6h - D1h   BBDEh〜BBE9hの保存場所   BBD2h - DDh   BBDEh〜BBE9hの保存場所   BBDEh   BBDFh BBE0h   ディレクトリが何番目にあるか   BBE1h   ディレクトリのセクタ数   BBE2h - 3h   ディレクトリのセクタ番号 BBE4h - 5h   サブディレクトリの続きのクラスタ   FF00hはROOT DIR / FFFFhはSUB DIRの終わり   BBE6h - 7h   ディレクトリのクラスタ番号 FF00hはROOT DIR   BBE8h - 9h   ディレクトリのクラスタ番号 FFFFhはROOT DIR   BBEBh   カレントドライブ
DOS2解析カーネルパッチ編 トップページに戻る