\r
while(scan)\r
{\r
- if(!(scan->attributes&LOCKBIT) && (scan->attributes&PURGEBITS))\r
+ if(!(scan->attributes&LOCKBIT) && (scan->attributes&PURGEBITS) )\r
{\r
- MM_FreePtr(scan->useptr, gvar);\r
+ MM_FreePtr (scan->useptr, gvar);\r
return;\r
}\r
scan = scan->next;\r
}\r
\r
\r
+//==========================================================================\r
+\r
+/*\r
+===================\r
+=\r
+= MM_Reset\r
+=\r
+===================\r
+*/\r
+\r
+void MM_Reset (global_game_variables_t *gvar)\r
+{\r
+// //has to be 16\r
+// if(sizeof(mmblocktype)!=16)\r
+// return;\r
+\r
+#ifdef __BORLANDC__\r
+ strcpy(gvar->handle.datadumpfilename, "mmdump.16b");\r
+#endif\r
+#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
//==========================================================================\r
\r
/*\r
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
if(gvar->mm.mmstarted)\r
MM_Shutdown (gvar);\r
\r
+ MM_Reset (gvar);\r
gvar->mm.mmstarted = true;\r
gvar->mm.bombonerror = true;\r
//\r
//\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
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
gvar->mm.mmnew->attributes = BASEATTRIBUTES;\r
//if(gvar->mm.mmnew->useptr==NULL){\r
#ifdef __DEBUG_MM__\r
- printf("MM_GetPtr\n");\r
if(dbg_debugmm>0){\r
+ printf("===============================================================================\n");\r
+ printf(" MM_GetPtr\n");\r
+ printf("===============================================================================\n");\r
//%04x\r
- printf(" baseptr=%Fp ", baseptr); printf("useptr=%Fp\n", gvar->mm.mmnew->useptr);\r
- printf(" *baseptr=%Fp ", *baseptr); printf("*useptr=%Fp\n", *(gvar->mm.mmnew->useptr));\r
- printf(" &baseptr=%Fp ", &baseptr); printf("&useptr=%Fp\n", &(gvar->mm.mmnew->useptr));\r
+// printf(" baseptr=%Fp ", baseptr); printf("useptr=%Fp\n", gvar->mm.mmnew->useptr);\r
+// //printf(" *baseptr=%Fp ", *baseptr); printf("*useptr=%Fp\n", *(gvar->mm.mmnew->useptr));\r
+// printf(" &baseptr=%Fp ", &baseptr); printf("&useptr=%Fp\n", &(gvar->mm.mmnew->useptr));\r
+\r
+ printf(" baseptr=%04x ", baseptr); printf("useptr=%04x\n", gvar->mm.mmnew->useptr);\r
+ //printf(" *baseptr=%04x ", *baseptr); printf("*useptr=%04x\n", *(gvar->mm.mmnew->useptr));\r
+ printf(" &baseptr=%04u ", &baseptr); printf("&useptr=%04u\n", &(gvar->mm.mmnew->useptr));\r
+\r
+ printf(" size is %lu\n", size);\r
}\r
- printf(" size is %lu\n", size);\r
#endif\r
//Quit (gvar, "gvar->mm.mmnew->useptr==NULL"); }\r
\r
\r
\r
SD_StopSound();*/\r
+#ifdef __WATCOMC__\r
oldborder = gvar->video.bordercolor;\r
- gvar->video.bordercolor = modexPalOverscan(15);\r
+ gvar->video.bordercolor = VL_modexPalOverscan(gvar->video.palette, 4);\r
+#endif\r
\r
if (beforesort)\r
beforesort();\r
\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
=====================\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
}\r
#endif\r
#ifdef MMSMSCANINFO\r
+ MM_ShowMemoryDetail (x, y, w, q, end, &scaninfo, gvar);\r
+#endif\r
+\r
+\r
+ if(gvar->video.VL_Started) IN_Ack(gvar);\r
+\r
+ gvar->video.BOFS = (byte __far *)temp;\r
+}\r
+\r
+#ifdef MMSMSCANINFO\r
+void MM_ShowMemoryDetail (unsigned x, unsigned y, unsigned w, unsigned q, sdword end, mmshowmemoryinfo_t *scaninfo, global_game_variables_t *gvar)\r
{\r
byte scratch1[4];\r
unsigned maxq = q;\r
struct mmblockstruct far *next;\r
} 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, 0, ccolor, 8, gvar->video.VL_Started, global_temp_status_text); ypos+=8;\r
- if(!gvar->video.VL_Started) clrscr(); else\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
- }\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, "%04x", (unsigned)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
{\r
{\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
if(gvar->video.VL_Started)\r
{\r
//if (scan->next && scan->next->start > end+1) free\r
- xpos = 16;\r
- ypos = 16;//(gvar->video.page[0].sh-(32));//8*4\r
+ xpos = gvar->video.page[0].dx;\r
+ ypos = gvar->video.page[0].dy;//(gvar->video.page[0].sh-(32));//8*4\r
}\r
else\r
{\r
if(qq<maxq) qq++;\r
else qq = 0;\r
break;\r
+/* case sc_UpArrow:\r
+ if(qq>0) qq-=100;\r
+ else qq = maxq;\r
+ break;\r
+ case sc_DownArrow:\r
+ if(qq<maxq) qq+=100;\r
+ else qq = 0;\r
+ break;*/\r
case sc_Escape:\r
done = true;\r
break;\r
}\r
#endif\r
\r
- if(gvar->video.VL_Started) IN_Ack(gvar);\r
-\r
- gvar->video.BOFS = (byte __far *)temp;\r
-}\r
-\r
//==========================================================================\r
\r
/*\r
#ifdef __BORLANDC__\r
free(gvar->mm.nearheap);\r
#endif\r
-#ifdef __BORLANDC__\r
- dumpfile = fopen ("mmdump.16b","w");\r
-#endif\r
-#ifdef __WATCOMC__\r
- dumpfile = fopen ("mmdump.16w","w");\r
-#endif\r
- if (!dumpfile){\r
- printf("MM_DumpData: Couldn't open MMDUMP.16!\n");\r
- return;\r
- }\r
+ dumpfile = fopen (gvar->handle.datadumpfilename, "w");\r
+ if (!dumpfile)\r
+ Quit (gvar, "MM_DumpData: Couldn't open MMDUMP.16!\n");\r
\r
lowest = -1;\r
do\r
\r
} while (lowest != 0xffff);\r
\r
- fclose(dumpfile);\r
- printf("MMDUMP.16 created.\n");\r
+ fclose (dumpfile);\r
+\r
+ //reset filename\r
+#ifdef __BORLANDC__\r
+ strcpy(gvar->handle.datadumpfilename, "mmdump.16b");\r
+#endif\r
+#ifdef __WATCOMC__\r
+ strcpy(gvar->handle.datadumpfilename, "mmdump.16w");\r
+#endif\r
+//00 printf ("MMDUMP.16 created.\n");\r
}\r
\r
//==========================================================================\r