static void ansicon_write_char(int x, int y, uint8_t ch, const struct term_state *st) { uint8_t attribute = ansicon_attribute(st); ansicon_set_cursor(x, y, false); firmware->o_ops->write_char(ch, attribute); }
/* Erase a region of the screen */ static void ansicon_erase(const struct term_state *st, int x0, int y0, int x1, int y1) { uint8_t attribute = ansicon_attribute(st); if (firmware->o_ops->erase) firmware->o_ops->erase(x0, y0, x1, y1, attribute); }
static void ansicon_scroll_up(const struct term_state *st) { uint8_t rows, cols, attribute; cols = ti.cols - 1; rows = ti.rows - 1; attribute = ansicon_attribute(st); firmware->o_ops->scroll_up(cols, rows, attribute); }
static void ansicon_scroll_up(const struct term_state *st) { static com32sys_t ireg; ireg.eax.w[0] = 0x0601; ireg.ebx.b[1] = ansicon_attribute(st); ireg.ecx.w[0] = 0; ireg.edx.b[1] = ti.rows-1; ireg.edx.b[0] = ti.cols-1; __intcall(0x10, &ireg, NULL); /* Scroll */ }
/* Erase a region of the screen */ static void ansicon_erase(const struct term_state *st, int x0, int y0, int x1, int y1) { static com32sys_t ireg; ireg.eax.w[0] = 0x0600; /* Clear window */ ireg.ebx.b[1] = ansicon_attribute(st); ireg.ecx.b[0] = x0; ireg.ecx.b[1] = y0; ireg.edx.b[0] = x1; ireg.edx.b[1] = y1; __intcall(0x10, &ireg, NULL); }
static void ansicon_write_char(int x, int y, uint8_t ch, const struct term_state *st) { static com32sys_t ireg; ansicon_set_cursor(x, y, 0); ireg.eax.b[1] = 0x09; ireg.eax.b[0] = ch; ireg.ebx.b[1] = BIOS_PAGE; ireg.ebx.b[0] = ansicon_attribute(st); ireg.ecx.w[0] = 1; __intcall(0x10, &ireg, NULL); }