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