]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/16_mm.c
showmemorydetail is working i added a little hax wwww
[16.git] / src / lib / 16_mm.c
index c044ae47a75cb5f688d383eedf6cbf732f116b2c..544d280aca3ba052c22747653a5ce1d922712228 100755 (executable)
@@ -883,8 +883,8 @@ void MM_Startup (global_game_variables_t *gvar)
 //\r
 // get all available near conventional memory segments\r
 //\r
-       length=coreleft();\r
-       start = (void far *)(gvar->mm.nearheap = nearmalloc(length));\r
+       length=(word)coreleft();\r
+       start = (void far *)(gvar->mm.nearheap = _nmalloc(length));\r
 \r
        length -= 16-(FP_OFF(start)&15);\r
        length -= SAVENEARHEAP;\r
@@ -896,7 +896,7 @@ void MM_Startup (global_game_variables_t *gvar)
 //\r
 // get all available far conventional memory segments\r
 //\r
-       length=HC_farcoreleft();\r
+       length=farcoreleft();\r
        start = gvar->mm.farheap = farmalloc(length);\r
        length -= 16-(FP_OFF(start)&15);\r
        length -= SAVEFARHEAP;\r
@@ -976,12 +976,7 @@ void MM_Shutdown (global_game_variables_t *gvar)
                return;\r
 \r
        _ffree(gvar->mm.farheap);//     printf("                far freed\n");\r
-#ifdef __WATCOMC__\r
        _nfree(gvar->mm.nearheap);//    printf("                near freed\n");\r
-#endif\r
-#ifdef __BORLANDC__\r
-       free(gvar->mm.nearheap);//      printf("                near freed\n");\r
-#endif\r
 #ifndef __16_PM__\r
 #if 0\r
 #ifdef __DEBUG__\r
@@ -1345,6 +1340,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
@@ -1353,11 +1357,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
@@ -1473,7 +1472,9 @@ void MM_ShowMemory (global_game_variables_t *gvar)
                strcat (scratch,"\n");\r
                write(gvar->handle.debughandle,scratch,strlen(scratch));\r
                write(gvar->handle.debughandle,scratch0,strlen(scratch0));\r
-//fprintf(stdout, "%s", scratch);\r
+//0000fprintf(stdout, "\n[%s]", scratch);\r
+//0000fprintf(stdout, "[\n%s\n]", scratch0);\r
+//0000fprintf(stdout, "[%u]\n", q);\r
 \r
                scan = scan->next;\r
                q++;\r
