Section courante

A propos

Section administrative du site

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

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