68k interrupts: Difference between revisions

From NeoGeo Development Wiki
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 1: Line 1:
There are 3 interrupt levels on the AES and MVS, and 4 on the CD hardware.
The cartridge systems use 3 '''auto-vectored''' interrupt levels. The CD systems use 3 more '''vectored''' interrupts.


Interrupts need to be acknowledged by writing to register {{Reg|REG_IRQACK}}.
Interrupts need to be acknowledged by writing to register {{Reg|REG_IRQACK}}.
Line 35: Line 35:
=AES/MVS interrupt levels=
=AES/MVS interrupt levels=


*Vblank: Level 0
*Level 0: Vblank
*Timer: Level 1
*Level 1: Timer
*Pending after cold reset: Level 2
*Level 2: Pending after cold reset


=CD interrupt levels=
=CD interrupt levels=


*VBlank: Level 1 !
The V-blank and Timer levels '''are swapped''' compared to the cartridge systems.
*Timer: Level 0 !
*CDC interrupt: Level 3 !


Level 2 isn't used ?
*Level 0: Timer
*Level 1: Vblank
*Level 2: 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]]

Revision as of 17:01, 30 July 2018

The cartridge systems use 3 auto-vectored interrupt levels. The CD systems use 3 more vectored interrupts.

Interrupts need to be acknowledged by writing to register REG_IRQACK.

  • bit 2: Acknowledge vblank interrupt
  • bit 1: Acknowledge timer interrupt
  • bit 0: Acknowledge cold start interrupt

Multiple bits can be set:

move	#$0007,REG_IRQACK     ; Acknowledge all interrupts

Bits 8~10 of the SR register can be used to mask them.

move	#$2000,SR     ; Enable all interrupts (+Supervisor mode)
move	#$2700,SR     ; Disable all interrupts (+Supervisor mode)

Vertical blank interrupt

The vblank interrupt is almost always used. It occurs when the rendering of a frame finishes (~60 times per second). See display timing.

Timer interrupt

The timer interrupt's behavior can be programmed through the GPU'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 (dangerous interrupt flood) to 11.9 minutes (?).

It can be used for special video effects such as scanline effects, for example:

AES/MVS interrupt levels

  • Level 0: Vblank
  • Level 1: Timer
  • Level 2: Pending after cold reset

CD interrupt levels

The V-blank and Timer levels are swapped compared to the cartridge systems.

  • Level 0: Timer
  • Level 1: Vblank
  • Level 2: Not used ?
  • Vector 21: CD host decoder interrupt (data ready)
  • Vector 22: CD drive communication start
  • Vector 23: Used but not understood