From: sparky4 Date: Tue, 14 Jul 2015 01:15:12 +0000 (-0500) Subject: FACK! X-Git-Url: http://4ch.mooo.com/gitweb/?a=commitdiff_plain;h=edbe4701fc1f04665393d1ed842b60a689df2fcf;p=16.git FACK! modified: 16.exe modified: fonttes0.exe modified: maptest.exe modified: palettec.exe modified: pcxtest.exe modified: src/fonttes0.c modified: src/lib/modex16.c modified: src/lib/modex16.h modified: test.exe modified: test2.exe --- diff --git a/16.exe b/16.exe index f2cbc3ab..e48b8aef 100644 Binary files a/16.exe and b/16.exe differ diff --git a/fonttes0.exe b/fonttes0.exe index 84c52568..4cc28256 100644 Binary files a/fonttes0.exe and b/fonttes0.exe differ diff --git a/maptest.exe b/maptest.exe index c8fd20c6..e86cd95d 100644 Binary files a/maptest.exe and b/maptest.exe differ diff --git a/palettec.exe b/palettec.exe index 119172a3..925e1a65 100644 Binary files a/palettec.exe and b/palettec.exe differ diff --git a/pcxtest.exe b/pcxtest.exe index 9794ec35..3be4c907 100644 Binary files a/pcxtest.exe and b/pcxtest.exe differ diff --git a/src/fonttes0.c b/src/fonttes0.c index 4a775a3a..a59dfc10 100644 --- a/src/fonttes0.c +++ b/src/fonttes0.c @@ -170,7 +170,8 @@ void main(int argc, char near *argv[]) //printf("j=%d ", j); //printf("%02x\n", l[i] & j); //modexPutPixel(xp, i, l[i] & j ? 15:0); - modexClearRegion(&page, xp, i, 4, 4, l[i] & j ? 15:0); + //modexpixelwr(xp, i, 0, l[i] & j ? 15:0); + modexClearRegion(&page, xp*4, i*4, 4, 4, l[i] & j ? 15:0); //while(!getch()); xp++; j>>=1; diff --git a/src/lib/modex16.c b/src/lib/modex16.c index 98fbb628..2b2818fe 100644 --- a/src/lib/modex16.c +++ b/src/lib/modex16.c @@ -942,39 +942,36 @@ no... wait.... no wwww free(pal); } -void modexPutPixel(word x, word y, byte Color) +void modexpixelwr(word xx, word yy, word PageBase, word Color) { -// on entry X,Y = location and C = color (0-15) -//putpixel proc near uses ax bx cx dx -// byte offset = Y * (horz_res / 8) + int(X / 8) - -// byte offset = Y * (horz_res / 8) + int(X / 8) - + word x=xx; + word y=yy; __asm { - mov ax,y // calculate offset - mov dx,80 - mul dx // ax = y * 80 - mov bx,x - mov cl,bl // save low byte for below - //shr bx,03 - add bx,ax // bx = offset this group of 8 pixels - - mov dx,GC_INDEX // set to video hardware controller - - and cl,07h // Compute bit mask from X-coordinates - xor cl,07h // and put in ah - mov ah,01h - shl ah,cl - mov al,08h // bit mask register - out dx,ax - - mov ax,0205h // read mode 0, write mode 2 - out dx,ax - - mov al,es:[bx] // load to latch register - mov al,Color - mov es:[bx],al // write to register + push bp //preserve caller’s stack frame + mov bp,sp //point to local stack frame + + mov ax,SCREEN_WIDTH + mul [bp+4/*y*/] //offset of pixel’s scan line in page + mov bx,[bp+4/*x*/] + shr bx,1 + shr bx,1 //X/4 = offset of pixel in scan line + add bx,ax //offset of pixel in page + add bx,[bp+0/*PageBase*/] //offset of pixel in display memory + mov ax,SCREEN_SEG + mov es,ax //point ES:BX to the pixel’s address + + mov cl,byte ptr [bp+4/*x*/] + and cl,011b //CL = pixel’s plane + mov ax,0100h + MAP_MASK //AL = index in SC of Map Mask reg + shl ah,cl //set only the bit for the pixel’s plane to 1 + mov dx,SC_INDEX //set the Map Mask to enable only the + out dx,ax // pixel’s plane + + mov al,byte ptr [bp+15/*Color*/] + mov es:[bx],al //draw the pixel in the desired color + + pop bp //restore caller’s stack frame } } diff --git a/src/lib/modex16.h b/src/lib/modex16.h index 66330fe1..d748e4be 100644 --- a/src/lib/modex16.h +++ b/src/lib/modex16.h @@ -92,7 +92,7 @@ void modexPalUpdate(bitmap_t *bmp, word *i, word qp, word aqoffset); void modexPalUpdate1(byte *p); void modexPalUpdate0(byte *p); void chkcolor(bitmap_t *bmp, word *q, word *a, word *aa, word *z, word *i/*, word *offset*/); -void modexPutPixel(word x, word y, byte Color); +void modexpixelwr(word xx, word yy, word PageBase, word Color); void bputs(/*bmp_t *bmp, */unsigned x, unsigned y, const char *s); void modexWaitBorder(); diff --git a/test.exe b/test.exe index 965a131a..bd8ed8e3 100644 Binary files a/test.exe and b/test.exe differ diff --git a/test2.exe b/test2.exe index 6f009cc2..d54bbbd5 100644 Binary files a/test2.exe and b/test2.exe differ