//
//---- length=coreleft();
printf(" nearheap making!\n");
- _heapgrow();
- length=_memmax();//(dword)GetFreeSize();
- start = (void huge *)(mm->nearheap = malloc(length));
+ _nheapgrow();
+ length=(dword)_memavl();//(dword)GetFreeSize();
+ start = (void huge *)(mm->nearheap = _nmalloc(length));
length -= 16-(FP_OFF(start)&15);
length -= SAVENEARHEAP;
seglength = length / 16; // now in paragraphs
MML_UseSpace(segstart,seglength, mm);
mmi->nearheap = length;
printf("start=%FP segstart=%X seglen=%lu len=%lu\n", start, segstart, seglength, length);
- printf(" near heap ok!\n");
+ //heapdump();
+ //getch();
//
// get all available far conventional memory segments
MML_UseSpace(segstart,seglength, mm);
mmi->farheap = length;
printf("start=%FP segstart=%X seglen=%lu len=%lu\n", start, segstart, seglength, length);
- printf(" far heap ok!\n");
+ //heapdump();
mmi->mainmem = mmi->nearheap + mmi->farheap;
getch();
+//goto xmsskip;
+
//
// detect EMS and allocate up to 64K at page frame
//
//MM_MapXEMS(mm, mmi); // map in used pages
}
+goto xmsskip;
+
//
// detect XMS and get upper memory blocks
//
return;
_ffree(mm->farheap); printf(" far freed\n");
- free(mm->nearheap); printf(" near freed\n");
+ _nfree(mm->nearheap); printf(" near freed\n");
if(MML_CheckForEMS()){ MML_ShutdownEMS(mm); printf(" EMS freed\n"); }
if(MML_CheckForXMS(mm)){ MML_ShutdownXMS(mm); printf(" XMS freed\n"); }
}
if (mm->bombonerror)
{
printf(OUT_OF_MEM_MSG,(size-mmi->nearheap));
- exit(-5);
+ printf("for stability reasons the program will shut down! wwww\n");
+ MM_Shutdown(mm);
+ exit(-1);
}
else
mm->mmerror = true;
void MM_seguin(void)
{
- __asm
- {
+ __asm {
push ds
mov ax,ds
inc ax
void MM_segude(void)
{
- __asm
- {
+ __asm {
pop ds
}
}