Hrm... ok, how about this then. The code should go back to check if it's 0xff and use DL if it is, the default value in fat.asm should be set to 0xff, but then who is ever going to set it to the 'correct' value on systems that don't pass the right value in dl?
It would be freeldr's installer's job to do that. When it installs the boot sector it should probably leave it as 0xff by default, but give the user the option of changing it to a value they specify, and suggest they try 80 for hard drives and 0 for floppies if their busted bios can't boot it with ff.
Brian Palmer wrote:
Yea, so that's 9 years ago. Any computer newer than 9 years old should support it no? Were any of them newer than 1996? If it is only computers older than 1996 that we have to worry about, I don't think that is much of a concern.
Well I fixed this bug (DL not passed in by BIOS) about a year and a half ago. So, assuming that the buggy computer was a year and a half old at the time that gives us a 3 year old computer that FreeLoader might have problems with.
Anyhow, just changing the value to 0xff would not have any better effect, as it would still be looking to DL even on computers that do not set it, so how is that any better of a fix?
This seems like a very closed minded statement to me. How can options and configurability be any worse that having no choice at all? The whole idea behind that code was to use the value in the BPB (because it SHOULD always be correct for the disk), but, optionally, if you wanted to use the value from the DL register you could do that also by setting the boot drive in the BPB to 0xFF.
Now I'm not saying the using the boot drive in the BPB is the 'right' way, and I'm also not saying that using DL is the 'right' way. But, if that code is removed then if you don't get the boot drive in DL you will not be able to boot, and there is nothing you can do about it. Except add the code back in. I don't know about you, but I'd like to have the choice.
-Brian