--- V9938.c.original Tue Sep 7 06:57:28 1999 +++ V9938.c Mon Apr 24 18:20:47 2000 @@ -166,6 +166,7 @@ register int AX,AY,TX,TY,I,J,K; register int SX,SY,DX,DY,NX,NY,SM,TR; register byte *P,*T,CL; + register byte DCL; /* V9938 ops only work in SCREENs 5-8 */ if(ScrMode<5) return(0); @@ -223,7 +224,8 @@ /* Compute point offset */ I=Shift[SM][DX%PPB[SM]]; /* Set the point */ - *P=(*P&~(Mask[SM]<>I)&Mask[SM]; + *P=(*P&~(Mask[SM]<>I)&Mask[SM]; + *P=(*P&~(Mask[SM]<>I)&Mask[SM]; + *P=(*P&~(Mask[SM]<=0) { J-=AY;DX+=TX; } } @@ -312,7 +316,8 @@ /* Set a point */ P=VRAM+DY*BPL[SM]+DX/PPB[SM]; I=Shift[SM][DX%PPB[SM]]; - *P=(*P&~(Mask[SM]<>I)&Mask[SM]; + *P=(*P&~(Mask[SM]<=0) { J-=AX;DY+=TY; } } @@ -381,7 +386,8 @@ { P=T+AX/PPB[SM]; I=Shift[SM][AX%PPB[SM]]; - *P=(*P&~(Mask[SM]<>I)&Mask[SM]; + *P=(*P&~(Mask[SM]<>Shift[SM][AX%PPB[SM]])&Mask[SM]; + I=Shift[SM][AX%PPB[SM]]; + CL=(T[AX/PPB[SM]]>>I)&Mask[SM]; /* If drawing this point... */ if(CL||TR) @@ -505,7 +512,8 @@ AX=DX+J*TX; K=AX/PPB[SM]; I=Shift[SM][AX%PPB[SM]]; - P[K]=(P[K]&~(Mask[SM]<>I)&Mask[SM]; + P[K]=(P[K]&~(Mask[SM]<