Spécification | Description |
---|---|
Fabricant | IBM |
Date de conception | 1981 |
RAM installé | 16 Ko |
Puce | Motorola MC6845 |
Introduction
La carte vidéo MDA du fabricant IBM, tire son nom de l'abréviation de l'anglicisme Monochrome Display Adapter et la première carte monochrome proposé pour ses IBM PC. Elle a été conçu pour se connecter directement au moniteur IBM 5151 monochrome (vert phosphore). La carte était également livrée avec un port d'imprimante pour fonctionner avec les imprimantes IBM, elle était donc souvent appelée écran monochrome et adaptateur d'imprimante.
La carte était livrée avec 4 Ko de mémoire vidéo pour entreposer les attributs d'écran étant entreposés à l'adresse mémoire B0000 à B0FFF, plus une ROM de caractères de 8 Ko contenant les images d'un ensemble de caractères, bien que seulement 4 Ko aient été réellement utilisés. La carte était accessible via les ports d'entrée/sortie 3B0h à 3BF.
La norme MDA était destinée à être utilisée avec un moniteur à fréquence fixe, fournissant un format d'image 720x350 pixels, bien qu'elle ne soit capable de produire une sortie texte qu'à l'aide de son générateur de caractères basé sur ROM. Ces caractères étaient des "cellules" de 9x14 pixels, de sorte que le format d'image est plus précisément décrit comme 25 lignes de 80 caractères chacune. Cela était connu sous le nom de «mode 7» ou «mode 07h». L'ensemble de caractères n'était pas redéfinissable. Les cartes MDA vendues aux États-Unis contenaient ce qu'on appelait la page de codes 437 - il s'agissait de l'ensemble de caractères comprenant tous les caractères ASCII américains imprimables (32-126), les codes étendus pour les caractères accentués et certains dessins au trait. Pour les marchés étrangers, l'ensemble de caractères de la ROM a été modifié pour s'adapter aux caractères grecs, cyrilliques, hébreux et autres.
Il utilise une sortie TTL numérique, ce qui signifie qu'il déclenche soit un «haut» soit un «bas», où un «haut» allume le faisceau du CRT et un «bas» l'éteint pour créer les caractères. Une sortie "intensité" séparée est également fournie et peut être utilisée pour modifier la luminosité caractère par caractère.
Il fournit également un signal de synchronisation horizontale et verticale séparé - quelque chose qui est encore conservé dans les normes PC aujourd'hui. Ces signaux de synchronisation sont nécessaires pour que les moniteurs CRT et les téléviseurs indiquent la fréquence horizontale utilisée par la norme MDA est de 18,432 kHz.
La carte MDA pourrait vivre heureusement aux côtés d'une carte CGA, mais il est important de noter que la carte MDA peut endommager les moniteurs n'étant pas conçus pour prendre des signaux vidéo/synchronisation MDA tels que le moniteur IBM 5153 (CGA) et l'IBM moniteur 5154 (EGA). Lors de l'installation de différentes cartes d'affichage dans ces anciens PC, vous deviez généralement définir des "cavaliers" ou des commutateurs "DIP" sur la carte mère pour lui indiquer ce qui était installé. Généralement, dans un XT ou un clone, il y avait 8 commutateurs DIP en 4 paires. La troisième paire indiquait au système quelle carte d'affichage était installée : monochrome, CGA ou pas de vidéo du tout. Ce paramètre avait l'habitude de dérouter les gens, car pour les cartes d'affichage plus avancées (EGA et VGA), vous deviez désactiver les commutateurs de la carte mère. En fait, c'était plus logique qu'il n'y paraissait au début : le BIOS XT gérait lui-même les écrans mono et CGA, mais les cartes EGA et VGA avaient leur propre BIOS, vous deviez donc dire au BIOS intégré que vous n'aviez "pas de vidéo" afin de permettre à la carte d'extension EGA ou VGA d'avoir le contrôle.
Sur la carte MDA elle-même se trouvaient des cavaliers. J1 doit rester ouvert, J2 est pour un crayon lumineux en option, bien qu'IBM n'en ait jamais publié un lui-même. Si le support de la carte semble être trop grand pour votre système, c'est parce qu'il a été conçu pour l'IBM 5150 d'origine, ayant un espacement plus large entre les connecteurs d'extension.
Mode vidéo
Voici la liste des différents modes vidéo supporté par les cartes vidéos MDA :
Mode | Type | Couleurs | Format Alpha | Taille caractère | Taille écran | Adresse écran |
---|---|---|---|---|---|---|
07h | Texte | 4 (Mono) | 80x25 | 9x14 | 720x350 | B000h |
Remarque
- En mode texte, il n'est pas possible de modifié la police de caractères fournit avec la carte vidéo.
Programmation
Pour détecter une carte MDA (Monochrome Display Adapter) en Turbo Pascal, il est possible d'interroger les ports d'entrées/sorties et les interruptions utilisés par cette carte. Le principe général est d'accéder à certains registres spécifiques pour vérifier la présence et le type d'adaptateur vidéo installé dans le système.
La carte MDA utilise une adresse spécifique pour ses registres de contrôle vidéo, notamment les ports 3B4h et 3B5h pour le contrôleur 6845 (utilisé pour gérer l'affichage en mode texte). La détection consiste à vérifier si ces ports répondent correctement.
Voici une méthode simple pour détecter une carte MDA :
- Program DetectMDA;
-
- Uses
- Crt;
-
- Function IsMDA:Boolean;
- Var
- OldValue,TestValue:Byte;
- Begin
- IsMDA:=False;
- OldValue:=Port[$3B4]; { Lire la valeur actuelle du registre d'index du 6845 }
- { Tester en écrivant puis en relisant une valeur dans le registre d'index }
- Port[$3B4]:=$0F; { Écrire une valeur de test }
- TestValue:=Port[$3B4];
- { Si la carte MDA est présente, elle devrait répondre avec la même valeur qu'on lui a envoyée }
- If TestValue=$0F Then IsMDA:=True;
- { Restaurer la valeur originale }
- Port[$3B4]:=OldValue;
- End;
-
- BEGIN
- If IsMDA Then WriteLn('Carte MDA détectée.')
- Else Writeln('Carte MDA non détectée.');
- END.
Le port $3B4 est utilisé par la carte MDA pour contrôler le 6845, un circuit utilisé pour la gestion de l'affichage en mode texte. Ce registre d'index permet d'adresser différents registres internes du 6845. Ensuite, lors du test de lecture et d'écriture, le programme lit d'abord la valeur actuelle du port 3B4h, puis écrit une valeur de test ($0F). Enfin, il relit le port pour vérifier si la valeur est la même que celle envoyée. Si c'est le cas, cela indique probablement la présence d'une carte MDA.
Finalement, lors de la restauration de l'état, après avoir fait le test, la valeur initiale du port est restaurée pour ne pas perturber le fonctionnement de la carte si elle est effectivement présente.
Cette méthode ne détecte que la MDA et pas d'autres types de cartes vidéo (comme CGA, EGA, VGA,...). D'autres tests peuvent être réalisés, comme lire les zones mémoire spécifiques à la MDA (segment B000h), mais cela est souvent inutile si les ports d'entrées/sorties sont correctement testés.
La carte MDA utilise un segment mémoire spécifique pour entreposer le contenu de l'écran texte, à l'adresse B000:0000h. Vous pouvez aussi lire ou écrire dans cette mémoire pour vérifier que l'adaptateur fonctionne correctement, mais c'est généralement plus complexe.