Amiga Interrupt Signals

Summary

Information extracted from Amiga System Programmers Guide:

https://archive.org/details/Amiga_System_Programmers_Guide_1988_Abacus

The interrupt lines: INT2, INT3, INT6 and IPLO, IPL1, IPL2


Paula receives instructions through the three INT lines to create an interrupt on the appropriate level. The INT2 line is normally the one connected to the CIA-A 8250. This line is also connected to the expansion port and the serial interface. If it is low, Paula creates an interrupt on level 2 provided that an interrupt at this level is allowed. The INT3 line is connected to the corresponding output from Agnus and the INT6 line to CIA-B and the expansion port All other interrupts occur within the I/O components in Paula.


The IPL0-IPL2 lines (Interrupt Pending Level of the 68000, see Section 1.2.1) are connected directly to the corresponding processor lines. Paula uses these to create a processor interrupt at a given level.

The interrupt inputs: IPLO, IPL1, IPL2


The signals at the three interrupt inputs (IPL=Internipt Pending Level) are interpreted by the 68000 as a 3-bit binary number. The 68000 can therefore distinguish different interrupt signals, called interrupt levels, whereby 0 means that no interrupt is present, while 7 signals an inter rupt of the highest priority. Each of the seven interrupt levels has its own interrupt vector which contains the address of the routine executed when that interrupt occurs.


If an interrupt of the corresponding level is allowed, the processor places as 1 on all FCx lines, signaling that it recognizes the interrupt and that it is waiting for confirmation on the side of the interrupt. This can be done with either VPA or DTACK. If the interrupt is confirmed with VPA, an autovector interrupt is performed. The processor branches to the address it finds in the vector assigned to the given interrupt level. This means that it can jump to seven different addresses (level indicates that no interrupt is present).


If there are only seven interrupt sources in the system, then the software doesn't have to try to figure out which device caused given interrupt You simply assign an interrupt level to each interrupt source and the processor jumps to the appropriate routine. The Amiga only uses these autovector interrupts.


More options for hardware recognition of various interrupt sources are offered by the class of non-autovector interrupts. Since these are not used in the Amiga, we will not discuss them any further here. We'll only say that for on-autovector interrupts the interrupt is confirmed with DTACK and the component which generated the interrupt can place an interrupt vector on the data bus which then selects from up to 192 different interrupt vectors.

Note: The "serial interface" reference is not correct for all Amiga models.

To help identify and locate the interrupt signals, use the schematics at:

https://www.amigawiki.org/doku.php?id=en:service:schematics

and board layouts at:

https://www.amigapcb.org/

Amiga Interrupt Levels

Please refer to the following link for more details:

https://wiki.amigaos.net/wiki/Exec_Interrupts

Here is a summary table of the Amiga Interrupt Levels:

A500 rev 6A - Interrupt Signals

This is a logical representation of the interrupt signal traces on an Amiga A500 rev 6A:

A500 rev 8A - Interrupt Signals

This is a logical representation of the interrupt signal traces on an Amiga A500 rev 8A:

(The only difference from rev 6A, is the additional _INT2 signal going to CN15, and dedicated pullup resistors)

A600 rev 2B - Interrupt Signals

This is a logical representation of the interrupt signal traces on an Amiga A600 rev 2B:

A1200 rev 2B - Interrupt Signals

This is a logical representation of the interrupt signal traces on an Amiga A1200 rev 2B: