68k interrupts: Difference between revisions
m (Changed wording, clarification regarding irq mask) |
mNo edit summary |
||
Line 1: | Line 1: | ||
The cartridge systems use 3 '''auto-vectored''' interrupt levels. The CD systems use | The cartridge systems use 3 '''auto-vectored''' interrupt levels. The CD systems use 6 '''vectored''' interrupts, 3 of which are equivalent to the cartridge system's. | ||
See [[68k vector table]]. | |||
Video-related interrupts must to be acknowledged to re-trigger in the future by writing to the register {{Reg|REG_IRQACK}}. | |||
*bit 2: Acknowledge v-blank interrupt | *bit 2: Acknowledge v-blank interrupt | ||
*bit 1: Acknowledge [[timer interrupt]] | *bit 1: Acknowledge [[timer interrupt]] | ||
*bit 0: Acknowledge reset interrupt | *bit 0: Acknowledge reset interrupt (only occurs on cold boot ?) | ||
Multiple bits can be set: | Multiple bits can be set: | ||
Line 11: | Line 13: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Bits 8~10 of the [[68k]]'s SR register | Bits 8~10 of the [[68k]]'s SR register is used to set the minimum priority: | ||
<syntaxhighlight> | <syntaxhighlight> | ||
move #$2000,SR ; Accept all interrupts (+Supervisor mode) | move #$2000,SR ; Accept all interrupts (+Supervisor mode) | ||
Line 17: | Line 19: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Note that the 68k's interrupt | Note that the 68k's interrupt level setting is different from the interrupt configuration bits in {{Reg|REG_LSPCMODE}}. | ||
=Vertical blank interrupt= | =Vertical blank interrupt= | ||
Line 25: | Line 27: | ||
=[[Timer interrupt]]= | =[[Timer interrupt]]= | ||
The timer interrupt's behavior can be programmed through the [[ | The timer interrupt's behavior can be programmed through the [[LSPC]]'s [[memory mapped registers]]. It is triggered by a 32-bit down counter clocked by the 6MHz pixel clock, and a corresponding reset register. When the counter reaches 0, an interrupt is generated. Intervals can range from 166.7ns ('''would cause an interrupt flood !''') to a little over 11.9 minutes. | ||
It can be used for special video effects such as [[scanline effects]], for example: | It can be used for special video effects such as [[scanline effects]], for example: |
Latest revision as of 23:50, 16 October 2023
The cartridge systems use 3 auto-vectored interrupt levels. The CD systems use 6 vectored interrupts, 3 of which are equivalent to the cartridge system's.
See 68k vector table.
Video-related interrupts must to be acknowledged to re-trigger in the future by writing to the register REG_IRQACK.
- bit 2: Acknowledge v-blank interrupt
- bit 1: Acknowledge timer interrupt
- bit 0: Acknowledge reset interrupt (only occurs on cold boot ?)
Multiple bits can be set:
move #$0007,REG_IRQACK ; Acknowledge all interrupts
Bits 8~10 of the 68k's SR register is used to set the minimum priority:
move #$2000,SR ; Accept all interrupts (+Supervisor mode)
move #$2700,SR ; Ignore all interrupts (+Supervisor mode)
Note that the 68k's interrupt level setting is different from the interrupt configuration bits in REG_LSPCMODE.
Vertical blank interrupt
The v-blank interrupt is almost always used. It occurs when the rendering of a frame is about to start (~60 times per second). See display timing.
Timer interrupt
The timer interrupt's behavior can be programmed through the LSPC's memory mapped registers. It is triggered by a 32-bit down counter clocked by the 6MHz pixel clock, and a corresponding reset register. When the counter reaches 0, an interrupt is generated. Intervals can range from 166.7ns (would cause an interrupt flood !) to a little over 11.9 minutes.
It can be used for special video effects such as scanline effects, for example:
- The interlaced Sammy logo in Viewpoint
- Sengoku 2's intro
- The road in Riding hero
- Neo Turf Masters's ground perspective
- ...
AES/MVS interrupt levels
- Level 1: V-blank
- Level 2: Timer
- Level 3: Pending after reset
CD interrupt levels
The V-blank and Timer levels are swapped compared to the cartridge systems.
- Level 1: Timer
- Level 2: V-blank
- Level 3: Not used ?
- Vector 21: CD host decoder interrupt (data ready)
- Vector 22: CD drive communication start
- Vector 23: Used but not understood