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 Extended 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-2012 by Donald Kenney.