DISK EXTENDED INT 13

5/17/2003

Extended Interrupt 13 is a modification made to PC BIOSes in the 1997-1998 timeframe that eases the use of disks greater that 8.4GB. The basic (unextended) Interrupt 13 is the mechanism designed by IBM in the orginal IBM PC to access floppy disks. It allowed for expansion of the original 320K drives by a factor of around 26 million to 1024 cylinders, 63 heads, and 256 sectors per track. Around 15 years later, those limits were reached on hard drives that still used INT13.

Extended Interrupt 13 sets an unused bit in the Function specification of INT13 to, in effect, add 40(hex) to each function code. For example, INT13 AH=2 is read. INT13 AH=42 is Extended read. The Extended functions use a 64 bit LBA style address to access disk sectors.

While it might appear that disks larger than 8.4 GB would be totally inaccessible without a BIOS that supports Extended INT13, the reality is more complex. OSes that can handle large drives at all often either do not use INT13 at all, or use it only for initial setup. Prior to that, some OSes did not use INT13 for normal drive access, but used it to get disk size during installation. Moreover, the partition table used to boot OSes contains two sets of addresses, one with 24 bits of disk sector addressing and a second with 32 bits. The result is somewhat chaotic. Depending on the OS used and the skill and luck of the installer, it may be possible to use a large modern drive with a very old BIOS although tricks such as partitioning the drive in another PC or hand tailoring the partition table might be required.

There are programs for detecting INT13. Those who have DEBUG available (it was shipped with MSDOS and was hidden in a directory on the original Windows 95 CD) can check for Extended INT13 by running the following from an MSDOS prompt.

debug
a100
MOV AH,41
MOV DL,80
INT 13
(This line represents pressing Enter once)
g=100,106

DEBUG will print out a bunch of registers. If BX=AA55 after the call, then the BIOS supports Extended INT 13. Be aware that very small errors in DEBUG INT parameters can have cataclysmic consequences. Save anything that you might be fond of in open windows before typing the g=100,106 line. There is a very small chance that a small error (for example specifying AH=43 instead of 41) might destroy the contents of your hard drive.

Return To Index Copyright 1994-2008 by Donald Kenney.