| 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