ReactOS 0.4.16-dev-112-g52265ae
pc98video.c File Reference
#include <freeldr.h>
#include <drivers/pc98/video.h>
Include dependency graph for pc98video.c:

Go to the source code of this file.

Macros

#define VGA_CHAR_SIZE   2
 
#define TEXT_CHAR_SIZE   2
 
#define CHAR_WIDTH   8
 
#define CHAR_HEIGHT   16
 
#define SCREEN_WIDTH   640
 
#define SCREEN_HEIGHT   400
 
#define BYTES_PER_SCANLINE   (SCREEN_WIDTH / 8)
 

Functions

VOID Pc98VideoInit (VOID)
 
VOID Pc98VideoClearScreen (UCHAR Attr)
 
VIDEODISPLAYMODE Pc98VideoSetDisplayMode (char *DisplayModeName, BOOLEAN Init)
 
VOID Pc98VideoGetDisplaySize (PULONG Width, PULONG Height, PULONG Depth)
 
ULONG Pc98VideoGetBufferSize (VOID)
 
VOID Pc98VideoGetFontsFromFirmware (PULONG RomFontPointers)
 
VOID Pc98VideoSetTextCursorPosition (UCHAR X, UCHAR Y)
 
VOID Pc98VideoHideShowTextCursor (BOOLEAN Show)
 
static UCHAR Pc98VideoAttrToGdcAttr (UCHAR Attr)
 
static USHORT Pc98AsciiToJisX (int Ch)
 
static VOID Pc98VideoTextRamPutChar (int Ch, UCHAR Attr, unsigned X, unsigned Y)
 
VOID Pc98VideoPutChar (int Ch, UCHAR Attr, unsigned X, unsigned Y)
 
VOID Pc98VideoCopyOffScreenBufferToVRAM (PVOID Buffer)
 
BOOLEAN Pc98VideoIsPaletteFixed (VOID)
 
VOID Pc98VideoSetPaletteColor (UCHAR Color, UCHAR Red, UCHAR Green, UCHAR Blue)
 
VOID Pc98VideoGetPaletteColor (UCHAR Color, UCHAR *Red, UCHAR *Green, UCHAR *Blue)
 
VOID Pc98VideoSync (VOID)
 
VOID Pc98VideoPrepareForReactOS (VOID)
 

Variables

UCHAR BitmapFont8x16 []
 
BOOLEAN HiResoMachine
 
UCHAR TextCols
 
UCHAR TextLines
 
static BOOLEAN UseCGFont = TRUE
 
static BOOLEAN CGAccelDraw = TRUE
 
UCHAR MachDefaultTextColor = COLOR_WHITE
 
ULONG VramText
 
static ULONG VramPlaneB
 
static ULONG VramPlaneG
 
static ULONG VramPlaneR
 
static ULONG VramPlaneI
 
static const PALETTE_ENTRY CgaPalette []
 

Macro Definition Documentation

◆ BYTES_PER_SCANLINE

#define BYTES_PER_SCANLINE   (SCREEN_WIDTH / 8)

Definition at line 29 of file pc98video.c.

◆ CHAR_HEIGHT

#define CHAR_HEIGHT   16

Definition at line 25 of file pc98video.c.

◆ CHAR_WIDTH

#define CHAR_WIDTH   8

Definition at line 24 of file pc98video.c.

◆ SCREEN_HEIGHT

#define SCREEN_HEIGHT   400

Definition at line 28 of file pc98video.c.

◆ SCREEN_WIDTH

#define SCREEN_WIDTH   640

Definition at line 27 of file pc98video.c.

◆ TEXT_CHAR_SIZE

#define TEXT_CHAR_SIZE   2

Definition at line 20 of file pc98video.c.

◆ VGA_CHAR_SIZE

#define VGA_CHAR_SIZE   2

Definition at line 18 of file pc98video.c.

Function Documentation

◆ Pc98AsciiToJisX()

