ReactOS 0.4.15-dev-5893-g1bb4167
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 Dmitry Borisov (di.sean@protonmail.com)
6 */
7
8/* INCLUDES *******************************************************************/
9
10#include "precomp.h"
11
12/* GLOBALS ********************************************************************/
13
16
17#define PEGC_MAX_COLORS 256
18
19/* PRIVATE FUNCTIONS **********************************************************/
20
21static BOOLEAN
24{
26
29
30 return (Result & GRAPH_STATUS_SET) && (Result != 0xFF);
31}
32
33static BOOLEAN
35{
36 USHORT OldValue, NewValue;
37
39
40 /* Bits [15:1] are not writable */
43
45
46 return !(NewValue & 0x80);
47}
48
49static BOOLEAN
51{
53
55 return TestMmio();
56
62
63 return Success;
64}
65
66static VOID
68{
70 NOTHING;
71
73 NOTHING;
74}
75
76static VOID
78{
79 SYNCPARAM SyncParameters;
80 CSRFORMPARAM CursorParameters;
82 PITCHPARAM PitchParameters;
83 PRAMPARAM RamParameters;
84 ZOOMPARAM ZoomParameters;
85 UCHAR RelayState;
86
87 /* RESET, without FIFO check */
90
91 /* Configure chipset */
103
104 /* =========================== MASTER ============================ */
105
106 /* MASTER */
108
109 /* SYNC */
112 SyncParameters.ScreenWidthChars = 80;
113 SyncParameters.HorizontalSyncWidth = 12;
114 SyncParameters.VerticalSyncWidth = 2;
115 SyncParameters.HorizontalFrontPorchWidth = 4;
116 SyncParameters.HorizontalBackPorchWidth = 4;
117 SyncParameters.VerticalFrontPorchWidth = 6;
118 SyncParameters.ScreenWidthLines = 480;
119 SyncParameters.VerticalBackPorchWidth = 37;
121 WRITE_GDC_SYNC((PUCHAR)GDC1_IO_o_PARAM, &SyncParameters);
122
123 /* CSRFORM */
124 CursorParameters.Show = FALSE;
125 CursorParameters.Blink = FALSE;
126 CursorParameters.BlinkRate = 12;
127 CursorParameters.LinesPerRow = 16;
128 CursorParameters.StartScanLine = 0;
129 CursorParameters.EndScanLine = 15;
131 WRITE_GDC_CSRFORM((PUCHAR)GDC1_IO_o_PARAM, &CursorParameters);
132
133 /* PITCH */
134 PitchParameters.WordsPerScanline = BYTES_PER_SCANLINE;
136 WRITE_GDC_PITCH((PUCHAR)GDC1_IO_o_PARAM, &PitchParameters);
137
138 /* PRAM */
139 RamParameters.StartingAddress = 0;
140 RamParameters.Length = 1023;
141 RamParameters.ImageBit = FALSE;
142 RamParameters.WideDisplay = FALSE;
144 WRITE_GDC_PRAM((PUCHAR)GDC1_IO_o_PARAM, &RamParameters);
145
146 /* ZOOM */
147 ZoomParameters.DisplayZoomFactor = 0;
148 ZoomParameters.WritingZoomFactor = 0;
150 WRITE_GDC_ZOOM((PUCHAR)GDC1_IO_o_PARAM, &ZoomParameters);
151
152 /* CSRW */
153 CursorPosition.CursorAddress = 0;
154 CursorPosition.DotAddress = 0;
157
158 /* START */
160
161 /* ============================ SLAVE ============================ */
162
163 /* SLAVE */
165
166 /* SYNC */
170 SyncParameters.ScreenWidthChars = 80;
171 SyncParameters.HorizontalSyncWidth = 12;
172 SyncParameters.VerticalSyncWidth = 2;
173 SyncParameters.HorizontalFrontPorchWidth = 4;
174 SyncParameters.HorizontalBackPorchWidth = 132;
175 SyncParameters.VerticalFrontPorchWidth = 6;
176 SyncParameters.ScreenWidthLines = 480;
177 SyncParameters.VerticalBackPorchWidth = 37;
179 WRITE_GDC_SYNC((PUCHAR)GDC2_IO_o_PARAM, &SyncParameters);
180
181 /* CSRFORM */
182 CursorParameters.Show = FALSE;
183 CursorParameters.Blink = FALSE;
184 CursorParameters.BlinkRate = 0;
185 CursorParameters.LinesPerRow = 1;
186 CursorParameters.StartScanLine = 0;
187 CursorParameters.EndScanLine = 0;
189 WRITE_GDC_CSRFORM((PUCHAR)GDC2_IO_o_PARAM, &CursorParameters);
190
191 /* PITCH */
192 PitchParameters.WordsPerScanline = BYTES_PER_SCANLINE;
194 WRITE_GDC_PITCH((PUCHAR)GDC2_IO_o_PARAM, &PitchParameters);
195
196 /* PRAM */
197 RamParameters.StartingAddress = 0;
198 RamParameters.Length = 1023;
199 RamParameters.ImageBit = TRUE;
200 RamParameters.WideDisplay = FALSE;
202 WRITE_GDC_PRAM((PUCHAR)GDC2_IO_o_PARAM, &RamParameters);
203
204 /* ZOOM */
205 ZoomParameters.DisplayZoomFactor = 0;
206 ZoomParameters.WritingZoomFactor = 0;
208 WRITE_GDC_ZOOM((PUCHAR)GDC2_IO_o_PARAM, &ZoomParameters);
209
210 /* CSRW */
211 CursorPosition.CursorAddress = 0;
212 CursorPosition.DotAddress = 0;
215
216 /* Synchronize the master sync source */
217 TextSync();
218 TextSync();
219 TextSync();
220 TextSync();
221
222 /* START */
224
225 /* 256 colors */
232
233 /* Select the video source */
237}
238
239static VOID
241 _In_ ULONG Id,
242 _In_ RGBQUAD Rgb)
243{
248}
249
250VOID
251NTAPI
255{
256 ULONG i;
258
259 for (i = 0; i < Count; i++)
261
262 for (i = Count; i < PEGC_MAX_COLORS; i++)
264}
265
266VOID
267NTAPI
269 _In_ CHAR Character,
270 _In_ ULONG Left,
271 _In_ ULONG Top,
272 _In_ ULONG TextColor,
273 _In_ ULONG BackColor)
274{
275 ULONG X, Y, PixelMask;
276 PUCHAR FontChar = GetFontPtr(Character);
277
278 for (Y = Top;
280 ++Y, FontChar += FONT_PTR_DELTA)
281 {
282 for (X = Left, PixelMask = 1 << (BOOTCHAR_WIDTH - 1);
283 X < Left + BOOTCHAR_WIDTH;
284 ++X, PixelMask >>= 1)
285 {
286 if (*FontChar & PixelMask)
287 SetPixel(X, Y, (UCHAR)TextColor);
288 else if (BackColor < BV_COLOR_NONE)
289 SetPixel(X, Y, (UCHAR)BackColor);
290 }
291 }
292}
293
294VOID
295NTAPI
297 _In_ ULONG CurrentTop,
298 _In_ ULONG TopDelta,
299 _In_ BOOLEAN Restore)
300{
301 PULONG OldPosition, NewPosition;
302 ULONG PixelCount = TopDelta * (SCREEN_WIDTH / sizeof(ULONG));
303
304 if (Restore)
305 {
306 /* Restore the row by copying back the contents saved off-screen */
307 OldPosition = (PULONG)(FrameBuffer + FB_OFFSET(0, SCREEN_HEIGHT));
308 NewPosition = (PULONG)(FrameBuffer + FB_OFFSET(0, CurrentTop));
309 }
310 else
311 {
312 /* Preserve the row by saving its contents off-screen */
313 OldPosition = (PULONG)(FrameBuffer + FB_OFFSET(0, CurrentTop));
314 NewPosition = (PULONG)(FrameBuffer + FB_OFFSET(0, SCREEN_HEIGHT));
315 }
316
317 while (PixelCount--)
318 WRITE_REGISTER_ULONG(NewPosition++, READ_REGISTER_ULONG(OldPosition++));
319}
320
321VOID
323{
324 NOTHING;
325}
326
327VOID
328NTAPI
330 _In_ ULONG Scroll)
331{
332 USHORT i, Line;
333 PUCHAR Src, Dst;
334 PULONG SrcWide, DstWide;
335 USHORT PixelCount = (VidpScrollRegion[2] - VidpScrollRegion[0]) + 1;
338
339 for (Line = VidpScrollRegion[1]; Line <= VidpScrollRegion[3]; Line++)
340 {
341 SrcWide = (PULONG)SourceOffset;
342 DstWide = (PULONG)DestinationOffset;
343 for (i = 0; i < PixelCount / sizeof(ULONG); i++)
344 WRITE_REGISTER_ULONG(DstWide++, READ_REGISTER_ULONG(SrcWide++));
345
346 Src = (PUCHAR)SrcWide;
347 Dst = (PUCHAR)DstWide;
348 for (i = 0; i < PixelCount % sizeof(ULONG); i++)
350
353 }
354}
355
356/* PUBLIC FUNCTIONS ***********************************************************/
357
359NTAPI
361 _In_ BOOLEAN SetMode)
362{
364
367 if (!PegcControl)
368 goto Failure;
369
370 if (!HasPegcController())
371 goto Failure;
372
375 if (!FrameBuffer)
376 goto Failure;
377
378 if (SetMode)
380
381 return TRUE;
382
383Failure:
384 if (PegcControl)
386
387 return FALSE;
388}
389
390VOID
391NTAPI
393{
395}
396
397VOID
398NTAPI
400 _In_ BOOLEAN HalReset)
401{
402 PULONG PixelsPosition = (PULONG)(FrameBuffer + FB_OFFSET(0, 0));
403 ULONG PixelCount = ((SCREEN_WIDTH * SCREEN_HEIGHT) / sizeof(ULONG)) + 1;
404
405 /* Clear the current position */
406 VidpCurrentX = 0;
407 VidpCurrentY = 0;
408
409 /* Clear the screen with HAL if we were asked to */
410 if (HalReset)
412
414
415 /* 640x480 256-color 31 kHz mode */
417
418 /* Re-initialize the palette and fill the screen black */
420 while (PixelCount--)
421 WRITE_REGISTER_ULONG(PixelsPosition++, 0);
422
424}
425
426VOID
427NTAPI
430 _In_ ULONG Left,
431 _In_ ULONG Top,
435{
436 ULONG X, Y;
438 USHORT Px;
439 PUSHORT PixelsPosition;
440
441 /* Clear the destination buffer */
443
444 for (Y = 0; Y < Height; Y++)
445 {
447 PixelsPosition = (PUSHORT)(FrameBuffer + FB_OFFSET(Left, Top + Y));
448
449 for (X = 0; X < Width; X += sizeof(USHORT))
450 {
451 Px = READ_REGISTER_USHORT(PixelsPosition++);
452 *OutputBuffer++ = (FIRSTBYTE(Px) << 4) | (SECONDBYTE(Px) & 0x0F);
453 }
454 }
455}
456
457VOID
458NTAPI
460 _In_ ULONG Left,
461 _In_ ULONG Top,
462 _In_ ULONG Right,
465{
466 USHORT i, Line;
467 PUCHAR PixelPtr;
468 PULONG PixelsPtr;
469 ULONG WideColor = (Color << 24) | (Color << 16) | (Color << 8) | Color;
470 USHORT PixelCount = (Right - Left) + 1;
471 ULONG_PTR StartOffset = FrameBuffer + FB_OFFSET(Left, Top);
472
473 for (Line = Top; Line <= Bottom; Line++)
474 {
475 PixelsPtr = (PULONG)StartOffset;
476 for (i = 0; i < PixelCount / sizeof(ULONG); i++)
477 WRITE_REGISTER_ULONG(PixelsPtr++, WideColor);
478
479 PixelPtr = (PUCHAR)PixelsPtr;
480 for (i = 0; i < PixelCount % sizeof(ULONG); i++)
481 WRITE_REGISTER_UCHAR(PixelPtr++, Color);
482
483 StartOffset += SCREEN_WIDTH;
484 }
485}
DWORD Id
unsigned char BOOLEAN
VOID NTAPI DoScroll(_In_ ULONG Scroll)
Definition: bootvid.c:59
VOID NTAPI VidScreenToBufferBlt(_Out_writes_bytes_(Delta *Height) PUCHAR Buffer, _In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Width, _In_ ULONG Height, _In_ ULONG Delta)
Definition: bootvid.c:257
VOID NTAPI PreserveRow(_In_ ULONG CurrentTop, _In_ ULONG TopDelta, _In_ BOOLEAN Restore)
Definition: bootvid.c:107
VOID NTAPI VidSolidColorFill(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Right, _In_ ULONG Bottom, _In_ UCHAR Color)
Definition: bootvid.c:274
VOID NTAPI InitPaletteWithTable(_In_ PULONG Table, _In_ ULONG Count)
Definition: bootvid.c:170
VOID NTAPI VidCleanUp(VOID)
Definition: bootvid.c:246
VOID NTAPI VidResetDisplay(_In_ BOOLEAN HalReset)
Definition: bootvid.c:220
VOID NTAPI DisplayCharacter(_In_ CHAR Character, _In_ ULONG Left, _In_ ULONG Top, _In_ ULONG TextColor, _In_ ULONG BackColor)
Definition: bootvid.c:13
BOOLEAN NTAPI VidInitialize(_In_ BOOLEAN SetMode)
Definition: bootvid.c:184
#define WRITE_REGISTER_USHORT(r, v)
Definition: arm.h:24
#define READ_REGISTER_USHORT(r)
Definition: arm.h:23
FORCEINLINE VOID SetPixel(_In_ ULONG Left, _In_ ULONG Top, _In_ UCHAR Color)
Definition: arm.h:50
#define WRITE_REGISTER_ULONG(r, v)
Definition: arm.h:21
#define READ_REGISTER_ULONG(r)
Definition: arm.h:20
static LPHIST_ENTRY Bottom
Definition: history.c:54
static LPHIST_ENTRY Top
Definition: history.c:53
Definition: bufpool.h:45
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define Y(I)
const RGBQUAD VidpDefaultPalette[BV_MAX_COLORS]
Definition: common.c:23
ULONG VidpCurrentY
Definition: common.c:8
ULONG VidpCurrentX
Definition: common.c:7
ULONG VidpScrollRegion[4]
Definition: common.c:10
#define GetBValue(quad)
Definition: precomp.h:66
#define GetFontPtr(_Char)
Definition: precomp.h:74
#define GetGValue(quad)
Definition: precomp.h:65
ULONG RGBQUAD
Definition: precomp.h:50
#define GetRValue(quad)
Definition: precomp.h:64
#define FONT_PTR_DELTA
Definition: precomp.h:75
#define BOOTCHAR_HEIGHT
Definition: precomp.h:27
#define BOOTCHAR_WIDTH
Definition: precomp.h:28
#define InitializePalette()
Definition: precomp.h:68
#define ULONG_PTR
Definition: config.h:101
@ Success
Definition: eventcreate.c:712
Status
Definition: gdiplustypes.h:25
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:50
static ULONG_PTR PegcControl
Definition: bootvid.c:14
static BOOLEAN TestMmio(VOID)
Definition: bootvid.c:34
VOID PrepareForSetPixel(VOID)
Definition: bootvid.c:322
static VOID TextSync(VOID)
Definition: bootvid.c:67
static VOID InitializeDisplay(VOID)
Definition: bootvid.c:77
#define PEGC_MAX_COLORS
Definition: bootvid.c:17
ULONG_PTR FrameBuffer
Definition: bootvid.c:15
static VOID SetPaletteEntryRGB(_In_ ULONG Id, _In_ RGBQUAD Rgb)
Definition: bootvid.c:240
static BOOLEAN GraphGetStatus(_In_ UCHAR Status)
Definition: bootvid.c:22
#define NOTHING
Definition: input_list.c:10
VOID NTAPI MmUnmapIoSpace(IN PVOID BaseAddress, IN SIZE_T NumberOfBytes)
Definition: iosup.c:193
PVOID NTAPI MmMapIoSpace(IN PHYSICAL_ADDRESS PhysicalAddress, IN SIZE_T NumberOfBytes, IN MEMORY_CACHING_TYPE CacheType)
Definition: iosup.c:47
#define Dst
Definition: mesh.h:153
#define _Out_writes_bytes_(size)
Definition: ms_sal.h:350
#define _In_
Definition: ms_sal.h:308
#define HalResetDisplay
Definition: halfuncs.h:45
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
Definition: mmfuncs.h:404
int Count
Definition: noreturn.cpp:7
#define FB_OFFSET(x, y)
Definition: pc98.h:17
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:27
#define SCREEN_HEIGHT
Definition: pc98video.c:28
#define BYTES_PER_SCANLINE
Definition: pc98video.c:29
UCHAR PixelMask[8]
Definition: vga.c:27
unsigned short USHORT
Definition: pedump.c:61
#define BV_COLOR_NONE
Definition: display.h:31
#define BV_COLOR_BLACK
Definition: display.h:15
#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
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
base of all file and directory entries
Definition: entries.h:83
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
UCHAR WritingZoomFactor
Definition: video.h:128
UCHAR DisplayZoomFactor
Definition: video.h:127
uint32_t * PULONG
Definition: typedefs.h:59
#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
_In_ HFONT _Out_ PUINT _Out_ PUINT Width
Definition: font.h:126
_In_ HFONT _Out_ PUINT Height
Definition: font.h:125
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR OutputBuffer
Definition: wdfiotarget.h:863
_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
_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:426
static ULONG Delta
Definition: xboxvideo.c:33
NTKERNELAPI VOID NTAPI WRITE_REGISTER_UCHAR(IN PUCHAR Register, IN UCHAR Value)
NTKERNELAPI UCHAR NTAPI READ_REGISTER_UCHAR(IN PUCHAR Register)
@ MmNonCached
Definition: mmtypes.h:129
#define SECONDBYTE(VALUE)
Definition: rtlfuncs.h:796
#define FIRSTBYTE(VALUE)
Definition: rtlfuncs.h:795
unsigned char UCHAR
Definition: xmlstorage.h:181
char CHAR
Definition: xmlstorage.h:175