]> 4ch.mooo.com Git - 16.git/blob - src/lib/exmm/emm.c
70d0679c147b7bb9d6c2f0ad6012b3753d17c4f3
[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 #include <stdio.h>\r
18 #include <stdlib.h>\r
19 #include <mem.h>\r
20 #include <conio.h>
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         unsigned long i=0;
41         char huge *p =(char huge *)(GetEMMSeg0()*0x10000);
42 \r
43         if(OpenEMM() != SUCCESS)\r
44         {               // make sure we got EMM\r
45                 printf("EMM unavailable.\n");\r
46                 exit(1);\r
47         }\r
48         else
49         {\r
50                 printf("Emm %x available\n", EMVer());
51                 printf("EMS pages available are %lu\n", EMMCoreLeft());
52                 //printf("EMM Hardware Information %lu\n", EMInfo());
53         }\r
54
55         printf("b4 EMS          pEmmData=%p\n", pEmmData);
56         //printf("b4 EMS        *pEmmData=%s\n", *pEmmData);
57         advi=EMMCoreLeft()*EMMPAGESIZE;
58         printf("advi=%lu\n", advi);
59
60         pEmmData = (byte *)EMMalloc(&hEData, EMMCoreLeft());  // get 6 * 16K bytes - 96K
61         if(pEmmData == NULL/* ||  pEmmData0 == NULL*/)\r
62         {\r
63                 printf("Not enough EMM or out of handles.\n");\r
64                 exit(2);\r
65         }\r
66         else\r
67                 printf("EMM allocate OK\n");\r
68
69         printf("EMS pages available are %lu\n", EMMCoreLeft());
70
71
72
73         printf("Map 1st 4 pages\n");\r
74         MapEMM(hEData, 0, 4);   // load 1st 4 pages into page frame: 0-3\r
75         //memset(pEmmData, 0x0e, 64000u);
76 //0000  printf("(advi*EMMPAGESIZE)=%lu\n", advi);
77         memset(pEmmData, atoi(argv[1]), 0xffff);//sizeof(atoi(argv[1])));//((EMMCoreLeft())*EMMPAGESIZE));
78 //qqqq  memset(pEmmData+0x10000, atoi(argv[1]), 0xffff);//sizeof(atoi(argv[1])));//((EMMCoreLeft())*EMMPAGESIZE));
79 //----  UnmapEMM(hEData, 0, 4);          // not absolutely necessary
80 //      printf("*pEmmData=%c\n", *pEmmData);
81         printf("%p= %c %c %c %c %c %c %c %c\n", pEmmData,
82 *pEmmData, *(pEmmData+1), *(pEmmData+2), *(pEmmData+3), *(pEmmData+4), *(pEmmData+5), *(pEmmData+6), *(pEmmData+7));
83         /*memset(pEmmData, atoi(argv[1]), 0x40001U);//sizeof(atoi(argv[1])));//((EMMCoreLeft())*EMMPAGESIZE));
84         printf("*pEmmData=%c\n", *pEmmData);
85         memset(pEmmData, atoi(argv[1]), 0x40001L);//sizeof(atoi(argv[1])));//((EMMCoreLeft())*EMMPAGESIZE));
86         printf("*pEmmData=%c\n", *pEmmData);
87         memset(pEmmData, atoi(argv[1]), 0x40001UL);//sizeof(atoi(argv[1])));//((EMMCoreLeft())*EMMPAGESIZE));
88         printf("*pEmmData=%c\n", *pEmmData);
89         memset(pEmmData, atoi(argv[1]), sizeof(byte)*4);//sizeof(atoi(argv[1])));//((EMMCoreLeft())*EMMPAGESIZE));
90         printf("*pEmmData=%c\n", *pEmmData);*/
91 \r
92         /*printf("Map next 2 pages\n");\r
93         MapEMM(hEData, 4, 2);            // map last 2 pages: 4-5\r
94         memset(pEmmData, 0x04, 32768u);
95 //      memset(pEmmData, atoi(argv[0]), 32768u);
96         printf("*pEmmData=%c\n", *pEmmData);
97         printf(" pEmmData=%p\n", pEmmData);*/
98 \r
99    /*MapEMM(hEData, 0, 4);\r
100    // do some stuff with the first 64K of file data.\r
101    printf("Transform data\n");\r
102    TransformData(pEmmData, 64000UL);
103         printf("*pEmmData=%lu\n", *pEmmData);\r
104    MapEMM(hEData, 4, 2);  // only unmaps 1st two pages of prior 64k mapping\r
105    // do stuff with remaining 32K of data\r
106    TransformData(pEmmData, 32768UL);
107         printf("*pEmmData=%lu\n", *pEmmData);*/
108         if(atoi(argv[2]))
109         {
110                 while(p<(char huge *)((GetEMMSeg0()*0x10000)+0xffff) && !kbhit())
111                 {
112                         if((i%16)==0) printf("%p= %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c\n", p,
113 *p, *(p+1), *(p+2), *(p+3), *(p+4), *(p+5), *(p+6), *(p+7),
114 *(p+8), *(p+9), *(p+10), *(p+11), *(p+12), *(p+13), *(p+14), *(p+15));
115         //              (*p)++;
116                         i++;
117                         p++;
118                 }
119         }
120         /*if(atoi(argv[3]))
121                 p =(char huge *)(GetEMMSeg0()*0x20000);
122                 while(p<(char huge *)((GetEMMSeg0()*0x20000)+0xffff) && !kbhit())
123                 {
124                         if((i%16)==0) printf("%p= %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c\n", p,
125 *p, *(p+1), *(p+2), *(p+3), *(p+4), *(p+5), *(p+6), *(p+7),
126 *(p+8), *(p+9), *(p+10), *(p+11), *(p+12), *(p+13), *(p+14), *(p+15));
127         //              (*p)++;
128                         i++;
129                         p++;
130                 }
131                 //free(p);
132         }*/
133         if(!atoi(argv[3]))
134         {\r
135                 UnmapEMM(hEData, 0, 4);  // should unmap before freeing
136                 //printf("after EMS     *pEmmData=%c\n", *pEmmData);\r
137                 printf("Close emm\n");\r
138                 EMMFree(hEData);     // finished with the file data\r
139                 CloseEMM();
140         }
141         printf("after EMS       pEmmData=%p\n", pEmmData);
142         printf("EMS pages available are %lu\n", EMMCoreLeft());
143         printf("GetEMMSeg0=%p\n", GetEMMSeg0()*0x10000);
144         //printf("EMMPAGESIZE=%d\n", EMMPAGESIZE);
145         return 0;
146 }\r