/*void MML_UseSpace(word segstart, dword seglength, mminfo_t *mm)
{
- mmblocktype huge *scan,huge *last;
+ //huge mmblocktype huge *scan,huge *last;
word segm=1;
word oldend;
dword segmlen;
// take the given range out of the block
//
oldend = scan->start + scan->length;
- extra = oldend - (segstart+((word)seglength));
+ extra = oldend - (segstart+((unsigned)seglength));
if (extra < 0)
{
printf("========================================\n");
void MML_ClearBlock(mminfo_t *mm)
{
- mmblocktype huge *scan,huge *last;
+ //huge mmblocktype huge *scan,huge *last;
+ mmblocktype far *scan,far *last;
scan = mm->mmhead->next;
void MM_Startup(mminfo_t *mm, mminfotype *mmi)
{
int i;
- dword length,seglength;
- //dword length; word seglength;
- void huge *start;
+ //dword length,seglength;
+ dword length; word seglength;
+ //huge void huge *start;
+ void far *start;
word segstart;//,endfree;
+ //memptr *peeonself;
// if(mm->mmstarted)
// MM_Shutdown(mm);
mm->mmnew->length = 0xffff;
mm->mmnew->attributes = LOCKBIT;
mm->mmnew->next = NULL;
+ //mm->mmnew->useptr = peeonself;
mm->mmrover = mm->mmhead;
+ //printf(" %x\n", peeonself);
+ //printf(" %x\n", *peeonself);
//
// get all available near conventional memory segments
//
#ifdef __WATCOMC__
_nheapgrow();
length=(dword)_memavl();//(dword)GetFreeSize();
- start = (void huge *)(mm->nearheap = _nmalloc(length));
+ //huge start = (void huge *)(mm->nearheap = _nmalloc(length));
+ start = (void far *)(mm->nearheap = _nmalloc(length));
#endif
#ifdef __BORLANDC__
length=coreleft();
- start = (void huge *)(mm->nearheap = malloc(length));
+ //huge start = (void huge *)(mm->nearheap = malloc(length));
+ start = (void far *)(mm->nearheap = malloc(length));
#endif
length -= 16-(FP_OFF(start)&15);
length -= SAVENEARHEAP;
void MM_GetPtr (memptr *baseptr, dword size, mminfo_t *mm, mminfotype *mmi)
{
- mmblocktype huge *scan,huge *lastscan,huge *endscan
- ,huge *purge,huge *next;
+ //huge mmblocktype huge *scan,huge *lastscan,huge *endscan,huge *purge,huge *next;
+ mmblocktype far *scan,far *lastscan,far *endscan,far *purge,far *next;
int search;
unsigned needed,startseg;
GETNEWBLOCK; // fill in start and next after a spot is found
mm->mmnew->length = needed;
mm->mmnew->useptr = baseptr;
+ //if(mm->mmnew->useptr==NULL){
+ printf("baseptr=%04x ", baseptr); printf("useptr=%04x\n", mm->mmnew->useptr);
+ printf("*baseptr=%04x ", *baseptr); printf("*useptr=%04x\n", *(mm->mmnew->useptr));
+ //printf("*baseptr=%Fp ", *baseptr); printf("*useptr=%Fp\n", *(mm->mmnew->useptr));
+ //exit(-5); }
mm->mmnew->attributes = BASEATTRIBUTES;
//tryagain:
void MM_FreePtr(memptr *baseptr, mminfo_t *mm)
{
- mmblocktype huge *scan,huge *last;
+ //huge mmblocktype huge *scan,huge *last;
+ mmblocktype far *scan,far *last;
last = mm->mmhead;
scan = last->next;
void MM_SetPurge(memptr *baseptr, int purge, mminfo_t *mm)
{
- mmblocktype huge *start;
+ //huge mmblocktype huge *start;
+ mmblocktype far *start;
start = mm->mmrover;
void MM_SetLock(memptr *baseptr, boolean locked, mminfo_t *mm)
{
- mmblocktype huge *start;
+ //huge mmblocktype huge *start;
+ mmblocktype far *start;
start = mm->mmrover;
void MM_SortMem(mminfo_t *mm)
{
- mmblocktype huge *scan,huge *last,huge *next;
+ //huge mmblocktype huge *scan,huge *last,huge *next;
+ mmblocktype far *scan,far *last,far *next;
unsigned start,length,source,dest,oldborder;
int playing;
void MM_ShowMemory(global_game_variables_t *gvar,/*page_t *page, */mminfo_t *mm)
{
- mmblocktype huge *scan;
+ //huge mmblocktype huge *scan;
+ mmblocktype far *scan;
word temp;
sdword end,owner;
//word chx,chy;
word w;
//dword wwww;
- byte scratch[160],scratch0[4096],str[16];
+ byte scratch[160],scratch0[4096],scratch1[160],str[16];
//byte d = '#';
//**** VW_SetDefaultColors();
//**** VW_SetLineWidth(40);
ultoa (scan->start,str,16);
strcat (scratch,str);
strcat (scratch,"\tSize:");
- ultoa ((word)scan->length,str,10);
+ ultoa ((unsigned)scan->length,str,10);
strcat (scratch,str);
strcat (scratch,"\tOwner:0x");
owner = (unsigned)scan->useptr;
scan = scan->next;
}
+ /*strcpy(scratch1, AARESET);
+ strcat(scratch1, "========================================\n");
+ strcat(scratch1, "near= ");
+ ultoa (*(mm->nearheap),str,10);
+ strcat (scratch1,str);
+ strcat(scratch1, " far= ");
+ ultoa (*(mm->farheap),str,10);
+ strcat (scratch1,str);
+ strcat(scratch1, "\n");
+ //strcat(scratch1, "&near= %Fp ", &(mm->nearheap));
+ //strcat(scratch1, "&far= %Fp", &(mm->farheap));
+ //strcat(scratch1, "\n");
+ strcat(scratch1, "========================================\n");
+ write(gvar->handle.debughandle,scratch1,strlen(scratch1));*/
+
CA_CloseDebug (gvar);
void MM_DumpData(mminfo_t *mm)
{
- mmblocktype huge *scan,huge *best;
+ //huge mmblocktype huge *scan,huge *best;
+ mmblocktype far *scan,far *best;
long lowest,oldlowest;
word owner;
byte lock,purge;
FILE *dumpfile;
free(mm->nearheap);
- dumpfile = fopen ("mmdump.16","w");
+#ifdef __BORLANDC__
+ dumpfile = fopen ("mmdump.16b","w");
+#endif
+#ifdef __WATCOMC__
+ dumpfile = fopen ("mmdump.16w","w");
+#endif
if (!dumpfile){
printf("MM_DumpData: Couldn't open MMDUMP.16!\n");
return;
scan = mm->mmhead;
while (scan)
{
- owner = (word)scan->useptr;
+ owner = (unsigned)scan->useptr;
if (owner && owner<lowest && owner > oldlowest)
{
else
lock = '-';
fprintf (dumpfile,"0x%p (%c%c) = %u\n"
- ,(word)lowest,lock,purge,best->length);
+ ,(unsigned)lowest,lock,purge,best->length);
}
} while (lowest != 0xffff);
dword MM_UnusedMemory(mminfo_t *mm)
{
dword free;
- mmblocktype huge *scan;
+ //huge mmblocktype huge *scan;
+ mmblocktype far *scan;
free = 0;
scan = mm->mmhead;
dword MM_TotalFree(mminfo_t *mm)
{
dword free;
- mmblocktype huge *scan;
+ //huge mmblocktype huge *scan;
+ mmblocktype far *scan;
free = 0;
scan = mm->mmhead;