CSECT text ;use SC BLINK option to merge this guy with our default c code hunk XDEF @ReadPix XDEF @FastPix @FastPix ; D0 has x pos ; D1 has Y pos ; 4(sp) has color Movem.l d2-d3/a2,-(sp) lea _ytable(a4),a0 ; ytable array base addr asl.l #1,d1 ; array offset for shorts move.w 0(a0,d1.l),a2 ; byteoffset = ytable[y] move.l d0,d2 ; get x in d2 asr.l #3,d2 ; div 8 for col byte adda.l d2,a2 ; add to byteoffset and.l #7,d0 ; x = x % 8 move.l #7,d2 sub.w d0,d2 ext.l d2 moveq.l #0,d3 move.w _nplanes(a4),d3 moveq.l #0,d0 pixloop move.w d3,d0 asl.l #2,d0 lea _bp(a4),a0 move.l a2,d1 move.l 0(a0,d0.l),a1 add.l d1,a1 checkcolor move.l 16(sp),d0 ; load color btst d3,d0 bne setpixel clearpixel bclr d2,(a1) dbra d3,pixloop movem.l (sp)+,d2-d3/a2 rts setpixel bset d2,(a1) dbra d3,pixloop movem.l (sp)+,d2-d3/a2 rts @ReadPix ; D0 has x pos ; D1 has Y pos Movem.l d2-d4/a2,-(sp) lea _ytable(a4),a0 ; ytable array base addr asl.l #1,d1 ; array offset for shorts move.w 0(a0,d1.l),a2 ; byteoffset = ytable[y] move.l d0,d2 ; get x in d2 asr.l #3,d2 ; div 8 for col byte adda.l d2,a2 ; add to byteoffset and.l #7,d0 ; x = x % 8 move.l #7,d2 sub.w d0,d2 ext.l d2 moveq.l #0,d3 move.w _nplanes(a4),d3 moveq.l #0,d0 moveq.l #0,d4 pixloo move.w d3,d4 asl.l #2,d4 lea _bp(a4),a0 move.l a2,d1 move.l 0(a0,d4.l),a1 add.l d1,a1 btst.b d2,(a1) bne setpixel2 dbra d3,pixloo movem.l (sp)+,d2-d4/a2 rts setpixel2 bset.l d3,d0 dbra d3,pixloo movem.l (sp)+,d2-d4/a2 rts CSECT __MERGED,data ; naming this hunk __MERGED means a4 relative XREF _bp XREF _nplanes XREF _ytable end