Hi!
- fix: INT21/3301 now returns in DL low bit of input value (as in MS-DOS).
--- Begin Message ---
diff -ruNp old/kernel/inthndlr.c new/kernel/inthndlr.c
--- old/kernel/inthndlr.c 2004-07-14 23:47:40.000000000 +0000
+++ new/kernel/inthndlr.c 2004-07-15 00:42:06.000000000 +0000
@@ -74,21 +74,18 @@ VOID ASMCFUNC int21_syscall(iregs FAR *
setvec(irp->AL, (intvec)MK_FP(irp->DS, irp->DX));
break;
- /* DosVars - get/set dos variables */
- case 0x33:
+ case 0x33: /* DosVars - get/set dos variables */
switch (irp->AL)
{
- /* Get Ctrl-C flag */
- case 0x00:
- irp->DL = break_ena;
- break;
-
- /* Set Ctrl-C flag */
- case 0x01:
+ case 0x01: /* Set Ctrl-C flag */
break_ena = irp->DL & 1;
+ /* fall through */
+
+ case 0x00: /* Get Ctrl-C flag */
+ irp->DL = break_ena;
break;
- case 0x02: /* andrew schulman: get/set extended control break */
+ case 0x02: /* andrew schulman: get/set extended control break */
{
UBYTE tmp = break_ena;
break_ena = irp->DL & 1;
--- End Message ---