Table des matières
Ces
interruptions sont utilisées afin de s'occuper de processus
très court devant avoir lieu en arrière-plan. Ces
également avec ces services qu'au réussit encore
aujourd'hui sous Linux, OS/2, Windows 3.1, 95,
98, NT et 2000,... à provoquer un
mécanisme semblant de multi-tâche. Ces interruptions ne
doivent jamais être appelée directement car c'est le
rôle de l'électronique (les puces tous le tour du CPU,
mieux connus sous le nom de contrôleur) s'occupant de faire
déclencher ces interruptions. Grâce à ces
interruptions, on pourra gérer l'horloge interne, le clavier,
les port série, modem, l'imprimante, les disques durs, les
cartes réseaux et à peu près toutes les
cartes branchés à l'ordinateur.
-
Interruption 08h: (IRQ0) Interruption temporisateur: Cette
interruption est appelée périodiquement à
toutes les 18,2 fois par seconde (c'est la valeur d'origine et peut
donc être modifiable). Elle s'occupe principalement
d'incrémenter un double mot en emplacement mémoire
(0040h:006Ch) en fonction de minuit. Minuit représente
00h00. Et il est donc rendu 18 après une seconde, 36 après
trois seconde et ainsi de suite.
-
Procedure IRQ0(Flags,CS,IP,AX,BX,CX,DX,SI,DI,DS,ES,BP:Word);Interrupt;Begin
ASM
STI
END;
If
MemL[$0040:$6C]=1573040Then
Begin MemL[$0040:$6C]:=0;
Mem[$0040:$70]:=1;
End
Else
Inc(MemL[$0040:$6C]);
Dec(Mem[$0040:$40]);
If
Mem[$0040:$40]=0Then
Begin Mem[$0040:$3F]:=Mem[$0040:$3F]and$F0;
Port[$3F2]:=$0C;
End;
ASM
INT
01Ch CLI
END;
Port[$20]:=$20;
End;
|
-
Interruption 09h: (IRQ1) Interruption clavier: Cette
interruption est utilisée afin de gérer de façon
brut le clavier. Le clavier comporte un processeur Intel
portant l'appellation 8048 (ou 8042 sur l'AT).
Ce processeur surveille le clavier et enregistre si une touche est
enfoncée ou relâchée. Pour que le système
puisse réagir de façon appropriée, il appelle
dans ce cas l'interruption 9 à travers le contrôleur
d'interruption. Cette interruption appelle alors une routine du BIOS
lisant le caractère au clavier et le place dans le tampon
clavier. Mais certaines touches sont redirigés par cette
interruption vers une autre interruption ou on des traitements
particulier; Les Voici:
-
| Ctrl+Break |
Efface le Tampon Clavier, Insère le code 0000h dans le tampon, appelle l'interruption 1Bh et fixe le drapeau à 0040h:0071h. |
| SysReq |
Appelle l'interruption 15h, fonction 85h (AH=85h). |
| Ctrl+NumLock |
Place le système en état d'attente de la prochaine interruption 09h. |
| Ctrl+Alt+Del |
Fait un appelle directe à l'adresse 0FFFFh:00h. |
| Shift+PrtScr |
Appelle l'interruption 05h. |
-
| 01h |
Bouton «Esc» |
| 02h |
Bouton «1 !» |
| 03h |
Bouton «2 @» |
| 04h |
Bouton «3 #» |
| 05h |
Bouton «4 $» |
| 06h |
Bouton «5 %» |
| 07h |
Bouton «6 ^» |
| 08h |
Bouton «7 &» |
| 09h |
Bouton «8 *»» |
| 0Ah |
Bouton «9 (» |
| 0Bh |
Bouton «0 )» |
| 0Ch |
Bouton «- _» |
| 0Dh |
Bouton «= +» |
| 0Eh |
Bouton «Backspace» |
| 0Fh |
Bouton «Tab» |
| 10h |
Bouton «Q» |
| 11h |
Bouton «W» |
| 12h |
Bouton «E» |
| 13h |
Bouton «R» |
| 14h |
Bouton «T» |
| 15h |
Bouton «Y» |
| 16h |
Bouton «U» |
| 17h |
Bouton «I » |
| 18h |
Bouton «O» |
| 19h |
Bouton «P» |
| 1Ah |
Bouton «[ {» |
| 1Bh |
Bouton «] }» |
| 1Ch |
Bouton «Enter» |
| 1Dh |
Bouton «Ctrl» |
| 1Eh |
Bouton «A» |
| 1Fh |
Bouton «S» |
| 20h |
Bouton «D» |
| 21h |
Bouton «F» |
| 22h |
Bouton «G» |
| 23h |
Bouton «H» |
| 24h |
Bouton «J » |
| 25h |
Bouton «K» |
| 26h |
Bouton «L» |
| 27h |
Bouton «; : » |
| 28h |
Bouton «' "» |
| 29h |
Bouton «` ~» |
| 2Ah |
Bouton «Shift» de gauche |
| 2Bh |
Bouton «\» |
| 2Ch |
Bouton «Z» |
| 2Dh |
Bouton «X» |
| 2Eh |
Bouton «C» |
| 2Fh |
Bouton «V» |
| 30h |
Bouton «B» |
| 31h |
Bouton «N» |
| 32h |
Bouton «M» |
| 33h |
Bouton «, <» |
| 34h |
Bouton «. >» |
| 35h |
Bouton «/ ?» |
| 36h |
Bouton «Shift» de droite |
| 37h |
Bouton «*» foncé |
| 38h |
Bouton «Alt» |
| 39h |
La grande barre d'espacement |
| 3Ah |
Bouton «CapsLock» |
| 3Bh |
Bouton «F1» |
| 3Ch |
Bouton «F2» |
| 3Dh |
Bouton «F3» |
| 3Eh |
Bouton «F4» |
| 3Fh |
Bouton «F5» |
| 40h |
Bouton «F6» |
| 41h |
Bouton «F7» |
| 42h |
Bouton «F8» |
| 43h |
Bouton «F9» |
| 44h |
Bouton «F10» |
| 45h |
Bouton «NumLock» |
| 46h |
Bouton «ScrollLock |
| 47h |
Bouton «Home |
| 48h |
Bouton flèche vers le haut |
| 49h |
Bouton Page Up |
| 4Ah |
Bouton «Grey-ow» |
| 4Bh |
Bouton flèche vers la gauche |
| 4Ch |
Bouton «5» sur le bloc numérique |
| 4Dh |
Bouton flèche vers la droite |
| 4Eh |
Bouton «+ (Foncé)» |
| 4Fh |
Bouton «End» |
| 50h |
Bouton flèche vers le bas |
| 51h |
Bouton «Page Down» |
| 52h |
Bouton «Insert» |
| 53h |
Bouton «Delete» |
| 54h |
Bouton «SysRq» |
| 56h |
Bouton de gauche «\» sur les claviers avec au moins 102 touches |
| 57h |
Bouton «F11» |
| 58h |
Bouton «F12» |
| 5Ah |
PA1 |
| 5Bh |
Bouton «F13» ou Windows 9X Left |
| 5Ch |
Bouton «F14» ou Windows 9X Right |
| 5Dh |
Bouton «F15» ou Windows 9X Menu |
| 63h |
Bouton «F16» |
| 64h |
Bouton «F17» |
| 65h |
Bouton «F18 Ex» |
| 66h |
Bouton «F19» |
| 67h |
Bouton «F20» |
| 68h |
Bouton «F21» |
| 69h |
Bouton «F22 ExSel» |
| 6Ah |
Bouton «F23» |
| 6Bh |
Bouton «F24» |
| 6Ch |
--h |
| 6Dh |
Bouton «Erase EOF» |
| 6Fh |
Bouton «Copy/Play» |
| 72h |
Bouton «CrSel» |
| 74h |
Bouton «ExSel» |
| 76h |
Bouton «Clear» |
| 0E0h |
Code préfixe |
| 0E1h |
Code préfixe |
| 0FAh |
Signal ACK |
| 0FEh |
Signal RESEND |
| 0FFh |
Erreur clavier, éventuellement le tampon plein |
Les codes 56h à E1h sont seulement valide pour les claviers ayant aux moins 101/102 touches.
Les codes 5Ah à 76h sont seulement valide pour les claviers ayant aux moins 122 touches.
Cette interruption peut-être masqué en fixant le bit 1 à 1 du port E/S 21h.
Le DR-DOS redirige cette interruption.
-
Interruption 0Ah (IRQ2): Cette interruption gère
habituellement en arrière plan la deuxième imprimante.
Toutefois, dans le cas d'appareil clone comme le Tandy, il
pourra arriver qu'il soit utiliser en plus pour la gestion du disque
dur. En plus, les cartes de son MIDI de Roland
l'utilise parfois. Cette interruption peut-être masqué
par le bit 2 du port E/S 21h.
Interruption 0Eh (IRQ6): Contrôleur de lecteur: Cette interruption est utilisée pour avertir le
système que l'opération est terminé. Pour ce
faire, il appelle l'interruption 15h, Fonction 91h, Sous-Fonction
01h (pour lecteur de disquette).
L'apparence de l'interruption 0Eh (IRQ6) ressemblerait à ceci en Turbo Pascal 6 ou postérieur:
-
Procedure IRQ6;Begin
ASM STI
END;
Mem[$0040:$3E]:=Mem[$0040:$3E]or$80;
Port[$20]:=$20;
ASM
MOV
AX,09101h INT
015h END;
End;
|
Références
Aide-mémoire des interruptions du MS-DOS, Edition Marabout, Philippe Mercier, 1990, ISBN: 2-501-01297-6, page 25 à 26.
|