static USHORT Pc98AsciiToJisX ( int  Ch)
static

Definition at line 281 of file pc98video.c.

282{
283 switch (Ch)
284 {
285 /* Only characters required for pseudographic are handled here */
286 case 0x18: return 0x1E;
287 case 0x19: return 0x1F;
288 case 0xB3: return 0x260B;
289 case 0xB6: return 0x4C0B;
290 case 0xBA: return 0x270B;
291 case 0xBB: return 0x370B;
292 case 0xBC: return 0x3F0B;
293 case 0xBF: return 0x340B;
294 case 0xC0: return 0x380B;
295 case 0xC4: return 0x240B;
296 case 0xC7: return 0x440B;
297 case 0xC8: return 0x3B0B;
298 case 0xC9: return 0x330B;
299 case 0xCD: return 0x250B;
300 case 0xD9: return 0x3C0B;
301 case 0xDA: return 0x300B;
302 case 0xDB: return 0x87;
303 default: return Ch;
304 }
305}
#define Ch(x, y, z)
Definition: sha2.c:141

Referenced by Pc98VideoPutChar().

◆ Pc98VideoAttrToGdcAttr()

static UCHAR Pc98VideoAttrToGdcAttr ( UCHAR  Attr)
static

Definition at line 246 of file pc98video.c.

247{
248 switch (Attr & 0xF)
249 {
250 case COLOR_BLACK:
251 return GDC_ATTR_BLACK;
252 case COLOR_BLUE:
253 return GDC_ATTR_BLUE;
254 case COLOR_GREEN:
255 case COLOR_LIGHTGREEN:
256 return GDC_ATTR_GREEN;
257 case COLOR_CYAN:
258 case COLOR_GRAY:
259 case COLOR_DARKGRAY:
260 case COLOR_WHITE:
261 return GDC_ATTR_WHITE;
262 case COLOR_RED:
263 case COLOR_LIGHTRED:
264 return GDC_ATTR_RED;
265 case COLOR_MAGENTA:
267 return GDC_ATTR_PURPLE;
268 case COLOR_BROWN:
269 case COLOR_YELLOW:
270 return GDC_ATTR_YELLOW;
271 case COLOR_LIGHTBLUE:
272 case COLOR_LIGHTCYAN:
273 return GDC_ATTR_LIGHTBLUE;
274 default:
275 return GDC_ATTR_BLACK;
276 }
277}
#define COLOR_LIGHTBLUE
Definition: ui.h:332
#define COLOR_LIGHTMAGENTA
Definition: ui.h:336
#define COLOR_BLUE
Definition: ui.h:323
#define COLOR_DARKGRAY
Definition: ui.h:331
#define COLOR_LIGHTRED
Definition: ui.h:335
#define COLOR_GRAY
Definition: ui.h:329
#define COLOR_YELLOW
Definition: ui.h:337
#define COLOR_LIGHTCYAN
Definition: ui.h:334
#define COLOR_CYAN
Definition: ui.h:325
#define COLOR_MAGENTA
Definition: ui.h:327
#define COLOR_BROWN
Definition: ui.h:328
#define COLOR_WHITE
Definition: ui.h:338
#define COLOR_BLACK
Definition: ui.h:322
#define COLOR_LIGHTGREEN
Definition: ui.h:333
#define COLOR_RED
Definition: ui.h:326
#define COLOR_GREEN
Definition: ui.h:324
#define GDC_ATTR_RED
Definition: video.h:53
#define GDC_ATTR_LIGHTBLUE
Definition: video.h:56
#define GDC_ATTR_WHITE
Definition: video.h:58
#define GDC_ATTR_PURPLE
Definition: video.h:54
#define GDC_ATTR_GREEN
Definition: video.h:55
#define GDC_ATTR_YELLOW
Definition: video.h:57
#define GDC_ATTR_BLACK
Definition: video.h:51
#define GDC_ATTR_BLUE
Definition: video.h:52

