On 6/11/06, Arkady V.Belousov <[EMAIL PROTECTED]> wrote:
> Hi!
>
> 11-Июн-2006 02:08 [EMAIL PROTECTED] (Blair Campbell) wrote to
> [EMAIL PROTECTED]:
>
> BC> +++ dir.c 11 Jun 2006 02:08:08 -0000 1.27
> BC> + r.r_flags = 1;
> BC> intr(0x21, &r);
>
> Bug! You shouldn't rely on undocumented behavior! Adn you can't rely
Then why does the RBIL SAY to set the cflag to ensure compatibility
with older kernels?
> on
> this, because no one int*() function (including intr()) sets flags _from_
> r_flags! If you wish to set flags before interrupt, then there is only one
> way to do this: write your own. :(
>
> BC> - if (!r.x.cflag) {
> BC> + if (!( r.r_flags & 1 )) {
>
> Why not define macro like
>
> #define isCarry(flag) ((flag) & 1)
> if (!isCarry (r.r_flags))
>
> or
>
> #define Carry_FLAG 1
> if (!(r.r_flags & Carry_FLAG))
>
> BC> /* Note: RBIL carry clear and al==0 also means unimplemented
> BC> alternately carry set and ax==undefined (usually unchanged) for
> BC> unimplemented
> BC> */
> BC> - if(!r.x.cflag && r.h.al) {
> BC> + if(!( r.r_flags & 1 ) && r.r_ax) {
>
> Bug! r.r_ax is not same, as r.h.al!
>
> BC> + r.r_dx = toupper(*path) - 'A' + 1;
>
> Optimization (to help constants folding and eliminate extraneous
> intermediate type promotions):
>
> typedef unsigned char byte;
> r.r_dx = (byte)(toupper(*path) - ('A' - 1));
>
>
> _______________________________________________
> Freedos-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/freedos-devel
>
--
Fall is my favorite season in Los Angeles, watching the birds change
color and fall from the trees.
David Letterman (1947 - )
See ya
_______________________________________________
Freedos-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freedos-devel