Changes

Arnold V Specs Revised

876 bytes added, 16:53, 9 July 2017
/* Interrupt service (Vectored interrupts) */
Non vectored software must write a "1" to bit D0 of the IVR, or leave it in it's reset state. Interrupt service software must examine bit D7 of the DCSR first, followed by bits D4-D6 (in any sequence) to identify the interrupt source. DMA interrupts must be acknowledged by writing a "1" to the relevant DCSR bit.
 
NOTE: Vectored interrupts are bugged. When IM 2 is set, the vector for the raster interrupt changes between 6 and 4. It is 6 when the instruction that was interrupted doesn't perform a memory read or write, 4 if it does. Multi-byte opcodes are generally an opcode read, followed by a memory read for the remaining opcode bytes. So this also qualifies. This is true regardless of whether DMA is active, or PRI interrupts are used or not.
 
NOTE: It is being confirmed, but if a DMA interrupt occurs at the same time as a raster interrupt, the correct vector is always used. If a DMA interrupt is triggered, it appears the correct vector is used. It is only when a raster interrupt occurs and a DMA interrupt is not waiting.
 
Advice, if you use IM2, set all vector functions to the same function. Do not use auto-clear and handle it all in one function as if you had used IM 1.
===Enhanced ROM cartridge support===
2,562
edits