Referenced by Pc98VideoTextRamPutChar().

◆ Pc98VideoClearScreen()

VOID Pc98VideoClearScreen ( UCHAR  Attr)

Definition at line 167 of file pc98video.c.

168{
169 USHORT i;
170 USHORT B = (Attr & 0x10) ? 0xFFFF : 0;
171 USHORT G = (Attr & 0x20) ? 0xFFFF : 0;
172 USHORT R = (Attr & 0x40) ? 0xFFFF : 0;
173 USHORT I = (Attr & 0x80) ? 0xFFFF : 0;
174
175 for (i = 0; i < VRAM_TEXT_SIZE; i += TEXT_CHAR_SIZE)
176 *(PUSHORT)(VramText + i) = ' ';
177
178 for (i = 0; i < BYTES_PER_SCANLINE * SCREEN_HEIGHT; i += sizeof(USHORT))
179 {
180 *(PUSHORT)(VramPlaneB + i) = B;
181 *(PUSHORT)(VramPlaneG + i) = G;
182 *(PUSHORT)(VramPlaneR + i) = R;
183 *(PUSHORT)(VramPlaneI + i) = I;
184 }
185}
#define G(r, i, a, b, c, d)
Definition: blake2b-ref.c:117
Definition: ehthrow.cxx:54
#define B(row, col)
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 I(s)
static ULONG VramPlaneB
Definition: pc98video.c:41
ULONG VramText
Definition: pc98video.c:40
static ULONG VramPlaneG
Definition: pc98video.c:42
static ULONG VramPlaneR
Definition: pc98video.c:43
#define SCREEN_HEIGHT
Definition: pc98video.c:28
static ULONG VramPlaneI
Definition: pc98video.c:44
#define BYTES_PER_SCANLINE
Definition: pc98video.c:29
#define TEXT_CHAR_SIZE
Definition: pc98video.c:20
unsigned short USHORT
Definition: pedump.c:61
#define VRAM_TEXT_SIZE
Definition: video.h:19
#define R(b, x)
Definition: sha2.c:134
uint16_t * PUSHORT
Definition: typedefs.h:56

Referenced by ChainLoadBiosBootSectorCode(), and MachInit().

◆ Pc98VideoCopyOffScreenBufferToVRAM()

VOID Pc98VideoCopyOffScreenBufferToVRAM ( PVOID  Buffer)

Definition at line 383 of file pc98video.c.

384{
385 PUCHAR OffScreenBuffer = (PUCHAR)Buffer;
386 USHORT X, Y;
387
388 for (Y = 0; Y < SCREEN_HEIGHT / CHAR_HEIGHT; Y++)
389 {
390 for (X = 0; X < SCREEN_WIDTH / CHAR_WIDTH; X++)
391 {
392 Pc98VideoPutChar(OffScreenBuffer[0], OffScreenBuffer[1], X, Y);
393 OffScreenBuffer += VGA_CHAR_SIZE;
394 }
395 }
396}
Definition: bufpool.h:45
#define Y(I)
#define X(b, s)
#define SCREEN_WIDTH
Definition: pc98video.c:27
#define VGA_CHAR_SIZE
Definition: pc98video.c:18
#define CHAR_WIDTH
Definition: pc98video.c:24
VOID Pc98VideoPutChar(int Ch, UCHAR Attr, unsigned X, unsigned Y)
Definition: pc98video.c:316
#define CHAR_HEIGHT
Definition: pc98video.c:25
unsigned char * PUCHAR
Definition: typedefs.h:53

Referenced by MachInit().

◆ Pc98VideoGetBufferSize()

ULONG Pc98VideoGetBufferSize ( VOID  )

Definition at line 203 of file pc98video.c.

204{
206}

Referenced by MachInit().

◆ Pc98VideoGetDisplaySize()

VOID Pc98VideoGetDisplaySize ( PULONG  Width,
PULONG  Height,
PULONG  Depth 
)

