X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2F16_mm.h;h=701f002de627324a2dae2d84e5c01e594cbb2294;hb=fd42eceddd27e263460498788be4f319560c24a4;hp=663c7df9b167f11af101d6a9b99f26fb054936b8;hpb=866232d8ee296189ab972a4c99c140dbe32c3353;p=16.git diff --git a/src/lib/16_mm.h b/src/lib/16_mm.h index 663c7df9..701f002d 100644 --- a/src/lib/16_mm.h +++ b/src/lib/16_mm.h @@ -79,22 +79,90 @@ #define XMS_FREEUMB 0x11 //========================================================================== - -typedef void /*_seg*/ * memptr; +//__segment seg; +typedef void __based(__self) * memptr; //__based(seg) * memptr; typedef struct { - long nearheap,farheap,EMSmem,XMSmem,mainmem; + dword nearheap,farheap,EMSmem,XMSmem,mainmem; + boolean mmstarted, bombonerror, mmerror; } mminfotype; //========================================================================== -extern mminfotype mminfo; +/*extern mminfotype mminfo; extern memptr bufferseg; extern boolean mmerror; extern void (* beforesort) (void); -extern void (* aftersort) (void); +extern void (* aftersort) (void);*/ + +//========================================================================== + +/* +============================================================================= + + LOCAL INFO + +============================================================================= +*/ + +#define LOCKBIT 0x80 // if set in attributes, block cannot be moved +#define PURGEBITS 3 // 0-3 level, 0= unpurgable, 3= purge first +#define PURGEMASK 0xfffc +#define BASEATTRIBUTES 0 // unlocked, non purgable + +#define MAXUMBS 10 + +typedef struct mmblockstruct +{ + unsigned start,length; + unsigned attributes; + memptr *useptr; // pointer to the segment start + struct mmblockstruct far *next; +} mmblocktype; + + +//#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;} + +/* +============================================================================= + + GLOBAL VARIABLES + +============================================================================= +*/ + +/*static mminfotype mminfo; +static memptr bufferseg; + +static void (* beforesort) (void); +static void (* aftersort) (void);*/ + +/* +============================================================================= + + LOCAL VARIABLES + +============================================================================= +*/ + +/*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];*/ //========================================================================== @@ -111,8 +179,10 @@ void MM_SortMem (void); void MM_ShowMemory (void); -long MM_UnusedMemory (void); -long MM_TotalFree (void); +dword MM_UnusedMemory (void); +dword MM_TotalFree (void); +void MM_Report(void); +//int MM_EMSVer(void); void MM_BombOnError (boolean bomb);