From 2170cf972950dffecd075a65d1f8d9a49eb82ce9 Mon Sep 17 00:00:00 2001 From: sparky4 Date: Sat, 8 Aug 2015 15:39:48 -0500 Subject: [PATCH] ok! wwww modified: 16.exe modified: bakapi.exe modified: exmmtest.exe modified: fontgfx.exe modified: maptest.exe modified: palettec.exe modified: pcxtest.exe modified: scroll.exe modified: src/exmmtest.c modified: src/fontgfx.c modified: src/lib/16_ca.c modified: src/lib/16_head.h modified: src/lib/16_mm.c modified: src/lib/16_mm.h modified: src/lib/modex16.c modified: test.exe modified: test2.exe --- 16.exe | Bin 39132 -> 39132 bytes bakapi.exe | Bin 33804 -> 33804 bytes exmmtest.exe | Bin 43144 -> 43656 bytes fontgfx.exe | Bin 26664 -> 26664 bytes maptest.exe | Bin 31378 -> 31378 bytes palettec.exe | Bin 24492 -> 24492 bytes pcxtest.exe | Bin 35218 -> 35218 bytes scroll.exe | Bin 55884 -> 55884 bytes src/exmmtest.c | 8 +- src/fontgfx.c | 6 +- src/lib/16_ca.c | 3 + src/lib/16_head.h | 1 + src/lib/16_mm.c | 74 ++++++++------- src/lib/16_mm.h | 6 ++ src/lib/modex16.c | 232 +++++++++++++++++++++++----------------------- test.exe | Bin 24780 -> 24780 bytes test2.exe | Bin 26702 -> 26702 bytes 17 files changed, 172 insertions(+), 158 deletions(-) diff --git a/16.exe b/16.exe index d045861962f5036193a4cf088b0704b68d3cdc1e..3d3f27977d3fd336b2bbb07502dcc9bc46899663 100644 GIT binary patch delta 51 zcmV-30L=f~u>#z&0#z&0C JKeNyaJa{9<7BT<; delta 49 zcmV-10M7r6hysj=0+x=~WbW diff --git a/exmmtest.exe b/exmmtest.exe index 64f660ace47e5e1e43485bc2e4cac9faa46a35d7..6f9a4af50e8b04c9ca6b44f41b54ab702c203a7a 100644 GIT binary patch delta 10511 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 Isk;dIU-RJ!kpKVy delta 10234 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 diff --git a/maptest.exe b/maptest.exe index 6ad044742c1f2f004d59b12f8934ab7d33cead6e..6d95e77e771cbd10f2b7ee67031b73afd4e1ce86 100644 GIT binary patch delta 49 zcmV-10M7rC^#PLg0gzMynz2;_HyMjW1c=#*M*4u^1GE9s diff --git a/scroll.exe b/scroll.exe index 1e15ab21b8a82ea217b77896f7da9744d85b198b..de253902ef897ff94f8c41e6ca627f9299d11340 100644 GIT binary patch delta 51 zcmV-30L=f)v;)kv1F)C_0h+U!13yU_i$ny7*@;H_fZ+qQ0n+5U!~?Jb?z+VTh?DP3 JKeI4R9F1X27rFod delta 49 zcmV-10M7r+v;)kv1F)C_0hqIy13yU@y2JyEL(SCREEN_WIDTH/2)-16) + if(chx+8>(screen.width/2)) { chx=0; chy+=8; diff --git a/src/lib/16_ca.c b/src/lib/16_ca.c index abeffbfd..f134df8b 100644 --- a/src/lib/16_ca.c +++ b/src/lib/16_ca.c @@ -1083,6 +1083,8 @@ void CA_Startup(global_game_variables_t *gvar) unlink("profile.16"); gvar->handle.profilehandle = open("profile.16", O_CREAT | O_WRONLY | O_TEXT); #endif + unlink("debug0.16"); + gvar->handle.showmemhandle = open("debug0.16", O_CREAT | O_WRONLY | O_TEXT); /*++++ // MDM begin - (GAMERS EDGE) // @@ -1144,6 +1146,7 @@ void CA_Shutdown(global_game_variables_t *gvar) #ifdef PROFILE close(gvar->handle.profilehandle); #endif + close(gvar->handle.showmemhandle); /*++++ close(maphandle); close(grhandle); diff --git a/src/lib/16_head.h b/src/lib/16_head.h index 665c4fb2..8baff16a 100644 --- a/src/lib/16_head.h +++ b/src/lib/16_head.h @@ -179,6 +179,7 @@ typedef void _seg * memptr; typedef struct { + int showmemhandle; int profilehandle,debughandle; int heaphandle; } handle_t; diff --git a/src/lib/16_mm.c b/src/lib/16_mm.c index 78f00337..a9bcd0c1 100644 --- a/src/lib/16_mm.c +++ b/src/lib/16_mm.c @@ -1252,10 +1252,8 @@ void MM_SortMem(mminfo_t *mm) MM_SetLock(&(memptr)audiosegs[playing],false);*/ } - //========================================================================== -//****#if 0 /* ===================== = @@ -1267,12 +1265,12 @@ void MM_SortMem(mminfo_t *mm) void MM_ShowMemory(global_game_variables_t *gvar,/*page_t *page, */mminfo_t *mm) { mmblocktype huge *scan; -//++++ word color; + //byte color; word temp; long end,owner; -//++++ word chx,chy; - byte scratch[160],str[16]; - + word chx,chy; + byte scratch[160],scratch0[4096],str[16]; + byte d = "#"; //**** VW_SetDefaultColors(); //**** VW_SetLineWidth(40); //++++mh temp = bufferofs; @@ -1280,28 +1278,24 @@ void MM_ShowMemory(global_game_variables_t *gvar,/*page_t *page, */mminfo_t *mm) //**** VW_SetScreen (0,0); scan = mm->mmhead; - end = -1; CA_OpenDebug (gvar); - -//++++ chx=0; + chx=0; //++++ chy=0; - while(scan) { -/*++++ if(scan->attributes & PURGEBITS) - color = 5; // dark purple = purgable + if(scan->attributes & PURGEBITS) + strcpy(scratch0, AAMAGENTA); // dark purple = purgable else - color = 9; // medium blue = non purgable + strcpy(scratch0, AABLUE); // medium blue = non purgable if(scan->attributes & LOCKBIT) - color = 12; // red = locked*/ + strcpy(scratch0, AARED); // red = locked if(scan->start<=end) { - //printf("); write(gvar->handle.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; + break; } end = scan->start+scan->length-1; //++++ chy = scan->start/320; @@ -1311,32 +1305,45 @@ CA_OpenDebug (gvar); //{ //++++ modexClearRegion(page, chx, chy, 4, 4, color); //} - //++++ VW_Hlin(scan->start,(unsigned)end,0,color); - + for(chx=scan->start;chx>=(word)end;chx++) + { + strcat(scratch0,&d); + } + strcat (scratch0,AAWHITE); strcat(scratch0,&d); //++++ VW_Plot(scan->start,0,15); //++++ modexClearRegion(page, chx, chy, 4, 4, 15); - if(scan->next->start > end+1) //++++ VW_Hlin(end+1,scan->next->start,0,0); // black = free + if(scan->next->start > end+1) + { + strcat(scratch0,AABLACK); + for(chx=end+1;chx>=(word)scan->next->start;chx++) + { + strcat(scratch0,&d); + } + } //for(chx=scan->next->start;chx+4>=(word)end+1;chx+=4) //{ -//++++ chx+=scan->next->start; -//++++ modexClearRegion(page, chx, chy, 4, 4, 2); +// chx+=scan->next->start; +// modexClearRegion(page, chx, chy, 4, 4, 2); //} //modexhlin(page, end+1,scan->next->start, chy, 0); - -/* - end = scan->length-1; - y = scan->start/320; +/* y = scan->start/320; x = scan->start%320; VW_Hlin(x,x+end,y,color); VW_Plot(x,y,15); - if (scan->next && scan->next->start > end+1) - VW_Hlin(x+end+1,x+(scan->next->start-scan->start),y,0); // black = free -*/ - -//****#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! + if (scan->next && scan->next->start > end+1) + { + //write(gvar->handle.showmemhandle,AABLACK,strlen(AABLACK)); + //for(chx=scan->start;chx>=(word)end;chx++) + //{ + //write(gvar->handle.showmemhandle,"_",1); + //} + //write(gvar->handle.showmemhandle,"\n",strlen("\n")); + strcat(scratch0,AABLACK); strcat(scratch0,0x10); + }*/ +//++++ VW_Hlin(x+end+1,x+(scan->next->start-scan->start),y,0); // black = free +write(gvar->handle.showmemhandle,scratch0,strlen(scratch0)); strcpy(scratch,"Seg:"); ultoa (scan->start,str,16); strcat (scratch,str); @@ -1352,7 +1359,6 @@ write(gvar->handle.debughandle,scratch,strlen(scratch)); //modexprint(page, chx, chy, 1, 0, 24, &scratch); //++++chy+=4; //fprintf(stdout, "%s", scratch); -//****#endif scan = scan->next; } @@ -1363,7 +1369,6 @@ CA_CloseDebug (gvar); //**** VW_SetLineWidth(64); //++++mh bufferofs = temp; } -//****#endif //========================================================================== @@ -1383,8 +1388,7 @@ void MM_DumpData(mminfo_t *mm) byte lock,purge; FILE *dumpfile; - - //++++free(mm->nearheap); + free(mm->nearheap); dumpfile = fopen ("mmdump.16","w"); if (!dumpfile){ printf("MM_DumpData: Couldn't open MMDUMP.16!\n"); diff --git a/src/lib/16_mm.h b/src/lib/16_mm.h index 2e012302..1ecca330 100644 --- a/src/lib/16_mm.h +++ b/src/lib/16_mm.h @@ -40,6 +40,12 @@ #define FREEBLOCK(x) {*x->useptr=NULL;x->next=mm->mmfree;mm->mmfree=x;mm->endid--;} +#define AAMAGENTA "\x1b[35;35m" +#define AABLUE "\x1b[34;34m" +#define AARED "\x1b[31;31m" +#define AABLACK "\x1b[40;40m" +#define AAWHITE "\x1b[37;37m" +#define AARESET "\x1b[0m" #define SAVENEARHEAP 0x200 // space to leave in data segment #define SAVEFARHEAP 0//x400 // space to leave in far heap diff --git a/src/lib/modex16.c b/src/lib/modex16.c index e5550b4c..b1e6d51f 100644 --- a/src/lib/modex16.c +++ b/src/lib/modex16.c @@ -28,37 +28,37 @@ byte far* VGA=(byte far*) 0xA0000000; /* this points to video memory. */ static void fadePalette(sbyte fade, sbyte start, word iter, byte *palette); -static byte tmppal[PAL_SIZE]; +static byte tmppal[PAL_SIZE]; int old_mode; - -///////////////////////////////////////////////////////////////////////////// -// // -// setvideo() - This function Manages the video modes // -// // -///////////////////////////////////////////////////////////////////////////// -void VGAmodeX(sword vq) -{ - union REGS in, out; - - if(!vq) - { // deinit the video - // change to the video mode we were in before we switched to mode 13h - modexLeave(); - in.h.ah = 0x00; - in.h.al = old_mode; - int86(0x10, &in, &out); - - } - else if(vq==1) - { // init the video - // get old video mode - in.h.ah = 0xf; - int86(0x10, &in, &out); - old_mode = out.h.al; - // enter mode - modexEnter(); - } -} + +///////////////////////////////////////////////////////////////////////////// +// // +// setvideo() - This function Manages the video modes // +// // +///////////////////////////////////////////////////////////////////////////// +void VGAmodeX(sword vq) +{ + union REGS in, out; + + if(!vq) + { // deinit the video + // change to the video mode we were in before we switched to mode 13h + modexLeave(); + in.h.ah = 0x00; + in.h.al = old_mode; + int86(0x10, &in, &out); + + } + else if(vq==1) + { // init the video + // get old video mode + in.h.ah = 0xf; + int86(0x10, &in, &out); + old_mode = out.h.al; + // enter mode + modexEnter(); + } +} static void vgaSetMode(byte mode) @@ -677,7 +677,7 @@ modexPalWhite() { } -/* utility */ +/* utility */ void modexPalUpdate(bitmap_t *bmp, word *i, word qp, word aqoffset) { @@ -970,15 +970,15 @@ no... wait.... no wwww } void modexputPixel(page_t *page, int x, int y, byte color) -{ +{ word pageOff = (word) page->data; /* Each address accesses four neighboring pixels, so set Write Plane Enable according to which pixel we want to modify. The plane is determined by the two least - significant bits of the x-coordinate: */ - //modexSelectPlane(PLANE(x)); - outp(SC_INDEX, 0x02); - outp(SC_DATA, 0x01 << (x & 3)); + significant bits of the x-coordinate: */ + modexSelectPlane(PLANE(x)); + //outp(SC_INDEX, 0x02); + //outp(SC_DATA, 0x01 << (x & 3)); /* The offset of the pixel into the video segment is offset = (width * y + x) / 4, and write the given @@ -989,7 +989,7 @@ void modexputPixel(page_t *page, int x, int y, byte color) } byte modexgetPixel(page_t *page, int x, int y) -{ +{ word pageOff = (word) page->data; /* Select the plane from which we must read the pixel color: */ outpw(GC_INDEX, 0x04); @@ -997,63 +997,63 @@ byte modexgetPixel(page_t *page, int x, int y) return VGA[(unsigned)((page->width/4) * y) + (x / 4) + pageOff]; -} - -void modexhlin(page_t *page, word xl, word xh, word y, word color) -{ - word x; - word yy=0; - - for(x=0;x=SCREEN_WIDTH-1){ x=0; yy+=4; } - modexClearRegion(page, x+xl, y+yy, 4, 4, color); - } - //modexputPixel(page, x+xl, y, color); +} + +void modexhlin(page_t *page, word xl, word xh, word y, word color) +{ + word x; + word yy=0; + + for(x=0;x=SCREEN_WIDTH-1){ x=0; yy+=4; } + modexClearRegion(page, x+xl, y+yy, 4, 4, color); + } + //modexputPixel(page, x+xl, y, color); } void modexprint(page_t *page, word x, word y, word t, word col, word bgcol, const byte *str) -{ - word i, s, o, w, j, xp; +{ + word i, s, o, w, j, xp; byte l[1024]; - word addr = (word) l; - word chw=0; - byte c; - + word addr = (word) l; + word chw=0; + byte c; + switch(t) { - case 0: + case 0: w=14; break; - case 1: + case 1: w=8; break; - case 2: + case 2: w=8; break; - case 3: + case 3: w=16; break; - default: + default: t=3; w=16; break; - } + } s=romFonts[t].seg; - o=romFonts[t].off; + o=romFonts[t].off; for(; *str != '\0'; str++) - { - c = (*str); - if((c=='\n'/* || c=="\ -"*/) || chw ->=page->width) - { - chw=0; - y+=w; - continue; - } + { + c = (*str); + if((c=='\n'/* || c=="\ +"*/) || chw +>=page->width) + { + chw=0; + y+=w; + continue; + } //load the letter 'A' __asm { MOV DI, addr @@ -1070,64 +1070,64 @@ void modexprint(page_t *page, word x, word y, word t, word col, word bgcol, cons INC DI DEC CX JNZ L1 - } + } - for(i=0; i>=1; - } + while(j) + { + modexputPixel(page, x+xp+chw, y+i, l[i] & j ? col:bgcol); + xp++; + j>>=1; + } } chw += xp; } -} - +} + void modexprintbig(page_t *page, word x, word y, word t, word col, word bgcol, const byte *str) -{ - word i, s, o, w, j, xp; +{ + word i, s, o, w, j, xp; byte l[1024]; - word addr = (word) l; - word chw=0; - byte c; - + word addr = (word) l; + word chw=0; + byte c; + switch(t) { - case 0: + case 0: w=14; break; - case 1: + case 1: w=8; break; - case 2: + case 2: w=8; break; - case 3: + case 3: w=16; break; - default: + default: t=3; w=16; break; - } + } s=romFonts[t].seg; - o=romFonts[t].off; + o=romFonts[t].off; for(; *str != '\0'; str++) - { - c = (*str); - if((c=='\n'/* || c=="\ -"*/)/* || chw>=page->width*/) - { - chw=0; - y+=w; - continue; - } + { + c = (*str); + if((c=='\n'/* || c=="\ +"*/)/* || chw>=page->width*/) + { + chw=0; + y+=w; + continue; + } //load the letter 'A' __asm { MOV DI, addr @@ -1144,19 +1144,19 @@ void modexprintbig(page_t *page, word x, word y, word t, word col, word bgcol, c INC DI DEC CX JNZ L1 - } + } - for(i=0; i>=1; - } + while(j) + { + //modexputPixel(page, x+xp+chw, y+i, l[i] & j ? col:bgcol); + modexClearRegion(page, (x+xp+chw)*8, (y+i)*8, 8, 8, l[i] & j ? col:bgcol); + xp++; + j>>=1; + } } chw += xp; } diff --git a/test.exe b/test.exe index c2fb85a4e9814abed3519ecfeb4cd381c82e8e46..e14a2a4441743fd28bced6beb5ede83436f73c42 100644 GIT binary patch delta 51 zcmV-30L=f)!2!&{0kC`l0a~+t0h