Definition at line 195 of file pc98video.c.

196{
199 *Depth = 0;
200}
_In_ HFONT _Out_ PUINT _Out_ PUINT Width
Definition: font.h:89
_In_ HFONT _Out_ PUINT Height
Definition: font.h:88
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION _In_ ULONG _In_ SIZE_T _In_ ULONG _In_ USHORT Depth
Definition: exfuncs.h:819

Referenced by MachInit().

◆ Pc98VideoGetFontsFromFirmware()

VOID Pc98VideoGetFontsFromFirmware ( PULONG  RomFontPointers)

Definition at line 209 of file pc98video.c.

210{
211 *RomFontPointers = VramText + 0x4000;
212}
#define RomFontPointers
Definition: winldr.c:348

Referenced by MachInit().

◆ Pc98VideoGetPaletteColor()

VOID Pc98VideoGetPaletteColor ( UCHAR  Color,
UCHAR Red,
UCHAR Green,
UCHAR Blue 
)

Definition at line 417 of file pc98video.c.

418{
419 if (Color < 16)
420 {
425 }
426 else
427 {
428 *Red = 0;
429 *Green = 0;
430 *Blue = 0;
431 }
432}
@ Green
Definition: bl.h:199
@ Red
Definition: bl.h:201
@ Blue
Definition: bl.h:198
#define READ_PORT_UCHAR(p)
Definition: pc98vid.h:22
#define WRITE_PORT_UCHAR(p, d)
Definition: pc98vid.h:21
#define GDC2_IO_i_BLUE
Definition: video.h:267
#define GDC2_IO_o_PALETTE_INDEX
Definition: video.h:275
#define GDC2_IO_i_RED
Definition: video.h:266
#define GDC2_IO_i_GREEN
Definition: video.h:265

Referenced by MachInit().

◆ Pc98VideoHideShowTextCursor()

VOID Pc98VideoHideShowTextCursor ( BOOLEAN  Show)

Definition at line 228 of file pc98video.c.

229{
230 CSRFORMPARAM CursorParameters;
231
232 RtlZeroMemory(&CursorParameters, sizeof(CSRFORMPARAM));
233 CursorParameters.Show = Show;
234 CursorParameters.Blink = TRUE;
235 CursorParameters.BlinkRate = 12;
236 CursorParameters.LinesPerRow = 16;
237 CursorParameters.StartScanLine = 12;
238 CursorParameters.EndScanLine = 15;
239
241 WRITE_GDC_CSRFORM((PUCHAR)GDC1_IO_o_PARAM, &CursorParameters);
242}
#define TRUE
Definition: types.h:120
FORCEINLINE VOID WRITE_GDC_CSRFORM(PUCHAR Port, PCSRFORMPARAM CursorParameters)
Definition: video.h:186
#define GDC1_IO_o_COMMAND
Definition: video.h:235
#define GDC1_IO_o_PARAM
Definition: video.h:234
#define GDC_COMMAND_CSRFORM
Definition: video.h:173
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
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262

Referenced by MachInit(), and Pc98VideoPrepareForReactOS().

◆ Pc98VideoInit()

VOID Pc98VideoInit ( VOID  )

Definition at line 69 of file pc98video.c.

