我的学习之旅(19)console.h和console.c

来源:互联网 发布:java base64加密图片 编辑:程序博客网 时间:2024/06/16 12:36
/*屏幕向上翻一行,等同于屏幕向下移动一行*/static void screen_up(void){    int i;    unsigned char *src;    unsigned char *dest;    unsigned int len;    /*是否需要整个屏幕向上翻一行*/    if ( g_screen_top == 0 && g_screen_bottom == DISP_MAX_Y ) {              //刷新屏幕在显存中位置        g_screen_origin += BYTES_FOR_ONE_LINE;        g_screen_end += BYTES_FOR_ONE_LINE;        /*刷新光标位置为换行*/        g_position += BYTES_FOR_ONE_LINE;         if( g_screen_end > DISP_END_ADDR )  {/*如果屏幕在显存中位置超出了显存本身的范围*/            /*将屏幕内容刷新到DISP_BASE_ADDR处*/            src = (unsigned char *)g_screen_origin;            dest = (unsigned char *)DISP_BASE_ADDR;            len = (g_screen_end - g_screen_origin);            for(i = 0; i < len; i++) {                dest[i] = src[i];            }            /*刷新光标位置和屏幕起始和结束地址*/            g_screen_end = DISP_BASE_ADDR + len;            g_position = DISP_BASE_ADDR + (g_position - g_screen_origin);            g_screen_origin = DISP_BASE_ADDR;                    }        else {                    }        set_screen_origin(1);    }    else { /*不支持*/    }}/*屏幕向下翻一行*/static void screen_down(void){}static void add_a_line(void){    /*如果不是最底下的一行*/    if( g_y + 1 < DISP_MAX_Y ) {        g_y++;        g_position += BYTES_FOR_ONE_LINE;         return;    }    /*否则就要刷新整个屏幕的数据*/    screen_up();}//用空格字符填充被删除的字符static void delete_char(void){    if( g_x > 0 ) {        g_position -= 2;        g_x--;        *(unsigned short *)g_position = ((DISP_FG_WHITE + DISP_BG_BLACK) << 8 )|(0x20);//0x20是空格字符    }    return;}

0 0
原创粉丝点击