Imaginate el siguiente escenario:
- <algo> ejecutando
- Usuario presiona ESC
-> El manejador de interrupciones cambia su estado interno porque luego va a esperar un número del 1 al 3.
- El usuario presiona 2
-> El manejador guarda la dirección donde fue interrumpido. (con la instrucción padr())
-> Salta a RUTINA_2 para ejecutar esa rutina y termina.
- RUTINA_2 ejecutando
- El usuario presiona ESC
-> El manejador salta a la dirección previamente guardada y termina
- <algo> ejecutando
Ese sería el flujo principal de tu programa.
Después tenes que mirar los flujos alternativos.