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