From d1877cee8970e1d64468110b27c2c08001688449 Mon Sep 17 00:00:00 2001 From: Slapparoo Date: Sat, 24 Dec 2022 15:58:57 +1300 Subject: [PATCH 1/2] Allow for different font sizes --- src/Demo/Graphics/FontEd_8x12.ZC | 157 ++++++++ src/Kernel/Display.ZC | 14 +- src/Kernel/FontStd8x12.ZC | 661 +++++++++++++++++++++++++++++++ src/Kernel/KMain.ZC | 5 +- src/Kernel/Kernel.PRJ | 1 + src/Kernel/KernelA.HH | 10 + src/System/Gr/GrAsm.ZC | 171 ++------ src/System/Gr/GrGlobals.ZC | 4 + src/System/Gr/GrScreen.ZC | 46 +-- 9 files changed, 888 insertions(+), 181 deletions(-) create mode 100755 src/Demo/Graphics/FontEd_8x12.ZC create mode 100755 src/Kernel/FontStd8x12.ZC diff --git a/src/Demo/Graphics/FontEd_8x12.ZC b/src/Demo/Graphics/FontEd_8x12.ZC new file mode 100755 index 00000000..e320044b --- /dev/null +++ b/src/Demo/Graphics/FontEd_8x12.ZC @@ -0,0 +1,157 @@ +/*After making a font... + +You can save it as a binary file with: + FileWrite("filename.BIN.Z",text.font,256*FONT_HEIGHT); + +You can load it with: + U64 *my_font=FileRead("filename.BIN.Z"); + text.aux_font=my_font; + + will toggle main font and aux_font. + +If you want to change the system font permanently, +save to a file with this font editor program +and cut and paste the code into $LK,"::/Kernel/FontStd.HC"$. +You will need to recompile Kernel by calling $LK,"BootHDIns",A="MN:BootHDIns"$(). + +See $LK,"::/Demo/ExtChars.HC"$, $LK,"::/Demo/Games/CharDemo.HC"$, +$LK,"::/Demo/Graphics/CharAnimation.HC"$ and $LK,"::/Demo/ScrnCodes.HC"$. +*/ + +#define BLOW_UP_CHAR_X (18*FONT_WIDTH) +#define BLOW_UP_CHAR_Y (4*FONT_HEIGHT) + +U8 cur_ch; +U8 *fp = text.font; + +U0 DrawIt(CTask *task,CDC *dc) +{ + I64 i,j,k,c; + TextPrint(task,0,0,BLUE<<4+YELLOW,"Press to Toggle Aux Font."); + k=0; + for (i=0; i<16; i++) + for (j=0; j<16; j++) { + if (k == cur_ch) { + if (Blink) + c= (BLACK<<4+YELLOW) <<8 + k++; + else + c=(YELLOW<<4+BLACK)<<8 + k++; + } else + c=(BLUE<<4+WHITE)<<8 + k++; + TextChar(task,,j,i+2,c); + } + + k=0; + for (i=0;icolor=YELLOW; + else + dc->color=GREEN; + GrRect(dc, BLOW_UP_CHAR_X + j * FONT_WIDTH, + BLOW_UP_CHAR_Y+i*FONT_HEIGHT, + FONT_WIDTH,FONT_HEIGHT); + } +} + +U0 FESave(Bool pmt) +{ + U8 old_draw_it=Fs->draw_it; + CDoc *doc=DocNew; + I64 i, j; + + for (i=0;i<256;i++) { + for (j = 0; j < FONT_HEIGHT; j++) { + DocPrint(doc,"0x%02X,", fp[i * FONT_HEIGHT + j]); + } + if (Bt(char_bmp_safe_dollar,i)) + DocPrint(doc,"//%c",i); + else if (i=='$$') + DocPrint(doc,"//$$$$",i); + DocPrint(doc,"\n"); + } + Fs->draw_it=NULL; + DocWrite(doc,pmt); + Fs->draw_it=old_draw_it; + DocDel(doc); +} + +U0 FontEd() +{ + I64 msg_code,arg1,arg2,k; + SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ + MenuPush( + "File {" + " SaveAs(,CH_CTRLA);" + " Abort(,CH_SHIFT_ESC);" + " Exit(,CH_ESC);" + "}"); + AutoComplete; + DocCursor; + DocClear; + Fs->win_inhibit|=WIG_DBL_CLICK; + cur_ch=0; + try { + Fs->draw_it=&DrawIt; + while (TRUE) { + switch (msg_code=MessageGet(&arg1,&arg2, + 1<>= 1; + if (i & nextRow == nextRow) + framebuffer += rowInc; } POPFD text.raw_col++; diff --git a/src/Kernel/FontStd8x12.ZC b/src/Kernel/FontStd8x12.ZC new file mode 100755 index 00000000..8439fac2 --- /dev/null +++ b/src/Kernel/FontStd8x12.ZC @@ -0,0 +1,661 @@ +//See $LK,"::/Doc/Credits.DD"$. + +/* +Initially created by extending the base system font with the following regex in VSC +- note the reverse order +find: 0x(.{2})(.{2})(.{2})(.{2})(.{2})(.{2})(.{2})(.{2}) +replace: 0x00,0x00,0x$ER$7,0x$ER$5,0x$ER$3,0x$ER$1,0x00,0x00 + +the main alphabet '!' -> '~' charators have now been sampled from +// https://www.zap.org.au/projects/console-fonts-distributed/psftx-centos-7.5/lat0-12.psfu + +*/ +// 12 bytes per char +U8 sys_font_std_8x12[256*12]= { +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, +0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x38,0x18,0x18,0x18,0x18, +0x00,0x00,0x00,0x00,0xF8,0x1C,0xCC,0xEC,0x6C,0x6C,0x6C,0x6C, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x1C,0x18,0x18,0x18,0x18, +0x00,0x00,0x00,0x00,0x3F,0x70,0x67,0x6E,0x6C,0x6C,0x6C,0x6C, +0x18,0x18,0x18,0x18,0x18,0x38,0xF0,0x00,0x00,0x00,0x00,0x00, +0x3C,0x3C,0x3C,0x7C,0xFC,0xFC,0xF8,0x00,0x00,0x00,0x00,0x00, +0x18,0x18,0x18,0x18,0x18,0x1C,0x0F,0x00,0x00,0x00,0x00,0x00, +0x6C,0x6C,0x6C,0x6E,0x67,0x70,0x3F,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// +0x00,0x18,0x3C,0x3C,0x3C,0x18,0x18,0x00,0x18,0x18,0x00,0x00,//! +0x00,0x6C,0x6C,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" +0x00,0x00,0x00,0x36,0x7F,0x36,0x36,0x36,0x7F,0x36,0x00,0x00,//# +0x00,0x08,0x3E,0x6B,0x0E,0x1C,0x38,0x6B,0x3E,0x08,0x00,0x00,//$$ +0x00,0x00,0x00,0x46,0x66,0x30,0x18,0x0C,0x66,0x63,0x00,0x00,//% +0x00,0x1C,0x36,0x1C,0x1C,0x4E,0x7F,0x33,0x33,0x6E,0x00,0x00,//& +0x38,0x38,0x30,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//' +0x00,0x30,0x18,0x0C,0x0C,0x0C,0x0C,0x0C,0x18,0x30,0x00,0x00,//( +0x00,0x0C,0x18,0x30,0x30,0x30,0x30,0x30,0x18,0x0C,0x00,0x00,//) +0x00,0x00,0x00,0x36,0x1C,0x7F,0x1C,0x36,0x00,0x00,0x00,0x00,//* +0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00,0x00,0x00,//+ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x30,0x18,0x00,//, +0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,//- +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,//. +0x00,0x00,0x00,0x60,0x30,0x18,0x0C,0x06,0x03,0x00,0x00,0x00,/// +0x00,0x3E,0x63,0x63,0x63,0x6B,0x63,0x63,0x63,0x3E,0x00,0x00,//0 +0x00,0x18,0x1E,0x18,0x18,0x18,0x18,0x18,0x18,0x7E,0x00,0x00,//1 +0x00,0x3E,0x63,0x63,0x30,0x18,0x0C,0x06,0x63,0x7F,0x00,0x00,//2 +0x00,0x3E,0x63,0x60,0x60,0x3C,0x60,0x60,0x63,0x3E,0x00,0x00,//3 +0x00,0x30,0x38,0x3C,0x36,0x33,0x7F,0x30,0x30,0x30,0x00,0x00,//4 +0x00,0x7F,0x03,0x03,0x03,0x3F,0x60,0x60,0x63,0x3E,0x00,0x00,//5 +0x00,0x3E,0x63,0x03,0x03,0x3F,0x63,0x63,0x63,0x3E,0x00,0x00,//6 +0x00,0x7F,0x63,0x30,0x18,0x0C,0x0C,0x0C,0x0C,0x0C,0x00,0x00,//7 +0x00,0x3E,0x63,0x63,0x63,0x3E,0x63,0x63,0x63,0x3E,0x00,0x00,//8 +0x00,0x3E,0x63,0x63,0x63,0x7E,0x60,0x60,0x63,0x3E,0x00,0x00,//9 +0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x30,0x30,0x00,0x00,0x00,//: +0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x30,0x30,0x30,0x18,0x00,//; +0x00,0x30,0x18,0x0C,0x06,0x03,0x06,0x0C,0x18,0x30,0x00,0x00,//< +0x00,0x00,0x00,0x00,0x7F,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,//= +0x00,0x06,0x0C,0x18,0x30,0x60,0x30,0x18,0x0C,0x06,0x00,0x00,//> +0x00,0x3E,0x63,0x63,0x30,0x18,0x18,0x00,0x18,0x18,0x00,0x00,//? +0x00,0x3E,0x63,0x63,0x7B,0x7B,0x7B,0x3B,0x03,0x7E,0x00,0x00,//@ +0x00,0x1C,0x36,0x63,0x63,0x63,0x7F,0x63,0x63,0x63,0x00,0x00,//A +0x00,0x3F,0x66,0x66,0x66,0x3E,0x66,0x66,0x66,0x3F,0x00,0x00,//B +0x00,0x3C,0x66,0x03,0x03,0x03,0x03,0x03,0x66,0x3C,0x00,0x00,//C +0x00,0x1F,0x36,0x66,0x66,0x66,0x66,0x66,0x36,0x1F,0x00,0x00,//D +0x00,0x7F,0x66,0x06,0x06,0x3E,0x06,0x06,0x66,0x7F,0x00,0x00,//E +0x00,0x7F,0x66,0x06,0x06,0x3E,0x06,0x06,0x06,0x0F,0x00,0x00,//F +0x00,0x3E,0x63,0x63,0x03,0x03,0x73,0x63,0x63,0x3E,0x00,0x00,//G +0x00,0x63,0x63,0x63,0x63,0x7F,0x63,0x63,0x63,0x63,0x00,0x00,//H +0x00,0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,//I +0x00,0x3C,0x18,0x18,0x18,0x18,0x18,0x1B,0x1B,0x0E,0x00,0x00,//J +0x00,0x63,0x33,0x1B,0x0F,0x0F,0x1B,0x33,0x63,0x63,0x00,0x00,//K +0x00,0x0F,0x06,0x06,0x06,0x06,0x06,0x46,0x66,0x7F,0x00,0x00,//L +0x00,0x63,0x63,0x77,0x7F,0x6B,0x6B,0x6B,0x63,0x63,0x00,0x00,//M +0x00,0x63,0x63,0x67,0x67,0x6F,0x7B,0x73,0x73,0x63,0x00,0x00,//N +0x00,0x3E,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x3E,0x00,0x00,//O +0x00,0x3F,0x66,0x66,0x66,0x3E,0x06,0x06,0x06,0x0F,0x00,0x00,//P +0x00,0x3E,0x63,0x63,0x63,0x63,0x63,0x63,0x6B,0x3E,0x60,0x00,//Q +0x00,0x3F,0x66,0x66,0x66,0x3E,0x1E,0x36,0x66,0x67,0x00,0x00,//R +0x00,0x3E,0x63,0x03,0x06,0x1C,0x30,0x60,0x63,0x3E,0x00,0x00,//S +0x00,0x7E,0x5A,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,//T +0x00,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x3E,0x00,0x00,//U +0x00,0x63,0x63,0x63,0x63,0x63,0x63,0x36,0x1C,0x08,0x00,0x00,//V +0x00,0x63,0x63,0x6B,0x6B,0x6B,0x7F,0x77,0x63,0x63,0x00,0x00,//W +0x00,0x63,0x63,0x36,0x1C,0x1C,0x1C,0x36,0x63,0x63,0x00,0x00,//X +0x00,0x66,0x66,0x66,0x66,0x3C,0x18,0x18,0x18,0x3C,0x00,0x00,//Y +0x00,0x7F,0x63,0x31,0x18,0x0C,0x06,0x43,0x63,0x7F,0x00,0x00,//Z +0x00,0x3E,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x3E,0x00,0x00,//[ +0x00,0x00,0x00,0x03,0x06,0x0C,0x18,0x30,0x60,0x00,0x00,0x00,//\ +0x00,0x3E,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x3E,0x00,0x00,//] +0x00,0x18,0x3C,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//^ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,//_ +0x38,0x38,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//` +0x00,0x00,0x00,0x00,0x1E,0x30,0x3E,0x33,0x3B,0x6E,0x00,0x00,//a +0x00,0x07,0x06,0x06,0x3E,0x66,0x66,0x66,0x66,0x3F,0x00,0x00,//b +0x00,0x00,0x00,0x00,0x3E,0x63,0x03,0x03,0x63,0x3E,0x00,0x00,//c +0x00,0x38,0x30,0x30,0x3E,0x33,0x33,0x33,0x33,0x7E,0x00,0x00,//d +0x00,0x00,0x00,0x00,0x3E,0x63,0x7F,0x03,0x63,0x3E,0x00,0x00,//e +0x00,0x38,0x6C,0x0C,0x0C,0x3F,0x0C,0x0C,0x0C,0x1E,0x00,0x00,//f +0x00,0x00,0x00,0x00,0x6E,0x73,0x63,0x63,0x7E,0x60,0x63,0x3E,//g +0x00,0x07,0x06,0x06,0x36,0x6E,0x66,0x66,0x66,0x67,0x00,0x00,//h +0x00,0x18,0x18,0x00,0x1C,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,//i +0x00,0x00,0x30,0x30,0x00,0x38,0x30,0x30,0x30,0x33,0x33,0x1E,//j +0x00,0x07,0x06,0x06,0x66,0x36,0x1E,0x36,0x66,0x67,0x00,0x00,//k +0x00,0x0E,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x2C,0x18,0x00,0x00,//l +0x00,0x00,0x00,0x00,0x36,0x7F,0x6B,0x6B,0x63,0x63,0x00,0x00,//m +0x00,0x00,0x00,0x00,0x3B,0x66,0x66,0x66,0x66,0x66,0x00,0x00,//n +0x00,0x00,0x00,0x00,0x3E,0x63,0x63,0x63,0x63,0x3E,0x00,0x00,//o +0x00,0x00,0x00,0x00,0x3B,0x66,0x66,0x66,0x3E,0x06,0x06,0x0F,//p +0x00,0x00,0x00,0x00,0x6E,0x33,0x33,0x33,0x3E,0x30,0x30,0x78,//q +0x00,0x00,0x00,0x00,0x3B,0x66,0x06,0x06,0x06,0x0F,0x00,0x00,//r +0x00,0x00,0x00,0x00,0x3E,0x63,0x0E,0x38,0x63,0x3E,0x00,0x00,//s +0x00,0x0C,0x0C,0x0C,0x3F,0x0C,0x0C,0x0C,0x6C,0x38,0x00,0x00,//t +0x00,0x00,0x00,0x00,0x33,0x33,0x33,0x33,0x33,0x6E,0x00,0x00,//u +0x00,0x00,0x00,0x00,0x63,0x63,0x63,0x36,0x1C,0x08,0x00,0x00,//v +0x00,0x00,0x00,0x00,0x63,0x63,0x6B,0x6B,0x7F,0x36,0x00,0x00,//w +0x00,0x00,0x00,0x00,0x63,0x36,0x1C,0x1C,0x36,0x63,0x00,0x00,//x +0x00,0x00,0x00,0x00,0x63,0x63,0x63,0x73,0x6E,0x60,0x63,0x3E,//y +0x00,0x00,0x00,0x00,0x7F,0x31,0x18,0x0C,0x46,0x7F,0x00,0x00,//z +0x00,0x70,0x18,0x18,0x18,0x0E,0x18,0x18,0x18,0x70,0x00,0x00,//{ +0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,//| +0x00,0x0E,0x18,0x18,0x18,0x70,0x18,0x18,0x18,0x0E,0x00,0x00,//} +0x00,0x6E,0x3B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//~ +0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00, +0x00,0x00,0x1E,0x33,0x03,0x33,0x1E,0x18,0x30,0x1E,0x00,0x00,// +0x00,0x00,0x00,0x33,0x00,0x33,0x33,0x33,0x7E,0x00,0x00,0x00,// +0x00,0x00,0x38,0x00,0x1E,0x33,0x3F,0x03,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x7E,0xC3,0x3C,0x60,0x7C,0x66,0xFC,0x00,0x00,0x00,// +0x00,0x00,0x33,0x00,0x1E,0x30,0x3E,0x33,0x7E,0x00,0x00,0x00,// +0x00,0x00,0x07,0x00,0x1E,0x30,0x3E,0x33,0x7E,0x00,0x00,0x00,// +0x00,0x00,0x0C,0x0C,0x1E,0x30,0x3E,0x33,0x7E,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0x3E,0x03,0x03,0x3E,0x60,0x3C,0x00,0x00,// +0x00,0x00,0x7E,0xC3,0x3C,0x66,0x7E,0x06,0x3C,0x00,0x00,0x00,// +0x00,0x00,0x33,0x00,0x1E,0x33,0x3F,0x03,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x07,0x00,0x1E,0x33,0x3F,0x03,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x33,0x00,0x0E,0x0C,0x0C,0x0C,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x3E,0x63,0x1C,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,// +0x00,0x00,0x07,0x00,0x0E,0x0C,0x0C,0x0C,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x33,0x0C,0x1E,0x33,0x33,0x3F,0x33,0x00,0x00,0x00,// +0x00,0x00,0x0C,0x0C,0x00,0x1E,0x33,0x3F,0x33,0x00,0x00,0x00,// +0x00,0x00,0x38,0x00,0x3F,0x06,0x1E,0x06,0x3F,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0xFE,0x30,0xFE,0x33,0xFE,0x00,0x00,0x00,// +0x00,0x00,0x7C,0x36,0x33,0x7F,0x33,0x33,0x73,0x00,0x00,0x00,// +0x00,0x00,0x1E,0x33,0x00,0x1E,0x33,0x33,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x00,0x33,0x00,0x1E,0x33,0x33,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x00,0x07,0x00,0x1E,0x33,0x33,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x1E,0x33,0x00,0x33,0x33,0x33,0x7E,0x00,0x00,0x00,// +0x00,0x00,0x00,0x07,0x00,0x33,0x33,0x33,0x7E,0x00,0x00,0x00,// +0x00,0x00,0x00,0x33,0x00,0x33,0x33,0x3F,0x30,0x1F,0x00,0x00,// +0x00,0x00,0x63,0x1C,0x3E,0x63,0x63,0x3E,0x1C,0x00,0x00,0x00,// +0x00,0x00,0x33,0x00,0x33,0x33,0x33,0x33,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x18,0x18,0x7E,0x03,0x03,0x7E,0x18,0x18,0x00,0x00,// +0x00,0x00,0x1C,0x36,0x26,0x0F,0x06,0x67,0x3F,0x00,0x00,0x00,// +0x00,0x00,0x33,0x33,0x1E,0x3F,0x0C,0x3F,0x0C,0x00,0x00,0x00,// +0x00,0x00,0x0F,0x1B,0x1B,0x2F,0x33,0x7B,0x33,0x70,0x00,0x00,// +0x00,0x00,0x70,0xD8,0x18,0x7E,0x18,0x18,0x1B,0x0E,0x00,0x00,// +0x00,0x00,0x38,0x00,0x1E,0x30,0x3E,0x33,0x7E,0x00,0x00,0x00,// +0x00,0x00,0x1C,0x00,0x0E,0x0C,0x0C,0x0C,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x00,0x38,0x00,0x1E,0x33,0x33,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x00,0x38,0x00,0x33,0x33,0x33,0x7E,0x00,0x00,0x00,// +0x00,0x00,0x00,0x1F,0x00,0x1F,0x33,0x33,0x33,0x00,0x00,0x00,// +0x00,0x00,0x3F,0x00,0x33,0x37,0x3F,0x3B,0x33,0x00,0x00,0x00,// +0x00,0x00,0x3C,0x36,0x36,0x7C,0x00,0x7E,0x00,0x00,0x00,0x00,// +0x00,0x00,0x3C,0x66,0x66,0x3C,0x00,0x7E,0x00,0x00,0x00,0x00,// +0x00,0x00,0x0C,0x00,0x0C,0x06,0x03,0x33,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0x00,0x3F,0x03,0x03,0x00,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0x00,0x3F,0x30,0x30,0x00,0x00,0x00,0x00,// +0x00,0x00,0x63,0x33,0x1B,0x7C,0xC6,0x73,0x19,0xF8,0x00,0x00,// +0x00,0x00,0x63,0x33,0x1B,0xCF,0xE6,0xF3,0xF9,0xC0,0x00,0x00,// +0x00,0x00,0x00,0x18,0x00,0x18,0x18,0x3C,0x3C,0x18,0x00,0x00,// +0x00,0x00,0x00,0xCC,0x66,0x33,0x66,0xCC,0x00,0x00,0x00,0x00,// +0x00,0x00,0x00,0x33,0x66,0xCC,0x66,0x33,0x00,0x00,0x00,0x00,// +0x44,0x11,0x44,0x11,0x44,0x11,0x44,0x11,0x44,0x11,0x44,0x11,// +0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,// +0xBB,0xEE,0xBB,0xEE,0xBB,0xEE,0xBB,0xEE,0xBB,0xEE,0xBB,0xEE,// +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,// +0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0x18,0x18,0x18,0x18,0x18,// +0x18,0x18,0x18,0x18,0x1F,0x18,0x1F,0x18,0x18,0x18,0x18,0x18,// +0x6C,0x6C,0x6C,0x6C,0x6C,0x6C,0x6F,0x6C,0x6C,0x6C,0x6C,0x6C,// +0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x7C,0x6C,0x6C,0x6C,0x6C,// +0x00,0x00,0x00,0x00,0x0F,0x1C,0x1F,0x18,0x18,0x18,0x18,0x18,// +0x6C,0x6C,0x6C,0x6C,0x67,0x60,0x67,0x6C,0x6C,0x6C,0x6C,0x6C,// +0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,// +0x3F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,// +0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xFF,0xFF,0x7F,0x3F,// +0x6C,0x6C,0x6C,0x6C,0x6C,0x7C,0x3F,0x00,0x00,0x00,0x00,0x00,// +0x18,0x18,0x18,0x18,0x1F,0x1C,0x0F,0x00,0x00,0x00,0x00,0x00,// +0x00,0x3F,0x7F,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,// +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x0E,0xFE,0xFC,0x00,// +0x00,0x00,0x18,0x18,0x18,0x18,0xFF,0x00,0x00,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x18,0x18,0x18,0x18,0x18,// +0x18,0x18,0x18,0x18,0x18,0x18,0xF8,0x18,0x18,0x18,0x18,0x18,// +0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// +0x18,0x18,0x18,0x18,0x18,0x18,0xFF,0x18,0x18,0x18,0x18,0x18,// +0x18,0x18,0x18,0x38,0xD8,0x18,0xD8,0x38,0x18,0x18,0x18,0x18,// +0x6C,0x6C,0x6C,0x6C,0x6C,0x6C,0xEC,0x6C,0x6C,0x6C,0x6C,0x6C,// +0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x1F,0xFF,0xFF,0xFE,0xFC,// +0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,// +0x00,0x00,0x6C,0x6C,0xEF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0xFF,0x00,0xEF,0x6C,0x6C,0x6C,0x00,0x00,// +0x00,0x00,0x6C,0x6C,0xEC,0x0C,0xEC,0x6C,0x6C,0x6C,0x00,0x00,// +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,// +0x6C,0x6C,0x6C,0x6C,0xEF,0x00,0xEF,0x6C,0x6C,0x6C,0x6C,0x6C,// +0x18,0x18,0x18,0x18,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,// +0x6C,0x6C,0x6C,0x6C,0x6C,0x6C,0xFF,0x00,0x00,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x18,0x18,0x18,0x18,0x18,// +0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x6C,0x6C,0x6C,0x6C,0x6C,// +0x6C,0x6C,0x6C,0x6C,0x6C,0x6C,0xFC,0x00,0x00,0x00,0x00,0x00,// +0x18,0x18,0x18,0x18,0xF8,0x18,0xF8,0x00,0x00,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0xF8,0x18,0xF8,0x18,0x18,0x18,0x18,0x18,// +0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x6C,0x6C,0x6C,0x6C,0x6C,// +0x6C,0x6C,0x6C,0x6C,0x6C,0x6C,0xEF,0x6C,0x6C,0x6C,0x6C,0x6C,// +0x18,0x18,0x18,0x18,0xFF,0x00,0xFF,0x18,0x18,0x18,0x18,0x18,// +0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x7F,0x3F,0x00,// +0x00,0xFC,0xFE,0x0E,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,// +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,// +0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,// +0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,// +0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,// +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0x6E,0x3B,0x13,0x3B,0x6E,0x00,0x00,0x00,// +0x00,0x00,0x00,0x1E,0x33,0x1F,0x33,0x1F,0x03,0x03,0x00,0x00,// +0x00,0x00,0x00,0x7F,0x63,0x03,0x03,0x03,0x03,0x00,0x00,0x00,// +0x00,0x00,0x00,0x7F,0x36,0x36,0x36,0x36,0x36,0x00,0x00,0x00,// +0x00,0x00,0x7F,0x66,0x0C,0x18,0x0C,0x66,0x7F,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0x7E,0x33,0x33,0x33,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x3E,0x06,0x03,0x00,0x00,// +0x00,0x00,0x00,0x6E,0x3B,0x18,0x18,0x18,0x18,0x00,0x00,0x00,// +0x00,0x00,0x3F,0x0C,0x1E,0x33,0x33,0x1E,0x0C,0x3F,0x00,0x00,// +0x00,0x00,0x1C,0x36,0x63,0x7F,0x63,0x36,0x1C,0x00,0x00,0x00,// +0x00,0x00,0x1C,0x36,0x63,0x63,0x36,0x36,0x77,0x00,0x00,0x00,// +0x00,0x00,0x38,0x0C,0x18,0x3E,0x33,0x33,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0x7E,0xDB,0xDB,0x7E,0x00,0x00,0x00,0x00,// +0x00,0x00,0x60,0x30,0x7E,0xDB,0xDB,0x7E,0x06,0x03,0x00,0x00,// +0x00,0x00,0x3C,0x06,0x03,0x3F,0x03,0x06,0x3C,0x00,0x00,0x00,// +0x00,0x00,0x1E,0x33,0x33,0x33,0x33,0x33,0x33,0x00,0x00,0x00,// +0x00,0x00,0x00,0x3F,0x00,0x3F,0x00,0x3F,0x00,0x00,0x00,0x00,// +0x00,0x00,0x0C,0x0C,0x3F,0x0C,0x0C,0x00,0x3F,0x00,0x00,0x00,// +0x00,0x00,0x06,0x0C,0x18,0x0C,0x06,0x00,0x3F,0x00,0x00,0x00,// +0x00,0x00,0x18,0x0C,0x06,0x0C,0x18,0x00,0x3F,0x00,0x00,0x00,// +0x00,0x00,0x70,0xD8,0xD8,0x18,0x18,0x18,0x18,0x18,0x00,0x00,// +0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x1B,0x1B,0x1E,0x0C,0x00,// +0x00,0x00,0x0C,0x0C,0x00,0x3F,0x00,0x0C,0x0C,0x00,0x00,0x00,// +0x00,0x00,0x00,0x4E,0x39,0x00,0x4E,0x39,0x00,0x00,0x00,0x00,// +0x00,0x00,0x1C,0x36,0x36,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,// +0x00,0x00,0xF0,0x30,0x30,0x30,0x37,0x36,0x3C,0x38,0x30,0x00,// +0x00,0x00,0x1E,0x36,0x36,0x36,0x36,0x00,0x00,0x00,0x00,0x00,// +0x00,0x00,0x1E,0x30,0x1C,0x06,0x3E,0x00,0x00,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0x3C,0x3C,0x3C,0x3C,0x00,0x00,0x00,0x00,// +0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,// +}; +// https://www.zap.org.au/projects/console-fonts-distributed/psftx-centos-7.5/lat0-12.psfu +U8 sys_font_lat0_8x12[256*12]={ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, +0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x38,0x18,0x18,0x18,0x18, +0x00,0x00,0x00,0x00,0xF8,0x1C,0xCC,0xEC,0x6C,0x6C,0x6C,0x6C, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x1C,0x18,0x18,0x18,0x18, +0x00,0x00,0x00,0x00,0x3F,0x70,0x67,0x6E,0x6C,0x6C,0x6C,0x6C, +0x18,0x18,0x18,0x18,0x18,0x38,0xF0,0x00,0x00,0x00,0x00,0x00, +0x3C,0x3C,0x3C,0x7C,0xFC,0xFC,0xF8,0x00,0x00,0x00,0x00,0x00, +0x18,0x18,0x18,0x18,0x18,0x1C,0x0F,0x00,0x00,0x00,0x00,0x00, +0x6C,0x6C,0x6C,0x6E,0x67,0x70,0x3F,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// +0x00,0x18,0x3C,0x3C,0x3C,0x18,0x18,0x00,0x18,0x18,0x00,0x00,//! +0x00,0x6C,0x6C,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" +0x00,0x00,0x00,0x36,0x7F,0x36,0x36,0x36,0x7F,0x36,0x00,0x00,//# +0x00,0x08,0x3E,0x6B,0x0E,0x1C,0x38,0x6B,0x3E,0x08,0x00,0x00,//$$ +0x00,0x00,0x00,0x46,0x66,0x30,0x18,0x0C,0x66,0x63,0x00,0x00,//% +0x00,0x1C,0x36,0x1C,0x1C,0x4E,0x7F,0x33,0x33,0x6E,0x00,0x00,//& +0x38,0x38,0x30,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//' +0x00,0x30,0x18,0x0C,0x0C,0x0C,0x0C,0x0C,0x18,0x30,0x00,0x00,//( +0x00,0x0C,0x18,0x30,0x30,0x30,0x30,0x30,0x18,0x0C,0x00,0x00,//) +0x00,0x00,0x00,0x36,0x1C,0x7F,0x1C,0x36,0x00,0x00,0x00,0x00,//* +0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00,0x00,0x00,//+ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x30,0x18,0x00,//, +0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,//- +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,//. +0x00,0x00,0x00,0x60,0x30,0x18,0x0C,0x06,0x03,0x00,0x00,0x00,/// +0x00,0x3E,0x63,0x63,0x63,0x6B,0x63,0x63,0x63,0x3E,0x00,0x00,//0 +0x00,0x18,0x1E,0x18,0x18,0x18,0x18,0x18,0x18,0x7E,0x00,0x00,//1 +0x00,0x3E,0x63,0x63,0x30,0x18,0x0C,0x06,0x63,0x7F,0x00,0x00,//2 +0x00,0x3E,0x63,0x60,0x60,0x3C,0x60,0x60,0x63,0x3E,0x00,0x00,//3 +0x00,0x30,0x38,0x3C,0x36,0x33,0x7F,0x30,0x30,0x30,0x00,0x00,//4 +0x00,0x7F,0x03,0x03,0x03,0x3F,0x60,0x60,0x63,0x3E,0x00,0x00,//5 +0x00,0x3E,0x63,0x03,0x03,0x3F,0x63,0x63,0x63,0x3E,0x00,0x00,//6 +0x00,0x7F,0x63,0x30,0x18,0x0C,0x0C,0x0C,0x0C,0x0C,0x00,0x00,//7 +0x00,0x3E,0x63,0x63,0x63,0x3E,0x63,0x63,0x63,0x3E,0x00,0x00,//8 +0x00,0x3E,0x63,0x63,0x63,0x7E,0x60,0x60,0x63,0x3E,0x00,0x00,//9 +0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x30,0x30,0x00,0x00,0x00,//: +0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x30,0x30,0x30,0x18,0x00,//; +0x00,0x30,0x18,0x0C,0x06,0x03,0x06,0x0C,0x18,0x30,0x00,0x00,//< +0x00,0x00,0x00,0x00,0x7F,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,//= +0x00,0x06,0x0C,0x18,0x30,0x60,0x30,0x18,0x0C,0x06,0x00,0x00,//> +0x00,0x3E,0x63,0x63,0x30,0x18,0x18,0x00,0x18,0x18,0x00,0x00,//? +0x00,0x3E,0x63,0x63,0x7B,0x7B,0x7B,0x3B,0x03,0x7E,0x00,0x00,//@ +0x00,0x1C,0x36,0x63,0x63,0x63,0x7F,0x63,0x63,0x63,0x00,0x00,//A +0x00,0x3F,0x66,0x66,0x66,0x3E,0x66,0x66,0x66,0x3F,0x00,0x00,//B +0x00,0x3C,0x66,0x03,0x03,0x03,0x03,0x03,0x66,0x3C,0x00,0x00,//C +0x00,0x1F,0x36,0x66,0x66,0x66,0x66,0x66,0x36,0x1F,0x00,0x00,//D +0x00,0x7F,0x66,0x06,0x06,0x3E,0x06,0x06,0x66,0x7F,0x00,0x00,//E +0x00,0x7F,0x66,0x06,0x06,0x3E,0x06,0x06,0x06,0x0F,0x00,0x00,//F +0x00,0x3E,0x63,0x63,0x03,0x03,0x73,0x63,0x63,0x3E,0x00,0x00,//G +0x00,0x63,0x63,0x63,0x63,0x7F,0x63,0x63,0x63,0x63,0x00,0x00,//H +0x00,0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,//I +0x00,0x3C,0x18,0x18,0x18,0x18,0x18,0x1B,0x1B,0x0E,0x00,0x00,//J +0x00,0x63,0x33,0x1B,0x0F,0x0F,0x1B,0x33,0x63,0x63,0x00,0x00,//K +0x00,0x0F,0x06,0x06,0x06,0x06,0x06,0x46,0x66,0x7F,0x00,0x00,//L +0x00,0x63,0x63,0x77,0x7F,0x6B,0x6B,0x6B,0x63,0x63,0x00,0x00,//M +0x00,0x63,0x63,0x67,0x67,0x6F,0x7B,0x73,0x73,0x63,0x00,0x00,//N +0x00,0x3E,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x3E,0x00,0x00,//O +0x00,0x3F,0x66,0x66,0x66,0x3E,0x06,0x06,0x06,0x0F,0x00,0x00,//P +0x00,0x3E,0x63,0x63,0x63,0x63,0x63,0x63,0x6B,0x3E,0x60,0x00,//Q +0x00,0x3F,0x66,0x66,0x66,0x3E,0x1E,0x36,0x66,0x67,0x00,0x00,//R +0x00,0x3E,0x63,0x03,0x06,0x1C,0x30,0x60,0x63,0x3E,0x00,0x00,//S +0x00,0x7E,0x5A,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,//T +0x00,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x3E,0x00,0x00,//U +0x00,0x63,0x63,0x63,0x63,0x63,0x63,0x36,0x1C,0x08,0x00,0x00,//V +0x00,0x63,0x63,0x6B,0x6B,0x6B,0x7F,0x77,0x63,0x63,0x00,0x00,//W +0x00,0x63,0x63,0x36,0x1C,0x1C,0x1C,0x36,0x63,0x63,0x00,0x00,//X +0x00,0x66,0x66,0x66,0x66,0x3C,0x18,0x18,0x18,0x3C,0x00,0x00,//Y +0x00,0x7F,0x63,0x31,0x18,0x0C,0x06,0x43,0x63,0x7F,0x00,0x00,//Z +0x00,0x3E,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x3E,0x00,0x00,//[ +0x00,0x00,0x00,0x03,0x06,0x0C,0x18,0x30,0x60,0x00,0x00,0x00,//\ +0x00,0x3E,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x3E,0x00,0x00,//] +0x00,0x18,0x3C,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//^ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,//_ +0x38,0x38,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//` +0x00,0x00,0x00,0x00,0x1E,0x30,0x3E,0x33,0x3B,0x6E,0x00,0x00,//a +0x00,0x07,0x06,0x06,0x3E,0x66,0x66,0x66,0x66,0x3F,0x00,0x00,//b +0x00,0x00,0x00,0x00,0x3E,0x63,0x03,0x03,0x63,0x3E,0x00,0x00,//c +0x00,0x38,0x30,0x30,0x3E,0x33,0x33,0x33,0x33,0x7E,0x00,0x00,//d +0x00,0x00,0x00,0x00,0x3E,0x63,0x7F,0x03,0x63,0x3E,0x00,0x00,//e +0x00,0x38,0x6C,0x0C,0x0C,0x3F,0x0C,0x0C,0x0C,0x1E,0x00,0x00,//f +0x00,0x00,0x00,0x00,0x6E,0x73,0x63,0x63,0x7E,0x60,0x63,0x3E,//g +0x00,0x07,0x06,0x06,0x36,0x6E,0x66,0x66,0x66,0x67,0x00,0x00,//h +0x00,0x18,0x18,0x00,0x1C,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,//i +0x00,0x00,0x30,0x30,0x00,0x38,0x30,0x30,0x30,0x33,0x33,0x1E,//j +0x00,0x07,0x06,0x06,0x66,0x36,0x1E,0x36,0x66,0x67,0x00,0x00,//k +0x00,0x0E,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x2C,0x18,0x00,0x00,//l +0x00,0x00,0x00,0x00,0x36,0x7F,0x6B,0x6B,0x63,0x63,0x00,0x00,//m +0x00,0x00,0x00,0x00,0x3B,0x66,0x66,0x66,0x66,0x66,0x00,0x00,//n +0x00,0x00,0x00,0x00,0x3E,0x63,0x63,0x63,0x63,0x3E,0x00,0x00,//o +0x00,0x00,0x00,0x00,0x3B,0x66,0x66,0x66,0x3E,0x06,0x06,0x0F,//p +0x00,0x00,0x00,0x00,0x6E,0x33,0x33,0x33,0x3E,0x30,0x30,0x78,//q +0x00,0x00,0x00,0x00,0x3B,0x66,0x06,0x06,0x06,0x0F,0x00,0x00,//r +0x00,0x00,0x00,0x00,0x3E,0x63,0x0E,0x38,0x63,0x3E,0x00,0x00,//s +0x00,0x0C,0x0C,0x0C,0x3F,0x0C,0x0C,0x0C,0x6C,0x38,0x00,0x00,//t +0x00,0x00,0x00,0x00,0x33,0x33,0x33,0x33,0x33,0x6E,0x00,0x00,//u +0x00,0x00,0x00,0x00,0x63,0x63,0x63,0x36,0x1C,0x08,0x00,0x00,//v +0x00,0x00,0x00,0x00,0x63,0x63,0x6B,0x6B,0x7F,0x36,0x00,0x00,//w +0x00,0x00,0x00,0x00,0x63,0x36,0x1C,0x1C,0x36,0x63,0x00,0x00,//x +0x00,0x00,0x00,0x00,0x63,0x63,0x63,0x73,0x6E,0x60,0x63,0x3E,//y +0x00,0x00,0x00,0x00,0x7F,0x31,0x18,0x0C,0x46,0x7F,0x00,0x00,//z +0x00,0x70,0x18,0x18,0x18,0x0E,0x18,0x18,0x18,0x70,0x00,0x00,//{ +0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,//| +0x00,0x0E,0x18,0x18,0x18,0x70,0x18,0x18,0x18,0x0E,0x00,0x00,//} +0x00,0x6E,0x3B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//~ +0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00, +0x00,0x00,0x1E,0x33,0x03,0x33,0x1E,0x18,0x30,0x1E,0x00,0x00,// +0x00,0x00,0x00,0x33,0x00,0x33,0x33,0x33,0x7E,0x00,0x00,0x00,// +0x00,0x00,0x38,0x00,0x1E,0x33,0x3F,0x03,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x7E,0xC3,0x3C,0x60,0x7C,0x66,0xFC,0x00,0x00,0x00,// +0x00,0x00,0x33,0x00,0x1E,0x30,0x3E,0x33,0x7E,0x00,0x00,0x00,// +0x00,0x00,0x07,0x00,0x1E,0x30,0x3E,0x33,0x7E,0x00,0x00,0x00,// +0x00,0x00,0x0C,0x0C,0x1E,0x30,0x3E,0x33,0x7E,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0x3E,0x03,0x03,0x3E,0x60,0x3C,0x00,0x00,// +0x00,0x00,0x7E,0xC3,0x3C,0x66,0x7E,0x06,0x3C,0x00,0x00,0x00,// +0x00,0x00,0x33,0x00,0x1E,0x33,0x3F,0x03,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x07,0x00,0x1E,0x33,0x3F,0x03,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x33,0x00,0x0E,0x0C,0x0C,0x0C,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x3E,0x63,0x1C,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,// +0x00,0x00,0x07,0x00,0x0E,0x0C,0x0C,0x0C,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x33,0x0C,0x1E,0x33,0x33,0x3F,0x33,0x00,0x00,0x00,// +0x00,0x00,0x0C,0x0C,0x00,0x1E,0x33,0x3F,0x33,0x00,0x00,0x00,// +0x00,0x00,0x38,0x00,0x3F,0x06,0x1E,0x06,0x3F,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0xFE,0x30,0xFE,0x33,0xFE,0x00,0x00,0x00,// +0x00,0x00,0x7C,0x36,0x33,0x7F,0x33,0x33,0x73,0x00,0x00,0x00,// +0x00,0x00,0x1E,0x33,0x00,0x1E,0x33,0x33,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x00,0x33,0x00,0x1E,0x33,0x33,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x00,0x07,0x00,0x1E,0x33,0x33,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x1E,0x33,0x00,0x33,0x33,0x33,0x7E,0x00,0x00,0x00,// +0x00,0x00,0x00,0x07,0x00,0x33,0x33,0x33,0x7E,0x00,0x00,0x00,// +0x00,0x00,0x00,0x33,0x00,0x33,0x33,0x3F,0x30,0x1F,0x00,0x00,// +0x00,0x00,0x63,0x1C,0x3E,0x63,0x63,0x3E,0x1C,0x00,0x00,0x00,// +0x00,0x00,0x33,0x00,0x33,0x33,0x33,0x33,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x18,0x18,0x7E,0x03,0x03,0x7E,0x18,0x18,0x00,0x00,// +0x00,0x00,0x1C,0x36,0x26,0x0F,0x06,0x67,0x3F,0x00,0x00,0x00,// +0x00,0x00,0x33,0x33,0x1E,0x3F,0x0C,0x3F,0x0C,0x00,0x00,0x00,// +0x00,0x00,0x0F,0x1B,0x1B,0x2F,0x33,0x7B,0x33,0x70,0x00,0x00,// +0x00,0x00,0x70,0xD8,0x18,0x7E,0x18,0x18,0x1B,0x0E,0x00,0x00,// +0x00,0x00,0x38,0x00,0x1E,0x30,0x3E,0x33,0x7E,0x00,0x00,0x00,// +0x00,0x00,0x1C,0x00,0x0E,0x0C,0x0C,0x0C,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x00,0x38,0x00,0x1E,0x33,0x33,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x00,0x38,0x00,0x33,0x33,0x33,0x7E,0x00,0x00,0x00,// +0x00,0x00,0x00,0x1F,0x00,0x1F,0x33,0x33,0x33,0x00,0x00,0x00,// +0x00,0x00,0x3F,0x00,0x33,0x37,0x3F,0x3B,0x33,0x00,0x00,0x00,// +0x00,0x00,0x3C,0x36,0x36,0x7C,0x00,0x7E,0x00,0x00,0x00,0x00,// +0x00,0x00,0x3C,0x66,0x66,0x3C,0x00,0x7E,0x00,0x00,0x00,0x00,// +0x00,0x00,0x0C,0x00,0x0C,0x06,0x03,0x33,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0x00,0x3F,0x03,0x03,0x00,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0x00,0x3F,0x30,0x30,0x00,0x00,0x00,0x00,// +0x00,0x00,0x63,0x33,0x1B,0x7C,0xC6,0x73,0x19,0xF8,0x00,0x00,// +0x00,0x00,0x63,0x33,0x1B,0xCF,0xE6,0xF3,0xF9,0xC0,0x00,0x00,// +0x00,0x00,0x00,0x18,0x00,0x18,0x18,0x3C,0x3C,0x18,0x00,0x00,// +0x00,0x00,0x00,0xCC,0x66,0x33,0x66,0xCC,0x00,0x00,0x00,0x00,// +0x00,0x00,0x00,0x33,0x66,0xCC,0x66,0x33,0x00,0x00,0x00,0x00,// +0x44,0x11,0x44,0x11,0x44,0x11,0x44,0x11,0x44,0x11,0x44,0x11,// +0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,// +0xBB,0xEE,0xBB,0xEE,0xBB,0xEE,0xBB,0xEE,0xBB,0xEE,0xBB,0xEE,// +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,// +0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0x18,0x18,0x18,0x18,0x18,// +0x18,0x18,0x18,0x18,0x1F,0x18,0x1F,0x18,0x18,0x18,0x18,0x18,// +0x6C,0x6C,0x6C,0x6C,0x6C,0x6C,0x6F,0x6C,0x6C,0x6C,0x6C,0x6C,// +0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x7C,0x6C,0x6C,0x6C,0x6C,// +0x00,0x00,0x00,0x00,0x0F,0x1C,0x1F,0x18,0x18,0x18,0x18,0x18,// +0x6C,0x6C,0x6C,0x6C,0x67,0x60,0x67,0x6C,0x6C,0x6C,0x6C,0x6C,// +0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,// +0x00,0x00,0x00,0x00,0x1F,0x3F,0x3F,0x3F,0x3E,0x3C,0x3C,0x3C,// +0x3C,0x3C,0x3C,0x3E,0x3F,0x3F,0x3F,0x1F,0x00,0x00,0x00,0x00,// +0x6C,0x6C,0x6C,0x6C,0x6C,0x7C,0x3F,0x00,0x00,0x00,0x00,0x00,// +0x18,0x18,0x18,0x18,0x1F,0x1C,0x0F,0x00,0x00,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0x00,0x0F,0x1F,0x1C,0x18,0x18,0x18,0x18,// +0x18,0x18,0x18,0x18,0x38,0xF8,0xF0,0x00,0x00,0x00,0x00,0x00,// +0x00,0x00,0x18,0x18,0x18,0x18,0xFF,0x00,0x00,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x18,0x18,0x18,0x18,0x18,// +0x18,0x18,0x18,0x18,0x18,0x18,0xF8,0x18,0x18,0x18,0x18,0x18,// +0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,// +0x18,0x18,0x18,0x18,0x18,0x18,0xFF,0x18,0x18,0x18,0x18,0x18,// +0x18,0x18,0x18,0x38,0xD8,0x18,0xD8,0x38,0x18,0x18,0x18,0x18,// +0x6C,0x6C,0x6C,0x6C,0x6C,0x6C,0xEC,0x6C,0x6C,0x6C,0x6C,0x6C,// +0x3C,0x3C,0x3C,0x7C,0xFC,0xFC,0xFC,0xF8,0x00,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0xF8,0xFC,0xFC,0xFC,0x7C,0x3C,0x3C,0x3C,// +0x00,0x00,0x6C,0x6C,0xEF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0xFF,0x00,0xEF,0x6C,0x6C,0x6C,0x00,0x00,// +0x00,0x00,0x6C,0x6C,0xEC,0x0C,0xEC,0x6C,0x6C,0x6C,0x00,0x00,// +0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,// +0x6C,0x6C,0x6C,0x6C,0xEF,0x00,0xEF,0x6C,0x6C,0x6C,0x6C,0x6C,// +0x18,0x18,0x18,0x18,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,// +0x6C,0x6C,0x6C,0x6C,0x6C,0x6C,0xFF,0x00,0x00,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x18,0x18,0x18,0x18,0x18,// +0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x6C,0x6C,0x6C,0x6C,0x6C,// +0x6C,0x6C,0x6C,0x6C,0x6C,0x6C,0xFC,0x00,0x00,0x00,0x00,0x00,// +0x18,0x18,0x18,0x18,0xF8,0x18,0xF8,0x00,0x00,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0xF8,0x18,0xF8,0x18,0x18,0x18,0x18,0x18,// +0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x6C,0x6C,0x6C,0x6C,0x6C,// +0x6C,0x6C,0x6C,0x6C,0x6C,0x6C,0xEF,0x6C,0x6C,0x6C,0x6C,0x6C,// +0x18,0x18,0x18,0x18,0xFF,0x00,0xFF,0x18,0x18,0x18,0x18,0x18,// +0x18,0x18,0x18,0x18,0x1C,0x1F,0x0F,0x00,0x00,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0x00,0xF0,0xF8,0x38,0x18,0x18,0x18,0x18,// +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,// +0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,// +0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,// +0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,// +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0x6E,0x3B,0x13,0x3B,0x6E,0x00,0x00,0x00,// +0x00,0x00,0x00,0x1E,0x33,0x1F,0x33,0x1F,0x03,0x03,0x00,0x00,// +0x00,0x00,0x00,0x7F,0x63,0x03,0x03,0x03,0x03,0x00,0x00,0x00,// +0x00,0x00,0x00,0x7F,0x36,0x36,0x36,0x36,0x36,0x00,0x00,0x00,// +0x00,0x00,0x7F,0x66,0x0C,0x18,0x0C,0x66,0x7F,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0x7E,0x33,0x33,0x33,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x3E,0x06,0x03,0x00,0x00,// +0x00,0x00,0x00,0x6E,0x3B,0x18,0x18,0x18,0x18,0x00,0x00,0x00,// +0x00,0x00,0x3F,0x0C,0x1E,0x33,0x33,0x1E,0x0C,0x3F,0x00,0x00,// +0x00,0x00,0x1C,0x36,0x63,0x7F,0x63,0x36,0x1C,0x00,0x00,0x00,// +0x00,0x00,0x1C,0x36,0x63,0x63,0x36,0x36,0x77,0x00,0x00,0x00,// +0x00,0x00,0x38,0x0C,0x18,0x3E,0x33,0x33,0x1E,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0x7E,0xDB,0xDB,0x7E,0x00,0x00,0x00,0x00,// +0x00,0x00,0x60,0x30,0x7E,0xDB,0xDB,0x7E,0x06,0x03,0x00,0x00,// +0x00,0x00,0x3C,0x06,0x03,0x3F,0x03,0x06,0x3C,0x00,0x00,0x00,// +0x00,0x00,0x1E,0x33,0x33,0x33,0x33,0x33,0x33,0x00,0x00,0x00,// +0x00,0x00,0x00,0x3F,0x00,0x3F,0x00,0x3F,0x00,0x00,0x00,0x00,// +0x00,0x00,0x0C,0x0C,0x3F,0x0C,0x0C,0x00,0x3F,0x00,0x00,0x00,// +0x00,0x00,0x06,0x0C,0x18,0x0C,0x06,0x00,0x3F,0x00,0x00,0x00,// +0x00,0x00,0x18,0x0C,0x06,0x0C,0x18,0x00,0x3F,0x00,0x00,0x00,// +0x00,0x00,0x70,0xD8,0xD8,0x18,0x18,0x18,0x18,0x18,0x00,0x00,// +0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x1B,0x1B,0x1E,0x0C,0x00,// +0x00,0x00,0x0C,0x0C,0x00,0x3F,0x00,0x0C,0x0C,0x00,0x00,0x00,// +0x00,0x00,0x00,0x4E,0x39,0x00,0x4E,0x39,0x00,0x00,0x00,0x00,// +0x00,0x00,0x1C,0x36,0x36,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,// +0x00,0x00,0xF0,0x30,0x30,0x30,0x37,0x36,0x3C,0x38,0x30,0x00,// +0x00,0x00,0x1E,0x36,0x36,0x36,0x36,0x00,0x00,0x00,0x00,0x00,// +0x00,0x00,0x1E,0x30,0x1C,0x06,0x3E,0x00,0x00,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0x3C,0x3C,0x3C,0x3C,0x00,0x00,0x00,0x00,// +0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,// +}; + +U8 sys_font_block_8x12[256*12]= { +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,//�� +0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x6C,0x6C,0x6C,0x6C,0x6C,0x6C,0x6C,0x6C,0x00,0x00,//�� +0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x0C,0xEC,0x6C,0x6C,0x6C,0x00,0x00,//�� +0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x60,0x6F,0x6C,0x6C,0x6C,0x00,0x00,//�� +0x00,0x00,0x18,0x18,0x18,0x18,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6C,0x6C,0xEC,0x0C,0xFC,0x00,0x00,0x00,0x00,0x00,//�� +0x00,0x00,0x18,0x18,0x18,0x18,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6C,0x6C,0x6F,0x60,0x7F,0x00,0x00,0x00,0x00,0x00,//ټ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,// +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x3C,0x3C,0x18,0x18,0x00,0x18,0x00,0x00,0x00,// ! +0x00,0x00,0x36,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6C,0x6C,0xFE,0x6C,0xFE,0x6C,0x6C,0x00,0x00,0x00,//"# +0x00,0x00,0x30,0xFC,0x16,0x7C,0xD0,0x7E,0x18,0x00,0x00,0x00,0x00,0x00,0x06,0x66,0x30,0x18,0x0C,0x66,0x60,0x00,0x00,0x00,//$$% +0x00,0x00,0x1C,0x36,0x36,0x1C,0xB6,0x66,0xDC,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//&' +0x00,0x00,0x30,0x18,0x0C,0x0C,0x0C,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x0C,0x18,0x30,0x30,0x30,0x18,0x0C,0x00,0x00,0x00,//() +0x00,0x00,0x00,0x18,0x7E,0x3C,0x7E,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00,0x00,0x00,//*+ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,//,- +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x30,0x18,0x0C,0x06,0x00,0x00,0x00,0x00,//./ +0x00,0x00,0x3C,0x66,0x76,0x7E,0x6E,0x66,0x3C,0x00,0x00,0x00,0x00,0x00,0x18,0x1C,0x18,0x18,0x18,0x18,0x7E,0x00,0x00,0x00,//01 +0x00,0x00,0x3C,0x66,0x60,0x30,0x18,0x0C,0x7E,0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0x60,0x38,0x60,0x66,0x3C,0x00,0x00,0x00,//23 +0x00,0x00,0x30,0x38,0x3C,0x36,0x7E,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x7E,0x06,0x3E,0x60,0x60,0x66,0x3C,0x00,0x00,0x00,//45 +0x00,0x00,0x38,0x0C,0x06,0x3E,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,0x00,0x7E,0x60,0x30,0x18,0x0C,0x0C,0x0C,0x00,0x00,0x00,//67 +0x00,0x00,0x3C,0x66,0x66,0x3C,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0x66,0x7C,0x60,0x30,0x1C,0x00,0x00,0x00,//89 +0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x0C,0x00,0x00,//:; +0x00,0x00,0x30,0x18,0x0C,0x06,0x0C,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,//<= +0x00,0x00,0x0C,0x18,0x30,0x60,0x30,0x18,0x0C,0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0x30,0x18,0x18,0x00,0x18,0x00,0x00,0x00,//>? +0x00,0x00,0x3C,0x66,0x76,0x56,0x76,0x06,0x3C,0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0x66,0x7E,0x66,0x66,0x66,0x00,0x00,0x00,//@A +0x00,0x00,0x3E,0x66,0x66,0x3E,0x66,0x66,0x3E,0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0x06,0x06,0x06,0x66,0x3C,0x00,0x00,0x00,//BC +0x00,0x00,0x1E,0x36,0x66,0x66,0x66,0x36,0x1E,0x00,0x00,0x00,0x00,0x00,0x7E,0x06,0x06,0x3E,0x06,0x06,0x7E,0x00,0x00,0x00,//DE +0x00,0x00,0x7E,0x06,0x06,0x3E,0x06,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0x06,0x76,0x66,0x66,0x3C,0x00,0x00,0x00,//FG +0x00,0x00,0x66,0x66,0x66,0x7E,0x66,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x7E,0x18,0x18,0x18,0x18,0x18,0x7E,0x00,0x00,0x00,//HI +0x00,0x00,0x7C,0x30,0x30,0x30,0x30,0x36,0x1C,0x00,0x00,0x00,0x00,0x00,0x66,0x36,0x1E,0x0E,0x1E,0x36,0x66,0x00,0x00,0x00,//JK +0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x7E,0x00,0x00,0x00,0x00,0x00,0xC6,0xEE,0xFE,0xD6,0xD6,0xC6,0xC6,0x00,0x00,0x00,//LM +0x00,0x00,0x66,0x66,0x6E,0x7E,0x76,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x66,0x66,0x3C,0x00,0x00,0x00,//NO +0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x56,0x36,0x6C,0x00,0x00,0x00,//PQ +0x00,0x00,0x3E,0x66,0x66,0x3E,0x36,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0x06,0x3C,0x60,0x66,0x3C,0x00,0x00,0x00,//RS +0x00,0x00,0x7E,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3C,0x00,0x00,0x00,//TU +0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x00,0x00,0x00,0xC6,0xC6,0xD6,0xD6,0xFE,0xEE,0xC6,0x00,0x00,0x00,//VW +0x00,0x00,0x66,0x66,0x3C,0x18,0x3C,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x18,0x18,0x00,0x00,0x00,//XY +0x00,0x00,0x7E,0x60,0x30,0x18,0x0C,0x06,0x7E,0x00,0x00,0x00,0x00,0x00,0x3E,0x06,0x06,0x06,0x06,0x06,0x3E,0x00,0x00,0x00,//Z[ +0x00,0x00,0x00,0x06,0x0C,0x18,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x60,0x60,0x60,0x60,0x60,0x7C,0x00,0x00,0x00,//\] +0x00,0x00,0x3C,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,//^_ +0x00,0x00,0x0C,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x60,0x7C,0x66,0x7C,0x00,0x00,0x00,//`a +0x00,0x00,0x06,0x06,0x3E,0x66,0x66,0x66,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0x06,0x66,0x3C,0x00,0x00,0x00,//bc +0x00,0x00,0x60,0x60,0x7C,0x66,0x66,0x66,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0x7E,0x06,0x3C,0x00,0x00,0x00,//de +0x00,0x00,0x38,0x0C,0x0C,0x3E,0x0C,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x66,0x66,0x7C,0x60,0x3C,0x00,0x00,//fg +0x00,0x00,0x06,0x06,0x3E,0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1C,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,//hi +0x00,0x00,0x18,0x00,0x1C,0x18,0x18,0x18,0x18,0x0E,0x00,0x00,0x00,0x00,0x06,0x06,0x66,0x36,0x1E,0x36,0x66,0x00,0x00,0x00,//jk +0x00,0x00,0x1C,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6C,0xFE,0xD6,0xD6,0xC6,0x00,0x00,0x00,//lm +0x00,0x00,0x00,0x00,0x3E,0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00,0x00,0x00,//no +0x00,0x00,0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x66,0x66,0x7C,0x60,0xE0,0x00,0x00,//pq +0x00,0x00,0x00,0x00,0x36,0x6E,0x06,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x06,0x3C,0x60,0x3E,0x00,0x00,0x00,//rs +0x00,0x00,0x0C,0x0C,0x3E,0x0C,0x0C,0x0C,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x7C,0x00,0x00,0x00,//tu +0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0xD6,0xD6,0xFE,0x6C,0x00,0x00,0x00,//vw +0x00,0x00,0x00,0x00,0x66,0x3C,0x18,0x3C,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x7C,0x60,0x3C,0x00,0x00,//xy +0x00,0x00,0x00,0x00,0x7E,0x30,0x18,0x0C,0x7E,0x00,0x00,0x00,0x00,0x00,0x30,0x18,0x18,0x0E,0x18,0x18,0x30,0x00,0x00,0x00,//z{ +0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x0C,0x18,0x18,0x70,0x18,0x18,0x0C,0x00,0x00,0x00,//|} +0x00,0x00,0x8C,0xD6,0x62,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,//~ +0x00,0x00,0x1E,0x33,0x03,0x33,0x1E,0x18,0x30,0x1E,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0x33,0x33,0x33,0x7E,0x00,0x00,0x00,//�� +0x00,0x00,0x38,0x00,0x1E,0x33,0x3F,0x03,0x1E,0x00,0x00,0x00,0x00,0x00,0x7E,0xC3,0x3C,0x60,0x7C,0x66,0xFC,0x00,0x00,0x00,//�� +0x00,0x00,0x33,0x00,0x1E,0x30,0x3E,0x33,0x7E,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x1E,0x30,0x3E,0x33,0x7E,0x00,0x00,0x00,//�� +0x00,0x00,0x0C,0x0C,0x1E,0x30,0x3E,0x33,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x03,0x03,0x3E,0x60,0x3C,0x00,0x00,//�� +0x00,0x00,0x7E,0xC3,0x3C,0x66,0x7E,0x06,0x3C,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0x1E,0x33,0x3F,0x03,0x1E,0x00,0x00,0x00,//�� +0x00,0x00,0x07,0x00,0x1E,0x33,0x3F,0x03,0x1E,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0x0E,0x0C,0x0C,0x0C,0x1E,0x00,0x00,0x00,//�� +0x00,0x00,0x3E,0x63,0x1C,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x0E,0x0C,0x0C,0x0C,0x1E,0x00,0x00,0x00,//�� +0x00,0x00,0x33,0x0C,0x1E,0x33,0x33,0x3F,0x33,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00,0x1E,0x33,0x3F,0x33,0x00,0x00,0x00,//�� +0x00,0x00,0x38,0x00,0x3F,0x06,0x1E,0x06,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x30,0xFE,0x33,0xFE,0x00,0x00,0x00,//�� +0x00,0x00,0x7C,0x36,0x33,0x7F,0x33,0x33,0x73,0x00,0x00,0x00,0x00,0x00,0x1E,0x33,0x00,0x1E,0x33,0x33,0x1E,0x00,0x00,0x00,//�� +0x00,0x00,0x00,0x33,0x00,0x1E,0x33,0x33,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x1E,0x33,0x33,0x1E,0x00,0x00,0x00,//�� +0x00,0x00,0x1E,0x33,0x00,0x33,0x33,0x33,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x33,0x33,0x33,0x7E,0x00,0x00,0x00,//�� +0x00,0x00,0x00,0x33,0x00,0x33,0x33,0x3F,0x30,0x1F,0x00,0x00,0x00,0x00,0x63,0x1C,0x3E,0x63,0x63,0x3E,0x1C,0x00,0x00,0x00,//�� +0x00,0x00,0x33,0x00,0x33,0x33,0x33,0x33,0x1E,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x7E,0x03,0x03,0x7E,0x18,0x18,0x00,0x00,//�� +0x00,0x00,0x1C,0x36,0x26,0x0F,0x06,0x67,0x3F,0x00,0x00,0x00,0x00,0x00,0x33,0x33,0x1E,0x3F,0x0C,0x3F,0x0C,0x00,0x00,0x00,//�� +0x00,0x00,0x0F,0x1B,0x1B,0x2F,0x33,0x7B,0x33,0x70,0x00,0x00,0x00,0x00,0x70,0xD8,0x18,0x7E,0x18,0x18,0x1B,0x0E,0x00,0x00,//�� +0x00,0x00,0x38,0x00,0x1E,0x30,0x3E,0x33,0x7E,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x0E,0x0C,0x0C,0x0C,0x1E,0x00,0x00,0x00,//�� +0x00,0x00,0x00,0x38,0x00,0x1E,0x33,0x33,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x33,0x33,0x33,0x7E,0x00,0x00,0x00,//�� +0x00,0x00,0x00,0x1F,0x00,0x1F,0x33,0x33,0x33,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x33,0x37,0x3F,0x3B,0x33,0x00,0x00,0x00,//�� +0x00,0x00,0x3C,0x36,0x36,0x7C,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0x66,0x3C,0x00,0x7E,0x00,0x00,0x00,0x00,//�� +0x00,0x00,0x0C,0x00,0x0C,0x06,0x03,0x33,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x03,0x03,0x00,0x00,0x00,0x00,//�� +0x00,0x00,0x00,0x00,0x00,0x3F,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x33,0x1B,0x7C,0xC6,0x73,0x19,0xF8,0x00,0x00,//�� +0x00,0x00,0x63,0x33,0x1B,0xCF,0xE6,0xF3,0xF9,0xC0,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x18,0x3C,0x3C,0x18,0x00,0x00,//�� +0x00,0x00,0x00,0xCC,0x66,0x33,0x66,0xCC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x66,0xCC,0x66,0x33,0x00,0x00,0x00,0x00,//�� +0x00,0x00,0x44,0x11,0x44,0x11,0x44,0x11,0x44,0x11,0x00,0x00,0x00,0x00,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0x00,0x00,//�� +0x00,0x00,0xBB,0xEE,0xBB,0xEE,0xBB,0xEE,0xBB,0xEE,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,//�� +0x00,0x00,0x18,0x18,0x18,0x18,0x1F,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x1F,0x18,0x1F,0x18,0x18,0x18,0x00,0x00,//�� +0x00,0x00,0x6C,0x6C,0x6C,0x6C,0x6F,0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x6C,0x6C,0x6C,0x00,0x00,//�� +0x00,0x00,0x00,0x00,0x1F,0x18,0x1F,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x6C,0x6C,0x6F,0x60,0x6F,0x6C,0x6C,0x6C,0x00,0x00,//�� +0x00,0x00,0x6C,0x6C,0x6C,0x6C,0x6C,0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x60,0x6F,0x6C,0x6C,0x6C,0x00,0x00,//�� +0x00,0x00,0x6C,0x6C,0x6F,0x60,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6C,0x6C,0x6C,0x6C,0x7F,0x00,0x00,0x00,0x00,0x00,//�� +0x00,0x00,0x18,0x18,0x1F,0x18,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x18,0x18,0x18,0x00,0x00,//�� +0x00,0x00,0x18,0x18,0x18,0x18,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0xFF,0x00,0x00,0x00,0x00,0x00,//�� +0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0xF8,0x18,0x18,0x18,0x00,0x00,//�� +0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0xFF,0x18,0x18,0x18,0x00,0x00,//�� +0x00,0x00,0x18,0x18,0xF8,0x18,0xF8,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x6C,0x6C,0x6C,0x6C,0xEC,0x6C,0x6C,0x6C,0x00,0x00,//�� +0x00,0x00,0x6C,0x6C,0xEC,0x0C,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x0C,0xEC,0x6C,0x6C,0x6C,0x00,0x00,//�� +0x00,0x00,0x6C,0x6C,0xEF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xEF,0x6C,0x6C,0x6C,0x00,0x00,//�� +0x00,0x00,0x6C,0x6C,0xEC,0x0C,0xEC,0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,//�� +0x00,0x00,0x6C,0x6C,0xEF,0x00,0xEF,0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00,0x18,0x18,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,//�� +0x00,0x00,0x6C,0x6C,0x6C,0x6C,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x18,0x18,0x18,0x00,0x00,//�� +0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00,0x6C,0x6C,0x6C,0x6C,0xFC,0x00,0x00,0x00,0x00,0x00,//�� +0x00,0x00,0x18,0x18,0xF8,0x18,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x18,0xF8,0x18,0x18,0x18,0x00,0x00,//�� +0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00,0x6C,0x6C,0x6C,0x6C,0xEF,0x6C,0x6C,0x6C,0x00,0x00,//�� +0x00,0x00,0x18,0x18,0xFF,0x00,0xFF,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x1F,0x00,0x00,0x00,0x00,0x00,//�� +0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,//�� +0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x00,0x00,//�� +0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,//�� +0x00,0x00,0x00,0x00,0x6E,0x3B,0x13,0x3B,0x6E,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x33,0x1F,0x33,0x1F,0x03,0x03,0x00,0x00,//�� +0x00,0x00,0x00,0x7F,0x63,0x03,0x03,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x36,0x36,0x36,0x36,0x36,0x00,0x00,0x00,//�� +0x00,0x00,0x7F,0x66,0x0C,0x18,0x0C,0x66,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x33,0x33,0x33,0x1E,0x00,0x00,0x00,//�� +0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x3E,0x06,0x03,0x00,0x00,0x00,0x00,0x00,0x6E,0x3B,0x18,0x18,0x18,0x18,0x00,0x00,0x00,//�� +0x00,0x00,0x3F,0x0C,0x1E,0x33,0x33,0x1E,0x0C,0x3F,0x00,0x00,0x00,0x00,0x1C,0x36,0x63,0x7F,0x63,0x36,0x1C,0x00,0x00,0x00,//�� +0x00,0x00,0x1C,0x36,0x63,0x63,0x36,0x36,0x77,0x00,0x00,0x00,0x00,0x00,0x38,0x0C,0x18,0x3E,0x33,0x33,0x1E,0x00,0x00,0x00,//�� +0x00,0x00,0x00,0x00,0x7E,0xDB,0xDB,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x30,0x7E,0xDB,0xDB,0x7E,0x06,0x03,0x00,0x00,//�� +0x00,0x00,0x3C,0x06,0x03,0x3F,0x03,0x06,0x3C,0x00,0x00,0x00,0x00,0x00,0x1E,0x33,0x33,0x33,0x33,0x33,0x33,0x00,0x00,0x00,//�� +0x00,0x00,0x00,0x3F,0x00,0x3F,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x3F,0x0C,0x0C,0x00,0x3F,0x00,0x00,0x00,//�� +0x00,0x00,0x06,0x0C,0x18,0x0C,0x06,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x18,0x0C,0x06,0x0C,0x18,0x00,0x3F,0x00,0x00,0x00,//�� +0x00,0x00,0x70,0xD8,0xD8,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x1B,0x1B,0x0E,0x00,0x00,//�� +0x00,0x00,0x0C,0x0C,0x00,0x3F,0x00,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x4E,0x39,0x00,0x4E,0x39,0x00,0x00,0x00,0x00,//�� +0x00,0x00,0x1C,0x36,0x36,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,//�� +0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x30,0x30,0x30,0x37,0x36,0x3C,0x38,0x00,0x00,//�� +0x00,0x00,0x1E,0x36,0x36,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x30,0x1C,0x06,0x3E,0x00,0x00,0x00,0x00,0x00,//�� +0x00,0x00,0x00,0x00,0x3C,0x3C,0x3C,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,//�� +}; diff --git a/src/Kernel/KMain.ZC b/src/Kernel/KMain.ZC index 771ae09c..18c9f88d 100755 --- a/src/Kernel/KMain.ZC +++ b/src/Kernel/KMain.ZC @@ -72,9 +72,8 @@ U0 SysGrInit() { I64 i; - text.font = sys_font_std; - - text.aux_font = sys_font_aux; + text.font = SYS_FONT_STD; + text.aux_font = SYS_FONT_AUX; //patch some chars text.aux_font[10] = text.font[10]; //"Return" symbol diff --git a/src/Kernel/Kernel.PRJ b/src/Kernel/Kernel.PRJ index 9487a413..6b7bf4b2 100755 --- a/src/Kernel/Kernel.PRJ +++ b/src/Kernel/Kernel.PRJ @@ -31,6 +31,7 @@ #include "Memory/MakeMemory" #include "FontStd" #include "FontAux" +#include "FontStd8x12" #include "StrB" #include "KHashA" #include "KInterrupts" diff --git a/src/Kernel/KernelA.HH b/src/Kernel/KernelA.HH index 2f22b54f..150e9718 100755 --- a/src/Kernel/KernelA.HH +++ b/src/Kernel/KernelA.HH @@ -4290,6 +4290,16 @@ public class CTextGlobals #define FONT_WIDTH 8 #define FONT_HEIGHT 8 +#define SYS_FONT_STD sys_font_std +#define SYS_FONT_AUX sys_font_aux + +/** Uncomment below to switch to an 8x12 font +The Kernel will need to be rebuilt after the change with BootHDIns + */ +//#define FONT_WIDTH 8 +//#define FONT_HEIGHT 12 +//#define SYS_FONT_STD sys_font_lat0_8x12 +//#define SYS_FONT_AUX sys_font_block_8x12 #help_index "Graphics" //z-values less than zero are in front of screen and not drawn. diff --git a/src/System/Gr/GrAsm.ZC b/src/System/Gr/GrAsm.ZC index 92ebe9ad..69c92f7e 100755 --- a/src/System/Gr/GrAsm.ZC +++ b/src/System/Gr/GrAsm.ZC @@ -145,155 +145,40 @@ _DC_BLOT_COLOR4:: POP RSI POP RBP RET1 32 -//************************************ -_IS_PIX_COVERED0:: - PUSH RBP - MOV RBP, RSP -#assert FONT_WIDTH == FONT_HEIGHT == 8 - MOV RCX, U64 SF_ARG3[RBP] - SAR RCX, 3 - MOV RAX, U64 SF_ARG2[RBP] - SAR RAX, 3 - MOV RDX, U64 SF_ARG1[RBP] - IMUL2 RCX, TEXT_COLS - MOV RBX, U64 [&gr.win_z_buf] - MOV DX, U16 CTask.win_z_num[RDX] - ADD RCX, RAX - XOR RAX, RAX - CMP DX, U16 [RBX + RCX * 2] - JAE @@05 //Jump not covered - INC RAX -@@05: POP RBP - RET1 24 -//************************************ -_GR_ROP_EQU_U8_NO_CLIPPING:: -//Puts foreground char shape onto gr.dc2. -//ch.u8[1] is color as a whole byte -//ch ATTRf_UNDERLINE attr flag is used. - PUSH RBP - MOV RBP, RSP - MOVZX RAX, U8 SF_ARG1[RBP] - MOV RDX, U64 [&text.font] - MOV RAX, U64 [RDX + RAX * 8] //RAX is 8x8 char font data, 64-bits - BT U64 SF_ARG1[RBP], ATTRf_UNDERLINE - JNC @@05 - MOV RBX, 0xFF00000000000000 - OR RAX, RBX -@@05: TEST RAX, RAX - JZ I32 @@10 +} - PUSH RSI - PUSH RDI - MOVZX RBX, U8 SF_ARG1 + 1[RBP] //Warning color is 8-bit - MOV RDX, U64 [&gr.to_8_colors] - MOV R8, U64 [RDX + RBX * 8] //R8 is color repeated 8 times. - MOV R9, U64 SF_ARG3[RBP] //R9 is width_internal - MOV RDI, U64 SF_ARG2[RBP] - MOV RSI, U64 [&gr.to_8_bits] //RSI is gr.to_8_bits +U0 GrRopEquU8NoClipping(I64 ch, U8 reg *dst, I64 width_internal) +{ // render the Font to the Display contexts frame buffer + U8 *fontPointer = text.font(U8*) + ((ch & &0xFF) * FONT_HEIGHT), + reg fgColor = ch.u8[1]; + U64 ix = FONT_WIDTH -1, i = 0, colInc = width_internal - FONT_WIDTH; -// m=my_1_to_8_bits[ch&255];ch>>=8; -// *dst=*dst&~m|c&m; -// dst(U8 *)+=w1; + for (; i < FONT_WIDTH * FONT_HEIGHT; i++) { + if (Bt(fontPointer, i)) { + *dst = fgColor; + } + dst++; - MOVZX RBX, AL - MOV RDX, U64 [RSI + RBX * 8] - SHR RAX, 8 - MOV RBX, U64 [RDI] - MOV RCX, RDX - NOT RCX - AND RDX, R8 - AND RCX, RBX - OR RCX, RDX - MOV U64 [RDI], RCX - ADD RDI, R9 + if (i & ix == ix) { + dst += colInc; + } + } - MOVZX RBX, AL - MOV RDX, U64 [RSI + RBX * 8] - SHR RAX, 8 - MOV RBX, U64 [RDI] - MOV RCX, RDX - NOT RCX - AND RDX, R8 - AND RCX, RBX - OR RCX, RDX - MOV U64 [RDI], RCX - ADD RDI, R9 + if (ch & ATTRF_UNDERLINE && DISPLAY_UNDERLINE) { + dst -= width_internal; + for (i = 0; i < FONT_WIDTH; i++, dst++) { + *dst = fgColor; + } + } - MOVZX RBX, AL - MOV RDX, U64 [RSI + RBX * 8] - SHR RAX, 8 - MOV RBX, U64 [RDI] - MOV RCX, RDX - NOT RCX - AND RDX, R8 - AND RCX, RBX - OR RCX, RDX - MOV U64 [RDI], RCX - ADD RDI, R9 +} - MOVZX RBX, AL - MOV RDX, U64 [RSI + RBX * 8] - SHR RAX, 8 - MOV RBX, U64 [RDI] - MOV RCX, RDX - NOT RCX - AND RDX, R8 - AND RCX, RBX - OR RCX, RDX - MOV U64 [RDI], RCX - ADD RDI, R9 +Bool IsPixCovered0(CTask *task, I64 x, I64 y)//No clipping +{// No Clipping + U64 offset = (y / FONT_HEIGHT) * TEXT_COLS + (x / FONT_WIDTH); - MOVZX RBX, AL - MOV RDX, U64 [RSI + RBX * 8] - SHR RAX, 8 - MOV RBX, U64 [RDI] - MOV RCX, RDX - NOT RCX - AND RDX, R8 - AND RCX, RBX - OR RCX, RDX - MOV U64 [RDI], RCX - ADD RDI, R9 + // is this the task drawing this char + return gr.win_z_buf[offset] == (task->win_z_num -1); +} - MOVZX RBX, AL - MOV RDX, U64 [RSI + RBX * 8] - SHR RAX, 8 - MOV RBX, U64 [RDI] - MOV RCX, RDX - NOT RCX - AND RDX, R8 - AND RCX, RBX - OR RCX, RDX - MOV U64 [RDI], RCX - ADD RDI, R9 - - MOVZX RBX, AL - MOV RDX, U64 [RSI + RBX * 8] - SHR RAX, 8 - MOV RBX, U64 [RDI] - MOV RCX, RDX - NOT RCX - AND RDX, R8 - AND RCX, RBX - OR RCX, RDX - MOV U64 [RDI], RCX - ADD RDI, R9 - - MOV RDX, U64 [RSI + RAX * 8] - MOV RBX, U64 [RDI] - MOV RCX, RDX - NOT RCX - AND RDX, R8 - AND RCX, RBX - OR RCX, RDX - MOV U64 [RDI], RCX - - POP RDI - POP RSI -@@10: POP RBP - RET1 24 -}; - -_extern _GR_ROP_EQU_U8_NO_CLIPPING U0 GrRopEquU8NoClipping(I64 ch, U8 *dst, I64 width_internal); -public _extern _IS_PIX_COVERED0 Bool IsPixCovered0(CTask *task, I64 x, I64 y);//No clipping _extern _DC_BLOT_COLOR4 U0 DCBlotColor4(U8 *dst, I64 *img, I64 *img_cache, I64 count); diff --git a/src/System/Gr/GrGlobals.ZC b/src/System/Gr/GrGlobals.ZC index ed308a54..74efea1f 100755 --- a/src/System/Gr/GrGlobals.ZC +++ b/src/System/Gr/GrGlobals.ZC @@ -56,3 +56,7 @@ DefinePrint("TEXT_ROWS", "%d", text.rows);; HashPublic("TEXT_ROWS", HTT_DEFINE_STR);; DefinePrint("TEXT_COLS", "%d", text.cols);; HashPublic("TEXT_COLS", HTT_DEFINE_STR);; + +DefinePrint("DISPLAY_UNDERLINE", "%d", 1);; +HashPublic("DISPLAY_UNDERLINE", HTT_DEFINE_STR);; + diff --git a/src/System/Gr/GrScreen.ZC b/src/System/Gr/GrScreen.ZC index dcfd93a9..9daa0dae 100755 --- a/src/System/Gr/GrScreen.ZC +++ b/src/System/Gr/GrScreen.ZC @@ -177,16 +177,17 @@ U0 GrZoomInScreen() U0 GrUpdateTextBG() { - I64 reg RSI *dst = gr.dc2->body, reg R13 c, row, col, + I64 reg *dst = gr.dc2->body, row, col, num_rows = TEXT_ROWS, num_cols = TEXT_COLS, i, j, cur_ch, - reg R12 w1 = gr.dc2->width_internal, w2 = -7 * w1 + 8, w3 = 7 * w1, w4 = 0; - U32 *src = gr.text_base; + reg w1 = gr.dc2->width_internal, + w3 = (FONT_HEIGHT - 1) * w1, w4 = 0; + U32 *src = gr.text_base, ix =0, iy =0; Bool blink_flag = Blink; - U8 *dst2 = dst; + U8 *dst2 = dst, bgColor, reg *dstTmp; if (gr.pan_text_x || gr.hide_col) { - gr.pan_text_x = ClampI64(gr.pan_text_x, -7, 7); + gr.pan_text_x = ClampI64(gr.pan_text_x, -(FONT_WIDTH - 1), (FONT_WIDTH - 1)); j = AbsI64(gr.pan_text_x) / FONT_WIDTH + 1; num_cols -= j; if (gr.pan_text_x < 0) @@ -215,7 +216,7 @@ U0 GrUpdateTextBG() if (gr.pan_text_y || gr.hide_row) { - gr.pan_text_y = ClampI64(gr.pan_text_y, -7, 7); + gr.pan_text_y = ClampI64(gr.pan_text_y, -(FONT_HEIGHT - 1), (FONT_HEIGHT - 1)); j = AbsI64(gr.pan_text_y) / FONT_HEIGHT + 1; num_rows -= j; if (gr.pan_text_y < 0) @@ -251,23 +252,12 @@ U0 GrUpdateTextBG() if (cur_ch & ATTRF_BLINK && blink_flag) cur_ch.u8[1] = cur_ch.u8[1] << 4 + cur_ch.u8[1] >> 4; } - c = gr.to_8_colors[cur_ch.u8[1] >> 4]; - MOV U64 [RSI], R13 - ADD RSI, R12 - MOV U64 [RSI], R13 - ADD RSI, R12 - MOV U64 [RSI], R13 - ADD RSI, R12 - MOV U64 [RSI], R13 - ADD RSI, R12 - MOV U64 [RSI], R13 - ADD RSI, R12 - MOV U64 [RSI], R13 - ADD RSI, R12 - MOV U64 [RSI], R13 - ADD RSI, R12 - MOV U64 [RSI], R13 - dst(U8 *) += w2; + bgColor = cur_ch.u8[1] >> 4; + dstTmp = dst(U8*); + for (iy = 0; iy < FONT_HEIGHT; iy++, dstTmp += GR_WIDTH - FONT_WIDTH) { + for (ix = 0; ix < FONT_WIDTH; ix++, *dstTmp++ = bgColor); + } + dst(U8*) += FONT_WIDTH; } src += w4; dst(U8 *) += w3; @@ -277,14 +267,14 @@ U0 GrUpdateTextBG() U0 GrUpdateTextFG() {//See $LK,"TextBase Layer",A="HI:TextBase Layer"$. U32 *src = gr.text_base; - I64 i, j, cur_ch, *dst = gr.dc2->body, w1 = gr.dc2->width_internal, w2 = 7 * w1, w4 = 0, + I64 i, j, cur_ch, *dst = gr.dc2->body, w1 = gr.dc2->width_internal, w2 = (FONT_HEIGHT - 1) * w1, w4 = 0, num_rows = TEXT_ROWS, num_cols = TEXT_COLS, row, col; - U8 *dst_start = gr.dc2->body, *dst_end = dst_start + w1 * gr.dc2->height - 7 * w1 - 8; + U8 *dst_start = gr.dc2->body, *dst_end = dst_start + w1 * gr.dc2->height - (FONT_HEIGHT - 1) * w1 - FONT_WIDTH; Bool blink_flag = Blink; if (gr.pan_text_x || gr.hide_col) { - gr.pan_text_x = ClampI64(gr.pan_text_x, -7, 7); + gr.pan_text_x = ClampI64(gr.pan_text_x, -(FONT_WIDTH - 1), (FONT_WIDTH - 1)); j = AbsI64(gr.pan_text_x) / FONT_WIDTH + 1; num_cols -= j; if (gr.pan_text_x < 0) @@ -298,7 +288,7 @@ U0 GrUpdateTextFG() if (gr.pan_text_y || gr.hide_row) { - gr.pan_text_y = ClampI64(gr.pan_text_y, -7, 7); + gr.pan_text_y = ClampI64(gr.pan_text_y, -(FONT_HEIGHT - 1), (FONT_HEIGHT - 1)); j = AbsI64(gr.pan_text_y) / FONT_HEIGHT + 1; num_rows -= j; if (gr.pan_text_y < 0) @@ -335,7 +325,7 @@ U0 GrUpdateTextFG() } else GrRopEquU8NoClipping(cur_ch & (ATTRF_UNDERLINE + 0xFFF), dst, w1); - dst(U8 *) += 8; + dst(U8 *) += FONT_WIDTH; } src += w4; dst(U8 *) += w2; From d4d937743af7a6c1a6c35770cf753ad72f4e81df Mon Sep 17 00:00:00 2001 From: Slapparoo Date: Sat, 28 Jan 2023 08:15:43 +1300 Subject: [PATCH 2/2] Correct font --- src/Demo/Graphics/32BitPaint.ZC | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Demo/Graphics/32BitPaint.ZC b/src/Demo/Graphics/32BitPaint.ZC index eaa2b86d..12cba665 100755 --- a/src/Demo/Graphics/32BitPaint.ZC +++ b/src/Demo/Graphics/32BitPaint.ZC @@ -44,9 +44,11 @@ I0 DrawScreenChar(I64 x, I64 y, I64 char) { I64 i, j; + U8 *fontPointer = text.font(U8*) + (char & 0xFF) * FONT_HEIGHT; + for (i = 0; i < FONT_HEIGHT; i++) for (j = 0; j < FONT_WIDTH; j++) - if ((text.font[char] >> (i * 8)) & (1 << j)) + if (Bt(fontPointer, i * FONT_WIDTH + j)) DrawScreenPixel(x + j, y + i, BLACK32); }