Category: BIOS

INT 13 - DISK - GET DISK TYPE (XT 1986/1/10 or later,XT286,AT,PS)

	AH = 15h
	DL = drive number (bit 7 set for hard disk)
	(AL = FFh, CX = FFFFh, see Note)
Return: CF clear if successful
	    AH = type code
		00h no such drive
		    (SpeedStor) AL = 03h hard disk
				    CX:DX = number of 512-byte sectors
		01h floppy without change-line support
		02h floppy (or other removable drive) with change-line support
		03h hard disk
		    CX:DX = number of 512-byte sectors
	CF set on error
	    AH = status (see #00234 at AH=01h)
Note:	SyQuest can report type 01h or 02h for 'hard disks', since its media
	  is removable
BUGS:	many versions of the Award 486 BIOS do not return the sector count
	  because the BIOS exit code restores CX and DX to their original
	  values after the function had already set them to correct values
	Some releases of PC Tools REBUILD preset CX=FFFFh and only trust the
	  results if CH <= 2 on return (which would cut off drives > 16 Gb).
	several different Compaq BIOSes incorrectly report high-numbered
	  drives (such as 90h, B0h, D0h, and F0h) as present, giving them the
	  same geometry as drive 80h; as a workaround, scan through disk
	  numbers, stopping as soon as the number of valid drives encountered
	  equals the value in 0040h:0075h
	the PS/2 Model 30 fails to reset the bus after INT 13/AH=08h and
	  INT 13/AH=15h.  A workaround is to monitor for these functions
	  and perform a transparent INT 13/AH=01h status read afterwards.
	  This will reset the bus. The MS-DOS 6.0 IO.SYS takes care of
	  this by installing a special INT 13h interceptor for this purpose.
	Some releases of SpeedStor have a bug where it reports AX=0003h instead
	  of correctly reporting AH=03h for hard disks. A possible workaround
	  when testing for hard disks is to check for AH=03h and AX=0003h.
	  In this case this function should be invoked with a bogus fixed
	  value in AL, e.g. AL=FFh.
SeeAlso: AH=08h,AH=16h,AH=17h,AH=19h"SCSI",MEM 0040h:0075h