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
> [email protected]
> 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/freedos-kernel