Lors de la reconnaissance d'interruption, une copie interne du SR est effectuée, le processeur passe en mode superviseur le masque d'interruption est mis au niveau de l'interruption prise en compte (le processeur ne pourra alors être interrompu que par une interruption de niveau supérieur). Le processeur attend le numéro de vecteur du circuit qui vient de l'interrompre en effectuant une lecture:
- Place les lignes FC2,FC1 et FC0 a 1 1 1
- Place le niveau de l'interruption sur les lignes A3, A2, A1 et les lignes A19, A18, A17, A16 à 1 1 1 1 ($f)
- Active les lignes SIZ0, SIZ1 et R/W\ pour
commencer un cyle de lecture du numero de vecteur d'interruption (sur 1
octet) emit par le peripherique.
- Le peripherique doit placer son numero de vecteur et terminer le cycle en activant le DSACKx\.
Si le peripherique ne peut pas fournir de numéro de vecteur, une logique externe doit activer le signal AVEC\ processeur pour que celui-ci génère en interne un numéro de vecteur: c'est l'auto vectorisation. Sur kit 68332 l'interruption provenant du PTM genere un auto vecteur de niveau 4:
Désignation | Niveau | adresse | Provenance de l'interruption |
auto vecteur de niveau 4 | 4 | VBR + $70 | IRQ PTM 6840 |
Lorsque le numéro de vecteur est obtenu, le processeur sauve
les registres PC et SR sur la pile superviseur (SSP).
La valeur du PC empilée à l'adresse de
l'instruction
qui aurait été exécutée en l'absence
d'interruption.
Le processeur recherche alors dans la table des vecteurs
l'adresse
du programme de traitement de l'interruption et l'exécute.
L'adresse
de début de la table des vecteurs d'interruptions est contenue
dans
le registre VBR (Vecteur Base Register).
Numéro de vecteur | VBR + Offset | Utilisation | |
Déc. | Hexa. | ||
0 | 0 | 000 | Initialisation du SSP après un RESET |
- | 4 | 004 | Initialisation du PC après un RESET |
2 | 8 | 008 | Erreur bus |
3 | 12 | 00C | Erreur d'adresse |
4 | 16 | 010 | Instruction illégale |
5 | 20 | 014 | Division par zéro |
6 | 24 | 018 | Instruction CHK |
7 | 28 | 01C | Instruction TRAPV |
8 | 32 | 020 | Violation de privilège |
9 | 36 | 024 | Trace |
10 | 40 | 028 | Émulateur ligne 1010 |
11 | 44 | 02C | Émulateur ligne 1111 |
12-14 | 48 | 030 | réserve |
15 | 60 | 03C | Interruption non initialisée |
16-23 | 64-95 | 04C-05F | réservé |
24 | 96 | 060 | Interruption parasite |
26 | 100 | 064 | Auto-Vecteur d'interruption Niveau 1 |
26 | 104 | 068 | Auto-Vecteur d'interruption Niveau 2 |
27 | 108 | 06C | Auto-Vecteur d'interruption Niveau 3 |
28 | 112 | 070 | Auto-Vecteur d'interruption Niveau 4 |
29 | 116 | 074 | Auto-Vecteur d'interruption Niveau 5 |
30 | 120 | 078 | Auto-Vecteur d'interruption Niveau 6 |
31 | 124 | 07C | Auto-Vecteur d'interruption Niveau 7 |
32-47 | 128-191 | 080-0BF | Vecteurs d'instruction TRAP |
48-63 | 192-255 | 0C0-0FF | Réservé |
64-255 | 256-1023 | 100-3FF | Vecteurs d'interruption utilisateur |