#include #include "screen.h" #include "console.h" #include "tools.h" #include "charmaps.h" #include "types.h" uint16_t col=0; uint16_t line=0; uint8_t mode=0; uint8_t console_width=MAX_COL; int getMode() { return mode; } void setMode(int m) { mode=m; } int getLine() { return line; } void setLine(int nline) { line=nline; } int getCol() { return col; } void setCol(int ncol) { col=ncol; } unsigned char escaping=0; unsigned char escapcmd=0; void doEscape() { if(!escapcmd) { mode=((mode&~BOLD_MODE)&~UNDL_MODE)&~INVT_MODE; setCurColorRGB(0xFF,0xFF,0xFF); } else if(escapcmd==1) mode|=BOLD_MODE; else if(escapcmd==3) mode|=INVT_MODE; else if(escapcmd==4) mode|=UNDL_MODE; else { unsigned char escap1=escapcmd/10; unsigned char escap2=escapcmd%10; if(escap1==3 || escap1==9) { switch(escap2) { case 0: setCurColorRGB(0,0,0); break; case 1: setCurColorRGB(0xFF,0,0); break; case 2: setCurColorRGB(0,0xFF,0); break; case 3: setCurColorRGB(0xFF,0xFF,0); break; case 4: setCurColorRGB(0,0,0xFF); break; case 5: setCurColorRGB(0xFF,0,0xFF); break; case 6: setCurColorRGB(0,0xFF,0xFF); break; case 7: setCurColorRGB(0xFF,0xFF,0xFF); break; } } } } void dispBuf( unsigned char* buf, char* message) { int l = strlen(message); unsigned char c; while(c=*(message++)) { if(c==0x1b) { escaping=1; escapcmd=0; } else if(escaping==1 && c!='[') escaping=0; else if(escaping==2 && c!=';' && c!='m' && (c<'0' || c>'9')) { doEscape(); escaping=0; } if(escaping) { if(escaping==1 && c=='[') escaping=2; else if(escaping==2) { if(c==';') doEscape(); else if(c=='m') { doEscape(); escaping=0; } else escapcmd=escapcmd*10+(c-'0'); } } else { if(c==0xA) { col=0; line++; if(getMode()&TEMP_MODE) setMode((getMode()|TRNS_MODE)&~TEMP_MODE); } else if(c==0xD) { // if(getMode()&TRNS_MODE) // setMode((getMode()|TEMP_MODE)&~TRNS_MODE); col=0; } else { if(col>=console_width && getMode()&RETC_MODE) { col=0; line++; } if(line