Interrupt Controller (8259A)
Special Fully Nested Mode
This mode is used only when one or more PICs are cascaded to the
ZT 8809A master PIC. In the cascade mode, if a slave receives a
higher priority interrupt request than one that is in service, it will not
be recognized by the master. This is because the master’s ISR bit is
set to ignore all requests of equal or lower priority. Thus, in this case,
the higher priority slave interrupt will not be serviced until after the
master’s ISR bit is reset by an EOI command. This is most likely
after the completion of the lower priority routine.
For a true fully nested structure within a slave 8259A, the special
fully nested mode should be used. The special fully nested mode is
programmed in the master only at initialization time. In this mode, the
master ignores interrupt requests of lower priority than the set ISR bit
and responds to all requests of equal or higher priority. Thus, if a
slave receives a request with higher priority than the one in service, it
recognizes the request, and the master PIC initiates another interrupt
to the 8088. To receive this higher priority interrupt, the interrupt
service routine must be sure that interrupts are enabled within the
routine.
When exiting the interrupt service routine, the software must check to
determine if another interrupt is pending in the slave before issuing an
EOI command to the master. This is done by resetting the appropriate
slave ISR bit with an EOI to the slave and then reading the slave’s
ISR. If the ISR contains all zeros, there are no other interrupts from
the slave in service, and an EOI command can be sent to the master. If
the ISR does not contain all zeros, an EOI command should not be
sent to the master.
12-25