1315
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