PC-98x1/disk/int 1Bh,AH=0Eh
まとまらないメモ。
動作内容
テクニカルリファレンス(BIOS 編)上に説明がほとんど存在しない。
というか DISK BIOS の章にある「●2.5インチ内蔵固定ディスク」の項にある
従来(SASI)20M バイト固定ディスクにあった,厚型/薄型のインターフェース(MODE SET コマンド)もサポートする.
というのがおそらくこれに関する唯一の記述。おわかり頂けるだろうか、肝心の MODE SET コマンドに関する記述は一切ないんですよ…。
undoc1 によると、SASI/IDE のモード設定を行う、らしい…。
- int 1Bh, AH=8Eh, AL=DA/UA:薄型モードに設定
- int 1Bh, AH=0Eh, AL=DA/UA:厚型モードに設定
設定を行うと、システム共通域内にあるフラグが変更される。undoc2:memsys.txt 参照。
DA/UA | フラグ |
---|---|
80h | 0000:0481h bit0 |
81h | 0000:0481h bit1 |
82h | 0000:0590h bit0 |
83h | 0000:0590h bit1 |
手持ちの実機(PC-9821Xc)で実行してみたが、int 1Bh, AH=8Eh を呼び出すと、対応する DA/UA のフラグが 0 になった。 AH=0Eh だと 1 になった。 つまり AH の bit7 と逆になる。 ちなみに呼び出し前の 0000:0481 bit1-0 は 11、0000:0590 bit1-0 は 00 だった。
なお、システム共通域(0000:0400〜0000:05FF)のメモリ内容はこのフラグ以外なにも変わらなかった。
ちなみに「EPSON PCシステムガイド」には載っていた。AH の bit7が「0:標準モード 1:拡張モード」となっている。bit6〜4はdon't care。 ただし標準モードと拡張モードの違いに関しては、20MBハードディスクのヘッド値(標準で8、拡張で4)以外の説明がない。
なお純粋なSASIインターフェースのBIOSの場合、DISK_PRM0(0000:05E8)とDISK_PRM1(0000:05EC)に設定されるディスクパラメータ(を指すポインタ)が変わる場合があるようだ…(変わらない場合もある。というか20Mバイトの場合以外は変わらない気もする…)
厚型と薄型の違い
正直よくわからん…テクニカルリファレンスの固定ディスク BIOS コマンドの説明を読むと 20M ディスクのシリンダ/ヘッド番号に薄型と厚型両方の数字が載っている。 一例として AH=06h (READ DATA) のレジスタ説明…
レジスタ | 説明 |
---|---|
AL | DA/UA (80h〜81h) |
BX | データの長さ 256×n:PC-9801-27 512×n:XL/XA内蔵インターフェース |
CX | シリンダ番号 |
DH | ヘッド番号 |
DL | セクタ番号 |
ES:BP | バッファ先頭アドレス |
で、シリンダ番号とヘッド番号の範囲…
ディスク容量 | シリンダ | ヘッド |
---|---|---|
5M | 0〜152 | 0〜3 |
10M | 0〜309 | 0〜3 |
20M(厚型) | 0〜307 | 0〜7 |
20M(薄型) | 0〜614 | 0〜3 |
40M | 0〜614 | 0〜7 |
MS-DOS の HDD (SASI/IDE) 用 IPL には int 1Bh, AH=8Eh を呼び出すコードが含まれている(disktut 参照)。 ためしに実機で int 1Bh, AH=0Eh/8Eh を呼び出さずにディスクアクセスを行おうとすると BIOS はエラーを返した。 エラーコードは 40h:Equipment Check、つまり BIOS 的には未サポートユニット扱いとなる。 ハードディスクを BIOS 的に叩き起こす意味でも重要な BIOS コマンドではある。
新SENSE さえもサポートされてないクソ古い SASI(あるいは最初期の98NOTE)あたりだとパラメータ変更に意味があるような気もするが…
めも
-
http://www.pc88.gr.jp/forum/viewtopic.php?p=2229
20M HDの場合、薄型/厚型切り替えても常に4ヘッド扱いとのこと…