]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/16_mm.c
on the move and hasaomeideas
[16.git] / src / lib / 16_mm.c
index 89c2765f87eba622781d3779a216d1f462a5b3b9..cc8f9284d2b0abe537b671316abaae27a8c2fda0 100644 (file)
@@ -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");