70{
71 REGS Regs;
72 USHORT i;
73
74 if (HiResoMachine)
75 {
81 TextCols = 80;
82 TextLines = 31;
83 }
84 else
85 {
91 TextCols = 80;
92 TextLines = 25;
93 }
94
95 for (i = 0; i < VRAM_ATTR_SIZE; i += TEXT_CHAR_SIZE)
97
98 /* Int 18h AH=41h
99 * CRT BIOS - Stop displaying graphics
100 */
101 Regs.b.ah = 0x41;
102 Int386(0x18, &Regs, &Regs);
103
104 /* Int 18h AH=42h
105 * CRT BIOS - Set display area
106 *
107 * CH0-CH3 - always zero
108 * CH4 - video page
109 * CH5 - CRT display mode
110 * 0 - color
111 * 1 - monochrome
112 * CH6-CH7 - VRAM area
113 * 01 - Upper-half (16-32 kB), 640x200
114 * 10 - Lower-half (0-16 kB), 640x200
115 * 11 - All (0-32 kB), 640x400
116 */
117 Regs.b.ah = 0x42;
118 Regs.b.ch = 0xC0;
119 Int386(0x18, &Regs, &Regs); /* 640x400 */
120
124
126 for (i = 0; i < RTL_NUMBER_OF(CgaPalette); i++)
128
129 /* Int 18h AH=0Ah
130 * CRT BIOS - Set text screen mode
131 *
132 * AL0 - text rows
133 * 0 - 25
134 * 1 - 20
135 * AL1 - text cols
136 * 0 - 80
137 * 1 - 40
138 * AL2 - text attribute
139 * 0 - with vertical line
140 * 1 - normal
141 * AL3 - KCG access mode
142 * 0 - code
143 * 1 - bitmap
144 * AL4-AL7 - always zero
145 *
146 * High-resolution machine:
147 * AL4 - text rows, AL3 - KCG access mode
148 */
149 Regs.b.ah = 0x0A;
150 Regs.b.al = HiResoMachine ? 0x10 : 0x00;
151 Int386(0x18, &Regs, &Regs); /* 80x25(31) */
152
153 /* Int 18h AH=0Ch
154 * CRT BIOS - Start displaying text
155 */
156 Regs.b.ah = 0x0C;
157 Int386(0x18, &Regs, &Regs);
158
159 /* Int 18h AH=40h
160 * CRT BIOS - Start displaying graphics
161 */
162 Regs.b.ah = 0x40;
163 Int386(0x18, &Regs, &Regs);
164}
#define RTL_NUMBER_OF(x)
Definition: RtlRegistry.c:12
UCHAR TextLines
Definition: pc98video.c:22
UCHAR TextCols
Definition: pc98video.c:21
VOID Pc98VideoSync(VOID)
Definition: pc98video.c:435
VOID Pc98VideoSetPaletteColor(UCHAR Color, UCHAR Red, UCHAR Green, UCHAR Blue)
Definition: pc98video.c:405
BOOLEAN HiResoMachine
Definition: machpc98.c:17
static const PALETTE_ENTRY CgaPalette[]
Definition: pc98video.c:46
int __cdecl Int386(int ivec, REGS *in, REGS *out)
#define VRAM_TEXT_ATTR_OFFSET
Definition: video.h:18
#define GDC2_IO_o_MODE_FLIPFLOP2
Definition: video.h:280
#define VRAM_ATTR_SIZE
Definition: video.h:20
#define GDC_ATTR_VISIBLE
Definition: video.h:45
#define VRAM_HI_RESO_PLANE_B
Definition: video.h:28
#define GDC2_IO_o_VIDEO_PAGE_ACCESS
Definition: video.h:274
#define VRAM_HI_RESO_PLANE_R
Definition: video.h:30
#define VRAM_NORMAL_PLANE_B
Definition: video.h:12
#define VRAM_HI_RESO_PLANE_I
Definition: video.h:31
#define VRAM_HI_RESO_PLANE_G
Definition: video.h:29
#define VRAM_NORMAL_TEXT
Definition: video.h:17
#define GDC2_IO_o_VIDEO_PAGE
Definition: video.h:273
#define GDC2_MODE_COLORS_16
Definition: video.h:282
#define VRAM_NORMAL_PLANE_I
Definition: video.h:15
#define VRAM_NORMAL_PLANE_G
Definition: video.h:13
#define VRAM_HI_RESO_TEXT
Definition: video.h:32
#define VRAM_NORMAL_PLANE_R
Definition: video.h:14
unsigned char ch
Definition: pcbios.h:138
unsigned char al
Definition: pcbios.h:131
unsigned char ah
Definition: pcbios.h:132
Definition: pcbios.h:159
BYTEREGS b
Definition: pcbios.h:163

