ReactOS  0.4.15-dev-1197-g8081ba9
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:
266  case COLOR_LIGHTMAGENTA:
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_YELLOW
Definition: ui.h:219
#define COLOR_BLACK
Definition: ui.h:204
#define GDC_ATTR_PURPLE
Definition: video.h:54
#define COLOR_LIGHTBLUE
Definition: ui.h:214
#define COLOR_LIGHTMAGENTA
Definition: ui.h:218
#define GDC_ATTR_GREEN
Definition: video.h:55
#define COLOR_DARKGRAY
Definition: ui.h:213
#define COLOR_RED
Definition: ui.h:208
#define GDC_ATTR_YELLOW
Definition: video.h:57
#define COLOR_BROWN
Definition: ui.h:210
#define COLOR_CYAN
Definition: ui.h:207
#define COLOR_BLUE
Definition: ui.h:205
#define COLOR_LIGHTCYAN
Definition: ui.h:216
#define COLOR_GREEN
Definition: ui.h:206
#define COLOR_LIGHTRED
Definition: ui.h:217
#define GDC_ATTR_BLUE
Definition: video.h:52
#define GDC_ATTR_WHITE
Definition: video.h:58
#define COLOR_WHITE
Definition: ui.h:220
#define GDC_ATTR_RED
Definition: video.h:53
#define COLOR_MAGENTA
Definition: ui.h:209
#define GDC_ATTR_BLACK
Definition: video.h:51
#define COLOR_LIGHTGREEN
Definition: ui.h:215
#define GDC_ATTR_LIGHTBLUE
Definition: video.h:56

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
#define R(b, x)
Definition: sha2.c:134
static ULONG VramPlaneB
Definition: pc98video.c:41
static ULONG VramPlaneR
Definition: pc98video.c:43
#define TEXT_CHAR_SIZE
Definition: pc98video.c:20
ULONG VramText
Definition: pc98video.c:40
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 BYTES_PER_SCANLINE
Definition: pc98video.c:29
#define SCREEN_HEIGHT
Definition: pc98video.c:28
#define VRAM_TEXT_SIZE
Definition: video.h:19
#define I(s)
static ULONG VramPlaneI
Definition: pc98video.c:44
unsigned short USHORT
Definition: pedump.c:61
#define B(row, col)
static ULONG VramPlaneG
Definition: pc98video.c:42
unsigned short * PUSHORT
Definition: retypes.h:2

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 }
#define Y(I)
unsigned char * PUCHAR
Definition: retypes.h:3
#define SCREEN_WIDTH
Definition: pc98video.c:27
VOID Pc98VideoPutChar(int Ch, UCHAR Attr, unsigned X, unsigned Y)
Definition: pc98video.c:316
#define CHAR_HEIGHT
Definition: pc98video.c:25
Definition: bufpool.h:45
#define SCREEN_HEIGHT
Definition: pc98video.c:28
#define VGA_CHAR_SIZE
Definition: pc98video.c:18
#define CHAR_WIDTH
Definition: pc98video.c:24
unsigned short USHORT
Definition: pedump.c:61
#define X(b, s)

Referenced by MachInit().

◆ Pc98VideoGetBufferSize()

ULONG Pc98VideoGetBufferSize ( VOID  )

Definition at line 203 of file pc98video.c.

204 {
206 }
#define SCREEN_WIDTH
Definition: pc98video.c:27
#define CHAR_HEIGHT
Definition: pc98video.c:25
#define SCREEN_HEIGHT
Definition: pc98video.c:28
#define VGA_CHAR_SIZE
Definition: pc98video.c:18
#define CHAR_WIDTH
Definition: pc98video.c:24

Referenced by MachInit().

◆ Pc98VideoGetDisplaySize()

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

Definition at line 195 of file pc98video.c.

196 {
197  *Width = SCREEN_WIDTH / CHAR_WIDTH;
198  *Height = SCREEN_HEIGHT / CHAR_HEIGHT;
199  *Depth = 0;
200 }
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION _In_ ULONG _In_ SIZE_T _In_ ULONG _In_ USHORT Depth
Definition: exfuncs.h:814
#define SCREEN_WIDTH
Definition: pc98video.c:27
#define CHAR_HEIGHT
Definition: pc98video.c:25
#define SCREEN_HEIGHT
Definition: pc98video.c:28
#define CHAR_WIDTH
Definition: pc98video.c:24

Referenced by MachInit().

◆ Pc98VideoGetFontsFromFirmware()

VOID Pc98VideoGetFontsFromFirmware ( PULONG  RomFontPointers)

