fix 2nd parameter of "DOS=" statement in config.sys does not take effect in some cases:

* preceding space(s): e.g. "DOS=UMB, HIGH"
* after unknown keyword: e.g. "DOS=NOUMB,HIGH"
This commit is contained in:
lpproj 2021-11-23 20:35:05 +09:00 committed by Kenneth J Davis
parent 34c452a29e
commit 571cf11111
1 changed files with 21 additions and 3 deletions

View File

@ -1294,14 +1294,17 @@ STATIC VOID Dosmem(BYTE * pLine)
BYTE *pTmp; BYTE *pTmp;
BYTE UMBwanted = FALSE; BYTE UMBwanted = FALSE;
pLine = GetStringArg(pLine, szBuf); GetStringArg(pLine, szBuf);
strcpy(szBuf, pLine);
strupr(szBuf); strupr(szBuf);
/* printf("DOS called with %s\n", szBuf); */ /* printf("DOS called with %s\n", szBuf); */
for (pTmp = szBuf;;) for (pTmp = szBuf;;)
{ {
while (*pTmp == ' ' || *pTmp == '\t')
pTmp++;
if (memcmp(pTmp, "UMB", 3) == 0) if (memcmp(pTmp, "UMB", 3) == 0)
{ {
UMBwanted = TRUE; UMBwanted = TRUE;
@ -1312,11 +1315,26 @@ STATIC VOID Dosmem(BYTE * pLine)
HMAState = HMA_REQ; HMAState = HMA_REQ;
pTmp += 4; pTmp += 4;
} }
if (memcmp(pTmp, "LOW", 3) == 0)
{
HMAState = HMA_LOW;
pTmp += 3;
}
if (memcmp(pTmp, "NOUMB", 5) == 0)
{
UMBwanted = FALSE;
pTmp += 5;
}
/* if (memcmp(pTmp, "CLAIMINIT",9) == 0) { INITDataSegmentClaimed = 0; pTmp += 9; }*/ /* if (memcmp(pTmp, "CLAIMINIT",9) == 0) { INITDataSegmentClaimed = 0; pTmp += 9; }*/
pTmp = skipwh(pTmp); pTmp = skipwh(pTmp);
if (*pTmp != ',') if (*pTmp == '\0')
break; break;
if (*pTmp != ',')
{
CfgFailure(pLine + (pTmp - szBuf));
break;
}
pTmp++; pTmp++;
} }