We've just updated MediaWiki and its underlying software. If anything doesn't look or work quite right, please mention it to us. --RanAS
COP: Difference between revisions
From SnesLab
(snes9x implementation) |
(COP vector) |
||
(18 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{| class="wikitable" style="float:right;clear:right;width:40%" | |||
{| class="wikitable" style="float:right;clear:right;width: | |||
!colspan="8"|Basic Info | !colspan="8"|Basic Info | ||
|+ | |+ | ||
Line 9: | Line 7: | ||
|'''Speed''' | |'''Speed''' | ||
|+ | |+ | ||
| | |[[Stack Addressing|Stack]] | ||
|02 | |02 | ||
|2 bytes | |2 bytes | ||
| | |8 cycles* | ||
|} | |} | ||
{| class="wikitable" style="float:right;clear:right;width:30%" | {| class="wikitable" style="float:right;clear:right;width:30%" | ||
!colspan="9"|Flags | !colspan="9"|Flags Affected | ||
|+ | |+ | ||
|N | |[[N Flag|N]] | ||
|V | |[[V Flag|V]] | ||
|M | |[[M Flag|M]] | ||
|X | |[[X Flag|X]] | ||
|D | |[[D Flag|D]] | ||
|I | |[[I Flag|I]] | ||
|Z | |[[Z Flag|Z]] | ||
|C | |[[C Flag|C]] | ||
|+ | |+ | ||
|. | |. | ||
Line 36: | Line 34: | ||
|. | |. | ||
|} | |} | ||
'''COP''' (Co-Processor) is a [[65c816]] instruction designed to run a co-processor command. The byte following the opcode is called the [[Signature Byte]] and is required by assemblers. Signature bytes of 80h to FFh are reserved by the Western Design Center. The state of the [[interrupt disable flag]] has no effect on the behavior of COP. | |||
COP triggers a software interrupt and control is routed to the COP handler, whose address is stored in the COP vector at $FFF4. | |||
=====Cycle Skipped ===== | |||
* COP takes one fewer cycle in [[emulation mode]] as it doesn't need to push the [[program counter bank register]] to the [[stack]]. | |||
=== See Also === | |||
* [[BRK]] | |||
* [[WDM]] | |||
* [[Enhancement Chips]] | |||
=== External Links === | === External Links === | ||
* [[Eyes & Lichty]] page on COP: https://archive.org/details/0893037893ProgrammingThe65816/page/n473 | * [[Eyes & Lichty]] page 447, on COP: https://archive.org/details/0893037893ProgrammingThe65816/page/n473 | ||
* [[Labiak]] page on COP: https://archive.org/details/Programming_the_65816/page/n145 | * [[Labiak]] page 135 on COP: https://archive.org/details/Programming_the_65816/page/n145 | ||
* snes9x implementation of COP: https://github.com/snes9xgit/snes9x/blob/master/cpuops.cpp#L2738 | * snes9x implementation of COP: https://github.com/snes9xgit/snes9x/blob/master/cpuops.cpp#L2738 | ||
[[Category:ASM]] | [[Category:ASM]] | ||
[[Category:65c816 additions]] | [[Category:65c816 additions]] | ||
[[Category:Two-byte Instructions]] | |||
[[Category:Single Admode Mnemonics]] |
Latest revision as of 15:08, 18 December 2023
Basic Info | |||||||
---|---|---|---|---|---|---|---|
Addressing Mode | Opcode | Length | Speed | ||||
Stack | 02 | 2 bytes | 8 cycles* |
Flags Affected | ||||||||
---|---|---|---|---|---|---|---|---|
N | V | M | X | D | I | Z | C | |
. | . | . | . | 0 | 1 | . | . |
COP (Co-Processor) is a 65c816 instruction designed to run a co-processor command. The byte following the opcode is called the Signature Byte and is required by assemblers. Signature bytes of 80h to FFh are reserved by the Western Design Center. The state of the interrupt disable flag has no effect on the behavior of COP.
COP triggers a software interrupt and control is routed to the COP handler, whose address is stored in the COP vector at $FFF4.
Cycle Skipped
- COP takes one fewer cycle in emulation mode as it doesn't need to push the program counter bank register to the stack.
See Also
External Links
- Eyes & Lichty page 447, on COP: https://archive.org/details/0893037893ProgrammingThe65816/page/n473
- Labiak page 135 on COP: https://archive.org/details/Programming_the_65816/page/n145
- snes9x implementation of COP: https://github.com/snes9xgit/snes9x/blob/master/cpuops.cpp#L2738