Search   
Home  Print View  

 

Architecture

Branch Content

Interrupts

    A device interrupts the CPU using the interrupt line (INT) located in
    the channel it is connected to.

    All INT signals coming from all channels go to the Interrupt Controller
    circuit. A priority encoder provides a 4-bits code of the interrupting
    device (matching its channel number) and takes care of priorities in case
    of simultaneous request: channels with smaller numbers take priority.

    The interrupt signal is sampled at the end of each instruction cycle,
    just before fetching next instruction's op-code. If active, the interrupt
    is serviced instead  of performing the op-code fetch.
    
    Servicing the interrupt implies the following:

    Registers PC, F and S are pushed to the stack, channel switched to that of
    the interrupting device, and the appropriate interrupt service routine (ISR)
    is called. The sixteen 12-bit addresses of those routines are expected to be
    at the top of the memory space:

        000: ISR0_ADDR
        001: ISR1_ADDR
        ...
        00F: ISR15_ADDR

    That address is loaded into the Program Counter (PC), the ACK signal is
    asserted in the interrupting channel and interrupts are automatically
    disabled to avoid unwanted nested interrupts.

    The next opcode fetch cycle takes place on the corresponding ISR.

    The ISR finishes with a return instruction. That instruction automatica-
    lly pops S, F and PC from the stack, returning control to the interrupted
    program. IRS routines are expected to enable interrupts back before
    returning.

Powered by HelpBooks version 0.86, running at: melissa