PR#3 PREFIX /A2OSX.BUILD LOMEM $A00 INC 1 AUTO 6 .LIST OFF *-------------------------------------- * SETPIXEL * In : YA = Ptr to CtrlBlk : * 1 : OP (XOR only) * 2 : Mode * 3 : Color * 4 : SrcX1 * 6 : SrcY1 *-------------------------------------- SETPIXEL >STYA ZPBase ldy #S.CB.Y1 Skip S.CB.Y1+1.....always 0 .1 lda (ZPBase),y sta CB.Cache,y dey bpl .1 sta SET80STORE lda CB.Cache+S.CB.MODE bit #S.CB.MODE.C16 bne SETPIXEL.C16 SETPIXEL.MONO ldx CB.Cache+S.CB.X1+1 Get X Hi byte.... lda DIV7.lo,x sta .1+1 lda DIV7.hi,x sta .1+2 lda MOD7.lo,x sta .2+1 lda MOD7.hi,x sta .2+2 lda DIV7.BASE,x ldx CB.Cache+S.CB.X1 clc .1 adc $ffff,x DIV7 : x = X.LO, a = X DIV 7 pha save X DIV 7 lsr ldy CB.Cache+S.CB.Y1 clc adc BASEL,y setup line Base Ptr (A=Col) sta ZPBase lda BASEH,y sta ZPBase+1 ply lda COL.BANK,y tay sta $c000,y .2 ldy $ffff,x MOD7 : x = X.LO, y = X MOD 7 lda CB.Cache+S.CB.OP beq .5 lda (ZPBase) XOR eor Mono.Masks,y y = mod 7 sta (ZPBase) sta CLR80STORE rts .5 lda (ZPBase) ldx CB.Cache+S.CB.COLOR get color bne .6 and Mono.NMasks,y includes And $7F for mono sta (ZPBase) sta CLR80STORE rts .6 and #$7F switch back this byte to mono ora Mono.Masks,y sta (ZPBase) sta CLR80STORE rts SETPIXEL.C16 lda CB.Cache+S.CB.X1 lsr CB.Cache+S.CB.X1+1 divide by 4 ror lsr CB.Cache+S.CB.X1+1 ror tay Y=X/4 (range 0->139) lda DIV7.0,y A=X/4/7 (range 0->19) asl times 2 (range 0->38) ldx CB.Cache+S.CB.Y1 adc BASEL,x setup line Base Ptr (cc by asl) sta ZPBase ZPBase now point to first of... lda BASEH,x sta ZPBase+1 ...the 4 columns lda MOD7.0,y get MOD asl times 4 to compute index in MASK tables asl tax set in X for Masks,NMasks lda CB.Cache+S.CB.COLOR asl times 4 to compute index in PIXELS table asl tay lda Color.Masks,x bits in 1st byte to light? beq .10 and Color.Pixels,y apply color sta GBYTE sta SETPAGE2 lda (ZPBase) and Color.NMasks,x reset existing pixel, ora GBYTE sta (ZPBase) .10 inx iny lda Color.Masks,x beq .11 and Color.Pixels,y apply color sta GBYTE sta CLRPAGE2 lda (ZPBase) and Color.NMasks,x reset existing pixel, ora GBYTE sta (ZPBase) .11 inc ZPBase inx iny lda Color.Masks,x beq .12 and Color.Pixels,y apply color sta GBYTE sta SETPAGE2 lda (ZPBase) and Color.NMasks,x reset existing pixel, ora GBYTE sta (ZPBase) .12 inx iny lda Color.Masks,x beq .13 and Color.Pixels,y apply color sta GBYTE sta CLRPAGE2 lda (ZPBase) and Color.NMasks,x reset existing pixel, ora GBYTE sta (ZPBase) .13 sta CLR80STORE rts *-------------------------------------- * GETPIXEL *-------------------------------------- GETPIXEL rts *-------------------------------------- MAN SAVE /A2OSX.SRC/DRV/DHGR.DRV.S.PIX LOAD /A2OSX.SRC/DRV/DHGR.DRV.S ASM