	.386p

CGROUP	group	EIN_ASMFUNC
EIN_ASMFUNC		segment	public dword 'CODE'
				assume	cs:EIN_ASMFUNC

;int _EIN_getSect(unsigned char);	/*指定ドライブのセクタ長取得*/
;                      ↑ドライブ番号(1:A)
;                                               /* 無効なドライブなら-1 */
	public	_EIN_getSect
	db	'_EIN_getSect',12
	align	4
_EIN_getSect	proc near
	mov		dl, byte ptr [esp+4]	; ドライブ番号
	push	ebx
	sub		dl, 40h			; DL: ドライブ番号(1:A)
	jc short	__EIN_getSectError
	mov		ah, 1ch			; ディスクサイズ情報の取得
	int	21h					; DOS_EXTENDERをcall
							; AX:セクタ数÷クラスタ
							; BX:FAT識別バイトへのポインタ
							; CX:物理セクタのサイズ(byte)
							; DX:クラスタ数÷ディスク
	cmp		ax, 0ffffh		; 0ffffhならError
	jz short	__EIN_getSectError
	;; セクタサイズを返す
	xor		eax, eax
	mov		ax, cx
	pop	ebx
	ret
	
	;; Error Return
__EIN_getSectError:
	xor		eax, eax
	dec		eax				;eax=-1
	pop		ebx
	ret
_EIN_getSect	endp


EIN_ASMFUNC	ends
		end