Definition at line 209 of file pc98video.c.

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

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 }
Definition: bl.h:202
#define READ_PORT_UCHAR(p)
Definition: pc98vid.h:21
#define GDC2_IO_i_BLUE
Definition: video.h:267
unsigned char * PUCHAR
Definition: retypes.h:3
Definition: bl.h:199
#define GDC2_IO_i_RED
Definition: video.h:266
#define GDC2_IO_o_PALETTE_INDEX
Definition: video.h:275
Definition: bl.h:200
#define WRITE_PORT_UCHAR(p, d)
Definition: pc98vid.h:20
#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 GDC_COMMAND_CSRFORM
Definition: video.h:173
UCHAR StartScanLine
Definition: video.h:180
#define TRUE
Definition: types.h:120
unsigned char * PUCHAR
Definition: retypes.h:3
FORCEINLINE VOID WRITE_GDC_CSRFORM(PUCHAR Port, PCSRFORMPARAM CursorParameters)
Definition: video.h:186
UCHAR EndScanLine
Definition: video.h:181
#define WRITE_PORT_UCHAR(p, d)
Definition: pc98vid.h:20
BOOLEAN Show
Definition: video.h:176
UCHAR BlinkRate
Definition: video.h:178
BOOLEAN Blink
Definition: video.h:177
#define GDC1_IO_o_PARAM
Definition: video.h:234
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
#define GDC1_IO_o_COMMAND
Definition: video.h:235
UCHAR LinesPerRow
Definition: video.h:179

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 
125  Pc98VideoSync();
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 }
VOID Pc98VideoSync(VOID)
Definition: pc98video.c:435
UCHAR TextCols
Definition: pc98video.c:21
Definition: bl.h:202
#define VRAM_HI_RESO_PLANE_G
Definition: video.h:29
#define VRAM_NORMAL_PLANE_G
Definition: video.h:13
#define VRAM_ATTR_SIZE
Definition: video.h:20
static ULONG VramPlaneB
Definition: pc98video.c:41
#define VRAM_HI_RESO_TEXT
Definition: video.h:32
unsigned char * PUCHAR
Definition: retypes.h:3
static ULONG VramPlaneR
Definition: pc98video.c:43
unsigned char ah
Definition: pcbios.h:126
Definition: bl.h:199
#define GDC2_IO_o_VIDEO_PAGE_ACCESS
Definition: video.h:274
#define GDC2_IO_o_VIDEO_PAGE
Definition: video.h:273
VOID Pc98VideoSetPaletteColor(UCHAR Color, UCHAR Red, UCHAR Green, UCHAR Blue)
Definition: pc98video.c:405
#define VRAM_NORMAL_PLANE_R
Definition: video.h:14
#define GDC2_IO_o_MODE_FLIPFLOP2
Definition: video.h:280
int __cdecl Int386(int ivec, REGS *in, REGS *out)
#define TEXT_CHAR_SIZE
Definition: pc98video.c:20
ULONG VramText
Definition: pc98video.c:40
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 VRAM_TEXT_ATTR_OFFSET
Definition: video.h:18
#define VRAM_HI_RESO_PLANE_B
Definition: video.h:28
#define VRAM_NORMAL_PLANE_I
Definition: video.h:15
unsigned char ch
Definition: pcbios.h:132
BOOLEAN HiResoMachine
Definition: machpc98.c:17
Definition: bl.h:200
#define VRAM_NORMAL_PLANE_B
Definition: video.h:12
BYTEREGS b
Definition: pcbios.h:157
#define WRITE_PORT_UCHAR(p, d)
Definition: pc98vid.h:20
#define VRAM_NORMAL_TEXT
Definition: video.h:17
#define GDC_ATTR_WHITE
Definition: video.h:58
unsigned char al
Definition: pcbios.h:125
static ULONG VramPlaneI
Definition: pc98video.c:44
#define VRAM_HI_RESO_PLANE_I
Definition: video.h:31
#define VRAM_HI_RESO_PLANE_R
Definition: video.h:30
unsigned short USHORT
Definition: pedump.c:61
#define RTL_NUMBER_OF(x)
Definition: RtlRegistry.c:12
Definition: pcbios.h:152
static const PALETTE_ENTRY CgaPalette[]
Definition: pc98video.c:46
#define GDC_ATTR_VISIBLE
Definition: video.h:45
static ULONG VramPlaneG
Definition: pc98video.c:42
UCHAR TextLines
Definition: pc98video.c:22
#define GDC2_MODE_COLORS_16
Definition: video.h:282

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 }
unsigned char * PUCHAR
Definition: retypes.h:3
unsigned char ah
Definition: pcbios.h:126
int __cdecl Int386(int ivec, REGS *in, REGS *out)
#define TEXT_CHAR_SIZE
Definition: pc98video.c:20
ULONG VramText
Definition: pc98video.c:40
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 Pc98VideoHideShowTextCursor(BOOLEAN Show)
Definition: pc98video.c:228
#define VRAM_TEXT_ATTR_OFFSET
Definition: video.h:18
#define FALSE
Definition: types.h:117
#define VRAM_TEXT_SIZE
Definition: video.h:19
static BOOLEAN CGAccelDraw
Definition: pc98video.c:36
static BOOLEAN UseCGFont
Definition: pc98video.c:32
BYTEREGS b
Definition: pcbios.h:157
#define GDC_ATTR_WHITE
Definition: video.h:58
unsigned short USHORT
Definition: pedump.c:61
Definition: pcbios.h:152
#define GDC_ATTR_VISIBLE
Definition: video.h:45
unsigned short * PUSHORT
Definition: retypes.h:2

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  {
329  Ch = Pc98AsciiToJisX(Ch);
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 }
#define G(r, i, a, b, c, d)
Definition: blake2b-ref.c:117
#define R(b, x)
Definition: sha2.c:134
#define DARK_FILL
Definition: ui.h:199
#define Y(I)
#define READ_PORT_UCHAR(p)
Definition: pc98vid.h:21
static ULONG VramPlaneB
Definition: pc98video.c:41
unsigned char * PUCHAR
Definition: retypes.h:3
#define KCG_IO_i_PATTERN
Definition: video.h:404
UCHAR BitmapFont8x16[]
Definition: vgafont.c:12
static ULONG VramPlaneR
Definition: pc98video.c:43
#define Ch(x, y, z)
Definition: sha2.c:141
#define LIGHT_FILL
Definition: ui.h:197
#define CHAR_HEIGHT
Definition: pc98video.c:25
unsigned char BOOLEAN
#define BYTES_PER_SCANLINE
Definition: pc98video.c:29
#define KCG_IO_o_CHARCODE_HIGH
Definition: video.h:399
static BOOLEAN CGAccelDraw
Definition: pc98video.c:36
Definition: ncftp.h:79
unsigned char UCHAR
Definition: xmlstorage.h:181
static BOOLEAN UseCGFont
Definition: pc98video.c:32
#define WRITE_PORT_UCHAR(p, d)
Definition: pc98vid.h:20
#define I(s)
static ULONG VramPlaneI
Definition: pc98video.c:44
#define KCG_IO_o_CHARCODE_LOW
Definition: video.h:400
static VOID Pc98VideoTextRamPutChar(int Ch, UCHAR Attr, unsigned X, unsigned Y)
Definition: pc98video.c:309
#define B(row, col)
unsigned int ULONG
Definition: retypes.h:1
#define KCG_IO_o_LINE
Definition: video.h:401
static USHORT Pc98AsciiToJisX(int Ch)
Definition: pc98video.c:281
static ULONG VramPlaneG
Definition: pc98video.c:42
#define MEDIUM_FILL
Definition: ui.h:198
struct Line Line

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 }

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 }
Definition: bl.h:202
#define GDC2_IO_o_RED
Definition: video.h:277
#define GDC2_IO_o_BLUE
Definition: video.h:278
unsigned char * PUCHAR
Definition: retypes.h:3
Definition: bl.h:199
#define GDC2_IO_o_PALETTE_INDEX
Definition: video.h:275
Definition: bl.h:200
#define GDC2_IO_o_GREEN
Definition: video.h:276
#define WRITE_PORT_UCHAR(p, d)
Definition: pc98vid.h:20

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 }
UCHAR TextCols
Definition: pc98video.c:21
#define Y(I)
unsigned char * PUCHAR
Definition: retypes.h:3
ULONG CursorAddress
Definition: video.h:154
#define WRITE_PORT_UCHAR(p, d)
Definition: pc98vid.h:20
#define GDC_COMMAND_CSRW
Definition: video.h:151
FORCEINLINE VOID WRITE_GDC_CSRW(PUCHAR Port, PCSRWPARAM CursorParameters)
Definition: video.h:160
UCHAR DotAddress
Definition: video.h:155
#define GDC1_IO_o_PARAM
Definition: video.h:234
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
#define GDC1_IO_o_COMMAND
Definition: video.h:235