Referenced by MachInit().

◆ Pc98VideoIsPaletteFixed()

BOOLEAN Pc98VideoIsPaletteFixed ( VOID  )

Definition at line 399 of file pc98video.c.

400{
401 return FALSE;
402}
#define FALSE
Definition: types.h:117

Referenced by MachInit().

◆ Pc98VideoPrepareForReactOS()

VOID Pc98VideoPrepareForReactOS ( VOID  )

Definition at line 445 of file pc98video.c.

446{
447 REGS Regs;
448
449 /* Int 18h AH=41h
450 * CRT BIOS - Stop displaying graphics
451 */
452 Regs.b.ah = 0x41;
453 Int386(0x18, &Regs, &Regs);
454
456
457 if (UseCGFont && CGAccelDraw)
458 {
459 /* Clear the text screen, resetting to default attributes */
460 for (USHORT i = 0; i < VRAM_TEXT_SIZE; i += TEXT_CHAR_SIZE)
461 {
462 *(PUSHORT)(VramText + i) = ' ';
464 }
465 }
466}
static BOOLEAN CGAccelDraw
Definition: pc98video.c:36
VOID Pc98VideoHideShowTextCursor(BOOLEAN Show)
Definition: pc98video.c:228
static BOOLEAN UseCGFont
Definition: pc98video.c:32

Referenced by Pc98PrepareForReactOS().

◆ Pc98VideoPutChar()

VOID Pc98VideoPutChar ( int  Ch,
UCHAR  Attr,
unsigned  X,
unsigned  Y 
)

Definition at line 316 of file pc98video.c.

317{
318 UCHAR Line;
319 UCHAR B = (Attr & 0x10) ? 0xFF : 0;
320 UCHAR G = (Attr & 0x20) ? 0xFF : 0;
321 UCHAR R = (Attr & 0x40) ? 0xFF : 0;
322 UCHAR I = (Attr & 0x80) ? 0xFF : 0;
323 ULONG VramOffset = X + (Y * CHAR_HEIGHT) * BYTES_PER_SCANLINE;
324 PUCHAR FontPtr = BitmapFont8x16 + Ch * 16;
325 BOOLEAN CGFont = UseCGFont && (Ch != LIGHT_FILL && Ch != MEDIUM_FILL && Ch != DARK_FILL);
326
327 if (CGFont)
328 {
330
331 if (CGAccelDraw)
332 {
333 Pc98VideoTextRamPutChar(Ch, Attr, X, Y);
334 }
335 else
336 {
337 /* Set needed character code to obtain glyph from CG Window */
340 }
341 }
342 else if (UseCGFont && CGAccelDraw)
343 {
344 /* Clear character at this place in Text RAM */
345 Pc98VideoTextRamPutChar(' ', Attr, X, Y);
346 }
347
348 for (Line = 0; Line < CHAR_HEIGHT; Line++)
349 {
350 if (CGFont)
351 {
352 if (CGAccelDraw)
353 {
354 /* Character is already displayed by GDC (Text RAM),
355 * so display only background for it. */
356 FontPtr[Line] = 0;
357 }
358 else
359 {
360 /* Obtain glyph data from CG Window */
363 }
364 }
365 if (Attr & 0x0F)
366 {
367 *(PUCHAR)(VramPlaneB + VramOffset + Line * BYTES_PER_SCANLINE) = B | ((Attr & 0x01) ? FontPtr[Line] : 0);
368 *(PUCHAR)(VramPlaneG + VramOffset + Line * BYTES_PER_SCANLINE) = G | ((Attr & 0x02) ? FontPtr[Line] : 0);
369 *(PUCHAR)(VramPlaneR + VramOffset + Line * BYTES_PER_SCANLINE) = R | ((Attr & 0x04) ? FontPtr[Line] : 0);
370 *(PUCHAR)(VramPlaneI + VramOffset + Line * BYTES_PER_SCANLINE) = I | ((Attr & 0x08) ? FontPtr[Line] : 0);
371 }
372 else
373 {
374 *(PUCHAR)(VramPlaneB + VramOffset + Line * BYTES_PER_SCANLINE) = B & ~FontPtr[Line];
375 *(PUCHAR)(VramPlaneG + VramOffset + Line * BYTES_PER_SCANLINE) = G & ~FontPtr[Line];
376 *(PUCHAR)(VramPlaneR + VramOffset + Line * BYTES_PER_SCANLINE) = R & ~FontPtr[Line];
377 *(PUCHAR)(VramPlaneI + VramOffset + Line * BYTES_PER_SCANLINE) = I & ~FontPtr[Line];
378 }
379 }
380}
unsigned char BOOLEAN
#define LIGHT_FILL
Definition: ui.h:310
#define MEDIUM_FILL
Definition: ui.h:311
#define DARK_FILL
Definition: ui.h:312
static VOID Pc98VideoTextRamPutChar(int Ch, UCHAR Attr, unsigned X, unsigned Y)
Definition: pc98video.c:309
static USHORT Pc98AsciiToJisX(int Ch)
Definition: pc98video.c:281
UCHAR BitmapFont8x16[]
Definition: vgafont.c:12
#define KCG_IO_o_CHARCODE_HIGH
Definition: video.h:399
#define KCG_IO_o_LINE
Definition: video.h:401
#define KCG_IO_i_PATTERN
Definition: video.h:404
#define KCG_IO_o_CHARCODE_LOW
Definition: video.h:400
Definition: ncftp.h:79
uint32_t ULONG
Definition: typedefs.h:59
unsigned char UCHAR
Definition: xmlstorage.h:181

