-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTODO
More file actions
60 lines (48 loc) · 1.93 KB
/
Copy pathTODO
File metadata and controls
60 lines (48 loc) · 1.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
vixen:
ideas for instructions:
NEG r_dst, r_src - r_dst = -r_src
MVL r_dst, r_src - r_dst = r_src & 0x00ff
LDW/STW r_dst, [r_src, #off] - offset is doubled giving 0..62 reach, in two byte intervals
LDB/STB r_dst, [r_src, #off] - offset is not doubled, giving 0..31 reach
MOV r_dst, r_src - set N,Z flags
SWI #num8 - software interrupt - we need a shadow link register at least
LSL/LSR/ASR r_dst, #0 - can be stolen
many instructions with r_dst=R15 can be stolen - gets us around 24*16 = 384 encodings
video:
sprites
1 - implement BRAM based line-buffer for video output
2 - use a double buffer line-buffer
3 - alpha blend a square of fixed colour and location into line buffer
4 - alpha blend a square with programmable colour and location
5 - alpha blend a pixel array (i.e. sprite) as above
6 - alpha blend sprite with palette lookup
7 - ditto for multiple sprites
clock:
Right now we're running everything off the ECP5's external 25MHz clock.
Should try using the PLL to generate a faster internal clock, just as
we're already doing for the video.
asm.pl:
* Implement textual macros
* Where could they appear?
* Easiest: anywhere an instruction can.
* Pure textual substitution (with args)
* Could just fall back on cpp preprocessor.
* Example:
macro add3(x, y, z)
mov x, y
add x, z
endmacro
...
add3 r1, r2, r3
video code:
reverse pattern
apply pattern differently for stretched modes?
fast mode for horiz/vert lines
provide:
option to draw last point
point
fill rect
floating point:
build test suite
remaining required operations, including:
fp mini interpreter?