At 08:32 PM 7/29/2005 +0100, Alex Buell wrote:

It bothers me that VER /R doesn't correctly return the FreeDOS kernel version. FREECOM\SHELL\VER.C gets the version string from registers CH, CL and BX after making a INT 0x21, AH=0x30 call. That's ok. But I look at case 0x30 (on line 722) in KERNEL\KERNEL\INTHNDLR.C, it looks like lr.CX is set to zero when it should be set to 0x0101. It does say that 32RTM does not like non-zero values. Why?

32RTM has a bug and never properly sets an register value which determines the amount of words of memory to copy down to the real stack on a DPMI call. Very stupid bug. MS-DOS sets that register value to 0 as an internal value, so the bug is masked. FreeDOS value of 101h blows the stack out of the water. Makes the whole internal value concept for that routine rather useless.

It was quite a pain in the butt to track down that bug, and it's really annoying that FreeDOS has to follow MS-DOS's behavior, but I guess it's the only real solution. Borland isn't going to issue a recall of all those copies of 32RTM, I'm betting.




-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
Freedos-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to