Referenced by MachInit(), and Pc98VideoCopyOffScreenBufferToVRAM().

◆ Pc98VideoSetDisplayMode()

VIDEODISPLAYMODE Pc98VideoSetDisplayMode ( char DisplayModeName,
BOOLEAN  Init 
)

Definition at line 188 of file pc98video.c.

189{
190 /* Not supported by hardware */
191 return VideoTextMode;
192}
@ VideoTextMode
Definition: machine.h:35

Referenced by MachInit().

◆ Pc98VideoSetPaletteColor()

VOID Pc98VideoSetPaletteColor ( UCHAR  Color,
UCHAR  Red,
UCHAR  Green,
UCHAR  Blue 
)

Definition at line 405 of file pc98video.c.

406{
407 if (Color < 16)
408 {
413 }
414}
#define GDC2_IO_o_RED
Definition: video.h:277
#define GDC2_IO_o_GREEN
Definition: video.h:276
#define GDC2_IO_o_BLUE
Definition: video.h:278

Referenced by MachInit(), and Pc98VideoInit().

◆ Pc98VideoSetTextCursorPosition()

VOID Pc98VideoSetTextCursorPosition ( UCHAR  X,
UCHAR  Y 
)

Definition at line 215 of file pc98video.c.

216{
217 CSRWPARAM CursorParameters;
218
219 RtlZeroMemory(&CursorParameters, sizeof(CSRWPARAM));
220 CursorParameters.CursorAddress = X + Y * TextCols;
221 CursorParameters.DotAddress = 0;
222
224 WRITE_GDC_CSRW((PUCHAR)GDC1_IO_o_PARAM, &CursorParameters);
225}
FORCEINLINE VOID WRITE_GDC_CSRW(PUCHAR Port, PCSRWPARAM CursorParameters)
Definition: video.h:160
#define GDC_COMMAND_CSRW
Definition: video.h:151
UCHAR DotAddress
Definition: video.h:155
ULONG CursorAddress
Definition: video.h:154

Referenced by MachInit().

◆ Pc98VideoSync()

VOID Pc98VideoSync ( VOID  )

