nuclear@1: #include "term.h" nuclear@1: #include "vid.h" nuclear@1: nuclear@1: static int bg, fg = 15; nuclear@1: static int cursor_x, cursor_y; nuclear@1: nuclear@1: void set_text_color(int c) nuclear@1: { nuclear@1: if(c >= 0 && c < 16) { nuclear@1: fg = c; nuclear@1: } nuclear@1: } nuclear@1: nuclear@1: void set_back_color(int c) nuclear@1: { nuclear@1: if(c >= 0 && c < 16) { nuclear@1: bg = c; nuclear@1: } nuclear@1: } nuclear@1: nuclear@1: int putchar(int c) nuclear@1: { nuclear@1: switch(c) { nuclear@1: case '\n': nuclear@1: cursor_y++; nuclear@1: nuclear@1: case '\r': nuclear@1: cursor_x = 0; nuclear@1: break; nuclear@1: nuclear@1: case '\b': nuclear@1: cursor_x--; nuclear@1: set_char(' ', cursor_x, cursor_y, fg, bg); nuclear@1: break; nuclear@1: nuclear@1: case '\t': nuclear@1: cursor_x = ((cursor_x >> 3) + 1) << 3; nuclear@1: break; nuclear@1: nuclear@1: default: nuclear@1: set_char(c, cursor_x, cursor_y, fg, bg); nuclear@1: if(++cursor_x >= WIDTH) { nuclear@1: cursor_x = 0; nuclear@1: cursor_y++; nuclear@1: } nuclear@1: } nuclear@1: nuclear@1: if(cursor_y >= HEIGHT) { nuclear@1: scroll_scr(); nuclear@1: cursor_y--; nuclear@1: } nuclear@1: return c; nuclear@1: }