Hi!
- code optimization: was forgotten to place lr.AL= after CritErrCode=.
- source cleanup: not all zeros was replaced by SUCCESS.
- shorten expressions and code: inline MK_FP instead defining extra
variable. There are already present similar inlinings: for example, see
ps_stack initialization at start of int21_service().
- small spaces cleanup.
--- Begin Message ---
diff -ruNp old/kernel/inthndlr.c new/kernel/inthndlr.c
--- old/kernel/inthndlr.c 2004-05-28 12:08:32.000000000 +0000
+++ new/kernel/inthndlr.c 2004-05-31 07:48:22.000000000 +0000
@@ -772,8 +772,8 @@ dispatch:
if (media_check(dpb) < 0)
#endif
{
- lr.AL = 0xff;
CritErrCode = -DE_INVLDDRV;
+ lr.AL = 0xff;
break;
}
lr.DS = FP_SEG(dpb);
@@ -961,14 +961,14 @@ dispatch:
/* Allocate memory */
case 0x48:
- if ((rc = DosMemAlloc(lr.BX, mem_access_mode, &lr.AX, &lr.BX)) < 0)
+ if ((rc = DosMemAlloc(lr.BX, mem_access_mode, &lr.AX, &lr.BX)) < SUCCESS)
{
DosMemLargest(&lr.BX);
if (DosMemCheck() != SUCCESS)
panic("MCB chain corrupted");
goto error_exit;
}
- lr.AX++; /* DosMemAlloc() returns seg of MCB rather than data */
+ lr.AX++; /* DosMemAlloc() returns seg of MCB rather than data */
break;
/* Free memory */
@@ -983,17 +983,13 @@ dispatch:
/* Set memory block size */
case 0x4a:
- if (DosMemCheck() != SUCCESS)
- panic("before 4a: MCB chain corrupted");
-
- if ((rc = DosMemChange(lr.ES, lr.BX, &lr.BX)) < 0)
+ if (DosMemCheck() != SUCCESS)
+ panic("before 4a: MCB chain corrupted");
+ if ((rc = DosMemChange(lr.ES, lr.BX, &lr.BX)) < SUCCESS)
{
#if 0
if (cu_psp == lr.ES)
- {
- psp FAR *p = MK_FP(cu_psp, 0);
- p->ps_size = lr.BX + cu_psp;
- }
+ ((psp FAR*)MK_FP(cu_psp, 0))->ps_size = lr.BX + cu_psp;
#endif
if (DosMemCheck() != SUCCESS)
panic("after 4a: MCB chain corrupted");
@@ -1035,7 +1031,7 @@ dispatch:
StartTrace();
#endif
return_user();
- break;
+ /* never return */
/* Get Child-program Return Value */
case 0x4d:
@@ -1103,13 +1099,13 @@ dispatch:
switch (lr.AL)
{
case 0x00:
- rc = DosGetFtime((COUNT) lr.BX, /* Handle */
- &lr.DX, /* FileDate */
- &lr.CX); /* FileTime */
+ rc = DosGetFtime(lr.BX, /* Handle */
+ &lr.DX, /* FileDate */
+ &lr.CX); /* FileTime */
break;
case 0x01:
- rc = DosSetFtime((COUNT) lr.BX, /* Handle */
+ rc = DosSetFtime(lr.BX, /* Handle */
(date) lr.DX, /* FileDate */
(time) lr.CX); /* FileTime */
break;
@@ -1180,9 +1176,8 @@ dispatch:
/* /// Added for SHARE. - Ron Cemer */
/* Lock/unlock file access */
case 0x5c:
- rc = DosLockUnlock
- (lr.BX, ((unsigned long)lr.CX << 16) | lr.DX,
- ((unsigned long)lr.SI << 16) | lr.DI, lr.AL != 0);
+ rc = DosLockUnlock(lr.BX, ((ULONG)lr.CX << 16) | lr.DX,
+ ((ULONG)lr.SI << 16) | lr.DI, lr.AL ? 1 : 0);
if (rc != SUCCESS)
goto error_exit;
break;
@@ -1342,8 +1337,9 @@ dispatch:
lr.AX = DosYesNo(lr.DL);
break;
default:
+ rc = DosGetData(lr.AL, lr.BX, lr.DX, lr.CX, FP_ES_DI);
#ifdef NLS_DEBUG
- if ((rc = DosGetData(lr.AL, lr.BX, lr.DX, lr.CX, FP_ES_DI)) < 0)
+ if (rc < SUCCESS)
{
printf("DosGetData() := %d\n", rc);
goto error_exit;
@@ -1351,7 +1347,6 @@ dispatch:
printf("DosGetData() returned successfully\n");
break;
#else
- rc = DosGetData(lr.AL, lr.BX, lr.DX, lr.CX, FP_ES_DI);
goto short_check;
#endif
}
@@ -1388,9 +1383,9 @@ dispatch:
/* Get/Set Serial Number */
case 0x69:
- rc = (lr.BL == 0 ? default_drive : lr.BL - 1);
if (lr.AL < 2)
{
+ rc = (lr.BL == 0 ? default_drive : lr.BL - 1);
if (get_cds(rc) == NULL)
{
rc = DE_INVLDDRV;
--- End Message ---