rainbow
A program of Targets.
main.ngp
modules { "rainbow.asm" }
container xex
rainbow.asm
COLBK = $D01A
COLPF2 = $D018
WSYNC = $D40A
VCOUNT = $D40B
.proc entry
@top lda VCOUNT
jne @top
ldx #0
@line sta WSYNC
stx COLBK
stx COLPF2
inx
cpx #240
jcc @line
jmp @top
.endp
load.asm nga.load
ngaLoadPtr .ztemp 2
.macro ngaLoadRead
ldy #0
lda (ngaLoadPtr),y
inc ngaLoadPtr
bne @same
inc ngaLoadPtr+1
@same
.endm
.export ngaUnpackFrom, ngaUnpackTo
.section root
ngaUnpackFrom .res 2
ngaUnpackTo .res 2
.ends
.export ngaUnder, ngaUnderTable, ngaUnderPutBack
.section root
ngaUnderTable .res 2
.ends
.section root
ngaUnderPutBack .res 1
.ends
ngaUnderAt .ztemp 2
ngaUnderFrom .ztemp 2
ngaUnderTo .ztemp 2
ngaUnderLeft .ztemp 2
ngaUnderCount .ztemp 1
ngaUnderRoms .ztemp 1
.proc ngaUnder, root
nga.mask
lda #0
nga.select
lda ngaUnderTable
sta ngaUnderAt
lda ngaUnderTable+1
sta ngaUnderAt+1
ldy #0
lda (ngaUnderAt),y
sta ngaUnderCount
iny
lda (ngaUnderAt),y
sta ngaUnderRoms
ldx #2
piece jsr take
sta ngaUnderFrom
jsr take
sta ngaUnderFrom+1
jsr take
sta ngaUnderTo
jsr take
sta ngaUnderTo+1
jsr take
sta ngaUnderLeft
jsr take
sta ngaUnderLeft+1
ldy #0
move lda ngaUnderLeft
ora ngaUnderLeft+1
beq moved
lda (ngaUnderFrom),y
sta (ngaUnderTo),y
inc ngaUnderFrom
bne from
inc ngaUnderFrom+1
from inc ngaUnderTo
bne to
inc ngaUnderTo+1
to lda ngaUnderLeft
bne left
dec ngaUnderLeft+1
left dec ngaUnderLeft
jmp move
moved dec ngaUnderCount
bne piece
lda ngaUnderRoms
nga.select
nga.unmask
rts
take txa
tay
lda (ngaUnderAt),y
inx
rts
.endp
Memory map
- (implicit)0 zero page, 24 bytes
| Address | Bytes | Section | Module | Kind | Phases | Waits |
| $2000–$2017 | 24 | entry | rainbow | proc | 0 | |
The xex
36 bytes, 2 segments, 0 unaccounted.
$2000–$2017 24 bytes at 2
$02E0–$02E1 2 bytes at 30