XMSLIB.OBJ XMS routines ------------- extern unsigned int far XMS_Setup(void); /* MUST BE CALLED PRIOR TO */ /* OTHER XMS_ ROUTINES! */ extern unsigned char far XMS_FreeMem( /* returns free and total extended */ unsigned int far *freemem, /* free extended memory in K */ unsigned int far *totmem); /* total extended memory in K */ extern unsigned char far XMS_Version( /* Returns version information */ unsigned int far *version, /* BCD protocol version (2.0) */ unsigned int far *internal, /* BCD internal version number */ unsigned int far *HMA); /* Does the HMA exist? */ extern unsigned char far XMS_RequestHMA( /* Try to allocate HMA */ unsigned int mysize); /* amount you'll be using in K. */ /* Applications should use 0xffff to */ /* allocate all 64k */ extern unsigned char far XMS_ReleaseHMA(void); /* give up the HMA */ extern unsigned char far XMS_GlobalEnableA20(void); /* when the A20 line */ extern unsigned char far XMS_GlobalDisableA20(void); /* is enabled, the HMA */ extern unsigned char far XMS_LocalEnableA20(void); /* can be accessed. */ extern unsigned char far XMS_LocalDisableA20(void); extern unsigned char far XMS_QueryA20( /* Find out if A20 is enabled */ unsigned int far *state); extern unsigned char far XMS_AllocEMB( /* Allocate extended momory */ unsigned int mysize, /* size in K needed */ XMShandle far *handle); /* handle for this EMB */ extern unsigned char far XMS_FreeEMB( /* Release an EMB */ XMShandle handle); /* handle to release */ extern unsigned char far XMS_MoveEMB( /* Move between real memory and */ struct EMMMoveStruct far *MoveRec);/* extended memory. */ extern unsigned char far XMS_LockEMB( /* make sure a memory block doesn't */ XMShandle handle, /* move. */ void far *address); /* LINEAR memory address for this block */ extern unsigned char far XMS_UnlockEMB( /* undo a lock */ XMShandle handle); extern unsigned char far XMS_GetEMBHandleInfo( /* info on a handle */ XMShandle handle, /* handle info wanted on */ unsigned char far *LockCount, /* number of locks enabled */ unsigned char far *EMBHandlesFree, /* total handles free in system */ unsigned int far *EMBlength); /* size of this handle in K */ extern unsigned char far XMS_ReallocEMB( /* Try to change the size of */ XMShandle handle, /* this block. */ unsigned int newsize); /* new size in K */ extern unsigned char far XMS_RequestUMB( /* request UPPER MEMORY BLOCK */ unsigned int SizeWanded, /* size in PARAGRAPHS needed */ unsigned int far *segaddr, /* segment address of block */ unsigned int far *SizeUgot); /* size of block you got */ extern unsigned char far XMS_ReleaseUMB( /* Release UMB */ unsigned int segaddr); .