diff bgcolor.s16 @ 14:769120da2c1f

Make bgcolor demo fancier
author Michael Pavone <pavone@retrodev.com>
date Sun, 27 Mar 2016 21:09:54 -0700
parents 04d8efe7a1f0
children cc885122e9e3
line wrap: on
line diff
--- a/bgcolor.s16	Sun Mar 27 21:08:42 2016 -0700
+++ b/bgcolor.s16	Sun Mar 27 21:09:54 2016 -0700
@@ -1,7 +1,54 @@
+	
+	;r0 = VDP address
+	;r1 = current color
+	;r2 = color increment
+	;r3 = target line
+	;r4 = screen bottom
+	;r5 = scratch
+	;r6 = right edge
+	;r7 = 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
+	
+linestart
 	outi 14, r0
-	ldim $F, r0
-	outi 15, r0
-done
-	bra done
+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 4, r3
+	
+	addi -1, r7
+	bne normal
+	ldim 16, r7
+	;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
+	ldim 0, r1
+	
+normal
+	
+	cmp r3, r4
+	beq top
+	bra linestart
+