ReactOS 0.4.17-dev-1321-g5c122a9
bootvid.c
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS Boot Video Driver for NEC PC-98 series
3 * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
4 * PURPOSE: Main file
5 * COPYRIGHT: Copyright 2020-2026 Dmitry Borisov <di.sean@protonmail.com>
6 */
7
8/* INCLUDES *******************************************************************/
9
10#include "precomp.h"
11#include <drivers/pc98/video.h>
12
13/* GLOBALS ********************************************************************/
14
15#define BYTES_PER_SCANLINE (SCREEN_WIDTH / 8)
16
17#define PEGC_MAX_COLORS 256
18
21
22/* PRIVATE FUNCTIONS **********************************************************/
23
24static BOOLEAN
27{
29
32
33 return (Result & GRAPH_STATUS_SET) && (Result != 0xFF);
34}
35
36static BOOLEAN
38{
39 USHORT OldValue, NewValue;
40
42
43 /* Bits [15:1] are not writable */
46
48
49 return !(NewValue & 0x80);
50}
51
52static BOOLEAN
54{
56
58 return TestMmio();
59
65
66 return Success;
67}
68
69static VOID
71{
73 NOTHING;
74
76 NOTHING;
77}
78
79static VOID
81{
82 SYNCPARAM SyncParameters;
83 CSRFORMPARAM CursorParameters;
85 PITCHPARAM PitchParameters;
86 PRAMPARAM RamParameters;
87 ZOOMPARAM ZoomParameters;
88 UCHAR RelayState;
89
90 /* RESET, without FIFO check */
93
94 /* Configure chipset */
106
107 /* =========================== MASTER ============================ */
108
109 /* MASTER */
111
112 /* SYNC */
115 SyncParameters.ScreenWidthChars = 80;
116 SyncParameters.HorizontalSyncWidth = 12;
117 SyncParameters.VerticalSyncWidth = 2;
118 SyncParameters.HorizontalFrontPorchWidth = 4;
119 SyncParameters.HorizontalBackPorchWidth = 4;
120 SyncParameters.VerticalFrontPorchWidth = 6;
121 SyncParameters.ScreenWidthLines = 480;
122 SyncParameters.VerticalBackPorchWidth = 37;
124 WRITE_GDC_SYNC((PUCHAR)GDC1_IO_o_PARAM, &SyncParameters);
125
126 /* CSRFORM */
127 CursorParameters.Show = FALSE;
128 CursorParameters.Blink = FALSE;
129 CursorParameters.BlinkRate = 12;
130 CursorParameters.LinesPerRow = 16;
131 CursorParameters.StartScanLine = 0;
132 CursorParameters.EndScanLine = 15;
134 WRITE_GDC_CSRFORM((PUCHAR)GDC1_IO_o_PARAM, &CursorParameters);
135
136 /* PITCH */
137 PitchParameters.WordsPerScanline = BYTES_PER_SCANLINE;
139 WRITE_GDC_PITCH((PUCHAR)GDC1_IO_o_PARAM, &PitchParameters);
140
141 /* PRAM */
142 RamParameters.StartingAddress = 0;
143 RamParameters.Length = 1023;
144 RamParameters.ImageBit = FALSE;
145 RamParameters.WideDisplay = FALSE;
147 WRITE_GDC_PRAM((PUCHAR)GDC1_IO_o_PARAM, &RamParameters);
148
149 /* ZOOM */
150 ZoomParameters.DisplayZoomFactor = 0;
151 ZoomParameters.WritingZoomFactor = 0;
153 WRITE_GDC_ZOOM((PUCHAR)GDC1_IO_o_PARAM, &ZoomParameters);
154
155 /* CSRW */
156 CursorPosition.CursorAddress = 0;
157 CursorPosition.DotAddress = 0;
160
161 /* START */
163
164 /* ============================ SLAVE ============================ */
165
166 /* SLAVE */
168
169 /* SYNC */
173 SyncParameters.ScreenWidthChars = 80;
174 SyncParameters.HorizontalSyncWidth = 12;
175 SyncParameters.VerticalSyncWidth = 2;
176 SyncParameters.HorizontalFrontPorchWidth = 4;
177 SyncParameters.HorizontalBackPorchWidth = 132;
178 SyncParameters.VerticalFrontPorchWidth = 6;
179 SyncParameters.ScreenWidthLines = 480;
180 SyncParameters.VerticalBackPorchWidth = 37;
182 WRITE_GDC_SYNC((PUCHAR)GDC2_IO_o_PARAM, &SyncParameters);
183
184 /* CSRFORM */
185 CursorParameters.Show = FALSE;
186 CursorParameters.Blink = FALSE;
187 CursorParameters.BlinkRate = 0;
188 CursorParameters.LinesPerRow = 1;
189 CursorParameters.StartScanLine = 0;
190 CursorParameters.EndScanLine = 0;
192 WRITE_GDC_CSRFORM((PUCHAR)GDC2_IO_o_PARAM, &CursorParameters);
193
194 /* PITCH */
195 PitchParameters.WordsPerScanline = BYTES_PER_SCANLINE;
197 WRITE_GDC_PITCH((PUCHAR)GDC2_IO_o_PARAM, &PitchParameters);
198
199 /* PRAM */
200 RamParameters.StartingAddress = 0;
201 RamParameters.Length = 1023;
202 RamParameters.ImageBit = TRUE;
203 RamParameters.WideDisplay = FALSE;
205 WRITE_GDC_PRAM((PUCHAR)GDC2_IO_o_PARAM, &RamParameters);
206
207 /* ZOOM */
208 ZoomParameters.DisplayZoomFactor = 0;
209 ZoomParameters.WritingZoomFactor = 0;
211 WRITE_GDC_ZOOM((PUCHAR)GDC2_IO_o_PARAM, &ZoomParameters);
212
213 /* CSRW */
214 CursorPosition.CursorAddress = 0;
215 CursorPosition.DotAddress = 0;
218
219 /* Synchronize the master sync source */
220 TextSync();
221 TextSync();
222 TextSync();
223 TextSync();
224
225 /* Turn off the text layer */
227
228 /* START */
230
231 /* 256 colors */
238
239 /* Select the video source */
243}
244
245static VOID
247 _In_ ULONG Id,
248 _In_ RGBQUAD Rgb)
249{
254}
255
256VOID
258 _In_reads_(Count) const ULONG* Table,
260{
261 const ULONG* Entry = Table;
262 ULONG i;
263
264 for (i = 0; i < Count; i++)
266}
267
268#undef InitializePalette
269static VOID
271{
272 ULONG i;
273
275
276 /* Reset the unused palette entries */
277 for (i = BV_MAX_COLORS; i < PEGC_MAX_COLORS; i++)
279}
280
281VOID
283 _In_ CHAR Character,
284 _In_ ULONG Left,
285 _In_ ULONG Top,
286 _In_ ULONG TextColor,
287 _In_ ULONG BackColor)
288{
289 const UCHAR* FontChar = GetFontPtr(Character);
290 ULONG_PTR StartOffset = FrameBuffer + FB_OFFSET(Left, Top);
291 ULONG X, Y;
292
293 for (Y = 0; Y < BOOTCHAR_HEIGHT; ++Y)
294 {
295 PUCHAR Pixel = (PUCHAR)StartOffset;
296 UCHAR PixelMask = 1 << (BOOTCHAR_WIDTH - 1);
297
298 for (X = 0; X < BOOTCHAR_WIDTH; ++X)
299 {
300 if (*FontChar & PixelMask)
301 *Pixel = (UCHAR)TextColor;
302 else if (BackColor < BV_COLOR_NONE)
303 *Pixel = (UCHAR)BackColor;
304
305 Pixel++;
306 PixelMask >>= 1;
307 }
308
309 FontChar += FONT_PTR_DELTA;
310 StartOffset += SCREEN_WIDTH;
311 }
312}
313
314VOID
316 _In_ ULONG CurrentTop,
318 _In_ BOOLEAN Restore)
319{
320 PULONG OldPosition, NewPosition;
321
322 if (Restore)
323 {
324 /* Restore the row by copying back the contents saved off-screen */
325 OldPosition = (PULONG)(FrameBuffer + FB_OFFSET(0, SCREEN_HEIGHT));
326 NewPosition = (PULONG)(FrameBuffer + FB_OFFSET(0, CurrentTop));
327 }
328 else
329 {
330 /* Preserve the row by saving its contents off-screen */
331 OldPosition = (PULONG)(FrameBuffer + FB_OFFSET(0, CurrentTop));
332 NewPosition = (PULONG)(FrameBuffer + FB_OFFSET(0, SCREEN_HEIGHT));
333 }
334
335 __movsd(NewPosition, OldPosition, Height * (SCREEN_WIDTH / sizeof(ULONG)));
336}
337
338VOID
340 _In_ ULONG Scroll)
341{
342 const ULONG PixelCount = (VidpScrollRegion.Right - VidpScrollRegion.Left) + 1;
343 ULONG Line;
346
347 if (PixelCount == 0)
348 return;
349
351 {
354 ULONG Width = PixelCount;
355
356 while (Width > 0)
357 {
358 /* Note that Src and Dst have the same alignment */
359 if (((Src & 3) == 0) && (Width >= sizeof(ULONG)))
360 {
361 /* Copy 4 pixels at once. We assume that the row width
362 * is small enough to not use the __movsd approach. */
363 while (Width >= sizeof(ULONG))
364 {
365 /* Volatile to prevent the optimizer from replacing the loop by memcpy */
366 *(volatile ULONG*)Dst = *(volatile ULONG*)Src;
367
368 Dst += sizeof(ULONG);
369 Src += sizeof(ULONG);
370 Width -= sizeof(ULONG);
371 }
372 }
373 else
374 {
375 *(PUCHAR)Dst = *(PUCHAR)Src;
376
377 Dst++;
378 Src++;
379 Width--;
380 }
381 }
382
385 }
386}
387
388/* PUBLIC FUNCTIONS ***********************************************************/
389
391NTAPI
393 _In_ BOOLEAN SetMode)
394{
396
399 if (!PegcControl)
400 goto Failure;
401
402 if (!HasPegcController())
403 goto Failure;
404
407 if (!FrameBuffer)
408 goto Failure;
409
410 if (SetMode)
412
413 return TRUE;
414
415Failure:
416 if (PegcControl)
418
419 return FALSE;
420}
421
422VOID
423NTAPI
425{
427}
428
429VOID
431 _In_ BOOLEAN SetMode)
432{
433 /* Reset the video mode with HAL if requested */
434 if (SetMode)
436
438
439 /* 640x480 256-color 31 kHz mode */
441
442 /* Re-initialize the palette and fill the screen black */
444 __stosd((PULONG)(FrameBuffer + FB_OFFSET(0, 0)), 0,
445 (SCREEN_WIDTH * SCREEN_HEIGHT) / sizeof(ULONG));
446
448}
449
450static VOID
452 _Out_ UCHAR* __restrict Buffer,
453 _In_ const ULONG* __restrict Pixels,
456{
457 ULONG Px, Value = 0;
458
459 if (Shift != 0)
460 {
461 Px = *Pixels++;
462 Value = Px;
463 }
464
465 /* Read 4 pixels at once */
466 while (Width >= sizeof(USHORT))
467 {
468 Value >>= Shift;
469
470 if (Shift == 0 || Shift == 24)
471 {
472 Px = *Pixels++;
473
474 if (Shift == 24)
475 Value |= Px << 8;
476 else
477 Value = Px;
478 }
479 *Buffer++ = ((Value & 0x000F) << 4) | ((Value & 0x0F00) >> 8);
480 Value = Px;
481
482 Shift = (Shift + 16) & (32 - 1);
483
484 Width -= sizeof(USHORT);
485 }
486
487 if (Width != 0)
488 {
489 if (Shift == 0)
490 Value = *Pixels;
491 Value >>= Shift;
492 *Buffer = Value << 4;
493 }
494}
495
496VOID
497NTAPI
500 _In_ ULONG Left,
501 _In_ ULONG Top,
504 _In_ ULONG Stride)
505{
506 ULONG_PTR StartOffset;
507 ULONG Offset, StartShift;
508 ULONG Y;
509
510 if ((Width == 0) || (Height == 0))
511 return;
512
513 /* Clear the destination buffer */
514 RtlZeroMemory(Buffer, Height * Stride);
515
516 Offset = FB_OFFSET(Left, Top);
517 StartOffset = FrameBuffer + (Offset & ~3);
518 StartShift = (Offset & 3) * 8;
519
520 for (Y = 0; Y < Height; Y++)
521 {
522 SaveRowToBuffer(Buffer, (PULONG)StartOffset, Width, StartShift);
523
524 Buffer += Stride;
525 StartOffset += SCREEN_WIDTH;
526 }
527}
528
529VOID
530NTAPI
532 _In_ ULONG Left,
533 _In_ ULONG Top,
534 _In_ ULONG Right,
537{
538 /* Equivalent to: (Color << 24) | (Color << 16) | (Color << 8) | Color */
539 const ULONG WideColor = Color * 0x01010101ul;
540 const ULONG PixelCount = (Right - Left) + 1;
541 ULONG Line;
542 ULONG_PTR StartOffset = FrameBuffer + FB_OFFSET(Left, Top);
543
544 if ((Left > Right) || (PixelCount == 0))
545 return;
546
547 for (Line = Top; Line <= Bottom; Line++)
548 {
549 ULONG_PTR Px = StartOffset;
550 ULONG Width = PixelCount;
551
552 while (Width > 0)
553 {
554 if (((Px & 3) == 0) && (Width >= sizeof(ULONG)))
555 {
556 /* Modify 4 pixels at once. We assume that the row width
557 * is small enough to not use the __stosd approach. */
558 while (Width >= sizeof(ULONG))
559 {
560 /* Volatile to prevent the optimizer from replacing the loop by memset */
561 *(volatile ULONG*)Px = WideColor;
562
563 Px += sizeof(ULONG);
564 Width -= sizeof(ULONG);
565 }
566 }
567 else
568 {
569 *(PUCHAR)Px = (UCHAR)WideColor;
570
571 Px++;
572 Width--;
573 }
574 }
575
576 StartOffset += SCREEN_WIDTH;
577 }
578}
DWORD Id
unsigned char BOOLEAN
Definition: actypes.h:127
VOID NTAPI VidSolidColorFill(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Right, _In_ ULONG Bottom, _In_ UCHAR Color)
Definition: bootvid.c:298
VOID NTAPI VidCleanUp(VOID)
Definition: bootvid.c:276
VOID PreserveRow(_In_ ULONG CurrentTop, _In_ ULONG Height, _In_ BOOLEAN Restore)
Definition: bootvid.c:159
VOID ResetDisplay(_In_ BOOLEAN SetMode)
Definition: bootvid.c:263
VOID InitPaletteWithTable(_In_reads_(Count) const ULONG *Table, _In_ ULONG Count)
Definition: bootvid.c:220
VOID DisplayCharacter(_In_ CHAR Character, _In_ ULONG Left, _In_ ULONG Top, _In_ ULONG TextColor, _In_ ULONG BackColor)
Definition: bootvid.c:67
VOID DoScroll(_In_ ULONG Scroll)
Definition: bootvid.c:112
VOID NTAPI VidScreenToBufferBlt(_Out_writes_bytes_all_(Height *Stride) PUCHAR Buffer, _In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Width, _In_ ULONG Height, _In_ ULONG Stride)
Definition: bootvid.c:284
BOOLEAN NTAPI VidInitialize(_In_ BOOLEAN SetMode)
Definition: bootvid.c:231
#define WRITE_REGISTER_USHORT(r, v)
Definition: arm.h:14
#define READ_REGISTER_USHORT(r)
Definition: arm.h:13
static LPHIST_ENTRY Bottom
Definition: history.c:54
static LPHIST_ENTRY Top
Definition: history.c:53
Definition: bufpool.h:45
PLIST_ENTRY Entry
Definition: devhcd.cpp:1262
_Check_return_ _In_ D3DDDI_VIDEO_PRESENT_TARGET_ID _In_ PDXGKARG_SYSTEM_DISPLAY_ENABLE_FLAGS _Out_ UINT _Out_ UINT * Height
Definition: dispmprt.h:1445
_Check_return_ _In_ D3DDDI_VIDEO_PRESENT_TARGET_ID _In_ PDXGKARG_SYSTEM_DISPLAY_ENABLE_FLAGS _Out_ UINT * Width
Definition: dispmprt.h:1444
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define Y(I)
const RGBQUAD VidpDefaultPalette[BV_MAX_COLORS]
Definition: common.c:19
VOID NTAPI VidResetDisplay(_In_ BOOLEAN SetMode)
Definition: console.c:25
URECT VidpScrollRegion
Definition: console.c:17
#define GetBValue(quad)
Definition: precomp.h:92
#define GetFontPtr(_Char)
Definition: precomp.h:102
#define GetGValue(quad)
Definition: precomp.h:91
ULONG RGBQUAD
Definition: precomp.h:49
#define GetRValue(quad)
Definition: precomp.h:90
#define FONT_PTR_DELTA
Definition: precomp.h:103
#define BOOTCHAR_HEIGHT
Definition: precomp.h:26
#define BOOTCHAR_WIDTH
Definition: precomp.h:27
#define ULONG_PTR
Definition: config.h:101
@ Success
Definition: eventcreate.c:712
Status
Definition: gdiplustypes.h:24
ASMGENDATA Table[]
Definition: genincdata.c:61
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
#define X(b, s)
static BOOLEAN HasPegcController(VOID)
Definition: bootvid.c:53
static ULONG_PTR PegcControl
Definition: bootvid.c:19
static BOOLEAN TestMmio(VOID)
Definition: bootvid.c:37
static VOID TextSync(VOID)
Definition: bootvid.c:70
static VOID InitializeDisplay(VOID)
Definition: bootvid.c:80
#define PEGC_MAX_COLORS
Definition: bootvid.c:17
#define BYTES_PER_SCANLINE
Definition: bootvid.c:15
static VOID SetPaletteEntryRGB(_In_ ULONG Id, _In_ RGBQUAD Rgb)
Definition: bootvid.c:246
static BOOLEAN GraphGetStatus(_In_ UCHAR Status)
Definition: bootvid.c:25
static VOID SaveRowToBuffer(_Out_ UCHAR *__restrict Buffer, _In_ const ULONG *__restrict Pixels, _In_ ULONG Width, _In_ ULONG Shift)
Definition: bootvid.c:451
#define NOTHING
Definition: input_list.c:10
PPC_QUAL void __movsd(unsigned long *Destination, const unsigned long *Source, unsigned long Count)
Definition: intrin_ppc.h:333
PPC_QUAL void __stosd(unsigned long *Dest, const unsigned long Data, unsigned long Count)
Definition: intrin_ppc.h:317
VOID NTAPI MmUnmapIoSpace(IN PVOID BaseAddress, IN SIZE_T NumberOfBytes)
Definition: iosup.c:192
PVOID NTAPI MmMapIoSpace(IN PHYSICAL_ADDRESS PhysicalAddress, IN SIZE_T NumberOfBytes, IN MEMORY_CACHING_TYPE CacheType)
Definition: iosup.c:47
ULONG_PTR FrameBuffer
Definition: xboxvideo.c:29
#define Dst
Definition: mesh.h:153
#define HalResetDisplay
Definition: halfuncs.h:45
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize _Pre_valid_ PVOID * BaseAddress
Definition: mmfuncs.h:408
#define _In_reads_(s)
Definition: no_sal2.h:168
#define _Out_
Definition: no_sal2.h:160
#define _In_
Definition: no_sal2.h:158
#define _Out_writes_bytes_all_(s)
Definition: no_sal2.h:194
_In_ ULONG _In_ ULONG Offset
Definition: ntddpcm.h:101
#define InitializePalette
Definition: pc98.h:26
#define FB_OFFSET(x, y)
Definition: pc98.h:15
static USHORT CursorPosition
Definition: pc98cons.c:20
#define READ_PORT_UCHAR(p)
Definition: pc98vid.h:22
#define WRITE_PORT_UCHAR(p, d)
Definition: pc98vid.h:21
#define SCREEN_WIDTH
Definition: pc98video.c:24
#define SCREEN_HEIGHT
Definition: pc98video.c:25
const UCHAR PixelMask[8]
Definition: vga.c:37
unsigned short USHORT
Definition: pedump.c:61
char CHAR
Definition: pedump.c:57
#define BV_COLOR_NONE
Definition: display.h:31
#define BV_COLOR_BLACK
Definition: display.h:15
#define BV_MAX_COLORS
Definition: display.h:32
#define GDC_COMMAND_PITCH
Definition: video.h:138
#define GDC2_IO_o_RED
Definition: video.h:277
#define PEGC_MODE_PACKED
Definition: video.h:421
#define GDC1_IO_o_MODE_FLIPFLOP1
Definition: video.h:238
#define GDC2_IO_o_MODE_FLIPFLOP2
Definition: video.h:280
#define GDC1_IO_i_STATUS
Definition: video.h:230
#define GDC_COMMAND_MASTER
Definition: video.h:200
#define GRAPH_IO_i_STATUS
Definition: video.h:346
#define GRAPH_HF_31KHZ
Definition: video.h:362
#define GDC2_EGC_FF_PROTECT
Definition: video.h:285
#define SYNC_VIDEO_FRAMING_NONINTERLACED
Definition: video.h:83
#define GRAPH_STATUS_PEGC
Definition: video.h:352
FORCEINLINE VOID WRITE_GDC_CSRFORM(PUCHAR Port, PCSRFORMPARAM CursorParameters)
Definition: video.h:186
#define GDC2_IO_o_COMMAND
Definition: video.h:272
#define GRAPH_MODE_DISPLAY_ENABLE
Definition: video.h:254
#define SYNC_DISPLAY_MODE_GRAPHICS
Definition: video.h:80
#define GDC2_MODE_ODD_RLINE_SHOW
Definition: video.h:247
#define PEGC_MMIO_MODE
Definition: video.h:420
#define GDC2_MODE_LINES_400
Definition: video.h:301
#define GDC_COMMAND_BCTRL_START
Definition: video.h:73
#define GDC2_CLOCK2_5MHZ
Definition: video.h:308
#define GDC2_IO_o_VIDEO_PAGE_ACCESS
Definition: video.h:274
#define GDC_STATUS_VSYNC
Definition: video.h:41
#define GDC2_MODE_LCD
Definition: video.h:298
#define GDC2_CLOCK1_5MHZ
Definition: video.h:306
#define GRAPH_IO_o_STATUS_SELECT
Definition: video.h:350
#define GDC1_IO_o_COMMAND
Definition: video.h:235
#define PEGC_FB_MAP
Definition: video.h:426
#define PEGC_MMIO_FRAMEBUFFER
Definition: video.h:424
#define GRAPH_VID_SRC_INTERNAL
Definition: video.h:370
FORCEINLINE VOID WRITE_GDC_CSRW(PUCHAR Port, PCSRWPARAM CursorParameters)
Definition: video.h:160
#define GDC2_MODE_GRCG
Definition: video.h:283
#define GDC2_IO_o_GREEN
Definition: video.h:276
#define GDC2_IO_o_VIDEO_PAGE
Definition: video.h:273
#define PEGC_FRAMEBUFFER_SIZE
Definition: video.h:23
#define GRAPH_IO_i_RELAY
Definition: video.h:364
#define GRAPH_IO_o_RELAY
Definition: video.h:368
#define GDC_COMMAND_SLAVE
Definition: video.h:199
FORCEINLINE VOID WRITE_GDC_ZOOM(PUCHAR Port, PZOOMPARAM ZoomParameters)
Definition: video.h:133
#define GDC2_IO_o_PALETTE_INDEX
Definition: video.h:275
#define GDC2_MODE_COLORS_16
Definition: video.h:282
#define GDC_COMMAND_PRAM
Definition: video.h:202
#define GRAPH_SRC_GDC
Definition: video.h:373
FORCEINLINE VOID WRITE_GDC2_COMMAND(UCHAR Command)
Definition: video.h:336
FORCEINLINE VOID WRITE_GDC_PITCH(PUCHAR Port, PPITCHPARAM PitchParameters)
Definition: video.h:146
#define VRAM_NORMAL_PLANE_I
Definition: video.h:15
FORCEINLINE VOID WRITE_GDC_PRAM(PUCHAR Port, PPRAMPARAM RamParameters)
Definition: video.h:213
#define PEGC_CONTROL_SIZE
Definition: video.h:25
#define GRAPH_MODE_COLORED
Definition: video.h:241
#define SYNC_DRAW_ONLY_DURING_RETRACE_BLANKING
Definition: video.h:88
#define GDC_COMMAND_ZOOM
Definition: video.h:124
#define GDC2_EGC_FF_UNPROTECT
Definition: video.h:286
#define GRAPH_STATUS_SET
Definition: video.h:347
#define SYNC_STATIC_RAM_NO_REFRESH
Definition: video.h:90
#define GRAPH_IO_o_HORIZONTAL_SCAN_RATE
Definition: video.h:360
#define GDC_COMMAND_RESET1
Definition: video.h:68
#define SYNC_DISPLAY_MODE_GRAPHICS_AND_CHARACTERS
Definition: video.h:79
#define GDC1_IO_o_PARAM
Definition: video.h:234
#define GDC2_MODE_LINES_800
Definition: video.h:302
#define GRAPH_MODE_DISPLAY_DISABLE
Definition: video.h:253
#define GDC_COMMAND_CSRW
Definition: video.h:151
#define SYNC_DRAW_DURING_ACTIVE_DISPLAY_TIME_AND_RETRACE_BLANKING
Definition: video.h:87
#define PEGC_FRAMEBUFFER_PACKED
Definition: video.h:22
FORCEINLINE VOID WRITE_GDC1_COMMAND(UCHAR Command)
Definition: video.h:326
#define GRAPH_RELAY_1
Definition: video.h:366
#define GDC2_IO_o_BLUE
Definition: video.h:278
#define GDC2_MODE_PEGC_ENABLE
Definition: video.h:288
#define GDC2_IO_o_PARAM
Definition: video.h:271
#define GDC_COMMAND_STOP2
Definition: video.h:70
FORCEINLINE VOID WRITE_GDC_SYNC(PUCHAR Port, PSYNCPARAM SyncParameters)
Definition: video.h:105
#define GDC_COMMAND_SYNC_ON
Definition: video.h:75
#define GRAPH_RELAY_0
Definition: video.h:365
#define GDC_COMMAND_CSRFORM
Definition: video.h:173
#define GDC2_MODE_PEGC_DISABLE
Definition: video.h:287
#define Shift
Definition: exp.c:31
Definition: ncftp.h:79
UCHAR StartScanLine
Definition: video.h:180
UCHAR LinesPerRow
Definition: video.h:179
BOOLEAN Show
Definition: video.h:176
UCHAR EndScanLine
Definition: video.h:181
BOOLEAN Blink
Definition: video.h:177
UCHAR BlinkRate
Definition: video.h:178
ULONG WordsPerScanline
Definition: video.h:141
ULONG StartingAddress
Definition: video.h:205
USHORT Length
Definition: video.h:206
BOOLEAN ImageBit
Definition: video.h:207
BOOLEAN WideDisplay
Definition: video.h:208
UCHAR HorizontalBackPorchWidth
Definition: video.h:97
UCHAR VerticalBackPorchWidth
Definition: video.h:100
USHORT ScreenWidthLines
Definition: video.h:99
UCHAR ScreenWidthChars
Definition: video.h:93
UCHAR VerticalSyncWidth
Definition: video.h:95
UCHAR HorizontalSyncWidth
Definition: video.h:94
UCHAR VerticalFrontPorchWidth
Definition: video.h:98
UCHAR Flags
Definition: video.h:78
UCHAR HorizontalFrontPorchWidth
Definition: video.h:96
ULONG Right
Definition: precomp.h:71
ULONG Top
Definition: precomp.h:70
ULONG Bottom
Definition: precomp.h:72
ULONG Left
Definition: precomp.h:69
UCHAR WritingZoomFactor
Definition: video.h:128
UCHAR DisplayZoomFactor
Definition: video.h:127
uint32_t * PULONG
Definition: typedefs.h:59
unsigned char UCHAR
Definition: typedefs.h:53
#define NTAPI
Definition: typedefs.h:36
uint16_t * PUSHORT
Definition: typedefs.h:56
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
uint32_t ULONG_PTR
Definition: typedefs.h:65
unsigned char * PUCHAR
Definition: typedefs.h:53
uint32_t ULONG
Definition: typedefs.h:59
USHORT Count
Definition: userreq.cpp:200
_Must_inspect_result_ _In_ WDFMEMORY _In_ size_t SourceOffset
Definition: wdfmemory.h:320
_Must_inspect_result_ _In_ WDFMEMORY _In_ size_t DestinationOffset
Definition: wdfmemory.h:361
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
Definition: wdfregistry.h:413
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:409
@ MmNonCached
Definition: mmtypes.h:129