This is an old revision of the document!
Programming Copper
Copper Lists
Copper lists can consist of the following instructions:
WAIT
(2 word) waits until video beam counter is greater or equal the argument During WAIT the memory bus will not be accessed, freeing it for different tasks. The bus is accessed at uneven memory cycles.
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
VP | HP | 1 | bfd | VE | HE | 0 |
VP
vertical position 0,…,255: since there are 262 beam positions in NTSC, 0,…,6 refer to the last 7 lines before vertical blankingHP
horizontal position 0,…,112: 4 or 8 lines are aggregatedbfd
blitter finished disable bit: if 0 the Copper will wait until Blitter has set blitter finished flagVE
vertical compare enable: for each 0, the comparison with the according bit in VP is always trueHE
horizontal compare enable: for each 0, the comparison with the according bit in HP is always true
MOVE
(2 word) moves data word into secified data register
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | DA | 0 | data |
DA
: the destination register's addressdata
: one word of data to be written to the destination register
SKIP
(2 word) skip next instruction if video beam counter is greater or equal the argument
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
VP | HP | 1 | bfd | VE | HE | 0 |
(see WAIT
for reference)