1 #include <stdio.h>
2 #include "console.h"
3 #include "console_token"
4 #define CLEAR '\n'
5 #define HOME '\r'
6 #define LEFT '\b'
7 #define RIGHT '\t'
8
9 /*** definition for mini display used inside port.c ***/
10 int display_size=0, display_xpos, display_ypos;
11
12 static int col_pos=0;
13 static unsigned char display[256+1];
14
define_scroll_line(unsigned x,unsigned y,unsigned len)15 void define_scroll_line(unsigned x, unsigned y, unsigned len)
16 {
17 display_xpos=x;
18 display_ypos=y;
19 display_size=len;
20 }
21
display_in_line(unsigned char byte)22 void display_in_line(unsigned char byte)
23 {
24 if (byte >= 32)
25 {
26 if (!display_size) return;
27 display[col_pos&255] = byte;
28 col_pos++;
29 c_setcolor(D_CYAN);
30 if (col_pos < display_size)
31 { c_goto(display_xpos+col_pos,display_ypos);
32 putchar((int)byte);
33 }
34 else
35 { display[col_pos&255] = '\0';
36 c_goto(display_xpos,display_ypos);
37 fputs(display+(col_pos+1-display_size&255),stdout);
38 if ((col_pos+1-display_size&255) >= (col_pos&255))
39 fputs(display,stdout);
40 }
41 }
42 else if (byte == RIGHT)
43 col_pos++;
44 else if (byte == LEFT)
45 col_pos--;
46 else if (byte == HOME)
47 col_pos=0;
48 else if (byte == CLEAR)
49 { int i;
50 col_pos=0;
51 for (i=0;i<display_size;i++)
52 display[i]=' ';
53 if (!display_size) return;
54 c_goto(display_xpos,display_ypos);
55 fputs(display,stdout);
56 }
57 }
58