From 2bc6e98511fbe156f4ec68b1b7dbc7c8c03f866f Mon Sep 17 00:00:00 2001 From: sparky4 Date: Sat, 27 Jun 2015 13:19:53 -0500 Subject: [PATCH] mm test~ Signed-off-by: sparky4 --- exmmtest.exe | Bin 44932 -> 45196 bytes src/lib/16_mm.c | 89 +++++++----------------------------------------- src/lib/16_mm.h | 78 ++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 87 insertions(+), 80 deletions(-) diff --git a/exmmtest.exe b/exmmtest.exe index 87716ed3294f9e181e6dddfc7f48d54093c54893..ca52f7f537d6dd8b1fd127214eae72fe6e992269 100644 GIT binary patch delta 15671 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 L22qL{L&*OE?is5q delta 15353 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�_iPKprQVBUHMassrxU$2s{hTDv6V(eM^F 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 Uc{f6%xw>2Yc%3MHJB*P33q#2!IsgCw diff --git a/src/lib/16_mm.c b/src/lib/16_mm.c index 79bb851e..1ea85fef 100644 --- a/src/lib/16_mm.c +++ b/src/lib/16_mm.c @@ -44,75 +44,6 @@ EMS / XMS unmanaged routines #include "src/lib/16_mm.h" -/* -============================================================================= - - 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 - -============================================================================= -*/ - -mminfotype mminfo; -memptr bufferseg; -boolean mmerror; - -void (* beforesort) (void); -void (* aftersort) (void); - -/* -============================================================================= - - LOCAL VARIABLES - -============================================================================= -*/ - -boolean mmstarted; - -void huge *hugeheap; -void far *farheap; -void *nearheap; - -mmblocktype far mmblocks[MAXBLOCKS] - ,far *mmhead,far *mmfree,far *mmrover,far *mmnew; - -boolean bombonerror; - -unsigned totalEMSpages,freeEMSpages,EMSpageframe,EMSpagesmapped,EMShandle; - -void (* XMSaddr) (void); // far pointer to XMS driver - -unsigned numUMBs,UMBbase[MAXUMBS]; - - /* ====================== = @@ -536,8 +467,6 @@ void MML_ClearBlock (void) =================== */ -static char *ParmStringsexmm[] = {"noems","noxms",""}; - void MM_Startup (void) { int i; @@ -613,6 +542,7 @@ void MM_Startup (void) if (MML_CheckForEMS()) { + printf("EMS!\n"); MML_SetupEMS(); // allocate space MML_UseSpace (EMSpageframe,EMSpagesmapped*0x400); MM_MapEMS(); // map in used pages @@ -631,7 +561,10 @@ emsskip: } if (MML_CheckForXMS()) + { + printf("XMS!\n"); MML_SetupXMS(); // allocate as many UMBs as possible + } // // allocate the misc buffer @@ -1009,7 +942,7 @@ void MM_SortMem (void) void MM_ShowMemory (void) { mmblocktype far *scan; - unsigned color,temp; + unsigned color,temp;//, i; long end,owner; char scratch[80],str[10]; @@ -1039,12 +972,14 @@ void MM_ShowMemory (void) return; } end = scan->start+scan->length-1; -//**** VW_Hlin(scan->start,(unsigned)end,0,color); -//**** VW_Plot(scan->start,0,15); -//**** if (scan->next->start > end+1) -//**** VW_Hlin(end+1,scan->next->start,0,0); // black = free +//++++ VW_Hlin(scan->start,(unsigned)end,0,color); +//++++ VW_Plot(scan->start,0,15); + if (scan->next->start > end+1) +//++++ VW_Hlin(end+1,scan->next->start,0,0); // black = free //****#if 0 +printf("Location:"); +printf("%Fp\t", scan->start); strcpy (scratch,"Size:"); ltoa ((long)scan->length*16,str,10); strcat (scratch,str); @@ -1054,7 +989,7 @@ ultoa (owner,str,16); strcat (scratch,str); strcat (scratch,"\n"); //++++write (debughandle,scratch,strlen(scratch)); -printf("%s\n", scratch); +fprintf(stdout, "%s", scratch); //****#endif scan = scan->next; diff --git a/src/lib/16_mm.h b/src/lib/16_mm.h index 663c7df9..27fa00b0 100644 --- a/src/lib/16_mm.h +++ b/src/lib/16_mm.h @@ -80,7 +80,7 @@ //========================================================================== -typedef void /*_seg*/ * memptr; +typedef void /*__seg*/ * memptr; typedef struct { @@ -89,12 +89,84 @@ typedef struct //========================================================================== -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 + +============================================================================= +*/ + +mminfotype mminfo; +memptr bufferseg; +boolean mmerror; + +void (* beforesort) (void); +void (* aftersort) (void); + +static char *ParmStringsexmm[] = {"noems","noxms",""}; + +/* +============================================================================= + + LOCAL VARIABLES + +============================================================================= +*/ + +boolean mmstarted; + +void huge *hugeheap; +void far *farheap; +void *nearheap; + +mmblocktype far mmblocks[MAXBLOCKS] + ,far *mmhead,far *mmfree,far *mmrover,far *mmnew; + +boolean bombonerror; + +unsigned totalEMSpages,freeEMSpages,EMSpageframe,EMSpagesmapped,EMShandle; + +void (* XMSaddr) (void); // far pointer to XMS driver + +unsigned numUMBs,UMBbase[MAXUMBS]; //========================================================================== -- 2.39.2