Annotation of qemu/roms/vgabios/vbe.h, revision 1.1

1.1     ! root        1: #ifndef vbe_h_included
        !             2: #define vbe_h_included
        !             3: 
        !             4: #include "vgabios.h"
        !             5: 
        !             6: // DISPI helper function
        !             7: void dispi_set_enable(enable);
        !             8: 
        !             9: /** VBE int10 API
        !            10:  *
        !            11:  *  See the function descriptions in vbe.c for more information
        !            12:  */
        !            13: Boolean vbe_has_vbe_display();
        !            14: void vbe_biosfn_return_controller_information(AX, ES, DI);
        !            15: void vbe_biosfn_return_mode_information(AX, CX, ES, DI);
        !            16: void vbe_biosfn_set_mode(AX, BX, ES, DI);
        !            17: void vbe_biosfn_save_restore_state(AX, CX, DX, ES, BX);
        !            18: void vbe_biosfn_set_get_palette_data(AX);
        !            19: void vbe_biosfn_return_protected_mode_interface(AX);
        !            20: 
        !            21: // The official VBE Information Block
        !            22: typedef struct VbeInfoBlock
        !            23: { 
        !            24:    Bit8u  VbeSignature[4];
        !            25:    Bit16u VbeVersion;
        !            26:    Bit16u OemStringPtr_Off;
        !            27:    Bit16u OemStringPtr_Seg;
        !            28:    Bit8u  Capabilities[4];
        !            29:    Bit16u VideoModePtr_Off;
        !            30:    Bit16u VideoModePtr_Seg;
        !            31:    Bit16u TotalMemory;
        !            32:    Bit16u OemSoftwareRev;
        !            33:    Bit16u OemVendorNamePtr_Off;
        !            34:    Bit16u OemVendorNamePtr_Seg;
        !            35:    Bit16u OemProductNamePtr_Off;
        !            36:    Bit16u OemProductNamePtr_Seg;
        !            37:    Bit16u OemProductRevPtr_Off;
        !            38:    Bit16u OemProductRevPtr_Seg;
        !            39:    Bit16u  Reserved[111]; // used for dynamicly generated mode list
        !            40:    Bit8u  OemData[256];
        !            41: } VbeInfoBlock;
        !            42: 
        !            43: 
        !            44: // This one is for compactly storing a static list of mode info blocks
        !            45: // this saves us 189 bytes per block
        !            46: typedef struct ModeInfoBlockCompact
        !            47: {
        !            48: // Mandatory information for all VBE revisions
        !            49:    Bit16u ModeAttributes;
        !            50:    Bit8u  WinAAttributes;
        !            51:    Bit8u  WinBAttributes;
        !            52:    Bit16u WinGranularity;
        !            53:    Bit16u WinSize;
        !            54:    Bit16u WinASegment;
        !            55:    Bit16u WinBSegment;
        !            56:    Bit32u WinFuncPtr;
        !            57:    Bit16u BytesPerScanLine;
        !            58: // Mandatory information for VBE 1.2 and above
        !            59:    Bit16u XResolution;
        !            60:    Bit16u YResolution;
        !            61:    Bit8u  XCharSize;
        !            62:    Bit8u  YCharSize;
        !            63:    Bit8u  NumberOfPlanes;
        !            64:    Bit8u  BitsPerPixel;
        !            65:    Bit8u  NumberOfBanks;
        !            66:    Bit8u  MemoryModel;
        !            67:    Bit8u  BankSize;
        !            68:    Bit8u  NumberOfImagePages;
        !            69:    Bit8u  Reserved_page;
        !            70: // Direct Color fields (required for direct/6 and YUV/7 memory models)
        !            71:    Bit8u  RedMaskSize;
        !            72:    Bit8u  RedFieldPosition;
        !            73:    Bit8u  GreenMaskSize;
        !            74:    Bit8u  GreenFieldPosition;
        !            75:    Bit8u  BlueMaskSize;
        !            76:    Bit8u  BlueFieldPosition;
        !            77:    Bit8u  RsvdMaskSize;
        !            78:    Bit8u  RsvdFieldPosition;
        !            79:    Bit8u  DirectColorModeInfo;
        !            80: // Mandatory information for VBE 2.0 and above
        !            81:    Bit32u PhysBasePtr;
        !            82:    Bit32u OffScreenMemOffset;
        !            83:    Bit16u OffScreenMemSize;
        !            84: // Mandatory information for VBE 3.0 and above
        !            85:    Bit16u LinBytesPerScanLine;
        !            86:    Bit8u  BnkNumberOfPages;
        !            87:    Bit8u  LinNumberOfPages;
        !            88:    Bit8u  LinRedMaskSize;
        !            89:    Bit8u  LinRedFieldPosition;
        !            90:    Bit8u  LinGreenMaskSize;
        !            91:    Bit8u  LinGreenFieldPosition;
        !            92:    Bit8u  LinBlueMaskSize;
        !            93:    Bit8u  LinBlueFieldPosition;
        !            94:    Bit8u  LinRsvdMaskSize;
        !            95:    Bit8u  LinRsvdFieldPosition;
        !            96:    Bit32u MaxPixelClock;
        !            97: //   Bit8u  Reserved[189]; // DO NOT PUT THIS IN HERE because of Compact Mode Info storage in bios 
        !            98: } ModeInfoBlockCompact;
        !            99: 
        !           100: typedef struct ModeInfoBlock
        !           101: {
        !           102: // Mandatory information for all VBE revisions
        !           103:    Bit16u ModeAttributes;
        !           104:    Bit8u  WinAAttributes;
        !           105:    Bit8u  WinBAttributes;
        !           106:    Bit16u WinGranularity;
        !           107:    Bit16u WinSize;
        !           108:    Bit16u WinASegment;
        !           109:    Bit16u WinBSegment;
        !           110:    Bit32u WinFuncPtr;
        !           111:    Bit16u BytesPerScanLine;
        !           112: // Mandatory information for VBE 1.2 and above
        !           113:    Bit16u XResolution;
        !           114:    Bit16u YResolution;
        !           115:    Bit8u  XCharSize;
        !           116:    Bit8u  YCharSize;
        !           117:    Bit8u  NumberOfPlanes;
        !           118:    Bit8u  BitsPerPixel;
        !           119:    Bit8u  NumberOfBanks;
        !           120:    Bit8u  MemoryModel;
        !           121:    Bit8u  BankSize;
        !           122:    Bit8u  NumberOfImagePages;
        !           123:    Bit8u  Reserved_page;
        !           124: // Direct Color fields (required for direct/6 and YUV/7 memory models)
        !           125:    Bit8u  RedMaskSize;
        !           126:    Bit8u  RedFieldPosition;
        !           127:    Bit8u  GreenMaskSize;
        !           128:    Bit8u  GreenFieldPosition;
        !           129:    Bit8u  BlueMaskSize;
        !           130:    Bit8u  BlueFieldPosition;
        !           131:    Bit8u  RsvdMaskSize;
        !           132:    Bit8u  RsvdFieldPosition;
        !           133:    Bit8u  DirectColorModeInfo;
        !           134: // Mandatory information for VBE 2.0 and above
        !           135:    Bit32u PhysBasePtr;
        !           136:    Bit32u OffScreenMemOffset;
        !           137:    Bit16u OffScreenMemSize;
        !           138: // Mandatory information for VBE 3.0 and above
        !           139:    Bit16u LinBytesPerScanLine;
        !           140:    Bit8u  BnkNumberOfPages;
        !           141:    Bit8u  LinNumberOfPages;
        !           142:    Bit8u  LinRedMaskSize;
        !           143:    Bit8u  LinRedFieldPosition;
        !           144:    Bit8u  LinGreenMaskSize;
        !           145:    Bit8u  LinGreenFieldPosition;
        !           146:    Bit8u  LinBlueMaskSize;
        !           147:    Bit8u  LinBlueFieldPosition;
        !           148:    Bit8u  LinRsvdMaskSize;
        !           149:    Bit8u  LinRsvdFieldPosition;
        !           150:    Bit32u MaxPixelClock;
        !           151:    Bit8u  Reserved[189];
        !           152: } ModeInfoBlock;
        !           153: 
        !           154: typedef struct ModeInfoListItem
        !           155: {
        !           156:   Bit16u                mode;
        !           157:   ModeInfoBlockCompact  info;
        !           158: } ModeInfoListItem;
        !           159: 
        !           160: // VBE Return Status Info
        !           161: // AL
        !           162: #define VBE_RETURN_STATUS_SUPPORTED                      0x4F
        !           163: #define VBE_RETURN_STATUS_UNSUPPORTED                    0x00
        !           164: // AH
        !           165: #define VBE_RETURN_STATUS_SUCCESSFULL                    0x00
        !           166: #define VBE_RETURN_STATUS_FAILED                         0x01
        !           167: #define VBE_RETURN_STATUS_NOT_SUPPORTED                  0x02
        !           168: #define VBE_RETURN_STATUS_INVALID                        0x03
        !           169: 
        !           170: // VBE Mode Numbers
        !           171: 
        !           172: #define VBE_MODE_VESA_DEFINED                            0x0100
        !           173: #define VBE_MODE_REFRESH_RATE_USE_CRTC                   0x0800
        !           174: #define VBE_MODE_LINEAR_FRAME_BUFFER                     0x4000
        !           175: #define VBE_MODE_PRESERVE_DISPLAY_MEMORY                 0x8000
        !           176: 
        !           177: // VBE GFX Mode Number
        !           178: 
        !           179: #define VBE_VESA_MODE_640X400X8                          0x100
        !           180: #define VBE_VESA_MODE_640X480X8                          0x101
        !           181: #define VBE_VESA_MODE_800X600X4                          0x102
        !           182: #define VBE_VESA_MODE_800X600X8                          0x103
        !           183: #define VBE_VESA_MODE_1024X768X4                         0x104
        !           184: #define VBE_VESA_MODE_1024X768X8                         0x105
        !           185: #define VBE_VESA_MODE_1280X1024X4                        0x106
        !           186: #define VBE_VESA_MODE_1280X1024X8                        0x107
        !           187: #define VBE_VESA_MODE_320X200X1555                       0x10D
        !           188: #define VBE_VESA_MODE_320X200X565                        0x10E
        !           189: #define VBE_VESA_MODE_320X200X888                        0x10F
        !           190: #define VBE_VESA_MODE_640X480X1555                       0x110
        !           191: #define VBE_VESA_MODE_640X480X565                        0x111
        !           192: #define VBE_VESA_MODE_640X480X888                        0x112
        !           193: #define VBE_VESA_MODE_800X600X1555                       0x113
        !           194: #define VBE_VESA_MODE_800X600X565                        0x114
        !           195: #define VBE_VESA_MODE_800X600X888                        0x115
        !           196: #define VBE_VESA_MODE_1024X768X1555                      0x116
        !           197: #define VBE_VESA_MODE_1024X768X565                       0x117
        !           198: #define VBE_VESA_MODE_1024X768X888                       0x118
        !           199: #define VBE_VESA_MODE_1280X1024X1555                     0x119
        !           200: #define VBE_VESA_MODE_1280X1024X565                      0x11A
        !           201: #define VBE_VESA_MODE_1280X1024X888                      0x11B
        !           202: #define VBE_VESA_MODE_1600X1200X8                        0x11C
        !           203: #define VBE_VESA_MODE_1600X1200X1555                     0x11D
        !           204: #define VBE_VESA_MODE_1600X1200X565                      0x11E
        !           205: #define VBE_VESA_MODE_1600X1200X888                      0x11F
        !           206: 
        !           207: // BOCHS/PLEX86 'own' mode numbers
        !           208: #define VBE_OWN_MODE_320X200X8888                        0x140
        !           209: #define VBE_OWN_MODE_640X400X8888                        0x141
        !           210: #define VBE_OWN_MODE_640X480X8888                        0x142
        !           211: #define VBE_OWN_MODE_800X600X8888                        0x143
        !           212: #define VBE_OWN_MODE_1024X768X8888                       0x144
        !           213: #define VBE_OWN_MODE_1280X1024X8888                      0x145
        !           214: #define VBE_OWN_MODE_320X200X8                           0x146
        !           215: #define VBE_OWN_MODE_1600X1200X8888                      0x147
        !           216: #define VBE_OWN_MODE_1152X864X8                          0x148
        !           217: #define VBE_OWN_MODE_1152X864X1555                       0x149
        !           218: #define VBE_OWN_MODE_1152X864X565                        0x14a
        !           219: #define VBE_OWN_MODE_1152X864X888                        0x14b
        !           220: #define VBE_OWN_MODE_1152X864X8888                       0x14c
        !           221: 
        !           222: #define VBE_VESA_MODE_END_OF_LIST                        0xFFFF
        !           223: 
        !           224: // Capabilities
        !           225: 
        !           226: #define VBE_CAPABILITY_8BIT_DAC                          0x0001
        !           227: #define VBE_CAPABILITY_NOT_VGA_COMPATIBLE                0x0002
        !           228: #define VBE_CAPABILITY_RAMDAC_USE_BLANK_BIT              0x0004
        !           229: #define VBE_CAPABILITY_STEREOSCOPIC_SUPPORT              0x0008
        !           230: #define VBE_CAPABILITY_STEREO_VIA_VESA_EVC               0x0010
        !           231: 
        !           232: // Mode Attributes
        !           233: 
        !           234: #define VBE_MODE_ATTRIBUTE_SUPPORTED                     0x0001
        !           235: #define VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE  0x0002
        !           236: #define VBE_MODE_ATTRIBUTE_TTY_BIOS_SUPPORT              0x0004
        !           237: #define VBE_MODE_ATTRIBUTE_COLOR_MODE                    0x0008
        !           238: #define VBE_MODE_ATTRIBUTE_GRAPHICS_MODE                 0x0010
        !           239: #define VBE_MODE_ATTRIBUTE_NOT_VGA_COMPATIBLE            0x0020
        !           240: #define VBE_MODE_ATTRIBUTE_NO_VGA_COMPATIBLE_WINDOW      0x0040
        !           241: #define VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE      0x0080
        !           242: #define VBE_MODE_ATTRIBUTE_DOUBLE_SCAN_MODE              0x0100
        !           243: #define VBE_MODE_ATTRIBUTE_INTERLACE_MODE                0x0200
        !           244: #define VBE_MODE_ATTRIBUTE_HARDWARE_TRIPLE_BUFFER        0x0400
        !           245: #define VBE_MODE_ATTRIBUTE_HARDWARE_STEREOSCOPIC_DISPLAY 0x0800
        !           246: #define VBE_MODE_ATTRIBUTE_DUAL_DISPLAY_START_ADDRESS    0x1000
        !           247: 
        !           248: #define VBE_MODE_ATTTRIBUTE_LFB_ONLY                     ( VBE_MODE_ATTRIBUTE_NO_VGA_COMPATIBLE_WINDOW | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE )
        !           249: 
        !           250: // Window attributes
        !           251: 
        !           252: #define VBE_WINDOW_ATTRIBUTE_RELOCATABLE                 0x01
        !           253: #define VBE_WINDOW_ATTRIBUTE_READABLE                    0x02
        !           254: #define VBE_WINDOW_ATTRIBUTE_WRITEABLE                   0x04
        !           255: 
        !           256: // Memory model
        !           257: 
        !           258: #define VBE_MEMORYMODEL_TEXT_MODE                        0x00
        !           259: #define VBE_MEMORYMODEL_CGA_GRAPHICS                     0x01
        !           260: #define VBE_MEMORYMODEL_HERCULES_GRAPHICS                0x02
        !           261: #define VBE_MEMORYMODEL_PLANAR                           0x03
        !           262: #define VBE_MEMORYMODEL_PACKED_PIXEL                     0x04
        !           263: #define VBE_MEMORYMODEL_NON_CHAIN_4_256                  0x05
        !           264: #define VBE_MEMORYMODEL_DIRECT_COLOR                     0x06
        !           265: #define VBE_MEMORYMODEL_YUV                              0x07
        !           266: 
        !           267: // DirectColorModeInfo
        !           268: 
        !           269: #define VBE_DIRECTCOLOR_COLOR_RAMP_PROGRAMMABLE          0x01
        !           270: #define VBE_DIRECTCOLOR_RESERVED_BITS_AVAILABLE          0x02
        !           271: 
        !           272: // GUEST <-> HOST Communication API
        !           273: 
        !           274: // FIXME: either dynamicly ask host for this or put somewhere high in physical memory
        !           275: //        like 0xE0000000
        !           276: 
        !           277: 
        !           278:   #define VBE_DISPI_BANK_ADDRESS          0xA0000
        !           279:   #define VBE_DISPI_BANK_SIZE_KB          64
        !           280:   
        !           281:   #define VBE_DISPI_MAX_XRES              1024
        !           282:   #define VBE_DISPI_MAX_YRES              768
        !           283:   
        !           284:   #define VBE_DISPI_IOPORT_INDEX          0x01CE
        !           285:   #define VBE_DISPI_IOPORT_DATA           0x01CF
        !           286:   
        !           287:   #define VBE_DISPI_INDEX_ID              0x0
        !           288:   #define VBE_DISPI_INDEX_XRES            0x1
        !           289:   #define VBE_DISPI_INDEX_YRES            0x2
        !           290:   #define VBE_DISPI_INDEX_BPP             0x3
        !           291:   #define VBE_DISPI_INDEX_ENABLE          0x4
        !           292:   #define VBE_DISPI_INDEX_BANK            0x5
        !           293:   #define VBE_DISPI_INDEX_VIRT_WIDTH      0x6
        !           294:   #define VBE_DISPI_INDEX_VIRT_HEIGHT     0x7
        !           295:   #define VBE_DISPI_INDEX_X_OFFSET        0x8
        !           296:   #define VBE_DISPI_INDEX_Y_OFFSET        0x9
        !           297:       
        !           298:   #define VBE_DISPI_ID0                   0xB0C0
        !           299:   #define VBE_DISPI_ID1                   0xB0C1
        !           300:   #define VBE_DISPI_ID2                   0xB0C2
        !           301:   #define VBE_DISPI_ID3                   0xB0C3
        !           302:   #define VBE_DISPI_ID4                   0xB0C4
        !           303:   
        !           304:   #define VBE_DISPI_DISABLED              0x00
        !           305:   #define VBE_DISPI_ENABLED               0x01
        !           306:   #define VBE_DISPI_GETCAPS               0x02
        !           307:   #define VBE_DISPI_8BIT_DAC              0x20
        !           308:   #define VBE_DISPI_LFB_ENABLED           0x40
        !           309:   #define VBE_DISPI_NOCLEARMEM            0x80
        !           310:   
        !           311:   #define VBE_DISPI_LFB_PHYSICAL_ADDRESS  0xE0000000
        !           312: 
        !           313: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.