Hi!

- bugfix for INT21/440b (change NetRetry if DX is _non_zero).
- small code optimization.
--- Begin Message ---
diff -ruNp old/kernel/ioctl.c new/kernel/ioctl.c
--- old/kernel/ioctl.c  2004-04-13 13:38:00.000000000 +0000
+++ new/kernel/ioctl.c  2004-04-24 07:59:16.000000000 +0000
@@ -280,12 +280,10 @@ COUNT DosDevIOctl(lregs * r)
             r->AX = 0;  /* (lock/unlock logical/physical volume) */
             break;      /* simulate success for MS-DOS 7+ SCANDISK etc. --LG */
           }
-          if (((r->AL == 0x04) && !(dpbp->dpb_device->dh_attr & ATTR_IOCTL))
-              || ((r->AL == 0x05) && !(dpbp->dpb_device->dh_attr & ATTR_IOCTL))
-              || ((r->AL == 0x11)
-                  && !(dpbp->dpb_device->dh_attr & ATTR_QRYIOCTL))
-              || ((r->AL == 0x0d)
-                  && !(dpbp->dpb_device->dh_attr & ATTR_GENIOCTL)))
+          if ((UBYTE)(~1 & r->AL) == 0x04 /* AL==4 or 5 */
+                           && !(dpbp->dpb_device->dh_attr & ATTR_IOCTL) ||
+              r->AL == 0x11 && !(dpbp->dpb_device->dh_attr & ATTR_QRYIOCTL) ||
+              r->AL == 0x0d && !(dpbp->dpb_device->dh_attr & ATTR_GENIOCTL))
           {
             return DE_INVLDFUNC;
           }
@@ -302,12 +300,11 @@ COUNT DosDevIOctl(lregs * r)
           {
             r->AX = (CharReqHdr.r_status & S_BUSY) ? 1 : 0;
           }
-
-          else if (r->AL == 0x04 || r->AL == 0x05)
+          else if ((UBYTE)(~1 & r->AL) == 0x04) /* AL==4 or 5 */
           {
             r->AX = CharReqHdr.r_count;
           }
-          else if (r->AL == 0x0d || r->AL == 0x11)
+          else /*if (r->AL == 0x0d || r->AL == 0x11)*/
           {
             r->AX = CharReqHdr.r_status;
           }
@@ -346,10 +343,9 @@ COUNT DosDevIOctl(lregs * r)
       break;
       
     case 0x0b:
-      /* skip, it's a special case.                           */
-      NetDelay = r->CX;
-      if (!r->DX)
+      if (r->DX)               /* skip, it's a special case            */
         NetRetry = r->DX;
+      NetDelay = r->CX;
       break;
       
     default:
@@ -357,4 +353,3 @@ COUNT DosDevIOctl(lregs * r)
   }
   return SUCCESS;
 }
-

--- End Message ---


Reply via email to