📄 vgatables.h
字号:
/* * * BIOS Memory * */#define BIOSMEM_SEG 0x40#define BIOSMEM_INITIAL_MODE 0x10#define BIOSMEM_CURRENT_MODE 0x49#define BIOSMEM_NB_COLS 0x4A#define BIOSMEM_PAGE_SIZE 0x4C#define BIOSMEM_CURRENT_START 0x4E#define BIOSMEM_CURSOR_POS 0x50#define BIOSMEM_CURSOR_TYPE 0x60#define BIOSMEM_CURRENT_PAGE 0x62#define BIOSMEM_CRTC_ADDRESS 0x63#define BIOSMEM_CURRENT_MSR 0x65#define BIOSMEM_CURRENT_PAL 0x66#define BIOSMEM_NB_ROWS 0x84#define BIOSMEM_CHAR_HEIGHT 0x85#define BIOSMEM_VIDEO_CTL 0x87#define BIOSMEM_SWITCHES 0x88#define BIOSMEM_MODESET_CTL 0x89#define BIOSMEM_DCC_INDEX 0x8A#define BIOSMEM_VS_POINTER 0xA8#define BIOSMEM_VBE_FLAG 0xB9#define BIOSMEM_VBE_MODE 0xBA/* * * VGA registers * */#define VGAREG_ACTL_ADDRESS 0x3c0#define VGAREG_ACTL_WRITE_DATA 0x3c0#define VGAREG_ACTL_READ_DATA 0x3c1#define VGAREG_INPUT_STATUS 0x3c2#define VGAREG_WRITE_MISC_OUTPUT 0x3c2#define VGAREG_VIDEO_ENABLE 0x3c3#define VGAREG_SEQU_ADDRESS 0x3c4#define VGAREG_SEQU_DATA 0x3c5#define VGAREG_PEL_MASK 0x3c6#define VGAREG_DAC_STATE 0x3c7#define VGAREG_DAC_READ_ADDRESS 0x3c7#define VGAREG_DAC_WRITE_ADDRESS 0x3c8#define VGAREG_DAC_DATA 0x3c9#define VGAREG_READ_FEATURE_CTL 0x3ca#define VGAREG_READ_MISC_OUTPUT 0x3cc#define VGAREG_GRDC_ADDRESS 0x3ce#define VGAREG_GRDC_DATA 0x3cf#define VGAREG_MDA_CRTC_ADDRESS 0x3b4#define VGAREG_MDA_CRTC_DATA 0x3b5#define VGAREG_VGA_CRTC_ADDRESS 0x3d4#define VGAREG_VGA_CRTC_DATA 0x3d5#define VGAREG_MDA_WRITE_FEATURE_CTL 0x3ba#define VGAREG_VGA_WRITE_FEATURE_CTL 0x3da#define VGAREG_ACTL_RESET 0x3da#define VGAREG_MDA_MODECTL 0x3b8#define VGAREG_CGA_MODECTL 0x3d8#define VGAREG_CGA_PALETTE 0x3d9/* Video memory */#define VGAMEM_GRAPH 0xA000#define VGAMEM_CTEXT 0xB800#define VGAMEM_MTEXT 0xB000/* * * Tables of default values for each mode * */#define MODE_MAX 0x14#define TEXT 0x00#define GRAPH 0x01#define CTEXT 0x00#define MTEXT 0x01#define CGA 0x02#define PLANAR1 0x03#define PLANAR4 0x04#define LINEAR8 0x05// for SVGA#define LINEAR15 0x10#define LINEAR16 0x11#define LINEAR24 0x12#define LINEAR32 0x13typedef struct{Bit8u svgamode; Bit16u vesamode; Bit8u class; /* TEXT, GRAPH */ Bit8u memmodel; /* CTEXT,MTEXT,CGA,PL1,PL2,PL4,P8,P15,P16,P24,P32 */ Bit8u nbpages; Bit8u pixbits; Bit16u swidth, sheight; Bit16u twidth, theight; Bit16u cwidth, cheight; Bit16u sstart; Bit16u slength; Bit8u miscreg; Bit8u pelmask; Bit8u crtcmodel; Bit8u actlmodel; Bit8u grdcmodel; Bit8u sequmodel; Bit8u dacmodel; /* 0 1 2 3 */} VGAMODES;static VGAMODES vga_modes[MODE_MAX+1]={//mode vesa class model pg bits sw sh tw th cw ch sstart slength misc pelm crtc actl gdc sequ dac {0x00, 0xFFFF, TEXT, CTEXT, 8, 4, 360, 400, 40, 25, 9, 16, 0xB800, 0x0800, 0x67, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x02}, {0x01, 0xFFFF, TEXT, CTEXT, 8, 4, 360, 400, 40, 25, 9, 16, 0xB800, 0x0800, 0x67, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x02}, {0x02, 0xFFFF, TEXT, CTEXT, 4, 4, 720, 400, 80, 25, 9, 16, 0xB800, 0x1000, 0x67, 0xFF, 0x01, 0x00, 0x00, 0x01, 0x02}, {0x03, 0xFFFF, TEXT, CTEXT, 4, 4, 720, 400, 80, 25, 9, 16, 0xB800, 0x1000, 0x67, 0xFF, 0x01, 0x00, 0x00, 0x01, 0x02}, {0x04, 0xFFFF, GRAPH, CGA, 4, 2, 320, 200, 40, 25, 8, 8, 0xB800, 0x0800, 0x63, 0xFF, 0x02, 0x01, 0x01, 0x02, 0x01}, {0x05, 0xFFFF, GRAPH, CGA, 1, 2, 320, 200, 40, 25, 8, 8, 0xB800, 0x0800, 0x63, 0xFF, 0x02, 0x01, 0x01, 0x02, 0x01}, {0x06, 0xFFFF, GRAPH, CGA, 1, 1, 640, 200, 80, 25, 8, 8, 0xB800, 0x1000, 0x63, 0xFF, 0x03, 0x02, 0x02, 0x03, 0x01}, {0x07, 0xFFFF, TEXT, MTEXT, 4, 4, 720, 400, 80, 25, 9, 16, 0xB000, 0x1000, 0x66, 0xFF, 0x04, 0x03, 0x03, 0x01, 0x00}, {0x0D, 0xFFFF, GRAPH, PLANAR4, 8, 4, 320, 200, 40, 25, 8, 8, 0xA000, 0x2000, 0x63, 0xFF, 0x05, 0x04, 0x04, 0x04, 0x01}, {0x0E, 0xFFFF, GRAPH, PLANAR4, 4, 4, 640, 200, 80, 25, 8, 8, 0xA000, 0x4000, 0x63, 0xFF, 0x06, 0x04, 0x04, 0x05, 0x01}, {0x0F, 0xFFFF, GRAPH, PLANAR1, 2, 1, 640, 350, 80, 25, 8, 14, 0xA000, 0x8000, 0xa3, 0xFF, 0x07, 0x05, 0x04, 0x05, 0x00}, {0x10, 0xFFFF, GRAPH, PLANAR4, 2, 4, 640, 350, 80, 25, 8, 14, 0xA000, 0x8000, 0xa3, 0xFF, 0x07, 0x06, 0x04, 0x05, 0x02}, {0x11, 0xFFFF, GRAPH, PLANAR1, 1, 1, 640, 480, 80, 30, 8, 16, 0xA000, 0x0000, 0xe3, 0xFF, 0x08, 0x07, 0x04, 0x05, 0x02}, {0x12, 0xFFFF, GRAPH, PLANAR4, 1, 4, 640, 480, 80, 30, 8, 16, 0xA000, 0x0000, 0xe3, 0xFF, 0x08, 0x06, 0x04, 0x05, 0x02}, {0x13, 0xFFFF, GRAPH, LINEAR8, 1, 8, 320, 200, 40, 25, 8, 8, 0xA000, 0x0000, 0x63, 0xFF, 0x09, 0x08, 0x05, 0x06, 0x03}, {0x6A, 0xFFFF, GRAPH, PLANAR4, 1, 4, 800, 600,100, 37, 8, 16, 0xA000, 0x0000, 0xe3, 0xFF, 0x0A, 0x06, 0x04, 0x05, 0x02}};/* CRTC */#define CRTC_MAX_REG 0x18#define CRTC_MAX_MODEL 0x0Astatic Bit8u crtc_access[CRTC_MAX_REG+1]={ /* 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};static Bit8u crtc_regs[CRTC_MAX_MODEL+1][CRTC_MAX_REG+1]={/* Model 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 */ /* 00 */ 0x2d,0x27,0x28,0x90,0x2b,0xa0,0xbf,0x1f,0x00,0x4f,0x0d,0x0e,0x00,0x00,0x00,0x00,0x9c,0x8e,0x8f,0x14,0x1f,0x96,0xb9,0xa3,0xff, /* 01 */ 0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f,0x00,0x4f,0x0d,0x0e,0x00,0x00,0x00,0x00,0x9c,0x8e,0x8f,0x28,0x1f,0x96,0xb9,0xa3,0xff, /* 02 */ 0x2d,0x27,0x28,0x90,0x2b,0x80,0xbf,0x1f,0x00,0xc1,0x00,0x00,0x00,0x00,0x00,0x00,0x9c,0x8e,0x8f,0x14,0x00,0x96,0xb9,0xa2,0xff, /* 03 */ 0x5f,0x4f,0x50,0x82,0x54,0x80,0xbf,0x1f,0x00,0xc1,0x00,0x00,0x00,0x00,0x00,0x00,0x9c,0x8e,0x8f,0x28,0x00,0x96,0xb9,0xc2,0xff, /* 04 */ 0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f,0x00,0x4f,0x0d,0x0e,0x00,0x00,0x00,0x00,0x9c,0x8e,0x8f,0x28,0x0f,0x96,0xb9,0xa3,0xff, /* 05 */ 0x2d,0x27,0x28,0x90,0x2b,0x80,0xbf,0x1f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x9c,0x8e,0x8f,0x14,0x00,0x96,0xb9,0xe3,0xff, /* 06 */ 0x5f,0x4f,0x50,0x82,0x54,0x80,0xbf,0x1f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x9c,0x8e,0x8f,0x28,0x00,0x96,0xb9,0xe3,0xff, /* 07 */ 0x5f,0x4f,0x50,0x82,0x54,0x80,0xbf,0x1f,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x83,0x85,0x5d,0x28,0x0f,0x63,0xba,0xe3,0xff, /* 08 */ 0x5f,0x4f,0x50,0x82,0x54,0x80,0x0b,0x3e,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x8c,0xdf,0x28,0x00,0xe7,0x04,0xe3,0xff, /* 09 */ 0x5f,0x4f,0x50,0x82,0x54,0x80,0xbf,0x1f,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x9c,0x8e,0x8f,0x28,0x40,0x96,0xb9,0xa3,0xff, /* 0A */ 0x7f,0x63,0x63,0x83,0x6b,0x1b,0x72,0xf0,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x59,0x8d,0x57,0x32,0x00,0x57,0x73,0xe3,0xff};/* Attribute Controler 0x3c0 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -