X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2F16_mm.c;h=52fdf8e9d385ddb3fec5c2b110713d1933dac320;hb=fd42eceddd27e263460498788be4f319560c24a4;hp=88f690d1582811a3a45cc1f656187c83ece74d6b;hpb=53b06bd2adb635673b4e8eceea57901d61b65b50;p=16.git diff --git a/src/lib/16_mm.c b/src/lib/16_mm.c index 88f690d1..52fdf8e9 100644 --- a/src/lib/16_mm.c +++ b/src/lib/16_mm.c @@ -43,6 +43,48 @@ EMS / XMS unmanaged routines */ #include "src/lib/16_mm.h" + +/* +============================================================================= + + GLOBAL VARIABLES + +============================================================================= +*/ + +mminfotype mminfo; +memptr bufferseg; +boolean mmerror; + +void (* beforesort) (void); +void (* aftersort) (void); + +/* +============================================================================= + + LOCAL VARIABLES + +============================================================================= +*/ + +boolean mmstarted; + +void far *farheap; +void *nearheap; + +mmblocktype far mmblocks[MAXBLOCKS] + ,far *mmhead,far *mmfree,far *mmrover,far *mmnew; + +boolean bombonerror; + +unsigned totalEMSpages,freeEMSpages,EMSpageframe,EMSpagesmapped,EMShandle; +unsigned int EMSVer; + +void (* XMSaddr) (void); // far pointer to XMS driver + +unsigned numUMBs,UMBbase[MAXUMBS]; + +static char *ParmStringsexmm[] = {"noems","noxms",""}; /* ====================== @@ -507,6 +549,7 @@ void MM_Startup (void) // get all available near conventional memory segments // //---- length=coreleft(); + _nheapgrow(); length=_memavl(); start = (void far *)(nearheap = malloc(length)); @@ -521,7 +564,8 @@ void MM_Startup (void) // get all available far conventional memory segments // //---- length=farcoreleft(); - length=_memmax(); + _fheapgrow(); + length=_memavl(); start = farheap = _fmalloc(length); length -= 16-(FP_OFF(start)&15); length -= SAVEFARHEAP; @@ -568,7 +612,7 @@ emsskip: if (MML_CheckForXMS()) { // printf("XMS!\n"); - MML_SetupXMS(); // allocate as many UMBs as possible +//++++ MML_SetupXMS(); // allocate as many UMBs as possible } // @@ -597,11 +641,16 @@ void MM_Shutdown (void) if (!mminfo.mmstarted) return; - _ffree (farheap); - free (nearheap); - hfree(hugeheap); - MML_ShutdownEMS (); - MML_ShutdownXMS (); + _ffree (farheap); + printf("far freed\n"); + free (nearheap); + printf("near freed\n"); + //hfree(hugeheap); + printf("huge freed\n"); + MML_ShutdownEMS (); + printf("EMS freed\n"); +//++++ MML_ShutdownXMS (); + printf("XMS freed\n"); } //========================================================================== @@ -1035,8 +1084,8 @@ dword MM_UnusedMemory (void) scan = scan->next; } - return free*16l; -// return free; +// return free*16l; + return free; } //========================================================================== @@ -1068,8 +1117,8 @@ dword MM_TotalFree (void) scan = scan->next; } - return free*16l; -// return free; +// return free*16l; + return free; } //========================================================================== @@ -1095,9 +1144,9 @@ void MM_Report(void) printf("mainmem=%lu\n", mminfo.mainmem); printf("UnusedMemory=%lu\n", MM_UnusedMemory()); printf("TotalFree=%lu\n", MM_TotalFree()); - printf("\n"); - printf("UnusedMemory=%lu kb\n", MM_UnusedMemory()/10248); - printf("TotalFree=%lu kb\n", MM_TotalFree()/10248); +// printf("\n"); +// printf("UnusedMemory=%lu kb\n", MM_UnusedMemory()/10248); +// printf("TotalFree=%lu kb\n", MM_TotalFree()/10248); } //========================================================================== @@ -1173,4 +1222,3 @@ US_CheckParm(char *parm,char **strings) } return(-1); } -