1 // Cut this out as emm.c
\r
4 * Module: All Modules
\r
5 * Author(s): Chris Somers
\r
6 * Date: December 1, 1992
\r
9 minor mods by Alex Russell to simplify
\r
11 Must use memory model with FAR code
13 Open Watcom patch by sparky4~
\r
24 void TransformData(char *pEmmData, unsigned int len)
\r
35 int main(int argc, char *argv[])
\r
41 char huge *p =(char huge *)(GetEMMSeg0()*0x10000);
43 if(OpenEMM() != SUCCESS)
\r
44 { // make sure we got EMM
\r
45 printf("EMM unavailable.\n");
\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());
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);
60 pEmmData = (byte *)EMMalloc(&hEData, EMMCoreLeft()); // get 6 * 16K bytes - 96K
61 if(pEmmData == NULL/* || pEmmData0 == NULL*/)
\r
63 printf("Not enough EMM or out of handles.\n");
\r
67 printf("EMM allocate OK\n");
\r
69 printf("EMS pages available are %lu\n", EMMCoreLeft());
73 printf("Map 1st 4 pages\n");
\r
74 MapEMM(hEData, 0, 16); // 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 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);*/
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);*/
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);*/
110 while(p<(char huge *)((GetEMMSeg0()*0x10000)+0xffff) && !kbhit())
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));
121 p =(char huge *)(GetEMMSeg0()*0x20000);
122 while(p<(char huge *)((GetEMMSeg0()*0x20000)+0xffff) && !kbhit())
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));
135 UnmapEMM(hEData, 0, 16); // 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
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);