From ee8ff115b770801a7028e34795cad0a0982a551c Mon Sep 17 00:00:00 2001 From: sparky4 Date: Sun, 19 Jul 2015 16:00:44 -0500 Subject: [PATCH] ok! modified: exmmtest.exe modified: miditest.exe modified: sountest.exe modified: src/exmmtest.c modified: src/lib/16_ca.c modified: src/lib/16_ca.h modified: src/lib/16_head.h modified: src/lib/16_mm.c modified: src/lib/16_mm.h modified: tsthimem.exe --- exmmtest.exe | Bin 65237 -> 67749 bytes miditest.exe | Bin 71511 -> 71511 bytes sountest.exe | Bin 68969 -> 68969 bytes src/exmmtest.c | 4 +++ src/lib/16_ca.c | 9 +++-- src/lib/16_ca.h | 17 ++++----- src/lib/16_head.h | 7 ++++ src/lib/16_mm.c | 88 ++++++++++++++++++++++++++++++++++++++++------ src/lib/16_mm.h | 2 ++ tsthimem.exe | Bin 35125 -> 35125 bytes 10 files changed, 102 insertions(+), 25 deletions(-) diff --git a/exmmtest.exe b/exmmtest.exe index dda4760f6a0e1c9b2d755ac26da235798a56c796..3aa742b3ce4ef6be1f8a6e11a6700f51cf63a65c 100644 GIT binary patch delta 25217 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 diff --git a/miditest.exe b/miditest.exe index 1cf5b3dbed31e993c6f0e791168aa369afc203f2..4705605374cefef33945220a48703244836ac3ab 100644 GIT binary patch delta 169 zcmcbHzt_0Vv1hAX1lh3dflS#)5lcBIFv*fT(36qVwCzIs5CX-;g3X?s$P?NCv z4+8@OZ1h9j*lhC(XlY_S>lPb6uljOG9g0jMER*eb7;c`h z!_ZuzATu#9pCN^rfgv#^Co?HNEjPZPD784XBt9d*D376Q^1Ao(jN2!l1CmcBb9_(| WkYYh7WiVl3nC!Vjc5}gppE3ZHXE8wl diff --git a/src/exmmtest.c b/src/exmmtest.c index 8cd440f5..b1663ffe 100644 --- a/src/exmmtest.c +++ b/src/exmmtest.c @@ -60,9 +60,13 @@ main(int argc, char *argv[]) //MM_GetPtr(&bigbuffer, mmi.nearheap, &mm, &mmi); //hmm functions in cache system use the buffered stuff printf("size of big buffer~=%u\n", _bmsize(segu, bigbuffer)); + printf("dark purple = purgable\n"); + printf("medium blue = non purgable\n"); + printf("red = locked\n"); getch(); modexEnter(); MM_ShowMemory(&screen, &mm); + MM_DumpData(&mm); getch(); MM_Report(&screen, &mm, &mmi); modexLeave(); diff --git a/src/lib/16_ca.c b/src/lib/16_ca.c index df722dae..4ee50576 100644 --- a/src/lib/16_ca.c +++ b/src/lib/16_ca.c @@ -74,9 +74,9 @@ byte _seg *audiosegs[NUMSNDCHUNKS]; void _seg *grsegs[NUMCHUNKS]; byte far grneeded[NUMCHUNKS]; -byte ca_levelbit,ca_levelnum; +byte ca_levelbit,ca_levelnum;*/ -int profilehandle,debughandle;*/ +int profilehandle,debughandle; void (*drawcachebox) (char *title, unsigned numcache); void (*updatecachebox) (void); @@ -173,7 +173,6 @@ long GRFILEPOS(int c) = ============================ */ -/*++++ void CA_OpenDebug(void) { unlink("DEBUG.TXT"); @@ -182,8 +181,8 @@ void CA_OpenDebug(void) void CA_CloseDebug(void) { - close debughandle); -}*/ + close(debughandle); +} diff --git a/src/lib/16_ca.h b/src/lib/16_ca.h index b752bae5..29030c6a 100644 --- a/src/lib/16_ca.h +++ b/src/lib/16_ca.h @@ -20,10 +20,6 @@ #ifndef __16_CA__ #define __16_CA__ -#include -#include -#include - #ifndef __16_MM__ #include "src/lib/16_head.h" #include "src/lib/16_mm.h" @@ -65,9 +61,9 @@ extern void _seg *grsegs[NUMCHUNKS]; extern byte far grneeded[NUMCHUNKS]; extern byte ca_levelbit,ca_levelnum; -extern char *titleptr[8]; +extern char *titleptr[8];*/ -extern int profilehandle,debughandle;*/ +extern int profilehandle,debughandle; // // hooks for custom cache dialogs @@ -83,13 +79,14 @@ extern void (*finishcachebox) (void); //void CAL_ShiftSprite (unsigned segment,unsigned source,unsigned dest,unsigned width, unsigned height, unsigned pixshift, boolean domask); //=========================================================================== - + void CA_OpenDebug (void); -void CA_CloseDebug (void); +void CA_CloseDebug (void); boolean CA_FarRead (int handle, byte huge *dest, dword length, mminfo_t *mm); -boolean CA_FarWrite (int handle, byte huge *source, dword length, mminfo_t *mm); +boolean CA_FarWrite (int handle, byte huge *source, dword length, mminfo_t *mm); + boolean CA_ReadFile (char *filename, memptr *ptr, mminfo_t *mm); -boolean CA_LoadFile (char *filename, memptr *ptr, mminfo_t *mm, mminfotype *mmi); +boolean CA_LoadFile (char *filename, memptr *ptr, mminfo_t *mm, mminfotype *mmi); //long CA_RLEWCompress (unsigned huge *source, long length, unsigned huge *dest,unsigned rlewtag); diff --git a/src/lib/16_head.h b/src/lib/16_head.h index cb491f70..18e0e4c0 100644 --- a/src/lib/16_head.h +++ b/src/lib/16_head.h @@ -37,6 +37,9 @@ #include // just for wait #include #include +#include +#include +#include #include "src/lib/types.h" /* Control codes for all keys on the keyboard */ @@ -133,6 +136,7 @@ static dword far* clockdw= (dword far*) 0x046C; /* 18.2hz clock */ //static dword clockdw=0; +extern int profilehandle,debughandle; #define nil ((void *)0) @@ -153,4 +157,7 @@ long int filesize(FILE *fp); int US_CheckParm(char *parm,char **strings); //void Quit(char *error, ...); +extern void CA_OpenDebug (void); +extern void CA_CloseDebug (void); + #endif/*_LIBHEAD_H_*/ diff --git a/src/lib/16_mm.c b/src/lib/16_mm.c index 9e980b67..4d126499 100644 --- a/src/lib/16_mm.c +++ b/src/lib/16_mm.c @@ -1087,7 +1087,7 @@ void MM_ShowMemory(page_t *page, mminfo_t *mm) end = -1; -//CA_OpenDebug (); +CA_OpenDebug (); chx=0; chy=0; @@ -1102,20 +1102,22 @@ void MM_ShowMemory(page_t *page, mminfo_t *mm) color = 12; // red = locked if(scan->start<=end) { - //printf("\nMM_ShowMemory: Memory block order currupted!\n"); - modexprint(&page, chx, chy, 1, 0, 24, "\nMM_ShowMemory: Memory block order currupted!\n"); + //printf("); + write (debughandle,"\nMM_ShowMemory: Memory block order currupted!\n",strlen("\nMM_ShowMemory: Memory block order currupted!\n")); + //modexprint(&page, chx, chy, 1, 0, 24, "\nMM_ShowMemory: Memory block order currupted!\n"); return; } end = scan->start+scan->length-1; -//++++ modexhlin(page, scan->start, (unsigned)end, chy, color); + modexhlin(page, scan->start, (unsigned)end, chy, color); //++++ VW_Hlin(scan->start,(unsigned)end,0,color); //void VW_Plot(unsigned x, unsigned y, unsigned color); //void VW_Hlin(unsigned xl, unsigned xh, unsigned y, unsigned color); //++++ VW_Plot(scan->start,0,15); -//++++ modexputPixel(page, scan->start, chy, 15); + modexputPixel(page, scan->start, chy, 15); if(scan->next->start > end+1) //++++ VW_Hlin(end+1,scan->next->start,0,0); // black = free + modexhlin(page, end+1,scan->next->start, chy, color); //****#if 0 printf("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"); //bug! @@ -1130,16 +1132,16 @@ owner = (unsigned)scan->useptr; ultoa (owner,str,16); strcat (scratch,str); strcat (scratch,"\n"); -//++++write (debughandle,scratch,strlen(scratch)); -modexprint(page, chx, chy, 1, 0, 24, &scratch); -chy+=8; -//fprintf(stdout, "%s", scratch); +write (debughandle,scratch,strlen(scratch)); +//modexprint(page, chx, chy, 1, 0, 24, &scratch); +//chy+=4; +//fprintf(debughandle, "%s", scratch); //****#endif scan = scan->next; } -//CA_CloseDebug (); +CA_CloseDebug (); //++++mh IN_Ack(); //**** VW_SetLineWidth(64); @@ -1147,6 +1149,72 @@ chy+=8; } //****#endif +//========================================================================== + +/* +===================== += += MM_DumpData += +===================== +*/ + +void MM_DumpData(mminfo_t *mm) +{ + mmblocktype far *scan,far *best; + long lowest,oldlowest; + unsigned owner; + char lock,purge; + FILE *dumpfile; + + + free (mm->nearheap); + dumpfile = fopen ("mmdump.txt","w"); + if (!dumpfile){ + printf("MM_DumpData: Couldn't open MMDUMP.TXT!"); + return; + } + + lowest = -1; + do + { + oldlowest = lowest; + lowest = 0xffff; + + scan = mm->mmhead; + while (scan) + { + owner = (unsigned)scan->useptr; + + if (owner && owner oldlowest) + { + best = scan; + lowest = owner; + } + + scan = scan->next; + } + + if (lowest != 0xffff) + { + if (best->attributes & PURGEBITS) + purge = 'P'; + else + purge = '-'; + if (best->attributes & LOCKBIT) + lock = 'L'; + else + lock = '-'; + fprintf (dumpfile,"0x%p (%c%c) = %u\n" + ,(unsigned)lowest,lock,purge,best->length); + } + + } while (lowest != 0xffff); + + fclose (dumpfile); + printf("MMDUMP.TXT created."); +} + //========================================================================== diff --git a/src/lib/16_mm.h b/src/lib/16_mm.h index f7457aa5..5ff492c4 100644 --- a/src/lib/16_mm.h +++ b/src/lib/16_mm.h @@ -26,6 +26,7 @@ //#include #include "src/lib/16_head.h" #include "src/lib/modex16.h" +//#include "src/lib/16_ca.h" //++++mh #include "src/lib/16_in.h" #ifdef __DEBUG__ // 1 == Debug/Dev ; 0 == Production/final @@ -178,6 +179,7 @@ void MM_SetPurge(memptr *baseptr, int purge, mminfo_t *mm); void MM_SetLock(memptr *baseptr, boolean locked, mminfo_t *mm); void MM_SortMem(mminfo_t *mm); void MM_ShowMemory(page_t *page, mminfo_t *mm); +void MM_DumpData(mminfo_t *mm); dword MM_UnusedMemory(mminfo_t *mm); dword MM_TotalFree(mminfo_t *mm); void MM_Report(page_t *page, mminfo_t *mm, mminfotype *mmi); diff --git a/tsthimem.exe b/tsthimem.exe index f14444b0b06473f6aff35fb974c7ea62344ca3fd..14bb705265e3e3a5d4105875e1424194e1d8e6fc 100644 GIT binary patch delta 69 zcmV-L0J{IRk^;4o0*OAqZt|baHtB5CM~}br~2q0RRAK bX>Da~UvqhLUvzJDVQgP!a%E++^L0WKnSUA& delta 70 zcmV-M0J;CQk^;4o0*OAr5R|a%W|8bYEt2Wn};tliYO} c6FmU{0BC7#Wo=(`d2?T7Zgg^av-5RA6AYOg2><{9 -- 2.39.5