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
Jump to: navigation, search
(bullet points on signature bytes; more info)
(clarify mostly interrupt flag)
Line 39: Line 39:
* Signature bytes of 80h to FFh are reserved for future microprocessors by the [https://www.westerndesigncenter.com/ Western Design Center]<sup>[3]</sup>
* Signature bytes of 80h to FFh are reserved for future microprocessors by the [https://www.westerndesigncenter.com/ Western Design Center]<sup>[3]</sup>


The state of the [[interrupt disable flag]] has no effect on the behavior of COP.
The state of the [[interrupt disable flag]] has no effect on the behavior of COP although it will be set after COP runs.


COP triggers a software interrupt and control is routed to the COP handler, whose address is stored in the COP vector at $FFF4.  COP could be used to communicate with a floating point coprocessor, for example.
COP triggers a software interrupt and control is routed to the COP handler, whose address is stored in the COP vector at $FFF4.  Some examples of the kinds of microprocessors COP could be used to communicate with include:
* floating point
* graphics


The [[PBR]] is cleared, but in native mode its previous value is pushed to the [[stack]].
The [[PBR]] is cleared, but in native mode its previous value is pushed to the [[stack]].

Revision as of 19:53, 9 August 2024

Basic Info
Addressing Mode Opcode Length Speed
Stack (Interrupt) 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 00h to 7Fh can be programmer-defined
  • Signature bytes of 80h to FFh are reserved for future microprocessors by the Western Design Center[3]

The state of the interrupt disable flag has no effect on the behavior of COP although it will be set after COP runs.

COP triggers a software interrupt and control is routed to the COP handler, whose address is stored in the COP vector at $FFF4. Some examples of the kinds of microprocessors COP could be used to communicate with include:

  • floating point
  • graphics

The PBR is cleared, but in native mode its previous value is pushed to the stack.

Syntax

COP sig
Cycle Skipped

See Also

External Links

  1. Eyes & Lichty, page 447 on COP
  2. Labiak, page 135 on COP
  3. section 7.15 of 65c816 datasheet
  4. snes9x implementation of COP: https://github.com/snes9xgit/snes9x/blob/master/cpuops.cpp#L2738
  5. https://ersanio.gitbook.io/assembly-for-the-snes/deep-dives/misc
  6. https://undisbeliever.net/snesdev/65816-opcodes.html#software-interrupts