X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2F16_mm.c;h=cc8f9284d2b0abe537b671316abaae27a8c2fda0;hb=dae38738bd8f69f329d0ad51a7728c9abff073df;hp=89c2765f87eba622781d3779a216d1f462a5b3b9;hpb=17329069f7c234ef122323e93d6972f75453aa15;p=16.git diff --git a/src/lib/16_mm.c b/src/lib/16_mm.c index 89c2765f..cc8f9284 100644 --- a/src/lib/16_mm.c +++ b/src/lib/16_mm.c @@ -425,11 +425,12 @@ void MML_UseSpace(/*d*/word segstart, dword seglength, mminfo_t *mm) mmblocktype huge *scan,huge *last; dword oldend; ///*d*/word fat=0; - //word segm=0; dword extra; scan = last = mm->mmhead; mm->mmrover = mm->mmhead; // reset rover to start of memory + scan->segm=1; + scan->segmlen=seglength; // // search for the block that contains the range of segments @@ -440,6 +441,12 @@ void MML_UseSpace(/*d*/word segstart, dword seglength, mminfo_t *mm) scan = scan->next; } + //find out how many blocks it span! + if(seglength>0xfffflu) + { + scan->segm=seglength/0xfffflu; + } + // // take the given range out of the block // @@ -455,11 +462,11 @@ void MML_UseSpace(/*d*/word segstart, dword seglength, mminfo_t *mm) inc ax mov ds,ax }*/ -printf("extra=%lu ", extra); -printf("oldend=%lu ", oldend); -printf("length=%u ", scan->length); -printf("segstart=%u ", segstart); -printf("seglength=%lu\n", seglength); +printf("segm=%u ", scan->segm); +printf("ex=%lu ", extra); +printf("len=%u ", scan->length); +printf("segsta=%u ", segstart); +printf("seglen=%lu\n", seglength); //MML_UseSpace(?segstart?, ?length?, mm); @@ -648,7 +655,7 @@ emsskip: if(MML_CheckForXMS(mm)) { printf("XMS!\n"); - //++++++++MML_SetupXMS(mm, mmi); // allocate as many UMBs as possible + MML_SetupXMS(mm, mmi); // allocate as many UMBs as possible } // @@ -1031,7 +1038,7 @@ void MM_ShowMemory(mminfo_t *mm) mmblocktype huge *scan; unsigned color,temp;//, i; long end,owner; - char scratch[80],str[10]; + char scratch[160],str[16]; //**** VW_SetDefaultColors(); //**** VW_SetLineWidth(40); @@ -1055,8 +1062,7 @@ void MM_ShowMemory(mminfo_t *mm) color = 12; // red = locked if(scan->start<=end) { - printf("scan->start=%d\n", scan->start); - printf("MM_ShowMemory: Memory block order currupted!\n"); + printf("\nMM_ShowMemory: Memory block order currupted!\n"); return; } end = scan->start+scan->length-1; @@ -1066,9 +1072,11 @@ void MM_ShowMemory(mminfo_t *mm) //++++ VW_Hlin(end+1,scan->next->start,0,0); // black = free //****#if 0 -printf("Location:"); -printf("%x\t", scan->start); -strcpy (scratch,"Size:"); +printf("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"); //bug! +strcpy(scratch,"Location:"); +ultoa (scan->start,str,16); +strcat (scratch,str); +strcat (scratch,"\tSize:"); ltoa ((dword)scan->length*16,str,10); strcat (scratch,str); strcat (scratch,"\tOwner:0x");