From: sparky4 Date: Tue, 21 Jul 2015 21:22:05 +0000 (-0500) Subject: there seems to be compatibility issues with the graphical library and the memory... X-Git-Url: http://4ch.mooo.com/gitweb/?a=commitdiff_plain;h=ce3fa943161eacaee20905ea495f15360fc06659;p=16.git there seems to be compatibility issues with the graphical library and the memory manager! modified: 16.exe modified: DEBUG.TXT modified: MMDUMP.TXT modified: exmmtest.exe modified: fmemtest.exe modified: fontgfx.exe modified: fonttest.exe modified: inputest.exe modified: makefile modified: maptest.exe modified: palettec.exe modified: pcxtest.exe modified: sountest.exe modified: src/exmmtest.c modified: src/lib/16_mm.c modified: src/lib/16_mm.h modified: test.exe modified: test2.exe modified: tsthimem.exe --- diff --git a/16.exe b/16.exe index 7f8f0d89..8a4d70a0 100644 Binary files a/16.exe and b/16.exe differ diff --git a/DEBUG.TXT b/DEBUG.TXT index be53f105..e324c609 100644 --- a/DEBUG.TXT +++ b/DEBUG.TXT @@ -1,7 +1,6 @@ -Seg:0 Size:13296 Owner:0x8bfb -Seg:33f Size:4096 Owner:0x32e2 -Seg:989 Size:24384 Owner:0xc0b6 -Seg:15c7 Size:828304 Owner:0xfd5c -Seg:e000 Size:31344 Owner:0x5aa8 +Seg:0 Size:92208 Owner:0x5b92 +Seg:1683 Size:4096 Owner:0x7298 +Seg:1cad Size:8752 Owner:0xf686 +Seg:5ece Size:529184 Owner:0xfe MM_ShowMemory: Memory block order currupted! diff --git a/MMDUMP.TXT b/MMDUMP.TXT index ce05fb45..eb2546ba 100644 Binary files a/MMDUMP.TXT and b/MMDUMP.TXT differ diff --git a/exmmtest.exe b/exmmtest.exe index 97791804..c60cd9c8 100644 Binary files a/exmmtest.exe and b/exmmtest.exe differ diff --git a/fmemtest.exe b/fmemtest.exe index dd4e540b..27be6722 100644 Binary files a/fmemtest.exe and b/fmemtest.exe differ diff --git a/fontgfx.exe b/fontgfx.exe index 6dae4b0b..a6c57419 100644 Binary files a/fontgfx.exe and b/fontgfx.exe differ diff --git a/fonttest.exe b/fonttest.exe index f8d209f1..43a4e897 100644 Binary files a/fonttest.exe and b/fonttest.exe differ diff --git a/inputest.exe b/inputest.exe index 8573f4ea..a23905b5 100644 Binary files a/inputest.exe and b/inputest.exe differ diff --git a/makefile b/makefile index 2d922640..3d27a0de 100644 --- a/makefile +++ b/makefile @@ -13,9 +13,9 @@ TARGET_OS = dos #-zkl = current codepage DFLAGS=-DTARGET_MSDOS=16 -DMSDOS=1# -zm -CFLAGS=-zk0 -wo -x -mc -zu -k16384# -zdp# -zp16 -zq +CFLAGS=-zk0 -wo -x -mc -zu -k32768#16384# -zdp# -zp16 -zq OFLAGS=-ot -ox -ob -oh -or# -om -ol -ol+ -FLAGS=-0 -lr $(OFLAGS) $(CFLAGS) $(DFLAGS) #-d2 +FLAGS=-0 -lr $(OFLAGS) $(CFLAGS) $(DFLAGS) -d2 SRC=src$(DIRSEP) SRCLIB=$(SRC)lib$(DIRSEP) JSMNLIB=$(SRCLIB)jsmn$(DIRSEP) diff --git a/maptest.exe b/maptest.exe index 32f04da9..ac7236cb 100644 Binary files a/maptest.exe and b/maptest.exe differ diff --git a/palettec.exe b/palettec.exe index 9135dbb9..7092088f 100644 Binary files a/palettec.exe and b/palettec.exe differ diff --git a/pcxtest.exe b/pcxtest.exe index 194b23d6..9a4741b6 100644 Binary files a/pcxtest.exe and b/pcxtest.exe differ diff --git a/sountest.exe b/sountest.exe index 40807e63..dd1e0181 100644 Binary files a/sountest.exe and b/sountest.exe differ diff --git a/src/exmmtest.c b/src/exmmtest.c index 29429e1d..b0629790 100644 --- a/src/exmmtest.c +++ b/src/exmmtest.c @@ -26,7 +26,8 @@ #include "src/lib/16_mm.h" #include "src/lib/modex16.h" -#define FILERL +//#define FILERL +//#define FILEINIT void main(int argc, char *argv[]) @@ -38,25 +39,32 @@ main(int argc, char *argv[]) word baka; page_t screen; - bakapee = malloc(64); + bakapee = _nmalloc(64); // memset(bakapee, 0, 64); mm.mmstarted=0; if(argv[1]) bakapee = argv[1]; else bakapee = "data/koishi~~.pcx"; - //if(argv[2]) - // #define FILEINIT textInit(); - /* setup camera and screen~ */ - screen = modexDefaultPage(); + /* setup camera and screen~ */ + //bug!!! + /*screen = modexDefaultPage(); screen.width += (16*2); - screen.height += (16*2); + screen.height += (16*2);*/ - printf(" start!\n"); + printf("&main()=%Fp start MM\n", *argv[0]); MM_Startup(&mm, &mmi); printf(" done!\n"); + /*if(FP_SEG(*argv[0])==0) + { + MM_Report(&screen, &mm, &mmi); + MM_Shutdown(&mm); + printf("&main()=%Fp\n", *argv[0]); + printf("&main() == %u\n", FP_SEG(*argv[0])); + exit(-5); + }*/ printf("&main()=%Fp\n", *argv[0]); #ifdef FILERL #ifdef FILEINIT @@ -80,7 +88,7 @@ main(int argc, char *argv[]) modexEnter(); modexShowPage(&screen); MM_ShowMemory(&screen, &mm); - //getch(); + getch(); MM_DumpData(&mm); modexLeave(); MM_Report(&screen, &mm, &mmi); diff --git a/src/lib/16_mm.c b/src/lib/16_mm.c index 184dc9e8..a21c55dc 100644 --- a/src/lib/16_mm.c +++ b/src/lib/16_mm.c @@ -662,8 +662,6 @@ void MM_Startup(mminfo_t *mm, mminfotype *mmi) mm->mmnew->next = NULL; mm->mmrover = mm->mmhead; -// farlen=_bios_memsize()*1024; - // // get all available near conventional memory segments // @@ -671,14 +669,28 @@ void MM_Startup(mminfo_t *mm, mminfotype *mmi) //---- length=coreleft(); _nheapgrow(); length=_memavl(); - start = (void huge *)(mm->nearheap = malloc(length)); + start = (void huge *)(mm->nearheap = _nmalloc(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(" near heap ok!\n"); + /*switch( _nheapchk() ) { + case _HEAPOK: + printf( "OK - nearheap is good\n" ); + break; + case _HEAPEMPTY: + printf( "OK - nearheap is empty\n" ); + break; + case _HEAPBADBEGIN: + printf( "ERROR - nearheap is damaged\n" ); + break; + case _HEAPBADNODE: + printf( "ERROR - bad node in nearheap\n" ); + break; + }*/ +// printf(" near heap ok!\n"); // // get all available far conventional memory segments @@ -686,7 +698,7 @@ void MM_Startup(mminfo_t *mm, mminfotype *mmi) //---- length=farcoreleft(); printf(" farheap making!\n"); _fheapgrow(); - length=_memavl(); + length=0xffffUL*4UL;//_memavl(); start = mm->farheap = halloc(length, sizeof(byte)); //start = mm->farheap = _fmalloc(length); length -= 16-(FP_OFF(start)&15); @@ -696,33 +708,49 @@ void MM_Startup(mminfo_t *mm, mminfotype *mmi) MML_UseSpace(segstart,seglength, mm); mmi->farheap = length; mmi->mainmem = mmi->nearheap + mmi->farheap; - printf(" far heap ok!\n"); - + /*switch( _fheapchk() ) { + case _HEAPOK: + printf( "OK - farheap is good\n" ); + break; + case _HEAPEMPTY: + printf( "OK - farheap is empty\n" ); + break; + case _HEAPBADBEGIN: + printf( "ERROR - farheap is damaged\n" ); + break; + case _HEAPBADNODE: + printf( "ERROR - bad node in farheap\n" ); + break; + }*/ + //printf(" far heap ok!\n"); // // detect EMS and allocate up to 64K at page frame // - printf(" EMS1\n\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! +printf(" EMS1\n"); +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! mmi->EMSmem = 0; for(i = 1;i < __argc;i++) { if(US_CheckParm(__argv[i],ParmStringsexmm) == 0) goto emsskip; // param NOEMS } - 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! +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! if(MML_CheckForEMS()) { printf(" EMS2\n"); +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! MML_SetupEMS(mm); // allocate space printf(" EMS3\n"); - 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! +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! //TODO: EMS4! AND EMS 3.2 MASSIVE DATA HANDLMENT! MML_UseSpace(mm->EMSpageframe,(MAPPAGES)*0x4000lu, mm); +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! printf(" EMS4\n"); - //if(mm->EMSVer<0x40) + if(mm->EMSVer<0x40) MM_MapEMS(mm, mmi); // map in used pages - //else - // MM_MapXEMS(mm, mmi); // map in used pages + else + MM_MapXEMS(mm, mmi); // map in used pages } // @@ -735,11 +763,12 @@ emsskip: if(US_CheckParm(__argv[i],ParmStringsexmm) == 0) goto xmsskip; // param NOXMS } - 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! +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! if(MML_CheckForXMS(mm)) { - printf(" XMS!\n"); - //MML_SetupXMS(mm, mmi); // allocate as many UMBs as possible +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! +printf(" XMS!\n"); + //++++ MML_SetupXMS(mm, mmi); // allocate as many UMBs as possible } // diff --git a/src/lib/16_mm.h b/src/lib/16_mm.h index 7284752c..c40b9855 100644 --- a/src/lib/16_mm.h +++ b/src/lib/16_mm.h @@ -36,8 +36,8 @@ #endif -#define SAVENEARHEAP 0x4000 // space to leave in data segment -#define SAVEFARHEAP 0x4000 // space to leave in far heap +#define SAVENEARHEAP 0x200 // space to leave in data segment +#define SAVEFARHEAP 0//x4000 // space to leave in far heap #define BUFFERSIZE 0x1000 // miscelanious, allways available buffer @@ -135,7 +135,7 @@ typedef struct memptr bufferseg; boolean mmstarted, bombonerror, mmerror; void huge *farheap; - void *nearheap; + void *nearheap; //byte EMS_status; unsigned totalEMSpages,freeEMSpages,EMSpageframe,EMSpagesmapped,EMShandle; unsigned int EMSVer; diff --git a/test.exe b/test.exe index f6977eb1..6001ac60 100644 Binary files a/test.exe and b/test.exe differ diff --git a/test2.exe b/test2.exe index ba76d6b5..5e5e674b 100644 Binary files a/test2.exe and b/test2.exe differ diff --git a/tsthimem.exe b/tsthimem.exe index e9b1e380..f726c5ea 100644 Binary files a/tsthimem.exe and b/tsthimem.exe differ