Hi Bart,

nice to see you're still alive :)

> Tom, can you explain?

> 1. config.c. Why use > instead of >=? Is there a corner case with equality?

IMO >= is correct (timeout 0 should exit immediately)


> 2. initoem.c:
> + if (ramsize == peek(0, RAMSIZE))
> if (ramsize * 64 == ebdaseg && ramsize < 640 && peek(0, RAMSIZE) == ramsize)
>    the extra double check looks strange to me, why check twice?
> Something strange with short-circuit boolean evaluation?

looks strange, and I have no idea why exactly this is there.

But since I put it in after ke2035, I just assume I did that
intentionally. (this was changed on or before 11.07.2004)

I'd leave it under 'it doesn't hurt'

> 3. int21/ax=3301. The comment and the code are out of sync.

> By falling
> through it reports the new state of break_ena in DL (not AL).
right

besides that, the code should do the same in both cases (DL should be
00 or 01)

I don't mind much

Tom

> Moreover, RBIL tells us that Novell DOS 7 report the *old* state
> (instead of the new state) in DL. What is the intended logic here?

> Thanks,
> Bart

> --- ke2035/kernel/config.c      2004-05-25 01:02:46.000000000 -0400
> +++ ke2035ctom/kernel/config.c  2007-05-14 12:43:46.000000000 -0400
> @@ -753,8 +753,8 @@
>   if (timeout >= 0) do
>    {

>      r.a.x = 0x0100;             /* are there keys available ? */

>      init_call_intr(0x16, &r);

> -    if ((unsigned)(GetBiosTime() - startTime) >= timeout * 18u)

> +    if ((unsigned)(GetBiosTime() - startTime) > timeout * 18u)

>        return 0xffff;

>    }

>    while (r.flags & FLG_ZERO);

> diff -urb ke2035/kernel/dsk.c ke2035ctom/kernel/dsk.c
> +++ ke2035ctom/kernel/initoem.c       2007-05-14 12:43:46.000000000 -0400
> @@ -58,7 +59,8 @@
>    unsigned ebdaseg = peek(0, EBDASEG);

>    unsigned ramsize = ram_top;



> +  if (ramsize == peek(0, RAMSIZE))

>    if (ramsize * 64 == ebdaseg && ramsize < 640 && peek(0, RAMSIZE) == 
> ramsize)

>    {

>      unsigned ebdasz = peekb(ebdaseg, 0);

> diff -urb ke2035/kernel/inthndlr.c ke2035ctom/kernel/inthndlr.c
> --- ke2035/kernel/inthndlr.c    2004-05-30 20:31:06.000000000 -0400
> +++ ke2035ctom/kernel/inthndlr.c        2007-05-14 12:43:46.000000000 -0400
> @@ -78,17 +78,17 @@
>      case 0x33:

>        switch (irp->AL)

>        {

> +          /* Set Ctrl-C flag; returns al = break_ena              */

> +        case 0x01:

> +          break_ena = irp->DL & 1;

> +          /* fall through */

> +

>            /* Get Ctrl-C flag                                      */

>          case 0x00:

>            irp->DL = break_ena;

>            break;



> -          /* Set Ctrl-C flag                                      */

> -        case 0x01:

> -          break_ena = irp->DL & 1;

> -          break;

> -

>          case 0x02:             /* andrew schulman: get/set extended
> control break  */

>            {

>              UBYTE tmp = break_ena;

> -------------------------------------------------------------------------
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> _______________________________________________
> Freedos-kernel mailing list
> Freedos-kernel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/freedos-kernel


Mit freundlichen Grüßen / Kind regards,
Tom Ehlert
+49-241-79886


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Freedos-kernel mailing list
Freedos-kernel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-kernel

Reply via email to