(1) 割り込み関連
割り込みといっても、Execute()を実行中に割り込めるわけではないのですが、インターバルタイマ割り込みの実装などには使えます。
Execute()を実行中に別スレッドから割り込みをリクエストすることができます。
マスカブル割り込み
void INT(int data_bus);
INT端子がアクティブになったことをエミュレートします。
割り込みアクノリッジサイクルでデータバスに乗せる値をdata_busで指定します。
モード0では、この値は命令になりますが、RST命令のみサポートしています。
ノンマスカブル割り込み
void NMI();
NMI端子がアクティブになったことをエミュレートします。
割り込みからの復帰
void RETI();
RETI命令が実行されたとき呼ばれるメソッドで、割り込みルーチンの終了を知りたい場合、派生クラスでオーバーライドします。
(2) リセット
void Reset();
Z80CPUをリセットします。
なお、インスタンス生成時には自動的に呼ばれます。
(3) 拡張機能
ブレークポイント処理のために、RST命令を実行したときに呼ばれるメソッドを用意しています。
bool Extender(uint16_t pc);
16ビット長のアドレスpcを呼び出すRST命令を実行しようとしたとき呼ばれます。
本来のRST命令は実行しない場合はtrue、そうでない場合はfalseを返します。