1 #if !defined(__EMS_H)
\r
4 #define EMSPAGESIZE (4096)
\r
5 #define EMS_ERROR (-1)
\r
7 unsigned long length;
\r
8 unsigned char source_type;
\r
9 unsigned int source_handle;
\r
10 unsigned int source_ofs;
\r
11 unsigned int source_seg;
\r
12 unsigned char dest_type;
\r
13 unsigned int dest_handle;
\r
14 unsigned int dest_ofs;
\r
15 unsigned int dest_seg;
\r
19 void conv2ems(int PAGE, int HANDLE, char *output) {
\r
20 char *x = (char *) &myEMSmove;
\r
21 myEMSmove.length = EMSPAGESIZE;
\r
22 myEMSmove.source_type = 0;
\r
23 myEMSmove.source_handle = 0;
\r
24 myEMSmove.source_ofs = FP_OFF(output);
\r
25 myEMSmove.source_seg = FP_SEG(output);
\r
26 myEMSmove.dest_type = 1;
\r
27 myEMSmove.dest_handle = HANDLE;
\r
28 myEMSmove.dest_ofs = (PAGE & 3) << 12;
\r
29 myEMSmove.dest_seg = PAGE >> 2;
\r
31 __asm mov ax, 5700h;
\r
37 void ems2conv(int PAGE, int HANDLE, char *output) {
\r
38 char *x = (char *) &myEMSmove;
\r
39 myEMSmove.length = EMSPAGESIZE;
\r
40 myEMSmove.source_type = 1;
\r
41 myEMSmove.source_handle = HANDLE;
\r
42 myEMSmove.source_ofs = (PAGE & 3) << 12;
\r
43 myEMSmove.source_seg = PAGE>>2;
\r
44 myEMSmove.dest_type = 0;
\r
45 myEMSmove.dest_handle = 0;
\r
46 myEMSmove.dest_ofs = FP_OFF(output);
\r
47 myEMSmove.dest_seg = FP_SEG(output);
\r
56 void freeEMS(int handle) {
\r
57 __asm mov dx, handle;
\r
63 char *x = "EMMXXXX0";
\r
96 int allocEMS(int pages) {
\r