2 * COPYRIGHT: GPLv2+ - See COPYING in the top level directory
3 * PROJECT: ReactOS Virtual DOS Machine
5 * PURPOSE: Expanded Memory Support
6 * PROGRAMMERS: Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
12 /* DEFINITIONS ****************************************************************/
14 #define EMS_VERSION_NUM 0x04
15 #define EMS_INTERRUPT_NUM 0x67
16 #define EMS_SEGMENT 0xD000
17 #define EMS_MAX_HANDLES 16
18 #define EMS_TOTAL_PAGES 256
19 #define EMS_PAGE_BITS 14
20 #define EMS_PAGE_SIZE (1 << EMS_PAGE_BITS)
21 #define EMS_ADDRESS 0xA00000
22 #define EMS_PHYSICAL_PAGES 4
24 #define EMS_STATUS_OK 0x00
25 #define EMS_STATUS_INTERNAL_ERROR 0x80
26 #define EMS_STATUS_INVALID_HANDLE 0x83
27 #define EMS_STATUS_NO_MORE_HANDLES 0x85
28 #define EMS_STATUS_INSUFFICIENT_PAGES 0x88
29 #define EMS_STATUS_ZERO_PAGES 0x89
30 #define EMS_STATUS_INV_LOGICAL_PAGE 0x8A
31 #define EMS_STATUS_INV_PHYSICAL_PAGE 0x8B
32 #define EMS_STATUS_UNKNOWN_FUNCTION 0x8F
34 #define ARRAY_INDEX(ptr, array) ((ULONG)(((ULONG_PTR)(ptr) - (ULONG_PTR)(array)) / sizeof(*array)))
36 typedef struct _EMS_HANDLE
41 } EMS_HANDLE
, *PEMS_HANDLE
;
43 typedef struct _EMS_PAGE
47 } EMS_PAGE
, *PEMS_PAGE
;
51 typedef struct _EMS_COPY_DATA
62 } EMS_COPY_DATA
, *PEMS_COPY_DATA
;
66 /* FUNCTIONS ******************************************************************/
68 VOID
EmsInitialize(VOID
);
69 VOID
EmsCleanup(VOID
);