BDA:0x0475(固定ディスクの台数)
対象は、USB HDD なので、基本的には、二台目以降として認識される事になるはず。
そこで二台目以降を含めて、BIOSが認識した全ての HDD に対して、拡張 INT 13h の対応状況を調べてみる。
BIOSが認識済みの固定ディスク台数は、BDA:0x0475に記録されている。
とりあえず、ドライブ数を、CHレジスタに格納しておく。
CLレジスタは、カウンタとして使う予定。
初期化として、ゼロクリアしておく。
DRIVE_NUM EQU 0x0475 ; ドライブ数のチェック MOV CH, [DRIVE_NUM] XOR CL, CL
拡張 INT 13h 対応チェック
int13chk: ; CXレジスタ退避 PUSH CX ; ドライブ番号の設定 MOV DL, 0x80 ADD DL, CL ; DL = 0x80 + CL ; CXレジスタクリア XOR CX, CX ; 拡張INT13H サポートチェック MOV AX, 0x4100 MOV BX, 0x55AA ; MOV CX, 0x0000 ; MOV DX, 0x0080 ; DL=ドライブ番号(0x80=HDD) INT 13h ; キャリーフラグチェック JNC int13chk_chkbx MOV SI, biosngmsg CALL puts JMP int13chk_fin int13chk_chkbx: ; BXチェック CMP BX, 0xAA55 JE int13chk_chkcl MOV SI, installngmsg CALL puts JMP int13chk_fin int13chk_chkcl: ; CLチェック CALL putregs int13chk_chkok: ; Ext INT 13 OK!! MOV SI, okmsg CALL puts
カウンタを加算して、認識台数以下の間、チェックを繰り返す。
int13chk_fin: ; まだドライブがあれば、繰り返す POP CX INC CL CMP CH, CL JA int13chk