示例#1
0
文件: vgaterm.c 项目: robey/funos
static void vgaterm_lf() {
    vgaterm_cr();
    if (!scrolling) {
        for (uint16_t *p = screen + COLS; p < screen + SCREEN_SIZE; p++) {
            *(p - COLS) = *p;
        }
        for (uint16_t *p = screen + SCREEN_SIZE - COLS; p < screen + SCREEN_SIZE; p++) {
            *p = COLOR | SPACE;
        }
    }

    scrollback_cursor = vga_scrollback_buffer + scrollback_end;
    for (int i = 0; i < COLS; i++) *(scrollback_cursor + i) = SPACE;

    if (scrollback_end == scrollback_start) {
        scrollback_start += COLS;
        if (scrollback_start == scrollback_lines * COLS) scrollback_start = 0;
        if (scrolling) {
            scrollback_top--;
            if (scrollback_top < 0) scrollback_top = 0;
        }
    }

    scrollback_end += COLS;
    if (scrollback_end == scrollback_lines * COLS) scrollback_end = 0;
    if (scrolling) {
        scrollback_max++;
        if (scrollback_max >= scrollback_lines - ROWS) scrollback_max = scrollback_lines - ROWS;
        vgaterm_draw_scrollback();
    }

    vga_set_cursor(cursor - screen);
}
示例#2
0
文件: vgaterm.c 项目: robey/funos
void vgaterm_write(char c) {
    switch (c) {
    case 10:
        vgaterm_lf();
        return;
    default:
        if (c >= 32) {
            *scrollback_cursor++ = c;
            if (scrolling) {
                cursor++;
            } else {
                *cursor++ = COLOR | c;
            }
            if ((cursor - screen) % 80 == 0) vgaterm_lf();
            vga_set_cursor(cursor - screen);
        }
        break;
    }
}
示例#3
0
文件: vga.c 项目: LFUnion/LFOS
// Disables the cursor
void vga_disable_cursor() {
    if (cursor_enabled) {
        vga_set_cursor(255, 255);
        cursor_enabled = 0;
    }
}
示例#4
0
文件: vga.c 项目: LFUnion/LFOS
// Enables the cursor
void vga_enable_cursor() {
    if (!cursor_enabled) {
        cursor_enabled = 1;
        vga_set_cursor(255, 255);
    }
}
示例#5
0
文件: vga.c 项目: LFUnion/LFOS
// Updates the cursor
void vga_update_cursor() {
    vga_set_cursor(column, row);
}