org $800 REG_NEWVID = $c029 FB_BASE = $e12000 clc xce lda #$c1 sta REG_NEWVID rep #$30 ; accum/index 16bit lda #$0000 ldx #$0000 fillrest stal $e19d00,x inx inx cpx #$100 bne fillrest lda #$0000 cmap pha sta 0 asl tax ; offset = i * 2 asl asl asl ora 0 sta 0 xba ora 0 stal $e19e00,x pla inc cmp #$000f bne cmap YVAL = 0 TMPVAL = 1 sep #$20 ; accum 8bit ldx #0 ; fb index stz YVAL yloop ldy #0000 ; column/2 on Y reg xloop tya asl and #$0f sta TMPVAL ; save first pixel X coordinate inc ; increment by 1 for the next pixel eor YVAL asl ; move next pixel value to high nibble asl asl asl ora TMPVAL ; first pixel X -> low nibble eor YVAL stal FB_BASE, x ; write the pixel pair inx iny cpy #160 bne xloop inc YVAL lda YVAL cmp #200 bne yloop infloop bra infloop ; vi:ft=asm_ca65