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