/* GLOBALS *******************************************************************/
-ULONG ScrollRegion[4] =
+static ULONG ScrollRegion[4] =
{
0,
0,
640 - 1,
480 - 1
};
-UCHAR lMaskTable[8] =
+static UCHAR lMaskTable[8] =
{
(1 << 8) - (1 << 0),
(1 << 7) - (1 << 0),
(1 << 2) - (1 << 0),
(1 << 1) - (1 << 0)
};
-UCHAR rMaskTable[8] =
+static UCHAR rMaskTable[8] =
{
(1 << 7),
(1 << 7)+ (1 << 6),
(1 << 1),
(1 << 0),
};
-ULONG lookup[16] =
+static ULONG lookup[16] =
{
0x0000,
0x0100,
0x1111,
};
-ULONG VidTextColor = 0xF;
-ULONG curr_x = 0;
-ULONG curr_y = 0;
-BOOLEAN CarriageReturn = FALSE;
ULONG_PTR VgaRegisterBase = 0;
ULONG_PTR VgaBase = 0;
+ULONG curr_x = 0;
+ULONG curr_y = 0;
+static ULONG VidTextColor = 0xF;
+static BOOLEAN CarriageReturn = FALSE;
#define __outpb(Port, Value) \
- WRITE_PORT_UCHAR((PUCHAR)VgaRegisterBase + Port, (UCHAR)Value)
+ WRITE_PORT_UCHAR((PUCHAR)(VgaRegisterBase + (Port)), (UCHAR)(Value))
#define __outpw(Port, Value) \
- WRITE_PORT_USHORT((PUSHORT)(VgaRegisterBase + Port), (USHORT)Value)
+ WRITE_PORT_USHORT((PUSHORT)(VgaRegisterBase + (Port)), (USHORT)(Value))
/* PRIVATE FUNCTIONS *********************************************************/
-VOID
+static VOID
NTAPI
-ReadWriteMode(UCHAR Mode)
+ReadWriteMode(IN UCHAR Mode)
{
UCHAR Value;
__outpb(0x3CF, Mode | Value);
}
-
FORCEINLINE
VOID
SetPixel(IN ULONG Left,
PUCHAR PixelPosition;
/* Calculate the pixel position. */
- PixelPosition = (PUCHAR)VgaBase + (Left >> 3) + (Top * 80);
+ PixelPosition = (PUCHAR)(VgaBase + (Left >> 3) + (Top * 80));
/* Select the bitmask register and write the mask */
__outpw(0x3CE, (PixelMask[Left & 7] << 8) | 8);
READ_REGISTER_UCHAR(PixelPosition) & Color);
}
+#define SET_PIXELS(_PixelPtr, _PixelMask, _TextColor) \
+do { \
+ /* Select the bitmask register and write the mask */ \
+ __outpw(0x3CE, ((_PixelMask) << 8) | 8); \
+ /* Set the new color */ \
+ WRITE_REGISTER_UCHAR((_PixelPtr), (UCHAR)(_TextColor)); \
+} while (0);
+
#ifdef CHAR_GEN_UPSIDE_DOWN
# define GetFontPtr(_Char) &FontData[_Char * BOOTCHAR_HEIGHT] + BOOTCHAR_HEIGHT - 1;
# define FONT_PTR_DELTA (-1)
# define FONT_PTR_DELTA (1)
#endif
-#define SET_PIXELS(_PixelPtr, _PixelMask, _TextColor) \
- /* Select the bitmask register and write the mask */ \
- __outpw(0x3CE, (_PixelMask << 8) | 8); \
-\
- /* Set the new color */ \
- WRITE_REGISTER_UCHAR(_PixelPtr, (UCHAR)_TextColor);\
-
-VOID
+static VOID
NTAPI
-DisplayCharacter(CHAR Character,
- ULONG Left,
- ULONG Top,
- ULONG TextColor,
- ULONG BackColor)
+DisplayCharacter(IN CHAR Character,
+ IN ULONG Left,
+ IN ULONG Top,
+ IN ULONG TextColor,
+ IN ULONG BackColor)
{
PUCHAR FontChar, PixelPtr;
ULONG Height;
/* Get the font and pixel pointer */
FontChar = GetFontPtr(Character);
- PixelPtr = (PUCHAR)VgaBase + (Left >> 3) + (Top * 80);
+ PixelPtr = (PUCHAR)(VgaBase + (Left >> 3) + (Top * 80));
/* Loop all pixel rows */
Height = BOOTCHAR_HEIGHT;
/* Get the font and pixel pointer (2nd byte) */
FontChar = GetFontPtr(Character);
- PixelPtr = (PUCHAR)VgaBase + (Left >> 3) + (Top * 80) + 1;
+ PixelPtr = (PUCHAR)(VgaBase + (Left >> 3) + (Top * 80) + 1);
/* Loop all pixel rows */
Height = BOOTCHAR_HEIGHT;
/* Get the font and pixel pointer */
FontChar = GetFontPtr(Character);
- PixelPtr = (PUCHAR)VgaBase + (Left >> 3) + (Top * 80);
+ PixelPtr = (PUCHAR)(VgaBase + (Left >> 3) + (Top * 80));
/* Loop all pixel rows */
Height = BOOTCHAR_HEIGHT;
/* Get the font and pixel pointer (2nd byte) */
FontChar = GetFontPtr(Character);
- PixelPtr = (PUCHAR)VgaBase + (Left >> 3) + (Top * 80) + 1;
+ PixelPtr = (PUCHAR)(VgaBase + (Left >> 3) + (Top * 80) + 1);
/* Loop all pixel rows */
Height = BOOTCHAR_HEIGHT;
}
}
-VOID
+static VOID
NTAPI
-DisplayStringXY(PUCHAR String,
- ULONG Left,
- ULONG Top,
- ULONG TextColor,
- ULONG BackColor)
+DisplayStringXY(IN PUCHAR String,
+ IN ULONG Left,
+ IN ULONG Top,
+ IN ULONG TextColor,
+ IN ULONG BackColor)
{
/* Loop every character */
while (*String)
}
}
-VOID
+static VOID
NTAPI
SetPaletteEntryRGB(IN ULONG Id,
IN ULONG Rgb)
__outpb(0x3C9, Colors[0] >> 2);
}
-VOID
+static VOID
NTAPI
InitPaletteWithTable(IN PULONG Table,
IN ULONG Count)
}
}
-VOID
+static VOID
NTAPI
SetPaletteEntry(IN ULONG Id,
IN ULONG PaletteEntry)
NTAPI
InitializePalette(VOID)
{
- ULONG PaletteEntry[16] = {0,
- 0x20,
- 0x2000,
- 0x2020,
+ ULONG PaletteEntry[16] = {0x000000,
+ 0x000020,
+ 0x002000,
+ 0x002020,
0x200000,
0x200020,
0x202000,
0x202020,
0x303030,
- 0x3F,
- 0x3F00,
- 0x3F3F,
+ 0x00003F,
+ 0x003F00,
+ 0x003F3F,
0x3F0000,
0x3F003F,
0x3F3F00,
for (i = 0; i < 16; i++) SetPaletteEntry(i, PaletteEntry[i]);
}
-VOID
+static VOID
NTAPI
-VgaScroll(ULONG Scroll)
+VgaScroll(IN ULONG Scroll)
{
ULONG Top, RowSize;
PUCHAR OldPosition, NewPosition;
RowSize = (ScrollRegion[2] - ScrollRegion[0] + 1) / 8;
/* Calculate the position in memory for the row */
- OldPosition = (PUCHAR)VgaBase + (ScrollRegion[1] + Scroll) * 80 + ScrollRegion[0] / 8;
- NewPosition = (PUCHAR)VgaBase + ScrollRegion[1] * 80 + ScrollRegion[0] / 8;
+ OldPosition = (PUCHAR)(VgaBase + (ScrollRegion[1] + Scroll) * 80 + ScrollRegion[0] / 8);
+ NewPosition = (PUCHAR)(VgaBase + ScrollRegion[1] * 80 + ScrollRegion[0] / 8);
/* Start loop */
- for(Top = ScrollRegion[1]; Top <= ScrollRegion[3]; ++Top)
+ for (Top = ScrollRegion[1]; Top <= ScrollRegion[3]; ++Top)
{
#if defined(_M_IX86) || defined(_M_AMD64)
__movsb(NewPosition, OldPosition, RowSize);
ULONG i;
/* Scroll the row */
- for(i = 0; i < RowSize; ++i)
+ for (i = 0; i < RowSize; ++i)
WRITE_REGISTER_UCHAR(NewPosition + i, READ_REGISTER_UCHAR(OldPosition + i));
#endif
OldPosition += 80;
}
}
-VOID
+static VOID
NTAPI
PreserveRow(IN ULONG CurrentTop,
IN ULONG TopDelta,
if (Direction)
{
/* Calculate the position in memory for the row */
- Position1 = (PUCHAR)VgaBase + CurrentTop * 80;
- Position2 = (PUCHAR)VgaBase + 0x9600;
+ Position1 = (PUCHAR)(VgaBase + CurrentTop * 80);
+ Position2 = (PUCHAR)(VgaBase + 0x9600);
}
else
{
/* Calculate the position in memory for the row */
- Position1 = (PUCHAR)VgaBase + 0x9600;
- Position2 = (PUCHAR)VgaBase + CurrentTop * 80;
+ Position1 = (PUCHAR)(VgaBase + 0x9600);
+ Position2 = (PUCHAR)(VgaBase + CurrentTop * 80);
}
- /* Set the count and make sure it's above 0 */
+ /* Set the count and loop every pixel */
Count = TopDelta * 80;
#if defined(_M_IX86) || defined(_M_AMD64)
__movsb(Position1, Position2, Count);
#else
- /* Loop every pixel */
while (Count--)
{
/* Write the data back on the other position */
WRITE_REGISTER_UCHAR(Position1, READ_REGISTER_UCHAR(Position2));
/* Increase both positions */
- Position2++;
Position1++;
+ Position2++;
}
#endif
}
-VOID
+static VOID
NTAPI
BitBlt(IN ULONG Left,
IN ULONG Top,
} while (dy < Bottom);
}
-VOID
+static VOID
NTAPI
RleBitBlt(IN ULONG Left,
IN ULONG Top,
{
/* Case 0 */
case 0:
-
+ {
/* Set new x value, decrease distance and restart */
x = Left;
YDelta--;
Buffer++;
continue;
+ }
/* Case 1 */
case 1:
-
+ {
/* Done */
return;
+ }
/* Case 2 */
case 2:
-
+ {
/* Set new x value, decrease distance and restart */
Buffer++;
x += *Buffer;
YDelta -= *Buffer;
Buffer++;
continue;
+ }
/* Other values */
default:
-
+ {
Buffer++;
break;
+ }
}
/* Check if we've gone past the edge */
*/
ULONG
NTAPI
-VidSetTextColor(ULONG Color)
+VidSetTextColor(IN ULONG Color)
{
ULONG OldColor;
*/
VOID
NTAPI
-VidDisplayStringXY(PUCHAR String,
- ULONG Left,
- ULONG Top,
- BOOLEAN Transparent)
+VidDisplayStringXY(IN PUCHAR String,
+ IN ULONG Left,
+ IN ULONG Top,
+ IN BOOLEAN Transparent)
{
ULONG BackColor;
- /* If the caller wanted transparent, then send the special value (16), else */
- /* use our default and call the helper routine. */
- BackColor = (Transparent) ? 16 : 14;
+ /*
+ * If the caller wanted transparent, then send the special value (16),
+ * else use our default and call the helper routine.
+ */
+ BackColor = Transparent ? 16 : 14;
DisplayStringXY(String, Left, Top, 12, BackColor);
}
*/
VOID
NTAPI
-VidSetScrollRegion(ULONG x1,
- ULONG y1,
- ULONG x2,
- ULONG y2)
+VidSetScrollRegion(IN ULONG Left,
+ IN ULONG Top,
+ IN ULONG Right,
+ IN ULONG Bottom)
{
/* Assert alignment */
- ASSERT((x1 & 0x7) == 0);
- ASSERT((x2 & 0x7) == 7);
+ ASSERT((Left & 0x7) == 0);
+ ASSERT((Right & 0x7) == 7);
/* Set Scroll Region */
- ScrollRegion[0] = x1;
- ScrollRegion[1] = y1;
- ScrollRegion[2] = x2;
- ScrollRegion[3] = y2;
+ ScrollRegion[0] = Left;
+ ScrollRegion[1] = Top;
+ ScrollRegion[2] = Right;
+ ScrollRegion[3] = Bottom;
/* Set current X and Y */
- curr_x = x1;
- curr_y = y1;
+ curr_x = Left;
+ curr_y = Top;
}
/*
IN ULONG Delta)
{
/* Make sure we have a width and height */
- if (!(Width) || !(Height)) return;
+ if (!Width || !Height) return;
/* Call the helper function */
BitBlt(Left, Top, Width, Height, Buffer, 4, Delta);
*/
VOID
NTAPI
-VidDisplayString(PUCHAR String)
+VidDisplayString(IN PUCHAR String)
{
ULONG TopDelta = BOOTCHAR_HEIGHT + 1;
*/
VOID
NTAPI
-VidBitBlt(PUCHAR Buffer,
- ULONG Left,
- ULONG Top)
+VidBitBlt(IN PUCHAR Buffer,
+ IN ULONG Left,
+ IN ULONG Top)
{
PBITMAPINFOHEADER BitmapInfoHeader;
LONG Delta;
/* Make sure we can support this bitmap */
ASSERT((BitmapInfoHeader->biBitCount * BitmapInfoHeader->biPlanes) <= 4);
- /* Calculate the delta and align it on 32-bytes, then calculate the actual */
- /* start of the bitmap data. */
+ /*
+ * Calculate the delta and align it on 32-bytes, then calculate
+ * the actual start of the bitmap data.
+ */
Delta = (BitmapInfoHeader->biBitCount * BitmapInfoHeader->biWidth) + 31;
Delta >>= 3;
Delta &= ~3;
BitmapOffset = Buffer + sizeof(BITMAPINFOHEADER) + 16 * sizeof(ULONG);
/* Check the compression of the bitmap */
- if (BitmapInfoHeader->biCompression == 2)
+ if (BitmapInfoHeader->biCompression == BI_RLE4)
{
/* Make sure we have a width and a height */
if ((BitmapInfoHeader->biWidth) && (BitmapInfoHeader->biHeight))
else
{
/* Update buffer offset */
- BitmapOffset += ((BitmapInfoHeader->biHeight -1) * Delta);
+ BitmapOffset += ((BitmapInfoHeader->biHeight - 1) * Delta);
Delta *= -1;
}
*/
VOID
NTAPI
-VidScreenToBufferBlt(PUCHAR Buffer,
- ULONG Left,
- ULONG Top,
- ULONG Width,
- ULONG Height,
- ULONG Delta)
+VidScreenToBufferBlt(IN PUCHAR Buffer,
+ IN ULONG Left,
+ IN ULONG Top,
+ IN ULONG Width,
+ IN ULONG Height,
+ IN ULONG Delta)
{
ULONG Plane;
ULONG XDistance;
do
{
/* Set the current pixel position and reset buffer loop variable */
- PixelPosition = (PUCHAR)VgaBase + PixelOffset;
+ PixelPosition = (PUCHAR)(VgaBase + PixelOffset);
i = Buffer;
/* Set Mode 0 */
__outpw(0x3CE, 7);
/* Calculate pixel position for the read */
- Offset = VgaBase + (Top * 80) + (PUCHAR)(ULONG_PTR)LeftOffset;
+ Offset = (PUCHAR)(VgaBase + (Top * 80) + LeftOffset);
/* Select the bitmask register and write the mask */
__outpw(0x3CE, (USHORT)lMask);
if (Distance)
{
/* Calculate new pixel position */
- Offset = VgaBase + (Top * 80) + (PUCHAR)(ULONG_PTR)RightOffset;
+ Offset = (PUCHAR)(VgaBase + (Top * 80) + RightOffset);
Distance--;
/* Select the bitmask register and write the mask */
if (Distance)
{
/* Calculate new pixel position */
- Offset = VgaBase + (Top * 80) + (PUCHAR)(ULONG_PTR)(LeftOffset + 1);
+ Offset = (PUCHAR)(VgaBase + (Top * 80) + LeftOffset + 1);
/* Set the bitmask to 0xFF for all 4 planes */
__outpw(0x3CE, 0xFF08);