Mercurial > repos > simple16
diff 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 diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vint.s16 Fri Apr 01 21:34:38 2016 -0700 @@ -0,0 +1,55 @@ + 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 + \ No newline at end of file