Int 13/AH=15h

Prev Next Ralf Interrups Categories Contents

------

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.

See Also: AH=08h - AH=16h - AH=17h - AH=19h"SCSI" - MEM 0040h:0075h

Category: Bios - Int 13h - D

------

Prev Next Ralf Interrups Categories Contents