Home | Info | Community | Development | myReactOS | Contact Us
Definition at line 162 of file i386vid.c.
Referenced by DetectDisplayController().
{ REGS Regs; PVESA_SVGA_INFO SvgaInfo = (PVESA_SVGA_INFO)BIOSCALLBUFFER; //USHORT* VideoModes; //USHORT Index; TRACE("BiosIsVesaSupported()\n"); RtlZeroMemory(SvgaInfo, sizeof(VESA_SVGA_INFO)); // Make sure we receive version 2.0 info SvgaInfo->Signature[0] = 'V'; SvgaInfo->Signature[1] = 'B'; SvgaInfo->Signature[2] = 'E'; SvgaInfo->Signature[3] = '2'; // Int 10h AX=4F00h // VESA SuperVGA BIOS (VBE) - GET SuperVGA INFORMATION // // AX = 4F00h // ES:DI -> buffer for SuperVGA information (see #00077) // Return: // AL = 4Fh if function supported // AH = status // 00h successful // ES:DI buffer filled // 01h failed // ---VBE v2.0--- // 02h function not supported by current hardware configuration // 03h function invalid in current video mode // // Determine whether VESA BIOS extensions are present and the // capabilities supported by the display adapter // // Installation check;VESA SuperVGA Regs.w.ax = 0x4F00; Regs.w.es = BIOSCALLBUFSEGMENT; Regs.w.di = BIOSCALLBUFOFFSET; Int386(0x10, &Regs, &Regs); TRACE("AL = 0x%x\n", Regs.b.al); TRACE("AH = 0x%x\n", Regs.b.ah); if (Regs.w.ax != 0x004F) { ERR("VESA BIOS call failed\n"); return 0x0000; } TRACE("Supported.\n"); TRACE("SvgaInfo->Signature[4] = %c%c%c%c\n", SvgaInfo->Signature[0], SvgaInfo->Signature[1], SvgaInfo->Signature[2], SvgaInfo->Signature[3]); TRACE("SvgaInfo->VesaVersion = v%d.%d\n", ((SvgaInfo->VesaVersion >> 8) & 0xFF), (SvgaInfo->VesaVersion & 0xFF)); TRACE("SvgaInfo->OemNamePtr = 0x%x\n", SvgaInfo->OemNamePtr); TRACE("SvgaInfo->Capabilities = 0x%x\n", SvgaInfo->Capabilities); TRACE("SvgaInfo->VideoMemory = %dK\n", SvgaInfo->TotalVideoMemory * 64); TRACE("---VBE v2.0 ---\n"); TRACE("SvgaInfo->OemSoftwareVersion = v%d.%d\n", ((SvgaInfo->OemSoftwareVersion >> 8) & 0x0F) + (((SvgaInfo->OemSoftwareVersion >> 12) & 0x0F) * 10), (SvgaInfo->OemSoftwareVersion & 0x0F) + (((SvgaInfo->OemSoftwareVersion >> 4) & 0x0F) * 10)); TRACE("SvgaInfo->VendorNamePtr = 0x%x\n", SvgaInfo->VendorNamePtr); TRACE("SvgaInfo->ProductNamePtr = 0x%x\n", SvgaInfo->ProductNamePtr); TRACE("SvgaInfo->ProductRevisionStringPtr = 0x%x\n", SvgaInfo->ProductRevisionStringPtr); TRACE("SvgaInfo->VBE/AF Version = 0x%x (BCD WORD)\n", SvgaInfo->VBE_AF_Version); if (SvgaInfo->Signature[0] != 'V' || SvgaInfo->Signature[1] != 'E' || SvgaInfo->Signature[2] != 'S' || SvgaInfo->Signature[3] != 'A') { ERR("Bad signature in VESA information (%c%c%c%c)\n", SvgaInfo->Signature[0], SvgaInfo->Signature[1], SvgaInfo->Signature[2], SvgaInfo->Signature[3]); return 0x0000; } return SvgaInfo->VesaVersion; }