Alex Buell
2008-03-23 08:38:48 UTC
I recently bought a SATA controller for my old Pentium III box, and
plugged it in. Hooked up a 120GB SATA hard disk, booted up with MSDOS
6.22. Imagine my surprise when MSDOS FDISK refused to create a
partition larger than 503MB even though it was specifically told it
could use the large disk feature. Upgrading the SATA controller BIOS
made no different, it was still a maximum of 503MB.
MSDOS boots just fine, it just can't use partitions larger than 503MB
with that SATA disk and controller.
I have MSDOS correctly installed in a 2GB partition on a PATA disk
connected to the motherboard, so I know the problem isn't with the
motherboard's BIOS.
So, I wrote a tiny utility program in NASM to get the disk parameters
via the int 0x13 / AH = 8. The parameters it reporte are correct for
the hard disks connected to my PC's motherboard, but when it queried
the BIOS for the parameters of its SATA hard disk, it reported: 16
heads, 1022 cylinders and 63 sectors. Ah! That's why MSDOS couldn't
create partitions larger than 503MB!
I've told the manufacturers of the SATA that they need to fix their
BIOS - hopefully they might release an updated BIOS for the SIL3114
controller - fingers crossed. If they won't... I might have to fix it
myself, and that is NOT an easy job!
This utility also checks for the extended Int 0x13 / AH = 0x48 service
but I haven't written the code to print out the values yet - that'll
come as soon as I can find a PC that supports that.
You may find the utility along with its source code at
http://www.munted.org.uk/programming/int0x13.zip
plugged it in. Hooked up a 120GB SATA hard disk, booted up with MSDOS
6.22. Imagine my surprise when MSDOS FDISK refused to create a
partition larger than 503MB even though it was specifically told it
could use the large disk feature. Upgrading the SATA controller BIOS
made no different, it was still a maximum of 503MB.
MSDOS boots just fine, it just can't use partitions larger than 503MB
with that SATA disk and controller.
I have MSDOS correctly installed in a 2GB partition on a PATA disk
connected to the motherboard, so I know the problem isn't with the
motherboard's BIOS.
So, I wrote a tiny utility program in NASM to get the disk parameters
via the int 0x13 / AH = 8. The parameters it reporte are correct for
the hard disks connected to my PC's motherboard, but when it queried
the BIOS for the parameters of its SATA hard disk, it reported: 16
heads, 1022 cylinders and 63 sectors. Ah! That's why MSDOS couldn't
create partitions larger than 503MB!
I've told the manufacturers of the SATA that they need to fix their
BIOS - hopefully they might release an updated BIOS for the SIL3114
controller - fingers crossed. If they won't... I might have to fix it
myself, and that is NOT an easy job!
This utility also checks for the extended Int 0x13 / AH = 0x48 service
but I haven't written the code to print out the values yet - that'll
come as soon as I can find a PC that supports that.
You may find the utility along with its source code at
http://www.munted.org.uk/programming/int0x13.zip
--
http://www.munted.org.uk
Fearsome grindings.
http://www.munted.org.uk
Fearsome grindings.