Hi,

I've put on some effort in merging Tom's changes into the current CVS
('stable').
Thanks to Eric for forwarding the patch. Committing them back into CVS
is mostly done now.

Many of the changes in Tom's kernel, when compared to 2035 plain, were
already there (or in a slightly different form), some are not.

I'm left with the small diff below of changes I do not understand.
Tom, can you explain?

1. config.c. Why use > instead of >=? Is there a corner case with equality?
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?
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).
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

Reply via email to