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