@@ -1537,12 +1538,12 @@ void MM_ShowMemoryDetail (unsigned x, unsigned y, unsigned w, unsigned q, sdword
                boolean                 done;\r
                ScanCode                scancode;\r
                int xpos,ypos;\r
-               word qq, ccolor = 3;\r
+               word ccolor = 3;\r
                IN_Ack(gvar);\r
 //             VL_ClearVideo (8);\r
-               for (qq = 0,done = false;!done;)\r
+               for (q = 0,done = false;!done;)\r
                {\r
-                       if(scaninfo[qq].scan->attributes & PURGEBITS)\r
+                       if(scaninfo[q].scan->attributes & PURGEBITS)\r
                        {\r
                                ccolor = 6;             // dark purple = purgable\r
                                strcpy(scratch1, AAMAGENTA);            // dark purple = purgable\r
@@ -1552,13 +1553,13 @@ void MM_ShowMemoryDetail (unsigned x, unsigned y, unsigned w, unsigned q, sdword
                                strcpy(scratch1, AABLUE);               // medium blue = non purgable\r
                                //printf("%s", AABLUE);\r
                        }\r
-                       if(scaninfo[qq].scan->attributes & LOCKBIT)\r
+                       if(scaninfo[q].scan->attributes & LOCKBIT)\r
                        {\r
                                ccolor = 1;             // red = locked\r
                                strcpy(scratch1, AARED);                // red = locked\r
                                //printf("%s", AARED);\r
                        }\r
-                       end = scaninfo[qq].scan->length-1;\r
+                       end = scaninfo[q].scan->length-1;\r
 /*typedef struct mmblockstruct{\r
        word    start,length;\r
        unsigned        attributes;\r
@@ -1567,24 +1568,27 @@ 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
-                       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
-                       sprintf(global_temp_status_text, "useptr: %04x", (unsigned)scaninfo[qq].scan->useptr); MMSMPRINTMEMINFO\r
-                       sprintf(global_temp_status_text, "size: %05u", (unsigned)scaninfo[qq].scan->length); MMSMPRINTMEMINFO\r
-                       if (scaninfo[qq].scan->next && scaninfo[qq].scan->next->start > end+1)\r
+                       }else\r
+#endif\r
+                               clrscr();\r
+                       sprintf(global_temp_status_text, "block #%04u", q); MMSMPRINTMEMINFO\r
+//                     sprintf(global_temp_status_text, "%Fp", scaninfo[q].scan->useptr); MMSMPRINTMEMINFO\r
+                       sprintf(global_temp_status_text, "start:  %04x", (unsigned)scaninfo[q].scan->start); MMSMPRINTMEMINFO\r
+                       sprintf(global_temp_status_text, "useptr: %04x", (unsigned)scaninfo[q].scan->useptr); MMSMPRINTMEMINFO\r
+                       sprintf(global_temp_status_text, "size: %05u", (unsigned)scaninfo[q].scan->length); MMSMPRINTMEMINFO\r
+                       if (scaninfo[q].scan->next && scaninfo[q].scan->next->start > end+1)\r
                        {\r
-                               sprintf(global_temp_status_text, "free: %05u", (unsigned)(scaninfo[qq].scan->next->start-scaninfo[qq].scan->start)); MMSMPRINTMEMINFO\r
+                               sprintf(global_temp_status_text, "free: %05u", (unsigned)(scaninfo[q].scan->next->start-scaninfo[q].scan->start)); MMSMPRINTMEMINFO\r
                        }\r
                        if(gvar->video.VL_Started)\r
                        {\r
-                               y = ypos;//scaninfo[qq].scan->start/width;\r
-                               x = xpos;//scaninfo[qq].scan->start%width;\r
+                               y = ypos;//scaninfo[q].scan->start/width;\r
+                               x = xpos;//scaninfo[q].scan->start%width;\r
                                VW_Hlin(x,x+end,y,ccolor,gvar);\r
                                VL_Plot(x,y,5,gvar);\r
                        }\r
@@ -1592,7 +1596,8 @@ void MM_ShowMemoryDetail (unsigned x, unsigned y, unsigned w, unsigned q, sdword
                        {\r
                                printf("%s", scratch1);\r
                                printf("%s", AAGREY); printf("_");\r
-                               for(w=(scaninfo[qq].scan->start)/80;w<=end/80;w++)\r
+                               if(scaninfo[q].scan->length<64000)\r
+                               for(w=(scaninfo[q].scan->start)/80;w<=end/80;w++)\r
                                {\r
                                        //strcat(scratch1, "+");\r
                                        printf("+");\r
@@ -1600,18 +1605,18 @@ void MM_ShowMemoryDetail (unsigned x, unsigned y, unsigned w, unsigned q, sdword
                        }\r
 \r
 \r
-                               if (scaninfo[qq].scan->next && scaninfo[qq].scan->next->start > end+1) if(!gvar->video.VL_Started)\r
+                               if (scaninfo[q].scan->next && scaninfo[q].scan->next->start > end+1) if(!gvar->video.VL_Started)\r
                                {\r
                                        //strcat(scratch1, AARESET);\r
                                        printf("%s", AARESET);\r
                                        //strcat(scratch1,AAGREEN);\r
                                        printf("%s", AAGREEN);\r
-                                       for(w=(end+1)/80;w<=((scaninfo[qq].scan->next->start-scaninfo[qq].scan->start)/80);w++)\r
+                                       for(w=(end+1)/80;w<=((scaninfo[q].scan->next->start-scaninfo[q].scan->start)/80);w++)\r
                                        {\r
                                                //strcat(scratch1,"0");\r
                                                printf("0");\r
                                        }\r
-                               }else VW_Hlin(x+end+1,x+(scaninfo[qq].scan->next->start-scaninfo[qq].scan->start),y,3,gvar);    // black = free//now green\r
+                               }else VW_Hlin(x+end+1,x+(scaninfo[q].scan->next->start-scaninfo[q].scan->start),y,3,gvar);      // black = free//now green\r
 \r
 \r
                        if(gvar->video.VL_Started)\r
@@ -1626,27 +1631,29 @@ void MM_ShowMemoryDetail (unsigned x, unsigned y, unsigned w, unsigned q, sdword
                                printf("%s", AARESET);\r
                                printf("\n");\r
                        }\r
+//0000printf("%s", AABLACK); fprintf(stdout, "q=%u     maxq=%u\n", q, maxq); printf("%s", AARESET);\r
+fprintf(stdout, "");   //this is a HAX to make it decrement and increment properly when it is at 0 and qmax\r
                        while (!(scancode = gvar->in.inst->LastScan)){}\r
 \r
                        IN_ClearKey(scancode);\r
                        switch (scancode)\r
                        {\r
                                case sc_LeftArrow:\r
-                                       if(qq>0) qq--;\r
-                                       else    qq = maxq;\r
+                                       if(q>0) q--;\r
+                                       else    q = maxq;\r
                                break;\r
                                case sc_RightArrow:\r
-                                       if(qq<maxq) qq++;\r
-                                       else qq = 0;\r
+                                       if(q<maxq) q++;\r
+                                       else q = 0;\r
                                break;\r
-/*                             case sc_UpArrow:\r
-                                       if(qq>0) qq-=100;\r
-                                       else    qq = maxq;\r
+                               case sc_UpArrow:\r
+                                       if(q>10) q-=10;\r
+                                       else    q = maxq;\r
                                break;\r
                                case sc_DownArrow:\r
-                                       if(qq<maxq) qq+=100;\r
-                                       else qq = 0;\r
-                               break;*/\r
+                                       if(q<maxq+10) q+=10;\r
+                                       else q = 0;\r
+                               break;\r
                                case sc_Escape:\r
                                        done = true;\r
                                break;\r
@@ -1673,12 +1680,7 @@ void MM_DumpData (global_game_variables_t *gvar)
        char    lock,purge;\r
        FILE    *dumpfile;\r
 \r
-#ifdef __WATCOMC__\r
        _nfree(gvar->mm.nearheap);\r
-#endif\r
-#ifdef __BORLANDC__\r
-       free(gvar->mm.nearheap);\r
-#endif\r
        dumpfile = fopen (gvar->handle.datadumpfilename, "w");\r
        if (!dumpfile)\r
                Quit (gvar, "MM_DumpData: Couldn't open MMDUMP.16!\n");\r