C'est bien via int 10h que tu dois prendre pour écrire directement dans la mémoire vidéo. Pour le DOS, ces exemples suivants fonctionnement bien.
1er exemple : afficher un simple caractère
void AfficherCar(char Car, int Coul)
{
union REGS rin, rout;
rin.h.ah = 9; /* No du service */
rin.h.al = Car; /* CaractŠre … afficher */
rin.h.bh = 0; /* No de page */
rin.h.bl = Coul; /* Couleur */
rin.x.cx = 1; /* Nb d'exemplaires */
int86(0x10,&rin, &rout); /* Interruption logicielle */
}
2e exemple : effacer l'écran en noir ou de n'importe quelle couleur.
void EffacerEcran(Byte Coul)
{
int i;
Byte far *ptrVideo = (Byte far *) 0xB8000000;
for (i = 0; i < 2000; i++)
{
*ptrVideo++ = '█'; //caractère à afficher
*ptrVideo++ = Coul;
}
}
On met dans le début du programme les DEFINEs suivants qui serviront de paramètre pour la variable Coul utilisée comme simple paramètre.
#define NOIR 0x00
#define BLEU 0x01
#define VERT 0x02
#define CYAN 0x03
#define ROUGE 0x04
#define JAUNE 0x0E
#define BLANC 0x0F
3e exemple: Écriture d'une chaîne de caractères à l'écran. *ch représente le texte ou la variable contenant le texte.
void EcrireChaine(Byte *ch, int Lig, int Col, Byte Couleur)
{
Byte far *ptrVideo = (Byte far *) 0xB8000000;
Byte far *ptr = ptrVideo + 160 * (Lig-1) + 2 * (Col-1);
for( ; *ch; ch++)
{
*ptr++ = *ch;
*ptr++ = Couleur;
}
}
Un appel à cette procédure pourrait être comme suit:
EcrireChaine("Menu Option 1",10,30, BLANC);
Ce sont des exemples bien basiques... mais il existe un programme qui s'appelle Helppc pour se documenter sur les interruptions, les registres.
[edit]--Message édité par AlphaT--[/edit]