Definition at line 435 of file pc98video.c.

436{
438 NOTHING;
439
441 NOTHING;
442}
#define NOTHING
Definition: input_list.c:10
#define GDC2_IO_i_STATUS
Definition: video.h:260
#define GDC_STATUS_VSYNC
Definition: video.h:41

Referenced by MachInit(), and Pc98VideoInit().

◆ Pc98VideoTextRamPutChar()

static VOID Pc98VideoTextRamPutChar ( int  Ch,
UCHAR  Attr,
unsigned  X,
unsigned  Y 
)
static

Definition at line 309 of file pc98video.c.

310{
311 *(PUSHORT)(VramText + (X + Y * TextCols) * TEXT_CHAR_SIZE) = Ch;
313}
static UCHAR Pc98VideoAttrToGdcAttr(UCHAR Attr)
Definition: pc98video.c:246

Referenced by Pc98VideoPutChar().

Variable Documentation

◆ BitmapFont8x16

UCHAR BitmapFont8x16[]
extern

Definition at line 12 of file vgafont.c.

Referenced by Pc98VideoPutChar(), and XboxVideoOutputChar().

◆ CGAccelDraw

BOOLEAN CGAccelDraw = TRUE
static

Definition at line 36 of file pc98video.c.

Referenced by Pc98VideoPrepareForReactOS(), and Pc98VideoPutChar().

◆ CgaPalette

const PALETTE_ENTRY CgaPalette[]
static
Initial value:
=
{
{0x00, 0x00, 0x00},
{0x00, 0x00, 0x0A},
{0x00, 0x0A, 0x00},
{0x00, 0x0A, 0x0A},
{0x0A, 0x00, 0x00},
{0x0A, 0x00, 0x0A},
{0x0A, 0x05, 0x00},
{0x0A, 0x0A, 0x0A},
{0x05, 0x05, 0x05},
{0x05, 0x05, 0x0F},
{0x05, 0x0F, 0x05},
{0x05, 0x0F, 0x0F},
{0x0F, 0x05, 0x05},
{0x0F, 0x05, 0x0F},
{0x0F, 0x0F, 0x05},
{0x0F, 0x0F, 0x0F}
}

Definition at line 46 of file pc98video.c.

Referenced by Pc98VideoInit().

◆ HiResoMachine

BOOLEAN HiResoMachine
extern

Definition at line 17 of file machpc98.c.

Referenced by MachInit(), Pc98GetExtendedBIOSData(), and Pc98VideoInit().

◆ MachDefaultTextColor

UCHAR MachDefaultTextColor = COLOR_WHITE

Definition at line 38 of file pc98video.c.

◆ TextCols

◆ TextLines

UCHAR TextLines

Definition at line 22 of file pc98video.c.

Referenced by Pc98ConsPutChar(), and Pc98VideoInit().

◆ UseCGFont

BOOLEAN UseCGFont = TRUE
static

Definition at line 32 of file pc98video.c.

Referenced by Pc98VideoPrepareForReactOS(), and Pc98VideoPutChar().

◆ VramPlaneB

ULONG VramPlaneB
static

Definition at line 41 of file pc98video.c.

Referenced by Pc98VideoClearScreen(), Pc98VideoInit(), and Pc98VideoPutChar().

◆ VramPlaneG

ULONG VramPlaneG
static

Definition at line 42 of file pc98video.c.

Referenced by Pc98VideoClearScreen(), Pc98VideoInit(), and Pc98VideoPutChar().

◆ VramPlaneI

ULONG VramPlaneI
static

Definition at line 44 of file pc98video.c.

Referenced by Pc98VideoClearScreen(), Pc98VideoInit(), and Pc98VideoPutChar().

◆ VramPlaneR

ULONG VramPlaneR
static

Definition at line 43 of file pc98video.c.

Referenced by Pc98VideoClearScreen(), Pc98VideoInit(), and Pc98VideoPutChar().

◆ VramText