Table des matières
- Interruption 08h: (IRQ0) Interruption temporisateur
- Interruption 09h: (IRQ1) Interruption clavier
- Interruption 0Ah (IRQ2)
- Interruption 0Eh (IRQ6): Contrôleur de lecteur
Introduction
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 du 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 ont des traitements particuliers; Les Voici :
- 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:
Touche | Action particulière |
---|---|
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. |
En aucun cas cette interruption ne pourra être appelée par un programme.
Valeur de Scan code obtenue à l'aide du Port E/S 60h qu'utilise cette interruption:
Code hexadécimal | Nom de la touche (description) |
---|---|
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 ↑ |
49h | Bouton Page Up |
4Ah | Bouton «Grey-ow» |
4Bh | Bouton ← |
4Ch | Bouton 5 sur le bloc numérique |
4Dh | Bouton → |
4Eh | Bouton + (Foncé) |
4Fh | Bouton End |
50h | Bouton ↓ |
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 de gauche |
5Ch | Bouton F14 ou Windows 9X de droite |
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 système d'exploitation DR-DOS redirige cette interruption.
Références
Aide-mémoire des interruptions du MS-DOS, Edition Marabout, Philippe Mercier, 1990, ISBN: 2-501-01297-6, page 25 à 26.