Mercurial > repos > simple16
comparison 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 |
comparison
equal
deleted
inserted
replaced
25:fb14515266f4 | 26:083347ccd508 |
---|---|
1 ldim vectors, r0 | |
2 setvbr r0 | |
3 ;current color value | |
4 ldim 0, r0 | |
5 ;color increment | |
6 ldim $11, r3 | |
7 ldimh $1, r3 | |
8 ;color max | |
9 ldim $FF, r5 | |
10 ldimh $F, r5 | |
11 ;counter | |
12 ldim 1, r4 | |
13 ;Palette RAM address | |
14 ldim 0, r1 | |
15 ldimh $FF, r1 | |
16 ;enable interrupt | |
17 ori 2, sr | |
18 ;enable display | |
19 ldim 0, r2 | |
20 ldimh $80, r2 | |
21 outi $D, r2 | |
22 wait | |
23 bra wait | |
24 ;shouldn't get here, disable display so it's clear something broke | |
25 ldimh $0, r2 | |
26 outi $D, r2 | |
27 bra wait | |
28 | |
29 vectors: | |
30 dc.w 0 | |
31 dc.w vint_handler | |
32 | |
33 vint_handler | |
34 addi -1, r4 | |
35 bne done | |
36 outi $E, r1 | |
37 outi $F, r0 | |
38 cmp r0, r5 | |
39 beq down | |
40 resume | |
41 add r3, r0, r0 | |
42 beq up | |
43 ldim 5, r4 | |
44 done | |
45 reti r13 | |
46 down | |
47 ldim $EF, r3 | |
48 ldimh $FE, r3 | |
49 bra resume | |
50 up | |
51 ldim $11, r3 | |
52 ldimh $1, r3 | |
53 ldim 5, r4 | |
54 reti r13 | |
55 |