2009/7/18 Kenneth J. Davis <jere...@fdos.org>:
> It has to deal with debugging the kernel, especially during
> initialization.  I choose this method as the kernel does not usually
> have many strings it prints except when built with DEBUG and the
> alternative is to determine exactly which portions of the C code and
> corresponding strings may possibly reside in different segments at
> different times (any time DS may not equal seg of string) and change
> just those prints - otherwise some strings print and some print
> garbage.  I realize it changes printf prototype to only match
> compilers in large data mode, but the kernel does not use printf from
> the standard library of DOS compilers anyway.  However, I will revert
> the changes if you prefer.

ok, I've reverted some of the changes: I found a couple of situations:

DS == SS == DGROUP: this is normal, no problems here.

DS == DGROUP, but SS!=DS. This happens for instance in nls.c, in that
case we need to be careful by making pointers to items on the stack
FAR, and similarly for va_list/va_arg. I've kept that part of your
change, but only for resident debug printf()s. Compiling such code
with -zu helps for OW (especially also to catch warnings) but
unfortunately such a switch isn't there for TC, so we need to handle
this situation manually.

DS != DGROUP, and (perhaps) SS!=DS. This is very confusing and doesn't
even work after your change:
printf("foo") with a far format string is just compiled into a "PUSH
DS/PUSH foo/CALL printf".
So we need to *always* keep DS equal to DGROUP in C code, which is why
I fixed the entry to the kernel's
int2f/ah=14 handler for NLSFUNC in nls.c.

By the way, I didn't find init code where SS!=DS, but did you find any?

Bart

------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge  
This is your chance to win up to $100,000 in prizes! For a limited time, 
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize  
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
Freedos-kernel mailing list
Freedos-kernel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-kernel

Reply via email to