]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/exmm/memory.c
wwww
[16.git] / src / lib / exmm / memory.c
old mode 100644 (file)
new mode 100755 (executable)
index c73c765..21b213f
  //static globals --------------------------------\r
 \r
 static int  ActiveEMList[MAXEMHANDLES];\r
-static unsigned int  EMMSeg;\r
+static unsigned long EMMSeg;\r
 \r
  //forward declarations ---------------------------------\r
 
 static int  EMPresent(void);\r
 static int  EMReady(void);\r
-static unsigned int  GetEMMSeg(void);\r
+static unsigned long GetEMMSeg(void);\r
 static int  GetEMHandle(int NumPages);\r
 static int  EMMap(int Handle, int LogPg, int PhyPg);\r
 static int  FreeEMHandle(int Handle);\r
@@ -42,6 +42,21 @@ static int  GetNumPages(int Handle);
 static int  EMStateSave(int Handle);\r
 static void EMStateRestore(int Handle);\r
 
+/********************************************************************/
+//beta
+unsigned long\r
+EMInfo(void)\r
+{
+       int EMSinfo;\r
+       _asm
+       {
+               mov             ah,0x58\r
+               int             0x67
+               mov             EMSinfo,ax\r
+       }
+       return((unsigned long)EMSinfo);\r
+}
+
 /********************************************************************/
 
 int\r
@@ -57,7 +72,8 @@ EMVer(void)
        return(EMSver);\r
 }\r
 \r
-/********************************************************************/\r
+/********************************************************************/
+\r
 int\r
 OpenEMM(void)\r
 {\r
@@ -112,7 +128,7 @@ EMMCoreLeft(void)
                End:
        }
        if(!interr)
-       RtnVal = ((unsigned long)Pages);  /* Pages * 16K rtns bytes*/
+       RtnVal = ((unsigned long)Pages);  /* Pages * 16K rtns bytes*/ //<< 14);
 \r
        return(RtnVal);\r
 }               /* End of EMMCoreLeft() */\r
@@ -129,7 +145,7 @@ EMMalloc(int *Handle, int Pages)
         *Handle = NOTREADY;\r
         return(NULL);\r
     }\r
-    if ((Pages < 1) || (Pages > EMMCoreLeft())) {\r
+    if ((Pages < 1) || (Pages > EMMCoreLeft(/*1020*/))) {\r
         *Handle = VALUE_OUTF_RANGE;\r
         return (NULL);\r
     }\r
@@ -152,7 +168,7 @@ EMMRealloc(int Handle, int Pages)
 {\r
        int     RtnCode = FALSE;\r
 \r
-       if (!EMMSeg || (Pages < 0) || (Pages > 1020)) {\r
+       if (!EMMSeg || (Pages < 0) || (Pages > EMMCoreLeft(/*1020*/))) {\r
                return (FALSE);\r
        }\r
        _asm {\r
@@ -292,7 +308,7 @@ EMReady(void)
 \r
 /********************************************************************/\r
 \r
-static unsigned int\r
+static unsigned long\r
 GetEMMSeg(void)\r
 {\r
        unsigned int     EMSegment;\r
@@ -312,7 +328,31 @@ GetEMMSeg(void)
 \r
 //NotReady:\r
 //    return(NOTREADY);\r
-}               /* End of GetEMMSeg() */\r
+}               /* End of GetEMMSeg() */
+
+/********************************************************************/\r
+\r
+unsigned long\r
+GetEMMSeg0(void)\r
+{\r
+       unsigned int     EMSegment;\r
+\r
+       _asm {\r
+               mov     ah,0x41             /* get EMM page frame segment */\r
+               int     0x67\r
+               or      ah,ah\r
+               js      NotReady            /* returns 80, 81, or 84 hex on error */\r
+               mov     EMSegment,bx
+               jmp End
+               NotReady:
+               mov     EMSegment,NOTREADY
+               End:\r
+       }\r
+       return(EMSegment);              /*lint !e530 */\r
+\r
+//NotReady:\r
+//    return(NOTREADY);\r
+}               /* End of GetEMMSeg0() */\r
 \r
 /********************************************************************/\r
 \r