ReactOS  0.4.13-dev-464-g6b95727
svga.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _VGA_REGISTERS
 
struct  _SVGA_REGISTERS
 
struct  _CHAR_CELL
 

Macros

#define VGA_NUM_BANKS   4
 
#define VGA_BANK_SIZE   0x10000
 
#define VGA_MAX_COLORS   256
 
#define VGA_PALETTE_SIZE   (VGA_MAX_COLORS * 3)
 
#define VGA_BITMAP_INFO_SIZE   (sizeof(BITMAPINFOHEADER) + 2 * (VGA_PALETTE_SIZE / 3))
 
#define VGA_MINIMUM_WIDTH   400
 
#define VGA_MINIMUM_HEIGHT   300
 
#define VGA_DAC_TO_COLOR(x)   (((x) << 2) | ((x) >> 4))
 
#define VGA_COLOR_TO_DAC(x)   ((x) >> 2)
 
#define VGA_INTERLACE_HIGH_BIT   (1 << 13)
 
#define VGA_FONT_BANK   2
 
#define VGA_FONT_CHARACTERS   256
 
#define VGA_MAX_FONT_HEIGHT   32
 
#define VGA_FONT_SIZE   (VGA_FONT_CHARACTERS * VGA_MAX_FONT_HEIGHT)
 
#define VGA_CLOCK_BASE   14318181
 
#define SVGA_IS_UNLOCKED   (VgaSeqRegisters[SVGA_SEQ_UNLOCK_REG] == SVGA_SEQ_UNLOCKED)
 
#define SVGA_BANK_SIZE   0x100000
 
#define SVGA_SEQ_MAX_UNLOCKED_REG   (SVGA_IS_UNLOCKED ? SVGA_SEQ_MAX_REG : SVGA_SEQ_EXT_MODE_REG)
 
#define SVGA_CRTC_MAX_UNLOCKED_REG   (SVGA_IS_UNLOCKED ? SVGA_CRTC_MAX_REG : VGA_CRTC_MAX_REG)
 
#define SVGA_GC_MAX_UNLOCKED_REG   (SVGA_IS_UNLOCKED ? SVGA_GC_MAX_REG : VGA_GC_MAX_REG)
 
#define VGA_MISC_READ   0x3CC
 
#define VGA_MISC_WRITE   0x3C2
 
#define VGA_INSTAT0_READ   0x3C2
 
#define VGA_INSTAT1_READ_MONO   0x3BA
 
#define VGA_INSTAT1_READ_COLOR   0x3DA
 
#define VGA_FEATURE_READ   0x3CA
 
#define VGA_FEATURE_WRITE_MONO   0x3BA
 
#define VGA_FEATURE_WRITE_COLOR   0x3DA
 
#define VGA_AC_INDEX   0x3C0
 
#define VGA_AC_WRITE   0x3C0
 
#define VGA_AC_READ   0x3C1
 
#define VGA_SEQ_INDEX   0x3C4
 
#define VGA_SEQ_DATA   0x3C5
 
#define VGA_DAC_MASK   0x3C6
 
#define VGA_DAC_READ_INDEX   0x3C7
 
#define VGA_DAC_WRITE_INDEX   0x3C8
 
#define VGA_DAC_DATA   0x3C9
 
#define VGA_CRTC_INDEX_MONO   0x3B4
 
#define VGA_CRTC_DATA_MONO   0x3B5
 
#define VGA_CRTC_INDEX_COLOR   0x3D4
 
#define VGA_CRTC_DATA_COLOR   0x3D5
 
#define VGA_GC_INDEX   0x3CE
 
#define VGA_GC_DATA   0x3CF
 
#define VGA_SEQ_INDEX_MASK   0x1F
 
#define VGA_GC_INDEX_MASK   0x3F
 
#define VGA_CRTC_INDEX_MASK   0x3F
 
#define VGA_MISC_COLOR   (1 << 0)
 
#define VGA_MISC_RAM_ENABLED   (1 << 1)
 
#define VGA_MISC_OE_PAGESEL   (1 << 5)
 
#define VGA_MISC_HSYNCP   (1 << 6)
 
#define VGA_MISC_VSYNCP   (1 << 7)
 
#define VGA_STAT_DD   (1 << 0)
 
#define VGA_STAT_VRETRACE   (1 << 3)
 
#define VGA_SEQ_RESET_AR   (1 << 0)
 
#define VGA_SEQ_RESET_SR   (1 << 1)
 
#define VGA_SEQ_CLOCK_98DM   (1 << 0)
 
#define VGA_SEQ_CLOCK_SLR   (1 << 2)
 
#define VGA_SEQ_CLOCK_DCR   (1 << 3)
 
#define VGA_SEQ_CLOCK_S4   (1 << 4)
 
#define VGA_SEQ_CLOCK_SD   (1 << 5)
 
#define VGA_SEQ_MEM_EXT   (1 << 1)
 
#define VGA_SEQ_MEM_OE_DIS   (1 << 2)
 
#define VGA_SEQ_MEM_C4   (1 << 3)
 
#define SVGA_SEQ_LOCKED   0x0F
 
#define SVGA_SEQ_UNLOCK_MASK   0x17
 
#define SVGA_SEQ_UNLOCKED   0x12
 
#define SVGA_SEQ_EXT_MODE_HIGH_RES   (1 << 0)
 
#define SVGA_SEQ_EXT_CONTROL_MMIO   (1 << 2)
 
#define SVGA_SEQ_EXT_CONTROL_MMIO_HIGH   (1 << 6)
 
#define SVGA_SEQ_MCLK_VCLK   (1 << 6)
 
#define VGA_CRTC_OVERFLOW_VT8   (1 << 0)
 
#define VGA_CRTC_OVERFLOW_VDE8   (1 << 1)
 
#define VGA_CRTC_OVERFLOW_VRS8   (1 << 2)
 
#define VGA_CRTC_OVERFLOW_SVB8   (1 << 3)
 
#define VGA_CRTC_OVERFLOW_LC8   (1 << 4)
 
#define VGA_CRTC_OVERFLOW_VT9   (1 << 5)
 
#define VGA_CRTC_OVERFLOW_VDE9   (1 << 6)
 
#define VGA_CRTC_OVERFLOW_VRS9   (1 << 7)
 
#define VGA_CRTC_UNDERLINE_DWORD   (1 << 6)
 
#define VGA_CRTC_MAXSCANLINE_DOUBLE   (1 << 7)
 
#define VGA_CRTC_MAXSCANLINE_LC9   (1 << 6)
 
#define VGA_CRTC_MODE_CONTROL_WRAP   (1 << 5)
 
#define VGA_CRTC_MODE_CONTROL_BYTE   (1 << 6)
 
#define VGA_CRTC_MODE_CONTROL_SYNC   (1 << 7)
 
#define SVGA_CRTC_EXT_ADDR_BIT16   (1 << 0)
 
#define SVGA_CRTC_EXT_ADDR_WRAP   (1 << 1)
 
#define SVGA_CRTC_EXT_ADDR_BITS1718   ((1 << 2) | (1 << 3))
 
#define SVGA_CRTC_EXT_OFFSET_BIT8   (1 << 4)
 
#define SVGA_CRTC_EXT_ADDR_BIT19   (1 << 7)
 
#define VGA_GC_MODE_READ   (1 << 3)
 
#define VGA_GC_MODE_OE   (1 << 4)
 
#define VGA_GC_MODE_SHIFTREG   (1 << 5)
 
#define VGA_GC_MODE_SHIFT256   (1 << 6)
 
#define VGA_GC_MISC_NOALPHA   (1 << 0)
 
#define VGA_GC_MISC_OE   (1 << 1)
 
#define SVGA_GC_EXT_MODE_WND_B   (1 << 0)
 
#define SVGA_GC_EXT_MODE_GRAN   (1 << 5)
 
#define VGA_AC_CONTROL_ATGE   (1 << 0)
 
#define VGA_AC_CONTROL_MONO   (1 << 1)
 
#define VGA_AC_CONTROL_LGE   (1 << 2)
 
#define VGA_AC_CONTROL_BLINK   (1 << 3)
 
#define VGA_AC_CONTROL_PPM   (1 << 5)
 
#define VGA_AC_CONTROL_8BIT   (1 << 6)
 
#define VGA_AC_CONTROL_P54S   (1 << 7)
 

Typedefs

typedef struct _VGA_REGISTERS VGA_REGISTERS
 
typedef struct _VGA_REGISTERSPVGA_REGISTERS
 
typedef struct _SVGA_REGISTERS SVGA_REGISTERS
 
typedef struct _SVGA_REGISTERSPSVGA_REGISTERS
 
typedef struct _CHAR_CELL CHAR_CELL
 
typedef struct _CHAR_CELLPCHAR_CELL
 

