PC98 BIOS割り込み:INT 1Bh (DISK BIOS)

DISK BIOSはPC-9801無印以外の機種ではフロッピーディスク・SASI固定ディスク共通で割り込み番号1Bhを使用します。なお、本稿は1MB FD I/Fを制御するために調べたもので、HD関連については不十分です。

Int 1Bh (DISK BIOS)

ファンクション一覧

BIOSコマンド識別コード (AH)

INT 1Bhにおいて、AHに入れるファンクション番号の上位4ビットには下のようにアクセスモードを指定します。コマンドによっては無視されるパラメータがあります。

AH
D7 MT MT(Multi Track)
D6 MF Density(0=FM, 1=MFM)
D5 nr Retry x8(0=Yes, 1=No)
D4 SK Seek(0=No, 1=Yes)
D3 FUNC コマンド
D2
D1
D0

Physical Device Address (AL)

INT 1Bhにおいて、ALには処理対象の装置を指定するコードを入力します。コマンドによっては無視されるパラメータがあります。

AL
D7 DA アクセスモード
0:640KB FDD
1:1MB FDDまたは固定ディスク
D6 000:SASI固定ディスク
001:1MB I/O
010:SCSI固定ディスク
011:1.44MB I/O
101:320KB I/O
111:640KB I/O
D5
D4
D3 UA  
D2 UA(HR) (Head Reverse)
D1 UA ユニット番号(#0-#3)
SCSI ID(#0-#7)
D0

Head ReverseはFDDに対してのみ有効で、セクタIDのヘッド番号と実際のヘッドが逆転する場合にビットを立てる。

共通する入力値

コマンドによっては無視されるパラメータがあります。

BX DTL データ長
CH N セクタ長(00=128B,01=256B,02=512B,03=1024B)
CL C シリンダ番号
DH H ヘッド番号
DL R セクタ番号
ES:BP   データバッファ領域先頭アドレス

固定ディスクインターフェイスの場合は次のようになります。

BX データ長(256 x nバイト)
CX シリンダ番号
DH ヘッド番号
DL セクタ番号
ES:BP データバッファ領域先頭アドレス

出力(リターン・ステータス)

CF(Carry Flag)=0は正常終了、CF=1は異常終了。出力値以外のレジスタ・フラグの情報は保証される。

CF AH    
0 0xh Normal Terminate 正常終了
0 0xh Ready 準備完了
0 1xh Control Mark DDAM付きデータを読み込んだ
0 1xh Write Protect ライトプロテクトされている
1 2xh DMA Boundary バッファのアドレスがセグメントをまたいだ
1 3xh End of cylinder 転送容量を超えてデータ長(DTL)を指定した
1 4xh Equipment Check ドライブ名が無効またはデバイスが異常
1 5xh OverRun 書き込みデータ転送時間を超過した
1 6xh Not Ready ドライブの準備ができていない
1 7xh Not Writable ライト・プロテクトされている
1 8xh Error エラーを検出した
1 9xh Time Out タイムアウト
1 Axh Data Error(ID) ID部のCRCエラーを検出した
1 Bxh Data Error(DATA) DATA部のCRCエラーを検出した
1 Cxh No Data 一致するIDを持つセクタがない
1 Dxh Bad Cylinder 指定したシリンダがない
1 Exh Missing Address Mark トラックにID(IAM)がない
1 Fxh Missing Address Mark トラックにDATA(DAM,DDAM)がない
0 x1h Both sides device 両面媒体がセットされている

ビット3-0はSENSEコマンドで装置種別が通知される。(CF=0のとき有効)

D2 0:40シリンダモードもしくは1MB FDアクセスモード
1:80シリンダモード
D0 0:片面媒体がセットされている
1:両面媒体がセットされている (1MB/640KB両用ドライブでは常に両面)

システム共通域

DISK BIOSで使用するシステム共通域。詳細はUNDOCUMENTED 9801/9821 vol.2のmemsys.txtを参照。

参考文献