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
40 if(OpenEMM() != SUCCESS)
\r
41 { // make sure we got EMM
\r
42 printf("EMM unavailable.\n");
\r
47 printf("Emm %x available\n", EMVer());
48 printf("EMS pages available are %lu\n", EMMCoreLeft());
49 //printf("EMM Hardware Information %lu\n", EMInfo());
52 printf("b4 EMS *pEmmData=%x\n", *pEmmData);
53 //printf("b4 EMS *pEmmData=%s\n", *pEmmData);
55 pEmmData = (byte *)EMMalloc(&hEData, EMMCoreLeft(/*6*/)); // get 6 * 16K bytes - 96K
56 if(pEmmData == NULL/* || pEmmData0 == NULL*/)
\r
58 printf("Not enough EMM or out of handles.\n");
\r
62 printf("EMM allocate OK\n");
\r
64 printf("EMS pages available are %lu\n", EMMCoreLeft());
66 printf("Map 1st 4 pages\n");
\r
67 MapEMM(hEData, 0, 4); // load 1st 4 pages into page frame: 0-3
\r
68 //memset(pEmmData, 0x0e, 64000u);
69 memset(pEmmData, atoi(argv[1]), sizeof(atoi(argv[1])));//((EMMCoreLeft())*EMMPAGESIZE));
70 //---- UnmapEMM(hEData, 0, 4); // not absolutely necessary
71 printf("*pEmmData=%c\n", *pEmmData);
73 printf("Map next 2 pages\n");
\r
74 MapEMM(hEData, 4, 2); // map last 2 pages: 4-5
\r
75 memset(pEmmData, 0x04, 32768u);
76 // memset(pEmmData, atoi(argv[0]), 32768u);
77 printf("*pEmmData=%c\n", *pEmmData);
78 // printf("*pEmmData++=%c\n", *(pEmmData++));
80 /*MapEMM(hEData0, 0, 1);
81 memset(pEmmData0, (short)4, sizeof(short));
82 printf("*pEmmData0=%d\n", *pEmmData0);*/
84 /*MapEMM(hEData, 0, 4);
\r
85 // do some stuff with the first 64K of file data.
\r
86 printf("Transform data\n");
\r
87 TransformData(pEmmData, 64000UL);
88 printf("*pEmmData=%lu\n", *pEmmData);
\r
89 MapEMM(hEData, 4, 2); // only unmaps 1st two pages of prior 64k mapping
\r
90 // do stuff with remaining 32K of data
\r
91 TransformData(pEmmData, 32768UL);
92 printf("*pEmmData=%lu\n", *pEmmData);*/
94 UnmapEMM(hEData, 0, EMMCoreLeft(/*4*/)); // should unmap before freeing
95 //UnmapEMM(hEData0, 0, 1); // should unmap before freeing
\r
96 //printf("after EMS *pEmmData=%c\n", *pEmmData);
98 printf("Close emm\n");
\r
99 EMMFree(hEData); // finished with the file data
\r
101 printf("after EMS *pEmmData=%x\n", *pEmmData);
102 printf("EMS pages available are %lu\n", EMMCoreLeft());
103 //printf("EMMPAGESIZE=%d\n", EMMPAGESIZE);