Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
hardware:copper_programming_model [2010/03/06 10:45]
gilgamesh copper instructions
hardware:copper_programming_model [2010/03/09 14:53] (current)
gilgamesh
Line 1: Line 1:
-===== Programming Copper =====+====== Programming Copper =====
 +Writing to one of the two registers ''COPJMP//n//'' (//n// = 1,2) causes a strobe and forces the copper to start operation and load the copper list beginning at the address in ''COPLC//n//''. The commands in the copper list, that is the sequence of copper commands in chipmem, is executed one by one. The Copper is restarted at each vertical blanking, forcing it to reload the command ''COPLC//n//'' points to.
  
-==== Copper Lists ====+Copper can call the CPU's attention by filing an interrupt request in ''INTREQ''. It can also move data into ''COPLC//n//'' to form a loop. To stop, Copper can either wait for the impossible, or turn its own access to DMA off. 
 + 
 +===== Copper and Blitter ===== 
 + 
 +The ''CDANG'' bit in ''COPCON'' permits access to 1 the register address space between $40 and $7, including Blitter's registers. 
 + 
 +^15^14^13^12^11^10^09^08^07^06^05^04^03^02^01^00^ ^15^14^13^12^11^10^09^08^07^06^05^04^03^02^01^  00  ^ 
 +| ||||||||||||||||::: | |||||||||||||||  cdang| 
 + 
 +===== Copper Lists =====
 Copper lists can consist of the following instructions: Copper lists can consist of the following instructions:
  
-=== WAIT === +==== WAIT ==== 
-(2 word) waits until video beam counter is greater or equal the argument+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. 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^09^08^07^06^05^04^03^02^01^00^ ^15^14^13^12^11^10^09^08^07^06^05^04^03^02^01^00^ 
-|  VP  ||||||||  HP  |||||||1|+|  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 blanking 
 +  * ''HP'' horizontal position 0,...,112: 4 or 8 lines are aggregated   
 +  * ''bfd'' blitter finished disable bit: if 0 the Copper will wait until Blitter has set blitter finished flag 
 +  * ''VE'' vertical compare enable: for each 0, the comparison with the according bit in VP is always true 
 +  * ''HE'' horizontal compare enable: for each 0, the comparison with the according bit in HP is always true
  
-^15^14^13^12^11^10^9^8^7^6^5^4^3^2^1^0+==== MOVE ==== 
-|bfd|  VE  |||||||  HE  |||||||0|+moves data word into secified data register 
 +^15^14^13^12^11^10^09^08^07^06^05^04^03^02^01^00^ ^15^14^13^12^11^10^09^08^07^06^05^04^03^02^01^00
 +|0|0|0|0|0|0|0|0|  DA  |||||| |0|::: | |  data  ||||||||||||||||
  
-=== MOVE === +  * ''DA'': the destination register's address 
- (2 word) moves data word into secified data register +  * ''data'': one word of data to be written to the destination register
-^15^14^13^12^11^10^9^8^7^6^5^4^3^2^1^0^ +
-|  00000000  ||||||||  DA  |||||||0|+
  
-^15^14^13^12^11^10^9^8^7^6^5^4^3^2^1^0^ +==== SKIP ==== 
-||  data  ||||||||||||||||+skip next instruction if video beam counter is greater or equal the argument
  
-=== SKIP === +^15^14^13^12^11^10^09^08^07^06^05^04^03^02^01^00^ ^15^14^13^12^11^10^09^08^07^06^05^04^03^02^01^00^ 
- (2 word) skip next instruction if video beam counter is greater or equal the argument+|  VP  ||||||||  HP  |||||||1|::: |bfd|  VE  |||||||  HE  |||||||0|
  
-^15^14^13^12^11^10^9^8^7^6^5^4^3^2^1^0^ +(see ''WAIT'' for reference)
-|  VP  ||||||||  HP  |||||||1|+
  
-^15^14^13^12^11^10^9^8^7^6^5^4^3^2^1^0^ +===== Copper's registers ===== 
-|bfd|  VE  |||||||  HE  |||||||0|+ COPCON  02E  |  word  | 
 + COPJMP1   088   word  | 
 + COPJMP2  |  08A   word  | 
 + COP1LC   080   2 words  | 
 + COP2LC  |  080  |  2 words  |
  
  
hardware/copper_programming_model.1267868746.txt.gz · Last modified: 2010/03/06 10:45 by gilgamesh
Back to top
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0