Article: Q40785
Product(s): See article
Version(s): 5.10
Operating System(s): MS-DOS
Keyword(s): ENDUSER | | mspl13_c
Last Modified: 16-MAY-1989
Question:
Following the directions in the C 5.10 README.DOC file, I have
modified the CRT0DAT.ASM file to increase the number of file handles
from 20 to 30. I have a simple program (below) that checks the amount
of available memory. When I link it with the modified CRT0DAT and
execute the program, the amount of available memory is significantly
less (approximately 64K) if I am running PC-DOS 3.30 than it is if I
am running MS-DOS 3.30.
Note: If I do not link in the CRT0DAT, then the difference in the
available memory between MS-DOS 3.30 and PC-DOS 3.30 is negligible.
All memory models will produce results similar to those described
above.
How can I eliminate this inconsistency between the two versions of
DOS?
Response:
The only workarounds are to not link with a modified CRT0DAT.ASM, or
to use MS-DOS instead of PC-DOS.
Microsoft is researching this problem and will post more information
as it becomes available.
The following program, compiled with "cl /W3 /c", demonstrates the
problem:
#include <stdio.h>
#include <dos.h>
void main(void)
{
unsigned size;
unsigned segment;
printf("Checking memory:\n");
size = 0xffff;
if (_dos_allocmem (size, &segment))
printf("Available paragraphs: %u\n",segment);
else
printf("Memory allocated.\n");
}