1 | #ifndef vbe_h_included
|
---|
2 | #define vbe_h_included
|
---|
3 |
|
---|
4 | #include "vgabios.h"
|
---|
5 |
|
---|
6 | #include <VBoxVideoVBE.h>
|
---|
7 | #include <VBoxVideoVBEPrivate.h>
|
---|
8 |
|
---|
9 | // DISPI helper function
|
---|
10 | //void dispi_set_enable(Boolean enable);
|
---|
11 |
|
---|
12 | /** VBE int10 API
|
---|
13 | *
|
---|
14 | * See the function descriptions in vbe.c for more information
|
---|
15 | */
|
---|
16 |
|
---|
17 | /* Far pointer for VBE info block usage. */
|
---|
18 | typedef union vbe_ptr {
|
---|
19 | uint32_t Ptr32;
|
---|
20 | void __far *Ptr;
|
---|
21 | union {
|
---|
22 | uint16_t Off;
|
---|
23 | uint16_t Seg;
|
---|
24 | };
|
---|
25 | } vbe_ptr;
|
---|
26 |
|
---|
27 | // The official VBE Information Block
|
---|
28 | typedef struct VbeInfoBlock
|
---|
29 | {
|
---|
30 | union {
|
---|
31 | uint8_t SigChr[4];
|
---|
32 | uint32_t Sig32;
|
---|
33 | } VbeSignature;
|
---|
34 | uint16_t VbeVersion;
|
---|
35 | vbe_ptr OemString;
|
---|
36 | uint8_t Capabilities[4];
|
---|
37 | uint16_t VideoModePtr_Off;
|
---|
38 | uint16_t VideoModePtr_Seg;
|
---|
39 | uint16_t TotalMemory;
|
---|
40 | uint16_t OemSoftwareRev;
|
---|
41 | vbe_ptr OemVendorName;
|
---|
42 | vbe_ptr OemProductName;
|
---|
43 | vbe_ptr OemProductRev;
|
---|
44 | uint16_t Reserved[111]; // used for dynamically generated mode list
|
---|
45 | uint8_t OemData[256];
|
---|
46 | } VbeInfoBlock;
|
---|
47 |
|
---|
48 |
|
---|
49 | typedef struct ModeInfoBlock
|
---|
50 | {
|
---|
51 | // Mandatory information for all VBE revisions
|
---|
52 | uint16_t ModeAttributes;
|
---|
53 | uint8_t WinAAttributes;
|
---|
54 | uint8_t WinBAttributes;
|
---|
55 | uint16_t WinGranularity;
|
---|
56 | uint16_t WinSize;
|
---|
57 | uint16_t WinASegment;
|
---|
58 | uint16_t WinBSegment;
|
---|
59 | uint32_t WinFuncPtr;
|
---|
60 | uint16_t BytesPerScanLine;
|
---|
61 | // Mandatory information for VBE 1.2 and above
|
---|
62 | uint16_t XResolution;
|
---|
63 | uint16_t YResolution;
|
---|
64 | uint8_t XCharSize;
|
---|
65 | uint8_t YCharSize;
|
---|
66 | uint8_t NumberOfPlanes;
|
---|
67 | uint8_t BitsPerPixel;
|
---|
68 | uint8_t NumberOfBanks;
|
---|
69 | uint8_t MemoryModel;
|
---|
70 | uint8_t BankSize;
|
---|
71 | uint8_t NumberOfImagePages;
|
---|
72 | uint8_t Reserved_page;
|
---|
73 | // Direct Color fields (required for direct/6 and YUV/7 memory models)
|
---|
74 | uint8_t RedMaskSize;
|
---|
75 | uint8_t RedFieldPosition;
|
---|
76 | uint8_t GreenMaskSize;
|
---|
77 | uint8_t GreenFieldPosition;
|
---|
78 | uint8_t BlueMaskSize;
|
---|
79 | uint8_t BlueFieldPosition;
|
---|
80 | uint8_t RsvdMaskSize;
|
---|
81 | uint8_t RsvdFieldPosition;
|
---|
82 | uint8_t DirectColorModeInfo;
|
---|
83 | // Mandatory information for VBE 2.0 and above
|
---|
84 | uint32_t PhysBasePtr;
|
---|
85 | uint32_t OffScreenMemOffset;
|
---|
86 | uint16_t OffScreenMemSize;
|
---|
87 | // Mandatory information for VBE 3.0 and above
|
---|
88 | uint16_t LinBytesPerScanLine;
|
---|
89 | uint8_t BnkNumberOfPages;
|
---|
90 | uint8_t LinNumberOfPages;
|
---|
91 | uint8_t LinRedMaskSize;
|
---|
92 | uint8_t LinRedFieldPosition;
|
---|
93 | uint8_t LinGreenMaskSize;
|
---|
94 | uint8_t LinGreenFieldPosition;
|
---|
95 | uint8_t LinBlueMaskSize;
|
---|
96 | uint8_t LinBlueFieldPosition;
|
---|
97 | uint8_t LinRsvdMaskSize;
|
---|
98 | uint8_t LinRsvdFieldPosition;
|
---|
99 | uint32_t MaxPixelClock;
|
---|
100 | uint8_t Reserved[189];
|
---|
101 | } ModeInfoBlock;
|
---|
102 |
|
---|
103 | // VBE Return Status Info
|
---|
104 | // AL
|
---|
105 | #define VBE_RETURN_STATUS_SUPPORTED 0x4F
|
---|
106 | #define VBE_RETURN_STATUS_UNSUPPORTED 0x00
|
---|
107 | // AH
|
---|
108 | #define VBE_RETURN_STATUS_SUCCESSFULL 0x00
|
---|
109 | #define VBE_RETURN_STATUS_FAILED 0x01
|
---|
110 | #define VBE_RETURN_STATUS_NOT_SUPPORTED 0x02
|
---|
111 | #define VBE_RETURN_STATUS_INVALID 0x03
|
---|
112 |
|
---|
113 | #endif
|
---|