14#define VGA_NUM_BANKS 4
15#define VGA_BANK_SIZE 0x10000
16#define VGA_MAX_COLORS 256
17#define VGA_PALETTE_SIZE (VGA_MAX_COLORS * 3)
18#define VGA_BITMAP_INFO_SIZE (sizeof(BITMAPINFOHEADER) + 2 * (VGA_PALETTE_SIZE / 3))
19#define VGA_MINIMUM_WIDTH 400
20#define VGA_MINIMUM_HEIGHT 300
21#define VGA_DAC_TO_COLOR(x) (((x) << 2) | ((x) >> 4))
22#define VGA_COLOR_TO_DAC(x) ((x) >> 2)
23#define VGA_INTERLACE_HIGH_BIT (1 << 13)
24#define VGA_FONT_BANK 2
25#define VGA_FONT_CHARACTERS 256
26#define VGA_MAX_FONT_HEIGHT 32
27#define VGA_FONT_SIZE (VGA_FONT_CHARACTERS * VGA_MAX_FONT_HEIGHT)
28#define VGA_CLOCK_BASE 14318181
30#define SVGA_IS_UNLOCKED (VgaSeqRegisters[SVGA_SEQ_UNLOCK_REG] == SVGA_SEQ_UNLOCKED)
31#define SVGA_BANK_SIZE 0x100000
33#define SVGA_SEQ_MAX_UNLOCKED_REG (SVGA_IS_UNLOCKED ? SVGA_SEQ_MAX_REG : SVGA_SEQ_EXT_MODE_REG)
34#define SVGA_CRTC_MAX_UNLOCKED_REG (SVGA_IS_UNLOCKED ? SVGA_CRTC_MAX_REG : VGA_CRTC_MAX_REG)
35#define SVGA_GC_MAX_UNLOCKED_REG (SVGA_IS_UNLOCKED ? SVGA_GC_MAX_REG : VGA_GC_MAX_REG)
39#define VGA_MISC_READ 0x3CC
40#define VGA_MISC_WRITE 0x3C2
42#define VGA_INSTAT0_READ 0x3C2
44#define VGA_INSTAT1_READ_MONO 0x3BA
45#define VGA_INSTAT1_READ_COLOR 0x3DA
47#define VGA_FEATURE_READ 0x3CA
48#define VGA_FEATURE_WRITE_MONO 0x3BA
49#define VGA_FEATURE_WRITE_COLOR 0x3DA
51#define VGA_AC_INDEX 0x3C0
52#define VGA_AC_WRITE 0x3C0
53#define VGA_AC_READ 0x3C1
55#define VGA_SEQ_INDEX 0x3C4
56#define VGA_SEQ_DATA 0x3C5
58#define VGA_DAC_MASK 0x3C6
59#define VGA_DAC_READ_INDEX 0x3C7
60#define VGA_DAC_WRITE_INDEX 0x3C8
61#define VGA_DAC_DATA 0x3C9
63#define VGA_CRTC_INDEX_MONO 0x3B4
64#define VGA_CRTC_DATA_MONO 0x3B5
65#define VGA_CRTC_INDEX_COLOR 0x3D4
66#define VGA_CRTC_DATA_COLOR 0x3D5
68#define VGA_GC_INDEX 0x3CE
69#define VGA_GC_DATA 0x3CF
71#define VGA_SEQ_INDEX_MASK 0x1F
72#define VGA_GC_INDEX_MASK 0x3F
73#define VGA_CRTC_INDEX_MASK 0x3F
82#define VGA_MISC_COLOR (1 << 0)
83#define VGA_MISC_RAM_ENABLED (1 << 1)
86#define VGA_MISC_OE_PAGESEL (1 << 5)
87#define VGA_MISC_HSYNCP (1 << 6)
88#define VGA_MISC_VSYNCP (1 << 7)
91#define VGA_STAT_DD (1 << 0)
92#define VGA_STAT_VRETRACE (1 << 3)
100#define VGA_SEQ_RESET_AR (1 << 0)
101#define VGA_SEQ_RESET_SR (1 << 1)
104#define VGA_SEQ_CLOCK_98DM (1 << 0)
105#define VGA_SEQ_CLOCK_SLR (1 << 2)
106#define VGA_SEQ_CLOCK_DCR (1 << 3)
107#define VGA_SEQ_CLOCK_S4 (1 << 4)
108#define VGA_SEQ_CLOCK_SD (1 << 5)
111#define VGA_SEQ_MEM_EXT (1 << 1)
112#define VGA_SEQ_MEM_OE_DIS (1 << 2)
113#define VGA_SEQ_MEM_C4 (1 << 3)
115#define SVGA_SEQ_LOCKED 0x0F
116#define SVGA_SEQ_UNLOCK_MASK 0x17
117#define SVGA_SEQ_UNLOCKED 0x12
120#define SVGA_SEQ_EXT_MODE_HIGH_RES (1 << 0)
123#define SVGA_SEQ_EXT_CONTROL_MMIO (1 << 2)
124#define SVGA_SEQ_EXT_CONTROL_MMIO_HIGH (1 << 6)
127#define SVGA_SEQ_MCLK_VCLK (1 << 6)
171#define VGA_CRTC_OVERFLOW_VT8 (1 << 0)
172#define VGA_CRTC_OVERFLOW_VDE8 (1 << 1)
173#define VGA_CRTC_OVERFLOW_VRS8 (1 << 2)
174#define VGA_CRTC_OVERFLOW_SVB8 (1 << 3)
175#define VGA_CRTC_OVERFLOW_LC8 (1 << 4)
176#define VGA_CRTC_OVERFLOW_VT9 (1 << 5)
177#define VGA_CRTC_OVERFLOW_VDE9 (1 << 6)
178#define VGA_CRTC_OVERFLOW_VRS9 (1 << 7)
181#define VGA_CRTC_UNDERLINE_DWORD (1 << 6)
184#define VGA_CRTC_MAXSCANLINE_DOUBLE (1 << 7)
185#define VGA_CRTC_MAXSCANLINE_LC9 (1 << 6)
188#define VGA_CRTC_MODE_CONTROL_WRAP (1 << 5)
189#define VGA_CRTC_MODE_CONTROL_BYTE (1 << 6)
190#define VGA_CRTC_MODE_CONTROL_SYNC (1 << 7)
193#define SVGA_CRTC_EXT_ADDR_BIT16 (1 << 0)
194#define SVGA_CRTC_EXT_ADDR_WRAP (1 << 1)
195#define SVGA_CRTC_EXT_ADDR_BITS1718 ((1 << 2) | (1 << 3))
196#define SVGA_CRTC_EXT_OFFSET_BIT8 (1 << 4)
199#define SVGA_CRTC_EXT_ADDR_BIT19 (1 << 7)
253#define VGA_GC_MODE_READ (1 << 3)
254#define VGA_GC_MODE_OE (1 << 4)
255#define VGA_GC_MODE_SHIFTREG (1 << 5)
256#define VGA_GC_MODE_SHIFT256 (1 << 6)
259#define VGA_GC_MISC_NOALPHA (1 << 0)
260#define VGA_GC_MISC_OE (1 << 1)
263#define SVGA_GC_EXT_MODE_WND_B (1 << 0)
264#define SVGA_GC_EXT_MODE_GRAN (1 << 5)
331#define VGA_AC_CONTROL_ATGE (1 << 0)
332#define VGA_AC_CONTROL_MONO (1 << 1)
333#define VGA_AC_CONTROL_LGE (1 << 2)
334#define VGA_AC_CONTROL_BLINK (1 << 3)
335#define VGA_AC_CONTROL_PPM (1 << 5)
336#define VGA_AC_CONTROL_8BIT (1 << 6)
337#define VGA_AC_CONTROL_P54S (1 << 7)
UCHAR Sequencer[SVGA_SEQ_MAX_REG]
UCHAR CRT[SVGA_CRTC_MAX_REG]
UCHAR Attribute[VGA_AC_MAX_REG]
BOOLEAN FASTCALL VgaWriteMemory(ULONG Address, PVOID Buffer, ULONG Size)
VOID FASTCALL VgaReadMemory(ULONG Address, PVOID Buffer, ULONG Size)
VOID VgaRefreshDisplay(VOID)
struct _VGA_REGISTERS VGA_REGISTERS
@ VGA_CRTC_VERT_TOTAL_REG
@ VGA_CRTC_START_ADDR_LOW_REG
@ VGA_CRTC_MAX_SCAN_LINE_REG
@ VGA_CRTC_START_HORZ_BLANKING_REG
@ VGA_CRTC_PRESET_ROW_SCAN_REG
@ VGA_CRTC_END_VERT_RETRACE_REG
@ VGA_CRTC_LINE_COMPARE_REG
@ VGA_CRTC_START_VERT_RETRACE_REG
@ VGA_CRTC_END_HORZ_RETRACE_REG
@ VGA_CRTC_CURSOR_START_REG
@ SVGA_CRTC_MISC_CONTROL_REG
@ SVGA_CRTC_INTERLACE_END_REG
@ SVGA_CRTC_SYNC_ADJUST_REG
@ VGA_CRTC_START_HORZ_RETRACE_REG
@ SVGA_CRTC_PART_STATUS_REG
@ VGA_CRTC_START_ADDR_HIGH_REG
@ VGA_CRTC_VERT_DISP_END_REG
@ VGA_CRTC_END_HORZ_BLANKING_REG
@ VGA_CRTC_START_VERT_BLANKING_REG
@ VGA_CRTC_CURSOR_LOC_HIGH_REG
@ VGA_CRTC_CURSOR_LOC_LOW_REG
@ VGA_CRTC_HORZ_TOTAL_REG
@ VGA_CRTC_END_VERT_BLANKING_REG
@ VGA_CRTC_END_HORZ_DISP_REG
@ VGA_CRTC_CURSOR_END_REG
@ SVGA_CRTC_EXT_DISPLAY_REG
@ VGA_CRTC_MODE_CONTROL_REG
struct _SVGA_REGISTERS * PSVGA_REGISTERS
@ VGA_AC_HORZ_PANNING_REG
struct _SVGA_REGISTERS SVGA_REGISTERS
BOOLEAN VgaInitialize(HANDLE TextHandle)
struct _VGA_REGISTERS * PVGA_REGISTERS
@ SVGA_SEQ_VCLK1_DENOMINATOR_REG
@ SVGA_SEQ_VCLK0_DENOMINATOR_REG
@ SVGA_SEQ_VCLK2_NUMERATOR_REG
@ SVGA_SEQ_SIG_GEN_RESULT_LOW_REG
@ SVGA_SEQ_VCLK3_NUMERATOR_REG
@ SVGA_SEQ_VCLK3_DENOMINATOR_REG
@ SVGA_SEQ_EXT_CONTROL_REG
@ SVGA_SEQ_SIG_GEN_RESULT_HIGH_REG
@ SVGA_SEQ_CURSOR_ATTR_REG
@ SVGA_SEQ_VCLK2_DENOMINATOR_REG
@ SVGA_SEQ_PERFORMANCE_REG
@ SVGA_SEQ_VCLK0_NUMERATOR_REG
@ SVGA_SEQ_VCLK1_NUMERATOR_REG
@ SVGA_SEQ_SIG_GEN_CONTROL_REG
@ SVGA_SEQ_CURSOR_PATTERN_REG
@ SVGA_GC_BLT_DEST_START_0_REG
@ SVGA_GC_BLT_WIDTH_HIGH_REG
@ VGA_GC_ENABLE_RESET_REG
@ SVGA_GC_COLOR_COMPARE_REG
@ SVGA_GC_BACKGROUND_2_REG
@ SVGA_GC_BLT_HEIGHT_LOW_REG
@ SVGA_GC_BACKGROUND_1_REG
@ SVGA_GC_BLT_DEST_MASK_REG
@ SVGA_GC_BLT_SRC_PITCH_HIGH_REG
@ SVGA_GC_BLT_WIDTH_LOW_REG
@ SVGA_GC_BLT_SRC_PITCH_LOW_REG
@ VGA_GC_READ_MAP_SEL_REG
@ SVGA_GC_BLT_DEST_PITCH_LOW_REG
@ SVGA_GC_BLT_HEIGHT_HIGH_REG
@ SVGA_GC_BLT_DEST_START_1_REG
@ SVGA_GC_POWER_MANAGEMENT_REG
@ SVGA_GC_BLT_DEST_START_2_REG
@ SVGA_GC_BLT_DEST_PITCH_HIGH_REG
@ SVGA_GC_BLT_EXT_MODE_REG
@ SVGA_GC_BLT_SRC_START_2_REG
@ SVGA_GC_FOREGROUND_1_REG
@ SVGA_GC_BACKGROUND_3_REG
@ VGA_GC_COLOR_IGNORE_REG
@ SVGA_GC_BLT_SRC_START_1_REG
@ SVGA_GC_BLT_SRC_START_0_REG
@ VGA_GC_COLOR_COMPARE_REG
@ SVGA_GC_FOREGROUND_3_REG
@ SVGA_GC_FOREGROUND_2_REG
struct _CHAR_CELL CHAR_CELL
struct _CHAR_CELL * PCHAR_CELL
COORD VgaGetDisplayResolution(VOID)
VOID VgaWriteTextModeFont(UINT FontNumber, CONST UCHAR *FontData, UINT Height)
VOID VgaClearMemory(VOID)
_In_ HFONT _Out_ PUINT Height
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size