From 0e18fee0636fb264bb16d80fb0287a4fb84efe26 Mon Sep 17 00:00:00 2001 From: sparky4 Date: Wed, 22 Jul 2015 08:57:29 -0500 Subject: [PATCH] hmmm modified: DEBUG.TXT modified: MMDUMP.TXT modified: exmmtest.exe modified: src/exmmtest.c modified: src/lib/16_mm.c modified: src/lib/16_mm.h --- DEBUG.TXT | 7 ++++--- MMDUMP.TXT | Bin 0 -> 88 bytes exmmtest.exe | Bin 55281 -> 51502 bytes src/exmmtest.c | 2 +- src/lib/16_mm.c | 18 +++++++++--------- src/lib/16_mm.h | 11 +++-------- 6 files changed, 17 insertions(+), 21 deletions(-) diff --git a/DEBUG.TXT b/DEBUG.TXT index 74c756b6..6a34c892 100644 --- a/DEBUG.TXT +++ b/DEBUG.TXT @@ -1,3 +1,4 @@ -Seg:ffff Size:917520 Owner:0x0 - -MM_ShowMemory: Memory block order currupted! +Seg:0 Size:105968 Owner:0x46f6 +Seg:19df Size:4096 Owner:0x56f8 +Seg:216f Size:8592 Owner:0x2ef7 +Seg:6386 Size:640912 Owner:0x8003 diff --git a/MMDUMP.TXT b/MMDUMP.TXT index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ac06fa08590798fdf4e62b26d6b0207ae436a210 100644 GIT binary patch literal 88 zcmXr0FfcGlwlYdhGgr{imDE(QRWRV?GJuGhn5CHkMeiet8l_m7nx$C)MH!GpfhJfO L7#IUZE1{wQT!9j6 literal 0 HcmV?d00001 diff --git a/exmmtest.exe b/exmmtest.exe index eed1cb67409e746acadbf89a480312efccc866a7..f7b564fcc9f4e3e4983866903683ed23c6cc226a 100644 GIT binary patch delta 21032 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 D=8FVl diff --git a/src/exmmtest.c b/src/exmmtest.c index e2f8d5de..5401c95d 100644 --- a/src/exmmtest.c +++ b/src/exmmtest.c @@ -34,7 +34,7 @@ #pragma warn -pro #pragma warn -use -#define FILERL +//#define FILERL //#define FILEINIT void diff --git a/src/lib/16_mm.c b/src/lib/16_mm.c index 548efc09..aa123376 100644 --- a/src/lib/16_mm.c +++ b/src/lib/16_mm.c @@ -634,10 +634,10 @@ void MM_Startup(mminfo_t *mm, mminfotype *mmi) { int i; dword length,seglength; + //dword length; word seglength; void huge *start; - unsigned segstart,endfree; + word segstart;//,endfree; - //printf("mmi->segu=%Fp\n", (mmi->segu)); if(mm->mmstarted) MM_Shutdown(mm); @@ -647,7 +647,7 @@ void MM_Startup(mminfo_t *mm, mminfotype *mmi) // // set up the linked list (everything in the free list; // - printf(" linked list making!\n"); + //printf(" linked list making!\n"); mm->mmhead = NULL; mm->mmfree = &(mm->mmblocks[0]); for(i=0;immblocks[i].next = &(mm->mmblocks[i+1]); } mm->mmblocks[i].next = NULL; - //printf("mmi->segu=%Fp\n", (mmi->segu)); // // locked block of all memory until we punch out free space // - printf(" newblock making!\n"); + //printf(" newblock making!\n"); MM_GetNewBlock(mm); mm->mmhead = mm->mmnew; // this will allways be the first node mm->mmnew->start = 0; @@ -668,7 +667,6 @@ void MM_Startup(mminfo_t *mm, mminfotype *mmi) mm->mmnew->attributes = LOCKBIT; mm->mmnew->next = NULL; mm->mmrover = mm->mmhead; - //printf("mmi->segu=%Fp\n", (mmi->segu)); // // get all available near conventional memory segments @@ -676,14 +674,15 @@ void MM_Startup(mminfo_t *mm, mminfotype *mmi) printf(" nearheap making!\n"); //---- length=coreleft(); _nheapgrow(); - length=GetFreeSize();//_memmax(); - start = /*(void huge *)*/(mm->nearheap = _nmalloc(length)); + length=_memmax(); + start = (void huge *)(mm->nearheap = malloc(length)); length -= 16-(FP_OFF(start)&15); length -= SAVENEARHEAP; seglength = length / 16; // now in paragraphs segstart = FP_SEG(start)+(FP_OFF(start)+15)/16; MML_UseSpace(segstart,seglength, mm); mmi->nearheap = length; + printf("start=%Fp segstart=%x seglen=%lu len=%lu\n", start, segstart, seglength, length); /*switch( _nheapchk() ) { case _HEAPOK: printf( "OK - nearheap is good\n" ); @@ -706,7 +705,7 @@ void MM_Startup(mminfo_t *mm, mminfotype *mmi) //---- length=farcoreleft(); printf(" farheap making!\n"); _fheapgrow(); - length=_memavl();//0xffffUL*4UL; + length=0xffffUL*4UL; start = mm->farheap = halloc(length, sizeof(byte)); //start = mm->farheap = _fmalloc(length); length -= 16-(FP_OFF(start)&15); @@ -716,6 +715,7 @@ void MM_Startup(mminfo_t *mm, mminfotype *mmi) MML_UseSpace(segstart,seglength, mm); mmi->farheap = length; mmi->mainmem = mmi->nearheap + mmi->farheap; + printf("start=%Fp segstart=%x seglen=%lu len=%lu\n", start, segstart, seglength, length); /*switch( _fheapchk() ) { case _HEAPOK: printf( "OK - farheap is good\n" ); diff --git a/src/lib/16_mm.h b/src/lib/16_mm.h index 7949cce4..b9b455f5 100644 --- a/src/lib/16_mm.h +++ b/src/lib/16_mm.h @@ -92,8 +92,6 @@ typedef struct { dword nearheap,farheap,EMSmem,XMSmem,mainmem; //__segment segu; - //word segu; -// } mminfotype; //========================================================================== @@ -118,15 +116,12 @@ extern void (* XMSaddr) (void); // far pointer to XMS driver #define BASEATTRIBUTES 0 // unlocked, non purgable #define MAXUMBS 12 -#define MAPPAGES 4//mm->EMSpagesmapped +#define MAPPAGES mm->EMSpagesmapped typedef struct mmblockstruct { - 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! + //word start,length; + word start; dword length; unsigned attributes; memptr *useptr; // pointer to the segment start struct mmblockstruct huge *next; -- 2.39.5