COP 命令 (Coprocessor Empowerment)
現在の処理を中断し、コプロセッサによる処理を実行します。

COPオーバーロード
オペコード 構文 アドレッシングモード バイト数 命令サイクル
02
COP #Imm.
Stack/ Interrupt
2
7
1

1. エミュレーションモード時は1サイクル追加

フラグ変化
----dI---

d: ソフトウェア割込開始時に強制的にクリアされる
I: ソフトウェア割込開始時に強制的にセットされる

解説
COP命令は、現在実行中の処理を中断し、コプロセッサによるソフトウェア割込を実行します。
ソフトウェア割込開始処理の内容はネイティブモードとエミュレーションモードで異なります。
COP命令のオペランドには、8ビットの定数を指定することでシグネチャとすることができます。これは実際の処理では使用されませんが、デバッガ上でのトレースに役立ちます。

・ネイティブモード
1. プログラムバンクレジスタをスタックにプッシュします。
2. プログラムカウンタを2インクリメントし、スタックにプッシュします。
3. ステータスレジスタをスタックにプッシュします。
4. 割込禁止フラグをセットします。
5. プログラムバンクレジスタをゼロクリアし、プログラムカウンタをCOPベクタ($FFF4)より取得し、割込処理を実行します。
6. COPの処理内容の完了後にデシマルフラグをクリアします

・エミュレーションモード
1. プログラムカウンタを2インクリメントし、スタックにプッシュします。
2. ステータスレジスタをスタックにプッシュします。
3. 割込禁止フラグをセットします
4. プログラムバンクレジスタをゼロクリアし、プログラムカウンタをCOPベクタ($FFF4)より取得し、割込処理を実行します。
5. デシマルフラグをクリアします
参照