Skip to content

Instantly share code, notes, and snippets.

@nurpax
Last active August 31, 2018 17:14
Show Gist options
  • Save nurpax/eb31c46341eaccf4d6e256b55d5f047b to your computer and use it in GitHub Desktop.
Save nurpax/eb31c46341eaccf4d6e256b55d5f047b to your computer and use it in GitHub Desktop.
.const zptmp0 = $60
.const zptmp1 = $62
.const zptmp2 = $64
.const zptmp3 = $68
.const zp_dstptr = zptmp0
.const zp_srcptr = zptmp1
.const zp_nlines = zptmp2
.macro mov16imm(res, v) {
lda #<v
sta res+0
lda #>v
sta res+1
}
.macro add16_imm8(res, lo) {
clc
lda res
adc #lo
sta res+0
lda res+1
adc #0
sta res+1
}
.macro copyscreen(buf0, buf1, starty, numlines) {
lda dbl_buf
and #1
bne screen_0_to_1
mov16imm(zp_srcptr, buf0 + starty*40+1)
mov16imm(zp_dstptr, buf1 + starty*40)
jmp start
screen_0_to_1:
mov16imm(zp_srcptr, buf1 + starty*40+1)
mov16imm(zp_dstptr, buf0 + starty*40)
start:
lda #numlines
sta zp_nlines
jsr blit_screen
}
blit_screen:
ldx #0
yloop:
ldy #0
xloop:
lda (zp_srcptr),y
sta (zp_dstptr),y
iny
lda (zp_srcptr),y
sta (zp_dstptr),y
iny
lda (zp_srcptr),y
sta (zp_dstptr),y
iny
lda (zp_srcptr),y
sta (zp_dstptr),y
iny
cpy #36
bne xloop
lda (zp_srcptr),y
sta (zp_dstptr),y
iny
lda (zp_srcptr),y
sta (zp_dstptr),y
iny
lda (zp_srcptr),y
sta (zp_dstptr),y
iny
add16_imm8(zp_dstptr, 40)
add16_imm8(zp_srcptr, 40)
inx
cpx zp_nlines
bne yloop
rts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment