From: sparky4 <sparky4@cock.li>
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