Enumerations

enum  {
  VGA_SEQ_RESET_REG, VGA_SEQ_CLOCK_REG, VGA_SEQ_MASK_REG, VGA_SEQ_CHAR_REG,
  VGA_SEQ_MEM_REG, VGA_SEQ_MAX_REG, SVGA_SEQ_UNLOCK_REG, SVGA_SEQ_EXT_MODE_REG,
  SVGA_SEQ_EEPROM_REG, SVGA_SEQ_SCRATCH_0_REG, SVGA_SEQ_SCRATCH_1_REG, SVGA_SEQ_VCLK0_NUMERATOR_REG,
  SVGA_SEQ_VCLK1_NUMERATOR_REG, SVGA_SEQ_VCLK2_NUMERATOR_REG, SVGA_SEQ_VCLK3_NUMERATOR_REG, SVGA_SEQ_DRAM_REG,
  SVGA_SEQ_CURSOR_X_REG, SVGA_SEQ_CURSOR_Y_REG, SVGA_SEQ_CURSOR_ATTR_REG, SVGA_SEQ_CURSOR_PATTERN_REG,
  SVGA_SEQ_SCRATCH_2_REG, SVGA_SEQ_SCRATCH_3_REG, SVGA_SEQ_PERFORMANCE_REG, SVGA_SEQ_EXT_CONTROL_REG,
  SVGA_SEQ_SIG_GEN_CONTROL_REG, SVGA_SEQ_SIG_GEN_RESULT_LOW_REG, SVGA_SEQ_SIG_GEN_RESULT_HIGH_REG, SVGA_SEQ_VCLK0_DENOMINATOR_REG,
  SVGA_SEQ_VCLK1_DENOMINATOR_REG, SVGA_SEQ_VCLK2_DENOMINATOR_REG, SVGA_SEQ_VCLK3_DENOMINATOR_REG, SVGA_SEQ_MCLK_REG,
  SVGA_SEQ_MAX_REG
}
 
enum  {
  VGA_CRTC_HORZ_TOTAL_REG, VGA_CRTC_END_HORZ_DISP_REG, VGA_CRTC_START_HORZ_BLANKING_REG, VGA_CRTC_END_HORZ_BLANKING_REG,
  VGA_CRTC_START_HORZ_RETRACE_REG, VGA_CRTC_END_HORZ_RETRACE_REG, VGA_CRTC_VERT_TOTAL_REG, VGA_CRTC_OVERFLOW_REG,
  VGA_CRTC_PRESET_ROW_SCAN_REG, VGA_CRTC_MAX_SCAN_LINE_REG, VGA_CRTC_CURSOR_START_REG, VGA_CRTC_CURSOR_END_REG,
  VGA_CRTC_START_ADDR_HIGH_REG, VGA_CRTC_START_ADDR_LOW_REG, VGA_CRTC_CURSOR_LOC_HIGH_REG, VGA_CRTC_CURSOR_LOC_LOW_REG,
  VGA_CRTC_START_VERT_RETRACE_REG, VGA_CRTC_END_VERT_RETRACE_REG, VGA_CRTC_VERT_DISP_END_REG, VGA_CRTC_OFFSET_REG,
  VGA_CRTC_UNDERLINE_REG, VGA_CRTC_START_VERT_BLANKING_REG, VGA_CRTC_END_VERT_BLANKING_REG, VGA_CRTC_MODE_CONTROL_REG,
  VGA_CRTC_LINE_COMPARE_REG, VGA_CRTC_MAX_REG, SVGA_CRTC_INTERLACE_END_REG = VGA_CRTC_MAX_REG, SVGA_CRTC_MISC_CONTROL_REG,
  SVGA_CRTC_EXT_DISPLAY_REG, SVGA_CRTC_SYNC_ADJUST_REG, SVGA_CRTC_OVERLAY_REG, SVGA_CRTC_UNUSED0_REG,
  SVGA_CRTC_UNUSED1_REG, SVGA_CRTC_UNUSED2_REG, SVGA_CRTC_UNUSED3_REG, SVGA_CRTC_UNUSED4_REG,
  SVGA_CRTC_UNUSED5_REG, SVGA_CRTC_UNUSED6_REG, SVGA_CRTC_PART_STATUS_REG, SVGA_CRTC_UNUSED7_REG,
  SVGA_CRTC_ID_REG, SVGA_CRTC_MAX_REG
}
 
enum  {
  VGA_GC_RESET_REG, VGA_GC_ENABLE_RESET_REG, VGA_GC_COLOR_COMPARE_REG, VGA_GC_ROTATE_REG,
  VGA_GC_READ_MAP_SEL_REG, VGA_GC_MODE_REG, VGA_GC_MISC_REG, VGA_GC_COLOR_IGNORE_REG,
  VGA_GC_BITMASK_REG, VGA_GC_MAX_REG, SVGA_GC_OFFSET_0_REG = VGA_GC_MAX_REG, SVGA_GC_OFFSET_1_REG,
  SVGA_GC_EXT_MODE_REG, SVGA_GC_COLOR_COMPARE_REG, SVGA_GC_BITMASK_REG, SVGA_GC_POWER_MANAGEMENT_REG,
  SVGA_GC_UNUSED0_REG, SVGA_GC_BACKGROUND_1_REG, SVGA_GC_FOREGROUND_1_REG, SVGA_GC_BACKGROUND_2_REG,
  SVGA_GC_FOREGROUND_2_REG, SVGA_GC_BACKGROUND_3_REG, SVGA_GC_FOREGROUND_3_REG, SVGA_GC_UNUSED1_REG,
  SVGA_GC_UNUSED2_REG, SVGA_GC_UNUSED3_REG, SVGA_GC_UNUSED4_REG, SVGA_GC_UNUSED5_REG,
  SVGA_GC_UNUSED6_REG, SVGA_GC_UNUSED7_REG, SVGA_GC_UNUSED8_REG, SVGA_GC_UNUSED9_REG,
  SVGA_GC_UNUSED10_REG, SVGA_GC_BLT_WIDTH_LOW_REG, SVGA_GC_BLT_WIDTH_HIGH_REG, SVGA_GC_BLT_HEIGHT_LOW_REG,
  SVGA_GC_BLT_HEIGHT_HIGH_REG, SVGA_GC_BLT_DEST_PITCH_LOW_REG, SVGA_GC_BLT_DEST_PITCH_HIGH_REG, SVGA_GC_BLT_SRC_PITCH_LOW_REG,
  SVGA_GC_BLT_SRC_PITCH_HIGH_REG, SVGA_GC_BLT_DEST_START_0_REG, SVGA_GC_BLT_DEST_START_1_REG, SVGA_GC_BLT_DEST_START_2_REG,
  SVGA_GC_UNUSED11_REG, SVGA_GC_BLT_SRC_START_0_REG, SVGA_GC_BLT_SRC_START_1_REG, SVGA_GC_BLT_SRC_START_2_REG,
  SVGA_GC_BLT_DEST_MASK_REG, SVGA_GC_BLT_MODE_REG, SVGA_GC_BLT_STATUS_REG, SVGA_GC_BLT_ROP_REG,
  SVGA_GC_BLT_EXT_MODE_REG, SVGA_GC_MAX_REG
}
 
enum  {
  VGA_AC_PAL_0_REG, VGA_AC_PAL_1_REG, VGA_AC_PAL_2_REG, VGA_AC_PAL_3_REG,
  VGA_AC_PAL_4_REG, VGA_AC_PAL_5_REG, VGA_AC_PAL_6_REG, VGA_AC_PAL_7_REG,
  VGA_AC_PAL_8_REG, VGA_AC_PAL_9_REG, VGA_AC_PAL_A_REG, VGA_AC_PAL_B_REG,
  VGA_AC_PAL_C_REG, VGA_AC_PAL_D_REG, VGA_AC_PAL_E_REG, VGA_AC_PAL_F_REG,
  VGA_AC_CONTROL_REG, VGA_AC_OVERSCAN_REG, VGA_AC_COLOR_PLANE_REG, VGA_AC_HORZ_PANNING_REG,
  VGA_AC_COLOR_SEL_REG, VGA_AC_MAX_REG
}
 

Functions

 C_ASSERT (sizeof(CHAR_CELL)==2)
 
COORD VgaGetDisplayResolution (VOID)
 
VOID VgaRefreshDisplay (VOID)
 
VOID FASTCALL VgaReadMemory (ULONG Address, PVOID Buffer, ULONG Size)
 
BOOLEAN FASTCALL VgaWriteMemory (ULONG Address, PVOID Buffer, ULONG Size)
 
VOID VgaWriteTextModeFont (UINT FontNumber, CONST UCHAR *FontData, UINT Height)
 
VOID VgaClearMemory (VOID)
 
BOOLEAN VgaInitialize (HANDLE TextHandle)
 
