/* Exemple mode 13h DJGPP */ #include #include #include #include #include #include /* Ecran virtuel */ unsigned char *virtuel; /* Active le mode 13h */ void setmode(unsigned int mode) { __dpmi_regs r; r.x.ax=mode; __dpmi_int(0x10, &r); } /* Affiche un pixel */ void putpixel(int x, int y, unsigned char c) { virtuel[(y<<8)+(y<<6)+x]=c; } /* Vide l'ecran virtuel */ void vide() { memset(virtuel,0,64000); } /* Copie le contenu de l'ecran virtuel sur l'ecran physique */ void copie() { _dosmemputl(virtuel,16000,0xA0000); } int main() { /* Alloue 64000 octets pour 320x200x8 */ virtuel = (unsigned char *) malloc(64000); setmode(0x13); /* mode 13h */ vide(); /* vide ecran virtuel */ putpixel(160,100,30); /* affiche pixel */ copie(); /* copie contenu */ while(!kbhit()); /* attend une touche */ getch(); setmode(0x03); /* mode texte */ free(virtuel); /* libere la mem pour ecran virtuel */ return 0; }