view bgcolor.s16 @ 36:5683d9ba9acc

Fix call instruction for the case in which A reg == DST reg
author Michael Pavone <pavone@retrodev.com>
date Sun, 03 Apr 2016 21:27:03 -0700
parents cc885122e9e3
children 6e7bfe83d2b0
line wrap: on
line source

	
	;r0 = VDP address
	;r1 = current color
	;r2 = color increment
	;r3 = target line
	;r4 = screen bottom
	;r5 = scratch
	;r6 = right edge
	;r7 = counter
	;r8 = secondary counter
	ldim 248, r4
	ldimh 0, r4
	;320 == $140
	ldim $40, r6
	ldimh 1, r6
top
	ldim 0, r0
	ldimh $FF, r0
	ldim 0, r1
	ldim 1, r2
	ldim 8, r3
	ldim 16, r7
	ldim 0, r8
	
linestart
	outi 14, r0
waitline
	ini $C, r5
	cmp r5, r3
	bne waitline
	
waithblank
	ini $D, r5
	cmp r5, r6
	bgr waithblank
	
	outi 15, r1
	add r2, r1, r1
	addi 2, r3
	
	addi -1, r7
	bne normal
	ldim 16, r7
	ldim 0, r1
	
	addi 1, r8
	cmpi 3, r8
	beq cyan
	cmpi 5, r8
	beq magenta
	cmpi 6, r8
	beq grey
	;TODO: replace with lsli once it works in the assembler
	add r2, r2, r2
	add r2, r2, r2
	add r2, r2, r2
	add r2, r2, r2
	
	
normal
	cmp r3, r4
	bcs top
	bra linestart
	
cyan
	ldim $11, r2
	bra normal
magenta
	ldim $01, r2
	ldimh $01, r2
	bra normal
grey
	ldim $11, r2
	ldimh $01, r2
	bra normal