ref: 2c0d5e026f50ae4f2a069b882a598e9a8a4d553b
dir: /mm.h/
#define SAVENEARHEAP 0x400 // space to leave in data segment #define SAVEFARHEAP 0 // space to leave in far heap #define BUFFERSIZE 0x1000 // miscelanious, allways available buffer #define MAXBLOCKS 700 //-------- #define EMS_INT 0x67 #define EMS_STATUS 0x40 #define EMS_GETFRAME 0x41 #define EMS_GETPAGES 0x42 #define EMS_ALLOCPAGES 0x43 #define EMS_MAPPAGE 0x44 #define EMS_FREEPAGES 0x45 #define EMS_VERSION 0x46 //-------- #define XMS_INT 0x2f #define XMS_CALL(v) _AH = (v);\ asm call [DWORD PTR XMSDriver] #define XMS_VERSION 0x00 #define XMS_ALLOCHMA 0x01 #define XMS_FREEHMA 0x02 #define XMS_GENABLEA20 0x03 #define XMS_GDISABLEA20 0x04 #define XMS_LENABLEA20 0x05 #define XMS_LDISABLEA20 0x06 #define XMS_QUERYA20 0x07 #define XMS_QUERYFREE 0x08 #define XMS_ALLOC 0x09 #define XMS_FREE 0x0A #define XMS_MOVE 0x0B #define XMS_LOCK 0x0C #define XMS_UNLOCK 0x0D #define XMS_GETINFO 0x0E #define XMS_RESIZE 0x0F #define XMS_ALLOCUMB 0x10 #define XMS_FREEUMB 0x11 //========================================================================== typedef struct { s32int nearheap,farheap,EMSmem,XMSmem,mainmem; } mminfotype; //========================================================================== extern mminfotype mminfo; extern uchar *bufferseg; extern int mmerror; extern void (* beforesort) (void); extern void (* aftersort) (void); //========================================================================== void MM_Startup (void); void MM_Shutdown (void); void MM_MapEMS (void); void MM_GetPtr (uchar **baseptr,u32int size); void MM_FreePtr (uchar **baseptr); void MM_SetPurge (uchar **baseptr, s16int purge); void MM_SetLock (uchar **baseptr, int locked); void MM_SortMem (void); void MM_ShowMemory (void); s32int MM_UnusedMemory (void); s32int MM_TotalFree (void); void MM_BombOnError (int bomb); void MML_UseSpace (u16int segstart, u16int seglength);