/* Fonctions de paramètrage de Mode et de tracé de pixel pour le mode 640x480 * en 256 couleurs des SuperVGAs Tseng Labs ET4000. * Testées avec Borland C++ 4.02 en modèle small par Jim Mischel 12/16/94. */ #include /*Dimension globale de l'écran, utilisée dans le programme principal*/ int ScreenWidthInPixels = 640; int ScreenHeightInPixels = 480; /* Fonction de tracé de pixel en ET4000 640x480 en 256 couleurs. */ void DrawPixel(int X, int Y, int Color) { #define SCREEN_SEGMENT 0xA000 #define GC_SEGMENT_SELECT 0x3CD /* registre de sélection de segment ET4000 (banque) */ unsigned char far *ScreenPtr; unsigned int Bank; unsigned long BitmapAddress; /* Adresse complète de la bitmap de pixel, mesurée à l'adresse 0 à 0xFFFFF */ BitmapAddress = (unsigned long) Y * ScreenWidthInPixels + X; /* Le numéro de banque est le mot supérieur de l'adresse bitmap */ Bank = BitmapAddress >> 16; /* Les quatre bits supérieur correspondent au numéro de banque de lecture, les quatre bits inférieur est le numéro banque d'écriture */ outp(GC_SEGMENT_SELECT, (Bank << 4) | Bank); /* Trace dans la banque */ FP_SEG(ScreenPtr) = SCREEN_SEGMENT; FP_OFF(ScreenPtr) = (unsigned int) BitmapAddress; *ScreenPtr = Color; } /* Fonction de paramètrage de mode 640x480 en 256 couleurs de ET4000. */ void SetMode() { union REGS regset; /* Paramètre le mode graphique 640x480 en 256 couleurs */ regset.x.ax = 0x002E; int86(0x10, ®set, ®set); }