[ros-dev] Freeldr problems resolved
brianp at sginet.com
Sun Apr 10 13:52:38 CEST 2005
That spec is dated 1996. Which is about ~15 years too late.
Actually, most everything will work on hardware that does not support this
standard, and pretty much everything that has come out of Microsoft since
the beginning. You see, not only is the boot drive value in the BPB of the
boot sector reliable, but if it is incorrect no Microsoft OS will be able to
boot. That is why the boot drive value exists in the BPB.
When I was writing that boot code I reviewed all the boot sector code I
could find on the internet. A lot of the "amateur" boot sector code used DL
as the boot drive. But in every instance of commercial boot sector code that
I can remember they have never touched DL. At the time I thought that was
kind of odd, so I added that code so that both (DL and the BPB boot drive
value) could be used. I would bet that if I could go back to when they
implemented the boot strap mechanism and look at the code, that the only
thing it did was load sector 0 to 0000:7C00 and jmp there. I doubt that any
register contents are guaranteed. I said I had seen BIOSes that did not pass
the boot drive in DL. I can't remember which exact brand they were, but they
were not no-name computers. They were name brand computers like HP or Dell.
In any case, I'm glad you were able to figure out why it wasn't booting.
But, I still don't agree with the fact that you removed functionality to fix
a corrupt data structure in your boot sector.
From: ros-dev-bounces at reactos.com [mailto:ros-dev-bounces at reactos.com] On
Behalf Of Michael B. Trausch
Sent: Sunday, April 10, 2005 11:15 AM
To: ReactOS Development List
Subject: Re: [ros-dev] Freeldr problems resolved
-----BEGIN PGP SIGNED MESSAGE-----
Phillip Susi wrote:
> Hrm... I thought it was a standard left over from the PC/AT days at
> least that the bios would pass the device number in to the boot loader.
According to the "BIOS Boot Specification," Version 1.01:
"When the boot handler is called, the BIOS passes a pointer to the PnP
Installation Check Structure in ES:DI. This is so that once the boot
handler has successfully loaded the device?s boot sector into memory at
address 0000:7C00h, execution control can be transferred with the
following register contents:
ES:DI = Pointer to PnP Installation Check Structure
DL = Drive number used for the INT 13h (00h, 80h, etc.)"
So the code follows the specification. The specification is available
This is a specification by Compaq Computer Corp., Phoenix Technologies
Ltd., and Intel Corp.
If the hardware doesn't support this standard, odds are that nearly
nothing will work on it.
Michael B. Trausch <fd0man at gmail.com>
Website: http://fd0man.chadeux.net/ Jabber: mtrausch at jabber.com
Phone: +1-(678)-522-7934 FAX (US Only): 1-866-806-4647
Do you have PGP or GPG? Key at pgp.mit.edu, Please Encrypt E-Mail!
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
-----END PGP SIGNATURE-----
Ros-dev mailing list
Ros-dev at reactos.com
More information about the Ros-dev