68k interrupts: Difference between revisions
mNo edit summary |
mNo edit summary |
||
(6 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
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 1: Acknowledge [[timer interrupt]] | |||
*bit 0: Acknowledge reset interrupt (only occurs on cold boot ?) | |||
Multiple bits can be set: | |||
<syntaxhighlight> | <syntaxhighlight> | ||
move #$0007,REG_IRQACK ; Acknowledge all interrupts | move #$0007,REG_IRQACK ; Acknowledge all interrupts | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Bits 8~10 of the SR register | Bits 8~10 of the [[68k]]'s SR register is used to set the minimum priority: | ||
<syntaxhighlight> | <syntaxhighlight> | ||
move #$2000,SR ; | move #$2000,SR ; Accept all interrupts (+Supervisor mode) | ||
move #$2700,SR ; | move #$2700,SR ; Ignore all interrupts (+Supervisor mode) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== | Note that the 68k's interrupt level setting is different from the interrupt configuration bits in {{Reg|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 | 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 | |||
[[Category:Base system]] | [[Category:Base system]] | ||
[[Category:Code]] | [[Category:Code]] |
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