Líneas de interrupción de la 80885A

La 8085A tiene 5 entradas por medio de las cuales los dispositivos externos pueden «solicitarle interrupciones» al procesamiento. Estas entradas son:

INTR

Ordena a la CPU a realizar un ciclo Fetch «especial» para obtener el código de una instrucción (RST o CALL) que envía un periférico por el Bus de Datos. La 8085A tiene un registro (flip-flop INTE) que controla las solicitudes de interrupción que recibe por esta línea, acepta o no las solicitudes. Esta línea es «mascarable».

TRAP

Ordena a la CPU guardar el contenido del Contador del Programa en el área Stack y a cargar el Contador del Programa con la dirección 0024H para continuar a partir de esa dirección el procesamiento de la CPU. La línea TRAP genera solicitudes de interrupción «no mascarables», es decir, no hay máscara o bandera (flip-flop) que lo controle, no se puede deshabilitar.

RST 5.5

Ordena a la CPU a guardar el contenido del Contador del Programa en el área de Stack y cargar el Contador del Programa con la dirección 002CH para continuar a partir de esa dirección el procesamiento de la CPU. La 8085A tiene una máscara que controla las solicitudes de interrupción que se reciben por esta línea, acepta o no las solicitudes. Esta línea es «mascarable».

RST 6.5

Igual que la línea RST 5.5 pero carga el Contador del Programa con la dirección 0034H.

RST 7.5

Igual que la línea RST 5.5 pero carga el Contador del Programa con la dirección 0003CH.

La 8085A cuenta con un flip-flop interno denominado «Habilitar Interrupciones» flip-flop INTE (Interrupt Enable), que controla la aceptación de las solicitudes de interrupción de la línea INTR y las tres líneas RST. Cuando el flip-flop INTE tiene nivel 1 permite las solicitudes en cualquiera de las cuatro líneas mascarables y no las acepta cuando tienen nivel 0.

El estado del flip-flop INTE lo controla el programador por medio de las instrucciones EI (Enable Interrupt) y DI (Disable Interrpt). La instrucción EI «pone» el flip-flop INTE permitiendo que la 8085A acepte las solicitudes de interrupción por las cuatro líneas mascarables, y la instrucción DI «limpia» el flip-flop INTE permitiendo que la 8085A acepte las solicitudes de interrupción por las cuatro líneas mascarables.

Cuando la 8085A «acepta» una solicitud de interrupción externa su lógica interna «limpia» en forma automática el flip-flop INTE, con lo que se retira el permiso de más solicitudes de interrupción «mascarables» hasta que se ejecute otra vez la instrucción EI. Al activarse la línea RESET IN también se limpia el flip-flop INTE. En otras palabras podemos decir que existe solo una forma de permitir interrupciones, ejecutando la instrucción EI y tres formas de suspender al permiso de interrupciones, ejecutando la instrucción DI, cuando la 8085A «acepta» una solicitud y al activarse la línea RESET IN de la 8085A.

La 8085A tiene dos registros: a) El Estado de las Máscaras de Interrupción (EMI), el cual se lee con la instrucción RIM y b) El registro Máscara de Interrupción (I), el cual se carga con la instrucción SIM.

Estos registros se utilizan para el control de las máscaras de las tres líneas RST. Las solicitudes en las tres líneas RST causan la ejecución de una instrucción RST (salvando el contenido del Contador del Programa y cargándolo con una dirección) siempre y cuando estén habilitadas las interrupciones (flip-flop INTE = 1) y no tengan puestas sus máscaras en el registro de «Máscaras de Interrupción».

Las prioridades de las líneas de interrupción de mayor a menor son:

1) TRAP,
2) RST 7.5,
3) RST 6.5,
4) RST 5.5
5) INTER

Las interrupciones están arregladas de tal forma que la 8085A acepta la solicitud de interrupción de la línea de mayor prioridad cuando hay más de una solicitud. Este esquema no toma en cuenta la prioridad de la línea que está siendo atendida. Una solicitud en la línea RST 5.5 puede interrumpir a una rutina de la línea RST 7.5 si el flip flop INTE = 1.

Fuente: Apuntes de Arquitectura de computadoras de la FCA de la UNAM