;================================ ; plot routine ;================================ ; Xcoord in XPOS ; Ycoord in YPOS ; color in COLOR plot: lda YPOS ; 2 lsr ; shift bottom bit into carry ; 2 bcc plot_even ; 2nt/3 plot_odd: ldx #$f0 ; 2 bcs plot_c_done ; 2nt/3 plot_even: ldx #$0f ; 2 plot_c_done: stx MASK ; 3 asl ; shift back (now even) ; 2 tay lda gr_offsets,Y ; lookup low-res memory address ; 4 clc ; 2 adc XPOS ; 3 sta GBASL ; 3 iny ; 2 lda gr_offsets,Y ; 4 adc DRAW_PAGE ; add in draw page offset ; 3 sta GBASH ; 3 ldy #0 ; 2 plot_write: lda MASK ; 3 eor #$ff ; 2 and (GBASL),Y ; 5 sta COLOR_MASK ; 3 lda COLOR ; 3 and MASK ; 3 ora COLOR_MASK ; 3 sta (GBASL),Y ; 5 rts ; 6