示例#1
0
文件: vga.c 项目: GNsunghokim/rtos
static void vga_init_cursor(void)
{
	u8 val;

#define CURSOR_MSL   0x09   /* cursor maximum scan line */
#define CURSOR_START 0x0A   /* cursor start */
#define CURSOR_END   0x0B   /* cursor end */

	val = crtc_read(CURSOR_MSL) & 0x1f;
	crtc_write(0, CURSOR_START);
	crtc_write(val - 2, CURSOR_END);
}
示例#2
0
文件: vga.c 项目: KarimAllah/Cute
void write_vga_register(register_set_t target, uint8_t index, uint8_t value)
{
	switch(target)
	{
	case GRAPHIC_CTRL:
		gctrl_write(index, value);
		break;
	case SEQUENCER:
		seq_write(index, value);
		break;
	case ATTRIBUTE_CTRL:
		attr_write(index, value);
		break;
	case CRT_CTRL:
		crtc_write(index, value);
		break;
	case EXTERNAL_REGISTERS:
		switch(index)
		{
		case MISC_OUTPUT_REGISTER:
			misc_output_write(value);
			break;
		case FEATURE_CONTROL_REGISTER:
			feature_control_write(value);
			break;
		}
		break;
	default:
		break;
	}
}
示例#3
0
文件: vga.c 项目: Pating/unilator
void vga_setcursor(void)
{
	int loc = y * NUM_COLS + x;

	crtc_write(0x0e, loc >> 8);
	crtc_write(0x0f, loc);
}
示例#4
0
文件: vga.c 项目: GNsunghokim/rtos
static void vga_set_cursor(unsigned int x, unsigned int y)
{
	unsigned int addr;

	addr = x + (vga_video_console.columns * y);
	crtc_write(addr >> 8, 0x0E);
	crtc_write(addr, 0x0F);
}
示例#5
0
文件: vga.c 项目: GNsunghokim/rtos
static void vga_enable_cursor(int state)
{
	unsigned char tmp = crtc_read(0x0a);

	if (state == 0)
		tmp |= (1 << 5);

	else
		tmp &= ~(1 << 5);

	crtc_write(tmp, 0x0a);
}
示例#6
0
文件: vga.c 项目: Pating/unilator
static void vga_load_regs(const mux_reg_t *reg, unsigned short vendor, unsigned short device)
{
	int c, r, i;

	while (reg->fn != FN_END) {
		switch (reg->fn) {
		case FN_ATT:
			attrib_write(reg->reg, reg->val);
			break;

		case FN_GRPH:
			grph_write(reg->reg, reg->val);
			break;

		case FN_CRTC:
			crtc_write(reg->reg, reg->val);
			break;

		case FN_SEQ:
			seq_write(reg->reg, reg->val);
			break;

		case FN_DLUT:
			io_base[0x3c8] = 0;
			for (i = 0; i < sizeof(DAC); i++)
				io_base[0x3c9] = DAC[i];
			break;

		case FN_MISC:
			io_base[0x3c2] = reg->val;
			break;

		case FN_CMAP:
			for (c = 0; c < 256; c++)
				for (r = 0; r < 32; r++)
					if (r < 8)
						charmap[(c << 5) + r] = cmap_80[c][r];
					else
						charmap[(c << 5) + r] = 0;
			break;

		case FN_CARD:
			for (i = 0; cards[i].vendor; i++)
				if (cards[i].vendor == vendor &&
				    cards[i].device == device)
					vga_load_regs(cards[i].mux, 0, 0);
			break;
		}
		reg++;
	}
}
示例#7
0
void gotoxy(struct crtc_handle *crtc, struct cga_handle *cga, uint8_t _x, uint8_t _y, int color)
{
     uint16_t offset;

     if ((_y * cga->cols + _x) >= (cga->cols * cga->lines))
     { /* scroll if neccessary */
          memmove(cga->video_mem, cga->video_mem + 2 * cga->cols, 2 * cga->lines * cga->cols);
          memset(cga->video_mem + 2 * cga->lines * cga->cols, 0, 2 * cga->cols);
          --_y;
     }

     cga->xpos = _x; 
     cga->ypos = _y;
     offset = _y * cga->cols + _x;

     if (cga->video_mem[2 * offset] == 0)
     {
          cga->video_mem[2 * offset + 1] = color;
     }

     crtc_write(crtc, CRTC_CURSOR_LOCATION_HIGH, (uint8_t)(offset >> 8));
     crtc_write(crtc, CRTC_CURSOR_LOCATION_LOW, (uint8_t)offset);
}
示例#8
0
文件: crtc.c 项目: UIKit0/alice
void crtc_writev(const char *string) {
    while (*string)
        crtc_write(*string++);
}
示例#9
0
static void setcurpos32(uint16_t newpos) {

    curpos32 = newpos;
    crtc_write(CRTC_CURPOS_LO, curpos32 & 0xFF);
    crtc_write(CRTC_CURPOS_HI, curpos32 >> 8);
}