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.
-Brian
-----Original Message----- From: ros-dev-bounces@reactos.com [mailto:ros-dev-bounces@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----- Hash: RIPEMD160
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 online at:
http://www.phoenix.com/NR/rdonlyres/56E38DE2-3E6F-4743-835F-B4A53726ABED/0/s pecsbbs101.pdf
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@gmail.com Website: http://fd0man.chadeux.net/ Jabber: mtrausch@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!
_______________________________________________ Ros-dev mailing list Ros-dev@reactos.com http://reactos.com:8080/mailman/listinfo/ros-dev