]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/16_mm.c
those programs are messy! wwww
[16.git] / src / lib / 16_mm.c
index 3ba93d329444678c6a9beda1e6bf6ebc7983c0f6..701db3e89c3922bdf1c8f789da182afe4caac8c8 100644 (file)
@@ -673,9 +673,9 @@ void MM_Startup(mminfo_t *mm, mminfotype *mmi)
 //
 //---- 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
@@ -683,7 +683,8 @@ void MM_Startup(mminfo_t *mm, mminfotype *mmi)
        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
@@ -701,12 +702,14 @@ void MM_Startup(mminfo_t *mm, mminfotype *mmi)
        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
 //
@@ -736,6 +739,8 @@ printf("            EMS4\n");
                        //MM_MapXEMS(mm, mmi);                                  // map in used pages
        }
 
+goto xmsskip;
+
 //
 // detect XMS and get upper memory blocks
 //
@@ -781,7 +786,7 @@ void MM_Shutdown(mminfo_t *mm)
                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"); }
 }
@@ -883,7 +888,9 @@ void MM_GetPtr(memptr *baseptr,dword size, mminfo_t *mm, mminfotype *mmi)
        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;
@@ -1561,8 +1568,7 @@ void MM_FreeBlock(mmblocktype *x, mminfo_t *mm)
 
 void MM_seguin(void)
 {
-       __asm
-       {
+       __asm {
                push    ds
                mov     ax,ds
                inc             ax
@@ -1572,8 +1578,7 @@ void MM_seguin(void)
 
 void MM_segude(void)
 {
-       __asm
-       {
+       __asm {
                pop ds
        }
 }