#ifndef __SPELMEM__
#define __SPELMEM__


#define YES 1
#define NO 0

#define XMS 'X'
#define EMS 'E'

#define OK 0
#define NOMEM 1

typedef struct                  /* Popis virtualni pameti   */
{
  char far *base;               /* Zacatek okna virtualni pameti   */
  char changed;
  char memtype;                 /* Typ virt. pameti (REAL, EMS, XMS, DISK...)   */
  char actpage;                 /* Aktualni stranka   */
  union
  {
    struct
    {
      int handler;              /* Handler EMS   */
      int len;                  /* Velikost, tentokrat v 16 KB blocich   */
    } ems;

    struct
    {
      int handler;              /* Handler XMS   */
    } xms;
  } d;
} VIRTMEM;

unsigned long vm_open(int memtype);

int vm_xmswrite(int handler, unsigned long from, long amount, char *buff);
int vm_xmsread(int handler, unsigned long from, long amount, char *buff);


long vm_getfree(char memtype);


int vm_alloc(long amount, int memtype, VIRTMEM far *vmem);

void vm_free(VIRTMEM far *vmem);


#endif