VOID VgaCleanup (VOID)
 

Macro Definition Documentation

◆ SVGA_BANK_SIZE

#define SVGA_BANK_SIZE   0x100000

Definition at line 31 of file svga.h.

◆ SVGA_CRTC_EXT_ADDR_BIT16

#define SVGA_CRTC_EXT_ADDR_BIT16   (1 << 0)

Definition at line 193 of file svga.h.

◆ SVGA_CRTC_EXT_ADDR_BIT19

#define SVGA_CRTC_EXT_ADDR_BIT19   (1 << 7)

Definition at line 199 of file svga.h.

◆ SVGA_CRTC_EXT_ADDR_BITS1718

#define SVGA_CRTC_EXT_ADDR_BITS1718   ((1 << 2) | (1 << 3))

Definition at line 195 of file svga.h.

◆ SVGA_CRTC_EXT_ADDR_WRAP

#define SVGA_CRTC_EXT_ADDR_WRAP   (1 << 1)

Definition at line 194 of file svga.h.

◆ SVGA_CRTC_EXT_OFFSET_BIT8

#define SVGA_CRTC_EXT_OFFSET_BIT8   (1 << 4)

Definition at line 196 of file svga.h.

◆ SVGA_CRTC_MAX_UNLOCKED_REG

#define SVGA_CRTC_MAX_UNLOCKED_REG   (SVGA_IS_UNLOCKED ? SVGA_CRTC_MAX_REG : VGA_CRTC_MAX_REG)

Definition at line 34 of file svga.h.

◆ SVGA_GC_EXT_MODE_GRAN

#define SVGA_GC_EXT_MODE_GRAN   (1 << 5)

Definition at line 264 of file svga.h.

◆ SVGA_GC_EXT_MODE_WND_B

#define SVGA_GC_EXT_MODE_WND_B   (1 << 0)

Definition at line 263 of file svga.h.

◆ SVGA_GC_MAX_UNLOCKED_REG

#define SVGA_GC_MAX_UNLOCKED_REG   (SVGA_IS_UNLOCKED ? SVGA_GC_MAX_REG : VGA_GC_MAX_REG)

Definition at line 35 of file svga.h.

◆ SVGA_IS_UNLOCKED

Definition at line 30 of file svga.h.

◆ SVGA_SEQ_EXT_CONTROL_MMIO

#define SVGA_SEQ_EXT_CONTROL_MMIO   (1 << 2)

Definition at line 123 of file svga.h.

◆ SVGA_SEQ_EXT_CONTROL_MMIO_HIGH

#define SVGA_SEQ_EXT_CONTROL_MMIO_HIGH   (1 << 6)

Definition at line 124 of file svga.h.

◆ SVGA_SEQ_EXT_MODE_HIGH_RES

#define SVGA_SEQ_EXT_MODE_HIGH_RES   (1 << 0)

Definition at line 120 of file svga.h.

◆ SVGA_SEQ_LOCKED

#define SVGA_SEQ_LOCKED   0x0F

Definition at line 115 of file svga.h.

◆ SVGA_SEQ_MAX_UNLOCKED_REG

#define SVGA_SEQ_MAX_UNLOCKED_REG   (SVGA_IS_UNLOCKED ? SVGA_SEQ_MAX_REG : SVGA_SEQ_EXT_MODE_REG)

Definition at line 33 of file svga.h.

◆ SVGA_SEQ_MCLK_VCLK

#define SVGA_SEQ_MCLK_VCLK   (1 << 6)

Definition at line 127 of file svga.h.

◆ SVGA_SEQ_UNLOCK_MASK

#define SVGA_SEQ_UNLOCK_MASK   0x17

Definition at line 116 of file svga.h.

◆ SVGA_SEQ_UNLOCKED

#define SVGA_SEQ_UNLOCKED   0x12

Definition at line 117 of file svga.h.

◆ VGA_AC_CONTROL_8BIT

#define VGA_AC_CONTROL_8BIT   (1 << 6)

Definition at line 336 of file svga.h.

◆ VGA_AC_CONTROL_ATGE

#define VGA_AC_CONTROL_ATGE   (1 << 0)

Definition at line 331 of file svga.h.

◆ VGA_AC_CONTROL_BLINK

#define VGA_AC_CONTROL_BLINK   (1 << 3)

Definition at line 334 of file svga.h.

◆ VGA_AC_CONTROL_LGE

#define VGA_AC_CONTROL_LGE   (1 << 2)

Definition at line 333 of file svga.h.

◆ VGA_AC_CONTROL_MONO

#define VGA_AC_CONTROL_MONO   (1 << 1)

Definition at line 332 of file svga.h.

◆ VGA_AC_CONTROL_P54S

#define VGA_AC_CONTROL_P54S   (1 << 7)

Definition at line 337 of file svga.h.

◆ VGA_AC_CONTROL_PPM

#define VGA_AC_CONTROL_PPM   (1 << 5)

Definition at line 335 of file svga.h.

◆ VGA_AC_INDEX

#define VGA_AC_INDEX   0x3C0

Definition at line 51 of file svga.h.

◆ VGA_AC_READ

#define VGA_AC_READ   0x3C1

Definition at line 53 of file svga.h.

◆ VGA_AC_WRITE

#define VGA_AC_WRITE   0x3C0

Definition at line 52 of file svga.h.

◆ VGA_BANK_SIZE

#define VGA_BANK_SIZE   0x10000

Definition at line 15 of file svga.h.

◆ VGA_BITMAP_INFO_SIZE

#define VGA_BITMAP_INFO_SIZE   (sizeof(BITMAPINFOHEADER) + 2 * (VGA_PALETTE_SIZE / 3))

Definition at line 18 of file svga.h.

◆ VGA_CLOCK_BASE

#define VGA_CLOCK_BASE   14318181

Definition at line 28 of file svga.h.

◆ VGA_COLOR_TO_DAC

#define VGA_COLOR_TO_DAC (   x)    ((x) >> 2)

Definition at line 22 of file svga.h.

◆ VGA_CRTC_DATA_COLOR

#define VGA_CRTC_DATA_COLOR   0x3D5

Definition at line 66 of file svga.h.

◆ VGA_CRTC_DATA_MONO

#define VGA_CRTC_DATA_MONO   0x3B5

Definition at line 64 of file svga.h.

◆ VGA_CRTC_INDEX_COLOR

#define VGA_CRTC_INDEX_COLOR   0x3D4

Definition at line 65 of file svga.h.

◆ VGA_CRTC_INDEX_MASK

#define VGA_CRTC_INDEX_MASK   0x3F

Definition at line 73 of file svga.h.

◆ VGA_CRTC_INDEX_MONO

#define VGA_CRTC_INDEX_MONO   0x3B4

Definition at line 63 of file svga.h.

◆ VGA_CRTC_MAXSCANLINE_DOUBLE

#define VGA_CRTC_MAXSCANLINE_DOUBLE   (1 << 7)

Definition at line 184 of file svga.h.

◆ VGA_CRTC_MAXSCANLINE_LC9

#define VGA_CRTC_MAXSCANLINE_LC9   (1 << 6)

Definition at line 185 of file svga.h.

◆ VGA_CRTC_MODE_CONTROL_BYTE

#define VGA_CRTC_MODE_CONTROL_BYTE   (1 << 6)

Definition at line 189 of file svga.h.

◆ VGA_CRTC_MODE_CONTROL_SYNC

#define VGA_CRTC_MODE_CONTROL_SYNC   (1 << 7)

Definition at line 190 of file svga.h.

◆ VGA_CRTC_MODE_CONTROL_WRAP

#define VGA_CRTC_MODE_CONTROL_WRAP   (1 << 5)

Definition at line 188 of file svga.h.

◆ VGA_CRTC_OVERFLOW_LC8

#define VGA_CRTC_OVERFLOW_LC8   (1 << 4)

Definition at line 175 of file svga.h.

◆ VGA_CRTC_OVERFLOW_SVB8

#define VGA_CRTC_OVERFLOW_SVB8   (1 << 3)

Definition at line 174 of file svga.h.

◆ VGA_CRTC_OVERFLOW_VDE8

#define VGA_CRTC_OVERFLOW_VDE8   (1 << 1)

Definition at line 172 of file svga.h.

◆ VGA_CRTC_OVERFLOW_VDE9

#define VGA_CRTC_OVERFLOW_VDE9   (1 << 6)

Definition at line 177 of file svga.h.

◆ VGA_CRTC_OVERFLOW_VRS8

#define VGA_CRTC_OVERFLOW_VRS8   (1 << 2)

Definition at line 173 of file svga.h.

◆ VGA_CRTC_OVERFLOW_VRS9

#define VGA_CRTC_OVERFLOW_VRS9   (1 << 7)

