📄 cfb_console.c
字号:
#include <string.h>#include "video_fb.h"#include "sm501.h"static GraphicDevice *pGD; /* Pointer to Graphic array */static void *video_fb_address; /* frame buffer address */static void *video_console_address; /* console buffer start address */static int console_col = 0; /* cursor col */static int console_row = 0; /* cursor row */static unsigned long eorx, fgx, bgx; /* color pats */#define VIDEO_VISIBLE_COLS (pGD->winSizeX)#define VIDEO_VISIBLE_ROWS (pGD->winSizeY)#define VIDEO_PIXEL_SIZE (pGD->gdfBytesPP)#define VIDEO_DATA_FORMAT (pGD->gdfIndex)#define VIDEO_FB_ADRS (pGD->frameAdrs)static void video_clear (void){ int size = pGD->winSizeX * pGD->winSizeY * pGD->gdfBytesPP; memset ((void *)pGD->frameAdrs, 0x0, size);}int video_init(void){ unsigned long color8; if ((pGD=video_hw_init()) == NULL) return -1; video_fb_address = (void*)VIDEO_FB_ADRS; /* Init drawing pats */ // 初始化画图时序 switch (VIDEO_DATA_FORMAT) { case GDF__8BIT_INDEX: video_set_lut (0x01, CONSOLE_FG_COL, CONSOLE_FG_COL, CONSOLE_FG_COL); video_set_lut (0x00, CONSOLE_BG_COL, CONSOLE_BG_COL, CONSOLE_BG_COL); fgx = 0x01010101; bgx = 0x00000000; break; case GDF__8BIT_332RGB: color8 = ((CONSOLE_FG_COL & 0xe0) | ((CONSOLE_FG_COL>>3) & 0x1c) | CONSOLE_FG_COL>>6); fgx = (color8<<24) | (color8<<16) | (color8<<8) | color8; color8 = ((CONSOLE_BG_COL & 0xe0) | ((CONSOLE_BG_COL>>3) & 0x1c) | CONSOLE_BG_COL>>6); bgx = (color8<<24) | (color8<<16) | (color8<<8) | color8; break; case GDF_15BIT_555RGB: fgx = (((CONSOLE_FG_COL>>3)<<26) | ((CONSOLE_FG_COL>>3)<<21) | ((CONSOLE_FG_COL>>3)<<16) | ((CONSOLE_FG_COL>>3)<<10) | ((CONSOLE_FG_COL>>3)<<5) | (CONSOLE_FG_COL>>3)); bgx = (((CONSOLE_BG_COL>>3)<<26) | ((CONSOLE_BG_COL>>3)<<21) | ((CONSOLE_BG_COL>>3)<<16) | ((CONSOLE_BG_COL>>3)<<10) | ((CONSOLE_BG_COL>>3)<<5) | (CONSOLE_BG_COL>>3)); break; case GDF_16BIT_565RGB: fgx = (((CONSOLE_FG_COL>>3)<<27) | ((CONSOLE_FG_COL>>2)<<21) | ((CONSOLE_FG_COL>>3)<<16) | ((CONSOLE_FG_COL>>3)<<11) | ((CONSOLE_FG_COL>>2)<<5) | (CONSOLE_FG_COL>>3)); bgx = (((CONSOLE_BG_COL>>3)<<27) | ((CONSOLE_BG_COL>>2)<<21) | ((CONSOLE_BG_COL>>3)<<16) | ((CONSOLE_BG_COL>>3)<<11) | ((CONSOLE_BG_COL>>2)<<5) | (CONSOLE_BG_COL>>3)); break; case GDF_32BIT_X888RGB: fgx = (CONSOLE_FG_COL<<16) | (CONSOLE_FG_COL<<8) | CONSOLE_FG_COL; bgx = (CONSOLE_BG_COL<<16) | (CONSOLE_BG_COL<<8) | CONSOLE_BG_COL; break; case GDF_24BIT_888RGB: fgx = (CONSOLE_FG_COL<<24) | (CONSOLE_FG_COL<<16) | (CONSOLE_FG_COL<<8) | CONSOLE_FG_COL; bgx = (CONSOLE_BG_COL<<24) | (CONSOLE_BG_COL<<16) | (CONSOLE_BG_COL<<8) | CONSOLE_BG_COL; break; }//switch fgx = 0xffffffff; eorx = fgx ^ bgx; video_clear (); // 清屏 video_console_address = video_fb_address; /* Initialize the console */ // 初始化控制台 console_col = 0; console_row = 0; return 0 ;}//video_init()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -