X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f Lines: 55 X-Admin: news AT aol DOT com From: jbs30000 AT aol DOT com (JBS30000) Newsgroups: comp.os.msdos.djgpp Date: 26 Sep 2004 19:29:03 GMT References: Organization: AOL http://www.aol.com Subject: Re: Strange VESA problem Message-ID: <20040926152903.25170.00001483@mb-m04.aol.com> To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com >It would help if you posted all the relevant parts of the real code. I thought I did. The method I use to get and display the other strings, such as the OEM Vender Name, and so fourth are the same. But, if you want more code... Here's the struct in its entirety: struct VBE_VgaInfo { char VESA_Signature[4] __attribute__((packed)); short VESA_Version __attribute__((packed)); long OEM_String_PTR __attribute__((packed)); unsigned long Capabilities __attribute__((packed)); long Video_Mode_PTR __attribute__((packed)); short Total_Memory __attribute__((packed)); //VBE 2.0 short OEM_Software_Rev __attribute__((packed)); long OEM_Vendor_Name_PTR __attribute__((packed)); long OEM_Product_Name_PTR __attribute__((packed)); long OEM_Product_Rev_PTR __attribute__((packed)); char reserved[222] __attribute__((packed)); char OEM_Data[256] __attribute__((packed)); }vesainfo; After using functin 0 to get the information and fill the struct, I use these variables to hold the strings: char OEM_String[255], OEM_Vendor_Name[256], OEM_Product_Name[256], OEM_Product_Rev[256]; And, for the real mode offset I have: short Real_Mode_PTR Now, to get the strings, I go: Real_Mode_PTR = ((vesainfo.OEM_String_PTR >> 16) << 4) + (vesainfo.OEM_String_PTR & 0xFFFF); dosmemget(Real_Mode_PTR & 0xFFFF, 255, OEM_String); Real_Mode_PTR = ((vesainfo.OEM_Vendor_Name_PTR >> 16) << 4) + (vesainfo.OEM_Vendor_Name_PTR & 0xFFFF); dosmemget(Real_Mode_PTR & 0xFFFF, 256, OEM_Vendor_Name); Real_Mode_PTR = ((vesainfo.OEM_Product_Name_PTR >> 16) << 4) + (vesainfo.OEM_Product_Name_PTR & 0xFFFF); dosmemget(Real_Mode_PTR & 0xFFFF, 256, OEM_Product_Name); Real_Mode_PTR = ((vesainfo.OEM_Product_Rev_PTR >> 16) << 4) + (vesainfo.OEM_Product_Rev_PTR & 0xFFFF); dosmemget(Real_Mode_PTR & 0xFFFF, 256, OEM_Product_Rev); Real_Mode_PTR = ((vesainfo.OEM_Product_Rev_PTR >> 16) << 4) + (vesainfo.OEM_Product_Rev_PTR & 0xFFFF); dosmemget(Real_Mode_PTR & 0xFFFF, 256, OEM_Product_Rev); And to print them: printf("Chipset or OEM %s \n", OEM_String); if(vesainfo.VESA_Version >= 0x0200) { printf("OEM Software Revision No. %x\n", vesainfo.OEM_Software_Rev); printf("OEM Vendor Name %s\n", OEM_Vendor_Name); printf("OEM Product Name %s\n", OEM_Product_Name); printf("OEM Product Revision No. %s\n", OEM_Product_Rev); And there, that's all of the RELEVANT code. Don't see what good this did, but anyway, I'll try your changes. Thanks.