Definition at line 178 of file svga.h.

◆ VGA_CRTC_OVERFLOW_VT8

#define VGA_CRTC_OVERFLOW_VT8   (1 << 0)

Definition at line 171 of file svga.h.

◆ VGA_CRTC_OVERFLOW_VT9

#define VGA_CRTC_OVERFLOW_VT9   (1 << 5)

Definition at line 176 of file svga.h.

◆ VGA_CRTC_UNDERLINE_DWORD

#define VGA_CRTC_UNDERLINE_DWORD   (1 << 6)

Definition at line 181 of file svga.h.

◆ VGA_DAC_DATA

#define VGA_DAC_DATA   0x3C9

Definition at line 61 of file svga.h.

◆ VGA_DAC_MASK

#define VGA_DAC_MASK   0x3C6

Definition at line 58 of file svga.h.

◆ VGA_DAC_READ_INDEX

#define VGA_DAC_READ_INDEX   0x3C7

Definition at line 59 of file svga.h.

◆ VGA_DAC_TO_COLOR

#define VGA_DAC_TO_COLOR (   x)    (((x) << 2) | ((x) >> 4))

Definition at line 21 of file svga.h.

◆ VGA_DAC_WRITE_INDEX

#define VGA_DAC_WRITE_INDEX   0x3C8

Definition at line 60 of file svga.h.

◆ VGA_FEATURE_READ

#define VGA_FEATURE_READ   0x3CA

Definition at line 47 of file svga.h.

◆ VGA_FEATURE_WRITE_COLOR

#define VGA_FEATURE_WRITE_COLOR   0x3DA

Definition at line 49 of file svga.h.

◆ VGA_FEATURE_WRITE_MONO

#define VGA_FEATURE_WRITE_MONO   0x3BA

Definition at line 48 of file svga.h.

◆ VGA_FONT_BANK

#define VGA_FONT_BANK   2

Definition at line 24 of file svga.h.

◆ VGA_FONT_CHARACTERS

#define VGA_FONT_CHARACTERS   256

Definition at line 25 of file svga.h.

◆ VGA_FONT_SIZE

Definition at line 27 of file svga.h.

◆ VGA_GC_DATA

#define VGA_GC_DATA   0x3CF

Definition at line 69 of file svga.h.

◆ VGA_GC_INDEX

#define VGA_GC_INDEX   0x3CE

Definition at line 68 of file svga.h.

◆ VGA_GC_INDEX_MASK

#define VGA_GC_INDEX_MASK   0x3F

Definition at line 72 of file svga.h.

◆ VGA_GC_MISC_NOALPHA

#define VGA_GC_MISC_NOALPHA   (1 << 0)

Definition at line 259 of file svga.h.

◆ VGA_GC_MISC_OE

#define VGA_GC_MISC_OE   (1 << 1)

Definition at line 260 of file svga.h.

◆ VGA_GC_MODE_OE

#define VGA_GC_MODE_OE   (1 << 4)

Definition at line 254 of file svga.h.

◆ VGA_GC_MODE_READ

#define VGA_GC_MODE_READ   (1 << 3)

Definition at line 253 of file svga.h.

◆ VGA_GC_MODE_SHIFT256

#define VGA_GC_MODE_SHIFT256   (1 << 6)

Definition at line 256 of file svga.h.

◆ VGA_GC_MODE_SHIFTREG

#define VGA_GC_MODE_SHIFTREG   (1 << 5)

Definition at line 255 of file svga.h.

◆ VGA_INSTAT0_READ

#define VGA_INSTAT0_READ   0x3C2

Definition at line 42 of file svga.h.

◆ VGA_INSTAT1_READ_COLOR

#define VGA_INSTAT1_READ_COLOR   0x3DA

Definition at line 45 of file svga.h.

◆ VGA_INSTAT1_READ_MONO

#define VGA_INSTAT1_READ_MONO   0x3BA

Definition at line 44 of file svga.h.

◆ VGA_INTERLACE_HIGH_BIT

#define VGA_INTERLACE_HIGH_BIT   (1 << 13)

Definition at line 23 of file svga.h.

◆ VGA_MAX_COLORS

#define VGA_MAX_COLORS   256

Definition at line 16 of file svga.h.

◆ VGA_MAX_FONT_HEIGHT

#define VGA_MAX_FONT_HEIGHT   32

Definition at line 26 of file svga.h.

◆ VGA_MINIMUM_HEIGHT

#define VGA_MINIMUM_HEIGHT   300

Definition at line 20 of file svga.h.

◆ VGA_MINIMUM_WIDTH

#define VGA_MINIMUM_WIDTH   400

Definition at line 19 of file svga.h.

◆ VGA_MISC_COLOR

#define VGA_MISC_COLOR   (1 << 0)

Definition at line 82 of file svga.h.

◆ VGA_MISC_HSYNCP

#define VGA_MISC_HSYNCP   (1 << 6)

Definition at line 87 of file svga.h.

◆ VGA_MISC_OE_PAGESEL

#define VGA_MISC_OE_PAGESEL   (1 << 5)

Definition at line 86 of file svga.h.

◆ VGA_MISC_RAM_ENABLED

#define VGA_MISC_RAM_ENABLED   (1 << 1)

Definition at line 83 of file svga.h.

◆ VGA_MISC_READ

#define VGA_MISC_READ   0x3CC

Definition at line 39 of file svga.h.

◆ VGA_MISC_VSYNCP

#define VGA_MISC_VSYNCP   (1 << 7)

Definition at line 88 of file svga.h.

◆ VGA_MISC_WRITE

#define VGA_MISC_WRITE   0x3C2

Definition at line 40 of file svga.h.

◆ VGA_NUM_BANKS

#define VGA_NUM_BANKS   4

Definition at line 14 of file svga.h.

◆ VGA_PALETTE_SIZE

#define VGA_PALETTE_SIZE   (VGA_MAX_COLORS * 3)

Definition at line 17 of file svga.h.

◆ VGA_SEQ_CLOCK_98DM

#define VGA_SEQ_CLOCK_98DM   (1 << 0)

Definition at line 104 of file svga.h.

◆ VGA_SEQ_CLOCK_DCR

#define VGA_SEQ_CLOCK_DCR   (1 << 3)

Definition at line 106 of file svga.h.

◆ VGA_SEQ_CLOCK_S4

#define VGA_SEQ_CLOCK_S4   (1 << 4)

Definition at line 107 of file svga.h.

◆ VGA_SEQ_CLOCK_SD

#define VGA_SEQ_CLOCK_SD   (1 << 5)

Definition at line 108 of file svga.h.

◆ VGA_SEQ_CLOCK_SLR

#define VGA_SEQ_CLOCK_SLR   (1 << 2)

Definition at line 105 of file svga.h.

◆ VGA_SEQ_DATA

#define VGA_SEQ_DATA   0x3C5

Definition at line 56 of file svga.h.

◆ VGA_SEQ_INDEX

#define VGA_SEQ_INDEX   0x3C4

Definition at line 55 of file svga.h.

◆ VGA_SEQ_INDEX_MASK

#define VGA_SEQ_INDEX_MASK   0x1F

Definition at line 71 of file svga.h.

◆ VGA_SEQ_MEM_C4

#define VGA_SEQ_MEM_C4   (1 << 3)

Definition at line 113 of file svga.h.

◆ VGA_SEQ_MEM_EXT

#define VGA_SEQ_MEM_EXT   (1 << 1)

Definition at line 111 of file svga.h.

◆ VGA_SEQ_MEM_OE_DIS

#define VGA_SEQ_MEM_OE_DIS   (1 << 2)

Definition at line 112 of file svga.h.

◆ VGA_SEQ_RESET_AR

#define VGA_SEQ_RESET_AR   (1 << 0)

Definition at line 100 of file svga.h.

◆ VGA_SEQ_RESET_SR

#define VGA_SEQ_RESET_SR   (1 << 1)

Definition at line 101 of file svga.h.

◆ VGA_STAT_DD

#define VGA_STAT_DD   (1 << 0)

Definition at line 91 of file svga.h.

◆ VGA_STAT_VRETRACE

#define VGA_STAT_VRETRACE   (1 << 3)

Definition at line 92 of file svga.h.

Typedef Documentation

◆ CHAR_CELL

◆ PCHAR_CELL

◆ PSVGA_REGISTERS

◆ PVGA_REGISTERS

◆ SVGA_REGISTERS

