割り込み

割り込みの動作

割り込みベクタは ROM 内にあるので、直接ベクタを書き換える事はできないはず。しかし、割り込みベクタのコール先は [7FC0h + 割り込みレベル * 4] になっているので、メインメモリの [7FC0h + 割り込みレベル * 4] に JR nnnnnnnnh の形で書き込めば、自由な位置に割り込み処理ルーチンを置くことができる。

PC-FX の割り込みはレベルトリガっぽいので、割り込みルーチン内で割り込み要因をクリアしなければ永久に割り込みが発生し続けてハングアップ状態になります。

割り込みレベル

割り込みコントローラに入力される割り込み信号とデバイスの対応は以下の通り。

割り込みレベル割り込み発生チップ
15HuC6273
14HuC6270-B
13HuC6272
12HuC6270-A
11パッド
10不明
9タイマー
8不明

I/Oポートアドレス

E40h割り込みマスク(R/W)
E80h割り込み優先順位(R/W)
EC0h割り込み優先順位(R/W)

レジスタ

E40h 割り込みマスク(Half)

許可する割り込みレベル(0〜15)を 0 に指定します

bit0割り込みレベル 15 のマスク
bit1割り込みレベル 14 のマスク
bit2割り込みレベル 13 のマスク
bit3割り込みレベル 12 のマスク
bit4割り込みレベル 11 のマスク
bit5割り込みレベル 10 のマスク
bit6割り込みレベル 9 のマスク
bit7割り込みレベル 8 のマスク

E80h 割り込み優先順位(Half)

割り込みの優先順位を 0 〜 7 の値で指定する。

優先順位とは、V810 に入力する割り込みレベル(INTV0-INTV3)の事。

bit2-0割り込みレベル 15 の優先順位(0〜7)
bit5-3割り込みレベル 14 の優先順位(0〜7)
bit8-6割り込みレベル 13 の優先順位(0〜7)
bit11-9割り込みレベル 12 の優先順位(0〜7)

EC0h 割り込み優先順位(Half)

割り込みの優先順位を 0 〜 7 の値で指定する。

bit2-0割り込みレベル 11 の優先順位(0〜7)
bit5-3割り込みレベル 10 の優先順位(0〜7)
bit8-6割り込みレベル 9 の優先順位(0〜7)
bit11-9割り込みレベル 8 の優先順位(0〜7)

[TOPへ戻る]