ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

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;
}

Generated on Fri May 25 2012 04:46:01 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.