Mercurial > repos > simple16
view pic8bpp.s16 @ 58:bed2d84eeabe
Fix ldimh special casing of loading labels for the case when the label is not a forward reference
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 06 Sep 2016 09:42:31 -0700 |
parents | fa9cf7108ab7 |
children |
line wrap: on
line source
;high databank points to ROM, low databank poits to VRAM ldim 0, db ldimh $E0, db ;load address of image in r1 ldim image, r1 ldimh image, r1 ldim 0, r2 ldimh $80, r2 add r2, r1, r1 ;VRAM offset, this allows the 204 pixel display to be centered on 32K point ldim $80, r3 ldimh 0, r3 ;set display offset register outi $C, r3 ;zero reg, for use in loads and stores ldim 0, r0 ;copy palette ld16 r1, r0, r4 addi 2, r1 mov r4, r5 ldimh 0, r5 outi $E, r5 pal_loop ld16 r1, r0, r5 addi 2, r1 outi $E, r5 addi -1, r4 bne pal_loop ;copy first 102 lines ;r4 = 320 * 102 ldim $80, r4 ldimh $7F, r4 copy_loop: ld8 r1, r0, r5 str8 r3, r0, r5 addi 1, r1 bcc no_adjust ;we've hit the end of the upper data bank, adjust it and reset r1 to point to begining of bank addi 1, db ldim 0, r1 ldimh $80, r1 no_adjust addi 1, r3 addi -1, r4 bne copy_loop ;r4 = 320 * 102 ldim $80, r4 ldimh $7F, r4 ;point lower bank at second half of frame buffer ldimh $E1, db ;reset framebuffer pointer ldim 0, r3 copy_loop2: ld8 r1, r0, r5 str8 r3, r0, r5 addi 1, r1 bcc no_adjust2 ;we've hit the end of the upper data bank, adjust it and reset r1 to point to begining of bank addi 1, db ldim 0, r1 ldimh $80, r1 no_adjust2 addi 1, r3 addi -1, r4 bne copy_loop2 ;enable display/set mode/flip buffer ldim $A5, r5 ldimh $C4, r5 outi $D, r5 forever: bra forever image: incbin fish.raw