\r
// ID_MM.H\r
\r
-#ifndef __16_EXMM__\r
-#define __16_EXMM__\r
+#ifndef __16_MM__\r
+#define __16_MM__\r
\r
#include <string.h>\r
#include <malloc.h>\r
\r
#ifdef __DEBUG__ // 1 == Debug/Dev ; 0 == Production/final\r
#define OUT_OF_MEM_MSG "MM_GetPtr: Out of memory!\nYou were short :%lu bytes\n"\r
-extern boolean dbg_debugpm;\r
#else\r
#define OUT_OF_MEM_MSG "\npee\n"\r
#endif\r
//--------\r
\r
#define EMS_INT 0x67\r
+#define EMM_INT 0x21\r
\r
#define EMS_STATUS 0x40\r
#define EMS_GETFRAME 0x41\r
\r
#define XMS_INT 0x2f\r
#define XMS_CALL(v) _AH = (v);\\r
- __asm call [WORD PTR XMSDriver]\r
+ __asm call [DWORD PTR XMSDriver]\r
/*__asm { mov ah,[v]\*///}\r
\r
#define XMS_VERSION 0x00\r
#define XMS_GDISABLEA20 0x04\r
#define XMS_LENABLEA20 0x05\r
#define XMS_LDISABLEA20 0x06\r
-#define XMS_QUERYA20 0x07\r
+#define XMS_QUERYA20 0x07\r
\r
#define XMS_QUERYFREE 0x08\r
#define XMS_ALLOC 0x09\r
extern void (* beforesort) (void);\r
extern void (* aftersort) (void);\r
extern void (* XMSaddr) (void); // far pointer to XMS driver\r
+extern dword XMSDriver;\r
+extern word XMSVer;\r
\r
//==========================================================================\r
\r
word blob; //for data larger than 64k\r
unsigned attributes;\r
memptr *useptr; // pointer to the segment start\r
- //huge struct mmblockstruct huge *next;\r
struct mmblockstruct far *next;\r
} mmblocktype;\r
\r
{\r
memptr bufferseg;\r
boolean mmstarted, bombonerror, mmerror;\r
- //huge void huge *farheap;\r
void far *farheap;\r
#ifdef __BORLANDC__\r
void *nearheap;\r
unsigned int EMSVer;\r
word numUMBs,UMBbase[MAXUMBS];\r
//dword numUMBs,UMBbase[MAXUMBS];\r
- //huge mmblocktype huge mmblocks[MAXBLOCKS],huge *mmhead,huge *mmfree,huge *mmrover,huge *mmnew;\r
mmblocktype far mmblocks[MAXBLOCKS],far *mmhead,far *mmfree,far *mmrover,far *mmnew;\r
} mminfo_t;*/\r
\r
//byte MML_SetupEMS(mminfo_t *mm);\r
//void MML_ShutdownEMS(mminfo_t *mm);\r
byte MM_MapEMS(global_game_variables_t *gvar);\r
-byte MM_MapXEMS(global_game_variables_t *gvar);\r
-//boolean MML_CheckForXMS(mminfo_t *mm);\r
+//byte MM_MapXEMS(global_game_variables_t *gvar);\r
+boolean MML_CheckForXMS(void);\r
//void MML_SetupXMS(mminfo_t *mm, mminfotype *mmi);\r
//void MML_ShutdownXMS(mminfo_t *mm);\r
void MML_UseSpace(word segstart, dword seglength, global_game_variables_t *gvar);\r
void MM_BombOnError(boolean bomb, global_game_variables_t *gvar);\r
//void MM_GetNewBlock(mminfo_t *mm);\r
//void MM_FreeBlock(mmblocktype *x, mminfo_t *mm);\r
+void xms_call(byte v, global_game_variables_t *gvar);\r
\r
//==========================================================================\r
\r