Port d'entrée/sortie 80x86 | 00E0h/00E1h |
---|---|
Certain XT disposant CMOS (Wyse XT, Amdek System/88) | CMOS RAM/RTC |
Description
Les ports d'Entrée/Sortie 00E0h et 00E1h sont reliés au spécification du CMOS, le port 00E0h donne accès à un registre, tandis que le 00E1h est attribué à une commande de lecture ou d'écriture. Voici donc leur rôle :
Registre | Description | ||
---|---|---|---|
00h | Ce registre permet d'indiquer les secondes de l'horloge sur pile de l'ordinateur. | ||
01h | Ce registre permet d'indiquer les secondes de l'alarme. | ||
02h | Ce registre permet d'indiquer les minutes de l'horloge sur pile de l'ordinateur. | ||
03h | Ce registre permet d'indiquer les minutes de l'alarme. | ||
04h | Ce registre permet d'indiquer les heures de l'horloge sur pile de l'ordinateur. | ||
05h | Ce registre permet d'indiquer les heures de l'alarme. | ||
06h | Ce registre permet d'indiquer le jour de la semaine sur pile de l'ordinateur : | ||
Valeur | Description | ||
01h | Cette valeur permet d'indiquer le Dimanche. | ||
02h | Cette valeur permet d'indiquer le Lundi. | ||
03h | Cette valeur permet d'indiquer le Mardi. | ||
04h | Cette valeur permet d'indiquer le Mercredi. | ||
05h | Cette valeur permet d'indiquer le Jeudi. | ||
06h | Cette valeur permet d'indiquer le Vendredi. | ||
07h | Cette valeur permet d'indiquer le Samedi. | ||
07h | Ce registre permet d'indiquer le jour du mois sur pile de l'ordinateur. | ||
08h | Ce registre permet d'indiquer le mois sur pile de l'ordinateur : | ||
Valeur | Description | ||
01h | Cette valeur permet d'indiquer le mois de Janvier. | ||
02h | Cette valeur permet d'indiquer le mois de Février. | ||
03h | Cette valeur permet d'indiquer le mois de Mars. | ||
04h | Cette valeur permet d'indiquer le mois d'Avril. | ||
05h | Cette valeur permet d'indiquer le mois de Mai. | ||
06h | Cette valeur permet d'indiquer le mois de Juin. | ||
07h | Cette valeur permet d'indiquer le mois de Juillet. | ||
08h | Cette valeur permet d'indiquer le mois d'Août. | ||
09h | Cette valeur permet d'indiquer le mois de Septembre. | ||
0Ah | Cette valeur permet d'indiquer le mois d'Octobre en mode binaire. | ||
0Bh | Cette valeur permet d'indiquer le mois de Novembre en mode binaire. | ||
0Ch | Cette valeur permet d'indiquer le mois de Décembre en mode binaire. | ||
10h | Cette valeur permet d'indiquer le mois d'Octobre en mode BCD. | ||
11h | Cette valeur permet d'indiquer le mois de Novembre en mode BCD. | ||
12h | Cette valeur permet d'indiquer le mois de Décembre en mode BCD. | ||
09h | Ce registre permet d'indiquer l'année sur pile de l'ordinateur. | ||
0Ah | Ce registre permet d'indiquer le registre d'état A de la CMOS RAM/RTC : | ||
Bit | Description | ||
0 à 3 | Ces bits permettant d'indiquer les impulsions de sorties. Par défaut, fixé à 0100b = 1,024 kHz, 976,562 microsecondes | ||
4 à 6 | Ces bits permettant d'indiquer les impulsions d'entrée. Par défaut, fixé à 010b = 32,768 kHz | ||
7 | Ce bit permet d'indiquer si une mise-à-jour est nécessaire : | ||
Valeur | Description | ||
0 | Cette valeur permet d'indiquer qu'il n'y a pas de mise-à-jour de l'horloge. | ||
1 | Cette valeur permet d'indiquer qu'il y a une mise-à-jour de l'horloge. | ||
0Bh | Ce registre permet d'indiquer le registre d'état B de la CMOS RAM/RTC. | ||
Bit | Description | ||
0 | Ce bit permet d'indiquer l'état de l'heure d'été : | ||
Valeur | Description | ||
0 | Cette valeur permet d'indiquer que l'heure d'été n'est pas activé. | ||
1 | Cette valeur permet d'indiquer que l'heure d'été est activé. | ||
1 | Ce bit permet d'indiquer le format de l'heure : | ||
Valeur | Description | ||
0 | Cette valeur permet d'indiquer que l'heure est sur une base de 12 heures avec un AM et PM. | ||
1 | Cette valeur permet d'indiquer que l'heure est sur une base de 24 heures. | ||
2 | Ce bit permet d'indiquer le format de données : | ||
Valeur | Description | ||
0 | Cette valeur permet d'indiquer que les données sont encodés en format BCD. | ||
1 | Cette valeur permet d'indiquer que les données sont encodés en format binaire. | ||
3 | Ce bit permet d'indiquer le signal de fréquence rectangulaire : | ||
Valeur | Description | ||
0 | Cette valeur permet d'indiquer qu'il n'y a pas de signal de fréquence rectangulaire. | ||
1 | Cette valeur permet d'indiquer qu'il y a un signal de fréquence rectangulaire. | ||
4 | Ce bit permet d'indiquer si les données de l'horloge sont mise-à-jour et l'interruption est exécuté : | ||
Valeur | Description | ||
0 | Cette valeur permet d'indiquer que les données ne sont pas mise-à-jour et que l'interruption n'est pas exécuté. | ||
1 | Cette valeur permet d'indiquer que les données sont mise-à-jour et que l'interruption est exécuté. | ||
5 | Ce bit permet d'indiquer si l'interruption d'alarme est autorisé : | ||
Valeur | Description | ||
0 | Cette valeur permet d'indiquer que l'interruption d'alarme n'est pas autorisé. | ||
1 | Cette valeur permet d'indiquer que l'interruption d'alarme est autorisé. | ||
6 | Ce bit permet d'indiquer si l'interruption périodique est autorisé : | ||
Valeur | Description | ||
0 | Cette valeur permet d'indiquer que l'interruption périodique n'est pas autorisé. | ||
1 | Cette valeur permet d'indiquer que l'interruption périodique est autorisé. | ||
7 | Ce bit permet d'indiquer que la date et l'heure sont réinitialisés : | ||
Valeur | Description | ||
0 | Cette valeur permet d'indiquer qu'il n'y a pas de réinitialisation. | ||
1 | Cette valeur permet d'indiquer qu'il y a une réinitialisation. | ||
0Ch | Ce registre permet d'indiquer le registre d'état C de la CMOS RAM/RTC. | ||
Bit | Description | ||
0 à 3 | Ces bits ont toujours la valeur 0. | ||
4 | Ce bit permet d'indiquer la mise-à-jour de l'horloge après l'interruption : | ||
Valeur | Description | ||
0 | Cette valeur permet d'indiquer qu'il n'y pas d'événement de mise-à-jour. | ||
1 | Cette valeur permet d'indiquer qu'il a mise-à-jour de l'horloge après l'interruption. | ||
5 | Ce bit permet d'indiquer l'interruption d'alarme programmable : | ||
Valeur | Description | ||
0 | Cette valeur permet d'indiquer qu'il n'y pas d'événement d'interruption d'alarme. | ||
1 | Cette valeur permet d'indiquer qu'il y a un événement d'interruption d'alarme. | ||
6 | Ce bit permet d'indiquer l'interruption périodique : | ||
Valeur | Description | ||
0 | Cette valeur permet d'indiquer qu'il n'y pas d'événement d'interruption périodique. | ||
1 | Cette valeur permet d'indiquer qu'il y a un événement d'interruption périodique. | ||
7 | Ce bit permet d'indiquer l'interruption : | ||
Valeur | Description | ||
0 | Cette valeur permet d'indiquer qu'il n'y pas d'événement d'interruption. | ||
1 | Cette valeur permet d'indiquer qu'il y a un événement d'interruption. | ||
0Dh | Ce registre permet d'indiquer le registre d'état D de la CMOS RAM/RTC : | ||
Bit | Description | ||
0 à 6 | Ces bits ont toujours la valeur 0. | ||
7 | Ce bit permet d'indiquer l'état du fonctionnement de l'horloge : | ||
Valeur | Description | ||
0 | Cette valeur permet d'indiquer que l'horloge fonctionne normalement. | ||
1 | Cette valeur permet d'indiquer que l'horloge ne fonctionne pas correctement, problème d'alimentation. Il s'agit la plupart du temps d'une batterie n'ayant plus aucune charge. | ||
0Eh | Ce registre permet d'indiquer l'état de diagnostique de la CMOS RAM/RTC : | ||
Bit | Description | ||
0 à 1 | Ces bits sont réservés | ||
2 | Ce bit permet d'indiquer l'état de l'analyse de l'heure : | ||
Valeur | Description | ||
0 | Cette valeur permet d'indiquer que l'heure est correcte. | ||
1 | Cette valeur permet d'indiquer que l'heure est invalide. | ||
3 | Ce bit permet d'indiquer l'état de l'analyse du contrôleur de disque dur : | ||
Valeur | Description | ||
0 | Cette valeur permet d'indiquer que le contrôleur de disque dur est correcte. | ||
1 | Cette valeur permet d'indiquer que le contrôleur de disque dur ou le disque dur lui-même n'est pas correctement initialisé. | ||
4 | Ce bit permet d'indiquer l'analyse de la taille de la mémoire par défaut : | ||
Valeur | Description | ||
0 | Cette valeur permet d'indiquer que la taille de la mémoire est correcte. | ||
1 | Cette valeur permet d'indiquer que la taille de la mémoire ne correspond pas aux entrées. | ||
5 | Ce bit permet d'indiquer l'état de la configuration : | ||
Valeur | Description | ||
0 | Cette valeur permet d'indiquer que la configuration est correcte. | ||
1 | Cette valeur permet d'indiquer que la configuration est incorrecte ou endommagé. | ||
6 | Ce bit permet d'indiquer que le résultat du test de sommation de vérification : | ||
Valeur | Description | ||
0 | Cette valeur permet d'indiquer que la sommation est incorrecte. | ||
1 | Cette valeur permet d'indiquer que la sommation est normal. | ||
7 | Ce bit permet d'indiquer l'état d'alimentation du MC146818 : | ||
Valeur | Description | ||
0 | Cette valeur permet d'indiquer qu'il fonctionne correctement. | ||
1 | Cette valeur permet d'indiquer que l'heure a été interrompu. | ||
0Fh | Ce registre permet d'indiquer l'état de redémarrage de la CMOS RAM/RTC : | ||
Valeur | Description | ||
00h | Cette valeur permet d'indiquer une réinitialisation logiciel ou redémarrage non demandé. | ||
01h | Cette valeur permet d'indiquer un redémarrage après que la taille de la mémoire est identifié. | ||
02h | Cette valeur permet d'indiquer un redémarrage après que la mémoire a été testé. | ||
03h | Cette valeur permet d'indiquer un redémarrage avec une erreur de mémoire. | ||
04h | Cette valeur permet d'indiquer un redémarrage avec une requête de redémarrage de chargement. | ||
05h | Cette valeur permet d'indiquer une requête «JMP DWORD» avec une initialisation d'interruption (INT). | ||
06h | Cette valeur permet d'indiquer un test 7 de mode protégé passé. | ||
07h | Cette valeur permet d'indiquer un test 7 de mode protégé échoué. | ||
08h | Cette valeur permet d'indiquer un test 1 de mode protégé échoué. | ||
09h | Cette valeur permet d'indiquer une requête de déplacement de bloc lors de redémarrage. | ||
0Ah | Cette valeur permet d'indiquer une requête «JMP DWORD» sans initialisation d'interruption (INT). | ||
10h | Ce registre permet d'indiquer le type d'unité de disquette : | ||
Bit | Description | ||
0 à 3 | Ce bit permet d'indiquer le type d'unité de disquette «A:» : | ||
Valeur | Description | ||
0000b | Cette valeur permet d'indiquer qu'il n'y a pas d'unité de disquette d'installé. | ||
0001b | Cette valeur permet d'indiquer une unité de disquette 5 1/4" 360 Ko. | ||
0010b | Cette valeur permet d'indiquer une unité de disquette 5 1/4" 1,2 Mo. | ||
0011b | Cette valeur permet d'indiquer une unité de disquette 3 1/2" 720 Ko. | ||
0100b | Cette valeur permet d'indiquer une unité de disquette 3 1/2" 1,44 Mo. | ||
0101b | Cette valeur permet d'indiquer une unité de disquette 3 1/2" 2,88 Mo. | ||
4 à 7 | Ce bit permet d'indiquer le type d'unité de disquette «B:» : | ||
Valeur | Description | ||
0000b | Cette valeur permet d'indiquer qu'il n'y a pas d'unité de disquette d'installé. | ||
0001b | Cette valeur permet d'indiquer une unité de disquette 5 1/4" 360 Ko. | ||
0010b | Cette valeur permet d'indiquer une unité de disquette 5 1/4" 1,2 Mo. | ||
0011b | Cette valeur permet d'indiquer une unité de disquette 3 1/2" 720 Ko. | ||
0100b | Cette valeur permet d'indiquer une unité de disquette 3 1/2" 1,44 Mo. | ||
0101b | Cette valeur permet d'indiquer une unité de disquette 3 1/2" 2,88 Mo. | ||
11h | Ce registre est réservé. | ||
12h | Ce registre permet d'indiquer le type d'unité de disque dur. | ||
13h | Ce registre est réservé. | ||
14h | Ce registre permet d'indiquer l'octet d'équipement : | ||
Bit | Description | ||
0 | Ce bit permet d'indiquer si au moins une unité de disquette est installé : | ||
Valeur | Description | ||
0 | Cette valeur permet d'indiquer qu'il n'y a pas d'unité de disquette d'installé. | ||
1 | Cette valeur permet d'indiquer qu'il y a au moins une unité de disquette d'installé. | ||
1 | Ce bit permet d'indiquer si un coprocesseur mathématique est installé : | ||
Valeur | Description | ||
0 | Cette valeur permet d'indiquer qu'il n'y a pas de coprocesseur mathématique d'installé. | ||
1 | Cette valeur permet d'indiquer qu'il y a un coprocesseur mathématique d'installé. | ||
2 à 3 | Ces bits sont réservés. | ||
4 à 5 | Ces bits permettent d'indiquer l'affichage primaire : | ||
Valeur | Description | ||
00b | Cette valeur permet d'indiquer qu'il n'y a pas d'affichage primaire. | ||
01b | Cette valeur permet d'indiquer que l'affichage primaire est 40 caractères par ligne en mode couleur (CGA). | ||
10b | Cette valeur permet d'indiquer que l'affichage primaire est 80 caractères par ligne en mode couleur (CGA). | ||
11b | Cette valeur permet d'indiquer que l'affichage primaire est monochrome. | ||
6 à 7 | Ces bits permettent d'indiquer le nombre d'unité de disquette : | ||
Valeur | Description | ||
00b | Cette valeur permet d'indiquer qu'il y a qu'un seul unité de disquette. | ||
01b | Cette valeur permet d'indiquer qu'il y a deux unités de disquette. | ||
10b | Cette valeur permet d'indiquer qu'il y a trois unités de disquette. | ||
11b | Cette valeur permet d'indiquer qu'il y a quatre unités de disquette. | ||
15h | Ce registre permet d'indiquer l'octet de poids faible de la taille de la mémoire conventionnel en KiloOctets. | ||
16h | Ce registre permet d'indiquer l'octet de poids fort de la taille de la mémoire conventionnel en KiloOctets. | ||
17h à 1Fh | Ces registres sont réservés. | ||
20h à 27h | Ces registres permettent d'indiquer les paramètres de type 48 de disque dur. | ||
28h à 2Dh | Ces registres sont réservés. | ||
2Eh | Ce registre permet d'indiquer l'octet de la partie basse de la somme de vérification. | ||
2Fh | Ce registre permet d'indiquer l'octet de la partie haute de la somme de vérification. | ||
30h à 31h | Ces registres sont réservés. | ||
32h | Ce registre permet d'indiquer le siècle sur pile de l'ordinateur en format BCD. | ||
33h | Ce registre permet d'indiquer les informations d'ajustement. | ||
Bit | Description | ||
0 à 5 | Ces bits sont réservés. | ||
6 | Ce bit permet d'indiquer le drapeau d'initialisation de message du SETUP. | ||
7 | Ce bit permet d'indiquer si la cartouche d'extension de 128 Ko est installé : | ||
Valeur | Description | ||
0 | Cette valeur permet d'indiquer qu'il n'y a pas de cartouche d'extension de 128 Ko d'installé. | ||
1 | Cette valeur permet d'indiquer qu'il y a une cartouche d'extension de 128 Ko d'installé. | ||
34h | Ce registre est réservé. | ||
35h à 3Ch | Ces registres permettent d'indiquer les paramètres de type 49 de disque dur. | ||
3Dh à 3Fh | Ces registres sont réservés. |
Remarques
- Le contenu des 64 registres du CMOS RAM/RTC sont conservés sur batterie, si bien que lorsque l'ordinateur est fermé, leur contenu est conservé et l'horloge contenu d'avancer normalement.
- Le bit 5 du registre d'état de diagnostique est fixé durant le test de démarrage. Ce bit est fixé s'il n'y a pas d'unité de disquette trouvé ou que l'affichage ne correspond pas au ajustement d'affichage indiquer dans l'échangeur.
Code source
Voici des exemples du code source d'un programme permettant de manipuler le CMOS du Amdek System/88 :
Lien | Langage de programmation | Projet |
---|---|---|
https://github.com/gladir/corail/blob/master/CKCMOS.PAS | Turbo Pascal, Free Pascal | Corail |
Voir également
Langage de programmation - Assembleur 80x86 - Références des ports d'entrée/sortie 80x86 - Registre de données de la CMOS RAM/RTC (AT, PS/2)
Interruption 15h: Fonction 01h: Écrit dans la RAM non-volatile (Amstrad PC1512)
Interruption 15h: Fonction 02h: Lecture dans la RAM non-volatile (Amstrad PC1512)
Dernière mise à jour : Samedi, le 2 août 2014