PR#3 PREFIX /A2OSX.BUILD LOMEM $A00 INC 1 AUTO 6 .LIST OFF *-------------------------------------- * BitBlt * S.CB.X1 : SrcX1 in bitmap/mask * S.CB.Y1 : SrcY1 * S.CB.X2 : SrcX2 * S.CB.Y2 : SrcY2 * S.CB.DestX : Destination X (screen) * S.CB.DestY : Destination Y (screen) * S.CB.SrcPtr : pointer to S.BM * S.CB.DstPtr : pointer to Save Buffer *-------------------------------------- BITBLT >LDYA CB.CACHE+S.CB.SrcPtr >STYA ZPBMDataPtr ldy #S.BM-1 .1 lda (ZPBMDataPtr),y sta BM.Cache,y dey bpl .1 lda ZPBMDataPtr clc adc #S.BM sta ZPBMDataPtr bcc .2 inc ZPBMDataPtr+1 .2 >LDYA CB.Cache+S.CB.Y1 ldx BM.Cache+S.BM.RowBytes jsr YAMultX pha tya clc adc ZPBMDataPtr sta ZPBMDataPtr pla pha adc ZPBMDataPtr+1 sta ZPBMDataPtr+1 tya adc BM.Cache+S.BM.MASK.OFS sta ZPBMMaskPtr pla adc BM.Cache+S.BM.MASK.OFS+1 sta ZPBMMaskPtr+1 lda CB.Cache+S.CB.X1 pha and #7 we have to shift right!!! tax pla lsr CB.Cache+S.CB.X1+1 ror lsr CB.Cache+S.CB.X1+1 ror lsr CB.Cache+S.CB.X1+1 ror pha clc adc ZPBMDataPtr sta ZPBMDataPtr bcc .3 inc ZPBMDataPtr+1 .3 pla adc ZPBMMaskPtr sta ZPBMMaskPtr bcc .4 inc ZPBMMaskPtr+1 .4 clc rts *-------------------------------------- MAN SAVE /A2OSX.SRC/DRV/DHGR.DRV.S.RECT LOAD /A2OSX.SRC/DRV/DHGR.DRV.S ASM