ReactOS  0.4.14-dev-583-g2a1ba2c
bootvid.c
Go to the documentation of this file.
1 #include "precomp.h"
2 
3 #define NDEBUG
4 #include <debug.h>
5 
6 #define LCDTIMING0_PPL(x) ((((x) / 16 - 1) & 0x3f) << 2)
7 #define LCDTIMING1_LPP(x) (((x) & 0x3ff) - 1)
8 #define LCDCONTROL_LCDPWR (1 << 11)
9 #define LCDCONTROL_LCDEN (1)
10 #define LCDCONTROL_LCDBPP(x) (((x) & 7) << 1)
11 #define LCDCONTROL_LCDTFT (1 << 5)
12 
13 #define PL110_LCDTIMING0 (PVOID)0xE0020000
14 #define PL110_LCDTIMING1 (PVOID)0xE0020004
15 #define PL110_LCDTIMING2 (PVOID)0xE0020008
16 #define PL110_LCDUPBASE (PVOID)0xE0020010
17 #define PL110_LCDLPBASE (PVOID)0xE0020014
18 #define PL110_LCDCONTROL (PVOID)0xE0020018
19 
20 #define READ_REGISTER_ULONG(r) (*(volatile ULONG * const)(r))
21 #define WRITE_REGISTER_ULONG(r, v) (*(volatile ULONG *)(r) = (v))
22 
23 #define READ_REGISTER_USHORT(r) (*(volatile USHORT * const)(r))
24 #define WRITE_REGISTER_USHORT(r, v) (*(volatile USHORT *)(r) = (v))
25 
33 {
34  0,
35  0,
36  640 - 1,
37  480 - 1
38 };
39 
40 typedef struct _VGA_COLOR
41 {
45 } VGA_COLOR;
46 
48 {
49  {0x00, 0x00, 0x00}, // Black
50  {0x00, 0x00, 0x08}, // Blue
51  {0x00, 0x08, 0x00}, // Green
52  {0x00, 0x08, 0x08}, // Cyan
53  {0x08, 0x00, 0x00}, // Red
54  {0x08, 0x00, 0x08}, // Magenta
55  {0x0B, 0x0D, 0x0F}, // Brown
56  {0x10, 0x10, 0x10}, // Light Gray
57  {0x08, 0x08, 0x08}, // Dark Gray
58  {0x00, 0x00, 0x1F}, // Light Blue
59  {0x00, 0x1F, 0x00}, // Light Green
60  {0x00, 0x1F, 0x1F}, // Light Cyan
61  {0x1F, 0x00, 0x00}, // Light Red
62  {0x1F, 0x00, 0x1F}, // Light Magenta
63  {0x1F, 0x1F, 0x00}, // Yellow
64  {0x1F, 0x1F, 0x1F}, // White
65 };
66 
67 /* PRIVATE FUNCTIONS *********************************************************/
68 
69 USHORT
72 {
73  UCHAR Red, Green, Blue;
74 
75  //
76  // Extract color components
77  //
81 
82  //
83  // Build the 16-bit color mask
84  //
85  return ((Red & 0x1F) << 11) | ((Green & 0x1F) << 6) | ((Blue & 0x1F));
86 }
87 
88 
89 VOID
92  IN ULONG Top,
93  IN UCHAR Color)
94 {
95  PUSHORT PixelPosition;
96 
97  //
98  // Calculate the pixel position
99  //
100  PixelPosition = &VgaArmBase[Left + (Top * 640)];
101 
102  //
103  // Set our color
104  //
105  WRITE_REGISTER_USHORT(PixelPosition, VidpBuildColor(Color));
106 }
107 
108 VOID
109 NTAPI
111  IN ULONG Left,
112  IN ULONG Top,
113  IN ULONG TextColor,
114  IN ULONG BackTextColor)
115 {
116  PUCHAR FontChar;
117  ULONG i, j, XOffset;
118 
119  /* Get the font line for this character */
120  FontChar = &FontData[Character * 13 - Top];
121 
122  /* Loop each pixel height */
123  i = 13;
124  do
125  {
126  /* Loop each pixel width */
127  j = 128;
128  XOffset = Left;
129  do
130  {
131  /* Check if we should draw this pixel */
132  if (FontChar[Top] & (UCHAR)j)
133  {
134  /* We do, use the given Text Color */
135  VidpSetPixel(XOffset, Top, (UCHAR)TextColor);
136  }
137  else if (BackTextColor < 16)
138  {
139  /* This is a background pixel. We're drawing it unless it's */
140  /* transparent. */
141  VidpSetPixel(XOffset, Top, (UCHAR)BackTextColor);
142  }
143 
144  /* Increase X Offset */
145  XOffset++;
146  } while (j >>= 1);
147 
148  /* Move to the next Y ordinate */
149  Top++;
150  } while (--i);
151 }
152 
153 VOID
154 NTAPI
156 {
157  ULONG Top, Offset;
158  PUSHORT SourceOffset, DestOffset;
159  PUSHORT i, j;
160 
161  /* Set memory positions of the scroll */
162  SourceOffset = &VgaArmBase[(VidpScrollRegion[1] * 80) + (VidpScrollRegion[0] >> 3)];
163  DestOffset = &SourceOffset[Scroll * 80];
164 
165  /* Save top and check if it's above the bottom */
166  Top = VidpScrollRegion[1];
167  if (Top > VidpScrollRegion[3]) return;
168 
169  /* Start loop */
170  do
171  {
172  /* Set number of bytes to loop and start offset */
173  Offset = VidpScrollRegion[0] >> 3;
174  j = SourceOffset;
175 
176  /* Check if this is part of the scroll region */
177  if (Offset <= (VidpScrollRegion[2] >> 3))
178  {
179  /* Update position */
180  i = (PUSHORT)(DestOffset - SourceOffset);
181 
182  /* Loop the X axis */
183  do
184  {
185  /* Write value in the new position so that we can do the scroll */
187 
188  /* Move to the next memory location to write to */
189  j++;
190 
191  /* Move to the next byte in the region */
192  Offset++;
193 
194  /* Make sure we don't go past the scroll region */
195  } while (Offset <= (VidpScrollRegion[2] >> 3));
196  }
197 
198  /* Move to the next line */
199  SourceOffset += 80;
200  DestOffset += 80;
201 
202  /* Increase top */
203  Top++;
204 
205  /* Make sure we don't go past the scroll region */
206  } while (Top <= VidpScrollRegion[3]);
207 }
208 
209 VOID
210 NTAPI
211 PreserveRow(IN ULONG CurrentTop,
212  IN ULONG TopDelta,
214 {
215  PUSHORT Position1, Position2;
216  ULONG Count;
217 
218  /* Check which way we're preserving */
219  if (Direction)
220  {
221  /* Calculate the position in memory for the row */
222  Position1 = &VgaArmBase[CurrentTop * 80];
223  Position2 = &VgaArmBase[0x9600];
224  }
225  else
226  {
227  /* Calculate the position in memory for the row */
228  Position1 = &VgaArmBase[0x9600];
229  Position2 = &VgaArmBase[CurrentTop * 80];
230  }
231 
232  /* Set the count and loop every pixel */
233  Count = TopDelta * 80;
234  while (Count--)
235  {
236  /* Write the data back on the other position */
237  WRITE_REGISTER_USHORT(Position1, READ_REGISTER_USHORT(Position2));
238 
239  /* Increase both positions */
240  Position1++;
241  Position2++;
242  }
243 }
244 
245 VOID
246 NTAPI
248 {
249  //
250  // Set framebuffer address
251  //
254 
255  //
256  // Initialize timings to 640x480
257  //
260 
261  //
262  // Enable the LCD Display
263  //
268  LCDCONTROL_LCDBPP(4));
269 }
270 
271 /* PUBLIC FUNCTIONS **********************************************************/
272 
273 /*
274  * @implemented
275  */
276 BOOLEAN
277 NTAPI
279 {
280  DPRINT1("bv-arm v0.1\n");
281 
282  //
283  // Allocate framebuffer
284  // 600kb works out to 640x480@16bpp
285  //
286  VgaPhysical.QuadPart = -1;
288  if (!VgaArmBase) return FALSE;
289 
290  //
291  // Get physical address
292  //
294  if (!VgaPhysical.QuadPart) return FALSE;
295  DPRINT1("[BV-ARM] Frame Buffer @ 0x%p 0p%p\n", VgaArmBase, VgaPhysical.LowPart);
296 
297  //
298  // Setup the display
299  //
301 
302  //
303  // We are done!
304  //
305  return TRUE;
306 }
307 
308 /*
309  * @implemented
310  */
311 VOID
312 NTAPI
314 {
315  //
316  // Clear the current position
317  //
318  VidpCurrentX = 0;
319  VidpCurrentY = 0;
320 
321  //
322  // Re-initialize the VGA Display
323  //
325 
326  //
327  // Re-initialize the palette and fill the screen black
328  //
329  //InitializePalette();
330  VidSolidColorFill(0, 0, 639, 479, 0);
331 }
332 
333 /*
334  * @implemented
335  */
336 ULONG
337 NTAPI
339 {
340  UCHAR OldColor;
341 
342  //
343  // Save the old, set the new
344  //
345  OldColor = VidpTextColor;
347 
348  //
349  // Return the old text color
350  //
351  return OldColor;
352 }
353 
354 /*
355  * @implemented
356  */
357 VOID
358 NTAPI
360  IN ULONG Left,
361  IN ULONG Top,
362  IN BOOLEAN Transparent)
363 {
365  while (TRUE);
366 }
367 
368 /*
369  * @implemented
370  */
371 VOID
372 NTAPI
374  IN ULONG Top,
375  IN ULONG Right,
376  IN ULONG Bottom)
377 {
378  /* Assert alignment */
379  ASSERT((Left & 0x7) == 0);
380  ASSERT((Right & 0x7) == 7);
381 
382  /* Set Scroll Region */
383  VidpScrollRegion[0] = Left;
384  VidpScrollRegion[1] = Top;
385  VidpScrollRegion[2] = Right;
387 
388  /* Set current X and Y */
389  VidpCurrentX = Left;
390  VidpCurrentY = Top;
391 }
392 
393 /*
394  * @implemented
395  */
396 VOID
397 NTAPI
399 {
401  while (TRUE);
402 }
403 
404 /*
405  * @implemented
406  */
407 VOID
408 NTAPI
410  IN ULONG Left,
411  IN ULONG Top,
412  IN ULONG Width,
413  IN ULONG Height,
414  IN ULONG Delta)
415 {
417  while (TRUE);
418 }
419 
420 /*
421  * @implemented
422  */
423 VOID
424 NTAPI
426 {
427  ULONG TopDelta = 14;
428 
429  /* Start looping the string */
430  while (*String)
431  {
432  /* Treat new-line separately */
433  if (*String == '\n')
434  {
435  /* Modify Y position */
436  VidpCurrentY += TopDelta;
437  if (VidpCurrentY >= VidpScrollRegion[3])
438  {
439  /* Scroll the view */
440  VgaScroll(TopDelta);
441  VidpCurrentY -= TopDelta;
442 
443  /* Preserve row */
444  PreserveRow(VidpCurrentY, TopDelta, TRUE);
445  }
446 
447  /* Update current X */
449 
450  /* Preserve the current row */
451  PreserveRow(VidpCurrentY, TopDelta, FALSE);
452  }
453  else if (*String == '\r')
454  {
455  /* Update current X */
457 
458  /* Check if we're being followed by a new line */
459  if (String[1] != '\n') NextLine = TRUE;
460  }
461  else
462  {
463  /* Check if we had a \n\r last time */
464  if (NextLine)
465  {
466  /* We did, preserve the current row */
467  PreserveRow(VidpCurrentY, TopDelta, TRUE);
468  NextLine = FALSE;
469  }
470 
471  /* Display this character */
473  VidpCurrentX,
474  VidpCurrentY,
476  16);
477  VidpCurrentX += 8;
478 
479  /* Check if we should scroll */
481  {
482  /* Update Y position and check if we should scroll it */
483  VidpCurrentY += TopDelta;
485  {
486  /* Do the scroll */
487  VgaScroll(TopDelta);
488  VidpCurrentY -= TopDelta;
489 
490  /* Save the row */
491  PreserveRow(VidpCurrentY, TopDelta, TRUE);
492  }
493 
494  /* Update X */
496  }
497  }
498 
499  /* Get the next character */
500  String++;
501  }
502 }
503 
504 /*
505  * @implemented
506  */
507 VOID
508 NTAPI
510  IN ULONG Left,
511  IN ULONG Top)
512 {
514  //while (TRUE);
515 }
516 
517 /*
518  * @implemented
519  */
520 VOID
521 NTAPI
523  IN ULONG Left,
524  IN ULONG Top,
525  IN ULONG Width,
526  IN ULONG Height,
527  IN ULONG Delta)
528 {
530  while (TRUE);
531 }
532 
533 /*
534  * @implemented
535  */
536 VOID
537 NTAPI
539  IN ULONG Top,
540  IN ULONG Right,
541  IN ULONG Bottom,
542  IN UCHAR Color)
543 {
544  int y, x;
545 
546  //
547  // Loop along the Y-axis
548  //
549  for (y = Top; y <= Bottom; y++)
550  {
551  //
552  // Loop along the X-axis
553  //
554  for (x = Left; x <= Right; x++)
555  {
556  //
557  // Draw the pixel
558  //
559  VidpSetPixel(x, y, Color);
560  }
561  }
562 }
Definition: bl.h:202
#define IN
Definition: typedefs.h:38
VOID NTAPI DisplayCharacter(IN CHAR Character, IN ULONG Left, IN ULONG Top, IN ULONG TextColor, IN ULONG BackTextColor)
Definition: bootvid.c:110
#define TRUE
Definition: types.h:120
PUSHORT VgaArmBase
Definition: bootvid.c:26
#define READ_REGISTER_USHORT(r)
Definition: bootvid.c:23
UCHAR Green
Definition: bootvid.c:43
ULONG VidpScrollRegion[4]
Definition: bootvid.c:32
#define PL110_LCDLPBASE
Definition: bootvid.c:17
#define PL110_LCDUPBASE
Definition: bootvid.c:16
unsigned char * PUCHAR
Definition: retypes.h:3
char CHAR
Definition: xmlstorage.h:175
BOOLEAN NTAPI VidInitialize(IN BOOLEAN SetMode)
Definition: bootvid.c:278
UCHAR Red
Definition: bootvid.c:42
_Inout_ __drv_aliasesMem PSLIST_ENTRY _Inout_ PSLIST_ENTRY _In_ ULONG Count
Definition: exfuncs.h:1015
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
#define PL110_LCDTIMING1
Definition: bootvid.c:14
static WCHAR String[]
Definition: stringtable.c:55
VGA_COLOR VidpVga8To16BitTransform[16]
Definition: bootvid.c:47
Definition: bl.h:199
#define PL110_LCDCONTROL
Definition: bootvid.c:18
USHORT FORCEINLINE VidpBuildColor(IN UCHAR Color)
Definition: bootvid.c:71
struct Color Color
uint32_t ULONG_PTR
Definition: typedefs.h:63
VOID NTAPI PreserveRow(IN ULONG CurrentTop, IN ULONG TopDelta, IN BOOLEAN Direction)
Definition: bootvid.c:211
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
VOID NTAPI VgaScroll(IN ULONG Scroll)
Definition: bootvid.c:155
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
Definition: IoEaTest.cpp:117
_In_ ULONG _In_ ULONG Offset
Definition: ntddpcm.h:101
VOID FORCEINLINE VidpSetPixel(IN ULONG Left, IN ULONG Top, IN UCHAR Color)
Definition: bootvid.c:91
unsigned char BOOLEAN
VOID NTAPI VidDisplayString(IN PUCHAR String)
Definition: bootvid.c:425
#define FORCEINLINE
Definition: ntbasedef.h:221
VOID NTAPI VidpInitializeDisplay(VOID)
Definition: bootvid.c:247
VOID NTAPI VidCleanUp(VOID)
Definition: bootvid.c:398
VOID NTAPI VidDisplayStringXY(IN PUCHAR String, IN ULONG Left, IN ULONG Top, IN BOOLEAN Transparent)
Definition: bootvid.c:359
Definition: bufpool.h:45
PHYSICAL_ADDRESS VgaPhysical
Definition: bootvid.c:27
#define WRITE_REGISTER_USHORT(r, v)
Definition: bootvid.c:24
UCHAR Blue
Definition: bootvid.c:44
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
VOID NTAPI VidResetDisplay(IN BOOLEAN HalReset)
Definition: bootvid.c:313
#define LCDTIMING0_PPL(x)
Definition: bootvid.c:6
#define WRITE_REGISTER_ULONG(r, v)
Definition: bootvid.c:21
#define LCDCONTROL_LCDTFT
Definition: bootvid.c:11
_Inout_ PSIZE_T _In_opt_ PMDLX _In_ MM_ROTATE_DIRECTION Direction
Definition: mmfuncs.h:773
UCHAR VidpTextColor
Definition: bootvid.c:29
#define LCDTIMING1_LPP(x)
Definition: bootvid.c:7
ULONG VidpCurrentY
Definition: bootvid.c:31
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
Definition: bl.h:200
VOID NTAPI VidScreenToBufferBlt(IN PUCHAR Buffer, IN ULONG Left, IN ULONG Top, IN ULONG Width, IN ULONG Height, IN ULONG Delta)
Definition: bootvid.c:522
unsigned char UCHAR
Definition: xmlstorage.h:181
VOID NTAPI VidBitBlt(IN PUCHAR Buffer, IN ULONG Left, IN ULONG Top)
Definition: bootvid.c:509
_In_ UINT _In_ UINT _In_ PNDIS_PACKET _In_ UINT SourceOffset
Definition: ndis.h:3167
ULONG LowPart
Definition: typedefs.h:104
UCHAR FontData[256 *BOOTCHAR_HEIGHT]
Definition: fontdata.c:9
VOID NTAPI VidSolidColorFill(IN ULONG Left, IN ULONG Top, IN ULONG Right, IN ULONG Bottom, IN UCHAR Color)
Definition: bootvid.c:538
ULONG NTAPI VidSetTextColor(IN ULONG Color)
Definition: bootvid.c:338
static LPHIST_ENTRY Bottom
Definition: history.c:54
unsigned short USHORT
Definition: pedump.c:61
static ULONG Delta
Definition: xboxvideo.c:32
PVOID NTAPI MmAllocateContiguousMemory(IN SIZE_T NumberOfBytes, IN PHYSICAL_ADDRESS HighestAcceptableAddress)
Definition: contmem.c:626
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
ULONG VidpCurrentX
Definition: bootvid.c:30
#define DPRINT1
Definition: precomp.h:8
#define LCDCONTROL_LCDEN
Definition: bootvid.c:9
#define LCDCONTROL_LCDBPP(x)
Definition: bootvid.c:10
VOID NTAPI VidBufferToScreenBlt(IN PUCHAR Buffer, IN ULONG Left, IN ULONG Top, IN ULONG Width, IN ULONG Height, IN ULONG Delta)
Definition: bootvid.c:409
unsigned int ULONG
Definition: retypes.h:1
#define UNIMPLEMENTED
Definition: debug.h:114
#define PL110_LCDTIMING0
Definition: bootvid.c:13
PHYSICAL_ADDRESS NTAPI MmGetPhysicalAddress(IN PVOID Address)
Definition: stubs.c:682
struct _VGA_COLOR VGA_COLOR
static LPHIST_ENTRY Top
Definition: history.c:53
unsigned short * PUSHORT
Definition: retypes.h:2
BOOLEAN NextLine
Definition: bootvid.c:28
LONGLONG QuadPart
Definition: typedefs.h:112
VOID NTAPI VidSetScrollRegion(IN ULONG Left, IN ULONG Top, IN ULONG Right, IN ULONG Bottom)
Definition: bootvid.c:373
#define LCDCONTROL_LCDPWR
Definition: bootvid.c:8