#ifndef __TEXTCON_H #define __TEXTCON_H #include #define COLOR_CONV_B_2_D { \ 0x000000, \ 0x000080, \ 0x800000, \ 0x008080, \ 0x800000, \ 0x808000, \ 0x404040, \ 0x808080, \ 0x606060, \ 0x0000FF, \ 0x00FF00, \ 0x00FFFF, \ 0xFF0000, \ 0xFFFF00, \ 0x00FFFF, \ 0xFFFFFF, \ } #define CHAR_SIZE_X 5 #define CHAR_SIZE_Y 8 #define NR_CHARS_X 80 #define NR_CHARS_Y 25 #define CON_AT_X 10 #define CON_AT_Y 25 typedef struct { unsigned char c_char; unsigned char c_back; unsigned char c_color; } char_info_t __attribute__((packed)); typedef struct { int esc[4]; } esc_info_t; typedef struct { unsigned char text_color,back_color; char_info_t char_table[NR_CHARS_X][NR_CHARS_Y]; int id; int cur_x,cur_y; int cur_visible; unsigned char cur_color; esc_info_t esc_seq; DECLARE_SEMAPHORE_S(io_lock); } console_t; #define MAX_CONSOLES 4 extern console_t * consoles[MAX_CONSOLES]; extern console_t * visible_console; void init_consoles(void); void lcon_clrscr(console_t * con); void lcon_flush_console(console_t * con); void lcon_flushxy(console_t * con,int x,int y); void lcon_scroll(console_t * con,int update); void lcon_putch(console_t * con,char c); void lcon_gotoxy(console_t * con,int x,int y); void lcon_set_text_color(console_t * con,int color); void lcon_set_back_color(console_t * con,int color); void lcon_switch_to_console(int i); unsigned char lcon_getcxy(console_t * con,int x,int y); void lcon_putcxy(console_t * con,int x,int y,unsigned char c); #define _lcon_clrscr() lcon_clrscr(visible_console) #define _lcon_flush_console() lcon_flush_console(visible_console) #define _lcon_flushxy(x,y) lcon_flushxy(visible_console,(x),(y)) #define _lcon_scroll() lcon_scroll(visible_console,1) #define _lcon_putch(c) lcon_putch(visible_console,(char)(c)) #define _lcon_gotoxy(x,y) lcon_gotoxy(visible_console,(x),(y)) #define _lcon_set_text_color(c) lcon_set_text_color(visible_console,(c)&(1+2+4+8)) #define _lcon_set_back_color(c) lcon_set_back_color(visible_console,(c)&(1+2+4+8)) #define _lcon_switch(i) lcon_switch_to_console((i)) #define _lcon_getcxy(x,y) lcon_getcxy(visible_console,(x),(y)) #define _lcon_putcxy(x,y,c) lcon_putcxy(visible_console,(x),(y),(c)) console_t * create_private_console(void); void free_private_console(console_t * con); #endif