/* this is for the XMS support */
#ifndef XMS_H
#define XMS_H

#define INT2F_XMS_MAGIC		0x0043	/* AH for all int 2f XMS calls */
#define XMS_VERSION    		0x0300	/* version 3.00 */
#define XMS_DRIVER_VERSION	0x0301	/* my driver version 3.01 */
#define UMB_DRIVER_VERSION	1

#define XMS_HELPER_XMS_INIT 0
#define XMS_HELPER_GET_ENTRY_POINT 1
#define XMS_HELPER_UMB_INIT 2

#define UMB_DRIVER_UMB_SYS 0
#define UMB_DRIVER_EMS_SYS 1

#define UMB_ERROR_VERSION_MISMATCH 1
#define UMB_ERROR_ALREADY_INITIALIZED 2
#define UMB_ERROR_UNKNOWN_OPTION 3
#define UMB_ERROR_UMBS_UNAVAIL 4

#define NUM_HANDLES     65
#define FIRST_HANDLE    1

#define PARAGRAPH       16	/* bytes in a paragraph */

/* the NEWXMS API duplicates some functions for > 64 MB range (32-bit) */
#define OLDXMS          1
#define NEWXMS          2

#ifndef __ASSEMBLER__
void xms_init(void);
void xms_done(void);
void xms_reset(void);
void xms_helper(void);
void xms_control(void);
int xms_intdrv(void);
uint16_t xms_install_check(void);
int xms_helper_init_ext(void);
void *xms_resolve_physaddr(unsigned addr);
#endif

#endif /* XMS_H */
