X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2F16_mm.h;h=984f932c00adc443128e5d90d383296b316a8f8a;hb=d1ce94441d5e0bffafeb959c505bf3d3975a0a35;hp=1fb701a24642822e5e0296102e92df7ed2344518;hpb=e3a3ac3518f3adb6828f198418edea00cb69115a;p=16.git diff --git a/src/lib/16_mm.h b/src/lib/16_mm.h index 1fb701a2..984f932c 100644 --- a/src/lib/16_mm.h +++ b/src/lib/16_mm.h @@ -23,6 +23,7 @@ #include #include +//#include #include "src/lib/16_head.h" //++++mh #include "src/lib/16_in.h" @@ -33,7 +34,7 @@ #endif -#define SAVENEARHEAP 0x400 // space to leave in data segment +#define SAVENEARHEAP 0x200 // space to leave in data segment #define SAVEFARHEAP 0 // space to leave in far heap #define BUFFERSIZE 0x1000 // miscelanious, allways available buffer @@ -85,15 +86,11 @@ typedef void __based(__self) * memptr; //__based(seg) * memptr; typedef struct { - dword nearheap,farheap/*,hugeheap*/,EMSmem,XMSmem,mainmem; + dword nearheap,farheap,EMSmem,XMSmem,mainmem; } mminfotype; //========================================================================== -/*extern mminfotype mminfo; -extern memptr bufferseg; -extern boolean mmerror;*/ - extern void (* beforesort) (void); extern void (* aftersort) (void); extern void (* XMSaddr) (void); // far pointer to XMS driver @@ -113,14 +110,18 @@ extern void (* XMSaddr) (void); // far pointer to XMS driver #define PURGEMASK 0xfffc #define BASEATTRIBUTES 0 // unlocked, non purgable -#define MAXUMBS 10 +#define MAXUMBS 12 typedef struct mmblockstruct { - unsigned start,length; + word start,length; + //dword start,length; + //word start; + //dword length; + //byte segm; //how many 64kb segment blocks it takes up if there is many data! unsigned attributes; memptr *useptr; // pointer to the segment start - struct mmblockstruct far *next; + struct mmblockstruct huge *next; } mmblocktype; @@ -128,20 +129,15 @@ typedef struct { memptr bufferseg; boolean mmstarted, bombonerror, mmerror; - //void huge *hugeheap; - void huge/*far*/ *farheap; + void huge *farheap; void *nearheap; unsigned totalEMSpages,freeEMSpages,EMSpageframe,EMSpagesmapped,EMShandle; unsigned int EMSVer; - unsigned numUMBs,UMBbase[MAXUMBS]; + word numUMBs,UMBbase[MAXUMBS]; + //dword numUMBs,UMBbase[MAXUMBS]; mmblocktype huge mmblocks[MAXBLOCKS],huge *mmhead,huge *mmfree,huge *mmrover,huge *mmnew; } mminfo_t; - -//#define GETNEWBLOCK {if(!(mmnew=mmfree))Quit("MM_GETNEWBLOCK: No free blocks!");mmfree=mmfree->next;} -//#define GETNEWBLOCK {if(!mmfree)MML_ClearBlock();mmnew=mmfree;mmfree=mmfree->next;} -//#define FREEBLOCK(x) {*x->useptr=NULL;x->next=mmfree;mmfree=x;} - /* ============================================================================= @@ -150,11 +146,6 @@ typedef struct ============================================================================= */ -/*static mminfotype mminfo; -static memptr bufferseg; - -static void (* beforesort) (void); -static void (* aftersort) (void);*/ /* ============================================================================= @@ -164,21 +155,6 @@ static void (* aftersort) (void);*/ ============================================================================= */ -/*static void huge *hugeheap; -static void far *farheap; -static void *nearheap; - -static mmblocktype far mmblocks[MAXBLOCKS] - ,far *mmhead,far *mmfree,far *mmrover,far *mmnew; - - -static unsigned totalEMSpages,freeEMSpages,EMSpageframe,EMSpagesmapped,EMShandle; -static unsigned int EMSVer; - -static void (* XMSaddr) (void); // far pointer to XMS driver - -static unsigned numUMBs,UMBbase[MAXUMBS];*/ - //========================================================================== boolean MML_CheckForEMS(void); @@ -188,7 +164,7 @@ unsigned MM_MapEMS(mminfo_t *mm); boolean MML_CheckForXMS(mminfo_t *mm); void MML_SetupXMS(mminfo_t *mm, mminfotype *mmi); void MML_ShutdownXMS(mminfo_t *mm); -void MML_UseSpace(unsigned segstart, unsigned seglength, mminfo_t *mm); +void MML_UseSpace(/*d*/word segstart, dword seglength, mminfo_t *mm); void MML_ClearBlock(mminfo_t *mm); void MM_Startup(mminfo_t *mm, mminfotype *mmi); @@ -203,7 +179,7 @@ void MM_ShowMemory(mminfo_t *mm); dword MM_UnusedMemory(mminfo_t *mm); dword MM_TotalFree(mminfo_t *mm); void MM_Report(mminfo_t *mm, mminfotype *mmi); -int MM_EMSVer(void); +//int MM_EMSVer(void); void MM_BombOnError(boolean bomb, mminfo_t *mm); void MM_GetNewBlock(mminfo_t *mm); void MM_FreeBlock(mmblocktype *x, mminfo_t *mm);