plot_8 bsr.s calc ; Get A1 = screen address andi.w #7,d3 ; D3 = 00000000 00000GRB lsl.w #6,d3 ; D3 = 0000000G RB000000 move.w d3,d4 ; D4 = 0000000G RB000000 lsl.w #7,d4 ; D4 = GRB00000 00000000 andi.w #$8000,d4 ; D4 = G0000000 00000000 andi.w #$00C0,d3 ; D3 = 00000000 RB000000 or.w d4,d3 ; D3 = G000000G RB000000 move.w #$7f3f,d2 ; AND mask = 01111111 00111111 andi.w #6,d1 ; (x AND 6) in d1 ror.w d1,d2 ; Build correct AND mask ror.w d1,d3 ; Build correct OR mask (colour) and.w d2,(a1) ; AND out the changing pixel or.w d3,(a1) ; OR in the (new) colour moveq #0,d0 ; No errors rts ; All done