Port d'entrée/sortie 80x86 | 0020h |
---|---|
PC, XT, PC Junior, AT, PS/2 | 8259-1, Commande d'interruption |
Description
Ce port permet de manipuler le registre de commande du contrôleur d'interruption 1 du contrôleur 8259A. Normalement, le BIOS réinitialise se port, lequel permet d'initialiser le contrôleur d'interruption. L'initialisation de se processus requière l'envoi d'une commande 8 bits au port 20h, suivi de 2 ou 3 commandes de 8 bits au séquenceur du port 21h.
Écriture
Voici la commande 1 d'initialisation:
Bits | Description | |
---|---|---|
0 | Ce bit lorsqu'il vaut 1 permet d'indiquer qu'il faut 4 octets d'initialisation. | |
1 | Ce bit permet d'indiquer le mode d'initialisation: | |
Valeur | Description | |
0 | Cette valeur permet d'indiquer que l'initialisation se fait en mode CASCADE. Cette valeur n'est possible que lorsque deux contrôleurs sont utilisés, soit à partir des AT et plus. | |
1 | Cette valeur permet d'indiquer que l'initialisation se fait en mode simple (SINGLE). Quand seulement un contrôleur existe, comme avec les PC/XT. | |
2 | Ce bit n'est pas utilisé. | |
3 | Ce bit permet d'indiquer le mode de déclencheur: | |
Valeur | Description | |
0 | Cette valeur permet d'indiquer que le déclencheur s'effectue par tranche. Soit, pour les PC, XT et AT. | |
1 | Cette valeur permet d'indiquer que le déclencheur s'effectue par niveau. Soit, pour l'architecture MCA. | |
4 | Ce bit doit être à 1 pour provoquer l'initialisation. | |
5 à 7 | Ces bits ne sont jamais utilisés. |
Voici la commande 2 d'opération normal:
Bits | Description | |
---|---|---|
0 à 2 | Ces bits permettent d'indiquer le niveau de priorité: | |
Valeur | Description | |
000b | Cette valeur permet d'indiquer que l'IRQ0 est de basse priorité et que l'IRQ1 est de haute priorité. | |
001b | Cette valeur permet d'indiquer que l'IRQ1 est de basse priorité et que l'IRQ2 est de haute priorité. | |
010b | Cette valeur permet d'indiquer que l'IRQ2 est de basse priorité et que l'IRQ3 est de haute priorité. | |
011b | Cette valeur permet d'indiquer que l'IRQ3 est de basse priorité et que l'IRQ4 est de haute priorité. | |
100b | Cette valeur permet d'indiquer que l'IRQ4 est de basse priorité et que l'IRQ5 est de haute priorité. | |
100b | Cette valeur permet d'indiquer que l'IRQ5 est de basse priorité et que l'IRQ6 est de haute priorité. | |
101b | Cette valeur permet d'indiquer que l'IRQ6 est de basse priorité et que l'IRQ7 est de haute priorité. | |
111b | Cette valeur permet d'indiquer que l'IRQ7 est de basse priorité et que l'IRQ0 est de haute priorité. | |
3 | Ce bit n'est pas utilisé. | |
4 | Ce bit vaut 0 pour indiquer que c'est la commande 2 d'opération normal. | |
5 à 7 | Ces bits permettent d'indiquer la sous-commande: | |
Valeur | Description | |
000b | Cette valeur permet d'effectuer une rotation dans un mode automatique EOI effacé. | |
001b | Cette valeur permet d'effectuer un EOI non spécifique. | |
010b | Cette valeur permet de ne pas effectuer d'opération. | |
011b | Cette valeur permet d'effectuer un EOI spécifique. | |
100b | Cette valeur permet d'effectuer une rotation dans un mode automatique EOI fixé. | |
100b | Cette valeur permet d'effectuer une rotation EOI non spécifique. | |
101b | Cette valeur permet de fixer la priorité de commande. | |
111b | Cette valeur permet d'effectuer une rotation EOI spécifique. |
Voici la commande 3 d'opération:
Bits | Description | |
---|---|---|
0 à 1 | Ces bits permettent d'indiquer le lecture du registre spécifique: | |
Valeur | Description | |
10b | Cette valeur permet d'indiquer que la lecture du registre de requête d'interruption. | |
11b | Cette valeur permet d'indiquer que la lecture du registre en-service. | |
2 | Ce bit doit valoir 0. | |
3 | Ce bit doit valoir 1. | |
4 | Ce bit doit valoir 0 pour demander la commande 3. | |
5 à 6 | Ces bits permettent d'indiquer le masque de mode spécial: | |
Valeur | Description | |
10b | Cette valeur permet d'effacer le mode de masque spécial. | |
11b | Cette valeur permet de fixer le mode de masque spécial. | |
7 | Ce bit doit valoir 0. |
Voici la liste des commandes à passer au port 20h:
Valeur | Description | |
---|---|---|
00h | Cette commande permet d'effectuer une rotation automatique du mode EOI effacé. | |
0Ah | Cette commande permet d'effectuer une lecture du registre de requête d'interruption. | |
0Bh | Cette commande permet d'effectuer une lecture du registre d'interruption en-service. | |
20h |
Cette commande permet d'effectuer une commande de fin d'interruption. En assembleur, il suffit de seulement 2 instructions pour exécuter cette commande:
MOV AL,20h
|
|
40h | Cette commande permet d'indiquer qu'il ne faut pas effectuer d'opération. | |
... | ... |
Références
The Undocumented PC: A programmer's Guide to I/O, CPUs, and Fixed Memory Areas - Second Edition, Edition Addison-Wesley, Frank van Gilluwe, 1997, ISBN: 0-201-47950-8, page 1014 à 1016.
Dernière mise à jour : Samedi, le 2 août 2014