typedef unsigned char byte; typedef unsigned short word; typedef unsigned long dword; #include #include #include #include "vesa.h" char * Version_to_string(word Version) { static char Chaine[20]; sprintf(Chaine,"%d",(Version>>8)); strcat(Chaine,"."); sprintf(Chaine+strlen(Chaine),"%d",(Version & 0xFF)); return Chaine; } void Lire_infos_VESA(void) { struct S_Buffer_VESA Buffer_VESA; struct S_Buffer_mode_VESA Buffer_mode_VESA; word Retour; int Nombre_de_modes; word * Liste_des_modes; int Offset1; int Offset2; char Libelle_du_nombre_de_couleurs[16]; int Nombre_de_bits; Retour=Get_VESA_info(&Buffer_VESA); if (Retour==0x004F) { if (memcmp(Buffer_VESA.Signature,"VESA",4)==0) { printf("VESA version : %s\n",Version_to_string(Buffer_VESA.Version)); printf("Builder : %s\n",Buffer_VESA.Fabricant); printf("Capabilities : %d\n",Buffer_VESA.Capacite); printf("Video memory : %dK\n",Buffer_VESA.Memoire*64); if (Buffer_VESA.Version>=0x0200) { printf("OEM version : %s\n",Version_to_string(Buffer_VESA.Version_bios)); printf("Vendor : %s\n",Buffer_VESA.Vendeur); printf("Product : %s\n",Buffer_VESA.Produit); printf("Revision : %s\n",Buffer_VESA.Revision); } // Comptage du nombre de modes: Nombre_de_modes=0; for (Offset1=0;Buffer_VESA.Liste_des_modes[Offset1]!=0xFFFF;Offset1++) Nombre_de_modes++; // Allocation d'une liste dupliqu‚e des modes: Liste_des_modes=(word *)malloc(sizeof(word)*Nombre_de_modes); // Copie de la liste des modes originale vers la dupliqu‚e: memcpy(Liste_des_modes,Buffer_VESA.Liste_des_modes,sizeof(word)*Nombre_de_modes); // Affichage de la liste des modes: for (Offset1=0;Offset1