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 ---
