47 lines
1.6 KiB
C
47 lines
1.6 KiB
C
/*== Typedefs ========================================================*/
|
||
|
||
typedef unsigned char BYTE; /*nos construimos un byte*/
|
||
typedef unsigned int WORD;
|
||
typedef BYTE BOOL; /*como BOOLEAN en Pascal*/
|
||
|
||
/*== Macros ==========================================================*/
|
||
|
||
/*-- MK_FP crea de una direcci¢n de segmento y Offset un -------------*/
|
||
/*-- puntero FAR a un objeto -------*/
|
||
|
||
#ifdef MK_FP /*¨ya se defini¢ MK_FP?*/
|
||
#undef MK_FP
|
||
#endif
|
||
#define MK_FP(seg, ofs) ((void far *) ((unsigned long) (seg)<<16|(ofs)))
|
||
|
||
/*-- PAGE_ADR devuelve un puntero a la p gina f¡sica X dentro del ----*/
|
||
/*-- Page-Frame de la memoria EMS ----*/
|
||
|
||
#define PAGE_ADR(x) ((void *) MK_FP(ems_frame_seg() + ((x) << 10), 0))
|
||
|
||
/*== Constantes ======================================================*/
|
||
|
||
#define TRUE 1 /*Constantes para el trabajo con BOOL*/
|
||
#define FALSE 0
|
||
|
||
#define EMS_INT 0x67 /*n£mero de interrupci¢n para acceder a la EMM*/
|
||
#define EMS_ERR -1 /*se devuelve en caso de error*/
|
||
|
||
/*== variables globales===============================================*/
|
||
|
||
extern BYTE emm_ec; /*aqu¡ se guardan los c¢digos de error EMM*/
|
||
|
||
|
||
BOOL ems_inst(void);
|
||
int ems_num_page(void);
|
||
int ems_free_page(void);
|
||
WORD ems_frame_seg(void);
|
||
int ems_alloc(int pages);
|
||
BOOL ems_map(int handle, int logp, BYTE physp);
|
||
BOOL ems_free(int handle);
|
||
BYTE ems_version(void);
|
||
BOOL ems_save_map(int handle);
|
||
BOOL ems_restore_map(int handle);
|
||
void print_err(void);
|
||
|