Referenced by MachInit().

◆ Pc98VideoSync()

VOID Pc98VideoSync ( VOID  )

Definition at line 435 of file pc98video.c.

436 {
438  NOTHING;
439 
441  NOTHING;
442 }
#define READ_PORT_UCHAR(p)
Definition: pc98vid.h:21
unsigned char * PUCHAR
Definition: retypes.h:3
#define NOTHING
Definition: env_spec_w32.h:461
#define GDC_STATUS_VSYNC
Definition: video.h:41
#define GDC2_IO_i_STATUS
Definition: video.h:260

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 }
UCHAR TextCols
Definition: pc98video.c:21
#define Y(I)
unsigned char * PUCHAR
Definition: retypes.h:3
#define Ch(x, y, z)
Definition: sha2.c:141
#define TEXT_CHAR_SIZE
Definition: pc98video.c:20
ULONG VramText
Definition: pc98video.c:40
#define VRAM_TEXT_ATTR_OFFSET
Definition: video.h:18
#define GDC_ATTR_VISIBLE
Definition: video.h:45
static UCHAR Pc98VideoAttrToGdcAttr(UCHAR Attr)
Definition: pc98video.c:246
unsigned short * PUSHORT
Definition: retypes.h:2

Referenced by Pc98VideoPutChar().

Variable Documentation

◆ BitmapFont8x16

UCHAR BitmapFont8x16[]

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

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