Hi Arkady and others,
I'm still not sure if and when I really return, the archives aren't really
encouraging... In any case, I appreciate that a bug was found in
ludivmul.inc; the same bug was in fact present in the 64 bit version I
adapted it from! Well I notified the original author.
What I don't like is that the fix from Arkady (for the 1000th time...)
does 3 things at the same time -- formatting, fixing, and optimizing.
This makes it impossible to see where things are really fixed. See the
following is enough:
--- ludivmul.inc.~1.2.~ Sun Jan 27 14:13:07 2002
+++ ludivmul.inc Tue Jul 20 00:35:31 2004
@@ -88,10 +88,12 @@
pop bx ; get dividend lo-word
mov cx, ax ; save quotient
mul di ; quotient * divisor hi-word (low only)
+ push di ; save divisor hi-word
xchg ax, di ; save in di
mov ax, cx ; ax=quotient
mul si ; quotient * divisor lo-word
add dx, di ; dx:ax = quotient * divisor
+ pop di ; restore divisor hi-word
sub bx, ax ; dividend-lo - (quot.*divisor)-lo
mov ax, cx ; get quotient
pop cx ; restore dividend hi-word
I'm sorry but I simply don't have the time to go through all the other
patches. If they were reduced to just bug fixes I'll promise that I'll
have another look though -- I still monitor the mailing list every now and
then. Guys *any* project that wants to be close to a 1.0 release must be
in deep freeze, a stabilation, that means that we should really freeze the
mainline kernel for anything but bug fixes. No optimizations, no
reformatting, no new fancy macros, no nothing but bug fixes with the
minimal amount of lines changed. Of course feel free to have your own
branch, but I don't think it's in the interest of the project to
use that for a 1.0.
So I can make a deal, you isolate your bug fixes and I'll return and be
friendly, or you don't and I'll simply disappear. It's that easy.
It looks from Eric's post that there's a bit of confusion about the U4D
routines and so on, why are they here etc?
Essentially for Turbo C the compiler helpers are extracted from the c
compiler RTL to be absolutely sure we only link those and nothing else from
that library. These are automatically linked and called "far", which is
correct because init_text and _text are in different segments. This is why
those routines have to have a fixed segment and that's only easily
accomplished in low RAM.
When Tom and I ported the kernel to Watcom we stumbled upon the problem
that U4D was called "near", where it had to be called "far".
Tom even filed an Open Watcom bug for that one, see
http://bugzilla.openwatcom.org/show_bug.cgi?id=193
One way to workaround that was to compile using the medium memory model
and annotate all functions as "near". But that was ugly as hell.
So I decided to implement our own routines, which were easily duplicated
to be both in HMA_TEXT and INIT_TEXT, do a bit of patchobj and as an added
bonus be completely independent of the Watcom RTL.
Now for Watcom HMA_TEXT and INIT_TEXT are in the same segment (group
really) so only one U4D is needed. But that change was *much* later, only
a couple of months ago.
Bart
-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_id=4721&alloc_id=10040&op=click
_______________________________________________
Freedos-kernel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freedos-kernel