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 + -
显示快捷键?