Why don't they use INT 13h throughout boot?

James Van Artsdalen james at bigtex.cactus.org
Mon Nov 12 06:00:51 AEST 1990


In <35811 at cup.portal.com>, ts at cup.portal.com (Tim W Smith) wrote:

> The third, which is used by SCO Unix 3.2, [...]
> At some point before the OS is loaded, the boot programs start
> manipulating the disk hardware directly.

> Assume that the disk controller is also meant to work with DOS, so
> it contains a BIOS ROM that installs an INT 13h handler at power up
> time before the boot sequence begins.

The reason has to do with disk drives that have more than 1024
cylinders.  The BIOS interface cannot support such a configuration.
Many controllers spoof the drive geometry by claiming to have more
heads, or more sectors per track, and then claiming to have fewer
cylinders.  Even this won't work if a drive is bigger than 512meg,
because the BIOS only supports 20 bits of sector number per drive.

The problem is how to support large ESDI or SCSI drives, which can be
much bigger than 512meg.  If you call the BIOS, you can read from
devices that hook INT 13h, but if you do that, then you can't read the
entire drive.  Worse, when the kernel is up and talking to the WD-1010
interface of the controller, any translation that the INT 13h hook was
doing is lost, and the kernel might not see things in the same place
that the boot code saw it.

As a practical matter, this is why it's a bad idea to have one big
partition on a boot drive.  If you do, it is very possible that any
given kernel rebuild will yield a kernel that's partly beyond the
512meg mark on the drive, and the next reboot will fail.
-- 
James R. Van Artsdalen          james at bigtex.cactus.org   "Live Free or Die"
Dell Computer Co    9505 Arboretum Blvd Austin TX 78759         512-338-8789



More information about the Comp.unix.sysv386 mailing list