]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/16_mm.c
FIXED farcoreleft() is a VERY important part of the farheap of MM. it is much larger...
[16.git] / src / lib / 16_mm.c
index e2e38ca1d375b13c19ce1ac28f516406dd477b88..333c368658baf31f79673695c88fe702b73f26bd 100755 (executable)
@@ -823,6 +823,13 @@ void MM_Reset (global_game_variables_t *gvar)
 #ifdef __WATCOMC__\r
        strcpy(gvar->handle.datadumpfilename, "mmdump.16w");\r
 #endif\r
+\r
+#ifdef __BORLANDC__\r
+       strcpy(gvar->handle.heapdumpfilename, "heap.16b");\r
+#endif\r
+#ifdef __WATCOMC__\r
+       strcpy(gvar->handle.heapdumpfilename, "heap.16w");\r
+#endif\r
 }\r
 \r
 \r
@@ -842,7 +849,7 @@ void MM_Reset (global_game_variables_t *gvar)
 void MM_Startup (global_game_variables_t *gvar)\r
 {\r
        int i;\r
-       dword length;\r
+       unsigned        long length;\r
        void far        *start;\r
        unsigned        segstart,seglength;//,endfree;\r
 \r
@@ -850,7 +857,6 @@ void MM_Startup (global_game_variables_t *gvar)
                MM_Shutdown (gvar);\r
 \r
        MM_Reset (gvar);\r
-\r
        gvar->mm.mmstarted = true;\r
        gvar->mm.bombonerror = true;\r
 //\r
@@ -877,17 +883,8 @@ void MM_Startup (global_game_variables_t *gvar)
 //\r
 // get all available near conventional memory segments\r
 //\r
-#ifdef __WATCOMC__\r
-       _nheapgrow();\r
-#endif\r
-       length=(word)_memavl();//(word)coreleft();\r
-       //start = gvar->mm.nearheap = _fmalloc(length);\r
-#ifdef __WATCOMC__\r
-       start = (void __far *)(gvar->mm.nearheap = _nmalloc(length));\r
-#endif\r
-#ifdef __BORLANDC__\r
-       start = (void far *)(gvar->mm.nearheap = malloc(length));\r
-#endif\r
+       length=coreleft();\r
+       start = (void far *)(gvar->mm.nearheap = nearmalloc(length));\r
 \r
        length -= 16-(FP_OFF(start)&15);\r
        length -= SAVENEARHEAP;\r
@@ -896,30 +893,19 @@ void MM_Startup (global_game_variables_t *gvar)
        MML_UseSpace (segstart,seglength, gvar);\r
        gvar->mmi.nearheap = length;\r
        //0000printf("near:     start=%Fp       segstart=%x     seglen=%lu      len=%lu\n", start, segstart, (dword)seglength, length);\r
-\r
 //\r
 // get all available far conventional memory segments\r
 //\r
-#ifdef __WATCOMC__\r
-       _fheapgrow();\r
-#endif\r
-#ifdef __BORLANDC__\r
-//     printf("farcoreleft()                           %lu\n", farcoreleft());\r
-//     printf("(farcoreleft()+32)-_FCORELEFT   %d\n", (sword)((farcoreleft()+32)-_FCORELEFT));\r
-#endif\r
-       length=_FCORELEFT;\r
-       start = gvar->mm.farheap = _fmalloc(length);//start = gvar->mm.farheap = halloc(length, 1);\r
-\r
+       length=farcoreleft();\r
+       start = gvar->mm.farheap = farmalloc(length);\r
        length -= 16-(FP_OFF(start)&15);\r
        length -= SAVEFARHEAP;\r
        seglength = length / 16;                        // now in paragraphs\r
        segstart = FP_SEG(start)+(FP_OFF(start)+15)/16;\r
        MML_UseSpace (segstart,seglength, gvar);\r
        gvar->mmi.farheap = length;\r
-       //0000printf("far:      start=%Fp       segstart=%x     seglen=%lu      len=%lu\n", start, segstart, (dword)seglength, length);\r
-\r
        gvar->mmi.mainmem = gvar->mmi.nearheap + gvar->mmi.farheap;\r
-\r
+       //0000printf("far:      start=%Fp       segstart=%x     seglen=%lu      len=%lu\n", start, segstart, (dword)seglength, length);\r
 #if !defined(__16_PM__)// && defined(__WATCOMC__)\r
 #if 0\r
        if(!dbg_debugpm) {\r
@@ -1359,6 +1345,15 @@ void MM_SortMem (global_game_variables_t *gvar)
 \r
 //==========================================================================\r
 \r
+#ifdef __BORLANDC__\r
+extern char global_temp_status_text[512];\r
+extern char global_temp_status_text2[512];\r
+#endif\r
+#ifdef __WATCOMC__\r
+//#define MMSMPANVID\r
+#define MMSMSCANINFO\r
+#endif\r
+\r
 /*\r
 =====================\r
 =\r
@@ -1367,11 +1362,6 @@ void MM_SortMem (global_game_variables_t *gvar)
 =====================\r
 */\r
 \r
-#ifdef __WATCOMC__\r
-//#define MMSMPANVID\r
-#define MMSMSCANINFO\r
-#endif\r
-\r
 void MM_ShowMemory (global_game_variables_t *gvar)\r
 {\r
        mmblocktype far *scan;\r
@@ -1581,11 +1571,14 @@ void MM_ShowMemoryDetail (unsigned x, unsigned y, unsigned w, unsigned q, sdword
 } mmblocktype;*/\r
                        //modexprint(page, x, y, t, tlsw, color, bgcolor, vidsw, const byte *str);\r
 #define MMSMPRINTMEMINFO modexprint(&(gvar->video.page[0]), xpos, ypos, 1, 1, ccolor, 8, gvar->video.VL_Started, global_temp_status_text); ypos+=8;\r
+#ifdef __WATCOMC__\r
                        if(gvar->video.VL_Started)\r
                        {\r
                                VL_ShowPage(&gvar->video.page[0], 1, 0);\r
                                modexClearRegion(&gvar->video.page[0], 0, 0, gvar->video.page[0].width, gvar->video.page[0].height, 8);\r
-                       }else clrscr();\r
+                       }else\r
+#endif\r
+                               clrscr();\r
                        sprintf(global_temp_status_text, "block #%04u", qq); MMSMPRINTMEMINFO\r
 //                     sprintf(global_temp_status_text, "%Fp", scaninfo[qq].scan->useptr); MMSMPRINTMEMINFO\r
                        sprintf(global_temp_status_text, "start:  %04x", (unsigned)scaninfo[qq].scan->start); MMSMPRINTMEMINFO\r
@@ -1606,6 +1599,7 @@ void MM_ShowMemoryDetail (unsigned x, unsigned y, unsigned w, unsigned q, sdword
                        {\r
                                printf("%s", scratch1);\r
                                printf("%s", AAGREY); printf("_");\r
+                               if(scaninfo[qq].scan->length<64000)\r
                                for(w=(scaninfo[qq].scan->start)/80;w<=end/80;w++)\r
                                {\r
                                        //strcat(scratch1, "+");\r