Interrupt

Interrupt Operation

The interrupt vectors are in ROM, so you cannot rewrite the vectors. However, there are vectors located at [0x7FC0 + level*4] which can be written to provide arbitrary handling for the interrupt.

PC-FX interrupts are level-triggered, so unless you clear the interrupt, the PC-FX will hang permanently.

Interrupt level

Interrupt levels correspond to the devices like so:

Interrupt levelDevice
15HuC6273 (Aurora)
14HuC6270-B (7up)
13HuC6272 (KING)
12HuC6270-A (7up)
11Pad
10EX (?)
9Timer
8Reset

I/O Ports

0xE40Interrupt mask (R/W)
0xE80Interrupt priority (R/W)
0xEC0Interrupt priority (R/W)

Register

0xE40   Interrupt mask (Half)

Mask for interrupt levels.

BitsDescription
0Interrupt Mask Level 15
1Interrupt Mask Level 14
2Interrupt Mask Level 13
3Interrupt Mask Level 12
4Interrupt Mask Level 11
5Interrupt Mask Level 10
6Interrupt Mask Level 9
7Interrupt Mask Level 8

0xE80   Interrupt priority (Half)

Specify interrupt priorities for levels 12 ~ 15.

These priority levels correspond to the V810 interrupt levels on (INTV0-INTV3)

BitsDescription
0 ~ 2Interrupt level 15 priority (0 ~ 7)
3 ~ 5Interrupt level 14 priority (0 ~ 7)
6 ~ 8Interrupt level 13 priority (0 ~ 7)
9 ~ 11Interrupt level 12 priority (0 ~ 7)

0xEC0   Interrupt priority (Half)

Specify interrupt priorities for levels 8 ~ 11.

These priority levels correspond to the V810 interrupt levels on (INTV0-INTV3)

BitsDescription
0 ~ 2Interrupt level 11 priority (0 ~ 7)
3 ~ 5Interrupt level 10 priority (0 ~ 7)
6 ~ 8Interrupt level 9 priority (0 ~ 7)
9 ~ 11Interrupt level 8 priority (0 ~ 7)

[TOP]