Loading files
/**
* \file
* \brief High level display source file.
*
* Contains functions to write and draw on the display.
* All functions don't modify the actual display content
* but rather the internal display buffer from display.h
*/
#include "screen.h"
const char font12x16[256][24] = { { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00 }, // 0x00
{ 0x00, 0x00, 0x03, 0xF0, 0x0C, 0x0C, 0x10, 0x02, 0x11, 0x32, 0x22,
0x31, 0x22, 0x01, 0x22, 0x31, 0x11, 0x32, 0x10, 0x02, 0x0C,
0x0C, 0x03, 0xF0 }, // 0x01
{ 0x00, 0x00, 0x03, 0xF0, 0x0F, 0xFC, 0x1F, 0xFE, 0x1E, 0xCE, 0x3D,
0xCF, 0x3D, 0xFF, 0x3D, 0xCF, 0x1E, 0xCE, 0x1F, 0xFE, 0x0F,
0xFC, 0x03, 0xF0 }, // 0x02
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x01, 0xF8, 0x03, 0xF8, 0x07,
0xF0, 0x0F, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x01, 0xF8, 0x00,
0xF0, 0x00, 0x00 }, // 0x03
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xC0, 0x03, 0xE0, 0x07,
0xF0, 0x0F, 0xF8, 0x07, 0xF0, 0x03, 0xE0, 0x01, 0xC0, 0x00,
0x80, 0x00, 0x00 }, // 0x04
{ 0x00, 0x00, 0x03, 0x80, 0x07, 0xC0, 0x07, 0xC0, 0x13, 0xB8, 0x1B,
0xFC, 0x1F, 0xFC, 0x1B, 0xFC, 0x13, 0xB8, 0x07, 0xC0, 0x07,
0xC0, 0x03, 0x80 }, // 0x05
{ 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x07, 0xC0, 0x17, 0xE0, 0x1B,
0xF0, 0x1F, 0xFC, 0x1B, 0xF0, 0x17, 0xE0, 0x07, 0xC0, 0x03,
0x80, 0x00, 0x00 }, // 0x06
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x07
{ 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, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x09
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x0A
{ 0x00, 0x00, 0x03, 0x80, 0x07, 0xC0, 0x0C, 0x60, 0x08, 0x20, 0x08,
0x20, 0x0C, 0x60, 0x07, 0xC8, 0x03, 0xA8, 0x00, 0x18, 0x00,
0x78, 0x00, 0x00 }, // 0x0B
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x08, 0xF8, 0x09,
0x8C, 0x3F, 0x04, 0x3F, 0x04, 0x09, 0x8C, 0x08, 0xF8, 0x00,
0x70, 0x00, 0x00 }, // 0x0C
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x0D
{ 0x00, 0x00, 0x06, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x07, 0xFF, 0x00,
0x33, 0x30, 0x66, 0x78, 0xCC, 0x79, 0x98, 0x3F, 0xF0, 0x00,
0x00, 0x00, 0x00 }, // 0x0E
{ 0x00, 0x00, 0x00, 0x80, 0x09, 0xC8, 0x07, 0xF0, 0x06, 0x30, 0x0C,
0x18, 0x3C, 0x1E, 0x0C, 0x18, 0x06, 0x30, 0x07, 0xF0, 0x09,
0xC8, 0x00, 0x80 }, // 0x0F
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x0F, 0xF8, 0x07,
0xF0, 0x03, 0xE0, 0x01, 0xC0, 0x00, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x10
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xC0, 0x03,
0xE0, 0x07, 0xF0, 0x0F, 0xF8, 0x1F, 0xFC, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x11
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x0C, 0x18, 0x1C,
0x1C, 0x3F, 0xFE, 0x1C, 0x1C, 0x0C, 0x18, 0x04, 0x10, 0x00,
0x00, 0x00, 0x00 }, // 0x12
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xFE, 0x37, 0xFE, 0x00,
0x00, 0x00, 0x00, 0x37, 0xFE, 0x37, 0xFE, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x13
{ 0x00, 0x00, 0x00, 0x38, 0x00, 0x7C, 0x00, 0xC6, 0x00, 0x82, 0x3F,
0xFE, 0x3F, 0xFE, 0x00, 0x02, 0x3F, 0xFE, 0x3F, 0xFE, 0x00,
0x02, 0x00, 0x00 }, // 0x14
{ 0x00, 0x00, 0x00, 0x00, 0x08, 0xDC, 0x19, 0xFE, 0x11, 0x22, 0x11,
0x22, 0x11, 0x22, 0x11, 0x22, 0x1F, 0xE6, 0x0E, 0xC4, 0x00,
0x00, 0x00, 0x00 }, // 0x15
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38,
0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38,
0x00, 0x00, 0x00 }, // 0x16
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x08, 0x4C, 0x0C, 0x5C,
0x0E, 0x7F, 0xFF, 0x5C, 0x0E, 0x4C, 0x0C, 0x44, 0x08, 0x00,
0x00, 0x00, 0x00 }, // 0x17
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x18, 0x00,
0x1C, 0x3F, 0xFE, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x10, 0x00,
0x00, 0x00, 0x00 }, // 0x18
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0C, 0x00, 0x1C,
0x00, 0x3F, 0xFE, 0x1C, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x19
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00,
0x80, 0x00, 0x80, 0x07, 0xF0, 0x03, 0xE0, 0x01, 0xC0, 0x00,
0x80, 0x00, 0x00 }, // 0x1A
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xC0, 0x03, 0xE0, 0x07,
0xF0, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00,
0x80, 0x00, 0x00 }, // 0x1B
{ 0x00, 0x00, 0x3F, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20,
0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20,
0x00, 0x00, 0x00 }, // 0x1C
{ 0x00, 0x00, 0x00, 0x80, 0x01, 0xC0, 0x03, 0xE0, 0x07, 0xF0, 0x00,
0x80, 0x00, 0x80, 0x00, 0x80, 0x07, 0xF0, 0x03, 0xE0, 0x01,
0xC0, 0x00, 0x80 }, // 0x1D
{ 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x07, 0x00, 0x07, 0x80, 0x07,
0xC0, 0x07, 0xE0, 0x07, 0xC0, 0x07, 0x80, 0x07, 0x00, 0x06,
0x00, 0x04, 0x00 }, // 0x1E
{ 0x00, 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0xE0, 0x01, 0xE0, 0x03,
0xE0, 0x07, 0xE0, 0x03, 0xE0, 0x01, 0xE0, 0x00, 0xE0, 0x00,
0x60, 0x00, 0x20 }, // 0x1F
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x20
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x33,
0xFF, 0x33, 0xFF, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x21
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x3C, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x22
{ 0x00, 0x00, 0x02, 0x00, 0x1E, 0x10, 0x1F, 0x90, 0x03, 0xF0, 0x02,
0x7E, 0x1E, 0x1E, 0x1F, 0x90, 0x03, 0xF0, 0x02, 0x7E, 0x00,
0x1E, 0x00, 0x10 }, // 0x23
{ 0x00, 0x00, 0x00, 0x00, 0x04, 0x78, 0x0C, 0xFC, 0x0C, 0xCC, 0x3F,
0xFF, 0x3F, 0xFF, 0x0C, 0xCC, 0x0F, 0xCC, 0x07, 0x88, 0x00,
0x00, 0x00, 0x00 }, // 0x24
{ 0x00, 0x00, 0x30, 0x00, 0x38, 0x38, 0x1C, 0x38, 0x0E, 0x38, 0x07,
0x00, 0x03, 0x80, 0x01, 0xC0, 0x38, 0xE0, 0x38, 0x70, 0x38,
0x38, 0x00, 0x1C }, // 0x25
{ 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x3F, 0xB8, 0x31, 0xFC, 0x21,
0xC6, 0x37, 0xE2, 0x1E, 0x3E, 0x1C, 0x1C, 0x36, 0x00, 0x22,
0x00, 0x00, 0x00 }, // 0x26
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00,
0x3F, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x27
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x0F, 0xFC, 0x1F,
0xFE, 0x38, 0x07, 0x20, 0x01, 0x20, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x28
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x20, 0x01, 0x38,
0x07, 0x1F, 0xFE, 0x0F, 0xFC, 0x03, 0xF0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x29
{ 0x00, 0x00, 0x00, 0x00, 0x0C, 0x98, 0x0E, 0xB8, 0x03, 0xE0, 0x0F,
0xF8, 0x0F, 0xF8, 0x03, 0xE0, 0x0E, 0xB8, 0x0C, 0x98, 0x00,
0x00, 0x00, 0x00 }, // 0x2A
{ 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x0F,
0xF0, 0x0F, 0xF0, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x00,
0x00, 0x00, 0x00 }, // 0x2B
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x00, 0xF8,
0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x2C
{ 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x00,
0x00, 0x00, 0x00 }, // 0x2D
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x38,
0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x2E
{ 0x00, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03,
0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00,
0x1C, 0x00, 0x0E }, // 0x2F
{ 0x00, 0x00, 0x07, 0xF8, 0x1F, 0xFE, 0x1E, 0x06, 0x33, 0x03, 0x31,
0x83, 0x30, 0xC3, 0x30, 0x63, 0x30, 0x33, 0x18, 0x1E, 0x1F,
0xFE, 0x07, 0xF8 }, // 0x30
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0C, 0x30, 0x0C, 0x30,
0x0E, 0x3F, 0xFF, 0x3F, 0xFF, 0x30, 0x00, 0x30, 0x00, 0x30,
0x00, 0x00, 0x00 }, // 0x31
{ 0x00, 0x00, 0x30, 0x1C, 0x38, 0x1E, 0x3C, 0x07, 0x3E, 0x03, 0x37,
0x03, 0x33, 0x83, 0x31, 0xC3, 0x30, 0xE3, 0x30, 0x77, 0x30,
0x3E, 0x30, 0x1C }, // 0x32
{ 0x00, 0x00, 0x0C, 0x0C, 0x1C, 0x0E, 0x38, 0x07, 0x30, 0xC3, 0x30,
0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x39, 0xE7, 0x1F,
0x7E, 0x0E, 0x3C }, // 0x33
{ 0x00, 0x00, 0x03, 0xC0, 0x03, 0xE0, 0x03, 0x70, 0x03, 0x38, 0x03,
0x1C, 0x03, 0x0E, 0x03, 0x07, 0x3F, 0xFF, 0x3F, 0xFF, 0x03,
0x00, 0x03, 0x00 }, // 0x34
{ 0x00, 0x00, 0x0C, 0x3F, 0x1C, 0x7F, 0x38, 0x63, 0x30, 0x63, 0x30,
0x63, 0x30, 0x63, 0x30, 0x63, 0x30, 0x63, 0x38, 0xE3, 0x1F,
0xC3, 0x0F, 0x83 }, // 0x35
{ 0x00, 0x00, 0x0F, 0xC0, 0x1F, 0xF0, 0x39, 0xF8, 0x30, 0xDC, 0x30,
0xCE, 0x30, 0xC7, 0x30, 0xC3, 0x30, 0xC3, 0x39, 0xC3, 0x1F,
0x80, 0x0F, 0x00 }, // 0x36
{ 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x30, 0x03, 0x3C,
0x03, 0x0F, 0x03, 0x03, 0xC3, 0x00, 0xF3, 0x00, 0x3F, 0x00,
0x0F, 0x00, 0x03 }, // 0x37
{ 0x00, 0x00, 0x0F, 0x00, 0x1F, 0xBC, 0x39, 0xFE, 0x30, 0xE7, 0x30,
0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xE7, 0x39, 0xFE, 0x1F,
0xBC, 0x0F, 0x00 }, // 0x38
{ 0x00, 0x00, 0x00, 0x3C, 0x00, 0x7E, 0x30, 0xE7, 0x30, 0xC3, 0x30,
0xC3, 0x38, 0xC3, 0x1C, 0xC3, 0x0E, 0xC3, 0x07, 0xE7, 0x03,
0xFE, 0x00, 0xFC }, // 0x39
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x70, 0x1C,
0x70, 0x1C, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x3A
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x70, 0xFC,
0x70, 0x7C, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x3B
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x01, 0xE0, 0x03, 0xF0, 0x07,
0x38, 0x0E, 0x1C, 0x1C, 0x0E, 0x38, 0x07, 0x30, 0x03, 0x00,
0x00, 0x00, 0x00 }, // 0x3C
{ 0x00, 0x00, 0x00, 0x00, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06,
0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06,
0x60, 0x00, 0x00 }, // 0x3D
{ 0x00, 0x00, 0x00, 0x00, 0x30, 0x03, 0x38, 0x07, 0x1C, 0x0E, 0x0E,
0x1C, 0x07, 0x38, 0x03, 0xF0, 0x01, 0xE0, 0x00, 0xC0, 0x00,
0x00, 0x00, 0x00 }, // 0x3E
{ 0x00, 0x00, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0x37,
0x83, 0x37, 0xC3, 0x00, 0xE3, 0x00, 0x77, 0x00, 0x3E, 0x00,
0x1C, 0x00, 0x00 }, // 0x3F
{ 0x00, 0x00, 0x0F, 0xF8, 0x1F, 0xFE, 0x18, 0x07, 0x33, 0xF3, 0x37,
0xFB, 0x36, 0x1B, 0x37, 0xFB, 0x37, 0xFB, 0x36, 0x07, 0x03,
0xFE, 0x01, 0xF8 }, // 0x40
{ 0x00, 0x00, 0x38, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x06, 0xFC, 0x06,
0x1F, 0x06, 0x1F, 0x06, 0xFC, 0x07, 0xE0, 0x3F, 0x00, 0x38,
0x00, 0x00, 0x00 }, // 0x41
{ 0x00, 0x00, 0x3F, 0xFF, 0x3F, 0xFF, 0x30, 0xC3, 0x30, 0xC3, 0x30,
0xC3, 0x30, 0xC3, 0x30, 0xE7, 0x39, 0xFE, 0x1F, 0xBC, 0x0F,
0x00, 0x00, 0x00 }, // 0x42
{ 0x00, 0x00, 0x03, 0xF0, 0x0F, 0xFC, 0x1C, 0x0E, 0x38, 0x07, 0x30,
0x03, 0x30, 0x03, 0x30, 0x03, 0x38, 0x07, 0x1C, 0x0E, 0x0C,
0x0C, 0x00, 0x00 }, // 0x43
{ 0x00, 0x00, 0x3F, 0xFF, 0x3F, 0xFF, 0x30, 0x03, 0x30, 0x03, 0x30,
0x03, 0x30, 0x03, 0x38, 0x07, 0x1C, 0x0E, 0x0F, 0xFC, 0x03,
0xF0, 0x00, 0x00 }, // 0x44
{ 0x00, 0x00, 0x3F, 0xFF, 0x3F, 0xFF, 0x30, 0xC3, 0x30, 0xC3, 0x30,
0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0x03, 0x30,
0x03, 0x00, 0x00 }, // 0x45
{ 0x00, 0x00, 0x3F, 0xFF, 0x3F, 0xFF, 0x00, 0xC3, 0x00, 0xC3, 0x00,
0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0x03, 0x00,
0x03, 0x00, 0x00 }, // 0x46
{ 0x00, 0x00, 0x03, 0xF0, 0x0F, 0xFC, 0x1C, 0x0E, 0x38, 0x07, 0x30,
0x03, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x3F, 0xC7, 0x3F,
0xC6, 0x00, 0x00 }, // 0x47
{ 0x00, 0x00, 0x3F, 0xFF, 0x3F, 0xFF, 0x00, 0xC0, 0x00, 0xC0, 0x00,
0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x3F, 0xFF, 0x3F,
0xFF, 0x00, 0x00 }, // 0x48
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x03, 0x30, 0x03, 0x3F,
0xFF, 0x3F, 0xFF, 0x30, 0x03, 0x30, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x49
{ 0x00, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30,
0x00, 0x30, 0x00, 0x30, 0x00, 0x38, 0x00, 0x1F, 0xFF, 0x07,
0xFF, 0x00, 0x00 }, // 0x4A
{ 0x00, 0x00, 0x3F, 0xFF, 0x3F, 0xFF, 0x00, 0xC0, 0x01, 0xE0, 0x03,
0xF0, 0x07, 0x38, 0x0E, 0x1C, 0x1C, 0x0E, 0x38, 0x07, 0x30,
0x03, 0x00, 0x00 }, // 0x4B
{ 0x00, 0x00, 0x3F, 0xFF, 0x3F, 0xFF, 0x30, 0x00, 0x30, 0x00, 0x30,
0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30,
0x00, 0x00, 0x00 }, // 0x4C
{ 0x00, 0x00, 0x3F, 0xFF, 0x3F, 0xFF, 0x00, 0x1E, 0x00, 0x78, 0x01,
0xE0, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x3F, 0xFF, 0x3F,
0xFF, 0x00, 0x00 }, // 0x4D
{ 0x00, 0x00, 0x3F, 0xFF, 0x3F, 0xFF, 0x00, 0x0E, 0x00, 0x38, 0x00,
0xF0, 0x03, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x3F, 0xFF, 0x3F,
0xFF, 0x00, 0x00 }, // 0x4E
{ 0x00, 0x00, 0x03, 0xF0, 0x0F, 0xFC, 0x1C, 0x0E, 0x38, 0x07, 0x30,
0x03, 0x30, 0x03, 0x38, 0x07, 0x1C, 0x0E, 0x0F, 0xFC, 0x03,
0xF0, 0x00, 0x00 }, // 0x4F
{ 0x00, 0x00, 0x3F, 0xFF, 0x3F, 0xFF, 0x01, 0x83, 0x01, 0x83, 0x01,
0x83, 0x01, 0x83, 0x01, 0x83, 0x01, 0xC7, 0x00, 0xFE, 0x00,
0x7C, 0x00, 0x00 }, // 0x50
{ 0x00, 0x00, 0x03, 0xF0, 0x0F, 0xFC, 0x1C, 0x0E, 0x38, 0x07, 0x30,
0x03, 0x36, 0x03, 0x3E, 0x07, 0x1C, 0x0E, 0x3F, 0xFC, 0x33,
0xF0, 0x00, 0x00 }, // 0x51
{ 0x00, 0x00, 0x3F, 0xFF, 0x3F, 0xFF, 0x01, 0x83, 0x01, 0x83, 0x03,
0x83, 0x07, 0x83, 0x0F, 0x83, 0x1D, 0xC7, 0x38, 0xFE, 0x30,
0x7C, 0x00, 0x00 }, // 0x52
{ 0x00, 0x00, 0x0C, 0x3C, 0x1C, 0x7E, 0x38, 0xE7, 0x30, 0xC3, 0x30,
0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x39, 0xC7, 0x1F, 0x8E, 0x0F,
0x0C, 0x00, 0x00 }, // 0x53
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x3F,
0xFF, 0x3F, 0xFF, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00,
0x00, 0x00, 0x00 }, // 0x54
{ 0x00, 0x00, 0x07, 0xFF, 0x1F, 0xFF, 0x38, 0x00, 0x30, 0x00, 0x30,
0x00, 0x30, 0x00, 0x30, 0x00, 0x38, 0x00, 0x1F, 0xFF, 0x07,
0xFF, 0x00, 0x00 }, // 0x55
{ 0x00, 0x00, 0x00, 0x07, 0x00, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x3E,
0x00, 0x3E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00,
0x07, 0x00, 0x00 }, // 0x56
{ 0x00, 0x00, 0x3F, 0xFF, 0x3F, 0xFF, 0x1C, 0x00, 0x06, 0x00, 0x03,
0x80, 0x03, 0x80, 0x06, 0x00, 0x1C, 0x00, 0x3F, 0xFF, 0x3F,
0xFF, 0x00, 0x00 }, // 0x57
{ 0x00, 0x00, 0x30, 0x03, 0x3C, 0x0F, 0x0E, 0x1C, 0x03, 0x30, 0x01,
0xE0, 0x01, 0xE0, 0x03, 0x30, 0x0E, 0x1C, 0x3C, 0x0F, 0x30,
0x03, 0x00, 0x00 }, // 0x58
{ 0x00, 0x00, 0x00, 0x03, 0x00, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x3F,
0xC0, 0x3F, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00,
0x03, 0x00, 0x00 }, // 0x59
{ 0x00, 0x00, 0x30, 0x03, 0x3C, 0x03, 0x3E, 0x03, 0x33, 0x03, 0x31,
0xC3, 0x30, 0xE3, 0x30, 0x33, 0x30, 0x1F, 0x30, 0x0F, 0x30,
0x03, 0x00, 0x00 }, // 0x5A
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x3F, 0xFF, 0x30,
0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x5B
{ 0x00, 0x00, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00,
0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C,
0x00, 0x18, 0x00 }, // 0x5C
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x03, 0x30, 0x03, 0x30,
0x03, 0x30, 0x03, 0x3F, 0xFF, 0x3F, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x5D
{ 0x00, 0x00, 0x00, 0x60, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00,
0x0E, 0x00, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00,
0x70, 0x00, 0x60 }, // 0x5E
{ 0x00, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0,
0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0,
0x00, 0xC0, 0x00 }, // 0x5F
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3E, 0x00, 0x7E, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x60
{ 0x00, 0x00, 0x1C, 0x00, 0x3E, 0x40, 0x33, 0x60, 0x33, 0x60, 0x33,
0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x3F, 0xE0, 0x3F,
0xC0, 0x00, 0x00 }, // 0x61
{ 0x00, 0x00, 0x3F, 0xFF, 0x3F, 0xFF, 0x30, 0xC0, 0x30, 0x60, 0x30,
0x60, 0x30, 0x60, 0x30, 0x60, 0x38, 0xE0, 0x1F, 0xC0, 0x0F,
0x80, 0x00, 0x00 }, // 0x62
{ 0x00, 0x00, 0x0F, 0x80, 0x1F, 0xC0, 0x38, 0xE0, 0x30, 0x60, 0x30,
0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x18, 0xC0, 0x08,
0x80, 0x00, 0x00 }, // 0x63
{ 0x00, 0x00, 0x0F, 0x80, 0x1F, 0xC0, 0x38, 0xE0, 0x30, 0x60, 0x30,
0x60, 0x30, 0x60, 0x30, 0xE0, 0x30, 0xC0, 0x3F, 0xFF, 0x3F,
0xFF, 0x00, 0x00 }, // 0x64
{ 0x00, 0x00, 0x0F, 0x80, 0x1F, 0xC0, 0x3B, 0xE0, 0x33, 0x60, 0x33,
0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x13, 0xC0, 0x01,
0x80, 0x00, 0x00 }, // 0x65
{ 0x00, 0x00, 0x00, 0xC0, 0x00, 0xC0, 0x3F, 0xFC, 0x3F, 0xFE, 0x00,
0xC7, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x66
{ 0x00, 0x00, 0x03, 0x80, 0xC7, 0xC0, 0xCE, 0xE0, 0xCC, 0x60, 0xCC,
0x60, 0xCC, 0x60, 0xCC, 0x60, 0xE6, 0x60, 0x7F, 0xE0, 0x3F,
0xE0, 0x00, 0x00 }, // 0x67
{ 0x00, 0x00, 0x3F, 0xFF, 0x3F, 0xFF, 0x00, 0xC0, 0x00, 0x60, 0x00,
0x60, 0x00, 0x60, 0x00, 0xE0, 0x3F, 0xC0, 0x3F, 0x80, 0x00,
0x00, 0x00, 0x00 }, // 0x68
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x60, 0x3F,
0xEC, 0x3F, 0xEC, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x69
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xC0,
0x00, 0xC0, 0x60, 0xFF, 0xEC, 0x7F, 0xEC, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x6A
{ 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x3F, 0xFF, 0x03, 0x00, 0x07,
0x80, 0x0F, 0xC0, 0x1C, 0xE0, 0x38, 0x60, 0x30, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x6B
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x03, 0x3F,
0xFF, 0x3F, 0xFF, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x6C
{ 0x00, 0x00, 0x3F, 0xE0, 0x3F, 0xC0, 0x00, 0xE0, 0x00, 0xE0, 0x3F,
0xC0, 0x3F, 0xC0, 0x00, 0xE0, 0x00, 0xE0, 0x3F, 0xC0, 0x3F,
0x80, 0x00, 0x00 }, // 0x6D
{ 0x00, 0x00, 0x00, 0x00, 0x3F, 0xE0, 0x3F, 0xE0, 0x00, 0x60, 0x00,
0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0xE0, 0x3F, 0xC0, 0x3F,
0x80, 0x00, 0x00 }, // 0x6E
{ 0x00, 0x00, 0x0F, 0x80, 0x1F, 0xC0, 0x38, 0xE0, 0x30, 0x60, 0x30,
0x60, 0x30, 0x60, 0x30, 0x60, 0x38, 0xE0, 0x1F, 0xC0, 0x0F,
0x80, 0x00, 0x00 }, // 0x6F
{ 0x00, 0x00, 0xFF, 0xE0, 0xFF, 0xE0, 0x0C, 0x60, 0x18, 0x60, 0x18,
0x60, 0x18, 0x60, 0x18, 0x60, 0x1C, 0xE0, 0x0F, 0xC0, 0x07,
0x80, 0x00, 0x00 }, // 0x70
{ 0x00, 0x00, 0x07, 0x80, 0x0F, 0xC0, 0x1C, 0xE0, 0x18, 0x60, 0x18,
0x60, 0x18, 0x60, 0x18, 0x60, 0x0C, 0x60, 0xFF, 0xE0, 0xFF,
0xE0, 0x00, 0x00 }, // 0x71
{ 0x00, 0x00, 0x00, 0x00, 0x3F, 0xE0, 0x3F, 0xE0, 0x00, 0xC0, 0x00,
0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0xE0, 0x00,
0xC0, 0x00, 0x00 }, // 0x72
{ 0x00, 0x00, 0x11, 0xC0, 0x33, 0xE0, 0x33, 0x60, 0x33, 0x60, 0x33,
0x60, 0x33, 0x60, 0x3F, 0x60, 0x1E, 0x40, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x73
{ 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x1F, 0xFE, 0x3F, 0xFE, 0x30,
0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x74
{ 0x00, 0x00, 0x0F, 0xE0, 0x1F, 0xE0, 0x38, 0x00, 0x30, 0x00, 0x30,
0x00, 0x30, 0x00, 0x30, 0x00, 0x18, 0x00, 0x3F, 0xE0, 0x3F,
0xE0, 0x00, 0x00 }, // 0x75
{ 0x00, 0x00, 0x00, 0x60, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x38,
0x00, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00,
0x60, 0x00, 0x00 }, // 0x76
{ 0x00, 0x00, 0x07, 0xE0, 0x1F, 0xE0, 0x38, 0x00, 0x1C, 0x00, 0x0F,
0xE0, 0x0F, 0xE0, 0x1C, 0x00, 0x38, 0x00, 0x1F, 0xE0, 0x07,
0xE0, 0x00, 0x00 }, // 0x77
{ 0x00, 0x00, 0x30, 0x60, 0x38, 0xE0, 0x1D, 0xC0, 0x0F, 0x80, 0x07,
0x00, 0x0F, 0x80, 0x1D, 0xC0, 0x38, 0xE0, 0x30, 0x60, 0x00,
0x00, 0x00, 0x00 }, // 0x78
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x81, 0xE0, 0xE7, 0x80, 0x7E,
0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x60, 0x00,
0x00, 0x00, 0x00 }, // 0x79
{ 0x00, 0x00, 0x30, 0x60, 0x38, 0x60, 0x3C, 0x60, 0x36, 0x60, 0x33,
0x60, 0x31, 0xE0, 0x30, 0xE0, 0x30, 0x60, 0x30, 0x20, 0x00,
0x00, 0x00, 0x00 }, // 0x7A
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xC0, 0x1F, 0xFC, 0x3F,
0x7E, 0x70, 0x07, 0x60, 0x03, 0x60, 0x03, 0x60, 0x03, 0x00,
0x00, 0x00, 0x00 }, // 0x7B
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F,
0xBF, 0x3F, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x7C
{ 0x00, 0x00, 0x00, 0x00, 0x60, 0x03, 0x60, 0x03, 0x60, 0x03, 0x70,
0x07, 0x3F, 0x7E, 0x1F, 0xFC, 0x01, 0xC0, 0x00, 0x80, 0x00,
0x00, 0x00, 0x00 }, // 0x7D
{ 0x00, 0x00, 0x00, 0x10, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x04, 0x00,
0x0C, 0x00, 0x18, 0x00, 0x10, 0x00, 0x18, 0x00, 0x0C, 0x00,
0x04, 0x00, 0x00 }, // 0x7E
{ 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x80, 0x0C, 0xC0, 0x0C, 0x60, 0x0C,
0x30, 0x0C, 0x30, 0x0C, 0x60, 0x0C, 0xC0, 0x0F, 0x80, 0x0F,
0x00, 0x00, 0x00 }, // 0x7F
{ 0x00, 0x00, 0x01, 0xF0, 0x07, 0xFC, 0xCE, 0x0E, 0xDC, 0x07, 0xF8,
0x03, 0xF8, 0x03, 0x18, 0x03, 0x1C, 0x07, 0x0E, 0x1E, 0x06,
0x1C, 0x00, 0x00 }, // 0x80
{ 0x00, 0x00, 0x0F, 0xE0, 0x1F, 0xE0, 0x38, 0x0C, 0x30, 0x0C, 0x30,
0x00, 0x30, 0x00, 0x30, 0x0C, 0x18, 0x0C, 0x3F, 0xE0, 0x3F,
0xE0, 0x00, 0x00 }, // 0x81
{ 0x00, 0x00, 0x0F, 0x80, 0x1F, 0xC0, 0x3B, 0xE0, 0x33, 0x60, 0x33,
0x68, 0x33, 0x6C, 0x33, 0x66, 0x33, 0x62, 0x13, 0xC0, 0x03,
0x80, 0x00, 0x00 }, // 0x82
{ 0x00, 0x00, 0x1C, 0x00, 0x3E, 0x40, 0x33, 0x68, 0x33, 0x6C, 0x33,
0x66, 0x33, 0x66, 0x33, 0x6C, 0x33, 0x68, 0x3F, 0xE0, 0x3F,
0xC0, 0x00, 0x00 }, // 0x83
{ 0x00, 0x00, 0x1C, 0x00, 0x3E, 0x40, 0x33, 0x6C, 0x33, 0x6C, 0x33,
0x60, 0x33, 0x60, 0x33, 0x6C, 0x33, 0x6C, 0x3F, 0xE0, 0x3F,
0xC0, 0x00, 0x00 }, // 0x84
{ 0x00, 0x00, 0x1C, 0x00, 0x3E, 0x40, 0x33, 0x60, 0x33, 0x62, 0x33,
0x66, 0x33, 0x6C, 0x33, 0x68, 0x33, 0x60, 0x3F, 0xE0, 0x3F,
0xC0, 0x00, 0x00 }, // 0x85
{ 0x00, 0x00, 0x1C, 0x00, 0x3E, 0x40, 0x33, 0x60, 0x33, 0x64, 0x33,
0x6A, 0x33, 0x6A, 0x33, 0x64, 0x33, 0x60, 0x3F, 0xE0, 0x3F,
0xC0, 0x00, 0x00 }, // 0x86
{ 0x00, 0x00, 0x0F, 0x80, 0x1F, 0xC0, 0xB8, 0xE0, 0xB0, 0x60, 0xF0,
0x60, 0xF0, 0x60, 0x30, 0x60, 0x38, 0xE0, 0x18, 0xC0, 0x08,
0x80, 0x00, 0x00 }, // 0x87
{ 0x00, 0x00, 0x0F, 0x80, 0x1F, 0xC0, 0x33, 0xE8, 0x33, 0x6C, 0x33,
0x66, 0x33, 0x66, 0x33, 0x6C, 0x33, 0x68, 0x13, 0xC0, 0x03,
0x80, 0x00, 0x00 }, // 0x88
{ 0x00, 0x00, 0x0F, 0x80, 0x1F, 0xC0, 0x33, 0xEC, 0x33, 0x6C, 0x33,
0x60, 0x33, 0x60, 0x33, 0x6C, 0x33, 0x6C, 0x13, 0xC0, 0x03,
0x80, 0x00, 0x00 }, // 0x89
{ 0x00, 0x00, 0x0F, 0x80, 0x1F, 0xC0, 0x33, 0xE0, 0x33, 0x62, 0x33,
0x66, 0x33, 0x6C, 0x33, 0x68, 0x33, 0x60, 0x13, 0xC0, 0x03,
0x80, 0x00, 0x00 }, // 0x8A
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0C, 0x30, 0x6C, 0x3F,
0xE0, 0x3F, 0xEC, 0x30, 0x0C, 0x30, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x8B
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x08, 0x30, 0x6C, 0x3F,
0xE6, 0x3F, 0xE6, 0x30, 0x0C, 0x30, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x8C
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x62, 0x3F,
0xE6, 0x3F, 0xEC, 0x30, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0x8D
{ 0x00, 0x00, 0x38, 0x00, 0x3E, 0x00, 0x0F, 0x83, 0x0D, 0xE3, 0x0C,
0x78, 0x0C, 0x78, 0x0D, 0xE3, 0x0F, 0x83, 0x3E, 0x00, 0x38,
0x00, 0x00, 0x00 }, // 0x8E
{ 0x00, 0x00, 0x38, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x0D, 0xE2, 0x0C,
0x75, 0x0C, 0x75, 0x0D, 0xE2, 0x0F, 0x80, 0x3E, 0x00, 0x38,
0x00, 0x00, 0x00 }, // 0x8F
{ 0x00, 0x00, 0x3F, 0xF8, 0x3F, 0xF8, 0x31, 0x98, 0x31, 0x98, 0x31,
0x9C, 0x31, 0x9E, 0x31, 0x9B, 0x31, 0x99, 0x30, 0x18, 0x30,
0x18, 0x00, 0x00 }, // 0x90
{ 0x00, 0x00, 0x1C, 0x80, 0x3E, 0xC0, 0x22, 0x40, 0x22, 0x40, 0x1F,
0xC0, 0x3F, 0x80, 0x22, 0x40, 0x22, 0x40, 0x33, 0xC0, 0x11,
0x80, 0x00, 0x00 }, // 0x91
{ 0x00, 0x00, 0x3C, 0x00, 0x3F, 0x80, 0x07, 0xF0, 0x06, 0x7C, 0x06,
0x1F, 0x3F, 0xFF, 0x3F, 0xFF, 0x30, 0xC3, 0x30, 0xC3, 0x30,
0x03, 0x00, 0x00 }, // 0x92
{ 0x00, 0x00, 0x0F, 0x80, 0x1F, 0xC0, 0x38, 0xE8, 0x30, 0x6C, 0x30,
0x66, 0x30, 0x66, 0x30, 0x6C, 0x38, 0xE8, 0x1F, 0xC0, 0x0F,
0x80, 0x00, 0x00 }, // 0x93
{ 0x00, 0x00, 0x0F, 0x80, 0x1F, 0xC0, 0x38, 0xEC, 0x30, 0x6C, 0x30,
0x60, 0x30, 0x60, 0x30, 0x6C, 0x38, 0xEC, 0x1F, 0xC0, 0x0F,
0x80, 0x00, 0x00 }, // 0x94
{ 0x00, 0x00, 0x0F, 0x80, 0x1F, 0xC0, 0x38, 0xE0, 0x30, 0x62, 0x30,
0x66, 0x30, 0x6C, 0x30, 0x68, 0x38, 0xE0, 0x1F, 0xC0, 0x0F,
0x80, 0x00, 0x00 }, // 0x95
{ 0x00, 0x00, 0x0F, 0xE0, 0x1F, 0xE0, 0x38, 0x08, 0x30, 0x0C, 0x30,
0x06, 0x30, 0x06, 0x30, 0x0C, 0x18, 0x08, 0x3F, 0xE0, 0x3F,
0xE0, 0x00, 0x00 }, // 0x96
{ 0x00, 0x00, 0x0F, 0xE0, 0x1F, 0xE0, 0x38, 0x00, 0x30, 0x02, 0x30,
0x06, 0x30, 0x0C, 0x30, 0x08, 0x18, 0x00, 0x3F, 0xE0, 0x3F,
0xE0, 0x00, 0x00 }, // 0x97
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x81, 0xEC, 0xE7, 0x8C, 0x7E,
0x00, 0x1E, 0x00, 0x07, 0x8C, 0x01, 0xEC, 0x00, 0x60, 0x00,
0x00, 0x00, 0x00 }, // 0x98
{ 0x00, 0x00, 0x0F, 0xE0, 0x1F, 0xF0, 0x38, 0x3B, 0x30, 0x1B, 0x30,
0x18, 0x30, 0x18, 0x30, 0x1B, 0x38, 0x3B, 0x1F, 0xF0, 0x0F,
0xE0, 0x00, 0x00 }, // 0x99
{ 0x00, 0x00, 0x0F, 0xE0, 0x1F, 0xE0, 0x38, 0x0C, 0x30, 0x0C, 0x30,
0x00, 0x30, 0x00, 0x30, 0x0C, 0x18, 0x0C, 0x3F, 0xE0, 0x3F,
0xE0, 0x00, 0x00 }, // 0x9A
{ 0x00, 0x00, 0x2F, 0x80, 0x3F, 0xC0, 0x18, 0xE0, 0x3C, 0x60, 0x36,
0x60, 0x33, 0x60, 0x31, 0xE0, 0x38, 0xC0, 0x1F, 0xE0, 0x0F,
0xA0, 0x00, 0x00 }, // 0x9B
{ 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x1C, 0x80, 0x1F, 0xF8, 0x0B,
0xFC, 0x18, 0x8C, 0x18, 0x8C, 0x18, 0x1C, 0x18, 0x18, 0x08,
0x00, 0x00, 0x00 }, // 0x9C
{ 0x00, 0x00, 0x2F, 0xF0, 0x3F, 0xF8, 0x18, 0x1C, 0x3E, 0x0C, 0x37,
0x8C, 0x31, 0xEC, 0x30, 0x7C, 0x38, 0x18, 0x1F, 0xFC, 0x0F,
0xF4, 0x00, 0x00 }, // 0x9D
{ 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x06, 0x30, 0x03, 0x60, 0x01,
0xC0, 0x01, 0xC0, 0x03, 0x60, 0x06, 0x30, 0x04, 0x10, 0x00,
0x00, 0x00, 0x00 }, // 0x9E
{ 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x70, 0x80, 0x60, 0x80, 0x7F,
0xFE, 0x3F, 0xFF, 0x00, 0x83, 0x00, 0x87, 0x00, 0x06, 0x00,
0x00, 0x00, 0x00 }, // 0x9F
{ 0x00, 0x00, 0x1C, 0x00, 0x3E, 0x40, 0x33, 0x60, 0x33, 0x68, 0x33,
0x6C, 0x33, 0x66, 0x33, 0x62, 0x33, 0x60, 0x3F, 0xE0, 0x3F,
0xC0, 0x00, 0x00 }, // 0xA0
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x68, 0x3F,
0xEC, 0x3F, 0xE6, 0x30, 0x02, 0x30, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xA1
{ 0x00, 0x00, 0x0F, 0x80, 0x1F, 0xC0, 0x38, 0xE0, 0x30, 0x68, 0x30,
0x6C, 0x30, 0x66, 0x30, 0x62, 0x38, 0xE0, 0x1F, 0xC0, 0x0F,
0x80, 0x00, 0x00 }, // 0xA2
{ 0x00, 0x00, 0x0F, 0xE0, 0x1F, 0xE0, 0x38, 0x00, 0x30, 0x08, 0x30,
0x0C, 0x30, 0x06, 0x30, 0x02, 0x18, 0x00, 0x3F, 0xE0, 0x3F,
0xE0, 0x00, 0x00 }, // 0xA3
{ 0x00, 0x00, 0x00, 0x00, 0x3F, 0xE0, 0x3F, 0xE8, 0x00, 0x6C, 0x00,
0x64, 0x00, 0x6C, 0x00, 0x68, 0x00, 0xEC, 0x3F, 0xC4, 0x3F,
0x80, 0x00, 0x00 }, // 0xA4
{ 0x00, 0x00, 0x3F, 0xF8, 0x3F, 0xF8, 0x00, 0x72, 0x00, 0xE3, 0x01,
0xC1, 0x03, 0x83, 0x07, 0x02, 0x0E, 0x03, 0x3F, 0xF9, 0x3F,
0xF8, 0x00, 0x00 }, // 0xA5
{ 0x00, 0x00, 0x00, 0x70, 0x06, 0xFA, 0x06, 0xDB, 0x06, 0xDB, 0x06,
0xDB, 0x06, 0xDB, 0x06, 0xDB, 0x06, 0xDB, 0x06, 0xFF, 0x00,
0xFE, 0x00, 0x00 }, // 0xA6
{ 0x00, 0x00, 0x00, 0x3C, 0x06, 0x7E, 0x06, 0xE7, 0x06, 0xC3, 0x06,
0xC3, 0x06, 0xC3, 0x06, 0xC3, 0x06, 0xE7, 0x06, 0x7E, 0x00,
0x3C, 0x00, 0x00 }, // 0xA7
{ 0x00, 0x00, 0x0E, 0x00, 0x1F, 0x00, 0x3B, 0x80, 0x31, 0xC0, 0x30,
0xFB, 0x30, 0x7B, 0x30, 0x00, 0x38, 0x00, 0x1E, 0x00, 0x0E,
0x00, 0x00, 0x00 }, // 0xA8
{ 0x00, 0x00, 0x07, 0xF0, 0x0F, 0xF8, 0x1C, 0x1C, 0x1B, 0xEC, 0x1B,
0xEC, 0x18, 0xAC, 0x1B, 0xEC, 0x1B, 0x4C, 0x1C, 0x1C, 0x0F,
0xF8, 0x07, 0xF0 }, // 0xA9
{ 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00,
0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x03, 0xF8, 0x03,
0xF8, 0x00, 0x00 }, // 0xAA
{ 0x00, 0x00, 0x00, 0x48, 0x04, 0x7C, 0x06, 0x7C, 0x03, 0x40, 0x01,
0x80, 0x00, 0xC0, 0x19, 0x60, 0x1D, 0x30, 0x17, 0x10, 0x12,
0x00, 0x00, 0x00 }, // 0xAB
{ 0x00, 0x00, 0x00, 0x48, 0x04, 0x7C, 0x06, 0x7C, 0x03, 0x40, 0x01,
0x80, 0x06, 0xC0, 0x07, 0x60, 0x04, 0x30, 0x1F, 0x10, 0x1F,
0x00, 0x00, 0x00 }, // 0xAC
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x3F,
0xF3, 0x3F, 0xF3, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xAD
{ 0x00, 0x00, 0x00, 0x80, 0x01, 0xC0, 0x03, 0x60, 0x02, 0x20, 0x00,
0x00, 0x00, 0x80, 0x01, 0xC0, 0x03, 0x60, 0x02, 0x20, 0x00,
0x00, 0x00, 0x00 }, // 0xAE
{ 0x00, 0x00, 0x02, 0x20, 0x03, 0x60, 0x01, 0xC0, 0x00, 0x80, 0x00,
0x00, 0x02, 0x20, 0x03, 0x60, 0x01, 0xC0, 0x00, 0x80, 0x00,
0x00, 0x00, 0x00 }, // 0xAF
{ 0x55, 0x55, 0x00, 0x00, 0xAA, 0xAA, 0x00, 0x00, 0x55, 0x55, 0x00,
0x00, 0xAA, 0xAA, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0xAA,
0xAA, 0x00, 0x00 }, // 0xB0
{ 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55,
0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55 }, // 0xB1
{ 0xAA, 0xAA, 0xFF, 0xFF, 0x55, 0x55, 0xFF, 0xFF, 0xAA, 0xAA, 0xFF,
0xFF, 0x55, 0x55, 0xFF, 0xFF, 0xAA, 0xAA, 0xFF, 0xFF, 0x55,
0x55, 0xFF, 0xFF }, // 0xB2
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xB3
{ 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xFF,
0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xB4
{ 0x00, 0x00, 0x38, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x0D, 0xE4, 0x0C,
0x7E, 0x0C, 0x7B, 0x0D, 0xE1, 0x0F, 0x80, 0x3E, 0x00, 0x38,
0x00, 0x00, 0x00 }, // 0xB5
{ 0x00, 0x00, 0x38, 0x00, 0x3E, 0x00, 0x0F, 0x84, 0x0D, 0xE6, 0x0C,
0x7B, 0x0C, 0x7B, 0x0D, 0xE6, 0x0F, 0x84, 0x3E, 0x00, 0x38,
0x00, 0x00, 0x00 }, // 0xB6
{ 0x00, 0x00, 0x38, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x0D, 0xE1, 0x0C,
0x7B, 0x0C, 0x7E, 0x0D, 0xE4, 0x0F, 0x80, 0x3E, 0x00, 0x38,
0x00, 0x00, 0x00 }, // 0xB7
{ 0x00, 0x00, 0x07, 0xF0, 0x0F, 0xF8, 0x1C, 0x1C, 0x19, 0xCC, 0x1B,
0xEC, 0x1A, 0x2C, 0x1B, 0x6C, 0x19, 0x4C, 0x1C, 0x1C, 0x0F,
0xF8, 0x07, 0xF0 }, // 0xB8
{ 0x06, 0xC0, 0x06, 0xC0, 0xFE, 0xFF, 0xFE, 0xFF, 0x00, 0x00, 0xFF,
0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xB9
{ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF,
0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xBA
{ 0x06, 0xC0, 0x06, 0xC0, 0xFE, 0xC0, 0xFE, 0xC0, 0x00, 0xC0, 0xFF,
0xC0, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xBB
{ 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xFF, 0x06, 0xFF, 0x06, 0x00, 0x07,
0xFF, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xBC
{ 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x07, 0xF0, 0x0E, 0x38, 0x3F,
0xFE, 0x3F, 0xFE, 0x0C, 0x18, 0x0E, 0x38, 0x06, 0x30, 0x00,
0x00, 0x00, 0x00 }, // 0xBD
{ 0x00, 0x00, 0x00, 0x03, 0x0A, 0x0F, 0x0A, 0x3C, 0x0A, 0xF0, 0x3F,
0xC0, 0x3F, 0xC0, 0x0A, 0xF0, 0x0A, 0x3C, 0x0A, 0x0F, 0x00,
0x03, 0x00, 0x00 }, // 0xBE
{ 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xFF,
0x80, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xBF
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
0xFF, 0x01, 0xFF, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80 }, // 0xC0
{ 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0xFF, 0x01, 0xFF, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80 }, // 0xC1
{ 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xFF,
0x80, 0xFF, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80 }, // 0xC2
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80 }, // 0xC3
{ 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80 }, // 0xC4
{ 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xFF,
0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80 }, // 0xC5
{ 0x00, 0x00, 0x1C, 0x00, 0x3E, 0x40, 0x33, 0x68, 0x33, 0x6C, 0x33,
0x64, 0x33, 0x6C, 0x33, 0x68, 0x33, 0x6C, 0x3F, 0xE4, 0x3F,
0xC0, 0x00, 0x00 }, // 0xC6
{ 0x00, 0x00, 0x38, 0x00, 0x3E, 0x00, 0x0F, 0x82, 0x0D, 0xE3, 0x0C,
0x79, 0x0C, 0x7B, 0x0D, 0xE2, 0x0F, 0x83, 0x3E, 0x01, 0x38,
0x00, 0x00, 0x00 }, // 0xC7
{ 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x07, 0xFF, 0x06, 0x00, 0x06,
0xFF, 0x06, 0xFF, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06,
0xC0, 0x06, 0xC0 }, // 0xC8
{ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0xFF, 0xC0, 0x00, 0xC0, 0xFE,
0xC0, 0xFE, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06,
0xC0, 0x06, 0xC0 }, // 0xC9
{ 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xFF, 0x06, 0xFF, 0x06, 0x00, 0x06,
0xFF, 0x06, 0xFF, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06,
0xC0, 0x06, 0xC0 }, // 0xCA
{ 0x06, 0xC0, 0x06, 0xC0, 0xFE, 0xC0, 0xFE, 0xC0, 0x00, 0xC0, 0xFE,
0xC0, 0xFE, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06,
0xC0, 0x06, 0xC0 }, // 0xCB
{ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFE,
0xFF, 0xFE, 0xFF, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06,
0xC0, 0x06, 0xC0 }, // 0xCC
{ 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06,
0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06,
0xC0, 0x06, 0xC0 }, // 0xCD
{ 0x06, 0xC0, 0x06, 0xC0, 0xFE, 0xFF, 0xFE, 0xFF, 0x00, 0x00, 0xFE,
0xFF, 0xFE, 0xFF, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06,
0xC0, 0x06, 0xC0 }, // 0xCE
{ 0x00, 0x00, 0x1B, 0xF6, 0x1F, 0xFE, 0x06, 0x18, 0x0C, 0x0C, 0x0C,
0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0x18, 0x1F, 0xFE, 0x1B,
0xF6, 0x00, 0x00 }, // 0xCF
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x78, 0x3E, 0xFC, 0x33,
0xCC, 0x33, 0x8C, 0x3F, 0x0C, 0x1E, 0x18, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xD0
{ 0x00, 0x00, 0x00, 0xC0, 0x3F, 0xFF, 0x3F, 0xFF, 0x30, 0xC3, 0x30,
0x03, 0x30, 0x03, 0x38, 0x07, 0x1C, 0x0E, 0x0F, 0xFC, 0x03,
0xF0, 0x00, 0x00 }, // 0xD1
{ 0x00, 0x00, 0x3F, 0xF8, 0x3F, 0xF8, 0x31, 0x9C, 0x31, 0x9E, 0x31,
0x9B, 0x31, 0x9B, 0x31, 0x9E, 0x31, 0x9C, 0x30, 0x18, 0x30,
0x18, 0x00, 0x00 }, // 0xD2
{ 0x00, 0x00, 0x3F, 0xF8, 0x3F, 0xF8, 0x31, 0x9B, 0x31, 0x9B, 0x31,
0x98, 0x31, 0x98, 0x31, 0x9B, 0x31, 0x9B, 0x30, 0x18, 0x30,
0x18, 0x00, 0x00 }, // 0xD3
{ 0x00, 0x00, 0x3F, 0xF8, 0x3F, 0xF8, 0x31, 0x99, 0x31, 0x9B, 0x31,
0x9E, 0x31, 0x9C, 0x31, 0x98, 0x31, 0x98, 0x30, 0x18, 0x30,
0x18, 0x00, 0x00 }, // 0xD4
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7E, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xD5
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x30, 0x18, 0x3F,
0xFC, 0x3F, 0xFE, 0x30, 0x1B, 0x30, 0x19, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xD6
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x1C, 0x30, 0x1E, 0x3F,
0xFB, 0x3F, 0xFB, 0x30, 0x1E, 0x30, 0x1C, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xD7
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x1B, 0x30, 0x1B, 0x3F,
0xF8, 0x3F, 0xF8, 0x30, 0x1B, 0x30, 0x1B, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xD8
{ 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0xFF, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xD9
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
0x80, 0xFF, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80 }, // 0xDA
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF }, // 0xDB
{ 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF,
0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF,
0x00, 0xFF, 0x00 }, // 0xDC
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F,
0xBF, 0x3F, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xDD
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x19, 0x30, 0x1B, 0x3F,
0xFE, 0x3F, 0xFC, 0x30, 0x18, 0x30, 0x18, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xDE
{ 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
0xFF, 0x00, 0xFF }, // 0xDF
{ 0x00, 0x00, 0x0F, 0xE0, 0x1F, 0xF0, 0x38, 0x38, 0x30, 0x18, 0x30,
0x1C, 0x30, 0x1E, 0x30, 0x1B, 0x38, 0x39, 0x1F, 0xF0, 0x0F,
0xE0, 0x00, 0x00 }, // 0xE0
{ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0xFF, 0xE0, 0x21, 0x30, 0x21,
0x10, 0x21, 0x10, 0x33, 0x30, 0x3F, 0xE0, 0x1E, 0xC0, 0x00,
0x00, 0x00, 0x00 }, // 0xE1
{ 0x00, 0x00, 0x0F, 0xE0, 0x1F, 0xF0, 0x38, 0x3C, 0x30, 0x1E, 0x30,
0x1B, 0x30, 0x1B, 0x30, 0x1E, 0x38, 0x3C, 0x1F, 0xF0, 0x0F,
0xE0, 0x00, 0x00 }, // 0xE2
{ 0x00, 0x00, 0x0F, 0xE0, 0x1F, 0xF0, 0x38, 0x39, 0x30, 0x1B, 0x30,
0x1E, 0x30, 0x1C, 0x30, 0x18, 0x38, 0x38, 0x1F, 0xF0, 0x0F,
0xE0, 0x00, 0x00 }, // 0xE3
{ 0x00, 0x00, 0x0F, 0x80, 0x1F, 0xC8, 0x38, 0xEC, 0x30, 0x64, 0x30,
0x6C, 0x30, 0x68, 0x30, 0x6C, 0x38, 0xE4, 0x1F, 0xC0, 0x0F,
0x80, 0x00, 0x00 }, // 0xE4
{ 0x00, 0x00, 0x0F, 0xE0, 0x1F, 0xF0, 0x38, 0x3A, 0x30, 0x1B, 0x30,
0x19, 0x30, 0x1B, 0x30, 0x1A, 0x38, 0x3B, 0x1F, 0xF1, 0x0F,
0xE0, 0x00, 0x00 }, // 0xE5
{ 0x00, 0x00, 0xFF, 0xF0, 0xFF, 0xF0, 0x0E, 0x00, 0x0C, 0x00, 0x0C,
0x00, 0x0C, 0x00, 0x06, 0x00, 0x0F, 0xF0, 0x0F, 0xF0, 0x00,
0x00, 0x00, 0x00 }, // 0xE6
{ 0x00, 0x00, 0x00, 0x00, 0x30, 0x0C, 0x3F, 0xFC, 0x3F, 0xFC, 0x36,
0x6C, 0x06, 0x60, 0x06, 0x60, 0x07, 0xE0, 0x03, 0xC0, 0x00,
0x00, 0x00, 0x00 }, // 0xE7
{ 0x00, 0x00, 0x00, 0x00, 0x30, 0x03, 0x3F, 0xFF, 0x3F, 0xFF, 0x36,
0x1B, 0x06, 0x18, 0x06, 0x18, 0x07, 0xF8, 0x03, 0xF0, 0x00,
0x00, 0x00, 0x00 }, // 0xE8
{ 0x00, 0x00, 0x07, 0xF8, 0x1F, 0xF8, 0x38, 0x00, 0x30, 0x00, 0x30,
0x04, 0x30, 0x06, 0x30, 0x03, 0x38, 0x01, 0x1F, 0xF8, 0x07,
0xF8, 0x00, 0x00 }, // 0xE9
{ 0x00, 0x00, 0x07, 0xF8, 0x1F, 0xF8, 0x38, 0x04, 0x30, 0x06, 0x30,
0x03, 0x30, 0x03, 0x30, 0x06, 0x38, 0x04, 0x1F, 0xF8, 0x07,
0xF8, 0x00, 0x00 }, // 0xEA
{ 0x00, 0x00, 0x07, 0xF8, 0x1F, 0xF8, 0x38, 0x01, 0x30, 0x03, 0x30,
0x06, 0x30, 0x04, 0x30, 0x00, 0x38, 0x00, 0x1F, 0xF8, 0x07,
0xF8, 0x00, 0x00 }, // 0xEB
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x81, 0xE0, 0xE7, 0x80, 0x7E,
0x10, 0x1E, 0x18, 0x07, 0x8C, 0x01, 0xE4, 0x00, 0x60, 0x00,
0x00, 0x00, 0x00 }, // 0xEC
{ 0x00, 0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x3F,
0xC4, 0x3F, 0xC6, 0x00, 0x63, 0x00, 0x31, 0x00, 0x18, 0x00,
0x08, 0x00, 0x00 }, // 0xED
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xEE
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
0x06, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xEF
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xC0, 0x00,
0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xF0
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xC0, 0x18, 0xC0, 0x1B,
0xF0, 0x1B, 0xF0, 0x18, 0xC0, 0x18, 0xC0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xF1
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xC0, 0x06, 0xC0, 0x06,
0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xF2
{ 0x00, 0x00, 0x00, 0x44, 0x04, 0x54, 0x06, 0x7C, 0x03, 0x28, 0x01,
0x80, 0x06, 0xC0, 0x07, 0x60, 0x04, 0x30, 0x1F, 0x10, 0x1F,
0x00, 0x00, 0x00 }, // 0xF3
{ 0x00, 0x00, 0x00, 0x38, 0x00, 0x7C, 0x00, 0xC6, 0x00, 0x82, 0x3F,
0xFE, 0x3F, 0xFE, 0x00, 0x02, 0x3F, 0xFE, 0x3F, 0xFE, 0x00,
0x02, 0x00, 0x00 }, // 0xF4
{ 0x00, 0x00, 0x00, 0x00, 0x08, 0xDC, 0x19, 0xFE, 0x11, 0x22, 0x11,
0x22, 0x11, 0x22, 0x11, 0x22, 0x1F, 0xE6, 0x0E, 0xC4, 0x00,
0x00, 0x00, 0x00 }, // 0xF5
{ 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x0D,
0xB0, 0x0D, 0xB0, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x00,
0x00, 0x00, 0x00 }, // 0xF6
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00,
0x80, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xF7
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x3F, 0x00,
0x33, 0x00, 0x33, 0x00, 0x3F, 0x00, 0x1E, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xF8
{ 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x03, 0xC0, 0x01, 0x80, 0x00,
0x00, 0x00, 0x00, 0x01, 0x80, 0x03, 0xC0, 0x01, 0x80, 0x00,
0x00, 0x00, 0x00 }, // 0xF9
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
0x80, 0x03, 0xC0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xFA
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x00, 0x1F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xFB
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x15, 0x00, 0x15, 0x00,
0x1F, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xFC
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x1D, 0x00, 0x15, 0x00,
0x17, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xFD
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x03,
0xF0, 0x03, 0xF0, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00 }, // 0xFE
{ 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
};
const char font6x8[256][6] = { { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 0x00
{ 0x00, 0x3E, 0x45, 0x51, 0x45, 0x3E }, // 0x01
{ 0x00, 0x3E, 0x6B, 0x6F, 0x6B, 0x3E }, // 0x02
{ 0x00, 0x1C, 0x3E, 0x7C, 0x3E, 0x1C }, // 0x03
{ 0x00, 0x18, 0x3C, 0x7E, 0x3C, 0x18 }, // 0x04
{ 0x00, 0x30, 0x36, 0x7F, 0x36, 0x30 }, // 0x05
{ 0x00, 0x18, 0x5C, 0x7E, 0x5C, 0x18 }, // 0x06
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 0x07
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 0x08
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 0x09
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 0x0A
{ 0x00, 0x30, 0x48, 0x4A, 0x36, 0x0E }, // 0x0B
{ 0x00, 0x06, 0x29, 0x79, 0x29, 0x06 }, // 0x0C
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 0x0D
{ 0x00, 0x60, 0x7E, 0x0A, 0x35, 0x3F }, // 0x0E
{ 0x00, 0x2A, 0x1C, 0x36, 0x1C, 0x2A }, // 0x0F
{ 0x00, 0x00, 0x7F, 0x3E, 0x1C, 0x08 }, // 0x10
{ 0x00, 0x08, 0x1C, 0x3E, 0x7F, 0x00 }, // 0x11
{ 0x00, 0x14, 0x36, 0x7F, 0x36, 0x14 }, // 0x12
{ 0x00, 0x00, 0x5F, 0x00, 0x5F, 0x00 }, // 0x13
{ 0x00, 0x06, 0x09, 0x7F, 0x01, 0x7F }, // 0x14
{ 0x00, 0x22, 0x4D, 0x55, 0x59, 0x22 }, // 0x15
{ 0x00, 0x60, 0x60, 0x60, 0x60, 0x00 }, // 0x16
{ 0x00, 0x14, 0xB6, 0xFF, 0xB6, 0x14 }, // 0x17
{ 0x00, 0x04, 0x06, 0x7F, 0x06, 0x04 }, // 0x18
{ 0x00, 0x10, 0x30, 0x7F, 0x30, 0x10 }, // 0x19
{ 0x00, 0x08, 0x08, 0x3E, 0x1C, 0x08 }, // 0x1A
{ 0x00, 0x08, 0x1C, 0x3E, 0x08, 0x08 }, // 0x1B
{ 0x00, 0x78, 0x40, 0x40, 0x40, 0x40 }, // 0x1C
{ 0x00, 0x08, 0x3E, 0x08, 0x3E, 0x08 }, // 0x1D
{ 0x00, 0x30, 0x3C, 0x3F, 0x3C, 0x30 }, // 0x1E
{ 0x00, 0x03, 0x0F, 0x3F, 0x0F, 0x03 }, // 0x1F
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 0x20
{ 0x00, 0x00, 0x06, 0x5F, 0x06, 0x00 }, // 0x21
{ 0x00, 0x07, 0x03, 0x00, 0x07, 0x03 }, // 0x22
{ 0x00, 0x24, 0x7E, 0x24, 0x7E, 0x24 }, // 0x23
{ 0x00, 0x24, 0x2B, 0x6A, 0x12, 0x00 }, // 0x24
{ 0x00, 0x63, 0x13, 0x08, 0x64, 0x63 }, // 0x25
{ 0x00, 0x36, 0x49, 0x56, 0x20, 0x50 }, // 0x26
{ 0x00, 0x00, 0x07, 0x03, 0x00, 0x00 }, // 0x27
{ 0x00, 0x00, 0x3E, 0x41, 0x00, 0x00 }, // 0x28
{ 0x00, 0x00, 0x41, 0x3E, 0x00, 0x00 }, // 0x29
{ 0x00, 0x08, 0x3E, 0x1C, 0x3E, 0x08 }, // 0x2A
{ 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 }, // 0x2B
{ 0x00, 0x00, 0xE0, 0x60, 0x00, 0x00 }, // 0x2C
{ 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 }, // 0x2D
{ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 }, // 0x2E
{ 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 }, // 0x2F
{ 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0x30
{ 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 0x31
{ 0x00, 0x62, 0x51, 0x49, 0x49, 0x46 }, // 0x32
{ 0x00, 0x22, 0x49, 0x49, 0x49, 0x36 }, // 0x33
{ 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 0x34
{ 0x00, 0x2F, 0x49, 0x49, 0x49, 0x31 }, // 0x35
{ 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 0x36
{ 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 }, // 0x37
{ 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 }, // 0x38
{ 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E }, // 0x39
{ 0x00, 0x00, 0x6C, 0x6C, 0x00, 0x00 }, // 0x3A
{ 0x00, 0x00, 0xEC, 0x6C, 0x00, 0x00 }, // 0x3B
{ 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 }, // 0x3C
{ 0x00, 0x24, 0x24, 0x24, 0x24, 0x24 }, // 0x3D
{ 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 }, // 0x3E
{ 0x00, 0x02, 0x01, 0x59, 0x09, 0x06 }, // 0x3F
{ 0x00, 0x3E, 0x41, 0x5D, 0x55, 0x1E }, // 0x40
{ 0x00, 0x7E, 0x11, 0x11, 0x11, 0x7E }, // 0x41
{ 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 }, // 0x42
{ 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 }, // 0x43
{ 0x00, 0x7F, 0x41, 0x41, 0x41, 0x3E }, // 0x44
{ 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 }, // 0x45
{ 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 }, // 0x46
{ 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A }, // 0x47
{ 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F }, // 0x48
{ 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 }, // 0x49
{ 0x00, 0x30, 0x40, 0x40, 0x40, 0x3F }, // 0x4A
{ 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 }, // 0x4B
{ 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 }, // 0x4C
{ 0x00, 0x7F, 0x02, 0x04, 0x02, 0x7F }, // 0x4D
{ 0x00, 0x7F, 0x02, 0x04, 0x08, 0x7F }, // 0x4E
{ 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E }, // 0x4F
{ 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 }, // 0x50
{ 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E }, // 0x51
{ 0x00, 0x7F, 0x09, 0x09, 0x19, 0x66 }, // 0x52
{ 0x00, 0x26, 0x49, 0x49, 0x49, 0x32 }, // 0x53
{ 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 }, // 0x54
{ 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F }, // 0x55
{ 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F }, // 0x56
{ 0x00, 0x3F, 0x40, 0x3C, 0x40, 0x3F }, // 0x57
{ 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 }, // 0x58
{ 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 }, // 0x59
{ 0x00, 0x71, 0x49, 0x45, 0x43, 0x00 }, // 0x5A
{ 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 }, // 0x5B
{ 0x00, 0x02, 0x04, 0x08, 0x10, 0x20 }, // 0x5C
{ 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 }, // 0x5D
{ 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 }, // 0x5E
{ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 }, // 0x5F
{ 0x00, 0x00, 0x03, 0x07, 0x00, 0x00 }, // 0x60
{ 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 }, // 0x61
{ 0x00, 0x7F, 0x44, 0x44, 0x44, 0x38 }, // 0x62
{ 0x00, 0x38, 0x44, 0x44, 0x44, 0x28 }, // 0x63
{ 0x00, 0x38, 0x44, 0x44, 0x44, 0x7F }, // 0x64
{ 0x00, 0x38, 0x54, 0x54, 0x54, 0x08 }, // 0x65
{ 0x00, 0x08, 0x7E, 0x09, 0x09, 0x00 }, // 0x66
{ 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C }, // 0x67
{ 0x00, 0x7F, 0x04, 0x04, 0x78, 0x00 }, // 0x68
{ 0x00, 0x00, 0x00, 0x7D, 0x40, 0x00 }, // 0x69
{ 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 }, // 0x6A
{ 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 }, // 0x6B
{ 0x00, 0x00, 0x00, 0x7F, 0x40, 0x00 }, // 0x6C
{ 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 }, // 0x6D
{ 0x00, 0x7C, 0x04, 0x04, 0x78, 0x00 }, // 0x6E
{ 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 }, // 0x6F
{ 0x00, 0xFC, 0x44, 0x44, 0x44, 0x38 }, // 0x70
{ 0x00, 0x38, 0x44, 0x44, 0x44, 0xFC }, // 0x71
{ 0x00, 0x44, 0x78, 0x44, 0x04, 0x08 }, // 0x72
{ 0x00, 0x08, 0x54, 0x54, 0x54, 0x20 }, // 0x73
{ 0x00, 0x04, 0x3E, 0x44, 0x24, 0x00 }, // 0x74
{ 0x00, 0x3C, 0x40, 0x20, 0x7C, 0x00 }, // 0x75
{ 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C }, // 0x76
{ 0x00, 0x3C, 0x60, 0x30, 0x60, 0x3C }, // 0x77
{ 0x00, 0x6C, 0x10, 0x10, 0x6C, 0x00 }, // 0x78
{ 0x00, 0x9C, 0xA0, 0x60, 0x3C, 0x00 }, // 0x79
{ 0x00, 0x64, 0x54, 0x54, 0x4C, 0x00 }, // 0x7A
{ 0x00, 0x08, 0x3E, 0x41, 0x41, 0x00 }, // 0x7B
{ 0x00, 0x00, 0x00, 0x77, 0x00, 0x00 }, // 0x7C
{ 0x00, 0x00, 0x41, 0x41, 0x3E, 0x08 }, // 0x7D
{ 0x00, 0x02, 0x01, 0x02, 0x01, 0x00 }, // 0x7E
{ 0x00, 0x3C, 0x26, 0x23, 0x26, 0x3C }, // 0x7F
{ 0x00, 0x1E, 0xA1, 0xE1, 0x21, 0x12 }, // 0x80
{ 0x00, 0x3D, 0x40, 0x20, 0x7D, 0x00 }, // 0x81
{ 0x00, 0x38, 0x54, 0x54, 0x55, 0x09 }, // 0x82
{ 0x00, 0x20, 0x55, 0x55, 0x55, 0x78 }, // 0x83
{ 0x00, 0x20, 0x55, 0x54, 0x55, 0x78 }, // 0x84
{ 0x00, 0x20, 0x55, 0x55, 0x54, 0x78 }, // 0x85
{ 0x00, 0x20, 0x57, 0x55, 0x57, 0x78 }, // 0x86
{ 0x00, 0x1C, 0xA2, 0xE2, 0x22, 0x14 }, // 0x87
{ 0x00, 0x38, 0x55, 0x55, 0x55, 0x08 }, // 0x88
{ 0x00, 0x38, 0x55, 0x54, 0x55, 0x08 }, // 0x89
{ 0x00, 0x38, 0x55, 0x55, 0x54, 0x08 }, // 0x8A
{ 0x00, 0x00, 0x01, 0x7C, 0x41, 0x00 }, // 0x8B
{ 0x00, 0x00, 0x01, 0x7D, 0x41, 0x00 }, // 0x8C
{ 0x00, 0x00, 0x01, 0x7C, 0x40, 0x00 }, // 0x8D
{ 0x00, 0x70, 0x29, 0x24, 0x29, 0x70 }, // 0x8E
{ 0x00, 0x78, 0x2F, 0x25, 0x2F, 0x78 }, // 0x8F
{ 0x00, 0x7C, 0x54, 0x54, 0x55, 0x45 }, // 0x90
{ 0x00, 0x34, 0x54, 0x7C, 0x54, 0x58 }, // 0x91
{ 0x00, 0x7E, 0x09, 0x7F, 0x49, 0x49 }, // 0x92
{ 0x00, 0x38, 0x45, 0x45, 0x39, 0x00 }, // 0x93
{ 0x00, 0x38, 0x45, 0x44, 0x39, 0x00 }, // 0x94
{ 0x00, 0x39, 0x45, 0x44, 0x38, 0x00 }, // 0x95
{ 0x00, 0x3C, 0x41, 0x21, 0x7D, 0x00 }, // 0x96
{ 0x00, 0x3D, 0x41, 0x20, 0x7C, 0x00 }, // 0x97
{ 0x00, 0x9C, 0xA1, 0x60, 0x3D, 0x00 }, // 0x98
{ 0x00, 0x3D, 0x42, 0x42, 0x3D, 0x00 }, // 0x99
{ 0x00, 0x3C, 0x41, 0x40, 0x3D, 0x00 }, // 0x9A
{ 0x80, 0x70, 0x68, 0x58, 0x38, 0x04 }, // 0x9B
{ 0x00, 0x48, 0x3E, 0x49, 0x49, 0x62 }, // 0x9C
{ 0x00, 0x7E, 0x61, 0x5D, 0x43, 0x3F }, // 0x9D
{ 0x00, 0x22, 0x14, 0x08, 0x14, 0x22 }, // 0x9E
{ 0x00, 0x40, 0x88, 0x7E, 0x09, 0x02 }, // 0x9F
{ 0x00, 0x20, 0x54, 0x55, 0x55, 0x78 }, // 0xA0
{ 0x00, 0x00, 0x00, 0x7D, 0x41, 0x00 }, // 0xA1
{ 0x00, 0x38, 0x44, 0x45, 0x39, 0x00 }, // 0xA2
{ 0x00, 0x3C, 0x40, 0x21, 0x7D, 0x00 }, // 0xA3
{ 0x00, 0x7A, 0x09, 0x0A, 0x71, 0x00 }, // 0xA4
{ 0x00, 0x7A, 0x11, 0x22, 0x79, 0x00 }, // 0xA5
{ 0x00, 0x08, 0x55, 0x55, 0x55, 0x5E }, // 0xA6
{ 0x00, 0x4E, 0x51, 0x51, 0x4E, 0x00 }, // 0xA7
{ 0x00, 0x30, 0x48, 0x4D, 0x40, 0x20 }, // 0xA8
{ 0x3E, 0x41, 0x5D, 0x4B, 0x55, 0x3E }, // 0xA9
{ 0x04, 0x04, 0x04, 0x04, 0x04, 0x1C }, // 0xAA
{ 0x00, 0x17, 0x08, 0x4C, 0x6A, 0x50 }, // 0xAB
{ 0x00, 0x17, 0x08, 0x34, 0x2A, 0x78 }, // 0xAC
{ 0x00, 0x00, 0x30, 0x7D, 0x30, 0x00 }, // 0xAD
{ 0x00, 0x08, 0x14, 0x00, 0x08, 0x14 }, // 0xAE
{ 0x00, 0x14, 0x08, 0x00, 0x14, 0x08 }, // 0xAF
{ 0x44, 0x11, 0x44, 0x11, 0x44, 0x11 }, // 0xB0
{ 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55 }, // 0xB1
{ 0xBB, 0xEE, 0xBB, 0xEE, 0xBB, 0xEE }, // 0xB2
{ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00 }, // 0xB3
{ 0x08, 0x08, 0x08, 0xFF, 0x00, 0x00 }, // 0xB4
{ 0x00, 0x70, 0x28, 0x25, 0x29, 0x70 }, // 0xB5
{ 0x00, 0x70, 0x29, 0x25, 0x29, 0x70 }, // 0xB6
{ 0x00, 0x70, 0x29, 0x25, 0x28, 0x70 }, // 0xB7
{ 0x3E, 0x41, 0x5D, 0x55, 0x41, 0x3E }, // 0xB8
{ 0x0A, 0xFB, 0x00, 0xFF, 0x00, 0x00 }, // 0xB9
{ 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00 }, // 0xBA
{ 0x0A, 0xFA, 0x02, 0xFE, 0x00, 0x00 }, // 0xBB
{ 0x0A, 0x0B, 0x08, 0x0F, 0x00, 0x00 }, // 0xBC
{ 0x00, 0x18, 0x24, 0x66, 0x24, 0x00 }, // 0xBD
{ 0x00, 0x29, 0x2A, 0x7C, 0x2A, 0x29 }, // 0xBE
{ 0x08, 0x08, 0x08, 0xF8, 0x00, 0x00 }, // 0xBF
{ 0x00, 0x00, 0x00, 0x0F, 0x08, 0x08 }, // 0xC0
{ 0x08, 0x08, 0x08, 0x0F, 0x08, 0x08 }, // 0xC1
{ 0x08, 0x08, 0x08, 0xF8, 0x08, 0x08 }, // 0xC2
{ 0x00, 0x00, 0x00, 0xFF, 0x08, 0x08 }, // 0xC3
{ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08 }, // 0xC4
{ 0x08, 0x08, 0x08, 0xFF, 0x08, 0x08 }, // 0xC5
{ 0x00, 0x20, 0x56, 0x55, 0x56, 0x79 }, // 0xC6
{ 0x00, 0x70, 0x2A, 0x25, 0x2A, 0x71 }, // 0xC7
{ 0x00, 0x0F, 0x08, 0x0B, 0x0A, 0x0A }, // 0xC8
{ 0x00, 0xFE, 0x02, 0xFA, 0x0A, 0x0A }, // 0xC9
{ 0x0A, 0x0B, 0x08, 0x0B, 0x0A, 0x0A }, // 0xCA
{ 0x0A, 0xFA, 0x02, 0xFA, 0x0A, 0x0A }, // 0xCB
{ 0x00, 0xFF, 0x00, 0xFB, 0x0A, 0x0A }, // 0xCC
{ 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A }, // 0xCD
{ 0x0A, 0xFB, 0x00, 0xFB, 0x0A, 0x0A }, // 0xCE
{ 0x00, 0x5D, 0x22, 0x22, 0x22, 0x5D }, // 0xCF
{ 0x00, 0x22, 0x55, 0x59, 0x30, 0x00 }, // 0xD0
{ 0x00, 0x08, 0x7F, 0x49, 0x41, 0x3E }, // 0xD1
{ 0x00, 0x7C, 0x55, 0x55, 0x55, 0x44 }, // 0xD2
{ 0x00, 0x7C, 0x55, 0x54, 0x55, 0x44 }, // 0xD3
{ 0x00, 0x7C, 0x55, 0x55, 0x54, 0x44 }, // 0xD4
{ 0x00, 0x00, 0x00, 0x07, 0x00, 0x00 }, // 0xD5
{ 0x00, 0x00, 0x44, 0x7D, 0x45, 0x00 }, // 0xD6
{ 0x00, 0x00, 0x45, 0x7D, 0x45, 0x00 }, // 0xD7
{ 0x00, 0x00, 0x45, 0x7C, 0x45, 0x00 }, // 0xD8
{ 0x08, 0x08, 0x08, 0x0F, 0x00, 0x00 }, // 0xD9
{ 0x00, 0x00, 0x00, 0xF8, 0x08, 0x08 }, // 0xDA
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, // 0xDB
{ 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0 }, // 0xDC
{ 0x00, 0x00, 0x00, 0x77, 0x00, 0x00 }, // 0xDD
{ 0x00, 0x00, 0x45, 0x7D, 0x44, 0x00 }, // 0xDE
{ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F }, // 0xDF
{ 0x00, 0x3C, 0x42, 0x43, 0x3D, 0x00 }, // 0xE0
{ 0x00, 0xFE, 0x4A, 0x4A, 0x34, 0x00 }, // 0xE1
{ 0x00, 0x3C, 0x43, 0x43, 0x3D, 0x00 }, // 0xE2
{ 0x00, 0x3D, 0x43, 0x42, 0x3C, 0x00 }, // 0xE3
{ 0x00, 0x32, 0x49, 0x4A, 0x31, 0x00 }, // 0xE4
{ 0x00, 0x3A, 0x45, 0x46, 0x39, 0x00 }, // 0xE5
{ 0x00, 0xFC, 0x20, 0x20, 0x1C, 0x00 }, // 0xE6
{ 0x00, 0xFE, 0xAA, 0x28, 0x10, 0x00 }, // 0xE7
{ 0x00, 0xFF, 0xA5, 0x24, 0x18, 0x00 }, // 0xE8
{ 0x00, 0x3C, 0x40, 0x41, 0x3D, 0x00 }, // 0xE9
{ 0x00, 0x3C, 0x41, 0x41, 0x3D, 0x00 }, // 0xEA
{ 0x00, 0x3D, 0x41, 0x40, 0x3C, 0x00 }, // 0xEB
{ 0x00, 0x9C, 0xA0, 0x61, 0x3D, 0x00 }, // 0xEC
{ 0x00, 0x04, 0x08, 0x71, 0x09, 0x04 }, // 0xED
{ 0x00, 0x00, 0x02, 0x02, 0x02, 0x00 }, // 0xEE
{ 0x00, 0x00, 0x07, 0x03, 0x00, 0x00 }, // 0xEF
{ 0x00, 0x00, 0x08, 0x08, 0x08, 0x00 }, // 0xF0
{ 0x00, 0x00, 0x24, 0x2E, 0x24, 0x00 }, // 0xF1
{ 0x00, 0x24, 0x24, 0x24, 0x24, 0x24 }, // 0xF2
{ 0x05, 0x17, 0x0A, 0x34, 0x2A, 0x78 }, // 0xF3
{ 0x00, 0x06, 0x09, 0x7F, 0x01, 0x7F }, // 0xF4
{ 0x00, 0x22, 0x4D, 0x55, 0x59, 0x22 }, // 0xF5
{ 0x00, 0x08, 0x08, 0x2A, 0x08, 0x08 }, // 0xF6
{ 0x00, 0x00, 0x08, 0x18, 0x18, 0x00 }, // 0xF7
{ 0x00, 0x06, 0x09, 0x09, 0x06, 0x00 }, // 0xF8
{ 0x00, 0x00, 0x08, 0x00, 0x08, 0x00 }, // 0xF9
{ 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 }, // 0xFA
{ 0x00, 0x02, 0x0F, 0x00, 0x00, 0x00 }, // 0xFB
{ 0x00, 0x09, 0x0F, 0x05, 0x00, 0x00 }, // 0xFC
{ 0x00, 0x09, 0x0D, 0x0A, 0x00, 0x00 }, // 0xFD
{ 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x00 }, // 0xFE
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } // 0xFF
};
/**
* \brief Clears the entire display
*/
void screen_Clear(void) {
uint16_t i;
for (i = 0; i < 1024; i++)
display.buffer[i] = 0;
display.updateTime = timer_SetTimeout(2);
}
/*
* \brief Sets or clears a specific pixel in the display data buffer
*
* \param x X-coordinate, (left = 0, right = 127)
* \param y Y-coordinate, (up = 0, down = 63)
* \param s new pixel state (PIXEL_OFF or PIXEL_ON)
*/
void screen_SetPixel(uint8_t x, uint8_t y, PixelState_t s) {
if (x >= 128 || y >= 64)
return;
// calculate byteoffset
uint16_t byte = x + (y / 8) * 128;
uint8_t bit = 1 << (y % 8);
if (s == PIXEL_ON) {
display.buffer[byte] |= bit;
} else {
display.buffer[byte] &= ~bit;
}
display.updateTime = timer_SetTimeout(2);
}
/**
* \brief Writes an entire byte (8 vertical pixel) in the display data buffer
*
* \param x X-coordinate, (left = 0, right = 127)
* \param page Y-coordinate (up = 0, down = 7)
* \param b Byte containing the pixeldata
*/
void screen_SetByte(uint8_t x, uint8_t page, uint8_t b) {
if (x >= 128 || page >= 8)
return;
display.buffer[x + page * 128] = b;
display.updateTime = timer_SetTimeout(2);
}
void screen_VerticalLine(uint8_t x, uint8_t y, uint8_t length) {
uint8_t s = y;
for (; y < s + length; y++) {
screen_SetPixel(x, y, PIXEL_ON);
}
}
void screen_HorizontalLine(uint8_t x, uint8_t y, uint8_t length) {
uint8_t s = x;
for (; x < s + length; x++) {
screen_SetPixel(x, y, PIXEL_ON);
}
}
void screen_Line(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1) {
uint8_t dx = abs(x1 - x0), sx = x0 < x1 ? 1 : -1;
uint8_t dy = abs(y1 - y0), sy = y0 < y1 ? 1 : -1;
int8_t err = (dx > dy ? dx : -dy) / 2, e2;
for (;;) {
screen_SetPixel(x0, y0, PIXEL_ON);
if (x0 == x1 && y0 == y1)
break;
e2 = err;
if (e2 > -dx) {
err -= dy;
x0 += sx;
}
if (e2 < dy) {
err += dx;
y0 += sy;
}
}
}
void screen_Circle(int x0, int y0, int radius) {
int f = 1 - radius;
int ddF_x = 0;
int ddF_y = -2 * radius;
int x = 0;
int y = radius;
screen_SetPixel(x0, y0 + radius, PIXEL_ON);
screen_SetPixel(x0, y0 - radius, PIXEL_ON);
screen_SetPixel(x0 + radius, y0, PIXEL_ON);
screen_SetPixel(x0 - radius, y0, PIXEL_ON);
while (x < y) {
if (f >= 0) {
y--;
ddF_y += 2;
f += ddF_y;
}
x++;
ddF_x += 2;
f += ddF_x + 1;
screen_SetPixel(x0 + x, y0 + y, PIXEL_ON);
screen_SetPixel(x0 - x, y0 + y, PIXEL_ON);
screen_SetPixel(x0 + x, y0 - y, PIXEL_ON);
screen_SetPixel(x0 - x, y0 - y, PIXEL_ON);
screen_SetPixel(x0 + y, y0 + x, PIXEL_ON);
screen_SetPixel(x0 - y, y0 + x, PIXEL_ON);
screen_SetPixel(x0 + y, y0 - x, PIXEL_ON);
screen_SetPixel(x0 - y, y0 - x, PIXEL_ON);
}
}
/**
* \brief Draws a rectangle on the screen
*
* \param x1 X-coordinate of top left corner
* \param y1 Y-coordinate of top left corner
* \param x2 X-coordinate of bottom right corner
* \param y2 Y-coordinate of bottom right corner
*/
void screen_Rectangle(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2) {
uint8_t i;
for (i = x1; i <= x2; i++) {
screen_SetPixel(i, y1, PIXEL_ON);
screen_SetPixel(i, y2, PIXEL_ON);
}
for (i = y1 + 1; i < y2; i++) {
screen_SetPixel(x1, i, PIXEL_ON);
screen_SetPixel(x2, i, PIXEL_ON);
}
}
/**
* \brief Writes a 12x16 font character into the display data buffer
*
* Function is fast because it transfers the character into the
* buffer by copying the whole bytes. This also limits the y-coordinate
* to full pages (e.i. every 8th row)
* \param x X-coordinate, (left = 0, right = 127)
* \param ypage Y-coordinate (up = 0, down = 6)
* \param c Character to be displayed
*/
void screen_FastChar12x16(char c, uint8_t x, uint8_t ypage) {
if (x >= 128 || ypage >= 7)
return;
uint8_t i;
for (i = 0; i < 12; i++) {
screen_SetByte(x + i, ypage, font12x16[(uint8_t) c][i * 2 + 1]);
screen_SetByte(x + i, ypage + 1, font12x16[(uint8_t) c][i * 2]);
}
}
void screen_InvertChar12x16(uint8_t x, uint8_t ypage) {
if (x >= 128 || ypage >= 7)
return;
uint8_t i;
for (i = 0; i < 12; i++) {
display.buffer[x + i + ypage * 128] ^= 0xFF;
display.buffer[x + i + (ypage + 1) * 128] ^= 0xFF;
display.updateTime = timer_SetTimeout(2);
}
}
/**
* \brief Writes a 6x8 font character into the display data buffer
*
* Function is fast because it transfers the character into the
* buffer by copying the whole bytes. This also limits the y-coordinate
* to full pages (e.i. every 8th row)
* \param x X-coordinate, (left = 0, right = 127)
* \param ypage Y-coordinate (up = 0, down = 7)
* \param c Character to be displayed
*/
void screen_FastChar6x8(char c, uint8_t x, uint8_t ypage) {
if (x >= 128 || ypage >= 8)
return;
uint8_t i;
for (i = 0; i < 6; i++) {
screen_SetByte(x + i, ypage, font6x8[(uint8_t) c][i]);
}
}
void screen_InvertChar6x8(uint8_t x, uint8_t ypage) {
if (x >= 128 || ypage >= 8)
return;
uint8_t i;
for (i = 0; i < 6; i++) {
display.buffer[x + i + ypage * 128] ^= 0xFF;
display.updateTime = timer_SetTimeout(2);
}
}
/**
* \brief Writes a 12x16 string into the display data buffer
*
* Uses screen_FastChar12x16(), thus it is also limited to
* full pages in the y-coordinate.
*
* \param src Pointer to the string
* \param x X-coordinate, (left = 0, right = 127)
* \param ypage Y-coordinate (up = 0, down = 6)
*/
void screen_FastString12x16(const char *src, uint8_t x, uint8_t ypage) {
while (*src) {
screen_FastChar12x16(*src++, x, ypage);
x += 12;
}
}
/**
* \brief Writes a 6x8 string into the display data buffer
*
* Uses screen_FastChar6x8(), thus it is also limited to
* full pages in the y-coordinate.
*
* \param src Pointer to the string
* \param x X-coordinate, (left = 0, right = 127)
* \param ypage Y-coordinate (up = 0, down = 7)
*/
void screen_FastString6x8(const char *src, uint8_t x, uint8_t ypage) {
while (*src) {
screen_FastChar6x8(*src++, x, ypage);
x += 6;
}
}
void screen_SetSoftButton(const char *descr, uint8_t num) {
// calculate descr length to center text (up to 6 chars)
uint8_t length;
for (length = 0; descr[length] != 0; length++)
;
// calculate text start
uint8_t start = 20 + 44 * num - length * 6 / 2;
// draw box outline
screen_VerticalLine(44 * num, 55, 9);
screen_VerticalLine(44 * num + 39, 55, 9);
screen_HorizontalLine(44 * num + 1, 54, 38);
// set text
screen_FastString6x8(descr, start, 7);
}
void screen_Text6x8(const char *src, uint8_t x, uint8_t ypage) {
uint8_t xbuf = x;
while (*src) {
// try to display next word
char *c = src;
uint8_t wordlength = 0;
while (*c != ' ' && *c) {
wordlength++;
c++;
}
if (xbuf + wordlength * 6 > 128) {
// word doesn't fit in any line
// -> write it with line break
while (*src != ' ' && *src) {
screen_FastChar6x8(*src++, x, ypage);
x += 6;
if (x >= 128) {
ypage++;
x = xbuf;
if (ypage > 7) {
// screen is full -> abort
return;
}
}
}
} else if (x + wordlength * 6 > 128) {
// the word doesn't fit into current line
// -> switch to next line
x = xbuf;
ypage++;
if (ypage > 7) {
// screen is full -> abort
return;
}
while (*src != ' ' && *src) {
screen_FastChar6x8(*src++, x, ypage);
x += 6;
}
} else {
// word fits into current line
while (*src != ' ' && *src) {
screen_FastChar6x8(*src++, x, ypage);
x += 6;
}
}
if (*src == ' ') {
// skip spaces
src++;
if (x <= 116) {
// enough room for 'space'
x += 6;
} else {
// end of line, start next word at next line
// -> switch to next line
x = xbuf;
ypage++;
if (ypage > 7) {
// screen is full -> abort
return;
}
}
}
}
}
e647ba0b8This file is pinned to the selected release. Download the original to open it in your design tool.