[Return to Main Page]

Identifying 6522 Internal Interrupt Sources from 6502 Applications
[Up to Source Code Repository]

Identifying One of 7 Possible Internal Interrupts for the 6522

7 | 6 | 5 | 4 | 3 | 2 | 1 | 0

IRQ(R) EN(R) | T1 | T2 | CB1 | CB2 | SR | CA1 | CA2

6522 Interrupt Flag Enable Register (IFR/IER)

Referring to the above figure, it can be seen that seven possible conditions may set an internal interupt in the IFR register of the 6522: T1, T2, CB1, CB2, RT, CA1, and CA2. If all of the internal resources of the 6522 are used simultaneously, as is often the case, then all possibilities should be checked. A simple program which will identify one out of 7 interrupts appears below:

    ONEOF7    ASL A
              BMI TIMER1
              ASL A
              BMI TIMER2
              ASL A
              ...

The program checks successively bit 6, bit 5, bit 4, etc., by simply shifting the contents of the accumulator left by one bit position every time. It should be noted that the order in which the shifts occur establish a priority of the interrupts within the device. Using the program as shown above, Timer 1 will have the highest priority, then Timer 2, etc. The user might want to asign different priorities to the interrupts by testing the bits in a different order.

Last page update: October 17, 2000.