\r
minor mods by Alex Russell to simplify\r
\r
- Must use memory model with FAR code
-
+ Must use memory model with FAR code\r
+\r
Open Watcom patch by sparky4~\r
\r
*/\r
#include <stdio.h>\r
#include <stdlib.h>\r
#include <mem.h>\r
-#include <conio.h>
+#include <conio.h>\r
+\r
+#include "src/lib/exmm/memory.h"\r
+#include "src/lib/types.h"\r
\r
-#include "src/lib/exmm/memory.h"
-#include "src/lib/types.h"
-
#define PEMMDATAPAGENUM 4\r
\r
void TransformData(char *pEmmData, unsigned int len)\r
\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);
+ byte *pEmmData;\r
+ int hEData;\r
+ unsigned long advi;\r
+ unsigned long i=0;\r
+ char huge *p =(char huge *)(GetEMMSeg0()*0x10000);\r
\r
if(OpenEMM() != SUCCESS)\r
{ // make sure we got EMM\r
printf("EMM unavailable.\n");\r
exit(1);\r
}\r
- else
+ else\r
{\r
- printf("Emm %x available\n", EMVer());
- printf("EMS pages available are %lu\n", EMMCoreLeft());
- //printf("EMM Hardware Information %lu\n", EMInfo());
+ printf("Emm %x available\n", EMVer());\r
+ printf("EMS pages available are %lu\n", EMMCoreLeft());\r
+ //printf("EMM Hardware Information %lu\n", EMInfo());\r
}\r
-
- 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()); // get 6 * 16K bytes - 96K
+\r
+ printf("b4 EMS pEmmData=%p\n", pEmmData);\r
+ //printf("b4 EMS *pEmmData=%s\n", *pEmmData);\r
+ advi=EMMCoreLeft()*EMMPAGESIZE;\r
+ printf("advi=%lu\n", advi);\r
+\r
+ pEmmData = (byte *)EMMalloc(&hEData, EMMCoreLeft()); // get 6 * 16K bytes - 96K\r
if(pEmmData == NULL/* || pEmmData0 == NULL*/)\r
{\r
printf("Not enough EMM or out of handles.\n");\r
}\r
else\r
printf("EMM allocate OK\n");\r
-
- printf("EMS pages available are %lu\n", EMMCoreLeft());
-
-
-
+\r
+ printf("EMS pages available are %lu\n", EMMCoreLeft());\r
+\r
+\r
+\r
printf("Map 1st 4 pages\n");\r
MapEMM(hEData, 0, PEMMDATAPAGENUM); // load 1st 4 pages into page frame: 0-3\r
- //memset(pEmmData, 0x0e, 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("%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));
+ //memset(pEmmData, 0x0e, 64000u);\r
+//0000 printf("(advi*EMMPAGESIZE)=%lu\n", advi);\r
+ memset(pEmmData, atoi(argv[1]), 0xffff);//sizeof(atoi(argv[1])));//((EMMCoreLeft())*EMMPAGESIZE));\r
+//qqqq memset(pEmmData+0x10000, atoi(argv[1]), 0xffff);//sizeof(atoi(argv[1])));//((EMMCoreLeft())*EMMPAGESIZE));\r
+//---- UnmapEMM(hEData, 0, 4); // not absolutely necessary\r
+ printf("%p= %c %c %c %c %c %c %c %c\n", pEmmData,\r
+*pEmmData, *(pEmmData+1), *(pEmmData+2), *(pEmmData+3), *(pEmmData+4), *(pEmmData+5), *(pEmmData+6), *(pEmmData+7));\r
\r
/*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=%p\n", pEmmData);*/
+ memset(pEmmData, 0x04, 32768u);\r
+// memset(pEmmData, atoi(argv[0]), 32768u);\r
+ printf("*pEmmData=%c\n", *pEmmData);\r
+ printf(" pEmmData=%p\n", pEmmData);*/\r
\r
/*MapEMM(hEData, 0, 4);\r
// do some stuff with the first 64K of file data.\r
printf("Transform data\n");\r
- TransformData(pEmmData, 64000UL);
+ TransformData(pEmmData, 64000UL);\r
printf("*pEmmData=%lu\n", *pEmmData);\r
MapEMM(hEData, 4, 2); // only unmaps 1st two pages of prior 64k mapping\r
// do stuff with remaining 32K of data\r
- TransformData(pEmmData, 32768UL);
- printf("*pEmmData=%lu\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]))
+ TransformData(pEmmData, 32768UL);\r
+ printf("*pEmmData=%lu\n", *pEmmData);*/\r
+ if(atoi(argv[2]))\r
{\r
- UnmapEMM(hEData, 0, PEMMDATAPAGENUM); // should unmap before freeing
+ while(p<(char huge *)((GetEMMSeg0()*0x10000)+0xffff) && !kbhit())\r
+ {\r
+ if((i%16)==0) printf("%p= %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c\n", p,\r
+*p, *(p+1), *(p+2), *(p+3), *(p+4), *(p+5), *(p+6), *(p+7),\r
+*(p+8), *(p+9), *(p+10), *(p+11), *(p+12), *(p+13), *(p+14), *(p+15));\r
+ // (*p)++;\r
+ i++;\r
+ p++;\r
+ }\r
+ }\r
+ /*if(atoi(argv[3]))\r
+ p =(char huge *)(GetEMMSeg0()*0x20000);\r
+ while(p<(char huge *)((GetEMMSeg0()*0x20000)+0xffff) && !kbhit())\r
+ {\r
+ if((i%16)==0) printf("%p= %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c\n", p,\r
+*p, *(p+1), *(p+2), *(p+3), *(p+4), *(p+5), *(p+6), *(p+7),\r
+*(p+8), *(p+9), *(p+10), *(p+11), *(p+12), *(p+13), *(p+14), *(p+15));\r
+ // (*p)++;\r
+ i++;\r
+ p++;\r
+ }\r
+ //free(p);\r
+ }*/\r
+ if(!atoi(argv[3]))\r
+ {\r
+ UnmapEMM(hEData, 0, PEMMDATAPAGENUM); // 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=%p\n", pEmmData);
- printf("EMS pages available are %lu\n", EMMCoreLeft());
- printf("GetEMMSeg0=%p\n", GetEMMSeg0()*0x10000);
- //printf("EMMPAGESIZE=%d\n", EMMPAGESIZE);
- return 0;
+ CloseEMM();\r
+ }\r
+ printf("after EMS pEmmData=%p\n", pEmmData);\r
+ printf("EMS pages available are %lu\n", EMMCoreLeft());\r
+ printf("GetEMMSeg0=%p\n", GetEMMSeg0()*0x10000);\r
+ //printf("EMMPAGESIZE=%d\n", EMMPAGESIZE);\r
+ return 0;\r
}\r