X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2F16_mm.h;h=36825c90838dbe31216926279350faea64a9eb72;hb=0902e0e217ef1eb91af959aa8ab47f355f6678e9;hp=d351abfa8f868a004be425755ce6f2f37a5910a5;hpb=4423bda56aab2192f037bec035a3412153b2b3a7;p=16.git diff --git a/src/lib/16_mm.h b/src/lib/16_mm.h index d351abfa..36825c90 100755 --- a/src/lib/16_mm.h +++ b/src/lib/16_mm.h @@ -18,14 +18,13 @@ // ID_MM.H -#ifndef __16_EXMM__ -#define __16_EXMM__ +#ifndef __16_MM__ +#define __16_MM__ #include -#include #include "src/lib/16_head.h" #include "src/lib/16_hc.h" -#include "src/lib/16_lib.h" +#include "src/lib/16_tail.h" //++++mh #include "src/lib/16_in.h" @@ -41,7 +40,7 @@ #define FREEBLOCK(x) {*x->useptr=NULL;x->next=gvar->mm.mmfree;gvar->mm.mmfree=x;} #define SAVENEARHEAP 0x200 // space to leave in data segment -#define SAVEFARHEAP 0//x400 // space to leave in far heap +#define SAVEFARHEAP 0x400 // space to leave in far heap #define BUFFERSIZE 0x1000 // miscelanious, allways available buffer @@ -53,6 +52,7 @@ //-------- #define EMS_INT 0x67 +#define EMM_INT 0x21 #define EMS_STATUS 0x40 #define EMS_GETFRAME 0x41 @@ -66,29 +66,31 @@ //-------- #define XMS_INT 0x2f -#define XMSD dword XMSDriver=gvar->pm.xmm.XMSDriver; +#define XMS_CALL(v) _AH = (v);\ + __asm call [DWORD PTR XMSDriver] +/*__asm { mov ah,[v]\*///} #define XMS_VERSION 0x00 -#define XMS_ALLOCHMA 0x01 +#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_QUERYA20 0x07 #define XMS_QUERYFREE 0x08 #define XMS_ALLOC 0x09 -#define XMS_FREE 0x0A -#define XMS_MOVE 0x0B -#define XMS_LOCK 0x0C +#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_ALLOCUMB 0x10 #define XMS_FREEUMB 0x11 //========================================================================== @@ -103,7 +105,9 @@ extern void (* beforesort) (void); extern void (* aftersort) (void); -extern void (* XMSaddr) (void); // far pointer to XMS driver +extern void (* XMSaddr) (void); // far pointer to XMS driver +extern dword XMSDriver; +extern word XMSVer; //========================================================================== @@ -132,7 +136,6 @@ extern void (* XMSaddr) (void); // far pointer to XMS driver word blob; //for data larger than 64k unsigned attributes; memptr *useptr; // pointer to the segment start - //huge struct mmblockstruct huge *next; struct mmblockstruct far *next; } mmblocktype; @@ -141,7 +144,6 @@ typedef struct { memptr bufferseg; boolean mmstarted, bombonerror, mmerror; - //huge void huge *farheap; void far *farheap; #ifdef __BORLANDC__ void *nearheap; @@ -154,7 +156,6 @@ typedef struct unsigned int EMSVer; word numUMBs,UMBbase[MAXUMBS]; //dword numUMBs,UMBbase[MAXUMBS]; - //huge mmblocktype huge mmblocks[MAXBLOCKS],huge *mmhead,huge *mmfree,huge *mmrover,huge *mmnew; mmblocktype far mmblocks[MAXBLOCKS],far *mmhead,far *mmfree,far *mmrover,far *mmnew; } mminfo_t;*/ @@ -181,8 +182,8 @@ boolean MML_CheckForEMS(void); //byte MML_SetupEMS(mminfo_t *mm); //void MML_ShutdownEMS(mminfo_t *mm); byte MM_MapEMS(global_game_variables_t *gvar); -byte MM_MapXEMS(global_game_variables_t *gvar); -//boolean MML_CheckForXMS(mminfo_t *mm); +//byte MM_MapXEMS(global_game_variables_t *gvar); +boolean MML_CheckForXMS(void); //void MML_SetupXMS(mminfo_t *mm, mminfotype *mmi); //void MML_ShutdownXMS(mminfo_t *mm); void MML_UseSpace(word segstart, dword seglength, global_game_variables_t *gvar); @@ -205,7 +206,7 @@ void MM_Report_(global_game_variables_t *gvar); void MM_BombOnError(boolean bomb, global_game_variables_t *gvar); //void MM_GetNewBlock(mminfo_t *mm); //void MM_FreeBlock(mmblocktype *x, mminfo_t *mm); -void XMS_CALL(byte v, global_game_variables_t *gvar); +void xms_call(byte v, global_game_variables_t *gvar); //==========================================================================