view vint.s16 @ 26:083347ccd508

Implemented vblank interrupts and fixed a bug in exception vector address calculation
author Michael Pavone <pavone@retrodev.com>
date Fri, 01 Apr 2016 21:34:38 -0700
parents
children 03177ff78094
line wrap: on
line source

	ldim vectors, r0
	setvbr r0
	;current color value
	ldim 0, r0
	;color increment
	ldim $11, r3
	ldimh $1, r3
	;color max
	ldim $FF, r5
	ldimh $F, r5
	;counter
	ldim 1, r4
	;Palette RAM address
	ldim 0, r1
	ldimh $FF, r1
	;enable interrupt
	ori 2, sr
	;enable display
	ldim 0, r2
	ldimh $80, r2
	outi $D, r2
wait
	bra wait
	;shouldn't get here, disable display so it's clear something broke
	ldimh $0, r2
	outi $D, r2
	bra wait

vectors:
	dc.w 0
	dc.w vint_handler
	
vint_handler
	addi -1, r4
	bne done
	outi $E, r1
	outi $F, r0
	cmp r0, r5
	beq down
resume
	add r3, r0, r0
	beq up
	ldim 5, r4
done
	reti r13
down
	ldim $EF, r3
	ldimh $FE, r3
	bra resume
up
	ldim $11, r3
	ldimh $1, r3
	ldim 5, r4
	reti r13