view bgcolor.s16 @ 43:6e7bfe83d2b0

Changed the design to vastly simplify the video hardware and support a 23-bit address space on the CPU
author Michael Pavone <pavone@retrodev.com>
date Sat, 27 Aug 2016 22:38:31 -0700
parents cc885122e9e3
children 8e39a877c651
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 1, r0
	ldim 240, r4
	ldimh 0, r4
	;320 == $140
	ldim $40, r6
	ldimh 1, r6
top
	ldim 0, r1
	ldim 1, r2
	ldim 5, r3
	ldimh 1, r3
	ldim 16, r7
	ldim 0, r8
	
waitfirst
	ini $C, r5
	cmp r5, r3
	bne waitfirst
	ldim -1, r3
	bra waithblank
	
linestart
waitline
	ini $C, r5
	cmp r5, r3
	bne waitline
	
waithblank
	ini $D, r5
	cmp r5, r6
	bgr waithblank
	
	outi 14, r0
	outi 14, 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