Spécification | Description |
---|---|
Fabricant | IBM |
Date de conception | 1984 |
ROM installé | 64 Ko |
RAM installé | 320 Ko, 2 Ko de RAM partageable à l'adresse de mode réel C600h:0000h. |
Architecture | ISA 8 bits |
Affichage | 640x480 pixels en 256 couleurs sur une palette de 4096 |
Taille des caractères | 14x8 pixels |
Moniteur compatible | IBM 5175, Samsung SyncMaster 500s Plus |
Introduction
La carte vidéo PGC du fabricant IBM est une carte vidéo destiné au professionnel au milieu du CAD (Conception Assisté par Ordinateur) tirant son nom de l'abréviation de l'anglicisme «Professional Graphic Controller». La carte est extrêmement puissance et dispose de son propre microprocesseur 8088 ainsi que d'une mémoire de 320 Ko, créant par le fait même deuxième micro-ordinateur dans un micro-ordinateur ! Elle pouvait s'insérer dans un PC/XT, PC/XT 286 et un PC/AT. Sa production fut arrêté en 1987, lors de la sortie de la carte IBM 8514/A.
Structure de la mémoire
Voici la signification des cellules mémoires de 2 Ko accessible en mode réel à l'adresse C600h:0000h :
Spécification | Description |
---|---|
C600h:0000h à C600h:00FFh | Ce champ est utilisé comme tampon entre la carte vidéo PGA et le micro-ordinateur hôte |
C600h:0100h à C600h:01FFh | Ce champ est utilisé comme tampon de résultat entre la carte vidéo PGA et le micro-ordinateur hôte |
C600h:0200h à C600h:02FFh | Ce champ est utilisé comme tampon d'erreur entre la carte vidéo PGA et le micro-ordinateur hôte |
C600h:0300h | Ce champ permet d'indiquer un pointeur d'écriture vers un tampon dans le segment C600h. |
C600h:0301h | Ce champ permet d'indiquer un pointeur de lecture vers un tampon dans le segment C600h. |
C600h:0302h | Ce champ permet d'indiquer un pointeur d'écriture vers un tampon dans le segment C610h. |
C600h:0303h | Ce champ permet d'indiquer un pointeur de lecture vers un tampon dans le segment C610h. |
C600h:0304h | Ce champ permet d'indiquer un pointeur d'écriture vers un tampon dans le segment C620h. |
C600h:0305h | Ce champ permet d'indiquer un pointeur de lecture vers un tampon dans le segment C620h. |
C600h:0306h | Ce champ permet d'indiquer un drapeau de démarrage à froid. |
C600h:0307h | Ce champ permet d'indiquer un drapeau de démarrage à chaud. |
C600h:0308h | Ce champ permet de demander un rapport d'erreur si différent de 0. |
C600h:030Ah | Ce champ contient un résultat d'utilitaire de diagnostique. |
C600h:030Bh | Ce champ permet de sélectionner le mode CGA si la valeur est différente de 0. |
C600h:030Ch | Ce champ permet d'indiquer la requête d'affichage (commande DI). |
C600h:030Dh | Ce champ permet d'indiquer l'affichage reconnu. |
C600h:030Eh | Ce champ permet d'indiquer une requête de mémoire d'image CGA. |
C600h:030Fh | Ce champ permet d'indiquer la mémoire d'image CGA reconnu. |
C600h:0310h à C600h:0321h | Ce champ permet d'indiquer les valeurs respectives de registres AX, BX, CX, DX, BP, SI, DI, DS et ES du microprocesseur 8088 situé sur la carte vidéo PGC. |
C600h:0322h | Ce champ permet d'indiquer la verticale CGA au total. |
C600h:0323h | Ce champ permet d'indiquer la verticale CGA affiché. |
C600h:0324h | Ce champ permet d'indiquer la verticale CGA ajusté. |
C600h:0325h | Ce champ permet d'indiquer la verticale CGA synchronisé. |
C600h:0327h à C600h:0328h | Ce champ permet d'indiquer la taille du curseur CGA. |
C600h:0329h à C600h:032Ah | Ce champ permet d'indiquer l'adresse du curseur CGA. |
C600h:032Bh à C600h:032Ch | Ce champ permet d'indiquer l'adresse de début du CGA. |
C600h:03D8h | Ce champ permet d'indiquer la dernière valeur écrite sur le port d'entrée/sortie 3D8h. |
C600h:03D9h | Ce champ permet d'indiquer la dernière valeur écrite sur le port d'entrée/sortie 03D9h. |
C600h:03DBh | Ce champ permet d'indiquer l'octet de test de présence. |
C600h:03E0h à C600h:03F3h | Ce champ permet d'indiquer les dernières valeurs écrites dans l'émulateur CGA du CRTC. |
C600h:03F8h à C600h:03F9h | Ce champ permet d'indiquer la version firmware de la carte vidéo PGC. |
C600h:03FBh | Ce champ contient 0A5h si le processeur PGC a passé le test. |
C600h:03FCh | Ce champ contient 0FFh si la ROM de 32 Ko inférieur de la carte vidéo PGC a échoué le test sinon 5Ah. |
C600h:03FDh | Ce champ contient 0FFh si la ROM de 32 Ko supérieur de la carte vidéo PGC a échoué le test sinon 55h. |
C600h:03FEh | Ce champ contient 0FFh si la RAM de la carte vidéo PGC a échoué le test sinon AAh. |
C600h:03FFh | Ce champ permet de redémarrer la carte PGC si vous écrivez la valeur 50h dans ce champ. |
C600h:0400h à C600h:07FFh | Ce champ permet contient la pile de traitement de la carte vidéo PGC. |
Liste des commandes
Les commandes peuvent être envoyées sous forme texte ASCII ou en une représentation en mode hexadécimal. Voici la liste de tous les commandes PGC :
Commande (ASCII mode) | Mode Hexadécimal | Paramètres | Description | |
---|---|---|---|---|
ARC (AR) | 3Ch | radius,angle1,angle2 (1 coordonnées, 2 mots) | Cette commande permet de dessiner un arc centré à la position courante et avec l'angle de début et de fin spécifié. Si le rayon est un angle négatif, le négatif est soustrait de l'axe des X. | |
AREA (A) | C0h | Aucun | Cette commande permet de remplir la région, en débutant à partir de la position courante avec la couleur courante. | |
AREABC (AB) | C1h | colour (1 octet) | Cette commande permet de remplir la région mais arrête à la couleur spécifié. | |
AREAPT (AP) | E7h | mot,mot... (16 mots) | Cette commande permet de fixer la palette de remplissage (par défaut la couleur de remplissage est solide). Le premier mot indique la ligne du bas dans un Bitmap de 16x16 pixels, le second indique la ligne au dessus et ainsi de suite. Pour chacun des mots, le bit 0 est pixel le plus à gauche et le bit 15 est le bit le plus à droite. | |
BUFFER (BU) | 4Fh | p, q (2 octets) | Cette commande permet d'affecter les drapeaux d'affichage interne. | |
CA | D2h (ou 43h 41h) | Aucun | Cette commande permet de passer en mode ASCII pour les commandes. | |
CIRCLE (CI) | 38h | radius (1 coordonnée) | Cette commande permet de dessiner un centre centré à la position de dessin courant. | |
CLBEG (CB) | 70h | id (1 octet) | Cette commande permet d'entreposer une liste de commande pour l'exécuter plus tard. Les commandes sont accumulés jusqu'au prochain CLEND. | |
CLDEL (CD) | 74h | id (1 octet) | Cette commande permet de supprimer la commande spécifié de la liste de traitement. | |
CLEARS (CLS) | 0Fh | colour (1 octet) | Cette commande permet d'effacer l'écran avec la couleur spécifié. | |
CLEND (CE) | 71h | Aucun | Cette commande permet d'indiquer la fin d'une liste de commande. | |
CLIPH (CH) | AAh | mode (1 octet) | Cette commande permet de fixer le mode de capture «Hither» selon les valeurs suivantes : | |
Valeur | Description | |||
0 | Cette valeur permet d'indiquer qu'il faut désactiver le mode de capture «Hither». | |||
1 | Cette valeur permet d'indiquer qu'il faut activer le mode de capture «Hither». | |||
CLIPY (CY) | ABh | mode (1 octet) | Cette commande permet de fixer le mode de capture «Yon» selon les valeurs suivantes : | |
Valeur | Description | |||
0 | Cette valeur permet d'indiquer qu'il faut désactiver le mode de capture «Yon». | |||
1 | Cette valeur permet d'indiquer qu'il faut activer le mode de capture «Yon». | |||
CLOOP (CL) | 73h | id, repeats (1 octet, 1 mot) | Cette commande permet d'exécuter la liste de commande spécifié un nombre de fois spécifié. | |
CLRD (CRD) | 75h | id (1 octet) | Cette commande lire la la liste de commande spécifié et retourne la liste en octets hexadécimaux, précédée d'un mot donnant la longueur de la liste. | |
CLRUN (CR) | 72h | id (1 octet) | Cette commande permet d'exécuter la liste de commande spécifié. | |
COLOR (C) | 06h | colour (1 octet) | Cette commande permet de sélectionner la couleur de dessin courante, soit une valeur entre 0 et 255. | |
CONVRT (CV) | AFh | Aucun | Cette commande permet de cartographier la position courante en 3 dimensions en une 2 dimensions et fixe la position de dessin en 2 dimensions dans le résultat. | |
CX | D1h (ou 43h 58h) | Aucun | Cette commande permet de faire passer les commande en mode hexadécimal. Toutes les commandes ont un octet de long. | |
DISPLA (DI) | D0h | mode (1 octet) | Cette commande permet de fixer le mode d'affichage selon les valeurs suivantes : | |
Valeur | Description | |||
0 | Cette valeur permet d'indiquer le mode d'affichage 640x480 pixels. | |||
1 | Cette valeur permet d'indiquer le mode d'émulation CGA. | |||
DISTAN (DS) | B1h | distance (1 coordonnée) | Cette commande permet de fixer la distance de la vue en 3 dimensions. C'est la distance de l'oeil à la vue du point de référence. | |
DISTH (DH) | A8h | distance (1 coordonnée) | Cette commande permet de fixer la distance de la vue du point de référence à plage de capture «Hither». Tous les points les plus éloignés du spectateur que plage de la capture ne sont pas nécessairement affichés. | |
DISTY (DY) | A9h | distance (1 coordonnée) | Cette commande permet de fixer la distance de la capture «Yon». Tous les points les plus proches de la vue de la plage de capture ne sont pas nécessairement affichés. | |
DRAW (D) | 28h | x,y (2 coordonnées) | Cette commande permet de dessiner de la position courante à la position spécifié. | |
DRAWR (DR) | 29h | dx,dy (2 coordonnées) | Cette commande permet de dessiner une ligne relative à la position courante. | |
DRAW3 (D3) | 2Ah | x,y,z (3 coordonnées) | Cette commande permet de dessiner de la position courante en 3 dimensions jusqu'à la position en 3 dimensions spécifiés. | |
DRAWR3 (DR3) | 2Bh | dx,dy,dz (3 coordonnées) | Cette commande permet d'effectuer le tracage d'une ligne relative à la position en 3 dimensions spécifiés. | |
ELIPSE (EL) | 39h | Width,Height (2 coordonnées) | Cette commande permet de dessiner un ellipse centré à la position de dessin courant. | |
FILMSK (FM) | EFh | mask (1 octet) | Cette commande permet de fixer le masque de remplissage. | |
FLAGRD (FRD) | 51h | Flag no. (1 octet) | Cette commande permet de lire les drapeaux de la carte vidéo PGC. | |
FLOOD (F) | 07h | colour (1 octet) | Cette commande permet de remplir la région correspondant à la vue. | |
IMAGER (IR) | D8h | row,col1,col2 (3 mots) | Cette commande permet de lire quelques ou tous les points d'une ligne de pixels et la commande IMAGEW retournera la ligne de pixel. | |
IMAGEW (IW) | D9h | row,col1,col2, data (3 mots, alors des octets de données) | Cette commande permet de mettre quelques ou toute la ligne de pixels entre la colonne spécifié. | |
LINFUN (LF) | EBh | mode (1 octet) | Cette commande permet de fixer le mode dessin selon les valeurs suivantes : | |
Valeur | Description | |||
0 | Cette valeur permet de fixer les pixels à la couleur sélectionné courante. | |||
1 | Cette valeur permet d'inverser la couleurs des pixels. | |||
LINPAT (LP) | EAh | pattern (1 mot) | Cette commande permet de sélectionner un motif de ligne (pour des lignes pointillé). Le paramètre est un mot traité comme un motif de Bitmap. | |
LUT (L) | EEh | ink, r, g, b (4 octets) | Cette commande permet de fixer la palette de couleur ink, dans l'intervalle de 0 à 255. Les couleurs r (rouge), g (vert), b (bleu) doivent être situé dans l'intervalle de 0 à 15. | |
LUTINT (LI) | ECh | palette (1 octets) | Cette commande permet de fixer la palette standard (0 à 5 ou 255). | |
LUTRD (LRD) | 50h | ink (1 octet) | Cette commande permet de lire les valeurs de la palette de couleur ink, dans l'intervalle de 0 à 255. Elle retourne les valeurs rouge/vert/bleu dans un tampon de sortie. | |
LUTSAV (LS) | EDh | Aucun | Cette commande permet de sauvegarder la palette courante. Vous pouvez la restaurer avec la LUTINT 255. | |
MASK (MK) | E8h | mask (1 octet) | Cette commande permet de fixer le masque de dessin. | |
MATXRD (MRD) | 52h | id (1 octet) | Cette commande permet de lire une matrice d'un modèle en 3 dimensions. Elle retourne 16 octets, correspondant à une matrice de 4x4. Voici les valeurs reconnues : | |
Valeur | Description | |||
1 | Cette valeur permet d'indiquer matrice de modèle. | |||
2 | Cette valeur permet d'indiquer matrice de vue. | |||
MDIDEN (MDI) | 90h | Aucun | Cette commande permet de réinitialisé la matrice d'un modèle en 3 dimensions à son identité. | |
MDMATX (MDM) | 97h | 16 coordonnées | Cette commande permet de fixer la matrice d'un modèle en 3 dimensions : un tableau 4x4 de coordonnées. | |
MDORG (MDO) | 91h | x,y,z (3 coordonnées) | Cette commande permet de fixer l'origine d'une matrice d'un modèle en 3 dimensions. | |
MDROTX (MDX) | 93h | angle (1 mot) | Cette commande permet de fixer la rotation de l'axe X d'un modèle en 3 dimensions. | |
MDROTY (MDY) | 94h | angle (1 mot) | Cette commande permet de fixer la rotation de l'axe Y d'un modèle en 3 dimensions. | |
MDROTZ (MDZ) | 95h | angle (1 mot) | Cette commande permet de fixer la rotation de l'axe Z d'un modèle en 3 dimensions. | |
MDSCAL (MDS) | 92h | xscale, yscale, zscale (3 coordonnées) | Cette commande permet d'effectuer une mise à l'échelle d'un modèle en 3 dimensions. | |
MDTRAN (MDT) | 92h | dx, dy, dz (3 coordonnées) | Cette commande permet d'effectuer une translation d'un modèle en 3 dimensions. | |
MOVE (M) | 10h | x,y (2 coordonnées) | Cette commande permet de fixer la position de dessin courant. | |
MOVER (MR) | 11h | dx,dy (2 coordonnées) | Cette commande permet d'ajouter les valeurs fournit à la position de dessin courant. | |
MOVE3 (M3) | 12h | x,y,z (3 coordonnées) | Cette commande permet de fixer la position de dessin en 3 dimensions. | |
MOVER3 (MR3) | 13h | dx,dy,dz (3 coordonnées) | Cette commande permet de fournir les valeurs de la position courante de dessin en 3 dimensions. | |
POINT (PT) | 08h | Aucun | Cette commande permet d'afficher un pixel avec la couleur spécifié à la position de dessin spécifié. | |
POINT3 (PT3) | 09h | Aucun | Cette commande permet d'afficher un pixel avec la couleur spécifié avec un position de dessin en 3 dimensions. | |
POLY (P) | 30h | count, x1,y1,x2,y2,... (1 octet, suivi par 2*count coordonnées) | Cette commande permet d'indiquer le nombre de points d'un polygone. | |
POLYR (PR) | 31h | count, x1,y1,x2,y2,... (1 octet, suivi par 2*count coordonnées) | Cette commande permet d'indiquer les coordonnées relative d'un point de polygone à partir de la position de dessin courant. | |
POLY3 (P3) | 32h | count, x1,y1,z1,... (1 octet, suivi par 3*count coordonnées) | Cette commande permet de dessiner un polygone dans une espace en 3 dimensions avec des coordonnées x,y,z. | |
POLYR3 (PR3) | 33h | count, x1,y1,z1,... (1 octet, suivi par 3*count coordonnées) | Cette commande permet de dessiner un polygone dans une espace en 3 dimensions avec des coordonnées x,y,z relative. | |
PRMFIL (PF) | E9h | fill (1 octet) | Cette commande permet de fixer la valeur de remplissage d'un polygone, soit une valeur entre 0 et 2 : | |
Valeur | Description | |||
0 | Cette valeur permet d'indiquer qu'il faut dessiner les polygones sous forme de contours. | |||
1 | Cette valeur permet d'indiquer qu'il faut remplir les polygones avec le motif de remplissage courant. | |||
2 | Cette valeur permet d'indiquer qu'il ne faut pas vérifier les polygones générés et donc la performance est légèrement amélioré. | |||
PROJCT (PRO) | B0h | angle (1 mot) | Cette commande permet de fixer le type de projection utilisé dans une transformation de 3 dimensions à 2 dimensions. | |
RECT (R) | 34h | x,y (2 coordonnées) | Cette commande permet de dessiner un rectangle de la position courant à la coordonnée absolue du coin inférieur spécifié. | |
RECTR (RR) | 35h | dx,dy (2 coordonnées) | Cette commande permet de dessiner un rectangle avec coordonnées relatives à partir de la position de dessin courant. | |
RESETF (RF) | 04h | Aucun | Cette commande permet de réinitialiser la carte vidéo PGC à ses paramètres par défaut. | |
SCAN | 5Fh | search (1 octet) | Cette commande permet de retourner 1 si l'octet spécifié est trouvé (dans le tampon d'image) ou 1 sinon. | |
SECTOR (S) | 3D | radius,angle1,angle2 (1 coordonnées, 2 mots) | Cette commande permet d'effectuer un arc avec le point à la fin. | |
TANGLE (TA) | 82h | angle (1 mot) | Cette commande permet de fixer l'angle de ligne de base utilisé pour dessiner du texte. | |
TDEFIN (TD) | 84h | char_id, width, height, bits... (octets) | Cette commande permet de fixer la forme d'un caractère utilisateur. | |
TEXT (T) | 80h | "txt" ou 'txt' | Cette commande permet de dessiner le texte spécifié du coin inférieur gauche à la position courante. | |
TEXTP (TP) | 83h | "txt" ou 'txt' | Cette commande permet de dessiner le texte spécifié en utilisant les caractères définit par TDEFIN. | |
TJUST (TJ) | 85h | (2 octets) | Cette commande permet de fixer le texte à la position relative vers le point courant. | |
TSIZE (TS) | 81h | size (1 coordonnée) | Cette commande permet de fixer l'espace horizontal entre les caractères. | |
VWIDEN (VWI) | A0h | Aucun | Cette commande permet de réinitialiser la matrice de vue à son identité. | |
VWMATX (VWM) | A7h | 16 coordonnées. | Cette commande permet de fixer la matrice de vue en 3 dimensions. | |
VWPORT (VWP) | A1h | x1, x2, y1, y2 (mots) | Cette commande permet de fixer la région de la vue. | |
VWRPT (VWR) | A1h | x,y,z (3 coordonnées) | Cette commande permet de fixer un point de référence d'une vue en 3 dimensions. | |
VWROTX (VWX) | A3h | angle (1 mot) | Cette commande permet d'indiquer une rotation en 3 dimensions de la vue (X). | |
VWROTY (VWY) | A4h | angle (1 mot) | Cette commande permet d'indiquer une rotation en 3 dimensions de la vue (Y). | |
VWROTZ (VWZ) | A5h | angle (1 mot) | Cette commande permet d'indiquer une rotation en 3 dimensions de la vue (Z). | |
WAIT (W) | 05h | delay (1 mot) | Cette commande permet d'attendre le nombre de balayage spécifié. | |
WINDOW (WI) | B3h, 4 mots | x1, x2, y1, y2 (mots) | Cette commande permet de fixer les coordonnées de fenêtre de visualisation. | |
5Bh 71h 8Ch | segment, offset,checksum (3 mots) | Cette commande permet de sauter à point de transfert de tampon pour un diagnostique de la carte vidéo PGC. |
Concurrence
Il existe de nombreux clones de la carte vidéo PGC d'IBM fait par d'autres fabricant. Voici les modèles les plus connues :
Fabricant | Modèles |
---|---|
Matrox | PG-640, PG-1280 et QG-640 |
Dell | NEC MVA-1024 |
Everex | EPGA |
Orchid Technology | TurboPGA |
Vermont Microsystems | IM-640, IM-1024 |