]> 4ch.mooo.com Git - 16.git/commitdiff
EMS in the works ^^
authorsparky4 <sparky4@cock.li>
Fri, 15 May 2015 23:07:48 +0000 (18:07 -0500)
committersparky4 <sparky4@cock.li>
Fri, 15 May 2015 23:07:48 +0000 (18:07 -0500)
modified:   src/lib/exmm/EMM.EXE
modified:   src/lib/exmm/emm.c
modified:   src/lib/exmm/memory.c
modified:   src/lib/exmm/memory.h

src/lib/exmm/EMM.EXE
src/lib/exmm/emm.c
src/lib/exmm/memory.c
src/lib/exmm/memory.h

index 79b6f46bafa4226cb180ef68954a2e459bbc56a0..139f1b03182860acbb3f75bdbda7b8aa0c6ec3d9 100644 (file)
Binary files a/src/lib/exmm/EMM.EXE and b/src/lib/exmm/EMM.EXE differ
index aae59feca8f977015dbbca4a974375046684a9d5..e3dcaa2a1d6554f673a4132916cd800395b7a667 100644 (file)
@@ -32,50 +32,72 @@ void TransformData(char *pEmmData, unsigned int len)
       }\r
 }\r
 \r
-void main(void)\r
+void main(int argc, char *argv[])\r
 {\r
-   char    *pEmmData;\r
-   int     hEData;\r
-\r
-   if ( OpenEMM() != SUCCESS )\r
-      {     // make sure we got EMM\r
-      printf("EMM unavailable.\n");\r
-      exit(1);\r
-      }\r
-   else\r
-      printf("Emm %x available\n", EMVer());
-      printf("EMS pages available are %lu\n", EMMCoreLeft());\r
-\r
-   pEmmData = (char *)EMMalloc(&hEData, 6);  // get 6 * 16K bytes - 96K\r
-   if ( pEmmData == NULL )\r
-      {\r
-      printf("Not enough EMM or out of handles.\n");\r
-      exit(2);\r
-      }\r
-   else\r
-      printf("emm alloced OK\n");\r
-\r
-\r
-   printf("Map 1st 4 pages\n");\r
-   MapEMM(hEData, 0, 4);   // load 1st 4 pages into page frame: 0-3\r
-\r
-   memset(pEmmData, 0x0e, 64000u);\r
-   UnmapEMM(hEData, 0, 4);          // not absolutely necessary\r
-   \r
-   printf("Map next 2 pages\n");\r
-   MapEMM(hEData, 4, 2);            // map last 2 pages: 4-5\r
-   memset(pEmmData, 0x0e, 32768u);\r
+       byte *pEmmData;
+       int hEData;
+\r
+       if(OpenEMM() != SUCCESS)\r
+       {     // make sure we got EMM\r
+               printf("EMM unavailable.\n");\r
+               exit(1);\r
+       }\r
+       else
+               {\r
+                       printf("Emm %x available\n", EMVer());
+                       printf("EMS pages available are %lu\n", EMMCoreLeft());
+                       //printf("EMM Hardware Information %lu\n", EMInfo());
+               }\r
+
+       printf("b4 EMS          *pEmmData=%x\n", *pEmmData);
+       //printf("b4 EMS        *pEmmData=%s\n", *pEmmData);
+
+       pEmmData = (byte *)EMMalloc(&hEData, EMMCoreLeft(/*6*/));  // get 6 * 16K bytes - 96K
+       if(pEmmData == NULL/* ||  pEmmData0 == NULL*/)\r
+       {\r
+               printf("Not enough EMM or out of handles.\n");\r
+               exit(2);\r
+       }\r
+       else\r
+               printf("EMM allocate OK\n");\r
+
+       printf("EMS pages available are %lu\n", EMMCoreLeft());
+
+       printf("Map 1st 4 pages\n");\r
+       MapEMM(hEData, 0, EMMCoreLeft(/*4*/)-2);   // load 1st 4 pages into page frame: 0-3\r
+       //memset(pEmmData, 0x0e, 64000u);
+       memset(pEmmData, atoi(argv[1]), 64000u);
+//---- UnmapEMM(hEData, 0, 4);          // not absolutely necessary
+       printf("*pEmmData=%c\n", *pEmmData);
+\r
+       printf("Map next 2 pages\n");\r
+       MapEMM(hEData, EMMCoreLeft(/*4*/)-2, EMMCoreLeft(/*2*/));            // map last 2 pages: 4-5\r
+       memset(pEmmData, 0x0e, 32768u);
+//     memset(pEmmData, atoi(argv[0]), 32768u);
+       printf("*pEmmData=%c\n", *pEmmData);
+//     printf("*pEmmData++=%c\n", *(pEmmData++));
+
+       /*MapEMM(hEData0, 0, 1);
+       memset(pEmmData0, (short)4, sizeof(short));
+       printf("*pEmmData0=%d\n", *pEmmData0);*/
 \r
-   MapEMM(hEData, 0, 4);\r
+   /*MapEMM(hEData, 0, 4);\r
    // do some stuff with the first 64K of file data.\r
    printf("Transform data\n");\r
-   TransformData(pEmmData, 64000UL);\r
+   TransformData(pEmmData, 64000UL);
+       printf("*pEmmData=%lu\n", *pEmmData);\r
    MapEMM(hEData, 4, 2);  // only unmaps 1st two pages of prior 64k mapping\r
    // do stuff with remaining 32K of data\r
-   TransformData(pEmmData, 32768UL);\r
-   UnmapEMM(hEData, 0, 4);  // should unmap before freeing\r
-\r
-   printf("Close emm\n");\r
-   EMMFree(hEData);     // finished with the file data\r
-   CloseEMM();\r
+   TransformData(pEmmData, 32768UL);
+       printf("*pEmmData=%lu\n", *pEmmData);*/
+\r
+       UnmapEMM(hEData, 0, EMMCoreLeft(/*4*/));  // should unmap before freeing
+       //UnmapEMM(hEData0, 0, 1);  // should unmap before freeing\r
+       //printf("after EMS     *pEmmData=%c\n", *pEmmData);
+\r
+       printf("Close emm\n");\r
+       EMMFree(hEData);     // finished with the file data\r
+       CloseEMM();
+       printf("after EMS       *pEmmData=%x\n", *pEmmData);
+       printf("EMS pages available are %lu\n", EMMCoreLeft());
 }\r
