]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/exmm/emm.c
added memory images~
[16.git] / src / lib / exmm / emm.c
index e3dcaa2a1d6554f673a4132916cd800395b7a667..aed6c3b7477ddc8082c7a1d11c3f6653b88b8338 100644 (file)
 \r
  */\r
 \r
-\r
 #include <stdio.h>\r
 #include <stdlib.h>\r
 #include <mem.h>\r
+#include <conio.h>
 \r
-#include "memory.h"\r
+#include "memory.h"
+
+#define PEMMDATAPAGENUM        4\r
 \r
 void TransformData(char *pEmmData, unsigned int len)\r
 {\r
-   while ( len )\r
-      {\r
-      (*pEmmData)++;\r
-      pEmmData++;\r
+       while(len)\r
+       {\r
+               (*pEmmData)++;\r
+               pEmmData++;\r
 \r
-      len--;\r
-      }\r
+               len--;\r
+       }\r
 }\r
 \r
-void main(int argc, char *argv[])\r
+int main(int argc, char *argv[])\r
 {\r
        byte *pEmmData;
        int hEData;
+       unsigned long advi;
+       unsigned long i=0;
+       char huge *p =(char huge *)(GetEMMSeg0()*0x10000);
 \r
        if(OpenEMM() != SUCCESS)\r
-       {     // make sure we got EMM\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
+       {\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=%p\n", pEmmData);
        //printf("b4 EMS        *pEmmData=%s\n", *pEmmData);
+       advi=EMMCoreLeft()*EMMPAGESIZE;
+       printf("advi=%lu\n", advi);
 
-       pEmmData = (byte *)EMMalloc(&hEData, EMMCoreLeft(/*6*/));  // get 6 * 16K bytes - 96K
+       pEmmData = (byte *)EMMalloc(&hEData, EMMCoreLeft());  // get 6 * 16K bytes - 96K
        if(pEmmData == NULL/* ||  pEmmData0 == NULL*/)\r
        {\r
                printf("Not enough EMM or out of handles.\n");\r
@@ -63,23 +70,24 @@ void main(int argc, char *argv[])
 
        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
+       MapEMM(hEData, 0, PEMMDATAPAGENUM);   // load 1st 4 pages into page frame: 0-3\r
        //memset(pEmmData, 0x0e, 64000u);
-       memset(pEmmData, atoi(argv[1]), 64000u);
+//0000 printf("(advi*EMMPAGESIZE)=%lu\n", advi);
+       memset(pEmmData, atoi(argv[1]), 0xffff);//sizeof(atoi(argv[1])));//((EMMCoreLeft())*EMMPAGESIZE));
+//qqqq memset(pEmmData+0x10000, atoi(argv[1]), 0xffff);//sizeof(atoi(argv[1])));//((EMMCoreLeft())*EMMPAGESIZE));
 //---- UnmapEMM(hEData, 0, 4);          // not absolutely necessary
-       printf("*pEmmData=%c\n", *pEmmData);
+       printf("%p= %c %c %c %c %c %c %c %c\n", pEmmData,
+*pEmmData, *(pEmmData+1), *(pEmmData+2), *(pEmmData+3), *(pEmmData+4), *(pEmmData+5), *(pEmmData+6), *(pEmmData+7));
 \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);
+       /*printf("Map next 2 pages\n");\r
+       MapEMM(hEData, 4, 2);            // map last 2 pages: 4-5\r
+       memset(pEmmData, 0x04, 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);*/
+       printf(" pEmmData=%p\n", pEmmData);*/
 \r
    /*MapEMM(hEData, 0, 4);\r
    // do some stuff with the first 64K of file data.\r
@@ -90,14 +98,42 @@ void main(int argc, char *argv[])
    // do stuff with remaining 32K of data\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);
+       if(atoi(argv[2]))
+       {
+               while(p<(char huge *)((GetEMMSeg0()*0x10000)+0xffff) && !kbhit())
+               {
+                       if((i%16)==0) printf("%p= %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c\n", p,
+*p, *(p+1), *(p+2), *(p+3), *(p+4), *(p+5), *(p+6), *(p+7),
+*(p+8), *(p+9), *(p+10), *(p+11), *(p+12), *(p+13), *(p+14), *(p+15));
+       //              (*p)++;
+                       i++;
+                       p++;
+               }
+       }
+       /*if(atoi(argv[3]))
+               p =(char huge *)(GetEMMSeg0()*0x20000);
+               while(p<(char huge *)((GetEMMSeg0()*0x20000)+0xffff) && !kbhit())
+               {
+                       if((i%16)==0) printf("%p= %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c\n", p,
+*p, *(p+1), *(p+2), *(p+3), *(p+4), *(p+5), *(p+6), *(p+7),
+*(p+8), *(p+9), *(p+10), *(p+11), *(p+12), *(p+13), *(p+14), *(p+15));
+       //              (*p)++;
+                       i++;
+                       p++;
+               }
+               //free(p);
+       }*/
+       if(!atoi(argv[3]))
+       {\r
+               UnmapEMM(hEData, 0, PEMMDATAPAGENUM);  // should unmap before freeing
+               //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=%p\n", pEmmData);
        printf("EMS pages available are %lu\n", EMMCoreLeft());
+       printf("GetEMMSeg0=%p\n", GetEMMSeg0()*0x10000);
+       //printf("EMMPAGESIZE=%d\n", EMMPAGESIZE);
+       return 0;
 }\r