vgainit.c

来自「RTEMS (Real-Time Executive for Multiproc」· C语言 代码 · 共 767 行 · 第 1/2 页

C
767
字号
  { OUT, SEQREG, 1, SEQVAL, 1 },  { OUT, SEQREG, 2, SEQVAL, 0x0f },  { OUT, SEQREG, 3, SEQVAL, 0 },  { OUT, SEQREG, 4, SEQVAL, 6 },  /* Misc out reg */  { OUT, GENREG1, 0xe3, 0, 0 },  /* Sequencer enable */  { OUT, SEQREG, 0, SEQVAL, 0x03 },  /* Unprotect crtc regs 0-7 */  { OUT, CRTCREG, 0x11, CRTCVAL, 0 },  /* Crtc */  { OUT, CRTCREG, 0, CRTCVAL, 0x5f },  { OUT, CRTCREG, 1, CRTCVAL, 0x4f },  { OUT, CRTCREG, 2, CRTCVAL, 0x50 },  { OUT, CRTCREG, 3, CRTCVAL, 0x82 },  { OUT, CRTCREG, 4, CRTCVAL, 0x54 },  { OUT, CRTCREG, 5, CRTCVAL, 0x80 },  { OUT, CRTCREG, 6, CRTCVAL, 0x0b },  { OUT, CRTCREG, 7, CRTCVAL, 0x3e },  { OUT, CRTCREG, 8, CRTCVAL, 0x00 },  { OUT, CRTCREG, 9, CRTCVAL, 0x40 },  { OUT, CRTCREG, 10, CRTCVAL, 0x00 },  { OUT, CRTCREG, 11, CRTCVAL, 0x00 },  { OUT, CRTCREG, 12, CRTCVAL, 0x00 },  { OUT, CRTCREG, 13, CRTCVAL, 0x00 },  { OUT, CRTCREG, 14, CRTCVAL, 0x00 },  { OUT, CRTCREG, 15, CRTCVAL, 0x59 },  { OUT, CRTCREG, 16, CRTCVAL, 0xea },  { OUT, CRTCREG, 17, CRTCVAL, 0x8c },  { OUT, CRTCREG, 18, CRTCVAL, 0xdf },  { OUT, CRTCREG, 19, CRTCVAL, 0x28 },  { OUT, CRTCREG, 20, CRTCVAL, 0x00 },  { OUT, CRTCREG, 21, CRTCVAL, 0xe7 },  { OUT, CRTCREG, 22, CRTCVAL, 0x04 },  { OUT, CRTCREG, 23, CRTCVAL, 0xe3 },  { OUT, CRTCREG, 24, CRTCVAL, 0xff },  /* Graphics controller */  { OUT, GENREG2, 0x00, 0, 0 },  { OUT, GENREG3, 0x01, 0, 0 },  { OUT, GRREG, 0, GRVAL, 0x00 },  { OUT, GRREG, 1, GRVAL, 0x00 },  { OUT, GRREG, 2, GRVAL, 0x00 },  { OUT, GRREG, 3, GRVAL, 0x00 },  { OUT, GRREG, 4, GRVAL, 0x00 },  { OUT, GRREG, 5, GRVAL, 0x00 },  { OUT, GRREG, 6, GRVAL, 0x05 },  { OUT, GRREG, 7, GRVAL, 0x0f },  { OUT, GRREG, 8, GRVAL, 0xff },  /* Reset attribute flip/flop */  { IN, ATTRREG, 0, 0, 0 },  /* Palette */  { OUT, PALREG, 0, PALREG, 0x00 },  { OUT, PALREG, 1, PALREG, 0x01 },  { OUT, PALREG, 2, PALREG, 0x02 },  { OUT, PALREG, 3, PALREG, 0x03 },  { OUT, PALREG, 4, PALREG, 0x04 },  { OUT, PALREG, 5, PALREG, 0x05 },  { OUT, PALREG, 6, PALREG, 0x06 },  { OUT, PALREG, 7, PALREG, 0x07 },  { OUT, PALREG, 8, PALREG, 0x38 },  { OUT, PALREG, 9, PALREG, 0x39 },  { OUT, PALREG, 10, PALREG, 0x3a },  { OUT, PALREG, 11, PALREG, 0x3b },  { OUT, PALREG, 12, PALREG, 0x3c },  { OUT, PALREG, 13, PALREG, 0x3d },  { OUT, PALREG, 14, PALREG, 0x3e },  { OUT, PALREG, 15, PALREG, 0x3f },  { OUT, PALREG, 16, PALREG, 0x01 },  { OUT, PALREG, 17, PALREG, 0x00 },  { OUT, PALREG, 18, PALREG, 0x0f },  { OUT, PALREG, 19, PALREG, 0x00 },  /* Enable palette */  { OUT, PALREG, 0x20, 0, 0 },  /* End of table */  { DONE, 0, 0, 0, 0 }};/* VGA 80x25 text (BIOS mode 3). */static REGIO graph_off[] = {  /* Reset attr F/F */  { IN, ATTRREG, 0, 0, 0 },  /* Disable palette */  { OUT, PALREG, 0, 0, 0 },  /* Reset sequencer regs */  { OUT, SEQREG, 0, SEQVAL, 1 },  { OUT, SEQREG, 1, SEQVAL, 1 },  { OUT, SEQREG, 2, SEQVAL, 3 },  { OUT, SEQREG, 3, SEQVAL, 0 },  { OUT, SEQREG, 4, SEQVAL, 2 },  /* Misc out reg */  { OUT, GENREG1, 0x63, 0, 0 },  /* Sequencer enable */  { OUT, SEQREG, 0, SEQVAL, 3 },  /* Unprotect crtc regs 0-7 */  { OUT, CRTCREG, 0x11, CRTCVAL, 0 },  /* Crtc */  { OUT, CRTCREG, 0, CRTCVAL, 0x5f },	/* horiz total */  { OUT, CRTCREG, 1, CRTCVAL, 0x4f },	/* horiz end */  { OUT, CRTCREG, 2, CRTCVAL, 0x50 },	/* horiz blank */  { OUT, CRTCREG, 3, CRTCVAL, 0x82 },	/* end blank */  { OUT, CRTCREG, 4, CRTCVAL, 0x55 },	/* horiz retrace */  { OUT, CRTCREG, 5, CRTCVAL, 0x81 },	/* end retrace */  { OUT, CRTCREG, 6, CRTCVAL, 0xbf },	/* vert total */  { OUT, CRTCREG, 7, CRTCVAL, 0x1f },	/* overflows */  { OUT, CRTCREG, 8, CRTCVAL, 0x00 },	/* row scan */  { OUT, CRTCREG, 9, CRTCVAL, 0x4f },	/* max scan line */  { OUT, CRTCREG, 10, CRTCVAL, 0x00 },	/* cursor start */  { OUT, CRTCREG, 11, CRTCVAL, 0x0f },	/* cursor end */  { OUT, CRTCREG, 12, CRTCVAL, 0x0e },	/* start high addr */  { OUT, CRTCREG, 13, CRTCVAL, 0xb0 },	/* low addr */  { OUT, CRTCREG, 14, CRTCVAL, 0x16 },	/* cursor high */  { OUT, CRTCREG, 15, CRTCVAL, 0x30 },	/* cursor low */  { OUT, CRTCREG, 16, CRTCVAL, 0x9c },	/* vert retrace */  { OUT, CRTCREG, 17, CRTCVAL, 0x8e },	/* retrace end */  { OUT, CRTCREG, 18, CRTCVAL, 0x8f },	/* vert end */  { OUT, CRTCREG, 19, CRTCVAL, 0x28 },	/* offset */  { OUT, CRTCREG, 20, CRTCVAL, 0x1f },	/* underline */  { OUT, CRTCREG, 21, CRTCVAL, 0x96 },	/* vert blank */  { OUT, CRTCREG, 22, CRTCVAL, 0xb9 },	/* end blank */  { OUT, CRTCREG, 23, CRTCVAL, 0xa3 },	/* crt mode */  { OUT, CRTCREG, 24, CRTCVAL, 0xff },	/* line compare */  /* Graphics controller */  { OUT, GENREG2, 0x00, 0, 0 },  { OUT, GENREG3, 0x01, 0, 0 },  { OUT, GRREG, 0, GRVAL, 0x00 },  { OUT, GRREG, 1, GRVAL, 0x00 },  { OUT, GRREG, 2, GRVAL, 0x00 },  { OUT, GRREG, 3, GRVAL, 0x00 },  { OUT, GRREG, 4, GRVAL, 0x00 },  { OUT, GRREG, 5, GRVAL, 0x10 },  { OUT, GRREG, 6, GRVAL, 0x0e },  { OUT, GRREG, 7, GRVAL, 0x00 },  { OUT, GRREG, 8, GRVAL, 0xff },  /* Reset attribute flip/flop */  { IN, ATTRREG, 0, 0, 0 },  /* Palette */  { OUT, PALREG, 0, PALREG, 0x00 },  { OUT, PALREG, 1, PALREG, 0x01 },  { OUT, PALREG, 2, PALREG, 0x02 },  { OUT, PALREG, 3, PALREG, 0x03 },  { OUT, PALREG, 4, PALREG, 0x04 },  { OUT, PALREG, 5, PALREG, 0x05 },  { OUT, PALREG, 6, PALREG, 0x06 },  { OUT, PALREG, 7, PALREG, 0x07 },  { OUT, PALREG, 8, PALREG, 0x10 },  { OUT, PALREG, 9, PALREG, 0x11 },  { OUT, PALREG, 10, PALREG, 0x12 },  { OUT, PALREG, 11, PALREG, 0x13 },  { OUT, PALREG, 12, PALREG, 0x14 },  { OUT, PALREG, 13, PALREG, 0x15 },  { OUT, PALREG, 14, PALREG, 0x16 },  { OUT, PALREG, 15, PALREG, 0x17 },  { OUT, PALREG, 16, PALREG, 0x08 },  { OUT, PALREG, 17, PALREG, 0x00 },  { OUT, PALREG, 18, PALREG, 0x0f },  { OUT, PALREG, 19, PALREG, 0x00 },  /* Enable palette */  { OUT, PALREG, 0x20, 0, 0 },  /* End of table */  { DONE, 0, 0, 0, 0 }};#endif#if EGA_STANDARD/* EGA 640x350 16-color graphics (BIOS mode 0x10). */static REGIO graphics_on[] = {  /* Reset attr F/F */  IN, ATTRREG, 0, 0, 0,  /* Disable palette */  OUT, PALREG, 0, 0, 0,  /* Reset sequencer regs */  OUT, SEQREG, 0, SEQVAL, 0,  OUT, SEQREG, 1, SEQVAL, 1,  OUT, SEQREG, 2, SEQVAL, 0x0f,  OUT, SEQREG, 3, SEQVAL, 0,  OUT, SEQREG, 4, SEQVAL, 6,  /* Misc out reg */  OUT, GENREG1, 0xa7, 0, 0,  /* Sequencer enable */  OUT, SEQREG, 0, SEQVAL, 0x03,  /* Unprotect crtc regs 0-7 */  OUT, CRTCREG, 0x11, CRTCVAL, 0,  /* Crtc */  OUT, CRTCREG, 0, CRTCVAL, 0x5b,  OUT, CRTCREG, 1, CRTCVAL, 0x4f,  OUT, CRTCREG, 2, CRTCVAL, 0x53,  OUT, CRTCREG, 3, CRTCVAL, 0x37,  OUT, CRTCREG, 4, CRTCVAL, 0x52,  OUT, CRTCREG, 5, CRTCVAL, 0x00,  OUT, CRTCREG, 6, CRTCVAL, 0x6c,  OUT, CRTCREG, 7, CRTCVAL, 0x1f,  OUT, CRTCREG, 8, CRTCVAL, 0x00,  OUT, CRTCREG, 9, CRTCVAL, 0x00,  OUT, CRTCREG, 10, CRTCVAL, 0x00,  OUT, CRTCREG, 11, CRTCVAL, 0x00,  OUT, CRTCREG, 12, CRTCVAL, 0x00,  OUT, CRTCREG, 13, CRTCVAL, 0x00,  OUT, CRTCREG, 14, CRTCVAL, 0x00,  OUT, CRTCREG, 15, CRTCVAL, 0x00,  OUT, CRTCREG, 16, CRTCVAL, 0x5e,  OUT, CRTCREG, 17, CRTCVAL, 0x2b,  OUT, CRTCREG, 18, CRTCVAL, 0x5d,  OUT, CRTCREG, 19, CRTCVAL, 0x28,  OUT, CRTCREG, 20, CRTCVAL, 0x0f,  OUT, CRTCREG, 21, CRTCVAL, 0x5f,  OUT, CRTCREG, 22, CRTCVAL, 0x0a,  OUT, CRTCREG, 23, CRTCVAL, 0xe3,  OUT, CRTCREG, 24, CRTCVAL, 0xff,  /* Graphics controller */  OUT, GENREG2, 0x00, 0, 0,  OUT, GENREG3, 0x01, 0, 0,  OUT, GRREG, 0, GRVAL, 0x00,  OUT, GRREG, 1, GRVAL, 0x00,  OUT, GRREG, 2, GRVAL, 0x00,  OUT, GRREG, 3, GRVAL, 0x00,  OUT, GRREG, 4, GRVAL, 0x00,  OUT, GRREG, 5, GRVAL, 0x00,  OUT, GRREG, 6, GRVAL, 0x05,  OUT, GRREG, 7, GRVAL, 0x0f,  OUT, GRREG, 8, GRVAL, 0xff,  /* Reset attribute flip/flop */  IN, ATTRREG, 0, 0, 0,  /* Palette */  OUT, PALREG, 0, PALREG, 0x00,  OUT, PALREG, 1, PALREG, 0x01,  OUT, PALREG, 2, PALREG, 0x02,  OUT, PALREG, 3, PALREG, 0x03,  OUT, PALREG, 4, PALREG, 0x04,  OUT, PALREG, 5, PALREG, 0x05,  OUT, PALREG, 6, PALREG, 0x06,  OUT, PALREG, 7, PALREG, 0x07,  OUT, PALREG, 8, PALREG, 0x38,  OUT, PALREG, 9, PALREG, 0x39,  OUT, PALREG, 10, PALREG, 0x3a,  OUT, PALREG, 11, PALREG, 0x3b,  OUT, PALREG, 12, PALREG, 0x3c,  OUT, PALREG, 13, PALREG, 0x3d,  OUT, PALREG, 14, PALREG, 0x3e,  OUT, PALREG, 15, PALREG, 0x3f,  OUT, PALREG, 16, PALREG, 0x01,  OUT, PALREG, 17, PALREG, 0x00,  OUT, PALREG, 18, PALREG, 0x0f,  OUT, PALREG, 19, PALREG, 0x00,  /* Enable palette */  OUT, PALREG, 0x20, 0, 0,  /* End of table */  DONE, 0, 0, 0, 0};/* EGA 80x25 text (BIOS mode 3). */static REGIO graph_off[] = {  /* Reset attr F/F */  IN, ATTRREG, 0, 0, 0,  /* Disable palette */  OUT, PALREG, 0, 0, 0,  /* Reset sequencer regs */  OUT, SEQREG, 0, SEQVAL, 1,  OUT, SEQREG, 1, SEQVAL, 1,  OUT, SEQREG, 2, SEQVAL, 3,  OUT, SEQREG, 3, SEQVAL, 0,  OUT, SEQREG, 4, SEQVAL, 3,  /* Misc out reg */  OUT, GENREG1, 0xa7, 0, 0,  /* Sequencer enable */  OUT, SEQREG, 0, SEQVAL, 3,  /* Crtc */  OUT, CRTCREG, 0, CRTCVAL, 0x5b,	/* horiz total */  OUT, CRTCREG, 1, CRTCVAL, 0x4f,	/* horiz end */  OUT, CRTCREG, 2, CRTCVAL, 0x53,	/* horiz blank */  OUT, CRTCREG, 3, CRTCVAL, 0x37,	/* end blank */  OUT, CRTCREG, 4, CRTCVAL, 0x51,	/* horiz retrace */  OUT, CRTCREG, 5, CRTCVAL, 0x5b,	/* end retrace */  OUT, CRTCREG, 6, CRTCVAL, 0x6c,	/* vert total */  OUT, CRTCREG, 7, CRTCVAL, 0x1f,	/* overflows */  OUT, CRTCREG, 8, CRTCVAL, 0x00,	/* row scan */  OUT, CRTCREG, 9, CRTCVAL, 0x0d,	/* max scan line */  OUT, CRTCREG, 10, CRTCVAL, 0x00,	/* cursor start */  OUT, CRTCREG, 11, CRTCVAL, 0x0f,	/* cursor end */  OUT, CRTCREG, 12, CRTCVAL, 0x00,	/* start high addr */  OUT, CRTCREG, 13, CRTCVAL, 0x00,	/* low addr */  OUT, CRTCREG, 14, CRTCVAL, 0x00,	/* cursor high */  OUT, CRTCREG, 15, CRTCVAL, 0x00,	/* cursor low */  OUT, CRTCREG, 16, CRTCVAL, 0x5e,	/* vert retrace */  OUT, CRTCREG, 17, CRTCVAL, 0x2b,	/* retrace end */  OUT, CRTCREG, 18, CRTCVAL, 0x5d,	/* vert end */  OUT, CRTCREG, 19, CRTCVAL, 0x28,	/* offset */  OUT, CRTCREG, 20, CRTCVAL, 0x0f,	/* underline */  OUT, CRTCREG, 21, CRTCVAL, 0x5e,	/* vert blank */  OUT, CRTCREG, 22, CRTCVAL, 0x0a,	/* end blank */  OUT, CRTCREG, 23, CRTCVAL, 0xa3,	/* crt mode */  OUT, CRTCREG, 24, CRTCVAL, 0xff,	/* line compare */  /* Graphics controller */  OUT, GENREG2, 0x00, 0, 0,  OUT, GENREG3, 0x01, 0, 0,  OUT, GRREG, 0, GRVAL, 0x00,  OUT, GRREG, 1, GRVAL, 0x00,  OUT, GRREG, 2, GRVAL, 0x00,  OUT, GRREG, 3, GRVAL, 0x00,  OUT, GRREG, 4, GRVAL, 0x00,  OUT, GRREG, 5, GRVAL, 0x10,  OUT, GRREG, 6, GRVAL, 0x0e,  OUT, GRREG, 7, GRVAL, 0x00,  OUT, GRREG, 8, GRVAL, 0xff,  /* Reset attribute flip/flop */  IN, ATTRREG, 0, 0, 0,  /* Palette */  OUT, PALREG, 0, PALREG, 0x00,  OUT, PALREG, 1, PALREG, 0x01,  OUT, PALREG, 2, PALREG, 0x02,  OUT, PALREG, 3, PALREG, 0x03,  OUT, PALREG, 4, PALREG, 0x04,  OUT, PALREG, 5, PALREG, 0x05,  OUT, PALREG, 6, PALREG, 0x14,  OUT, PALREG, 7, PALREG, 0x07,  OUT, PALREG, 8, PALREG, 0x38,  OUT, PALREG, 9, PALREG, 0x39,  OUT, PALREG, 10, PALREG, 0x3a,  OUT, PALREG, 11, PALREG, 0x3b,  OUT, PALREG, 12, PALREG, 0x3c,  OUT, PALREG, 13, PALREG, 0x3d,  OUT, PALREG, 14, PALREG, 0x3e,  OUT, PALREG, 15, PALREG, 0x3f,  OUT, PALREG, 16, PALREG, 0x08,  OUT, PALREG, 17, PALREG, 0x00,  OUT, PALREG, 18, PALREG, 0x0f,  OUT, PALREG, 19, PALREG, 0x00,  /* Enable palette */  OUT, PALREG, 0x20, 0, 0,  /* End of table */  DONE, 0, 0, 0, 0};#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?