◆ VGA_REGISTERS

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
VGA_SEQ_RESET_REG 
VGA_SEQ_CLOCK_REG 
VGA_SEQ_MASK_REG 
VGA_SEQ_CHAR_REG 
VGA_SEQ_MEM_REG 
VGA_SEQ_MAX_REG 
SVGA_SEQ_UNLOCK_REG 
SVGA_SEQ_EXT_MODE_REG 
SVGA_SEQ_EEPROM_REG 
SVGA_SEQ_SCRATCH_0_REG 
SVGA_SEQ_SCRATCH_1_REG 
SVGA_SEQ_VCLK0_NUMERATOR_REG 
SVGA_SEQ_VCLK1_NUMERATOR_REG 
SVGA_SEQ_VCLK2_NUMERATOR_REG 
SVGA_SEQ_VCLK3_NUMERATOR_REG 
SVGA_SEQ_DRAM_REG 
SVGA_SEQ_CURSOR_X_REG 
SVGA_SEQ_CURSOR_Y_REG 
SVGA_SEQ_CURSOR_ATTR_REG 
SVGA_SEQ_CURSOR_PATTERN_REG 
SVGA_SEQ_SCRATCH_2_REG 
SVGA_SEQ_SCRATCH_3_REG 
SVGA_SEQ_PERFORMANCE_REG 
SVGA_SEQ_EXT_CONTROL_REG 
SVGA_SEQ_SIG_GEN_CONTROL_REG 
SVGA_SEQ_SIG_GEN_RESULT_LOW_REG 
SVGA_SEQ_SIG_GEN_RESULT_HIGH_REG 
SVGA_SEQ_VCLK0_DENOMINATOR_REG 
SVGA_SEQ_VCLK1_DENOMINATOR_REG 
SVGA_SEQ_VCLK2_DENOMINATOR_REG 
SVGA_SEQ_VCLK3_DENOMINATOR_REG 
SVGA_SEQ_MCLK_REG 
SVGA_SEQ_MAX_REG 

Definition at line 129 of file svga.h.

130 {
164 };

◆ anonymous enum

anonymous enum
Enumerator
VGA_CRTC_HORZ_TOTAL_REG 
VGA_CRTC_END_HORZ_DISP_REG 
VGA_CRTC_START_HORZ_BLANKING_REG 
VGA_CRTC_END_HORZ_BLANKING_REG 
VGA_CRTC_START_HORZ_RETRACE_REG 
VGA_CRTC_END_HORZ_RETRACE_REG 
VGA_CRTC_VERT_TOTAL_REG 
VGA_CRTC_OVERFLOW_REG 
VGA_CRTC_PRESET_ROW_SCAN_REG 
VGA_CRTC_MAX_SCAN_LINE_REG 
VGA_CRTC_CURSOR_START_REG 
VGA_CRTC_CURSOR_END_REG 
VGA_CRTC_START_ADDR_HIGH_REG 
VGA_CRTC_START_ADDR_LOW_REG 
VGA_CRTC_CURSOR_LOC_HIGH_REG 
VGA_CRTC_CURSOR_LOC_LOW_REG 
VGA_CRTC_START_VERT_RETRACE_REG 
VGA_CRTC_END_VERT_RETRACE_REG 
VGA_CRTC_VERT_DISP_END_REG 
VGA_CRTC_OFFSET_REG 
VGA_CRTC_UNDERLINE_REG 
VGA_CRTC_START_VERT_BLANKING_REG 
VGA_CRTC_END_VERT_BLANKING_REG 
VGA_CRTC_MODE_CONTROL_REG 
VGA_CRTC_LINE_COMPARE_REG 
VGA_CRTC_MAX_REG 
SVGA_CRTC_INTERLACE_END_REG 
SVGA_CRTC_MISC_CONTROL_REG 
SVGA_CRTC_EXT_DISPLAY_REG 
SVGA_CRTC_SYNC_ADJUST_REG 
SVGA_CRTC_OVERLAY_REG 
SVGA_CRTC_UNUSED0_REG 
SVGA_CRTC_UNUSED1_REG 
SVGA_CRTC_UNUSED2_REG 
SVGA_CRTC_UNUSED3_REG 
SVGA_CRTC_UNUSED4_REG 
SVGA_CRTC_UNUSED5_REG 
SVGA_CRTC_UNUSED6_REG 
SVGA_CRTC_PART_STATUS_REG 
SVGA_CRTC_UNUSED7_REG 
SVGA_CRTC_ID_REG 
SVGA_CRTC_MAX_REG 

Definition at line 201 of file svga.h.

202 {
245 };

◆ anonymous enum

anonymous enum
Enumerator
VGA_GC_RESET_REG 
VGA_GC_ENABLE_RESET_REG 
VGA_GC_COLOR_COMPARE_REG 
VGA_GC_ROTATE_REG 
VGA_GC_READ_MAP_SEL_REG 
VGA_GC_MODE_REG 
VGA_GC_MISC_REG 
VGA_GC_COLOR_IGNORE_REG 
VGA_GC_BITMASK_REG 
VGA_GC_MAX_REG 
SVGA_GC_OFFSET_0_REG 
SVGA_GC_OFFSET_1_REG 
SVGA_GC_EXT_MODE_REG 
SVGA_GC_COLOR_COMPARE_REG 
SVGA_GC_BITMASK_REG 
SVGA_GC_POWER_MANAGEMENT_REG 
SVGA_GC_UNUSED0_REG 
SVGA_GC_BACKGROUND_1_REG 
SVGA_GC_FOREGROUND_1_REG 
SVGA_GC_BACKGROUND_2_REG 
SVGA_GC_FOREGROUND_2_REG 
SVGA_GC_BACKGROUND_3_REG 
SVGA_GC_FOREGROUND_3_REG 
SVGA_GC_UNUSED1_REG 
SVGA_GC_UNUSED2_REG 
SVGA_GC_UNUSED3_REG 
SVGA_GC_UNUSED4_REG 
SVGA_GC_UNUSED5_REG 
SVGA_GC_UNUSED6_REG 
SVGA_GC_UNUSED7_REG 
SVGA_GC_UNUSED8_REG 
SVGA_GC_UNUSED9_REG 
SVGA_GC_UNUSED10_REG 
SVGA_GC_BLT_WIDTH_LOW_REG 
SVGA_GC_BLT_WIDTH_HIGH_REG 
SVGA_GC_BLT_HEIGHT_LOW_REG 
SVGA_GC_BLT_HEIGHT_HIGH_REG 
SVGA_GC_BLT_DEST_PITCH_LOW_REG 
SVGA_GC_BLT_DEST_PITCH_HIGH_REG 
SVGA_GC_BLT_SRC_PITCH_LOW_REG 
SVGA_GC_BLT_SRC_PITCH_HIGH_REG 
SVGA_GC_BLT_DEST_START_0_REG 
SVGA_GC_BLT_DEST_START_1_REG 
SVGA_GC_BLT_DEST_START_2_REG 
SVGA_GC_UNUSED11_REG 
SVGA_GC_BLT_SRC_START_0_REG 
SVGA_GC_BLT_SRC_START_1_REG 
SVGA_GC_BLT_SRC_START_2_REG 
SVGA_GC_BLT_DEST_MASK_REG 
SVGA_GC_BLT_MODE_REG 
SVGA_GC_BLT_STATUS_REG 
SVGA_GC_BLT_ROP_REG 
SVGA_GC_BLT_EXT_MODE_REG 
SVGA_GC_MAX_REG 

Definition at line 266 of file svga.h.

267 {
322 };

◆ anonymous enum

anonymous enum
Enumerator
VGA_AC_PAL_0_REG 
VGA_AC_PAL_1_REG 
VGA_AC_PAL_2_REG 
VGA_AC_PAL_3_REG 
VGA_AC_PAL_4_REG 
VGA_AC_PAL_5_REG 
VGA_AC_PAL_6_REG 
VGA_AC_PAL_7_REG 
VGA_AC_PAL_8_REG 
VGA_AC_PAL_9_REG 
VGA_AC_PAL_A_REG 
VGA_AC_PAL_B_REG 
VGA_AC_PAL_C_REG 
VGA_AC_PAL_D_REG 
VGA_AC_PAL_E_REG 
VGA_AC_PAL_F_REG 
VGA_AC_CONTROL_REG 
VGA_AC_OVERSCAN_REG 
VGA_AC_COLOR_PLANE_REG 
VGA_AC_HORZ_PANNING_REG 
VGA_AC_COLOR_SEL_REG 
VGA_AC_MAX_REG 

Definition at line 339 of file svga.h.

Function Documentation

◆ C_ASSERT()