index c73c7657f4975ef8fc610539059f70f23294e075..1f1dadbdff248f2d2ae7e155cd9ad72bc4463044 100644 (file)
@@ -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
@@ -197,7 +213,7 @@ MapEMM(int Handle, int Start, int Pages)
     if (!EMMSeg) return(NOTREADY);\r
     for (i = 0; (i < MAXEMHANDLES) && (ActiveEMList[i] != Handle); i++) ;\r
     if (i == MAXEMHANDLES) return (NO_DATA);\r
-    if ((GetNumPages(Handle) < Pages) || (Pages < 1) || (Pages > 4)) {\r
+    if ((GetNumPages(Handle) < Pages) || (Pages < 1) || (Pages > EMMCoreLeft(/*4*/))) {\r
         return (VALUE_OUTF_RANGE);\r
     }\r
     for (i = Start; i < Start + Pages; i++) {\r
@@ -217,7 +233,7 @@ UnmapEMM(int Handle, int Start, int Pages)
     for (i = 0; (i < MAXEMHANDLES) && (ActiveEMList[i] != Handle); i++) ;\r
     if (i == MAXEMHANDLES) return;\r
     j = Start + Pages;\r
-    if ((Pages < 1) || (j > 4)) return;\r
+    if ((Pages < 1) || (j > EMMCoreLeft(/*4*/))) return;\r
 \r
     for (i = Start; i < j; i++) {\r
         EMMap(Handle, NONE, i);\r
index f6b49b1ad9bde2d5d8f988812b78fc2da8bbcd72..6d0ff1dcef0addfaacdc082518857cb43107dd43 100644 (file)
 #define _MEMORY_DEF 1\r
 \r
 #include "emmret.h"\r
-#include "emmsize.h"\r
+#include "emmsize.h"
+#include "../types.h"\r
 \r
 #define     CMM                  0\r
 #define     EMM                  1\r
 
 extern int EMVer(void);
+extern unsigned long EMInfo(void);
 extern int      OpenEMM(void);\r
 extern void     CloseEMM(void);\r
 extern int      EMMInstalled(void);\r