]> 4ch.mooo.com Git - 16.git/blob - src/lib/exmm/emm.c
XT acts funny.... wwww
[16.git] / src / lib / exmm / emm.c
1 // Cut this out as emm.c\r
2 \r
3 /*      File:       emm.c\r
4  *      Module:     All Modules\r
5  *      Author(s):  Chris Somers\r
6  *      Date:       December 1, 1992\r
7  *      Version:    V.1.1w\r
8 \r
9         minor mods by Alex Russell to simplify\r
10 \r
11         Must use memory model with FAR code
12
13                 Open Watcom patch by sparky4~\r
14 \r
15  */\r
16 \r
17 \r
18 #include <stdio.h>\r
19 #include <stdlib.h>\r
20 #include <mem.h>\r
21 \r
22 #include "memory.h"\r
23 \r
24 void TransformData(char *pEmmData, unsigned int len)\r
25 {\r
26    while ( len )\r
27       {\r
28       (*pEmmData)++;\r
29       pEmmData++;\r
30 \r
31       len--;\r
32       }\r
33 }\r
34 \r
35 int main(int argc, char *argv[])\r
36 {\r
37         byte *pEmmData;
38         int hEData;
39         unsigned long advi;
40 \r
41         if(OpenEMM() != SUCCESS)\r
42         {     // make sure we got EMM\r
43                 printf("EMM unavailable.\n");\r
44                 exit(1);\r
45         }\r
46         else
47                 {\r
48                         printf("Emm %x available\n", EMVer());
49                         printf("EMS pages available are %lu\n", EMMCoreLeft());
50                         //printf("EMM Hardware Information %lu\n", EMInfo());
51                 }\r
52
53         printf("b4 EMS          pEmmData=%p\n", pEmmData);
54         //printf("b4 EMS        *pEmmData=%s\n", *pEmmData);
55         advi=EMMCoreLeft()*EMMPAGESIZE;
56         printf("advi=%lu\n", advi);
57
58         pEmmData = (byte *)EMMalloc(&hEData, EMMCoreLeft());  // get 6 * 16K bytes - 96K
59         if(pEmmData == NULL/* ||  pEmmData0 == NULL*/)\r
60         {\r
61                 printf("Not enough EMM or out of handles.\n");\r
62                 exit(2);\r
63         }\r
64         else\r
65                 printf("EMM allocate OK\n");\r
66
67         printf("EMS pages available are %lu\n", EMMCoreLeft());
68
69         printf("Map 1st 4 pages\n");\r
70         //MapEMM(hEData, 0, 4);   // load 1st 4 pages into page frame: 0-3
71         MapEMM(hEData, 0, 4);   // load 1st 4 pages into page frame: 0-3\r
72         //memset(pEmmData, 0x0e, 64000u);
73         printf("(advi*EMMPAGESIZE)=%lu\n", advi);
74         memset(pEmmData, atoi(argv[1]), 65536u);//sizeof(atoi(argv[1])));//((EMMCoreLeft())*EMMPAGESIZE));
75 //----  UnmapEMM(hEData, 0, 4);          // not absolutely necessary
76         printf("*pEmmData=%c\n", *pEmmData);
77 \r
78         /*printf("Map next 2 pages\n");\r
79         MapEMM(hEData, 4, 2);            // map last 2 pages: 4-5\r
80         memset(pEmmData, 0x04, 32768u);
81 //      memset(pEmmData, atoi(argv[0]), 32768u);
82         printf("*pEmmData=%c\n", *pEmmData);
83         printf(" pEmmData=%p\n", pEmmData);*/
84 \r
85    /*MapEMM(hEData, 0, 4);\r
86    // do some stuff with the first 64K of file data.\r
87    printf("Transform data\n");\r
88    TransformData(pEmmData, 64000UL);
89         printf("*pEmmData=%lu\n", *pEmmData);\r
90    MapEMM(hEData, 4, 2);  // only unmaps 1st two pages of prior 64k mapping\r
91    // do stuff with remaining 32K of data\r
92    TransformData(pEmmData, 32768UL);
93         printf("*pEmmData=%lu\n", *pEmmData);*/
94         if(!atoi(argv[2]))
95         {\r
96         UnmapEMM(hEData, 0, 4);  // should unmap before freeing
97         //printf("after EMS     *pEmmData=%c\n", *pEmmData);\r
98         printf("Close emm\n");\r
99         EMMFree(hEData);     // finished with the file data\r
100         CloseEMM();
101         }
102         printf("after EMS       pEmmData=%p\n", pEmmData);
103         printf("EMS pages available are %lu\n", EMMCoreLeft());
104         //printf("EMMPAGESIZE=%d\n", EMMPAGESIZE);
105         return 0;
106 }\r