BIOS Interrupt 13h Extensions



When your operating system (such as MS-DOS or Windows) or an application you want to use needs to access the hard disk, it employs BIOS services to do this. The primary interface to the BIOS has been the software interrupt known as Int13h.

BIOS Services - The BIOS provides various software routines or subprograms that are called by high-level software such as MS-DOS, Windows, or their applications, to perform different tasks. Every task that involves accessing the system hardware has traditionally been controlled using one or more of these BIOS programs. Many high level operating systems, such as Windows NT, Windows 2000 and now Windows XP for example, bypass the BIOS for improved performance, security and stability. This includes actions like reading and writing from the hard disk, processing information received from devices, etc.

BIOS services are accessed using software interrupts, which are similar to the hardware interrupts except that they are generated inside the processor by programs instead of being generated outside the processor by hardware devices. This use of interrupts allows access to the BIOS without knowing where in memory each routine is located.

Normally, in order to call a software routine you would need to know its address. With interrupts, an interrupt vector table is used that bypasses this problem. When your computer is first started, the BIOS loads addresses into this table. Each address represents one routine along with its location. Then, when MS-DOS or a specific application wants to use a BIOS routine, it generates a software interrupt. The system processes the interrupt, looks up the value in the table, and jumps to the BIOS routine automatically. MS-DOS, as well as application programs, have access to this interrupt vector table.

The Interrupt13h interface supports many different commands that can be provided to the BIOS, which then passes them on to the hard disk. These include most, if not all, functions that involve your hard disk, such as a reads, writes and format functions as an example. Interrupt13h has been the standard for many years as the result initial development of DOS (IBM Disk Operating System). Only in recent years has the limitations of this old interface been abandoned in favor of a new way of addressing hard disks, as described below.

A program that uses Interrupt13h is required to know the specific parameters of the hard disk, and provide exact head, cylinder and sector addressing to the routines to allow disk access. The BIOS uses the geometry for the hard disk as it is set up in the BIOS setup program. The Interrupt 13h interface allocates 24 bits for the specification of the drive geometry, broken up as follows:

At this point, the Interrupt13h interface can support disks containing approximately 16.5 million sectors, which yields a maximum of 8.46 GB at 512 bytes per sector. However, when this methodology was originally developed, an 8 GB hard disk was merely a passing thought, but today an 8 GB hard disk is mediocre at best. Obviously, the Standard Interrupt13h interface has seen the end of its usefulness in modern systems, having been replaced with the a newer interface called Int13h extensions. Interrupt13h may still be used by DOS and other older operating systems, for compatibility purposes, however for today's powerful operating systems and huge hard drives, it has met its end.

Overcoming the 8 GB Hard Disk Barrier:
The only solution to the 8 GB hard disk size barrier is to move away from the standard Int13h disk access routines by changing or updating (flashing) the BIOS to support Int 13h Extensions.

There is a downside to in using Interrupt13h Extensions, as it requires changes to everything that is associated with accessing the disk, beginning with the BIOS on the motherboard, the disk itself and the operating system. Most operating systems released beginning in 1995 support this important change to hard disks addressing, including all versions of Windows from Windows 95 on. In addition, most hard drives manufactured in the last several years also support this method of addressing. Essentially then, getting past the 8 GB hard disk barrier is generally a matter of ensuring that the motherboards BIOS and/or hard disk controller supports Interrupt13h extensions.

A large number of the major hard disk manufacturers make drive utilities available that will enable you to test your system BIOS in an effort to determine if it will natively support Interrupt13h extensions. Visit their Web site and check the download section of the drive manufacturer you are considering.

The industry has been quickly moving away from the standard Interrupt13h in an effort to finally retire the old DOS related geometry method of specifying hard disk size. Due largely to the multiple levels of translation both within the BIOS and the hard disk, the logical geometry parameters of IDE/ATA hard disks have stopped having any relationship to the actual drive characteristics long ago. Today, with drives now above 8.4 GB in size, there are no methods by which traditional geometry terms can be used to express their physical size without going over the cylinder, head and sector limits mentioned earlier. At this moment, and until some major developments occur, the total number of sectors on the drive is the key parameter, with drive access via logical block addressing (LBA)

As an example, a 45 GB IBM Desktop 75GXP drive, when expressed in conventional geometry, would be said to have 89,355 cylinders, 16 heads and 63 sectors, while LBA would show it as having 90,069,840 data sectors. As the result of legacy issues dating back to early drive geometry development, and today's efforts towards compatibility, all drives over 8.4 GB have logical geometry parameters of 16,383 cylinders, 16 heads and 63 sectors, which is the reason why these drives now show up as being about 8.4 GB in size if Interrupt 13h extensions have not been implemented.

All other trademarks are the property of their respective owners.

Copyright ©1995-2003 DEW Associates Corporation. All rights reserved.