From 97d898169d2e247f35d2467ea38ff8d2dc3e7720 Mon Sep 17 00:00:00 2001
From: sparky4 <sparky4@cock.li>
Date: Mon, 29 Jun 2015 19:22:54 -0500
Subject: [PATCH] started to work on mm libery~ 	modified:   exmmtest.exe 
 modified:   src/lib/16_mm.c 	modified:   src/lib/16_mm.h

---
 exmmtest.exe    | Bin 50035 -> 50058 bytes
 src/lib/16_mm.c |  60 ++++++++++++++++++++++++++++++++++++++++++------
 src/lib/16_mm.h |  10 ++++----
 3 files changed, 57 insertions(+), 13 deletions(-)

diff --git a/exmmtest.exe b/exmmtest.exe
index ee5838f32f913686d178711a9387835802243712..3306249c050dceaad65e86f9550e3b3c7c01417a 100644
GIT binary patch
delta 14683
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
G=KmjTq^f)X

delta 14406
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%0AkD
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

diff --git a/src/lib/16_mm.c b/src/lib/16_mm.c
index 9dbc0eef..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",""};
 
 /*
 ======================
@@ -570,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
 	}
 
 //
@@ -599,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");
 }
 
 //==========================================================================
@@ -1175,4 +1222,3 @@ US_CheckParm(char *parm,char **strings)
 	}
 	return(-1);
 }
-
diff --git a/src/lib/16_mm.h b/src/lib/16_mm.h
index fceb1550..701f002d 100644
--- a/src/lib/16_mm.h
+++ b/src/lib/16_mm.h
@@ -135,11 +135,11 @@ typedef struct mmblockstruct
 =============================================================================
 */
 
-static mminfotype	mminfo;
+/*static mminfotype	mminfo;
 static memptr		bufferseg;
 
 static void		(* beforesort) (void);
-static void		(* aftersort) (void);
+static void		(* aftersort) (void);*/
 
 /*
 =============================================================================
@@ -149,7 +149,7 @@ static void		(* aftersort) (void);
 =============================================================================
 */
 
-static void huge	*hugeheap;
+/*static void huge	*hugeheap;
 static void far	*farheap;
 static void		*nearheap;
 
@@ -162,9 +162,7 @@ static unsigned int EMSVer;
 
 static void		(* XMSaddr) (void);		// far pointer to XMS driver
 
-static unsigned	numUMBs,UMBbase[MAXUMBS];
-
-static	char *ParmStringsexmm[] = {"noems","noxms",""};
+static unsigned	numUMBs,UMBbase[MAXUMBS];*/
 
 //==========================================================================
 
-- 
2.39.5