C_ASSERT ( sizeof(CHAR_CELL = =2)

◆ VgaCleanup()

VOID VgaCleanup ( VOID  )

Definition at line 2145 of file svga.c.

2146 {
2147  /* Do a final display refresh */
2149 
2151 
2152  /* Leave the current video mode */
2153  VgaLeaveCurrentMode(); // ScreenMode
2154 
2155  MemRemoveFastMemoryHook((PVOID)0xA0000, 0x20000);
2156 
2158 }
BOOL MemRemoveFastMemoryHook(PVOID Address, ULONG Size)
Definition: memory.c:350
static PHARDWARE_TIMER HSyncTimer
Definition: svga.c:276
VOID VgaRefreshDisplay(VOID)
Definition: svga.c:1783
static VOID VgaLeaveCurrentMode(VOID)
Definition: svga.c:651
VOID VgaConsoleCleanup(VOID)
Definition: video.c:807
VOID DestroyHardwareTimer(PHARDWARE_TIMER Timer)
Definition: clock.c:210

Referenced by EmulatorCleanup().

◆ VgaClearMemory()

VOID VgaClearMemory ( VOID  )

Definition at line 2074 of file svga.c.

2075 {
2076  RtlZeroMemory(VgaMemory, sizeof(VgaMemory));
2077 }
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:261
static BYTE VgaMemory[VGA_NUM_BANKS *SVGA_BANK_SIZE]
Definition: svga.c:244

Referenced by VbeSetExtendedVideoMode(), VgaInitialize(), and VidBiosSetVideoMode().

◆ VgaGetDisplayResolution()

COORD VgaGetDisplayResolution ( VOID  )

Definition at line 1727 of file svga.c.

1728 {
1729  COORD Resolution;
1730  BYTE MaximumScanLine = 1 + (VgaCrtcRegisters[VGA_CRTC_MAX_SCAN_LINE_REG] & 0x1F);
1731 
1732  /* The low 8 bits are in the display registers */
1735 
1736  /* Set the top bits from the overflow register */
1738  {
1739  Resolution.Y |= 1 << 8;
1740  }
1742  {
1743  Resolution.Y |= 1 << 9;
1744  }
1745 
1746  /* Increase the values by 1 */
1747  Resolution.X++;
1748  Resolution.Y++;
1749 
1751  {
1752  /* In "High Resolution" mode, the width of a character is always 8 pixels */
1754  {
1755  Resolution.X *= 8;
1756  }
1757  else
1758  {
1759  /* Multiply the horizontal resolution by the 9/8 dot mode */
1761  ? 8 : 9;
1762 
1763  /* The horizontal resolution is halved in 8-bit mode */
1765  }
1766  }
1767 
1769  {
1770  /* Halve the vertical resolution */
1771  Resolution.Y >>= 1;
1772  }
1773  else
1774  {
1775  /* Divide the vertical resolution by the maximum scan line (== font size in text mode) */
1776  Resolution.Y /= MaximumScanLine;
1777  }
1778 
1779  /* Return the resolution */
1780  return Resolution;
1781 }
static BYTE VgaSeqRegisters[SVGA_SEQ_MAX_REG]
Definition: svga.c:252
#define SVGA_SEQ_EXT_MODE_HIGH_RES
Definition: svga.h:120
#define VGA_CRTC_MAXSCANLINE_DOUBLE
Definition: svga.h:184
static BYTE VgaGcRegisters[SVGA_GC_MAX_REG]
Definition: svga.c:258
#define VGA_GC_MISC_NOALPHA
Definition: svga.h:259
#define VGA_CRTC_OVERFLOW_VDE8
Definition: svga.h:172
unsigned char BYTE
Definition: mem.h:68
Definition: bl.h:1338
static BYTE VgaAcRegisters[VGA_AC_MAX_REG]
Definition: svga.c:263
#define VGA_CRTC_OVERFLOW_VDE9
Definition: svga.h:177
static BYTE VgaCrtcRegisters[SVGA_CRTC_MAX_REG]
Definition: svga.c:255
static BYTE Resolution
Definition: mouse.c:35
#define VGA_AC_CONTROL_8BIT
Definition: svga.h:336
#define VGA_SEQ_CLOCK_98DM
Definition: svga.h:104

Referenced by DosUpdatePosition(), FromMouseCoordinates(), ToMouseCoordinates(), VgaChangeMode(), and VidBiosSetVideoMode().

◆ VgaInitialize()

BOOLEAN VgaInitialize ( HANDLE  TextHandle)

Definition at line 2100 of file svga.c.

2101 {
2102  if (!VgaConsoleInitialize(TextHandle)) return FALSE;
2103 
2104  /* Clear the SEQ, GC, CRTC and AC registers */
2109 
2110  /* Initialize the VGA palette and fail if it isn't successfully created */
2111  if (!VgaInitializePalette()) return FALSE;
2112  /***/ VgaResetPalette(); /***/
2113 
2114  /* Reset the sequencer */
2116 
2117  /* Clear the VGA memory */
2118  VgaClearMemory();
2119 
2120  /* Register the I/O Ports */
2121  RegisterIoPort(0x3CC, VgaReadPort, NULL); // VGA_MISC_READ
2122  RegisterIoPort(0x3C2, VgaReadPort, VgaWritePort); // VGA_MISC_WRITE, VGA_INSTAT0_READ
2123  RegisterIoPort(0x3CA, VgaReadPort, NULL); // VGA_FEATURE_READ
2124  RegisterIoPort(0x3C0, VgaReadPort, VgaWritePort); // VGA_AC_INDEX, VGA_AC_WRITE
2125  RegisterIoPort(0x3C1, VgaReadPort, NULL); // VGA_AC_READ
2126  RegisterIoPort(0x3C4, VgaReadPort, VgaWritePort); // VGA_SEQ_INDEX
2127  RegisterIoPort(0x3C5, VgaReadPort, VgaWritePort); // VGA_SEQ_DATA
2128  RegisterIoPort(0x3C6, VgaReadPort, VgaWritePort); // VGA_DAC_MASK
2129  RegisterIoPort(0x3C7, VgaReadPort, VgaWritePort); // VGA_DAC_READ_INDEX
2130  RegisterIoPort(0x3C8, VgaReadPort, VgaWritePort); // VGA_DAC_WRITE_INDEX
2131  RegisterIoPort(0x3C9, VgaReadPort, VgaWritePort); // VGA_DAC_DATA
2132  RegisterIoPort(0x3CE, VgaReadPort, VgaWritePort); // VGA_GC_INDEX
2133  RegisterIoPort(0x3CF, VgaReadPort, VgaWritePort); // VGA_GC_DATA
2134 
2135  /* CGA ports for compatibility, unimplemented */
2136  RegisterIoPort(0x3D8, VgaReadPort, VgaWritePort); // CGA_MODE_CTRL_REG
2137  RegisterIoPort(0x3D9, VgaReadPort, VgaWritePort); // CGA_PAL_CTRL_REG
2138 
2140 
2141  /* Return success */
2142  return TRUE;
2143 }
#define TRUE
Definition: types.h:120
static VOID VgaResetPalette(VOID)
Definition: svga.c:594
static BYTE VgaSeqRegisters[SVGA_SEQ_MAX_REG]
Definition: svga.c:252
static BYTE WINAPI VgaReadPort(USHORT Port)
Definition: svga.c:1104
VOID VgaClearMemory(VOID)
Definition: svga.c:2074
static BYTE VgaGcRegisters[SVGA_GC_MAX_REG]
Definition: svga.c:258
VOID RegisterIoPort(USHORT Port, EMULATOR_INB_PROC InHandler, EMULATOR_OUTB_PROC OutHandler)
Definition: io.c:320
static BOOLEAN VgaInitializePalette(VOID)
Definition: svga.c:534
static VOID WINAPI VgaWritePort(USHORT Port, BYTE Data)
Definition: svga.c:1420
static PHARDWARE_TIMER HSyncTimer
Definition: svga.c:276
PHARDWARE_TIMER CreateHardwareTimer(ULONG Flags, ULONGLONG Delay, PHARDWARE_TIMER_PROC Callback)
Definition: clock.c:144
smooth NULL
Definition: ftsmooth.c:416
#define HARDWARE_TIMER_ENABLED
Definition: clock.h:15
static BYTE VgaAcRegisters[VGA_AC_MAX_REG]
Definition: svga.c:263
BOOLEAN VgaConsoleInitialize(HANDLE TextHandle)
Definition: video.c:783
static VOID FASTCALL VgaHorizontalRetrace(ULONGLONG ElapsedTime)
Definition: svga.c:1655
static BYTE VgaCrtcRegisters[SVGA_CRTC_MAX_REG]
Definition: svga.c:255
#define HZ_TO_NS(Freq)
Definition: clock.h:20
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:261
static VOID VgaResetSequencer(VOID)
Definition: svga.c:495

Referenced by DriverEntry(), and EmulatorInitialize().

◆ VgaReadMemory()

VOID FASTCALL VgaReadMemory ( ULONG  Address,
PVOID  Buffer,
ULONG  Size 
)

Definition at line 1802 of file svga.c.

1803 {
1804  DWORD i;
1805  DWORD VideoAddress;
1806  PUCHAR BufPtr = (PUCHAR)Buffer;
1807 
1808  DPRINT("VgaReadMemory: Address 0x%08X, Size %lu\n", Address, Size);
1809 
1810  /* Ignore if video RAM access is disabled */
1811  if (!Size) return;
1812  if ((VgaMiscRegister & VGA_MISC_RAM_ENABLED) == 0) return;
1813 
1815  {
1816  VideoAddress = VgaTranslateAddress(Address);
1817 
1818  /* Check for packed pixel, chain-4, and odd-even mode */
1820  {
1821  /* Just copy from the video memory */
1822  PVOID VideoMemory = &VgaMemory[VideoAddress + (Address & 3)];
1823 
1824  switch (Size)
1825  {
1826  case sizeof(UCHAR):
1827  *(PUCHAR)Buffer = *(PUCHAR)VideoMemory;
1828  return;
1829 
1830  case sizeof(USHORT):
1831  *(PUSHORT)Buffer = *(PUSHORT)VideoMemory;
1832  return;
1833 
1834  case sizeof(ULONG):
1835  *(PULONG)Buffer = *(PULONG)VideoMemory;
1836  return;
1837 
1838  case sizeof(ULONGLONG):
1839  *(PULONGLONG)Buffer = *(PULONGLONG)VideoMemory;
1840  return;
1841 
1842  default:
1843 #if defined(__GNUC__)
1844  __builtin_memcpy(Buffer, VideoMemory, Size);
1845 #else
1846  RtlCopyMemory(Buffer, VideoMemory, Size);
1847 #endif
1848  }
1849  }
1851  {
1852  i = 0;
1853 
1854  /* Write the unaligned part first */
1855  if (Address & 3)
1856  {
1857  switch (Address & 3)
1858  {
1859  case 1:
1860  BufPtr[i++] = VgaMemory[VideoAddress * VGA_NUM_BANKS + 1];
1861  case 2:
1862  BufPtr[i++] = VgaMemory[VideoAddress * VGA_NUM_BANKS + 2];
1863  case 3:
1864  BufPtr[i++] = VgaMemory[VideoAddress * VGA_NUM_BANKS + 3];
1865  }
1866 
1867  VideoAddress += 4;
1868  }
1869 
1870  /* Copy the aligned dwords */
1871  while ((i + 3) < Size)
1872  {
1873  *(PULONG)&BufPtr[i] = *(PULONG)&VgaMemory[VideoAddress * VGA_NUM_BANKS];
1874 
1875  i += 4;
1876  VideoAddress += 4;
1877  }
1878 
1879  /* Write the remaining part */
1880  if (i < Size)
1881  {
1882  switch (Size - i - 3)
1883  {
1884  case 3:
1885  BufPtr[i] = VgaMemory[VideoAddress * VGA_NUM_BANKS + ((Address + i) & 3)];
1886  i++;
1887  case 2:
1888  BufPtr[i] = VgaMemory[VideoAddress * VGA_NUM_BANKS + ((Address + i) & 3)];
1889  i++;
1890  case 1:
1891  BufPtr[i] = VgaMemory[VideoAddress * VGA_NUM_BANKS + ((Address + i) & 3)];
1892  i++;
1893  }
1894  }
1895  }
1897  {
1898  i = 0;
1899 
1900  /* Check if the starting address is odd */
1901  if (Address & 1)
1902  {
1903  BufPtr[i++] = VgaMemory[VideoAddress * VGA_NUM_BANKS + 1];
1904  VideoAddress += 2;
1905  }
1906 
1907  while (i < (Size - 1))
1908  {
1909  *(PUSHORT)&BufPtr[i] = *(PUSHORT)&VgaMemory[VideoAddress * VGA_NUM_BANKS];
1910 
1911  i += 2;
1912  VideoAddress += 2;
1913  }
1914 
1915  /* Check if there is one more byte to read */
1916  if (i == Size - 1) BufPtr[i] = VgaMemory[VideoAddress * VGA_NUM_BANKS + ((Address + i) & 1)];
1917  }
1918  else
1919  {
1920  /* Use the selected map */
1922 
1923  for (i = 0; i < Size; i++)
1924  {
1925  /* Copy the value to the buffer */
1926  BufPtr[i] = VgaMemory[(VideoAddress++) * VGA_NUM_BANKS + Plane];
1927  }
1928  }
1929  }
1930  else
1931  {
1932  const ULONG BitExpandInvertTable[] =
1933  {
1934  0xFFFFFFFF, 0xFFFFFF00, 0xFFFF00FF, 0xFFFF0000,
1935  0xFF00FFFF, 0xFF00FF00, 0xFF0000FF, 0xFF000000,
1936  0x00FFFFFF, 0x00FFFF00, 0x00FF00FF, 0x00FF0000,
1937  0x0000FFFF, 0x0000FF00, 0x000000FF, 0x00000000
1938  };
1939 
1940  ULONG ColorCompareBytes = BitExpandInvertTable[VgaGcRegisters[VGA_GC_COLOR_COMPARE_REG] & 0x0F];
1941  ULONG ColorIgnoreBytes = BitExpandInvertTable[VgaGcRegisters[VGA_GC_COLOR_IGNORE_REG] & 0x0F];
1942 
1943  /*
1944  * These values can also be computed in the following way, but using the table seems to be faster:
1945  *
1946  * ColorCompareBytes = VgaGcRegisters[VGA_GC_COLOR_COMPARE_REG] * 0x000204081;
1947  * ColorCompareBytes &= 0x01010101;
1948  * ColorCompareBytes = ~((ColorCompareBytes << 8) - ColorCompareBytes);
1949  *
1950  * ColorIgnoreBytes = VgaGcRegisters[VGA_GC_COLOR_IGNORE_REG] * 0x000204081;
1951  * ColorIgnoreBytes &= 0x01010101;
1952  * ColorIgnoreBytes = ~((ColorIgnoreBytes << 8) - ColorIgnoreBytes);
1953  */
1954 
1955  /* Loop through each byte */
1956  for (i = 0; i < Size; i++)
1957  {
1958  ULONG PlaneData = 0;
1959 
1960  /* This should always return a plane 0 address */
1961  VideoAddress = VgaTranslateAddress(Address + i);
1962 
1963  /* Read all 4 planes */
1964  PlaneData = *(PULONG)&VgaMemory[VideoAddress * VGA_NUM_BANKS];
1965 
1966  /* Reverse the bytes for which the color compare register is zero */
1967  PlaneData ^= ColorCompareBytes;
1968 
1969  /* Apply the color ignore register */
1970  PlaneData |= ColorIgnoreBytes;
1971 
1972  /* Store the value in the buffer */
1973  BufPtr[i] = (PlaneData & (PlaneData >> 8) & (PlaneData >> 16) & (PlaneData >> 24)) & 0xFF;
1974  }
1975  }
1976 
1977  /* Load the latch registers */
1978  VideoAddress = VgaTranslateAddress(Address + Size - 1);
1980 }
NTSYSAPI VOID NTAPI RtlCopyMemory(VOID UNALIGNED *Destination, CONST VOID UNALIGNED *Source, ULONG Length)
#define VGA_GC_MODE_OE
Definition: svga.h:254
#define VGA_SEQ_MEM_C4
Definition: svga.h:113
unsigned char * PUCHAR
Definition: retypes.h:3
static DWORD VgaTranslateAddress(DWORD Address)
Definition: svga.c:342
static BYTE VgaSeqRegisters[SVGA_SEQ_MAX_REG]
Definition: svga.c:252
#define SVGA_SEQ_EXT_MODE_HIGH_RES
Definition: svga.h:120
static BYTE VgaGcRegisters[SVGA_GC_MAX_REG]
Definition: svga.c:258
static BYTE VgaLatchRegisters[VGA_NUM_BANKS]
Definition: svga.c:246
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 VGA_MISC_RAM_ENABLED
Definition: svga.h:83
#define VGA_GC_MODE_READ
Definition: svga.h:253
static WCHAR Address[46]
Definition: ping.c:68
void DPRINT(...)
Definition: polytest.cpp:61
Definition: bufpool.h:45
#define WRAP_OFFSET(x)
Definition: svga.c:28
uint64_t ULONGLONG
Definition: typedefs.h:65
unsigned long DWORD
Definition: ntddk_ex.h:95
static BYTE VgaMiscRegister
Definition: svga.c:248
#define VGA_NUM_BANKS
Definition: svga.h:14
unsigned char UCHAR
Definition: xmlstorage.h:181
unsigned char BYTE
Definition: mem.h:68
IN PVOID IN PVOID IN USHORT IN USHORT Size
Definition: pci.h:359
unsigned short USHORT
Definition: pedump.c:61
unsigned int * PULONG
Definition: retypes.h:1
__GNU_EXTENSION typedef unsigned __int64 * PULONGLONG
Definition: ntbasedef.h:390
unsigned int ULONG
Definition: retypes.h:1
unsigned short * PUSHORT
Definition: retypes.h:2
static BYTE VgaMemory[VGA_NUM_BANKS *SVGA_BANK_SIZE]
Definition: svga.c:244

Referenced by VgaWriteGc(), and VgaWritePort().

◆ VgaRefreshDisplay()

VOID VgaRefreshDisplay ( VOID  )

Definition at line 1783 of file svga.c.

1784 {
1785  /* Save the scanline size */
1789 
1790  /* Save the starting address */
1798 
1800 }
static DWORD StartAddressLatch
Definition: svga.c:278
#define MAKEWORD(a, b)
Definition: typedefs.h:247
static BYTE VgaSeqRegisters[SVGA_SEQ_MAX_REG]
Definition: svga.c:252
#define SVGA_SEQ_EXT_MODE_HIGH_RES
Definition: svga.h:120
#define DWORD
Definition: nt_native.h:44
#define SVGA_CRTC_EXT_ADDR_BIT19
Definition: svga.h:199
#define SVGA_CRTC_EXT_ADDR_BITS1718
Definition: svga.h:195
static DWORD ScanlineSizeLatch
Definition: svga.c:279
unsigned long DWORD
Definition: ntddk_ex.h:95
#define SVGA_CRTC_EXT_OFFSET_BIT8
Definition: svga.h:196
static VOID VgaVerticalRetrace(VOID)
Definition: svga.c:1613
static BYTE VgaCrtcRegisters[SVGA_CRTC_MAX_REG]
Definition: svga.c:255
#define SVGA_CRTC_EXT_ADDR_BIT16
Definition: svga.h:193

Referenced by EmulatorPause(), EmulatorResume(), ScreenEventHandler(), VgaCleanup(), VidBiosAttachToConsole(), VidBiosDetachFromConsole(), and VidBiosSetVideoMode().

◆ VgaWriteMemory()

BOOLEAN FASTCALL VgaWriteMemory ( ULONG  Address,
PVOID  Buffer,
ULONG  Size 
)

Definition at line 1982 of file svga.c.

1983 {
1984  DWORD i, j;
1985  DWORD VideoAddress;
1986  PUCHAR BufPtr = (PUCHAR)Buffer;
1987 
1988  DPRINT("VgaWriteMemory: Address 0x%08X, Size %lu\n", Address, Size);
1989 
1990  /* Ignore if video RAM access is disabled */
1991  if ((VgaMiscRegister & VGA_MISC_RAM_ENABLED) == 0) return TRUE;
1992 
1993  /* Also ignore if write access to all planes is disabled */
1994  if ((VgaSeqRegisters[VGA_SEQ_MASK_REG] & 0x0F) == 0x00) return TRUE;
1995 
1997  {
1998  /* Loop through each byte */
1999  for (i = 0; i < Size; i++)
2000  {
2001  VideoAddress = VgaTranslateAddress(Address + i);
2002 
2003  for (j = 0; j < VGA_NUM_BANKS; j++)
2004  {
2005  /* Make sure the page is writeable */
2006  if (!(VgaSeqRegisters[VGA_SEQ_MASK_REG] & (1 << j))) continue;
2007 
2008  /* Check if this is chain-4 mode */
2010  {
2011  if (((Address + i) & 0x03) != j)
2012  {
2013  /* This plane will not be accessed */
2014  continue;
2015  }
2016  }
2017 
2018  /* Check if this is odd-even mode */
2020  {
2021  if (((Address + i) & 0x01) != (j & 1))
2022  {
2023  /* This plane will not be accessed */
2024  continue;
2025  }
2026  }
2027 
2028  /* Copy the value to the VGA memory */
2029  VgaMemory[VideoAddress * VGA_NUM_BANKS + j] = VgaTranslateByteForWriting(BufPtr[i], j);
2030  }
2031  }
2032  }
2033  else
2034  {
2035  PVOID VideoMemory;
2036 
2037  // TODO: Apply the page write mask!
2038  // TODO: Check whether the write mode stuff applies to packed-pixel modes
2039 
2040  /* Just copy to the video memory */
2041  VideoAddress = VgaTranslateAddress(Address);
2042  VideoMemory = &VgaMemory[VideoAddress + (Address & 3)];
2043 
2044  switch (Size)
2045  {
2046  case sizeof(UCHAR):
2047  *(PUCHAR)VideoMemory = *(PUCHAR)Buffer;
2048  return TRUE;
2049 
2050  case sizeof(USHORT):
2051  *(PUSHORT)VideoMemory = *(PUSHORT)Buffer;
2052  return TRUE;
2053 
2054  case sizeof(ULONG):
2055  *(PULONG)VideoMemory = *(PULONG)Buffer;
2056  return TRUE;
2057 
2058  case sizeof(ULONGLONG):
2059  *(PULONGLONG)VideoMemory = *(PULONGLONG)Buffer;
2060  return TRUE;
2061 
2062  default:
2063 #if defined(__GNUC__)
2064  __builtin_memcpy(VideoMemory, Buffer, Size);
2065 #else
2066  RtlCopyMemory(VideoMemory, Buffer, Size);
2067 #endif
2068  }
2069  }
2070 
2071  return TRUE;
2072 }
#define TRUE
Definition: types.h:120
NTSYSAPI VOID NTAPI RtlCopyMemory(VOID UNALIGNED *Destination, CONST VOID UNALIGNED *Source, ULONG Length)
#define VGA_GC_MODE_OE
Definition: svga.h:254
#define VGA_SEQ_MEM_C4
Definition: svga.h:113
unsigned char * PUCHAR
Definition: retypes.h:3
static DWORD VgaTranslateAddress(DWORD Address)
Definition: svga.c:342
static BYTE VgaSeqRegisters[SVGA_SEQ_MAX_REG]
Definition: svga.c:252
#define SVGA_SEQ_EXT_MODE_HIGH_RES
Definition: svga.h:120
static BYTE VgaGcRegisters[SVGA_GC_MAX_REG]
Definition: svga.c:258
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 VGA_MISC_RAM_ENABLED
Definition: svga.h:83
static BYTE VgaTranslateByteForWriting(BYTE Data, BYTE Plane)
Definition: svga.c:371
static WCHAR Address[46]
Definition: ping.c:68
void DPRINT(...)
Definition: polytest.cpp:61
Definition: bufpool.h:45
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 GLint GLint j
Definition: glfuncs.h:250
uint64_t ULONGLONG
Definition: typedefs.h:65
unsigned long DWORD
Definition: ntddk_ex.h:95
static BYTE VgaMiscRegister
Definition: svga.c:248
#define VGA_NUM_BANKS
Definition: svga.h:14
unsigned char UCHAR
Definition: xmlstorage.h:181
IN PVOID IN PVOID IN USHORT IN USHORT Size
Definition: pci.h:359
unsigned short USHORT
Definition: pedump.c:61
unsigned int * PULONG
Definition: retypes.h:1
__GNU_EXTENSION typedef unsigned __int64 * PULONGLONG
Definition: ntbasedef.h:390
unsigned int ULONG
Definition: retypes.h:1
unsigned short * PUSHORT
Definition: retypes.h:2
static BYTE VgaMemory[VGA_NUM_BANKS *SVGA_BANK_SIZE]
Definition: svga.c:244

Referenced by VgaWriteGc(), and VgaWritePort().

◆ VgaWriteTextModeFont()

VOID VgaWriteTextModeFont ( UINT  FontNumber,
CONST UCHAR FontData,
UINT  Height 
)

Definition at line 2079 of file svga.c.

2080 {
2081  UINT i, j;
2082  ASSERT(Height <= VGA_MAX_FONT_HEIGHT);
2083 
2084  for (i = 0; i < VGA_FONT_CHARACTERS; i++)
2085  {
2086  /* Write the character */
2087  for (j = 0; j < Height; j++)
2088  {
2090  }
2091 
2092  /* Clear the unused part */
2093  for (j = Height; j < VGA_MAX_FONT_HEIGHT; j++)
2094  {
2096  }
2097  }
2098 }
#define VGA_FONT_BANK
Definition: svga.h:24
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
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 GLint GLint j
Definition: glfuncs.h:250
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
#define VGA_NUM_BANKS
Definition: svga.h:14
UCHAR FontData[256 *BOOTCHAR_HEIGHT]
Definition: bootdata.c:57
#define VGA_FONT_CHARACTERS
Definition: svga.h:25
unsigned int UINT
Definition: ndis.h:50
#define VGA_MAX_FONT_HEIGHT
Definition: svga.h:26
static BYTE VgaMemory[VGA_NUM_BANKS *SVGA_BANK_SIZE]
Definition: svga.c:244

Referenced by VidBiosSetVideoMode(), and VidBiosVideoService().