Monochrome Display Adapter

Un article de Wikipédia, l'encyclopédie libre.

Le Monochrome Display Adapter ou MDA est une norme d'affichage monochrome de caractères au format ASCII et le nom des premières cartes graphiques utilisées dans les IBM-PC.

Ce terme désigne aussi le mode 0 en BASIC correspondant aux modes 0,1,2,3 du BIOS (mode texte), il est encore utilisé, pour des raisons de compatibilité ascendante, au démarrage de la majorité des ordinateurs par le BIOS pour l'affichage des informations concernant le matériel correctement initialisé.

Premières cartes[modifier | modifier le code]

Apparues avec les premiers IBM-PC[1], et uniquement disponible pour les ports ISA, les cartes MDA communiquaient avec le processeur sur 8 bits et n'avaient comme mémoire embarquée que celle servant à la gestion des caractères, dans un tampon de 4 ko suffisant pour stocker 2000 paires constituées d'un caractère codé sur 8 bits (dans la page de code 437 qui ne pouvait alors pas être modifiée) et d’un octet d’attribut graphique (qui ne servait qu’à générer un soulignement, une inversion vidéo, un clignotement, ou une luminosité amoindrie).

Les caractères ainsi stockés permettaient alors d'afficher sur 80 colonnes 25 lignes de texte dans une police de taille fixe de 9×14 pixels ; la résolution affichée montait alors à 720×350 pixels, bien qu’aucun des pixels ne soit séparément adressable. Mais ces cartes ne permettaient pas de modifier la police de caractère utilisée, puisque celle-ci (en fait constituée de caractères inscrits dans une matrice fixe de taille 8×13 pixels monochromes, dont une rangée et une colonne de pixels étaient répliquées en bordure, afin de former des caractères graphiques jointifs, ce qui limitait les caractères non jointifs à une sous-matrice de 7×12 pixels[2]) était stockée en mémoire morte (ROM) de 3 328 octets.

Extensions[modifier | modifier le code]

Toutefois sont apparues des ROM contenant des polices supplémentaires (notamment une ROM pour la programmation en APL, ou pour d’autres alphabets comme l’alphabet grec), utilisables en utilisant un des bits d'attributs inutilisés, pour augmenter le nombre de caractères à 512. Toutefois, le système d’exploitation DOS ne gérant alors que des caractères codés sur 8 bits, le concept de page de code est apparu pour basculer d’un jeu de caractères à l’autre, par la suite est apparue la possibilité d’étendre en les stockant dans une mémoire volatile sur la carte elle-même.

Pour les premières cartes uniquement au format MDA, il n'était pas possible de changer la définition de l'écran, la police de caractère ou le nombre de couleurs affichées simultanément autrement qu'en contournant les limitations matérielles par l'utilisation de programmes changeant la couleur affichée à chaque ligne par exemple, les cartes MDA ne supportant que des « couleurs » limitées à une palette monochrome de 4 niveaux du noir à la couleur la plus claire.

Écrans monochromes compatibles[modifier | modifier le code]

Les écrans monochromes utilisés affichaient cette luminosité en couleur verte (puis plus tard en couleur ambre), puisque la résolution limitée des pixels rendait les lignes de balayage visibles en mode d’inversion vidéo, ce qui limitait le travail normal à des caractères affichés en clair sur un fond noir (mode dans lequel des caractères blancs auraient aussi rendu le contraste produit par les lignes de balayage visibles moins reposant à lire que des caractères colorés, le vert ayant étant jugé plus reposant, d’autant plus que la fréquence de rafraichissement était encore limitée, ce qui était compensé en partie par des luminophores verts à rémanence élevée).

Premières évolutions graphiques dans les cartes suivantes[modifier | modifier le code]

Elles furent rapidement remplacée par des cartes graphiques plus évoluées permettant un adressage au niveau du pixel et communiquant sur des interfaces 16 bits.

La taille de la matrice des caractères dépend elle aussi de la carte graphique : 8x8 pour les cartes CGA ou 8x14 pour les cartes EGA (qui affichaient donc un texte de moins bonne qualité que les cartes MDA qui ont continué à être largement utilisées à cause de cette limitation), et enfin 9x16 pour les cartes VGA) (les premières à offrir une qualité de rendu du texte supérieure aux cartes MDA, avec là aussi une réplication d’une des 9 colonnes de pixels pour former des caractères jointifs, leur matrice de définition étant de 8×16 pixels, et nécessitant 4 096 octets pour les 256 caractères d’une page de code, contre seulement 2 048 octets pour chaque police destinée au mode CGA et 3 584 octets pour chaque police destinée au mode EGA).

On peut noter que la carte CGA a surtout été développée pour permettre l’affichage sur un téléviseur couleur ou monochrome de l’époque (dont la définition est plus faible), sans nécessiter un moniteur de coût encore élevé à l’époque, à cause de leur résolution. Seule la carte VGA a été développée pour tenir compte de réels progrès dans les moniteurs, la carte EGA exploitant les mêmes capacités que les cartes MDA, mais en y ajoutant la couleur.

Pour ces cartes plus évoluées, il est possible d'afficher du texte en 40 ou 80 colonnes, en 16 couleurs différentes. Le nombre de lignes disponibles varie en fonction de la carte graphique (seulement 25 lignes en CGA, 25 ou 43 en EGA, 25, 30, 43, 50 ou 60 en VGA). Pour toutes les cartes, normalement il est possible d'avoir 16 couleurs d'avant-plan et 8 d'arrière-plan plus un attribut clignotant. Mais un paramètre permet d'avoir à la place de l'attribut clignotant, 16 couleurs en arrière-plan, pour les cartes gérant la couleur.

Pour les cartes EGA et VGA les couleurs peuvent être redéfinies avec une palette de 64 couleurs en EGA et plus de 262 144 couleurs en VGA.

Les caractères peuvent être redéfinis pour les modes EGA et VGA, qui stockent les polices en mémoire volatile sur la carte elle-même.

Notes et références[modifier | modifier le code]

  1. (en) David J. Bradley, « The Creation of the IBM PC », BYTE,‎ , p. 414–420 (lire en ligne)
  2. (en) IBM Monochrome Display and Printer Adapter, IBM (lire en ligne)

Voir aussi[modifier | modifier le code]