I simplified the library "ILI9225_TFT" provided by Arman Safikhani to better suit my needs in implementing a simple sliding puzzle game.

Files at this revision

API Documentation at this revision

Comitter:
blac3777
Date:
Fri Apr 27 07:33:56 2018 +0000
Parent:
2:cc93245bb6d0
Commit message:
I simplified the library "ILI9225_TFT" provided by Arman Safikhani to suit my needs in implementing a simple sliding puzzle game.

Changed in this revision

DefaultFonts.h Show diff for this revision Revisions of this file
EN_FA_font.h Show diff for this revision Revisions of this file
Effects.h Show annotated file Show diff for this revision Revisions of this file
FAmap.h Show diff for this revision Revisions of this file
Fonts.h Show annotated file Show diff for this revision Revisions of this file
ILI9225.cpp Show annotated file Show diff for this revision Revisions of this file
ILI9225.h Show annotated file Show diff for this revision Revisions of this file
States.h Show annotated file Show diff for this revision Revisions of this file
TFT_22_ILI9225.cpp Show diff for this revision Revisions of this file
TFT_22_ILI9225.h Show diff for this revision Revisions of this file
--- a/DefaultFonts.h	Tue Sep 01 12:16:09 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,351 +0,0 @@
-#define fontdatatype const uint8_t
-
-
-//Font Generated by MikroElektronika GLCD Font Creator 1.2.0.0
-//MikroElektronika 2011 
-//http://www.mikroe.com 
-
-//GLCD FontName : Terminal6x8
-//GLCD FontSize : 6 x 8
-
-uint8_t Terminal6x8[]  = {
-    0x06, 0x08, 0x20, 0x60,
-    0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char  
-    0x05, 0x00, 0x00, 0x06, 0x5F, 0x06, 0x00,  // Code for char !
-    0x06, 0x00, 0x07, 0x03, 0x00, 0x07, 0x03,  // Code for char "
-    0x06, 0x00, 0x24, 0x7E, 0x24, 0x7E, 0x24,  // Code for char #
-    0x05, 0x00, 0x24, 0x2B, 0x6A, 0x12, 0x00,  // Code for char $
-    0x06, 0x00, 0x63, 0x13, 0x08, 0x64, 0x63,  // Code for char %
-    0x06, 0x00, 0x36, 0x49, 0x56, 0x20, 0x50,  // Code for char &
-    0x04, 0x00, 0x00, 0x07, 0x03, 0x00, 0x00,  // Code for char '
-    0x04, 0x00, 0x00, 0x3E, 0x41, 0x00, 0x00,  // Code for char (
-    0x04, 0x00, 0x00, 0x41, 0x3E, 0x00, 0x00,  // Code for char )
-    0x06, 0x00, 0x08, 0x3E, 0x1C, 0x3E, 0x08,  // Code for char *
-    0x06, 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08,  // Code for char +
-    0x04, 0x00, 0x00, 0xE0, 0x60, 0x00, 0x00,  // Code for char ,
-    0x06, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08,  // Code for char -
-    0x04, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,  // Code for char .
-    0x06, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02,  // Code for char /
-    0x06, 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E,  // Code for char 0
-    0x05, 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00,  // Code for char 1
-    0x06, 0x00, 0x62, 0x51, 0x49, 0x49, 0x46,  // Code for char 2
-    0x06, 0x00, 0x22, 0x49, 0x49, 0x49, 0x36,  // Code for char 3
-    0x06, 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10,  // Code for char 4
-    0x06, 0x00, 0x2F, 0x49, 0x49, 0x49, 0x31,  // Code for char 5
-    0x06, 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30,  // Code for char 6
-    0x06, 0x00, 0x01, 0x71, 0x09, 0x05, 0x03,  // Code for char 7
-    0x06, 0x00, 0x36, 0x49, 0x49, 0x49, 0x36,  // Code for char 8
-    0x06, 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E,  // Code for char 9
-    0x04, 0x00, 0x00, 0x6C, 0x6C, 0x00, 0x00,  // Code for char :
-    0x04, 0x00, 0x00, 0xEC, 0x6C, 0x00, 0x00,  // Code for char ;
-    0x05, 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,  // Code for char <
-    0x06, 0x00, 0x24, 0x24, 0x24, 0x24, 0x24,  // Code for char =
-    0x06, 0x00, 0x00, 0x41, 0x22, 0x14, 0x08,  // Code for char >
-    0x06, 0x00, 0x02, 0x01, 0x59, 0x09, 0x06,  // Code for char ?
-    0x06, 0x00, 0x3E, 0x41, 0x5D, 0x55, 0x1E,  // Code for char @
-    0x06, 0x00, 0x7E, 0x11, 0x11, 0x11, 0x7E,  // Code for char A
-    0x06, 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36,  // Code for char B
-    0x06, 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22,  // Code for char C
-    0x06, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x3E,  // Code for char D
-    0x06, 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41,  // Code for char E
-    0x06, 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01,  // Code for char F
-    0x06, 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A,  // Code for char G
-    0x06, 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F,  // Code for char H
-    0x05, 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00,  // Code for char I
-    0x06, 0x00, 0x30, 0x40, 0x40, 0x40, 0x3F,  // Code for char J
-    0x06, 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41,  // Code for char K
-    0x06, 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40,  // Code for char L
-    0x06, 0x00, 0x7F, 0x02, 0x04, 0x02, 0x7F,  // Code for char M
-    0x06, 0x00, 0x7F, 0x02, 0x04, 0x08, 0x7F,  // Code for char N
-    0x06, 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E,  // Code for char O
-    0x06, 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06,  // Code for char P
-    0x06, 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E,  // Code for char Q
-    0x06, 0x00, 0x7F, 0x09, 0x09, 0x19, 0x66,  // Code for char R
-    0x06, 0x00, 0x26, 0x49, 0x49, 0x49, 0x32,  // Code for char S
-    0x06, 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01,  // Code for char T
-    0x06, 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F,  // Code for char U
-    0x06, 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F,  // Code for char V
-    0x06, 0x00, 0x3F, 0x40, 0x3C, 0x40, 0x3F,  // Code for char W
-    0x06, 0x00, 0x63, 0x14, 0x08, 0x14, 0x63,  // Code for char X
-    0x06, 0x00, 0x07, 0x08, 0x70, 0x08, 0x07,  // Code for char Y
-    0x05, 0x00, 0x71, 0x49, 0x45, 0x43, 0x00,  // Code for char Z
-    0x05, 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00,  // Code for char [
-    0x06, 0x00, 0x02, 0x04, 0x08, 0x10, 0x20,  // Code for char BackSlash
-    0x05, 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00,  // Code for char ]
-    0x06, 0x00, 0x04, 0x02, 0x01, 0x02, 0x04,  // Code for char ^
-    0x06, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,  // Code for char _
-    0x04, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00,  // Code for char `
-    0x06, 0x00, 0x20, 0x54, 0x54, 0x54, 0x78,  // Code for char a
-    0x06, 0x00, 0x7F, 0x44, 0x44, 0x44, 0x38,  // Code for char b
-    0x06, 0x00, 0x38, 0x44, 0x44, 0x44, 0x28,  // Code for char c
-    0x06, 0x00, 0x38, 0x44, 0x44, 0x44, 0x7F,  // Code for char d
-    0x06, 0x00, 0x38, 0x54, 0x54, 0x54, 0x08,  // Code for char e
-    0x05, 0x00, 0x08, 0x7E, 0x09, 0x09, 0x00,  // Code for char f
-    0x06, 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C,  // Code for char g
-    0x05, 0x00, 0x7F, 0x04, 0x04, 0x78, 0x00,  // Code for char h
-    0x05, 0x00, 0x00, 0x00, 0x7D, 0x40, 0x00,  // Code for char i
-    0x05, 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00,  // Code for char j
-    0x05, 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00,  // Code for char k
-    0x05, 0x00, 0x00, 0x00, 0x7F, 0x40, 0x00,  // Code for char l
-    0x06, 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78,  // Code for char m
-    0x05, 0x00, 0x7C, 0x04, 0x04, 0x78, 0x00,  // Code for char n
-    0x06, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38,  // Code for char o
-    0x06, 0x00, 0xFC, 0x44, 0x44, 0x44, 0x38,  // Code for char p
-    0x06, 0x00, 0x38, 0x44, 0x44, 0x44, 0xFC,  // Code for char q
-    0x06, 0x00, 0x44, 0x78, 0x44, 0x04, 0x08,  // Code for char r
-    0x06, 0x00, 0x08, 0x54, 0x54, 0x54, 0x20,  // Code for char s
-    0x05, 0x00, 0x04, 0x3E, 0x44, 0x24, 0x00,  // Code for char t
-    0x05, 0x00, 0x3C, 0x40, 0x20, 0x7C, 0x00,  // Code for char u
-    0x06, 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C,  // Code for char v
-    0x06, 0x00, 0x3C, 0x60, 0x30, 0x60, 0x3C,  // Code for char w
-    0x05, 0x00, 0x6C, 0x10, 0x10, 0x6C, 0x00,  // Code for char x
-    0x05, 0x00, 0x9C, 0xA0, 0x60, 0x3C, 0x00,  // Code for char y
-    0x05, 0x00, 0x64, 0x54, 0x54, 0x4C, 0x00,  // Code for char z
-    0x05, 0x00, 0x08, 0x3E, 0x41, 0x41, 0x00,  // Code for char {
-    0x04, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00,  // Code for char |
-    0x06, 0x00, 0x00, 0x41, 0x41, 0x3E, 0x08,  // Code for char }
-    0x05, 0x00, 0x02, 0x01, 0x02, 0x01, 0x00,  // Code for char ~
-    0x06, 0x00, 0x3C, 0x26, 0x23, 0x26, 0x3C   // Code for char 
-};
-
-
-//Font Generated by MikroElektronika GLCD Font Creator 1.2.0.0
-//MikroElektronika 2011 
-//http://www.mikroe.com 
-
-//GLCD FontName : Terminal11x16
-//GLCD FontSize : 11 x 16
-
-uint8_t Terminal11x16[]  = {
-    0x0B, 0x10, 0x20, 0x60,
-    0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char  
-    0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xFF, 0x33, 0xFF, 0x33, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char !
-    0x08, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char "
-    0x0B, 0x00, 0x02, 0x10, 0x1E, 0x90, 0x1F, 0xF0, 0x03, 0x7E, 0x02, 0x1E, 0x1E, 0x90, 0x1F, 0xF0, 0x03, 0x7E, 0x02, 0x1E, 0x00, 0x10, 0x00,  // Code for char #
-    0x09, 0x00, 0x00, 0x78, 0x04, 0xFC, 0x0C, 0xCC, 0x0C, 0xFF, 0x3F, 0xFF, 0x3F, 0xCC, 0x0C, 0xCC, 0x0F, 0x88, 0x07, 0x00, 0x00, 0x00, 0x00,  // Code for char $
-    0x0B, 0x00, 0x30, 0x38, 0x38, 0x38, 0x1C, 0x38, 0x0E, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x38, 0x70, 0x38, 0x38, 0x38, 0x1C, 0x00,  // Code for char %
-    0x0A, 0x00, 0x00, 0x00, 0x1F, 0xB8, 0x3F, 0xFC, 0x31, 0xC6, 0x21, 0xE2, 0x37, 0x3E, 0x1E, 0x1C, 0x1C, 0x00, 0x36, 0x00, 0x22, 0x00, 0x00,  // Code for char &
-    0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char '
-    0x08, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x03, 0xFC, 0x0F, 0xFE, 0x1F, 0x07, 0x38, 0x01, 0x20, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char (
-    0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x01, 0x20, 0x07, 0x38, 0xFE, 0x1F, 0xFC, 0x0F, 0xF0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char )
-    0x09, 0x00, 0x00, 0x98, 0x0C, 0xB8, 0x0E, 0xE0, 0x03, 0xF8, 0x0F, 0xF8, 0x0F, 0xE0, 0x03, 0xB8, 0x0E, 0x98, 0x0C, 0x00, 0x00, 0x00, 0x00,  // Code for char *
-    0x09, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xF0, 0x0F, 0xF0, 0x0F, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,  // Code for char +
-    0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ,
-    0x09, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,  // Code for char -
-    0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char .
-    0x0B, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00,  // Code for char /
-    0x0B, 0xF8, 0x07, 0xFE, 0x1F, 0x06, 0x1E, 0x03, 0x33, 0x83, 0x31, 0xC3, 0x30, 0x63, 0x30, 0x33, 0x30, 0x1E, 0x18, 0xFE, 0x1F, 0xF8, 0x07,  // Code for char 0
-    0x0A, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x30, 0x0C, 0x30, 0x0E, 0x30, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00,  // Code for char 1
-    0x0B, 0x1C, 0x30, 0x1E, 0x38, 0x07, 0x3C, 0x03, 0x3E, 0x03, 0x37, 0x83, 0x33, 0xC3, 0x31, 0xE3, 0x30, 0x77, 0x30, 0x3E, 0x30, 0x1C, 0x30,  // Code for char 2
-    0x0B, 0x0C, 0x0C, 0x0E, 0x1C, 0x07, 0x38, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xE7, 0x39, 0x7E, 0x1F, 0x3C, 0x0E,  // Code for char 3
-    0x0B, 0xC0, 0x03, 0xE0, 0x03, 0x70, 0x03, 0x38, 0x03, 0x1C, 0x03, 0x0E, 0x03, 0x07, 0x03, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x03, 0x00, 0x03,  // Code for char 4
-    0x0B, 0x3F, 0x0C, 0x7F, 0x1C, 0x63, 0x38, 0x63, 0x30, 0x63, 0x30, 0x63, 0x30, 0x63, 0x30, 0x63, 0x30, 0xE3, 0x38, 0xC3, 0x1F, 0x83, 0x0F,  // Code for char 5
-    0x0B, 0xC0, 0x0F, 0xF0, 0x1F, 0xF8, 0x39, 0xDC, 0x30, 0xCE, 0x30, 0xC7, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x39, 0x80, 0x1F, 0x00, 0x0F,  // Code for char 6
-    0x0B, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x30, 0x03, 0x3C, 0x03, 0x0F, 0xC3, 0x03, 0xF3, 0x00, 0x3F, 0x00, 0x0F, 0x00, 0x03, 0x00,  // Code for char 7
-    0x0B, 0x00, 0x0F, 0xBC, 0x1F, 0xFE, 0x39, 0xE7, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xE7, 0x30, 0xFE, 0x39, 0xBC, 0x1F, 0x00, 0x0F,  // Code for char 8
-    0x0B, 0x3C, 0x00, 0x7E, 0x00, 0xE7, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x38, 0xC3, 0x1C, 0xC3, 0x0E, 0xE7, 0x07, 0xFE, 0x03, 0xFC, 0x00,  // Code for char 9
-    0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x1C, 0x70, 0x1C, 0x70, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char :
-    0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x9C, 0x70, 0xFC, 0x70, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ;
-    0x09, 0x00, 0x00, 0xC0, 0x00, 0xE0, 0x01, 0xF0, 0x03, 0x38, 0x07, 0x1C, 0x0E, 0x0E, 0x1C, 0x07, 0x38, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00,  // Code for char <
-    0x0A, 0x00, 0x00, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x00, 0x00,  // Code for char =
-    0x09, 0x00, 0x00, 0x03, 0x30, 0x07, 0x38, 0x0E, 0x1C, 0x1C, 0x0E, 0x38, 0x07, 0xF0, 0x03, 0xE0, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char >
-    0x0A, 0x1C, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0x00, 0x83, 0x37, 0xC3, 0x37, 0xE3, 0x00, 0x77, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x00, 0x00,  // Code for char ?
-    0x0B, 0xF8, 0x0F, 0xFE, 0x1F, 0x07, 0x18, 0xF3, 0x33, 0xFB, 0x37, 0x1B, 0x36, 0xFB, 0x37, 0xFB, 0x37, 0x07, 0x36, 0xFE, 0x03, 0xF8, 0x01,  // Code for char @
-    0x0A, 0x00, 0x38, 0x00, 0x3F, 0xE0, 0x07, 0xFC, 0x06, 0x1F, 0x06, 0x1F, 0x06, 0xFC, 0x06, 0xE0, 0x07, 0x00, 0x3F, 0x00, 0x38, 0x00, 0x00,  // Code for char A
-    0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xE7, 0x30, 0xFE, 0x39, 0xBC, 0x1F, 0x00, 0x0F, 0x00, 0x00,  // Code for char B
-    0x0A, 0xF0, 0x03, 0xFC, 0x0F, 0x0E, 0x1C, 0x07, 0x38, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x07, 0x38, 0x0E, 0x1C, 0x0C, 0x0C, 0x00, 0x00,  // Code for char C
-    0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x07, 0x38, 0x0E, 0x1C, 0xFC, 0x0F, 0xF0, 0x03, 0x00, 0x00,  // Code for char D
-    0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0x03, 0x30, 0x03, 0x30, 0x00, 0x00,  // Code for char E
-    0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00,  // Code for char F
-    0x0A, 0xF0, 0x03, 0xFC, 0x0F, 0x0E, 0x1C, 0x07, 0x38, 0x03, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC7, 0x3F, 0xC6, 0x3F, 0x00, 0x00,  // Code for char G
-    0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00,  // Code for char H
-    0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x03, 0x30, 0xFF, 0x3F, 0xFF, 0x3F, 0x03, 0x30, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char I
-    0x0A, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x38, 0xFF, 0x1F, 0xFF, 0x07, 0x00, 0x00,  // Code for char J
-    0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0xC0, 0x00, 0xE0, 0x01, 0xF0, 0x03, 0x38, 0x07, 0x1C, 0x0E, 0x0E, 0x1C, 0x07, 0x38, 0x03, 0x30, 0x00, 0x00,  // Code for char K
-    0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00,  // Code for char L
-    0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0x1E, 0x00, 0x78, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0x78, 0x00, 0x1E, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00,  // Code for char M
-    0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0x0E, 0x00, 0x38, 0x00, 0xF0, 0x00, 0xC0, 0x03, 0x00, 0x07, 0x00, 0x1C, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00,  // Code for char N
-    0x0A, 0xF0, 0x03, 0xFC, 0x0F, 0x0E, 0x1C, 0x07, 0x38, 0x03, 0x30, 0x03, 0x30, 0x07, 0x38, 0x0E, 0x1C, 0xFC, 0x0F, 0xF0, 0x03, 0x00, 0x00,  // Code for char O
-    0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0x83, 0x01, 0x83, 0x01, 0x83, 0x01, 0x83, 0x01, 0x83, 0x01, 0xC7, 0x01, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0x00,  // Code for char P
-    0x0A, 0xF0, 0x03, 0xFC, 0x0F, 0x0E, 0x1C, 0x07, 0x38, 0x03, 0x30, 0x03, 0x36, 0x07, 0x3E, 0x0E, 0x1C, 0xFC, 0x3F, 0xF0, 0x33, 0x00, 0x00,  // Code for char Q
-    0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0x83, 0x01, 0x83, 0x01, 0x83, 0x03, 0x83, 0x07, 0x83, 0x0F, 0xC7, 0x1D, 0xFE, 0x38, 0x7C, 0x30, 0x00, 0x00,  // Code for char R
-    0x0A, 0x3C, 0x0C, 0x7E, 0x1C, 0xE7, 0x38, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC7, 0x39, 0x8E, 0x1F, 0x0C, 0x0F, 0x00, 0x00,  // Code for char S
-    0x09, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char T
-    0x0A, 0xFF, 0x07, 0xFF, 0x1F, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x38, 0xFF, 0x1F, 0xFF, 0x07, 0x00, 0x00,  // Code for char U
-    0x0A, 0x07, 0x00, 0x3F, 0x00, 0xF8, 0x01, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0x3E, 0xC0, 0x0F, 0xF8, 0x01, 0x3F, 0x00, 0x07, 0x00, 0x00, 0x00,  // Code for char V
-    0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x1C, 0x00, 0x06, 0x80, 0x03, 0x80, 0x03, 0x00, 0x06, 0x00, 0x1C, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00,  // Code for char W
-    0x0A, 0x03, 0x30, 0x0F, 0x3C, 0x1C, 0x0E, 0x30, 0x03, 0xE0, 0x01, 0xE0, 0x01, 0x30, 0x03, 0x1C, 0x0E, 0x0F, 0x3C, 0x03, 0x30, 0x00, 0x00,  // Code for char X
-    0x0A, 0x03, 0x00, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x00, 0xC0, 0x3F, 0xC0, 0x3F, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0x00, 0x00, 0x00,  // Code for char Y
-    0x0A, 0x03, 0x30, 0x03, 0x3C, 0x03, 0x3E, 0x03, 0x33, 0xC3, 0x31, 0xE3, 0x30, 0x33, 0x30, 0x1F, 0x30, 0x0F, 0x30, 0x03, 0x30, 0x00, 0x00,  // Code for char Z
-    0x08, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char [
-    0x0B, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x18,  // Code for char BackSlash
-    0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ]
-    0x0B, 0x60, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0x60, 0x00,  // Code for char ^
-    0x0B, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0,  // Code for char _
-    0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x7E, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char `
-    0x0A, 0x00, 0x1C, 0x40, 0x3E, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0xE0, 0x3F, 0xC0, 0x3F, 0x00, 0x00,  // Code for char a
-    0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0xC0, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0xE0, 0x38, 0xC0, 0x1F, 0x80, 0x0F, 0x00, 0x00,  // Code for char b
-    0x0A, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x38, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0xC0, 0x18, 0x80, 0x08, 0x00, 0x00,  // Code for char c
-    0x0A, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x38, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0xE0, 0x30, 0xC0, 0x30, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00,  // Code for char d
-    0x0A, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x3B, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0xC0, 0x13, 0x80, 0x01, 0x00, 0x00,  // Code for char e
-    0x08, 0xC0, 0x00, 0xC0, 0x00, 0xFC, 0x3F, 0xFE, 0x3F, 0xC7, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char f
-    0x0A, 0x80, 0x03, 0xC0, 0xC7, 0xE0, 0xCE, 0x60, 0xCC, 0x60, 0xCC, 0x60, 0xCC, 0x60, 0xCC, 0x60, 0xE6, 0xE0, 0x7F, 0xE0, 0x3F, 0x00, 0x00,  // Code for char g
-    0x09, 0xFF, 0x3F, 0xFF, 0x3F, 0xC0, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xC0, 0x3F, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00,  // Code for char h
-    0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0x30, 0xEC, 0x3F, 0xEC, 0x3F, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char i
-    0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xC0, 0x60, 0xC0, 0xEC, 0xFF, 0xEC, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char j
-    0x09, 0x00, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x03, 0x80, 0x07, 0xC0, 0x0F, 0xE0, 0x1C, 0x60, 0x38, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,  // Code for char k
-    0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x03, 0x30, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char l
-    0x0A, 0xE0, 0x3F, 0xC0, 0x3F, 0xE0, 0x00, 0xE0, 0x00, 0xC0, 0x3F, 0xC0, 0x3F, 0xE0, 0x00, 0xE0, 0x00, 0xC0, 0x3F, 0x80, 0x3F, 0x00, 0x00,  // Code for char m
-    0x0A, 0x00, 0x00, 0xE0, 0x3F, 0xE0, 0x3F, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xC0, 0x3F, 0x80, 0x3F, 0x00, 0x00,  // Code for char n
-    0x0A, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x38, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0xE0, 0x38, 0xC0, 0x1F, 0x80, 0x0F, 0x00, 0x00,  // Code for char o
-    0x0A, 0xE0, 0xFF, 0xE0, 0xFF, 0x60, 0x0C, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0xE0, 0x1C, 0xC0, 0x0F, 0x80, 0x07, 0x00, 0x00,  // Code for char p
-    0x0A, 0x80, 0x07, 0xC0, 0x0F, 0xE0, 0x1C, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x0C, 0xE0, 0xFF, 0xE0, 0xFF, 0x00, 0x00,  // Code for char q
-    0x0A, 0x00, 0x00, 0xE0, 0x3F, 0xE0, 0x3F, 0xC0, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xC0, 0x00, 0x00, 0x00,  // Code for char r
-    0x08, 0xC0, 0x11, 0xE0, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x3F, 0x40, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char s
-    0x08, 0x60, 0x00, 0x60, 0x00, 0xFE, 0x1F, 0xFE, 0x3F, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char t
-    0x0A, 0xE0, 0x0F, 0xE0, 0x1F, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x18, 0xE0, 0x3F, 0xE0, 0x3F, 0x00, 0x00,  // Code for char u
-    0x0A, 0x60, 0x00, 0xE0, 0x01, 0x80, 0x07, 0x00, 0x1E, 0x00, 0x38, 0x00, 0x38, 0x00, 0x1E, 0x80, 0x07, 0xE0, 0x01, 0x60, 0x00, 0x00, 0x00,  // Code for char v
-    0x0A, 0xE0, 0x07, 0xE0, 0x1F, 0x00, 0x38, 0x00, 0x1C, 0xE0, 0x0F, 0xE0, 0x0F, 0x00, 0x1C, 0x00, 0x38, 0xE0, 0x1F, 0xE0, 0x07, 0x00, 0x00,  // Code for char w
-    0x09, 0x60, 0x30, 0xE0, 0x38, 0xC0, 0x1D, 0x80, 0x0F, 0x00, 0x07, 0x80, 0x0F, 0xC0, 0x1D, 0xE0, 0x38, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00,  // Code for char x
-    0x09, 0x00, 0x00, 0x60, 0x00, 0xE0, 0x81, 0x80, 0xE7, 0x00, 0x7E, 0x00, 0x1E, 0x80, 0x07, 0xE0, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char y
-    0x09, 0x60, 0x30, 0x60, 0x38, 0x60, 0x3C, 0x60, 0x36, 0x60, 0x33, 0xE0, 0x31, 0xE0, 0x30, 0x60, 0x30, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00,  // Code for char z
-    0x09, 0x00, 0x00, 0x80, 0x00, 0xC0, 0x01, 0xFC, 0x1F, 0x7E, 0x3F, 0x07, 0x70, 0x03, 0x60, 0x03, 0x60, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00,  // Code for char {
-    0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char |
-    0x09, 0x00, 0x00, 0x03, 0x60, 0x03, 0x60, 0x03, 0x60, 0x07, 0x70, 0x7E, 0x3F, 0xFC, 0x1F, 0xC0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char }
-    0x0A, 0x10, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x10, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x00, 0x00,  // Code for char ~
-    0x0A, 0x00, 0x0F, 0x80, 0x0F, 0xC0, 0x0C, 0x60, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x60, 0x0C, 0xC0, 0x0C, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x00   // Code for char 
-};
-
-
-//Font Generated by MikroElektronika GLCD Font Creator 1.2.0.0
-//MikroElektronika 2011 
-//http://www.mikroe.com 
-
-//GLCD FontName : Terminal12x16
-//GLCD FontSize : 12 x 16
-
-uint8_t Terminal12x16[]  = {
-    0x0C, 0x10, 0x20, 0x60,
-    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,  // Code for char  
-    0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xFF, 0x33, 0xFF, 0x33, 0xFF, 0x33, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char !
-    0x09, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char "
-    0x0C, 0x00, 0x02, 0x10, 0x1E, 0x90, 0x1F, 0xF0, 0x1F, 0xFE, 0x03, 0x7E, 0x1E, 0x9E, 0x1F, 0xF0, 0x1F, 0xFE, 0x03, 0x7E, 0x02, 0x1E, 0x00, 0x10, 0x00,  // Code for char #
-    0x0A, 0x00, 0x00, 0x78, 0x04, 0xFC, 0x0C, 0xFC, 0x0C, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xCC, 0x0F, 0xCC, 0x0F, 0x88, 0x07, 0x00, 0x00, 0x00, 0x00,  // Code for char $
-    0x0C, 0x00, 0x30, 0x38, 0x38, 0x38, 0x3C, 0x38, 0x1E, 0x38, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x39, 0xF0, 0x38, 0x78, 0x38, 0x3C, 0x38, 0x1C, 0x00,  // Code for char %
-    0x0B, 0x00, 0x00, 0x00, 0x1F, 0xB8, 0x3F, 0xFC, 0x3F, 0xFE, 0x31, 0xE6, 0x37, 0xFE, 0x3F, 0x3E, 0x1E, 0x1C, 0x3E, 0x00, 0x36, 0x00, 0x22, 0x00, 0x00,  // Code for char &
-    0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x3F, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char '
-    0x09, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x03, 0xFC, 0x0F, 0xFE, 0x1F, 0xFF, 0x3F, 0x07, 0x38, 0x01, 0x20, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char (
-    0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x01, 0x20, 0x07, 0x38, 0xFF, 0x3F, 0xFE, 0x1F, 0xFC, 0x0F, 0xF0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char )
-    0x0A, 0x00, 0x00, 0x98, 0x0C, 0xB8, 0x0E, 0xF8, 0x0F, 0xF8, 0x0F, 0xF8, 0x0F, 0xF8, 0x0F, 0xF8, 0x0F, 0xB8, 0x0E, 0x98, 0x0C, 0x00, 0x00, 0x00, 0x00,  // Code for char *
-    0x0A, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,  // Code for char +
-    0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ,
-    0x0A, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,  // Code for char -
-    0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char .
-    0x0C, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0E, 0x00,  // Code for char /
-    0x0C, 0xF8, 0x07, 0xFE, 0x1F, 0xFE, 0x1F, 0x07, 0x3F, 0x83, 0x33, 0xC3, 0x31, 0xE3, 0x30, 0x73, 0x30, 0x3F, 0x38, 0xFE, 0x1F, 0xFE, 0x1F, 0xF8, 0x07,  // Code for char 0
-    0x0B, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x30, 0x0C, 0x30, 0x0E, 0x30, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00,  // Code for char 1
-    0x0C, 0x1C, 0x30, 0x1E, 0x38, 0x1F, 0x3C, 0x07, 0x3E, 0x03, 0x3F, 0x83, 0x37, 0xC3, 0x33, 0xE3, 0x31, 0xF7, 0x30, 0x7F, 0x30, 0x3E, 0x30, 0x1C, 0x30,  // Code for char 2
-    0x0C, 0x0C, 0x0C, 0x0E, 0x1C, 0x0F, 0x3C, 0xC7, 0x38, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xE7, 0x39, 0xFF, 0x3F, 0x7E, 0x1F, 0x3C, 0x0E,  // Code for char 3
-    0x0C, 0xC0, 0x03, 0xE0, 0x03, 0xF0, 0x03, 0x78, 0x03, 0x3C, 0x03, 0x1E, 0x03, 0x0F, 0x03, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x03, 0x00, 0x03,  // Code for char 4
-    0x0C, 0x3F, 0x0C, 0x7F, 0x1C, 0x7F, 0x3C, 0x63, 0x38, 0x63, 0x30, 0x63, 0x30, 0x63, 0x30, 0x63, 0x30, 0xE3, 0x38, 0xE3, 0x3F, 0xC3, 0x1F, 0x83, 0x0F,  // Code for char 5
-    0x0C, 0xC0, 0x0F, 0xF0, 0x1F, 0xF8, 0x3F, 0xFC, 0x39, 0xDE, 0x30, 0xCF, 0x30, 0xC7, 0x30, 0xC3, 0x30, 0xC3, 0x39, 0xC3, 0x3F, 0x80, 0x1F, 0x00, 0x0F,  // Code for char 6
-    0x0C, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x30, 0x03, 0x3C, 0x03, 0x3F, 0xC3, 0x0F, 0xF3, 0x03, 0xFF, 0x00, 0x3F, 0x00, 0x0F, 0x00, 0x03, 0x00,  // Code for char 7
-    0x0C, 0x00, 0x0F, 0xBC, 0x1F, 0xFE, 0x3F, 0xFF, 0x39, 0xE7, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xE7, 0x30, 0xFF, 0x39, 0xFE, 0x3F, 0xBC, 0x1F, 0x00, 0x0F,  // Code for char 8
-    0x0C, 0x3C, 0x00, 0x7E, 0x00, 0xFF, 0x30, 0xE7, 0x30, 0xC3, 0x30, 0xC3, 0x38, 0xC3, 0x3C, 0xC3, 0x1E, 0xE7, 0x0F, 0xFF, 0x07, 0xFE, 0x03, 0xFC, 0x00,  // Code for char 9
-    0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x1C, 0x70, 0x1C, 0x70, 0x1C, 0x70, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char :
-    0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x9C, 0x70, 0xFC, 0x70, 0xFC, 0x70, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ;
-    0x0A, 0x00, 0x00, 0xC0, 0x00, 0xE0, 0x01, 0xF0, 0x03, 0xF8, 0x07, 0x3C, 0x0F, 0x1E, 0x1E, 0x0F, 0x3C, 0x07, 0x38, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00,  // Code for char <
-    0x0B, 0x00, 0x00, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x00, 0x00,  // Code for char =
-    0x0A, 0x00, 0x00, 0x03, 0x30, 0x07, 0x38, 0x0F, 0x3C, 0x1E, 0x1E, 0x3C, 0x0F, 0xF8, 0x07, 0xF0, 0x03, 0xE0, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char >
-    0x0B, 0x1C, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x07, 0x00, 0x83, 0x37, 0xC3, 0x37, 0xE3, 0x37, 0xF7, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x00, 0x00,  // Code for char ?
-    0x0C, 0xF8, 0x0F, 0xFE, 0x1F, 0xFF, 0x1F, 0xF7, 0x3B, 0xFB, 0x37, 0xFB, 0x37, 0xFB, 0x37, 0xFB, 0x37, 0xFF, 0x37, 0xFF, 0x37, 0xFE, 0x03, 0xF8, 0x01,  // Code for char @
-    0x0B, 0x00, 0x38, 0x00, 0x3F, 0xE0, 0x3F, 0xFC, 0x07, 0xFF, 0x06, 0x1F, 0x06, 0xFF, 0x06, 0xFC, 0x07, 0xE0, 0x3F, 0x00, 0x3F, 0x00, 0x38, 0x00, 0x00,  // Code for char A
-    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xE7, 0x30, 0xFF, 0x39, 0xFE, 0x3F, 0xBC, 0x1F, 0x00, 0x0F, 0x00, 0x00,  // Code for char B
-    0x0B, 0xF0, 0x03, 0xFC, 0x0F, 0xFE, 0x1F, 0x0F, 0x3C, 0x07, 0x38, 0x03, 0x30, 0x03, 0x30, 0x07, 0x38, 0x0F, 0x3C, 0x0E, 0x1C, 0x0C, 0x0C, 0x00, 0x00,  // Code for char C
-    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x07, 0x38, 0x0F, 0x3C, 0xFE, 0x1F, 0xFC, 0x0F, 0xF0, 0x03, 0x00, 0x00,  // Code for char D
-    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0x03, 0x30, 0x03, 0x30, 0x00, 0x00,  // Code for char E
-    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00,  // Code for char F
-    0x0B, 0xF0, 0x03, 0xFC, 0x0F, 0xFE, 0x1F, 0x0F, 0x3C, 0x07, 0x38, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC7, 0x3F, 0xC7, 0x3F, 0xC6, 0x3F, 0x00, 0x00,  // Code for char G
-    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00,  // Code for char H
-    0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x03, 0x30, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x03, 0x30, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char I
-    0x0B, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x3E, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x38, 0xFF, 0x3F, 0xFF, 0x1F, 0xFF, 0x07, 0x00, 0x00,  // Code for char J
-    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xE0, 0x01, 0xF0, 0x03, 0xF8, 0x07, 0x3C, 0x0F, 0x1E, 0x1E, 0x0F, 0x3C, 0x07, 0x38, 0x03, 0x30, 0x00, 0x00,  // Code for char K
-    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00,  // Code for char L
-    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x7E, 0x00, 0xF8, 0x01, 0xE0, 0x01, 0xF8, 0x01, 0x7E, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00,  // Code for char M
-    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x3E, 0x00, 0xF8, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x00, 0x1F, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00,  // Code for char N
-    0x0B, 0xF0, 0x03, 0xFC, 0x0F, 0xFE, 0x1F, 0x0F, 0x3C, 0x07, 0x38, 0x03, 0x30, 0x07, 0x38, 0x0F, 0x3C, 0xFE, 0x1F, 0xFC, 0x0F, 0xF0, 0x03, 0x00, 0x00,  // Code for char O
-    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x83, 0x01, 0x83, 0x01, 0x83, 0x01, 0x83, 0x01, 0xC7, 0x01, 0xFF, 0x01, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0x00,  // Code for char P
-    0x0B, 0xF0, 0x03, 0xFC, 0x0F, 0xFE, 0x1F, 0x0F, 0x3C, 0x07, 0x38, 0x03, 0x36, 0x07, 0x3E, 0x0F, 0x3E, 0xFE, 0x3F, 0xFC, 0x3F, 0xF0, 0x33, 0x00, 0x00,  // Code for char Q
-    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x83, 0x01, 0x83, 0x03, 0x83, 0x07, 0x83, 0x0F, 0xC7, 0x1F, 0xFF, 0x3D, 0xFE, 0x38, 0x7C, 0x30, 0x00, 0x00,  // Code for char R
-    0x0B, 0x3C, 0x0C, 0x7E, 0x1C, 0xFF, 0x3C, 0xE7, 0x38, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC7, 0x39, 0xCF, 0x3F, 0x8E, 0x1F, 0x0C, 0x0F, 0x00, 0x00,  // Code for char S
-    0x0A, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char T
-    0x0B, 0xFF, 0x07, 0xFF, 0x1F, 0xFF, 0x3F, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x38, 0xFF, 0x3F, 0xFF, 0x1F, 0xFF, 0x07, 0x00, 0x00,  // Code for char U
-    0x0B, 0x07, 0x00, 0x3F, 0x00, 0xFF, 0x01, 0xF8, 0x0F, 0xC0, 0x3F, 0x00, 0x3E, 0xC0, 0x3F, 0xF8, 0x0F, 0xFF, 0x01, 0x3F, 0x00, 0x07, 0x00, 0x00, 0x00,  // Code for char V
-    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x1E, 0x80, 0x07, 0x80, 0x03, 0x80, 0x07, 0x00, 0x1E, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00,  // Code for char W
-    0x0B, 0x03, 0x30, 0x0F, 0x3C, 0x1F, 0x3E, 0x3C, 0x0F, 0xF0, 0x03, 0xE0, 0x01, 0xF0, 0x03, 0x3C, 0x0F, 0x1F, 0x3E, 0x0F, 0x3C, 0x03, 0x30, 0x00, 0x00,  // Code for char X
-    0x0B, 0x03, 0x00, 0x0F, 0x00, 0x3F, 0x00, 0xFC, 0x00, 0xF0, 0x3F, 0xC0, 0x3F, 0xF0, 0x3F, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0x00, 0x03, 0x00, 0x00, 0x00,  // Code for char Y
-    0x0B, 0x03, 0x30, 0x03, 0x3C, 0x03, 0x3E, 0x03, 0x3F, 0xC3, 0x33, 0xE3, 0x31, 0xF3, 0x30, 0x3F, 0x30, 0x1F, 0x30, 0x0F, 0x30, 0x03, 0x30, 0x00, 0x00,  // Code for char Z
-    0x09, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char [
-    0x0C, 0x0E, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x18,  // Code for char BackSlash
-    0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ]
-    0x0C, 0x60, 0x00, 0x70, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x70, 0x00, 0x60, 0x00,  // Code for char ^
-    0x0C, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0,  // Code for char _
-    0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char `
-    0x0B, 0x00, 0x1C, 0x40, 0x3E, 0x60, 0x3F, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0xE0, 0x3F, 0xE0, 0x3F, 0xC0, 0x3F, 0x00, 0x00,  // Code for char a
-    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xE0, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0xE0, 0x38, 0xE0, 0x3F, 0xC0, 0x1F, 0x80, 0x0F, 0x00, 0x00,  // Code for char b
-    0x0B, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x3F, 0xE0, 0x38, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0xE0, 0x38, 0xC0, 0x18, 0x80, 0x08, 0x00, 0x00,  // Code for char c
-    0x0B, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x3F, 0xE0, 0x38, 0x60, 0x30, 0x60, 0x30, 0xE0, 0x30, 0xE0, 0x30, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00,  // Code for char d
-    0x0B, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x3F, 0xE0, 0x3B, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0xE0, 0x33, 0xC0, 0x13, 0x80, 0x01, 0x00, 0x00,  // Code for char e
-    0x09, 0xC0, 0x00, 0xC0, 0x00, 0xFC, 0x3F, 0xFE, 0x3F, 0xFF, 0x3F, 0xC7, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char f
-    0x0B, 0x80, 0x03, 0xC0, 0xC7, 0xE0, 0xCF, 0xE0, 0xCE, 0x60, 0xCC, 0x60, 0xCC, 0x60, 0xCC, 0x60, 0xEE, 0xE0, 0xFF, 0xE0, 0x7F, 0xE0, 0x3F, 0x00, 0x00,  // Code for char g
-    0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xE0, 0x00, 0x60, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE0, 0x3F, 0xC0, 0x3F, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00,  // Code for char h
-    0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0x30, 0xEC, 0x3F, 0xEC, 0x3F, 0xEC, 0x3F, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char i
-    0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE0, 0x60, 0xC0, 0xEC, 0xFF, 0xEC, 0xFF, 0xEC, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char j
-    0x0A, 0x00, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x80, 0x07, 0xC0, 0x0F, 0xE0, 0x1F, 0xE0, 0x3C, 0x60, 0x38, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,  // Code for char k
-    0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x03, 0x30, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char l
-    0x0B, 0xE0, 0x3F, 0xE0, 0x3F, 0xE0, 0x3F, 0xE0, 0x00, 0xE0, 0x3F, 0xC0, 0x3F, 0xE0, 0x3F, 0xE0, 0x00, 0xE0, 0x3F, 0xC0, 0x3F, 0x80, 0x3F, 0x00, 0x00,  // Code for char m
-    0x0B, 0x00, 0x00, 0xE0, 0x3F, 0xE0, 0x3F, 0xE0, 0x3F, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE0, 0x3F, 0xC0, 0x3F, 0x80, 0x3F, 0x00, 0x00,  // Code for char n
-    0x0B, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x3F, 0xE0, 0x38, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0xE0, 0x38, 0xE0, 0x3F, 0xC0, 0x1F, 0x80, 0x0F, 0x00, 0x00,  // Code for char o
-    0x0B, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0x60, 0x1C, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0xE0, 0x1C, 0xE0, 0x1F, 0xC0, 0x0F, 0x80, 0x07, 0x00, 0x00,  // Code for char p
-    0x0B, 0x80, 0x07, 0xC0, 0x0F, 0xE0, 0x1F, 0xE0, 0x1C, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x1C, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0x00, 0x00,  // Code for char q
-    0x0B, 0x00, 0x00, 0xE0, 0x3F, 0xE0, 0x3F, 0xE0, 0x3F, 0xE0, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xC0, 0x00, 0x00, 0x00,  // Code for char r
-    0x09, 0xC0, 0x11, 0xE0, 0x33, 0xE0, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 0x3F, 0x60, 0x3F, 0x40, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char s
-    0x09, 0x60, 0x00, 0x60, 0x00, 0xFE, 0x1F, 0xFE, 0x3F, 0xFE, 0x3F, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char t
-    0x0B, 0xE0, 0x0F, 0xE0, 0x1F, 0xE0, 0x3F, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x38, 0xE0, 0x3F, 0xE0, 0x3F, 0xE0, 0x3F, 0x00, 0x00,  // Code for char u
-    0x0B, 0x60, 0x00, 0xE0, 0x01, 0xE0, 0x07, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x38, 0x00, 0x3E, 0x80, 0x1F, 0xE0, 0x07, 0xE0, 0x01, 0x60, 0x00, 0x00, 0x00,  // Code for char v
-    0x0B, 0xE0, 0x07, 0xE0, 0x1F, 0xE0, 0x3F, 0x00, 0x3C, 0xE0, 0x1F, 0xE0, 0x0F, 0xE0, 0x1F, 0x00, 0x3C, 0xE0, 0x3F, 0xE0, 0x1F, 0xE0, 0x07, 0x00, 0x00,  // Code for char w
-    0x0A, 0x60, 0x30, 0xE0, 0x38, 0xE0, 0x3D, 0xC0, 0x1F, 0x80, 0x0F, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x3D, 0xE0, 0x38, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00,  // Code for char x
-    0x0A, 0x00, 0x00, 0x60, 0x00, 0xE0, 0x81, 0xE0, 0xE7, 0x80, 0xFF, 0x00, 0x7E, 0x80, 0x1F, 0xE0, 0x07, 0xE0, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char y
-    0x0A, 0x60, 0x30, 0x60, 0x38, 0x60, 0x3C, 0x60, 0x3E, 0x60, 0x37, 0xE0, 0x33, 0xE0, 0x31, 0xE0, 0x30, 0x60, 0x30, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00,  // Code for char z
-    0x0A, 0x00, 0x00, 0x80, 0x00, 0xC0, 0x01, 0xFC, 0x1F, 0xFE, 0x3F, 0x7F, 0x7F, 0x07, 0x70, 0x03, 0x60, 0x03, 0x60, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00,  // Code for char {
-    0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char |
-    0x0A, 0x00, 0x00, 0x03, 0x60, 0x03, 0x60, 0x03, 0x60, 0x07, 0x70, 0x7F, 0x7F, 0xFE, 0x3F, 0xFC, 0x1F, 0xC0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char }
-    0x0B, 0x10, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x00, 0x00,  // Code for char ~
-    0x0B, 0x00, 0x0F, 0x80, 0x0F, 0xC0, 0x0F, 0xE0, 0x0C, 0x70, 0x0C, 0x30, 0x0C, 0x70, 0x0C, 0xE0, 0x0C, 0xC0, 0x0F, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x00   // Code for char 
-};
-
-
-//Font Generated by MikroElektronika GLCD Font Creator 1.2.0.0
-//MikroElektronika 2011 
-//http://www.mikroe.com 
-
-//GLCD FontName : Trebuchet_MS16x21
-//GLCD FontSize : 16 x 21
-
-uint8_t Trebuchet_MS16x21[] = {
-    0x10, 0x15, 0x2E, 0x0D,
-    0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char .
-    0x0C, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0x1F, 0x00, 0xF0, 0x1F, 0x00, 0xFE, 0x0F, 0x80, 0xFF, 0x03, 0xF0, 0x7F, 0x00, 0xFE, 0x0F, 0x00, 0xFF, 0x03, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char /
-    0x10, 0x00, 0x00, 0x00, 0xC0, 0x7F, 0x00, 0xF0, 0xFF, 0x03, 0xFC, 0xFF, 0x07, 0xFE, 0xFF, 0x0F, 0x3E, 0x80, 0x0F, 0x0F, 0x00, 0x1E, 0x07, 0x00, 0x1C, 0x07, 0x00, 0x1C, 0x07, 0x00, 0x1C, 0x0F, 0x00, 0x1E, 0x1F, 0x80, 0x0F, 0xFE, 0xFF, 0x0F, 0xFC, 0xFF, 0x07, 0xF8, 0xFF, 0x01, 0xC0, 0x7F, 0x00,  // Code for char 0
-    0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x38, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xFE, 0xFF, 0x1F, 0xFE, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char 1
-    0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x18, 0x1E, 0x00, 0x1C, 0x0E, 0x00, 0x1F, 0x0F, 0x80, 0x1F, 0x07, 0xC0, 0x1F, 0x07, 0xF0, 0x1F, 0x07, 0xF8, 0x1D, 0x07, 0xFE, 0x1C, 0x0F, 0x3F, 0x1C, 0xFE, 0x1F, 0x1C, 0xFE, 0x0F, 0x1C, 0xFC, 0x03, 0x1C, 0xF8, 0x00, 0x1C, 0x00, 0x00, 0x1C,  // Code for char 2
-    0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x0E, 0x0E, 0x00, 0x0F, 0x0F, 0x00, 0x1E, 0x07, 0x00, 0x1C, 0x07, 0x07, 0x1C, 0x07, 0x07, 0x1C, 0x07, 0x07, 0x1C, 0x8F, 0x0F, 0x1E, 0xFF, 0x1F, 0x1E, 0xFE, 0xFD, 0x0F, 0xFC, 0xFD, 0x0F, 0x78, 0xF8, 0x07, 0x00, 0xF0, 0x01, 0x00, 0x00, 0x00,  // Code for char 3
-    0x10, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xEF, 0x00, 0x80, 0xE7, 0x00, 0xC0, 0xE3, 0x00, 0xF0, 0xE0, 0x00, 0x78, 0xE0, 0x00, 0xFC, 0xFF, 0x1F, 0xFE, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00,  // Code for char 4
-    0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xFF, 0x03, 0x0F, 0xFF, 0x07, 0x0E, 0xFF, 0x03, 0x1C, 0xFF, 0x01, 0x1C, 0xC7, 0x01, 0x1C, 0xC7, 0x01, 0x1C, 0xC7, 0x01, 0x1E, 0xC7, 0x03, 0x1F, 0xC7, 0xFF, 0x0F, 0x87, 0xFF, 0x0F, 0x07, 0xFF, 0x07, 0x00, 0xFC, 0x01, 0x00, 0x00, 0x00,  // Code for char 5
-    0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x80, 0xFF, 0x03, 0xE0, 0xFF, 0x07, 0xF0, 0xFF, 0x0F, 0xF8, 0x0F, 0x1E, 0x7C, 0x07, 0x1C, 0x3E, 0x07, 0x1C, 0x1E, 0x07, 0x1C, 0x0F, 0x07, 0x1C, 0x07, 0x0F, 0x1E, 0x02, 0xFE, 0x0F, 0x00, 0xFE, 0x0F, 0x00, 0xFC, 0x07, 0x00, 0xF0, 0x01,  // Code for char 6
-    0x10, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x18, 0x07, 0x00, 0x1E, 0x07, 0xC0, 0x1F, 0x07, 0xF0, 0x1F, 0x07, 0xFC, 0x0F, 0x07, 0xFF, 0x01, 0xC7, 0x7F, 0x00, 0xF7, 0x0F, 0x00, 0xFF, 0x03, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0x00, 0x00,  // Code for char 7
-    0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x03, 0x78, 0xF8, 0x07, 0xFC, 0xFD, 0x0F, 0xFE, 0xFF, 0x0F, 0xFF, 0x1F, 0x1E, 0x8F, 0x0F, 0x1C, 0x07, 0x07, 0x1C, 0x07, 0x0F, 0x1C, 0x8F, 0x0F, 0x1C, 0xFF, 0x3F, 0x1E, 0xFE, 0xFD, 0x0F, 0xFE, 0xFD, 0x0F, 0x78, 0xF0, 0x07, 0x00, 0xE0, 0x03,  // Code for char 8
-    0x0F, 0x00, 0x00, 0x00, 0xF0, 0x01, 0x00, 0xFC, 0x07, 0x00, 0xFE, 0x0F, 0x00, 0xFE, 0x0F, 0x08, 0x0F, 0x1E, 0x1C, 0x07, 0x1C, 0x1E, 0x07, 0x1C, 0x0F, 0x07, 0x9C, 0x0F, 0x07, 0xDC, 0x07, 0x0F, 0xFE, 0x03, 0xFE, 0xFF, 0x01, 0xFC, 0xFF, 0x00, 0xF8, 0x3F, 0x00, 0xE0, 0x0F, 0x00, 0x00, 0x00, 0x00,  // Code for char 9
-    0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x0C, 0xC0, 0x03, 0x1E, 0xC0, 0x03, 0x1E, 0x80, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   // Code for char :
-};
-
--- a/EN_FA_font.h	Tue Sep 01 12:16:09 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,219 +0,0 @@
-//------------------------------------------------------------------------------------------------
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-//------------------------------------------------------------------------------------------------
-/*
-....::::: In The Name Of GOD :::::....
-
-
-****************                               ******************
-
-Ported to ILI9225 by Arman Safikhani  31-08-2015
-
-****************                               ******************
-
-
-
-TFT LCD (ILI9325-ILI9320 LCD Driver) Functions (ECA 2.8 inch LCD Module)
-Version : 1.0
-By Ali Imanifar                 11/06/2013
-
-ECA Corporation........www.ECA.ir
-ECA Eshop..............www.Eshop.ECA.ir
-ECA Forum..............www.ECA.ir/Forum2
-ECA Video Center.......www.TV.ECA.ir
-ECA Blog...............www.Blog.ECA.ir
-
-Important Note :
-DO NOT Change LCD Register Definitions And LCD Command Codes
-*/
-//------------------------------------------------------------------------------------------------
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-//------------------------------------------------------------------------------------------------
-
-const unsigned int font12x16_FA[183][16] =
-{
-    0x6000,0x6000,0x6000,0x6004,0x6004,0x6004,0x6004,0x6004,0x6004,0x6004,0x6003,0x6000,0x6000,0x6000,0x6000,0x6000,    //00
-    0x5001,0x5006,0x5008,0x5001,0x5006,0x5008,0x500C,0x5002,0x5001,0x5001,0x501E,0x5000,0x5000,0x5000,0x5000,0x5000,    //01-FA
-    0x6001,0x600E,0x6010,0x6004,0x6004,0x6004,0x6004,0x6004,0x6004,0x6004,0x6003,0x6000,0x6000,0x6000,0x6000,0x6000,    //02
-    0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4002,0x4001,0x4001,0x400E,0x4000,0x4005,0x4000,0x4002,0x4000,    //03-FD
-    0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4002,0x4001,0x4001,0x400E,0x4000,0x4000,0x4002,0x4000,0x4000,    //04
-    0x4000,0x4000,0x4000,0x4000,0x4005,0x4000,0x4000,0x4002,0x4001,0x4001,0x400E,0x4000,0x4000,0x4000,0x4000,0x4000,    //05
-    0x4000,0x4000,0x4002,0x4000,0x4005,0x4000,0x4000,0x4002,0x4001,0x4001,0x400E,0x4000,0x4000,0x4000,0x4000,0x4000,    //06
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8018,0x8024,0x8002,0x80FF,0x8000,0x8000,0x8008,0x8000,0x8000,    //07
-    0x9000,0x9000,0x9000,0x9000,0x9000,0x9000,0x9070,0x908F,0x9034,0x9042,0x9081,0x9088,0x9080,0x9041,0x903E,0x9000,    //08
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8018,0x8024,0x8002,0x80FF,0x8000,0x8000,0x8000,0x8000,0x8000,    //09
-    0x9000,0x9000,0x9000,0x9000,0x9000,0x9000,0x9070,0x908F,0x9034,0x9042,0x9081,0x9080,0x9080,0x9041,0x903E,0x9000,    //0A
-    0x8000,0x8000,0x8000,0x8000,0x8010,0x8000,0x8000,0x8018,0x8024,0x8002,0x80FF,0x8000,0x8000,0x8000,0x8000,0x8000,    //0B
-    0x9000,0x9000,0x9000,0x9020,0x9000,0x9000,0x9070,0x908F,0x9034,0x9042,0x9081,0x9080,0x9080,0x9041,0x903E,0x9000,    //0C
-    0x9000,0x9000,0x9000,0x9000,0x9010,0x9008,0x9014,0x9046,0x9049,0x9019,0x91F6,0x9000,0x9000,0x9000,0x9000,0x9000,    //0D-FE     
-    0x9000,0x9000,0x9000,0x9008,0x9000,0x9014,0x9000,0x9000,0x9049,0x9049,0x91B6,0x9000,0x9000,0x9000,0x9000,0x9000,    //0E
-    0xB000,0xB000,0xB000,0xB000,0xB000,0xB000,0xB000,0xB00E,0xB111,0xB121,0xB6FE,0xB000,0xB000,0xB000,0xB000,0xB000,    //0F
-    0x4000,0x3000,0x3000,0x3000,0x3000,0x3000,0x3000,0x3002,0x3007,0x3002,0x3000,0x3000,0x3000,0x3000,0x3000,0x3000,    //10
-    0x3000,0x2000,0x2000,0x2000,0x2002,0x2002,0x2001,0x2001,0x2001,0x2001,0x2001,0x2001,0x2001,0x2000,0x2000,0x2000,    //11
-    0x6000,0x5000,0x5000,0x5000,0x5011,0x5019,0x500E,0x5008,0x5004,0x5004,0x5004,0x5004,0x5004,0x5000,0x5000,0x5000,    //12
-    0x7000,0x6000,0x6000,0x6000,0x6025,0x6035,0x601A,0x6010,0x6008,0x6008,0x6008,0x6008,0x6008,0x6000,0x6000,0x6000,    //13
-    0x8000,0x7000,0x7000,0x7000,0x7026,0x7078,0x7039,0x7036,0x7010,0x7010,0x7010,0x7010,0x7010,0x7000,0x7000,0x7000,    //14
-    0x8000,0x7000,0x7000,0x7000,0x7010,0x7008,0x7014,0x7022,0x7022,0x7041,0x7049,0x7049,0x7036,0x7000,0x7000,0x7000,    //15
-    0x7000,0x6000,0x6000,0x6000,0x600C,0x6010,0x6020,0x6021,0x601E,0x6004,0x6008,0x6010,0x6020,0x6000,0x6000,0x6000,    //16
-    0x8000,0x7000,0x7000,0x7000,0x7041,0x7041,0x7022,0x7022,0x7014,0x7014,0x7008,0x7008,0x7008,0x7000,0x7000,0x7000,    //17    
-    0x8000,0x7000,0x7000,0x7000,0x7008,0x7008,0x7008,0x7014,0x7014,0x7022,0x7022,0x7041,0x7041,0x7000,0x7000,0x7000,    //18    
-    0x6000,0x5000,0x5000,0x5000,0x500C,0x5012,0x5012,0x500E,0x5002,0x5002,0x5002,0x5001,0x5001,0x5000,0x5000,0x5000,    //19
-    0xB000,0xB000,0xB000,0xB000,0xB010,0xB000,0xB000,0xB00E,0xB111,0xB121,0xB6FE,0xB000,0xB000,0xB000,0xB000,0xB000,    //1A
-    0x6000,0x6000,0x6000,0x6000,0x6000,0x6000,0x600C,0x6012,0x6010,0x6009,0x603E,0x6000,0x6000,0x6000,0x6000,0x6000,    //1B
-    0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4003,0x4003,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,    //1C
-    0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4001,0x4002,0x4003,0x4003,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,    //1D
-    0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4003,0x4003,0x4001,0x4002,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,    //1E
-    0x4000,0x4000,0x4000,0x4000,0x4001,0x4002,0x4003,0x4003,0x4000,0x4000,0x4003,0x4003,0x4000,0x4000,0x4000,0x4000,    //1F
-    0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,    //20   space
-    0x8000,0x8000,0x8018,0x803C,0x803C,0x803C,0x8018,0x8018,0x8018,0x8000,0x8018,0x8018,0x8000,0x8000,0x8000,0x8000, // !
-    0x8000,0x8063,0x8063,0x8063,0x8022,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000, // "
-    0x8000,0x8000,0x8000,0x8036,0x8036,0x807F,0x8036,0x8036,0x8036,0x807F,0x8036,0x8036,0x8000,0x8000,0x8000,0x8000, // #
-    0x800C,0x800C,0x803E,0x8063,0x8061,0x8060,0x803E,0x8003,0x8003,0x8043,0x8063,0x803E,0x800C,0x800C,0x8000,0x8000, // $
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8061,0x8063,0x8006,0x800C,0x8018,0x8033,0x8063,0x8000,0x8000,0x8000,0x8000, // %
-    0x8000,0x8000,0x8000,0x801C,0x8036,0x8036,0x801C,0x803B,0x806E,0x8066,0x8066,0x803B,0x8000,0x8000,0x8000,0x8000, // &
-    0x8000,0x8030,0x8030,0x8030,0x8060,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000, // '
-    0x8000,0x8000,0x800C,0x8018,0x8018,0x8030,0x8030,0x8030,0x8030,0x8018,0x8018,0x800C,0x8000,0x8000,0x8000,0x8000, // (
-    0x8000,0x8000,0x8018,0x800C,0x800C,0x8006,0x8006,0x8006,0x8006,0x800C,0x800C,0x8018,0x8000,0x8000,0x8000,0x8000, // )
-    0x8000,0x8000,0x8000,0x8000,0x8042,0x8066,0x803C,0x80FF,0x803C,0x8066,0x8042,0x8000,0x8000,0x8000,0x8000,0x8000, // *
-    0x8000,0x8000,0x8000,0x8000,0x8018,0x8018,0x8018,0x80FF,0x8018,0x8018,0x8018,0x8000,0x8000,0x8000,0x8000,0x8000, // +
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8018,0x8018,0x8018,0x8030,0x8000,0x8000, // ,
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x80FF,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000, // -
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8018,0x8018,0x8000,0x8000,0x8000,0x8000, // .
-    0x8000,0x8000,0x8001,0x8003,0x8007,0x800E,0x801C,0x8038,0x8070,0x80E0,0x80C0,0x8080,0x8000,0x8000,0x8000,0x8000, // / (forward slash)
-    0x8000,0x8000,0x803E,0x8063,0x8063,0x8063,0x806B,0x806B,0x8063,0x8063,0x8063,0x803E,0x8000,0x8000,0x8000,0x8000, // 0 0x30
-    0x8000,0x8000,0x800C,0x801C,0x803C,0x800C,0x800C,0x800C,0x800C,0x800C,0x800C,0x803F,0x8000,0x8000,0x8000,0x8000, // 1
-    0x8000,0x8000,0x803E,0x8063,0x8003,0x8006,0x800C,0x8018,0x8030,0x8061,0x8063,0x807F,0x8000,0x8000,0x8000,0x8000, // 2
-    0x8000,0x8000,0x803E,0x8063,0x8003,0x8003,0x801E,0x8003,0x8003,0x8003,0x8063,0x803E,0x8000,0x8000,0x8000,0x8000, // 3
-    0x8000,0x8000,0x8006,0x800E,0x801E,0x8036,0x8066,0x8066,0x807F,0x8006,0x8006,0x800F,0x8000,0x8000,0x8000,0x8000, // 4
-    0x8000,0x8000,0x807F,0x8060,0x8060,0x8060,0x807E,0x8003,0x8003,0x8063,0x8073,0x803E,0x8000,0x8000,0x8000,0x8000, // 5
-    0x8000,0x8000,0x801C,0x8030,0x8060,0x8060,0x807E,0x8063,0x8063,0x8063,0x8063,0x803E,0x8000,0x8000,0x8000,0x8000, // 6
-    0x8000,0x8000,0x807F,0x8063,0x8003,0x8006,0x8006,0x800C,0x800C,0x8018,0x8018,0x8018,0x8000,0x8000,0x8000,0x8000, // 7
-    0x8000,0x8000,0x803E,0x8063,0x8063,0x8063,0x803E,0x8063,0x8063,0x8063,0x8063,0x803E,0x8000,0x8000,0x8000,0x8000, // 8
-    0x8000,0x8000,0x803E,0x8063,0x8063,0x8063,0x8063,0x803F,0x8003,0x8003,0x8006,0x803C,0x8000,0x8000,0x8000,0x8000, // 9
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8018,0x8018,0x8000,0x8000,0x8000,0x8018,0x8018,0x8000,0x8000,0x8000,0x8000, // :
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8018,0x8018,0x8000,0x8000,0x8000,0x8018,0x8018,0x8018,0x8030,0x8000,0x8000, // ;
-    0x8000,0x8000,0x8000,0x8006,0x800C,0x8018,0x8030,0x8060,0x8030,0x8018,0x800C,0x8006,0x8000,0x8000,0x8000,0x8000, // <
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x807E,0x8000,0x8000,0x807E,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000, // =
-    0x8000,0x8000,0x8000,0x8060,0x8030,0x8018,0x800C,0x8006,0x800C,0x8018,0x8030,0x8060,0x8000,0x8000,0x8000,0x8000, // >
-    0x8000,0x8000,0x803E,0x8063,0x8063,0x8006,0x800C,0x800C,0x800C,0x8000,0x800C,0x800C,0x8000,0x8000,0x8000,0x8000, // ?
-    0x8000,0x8000,0x803E,0x8063,0x8063,0x806F,0x806B,0x806B,0x806E,0x8060,0x8060,0x803E,0x8000,0x8000,0x8000,0x8000, // @ 0x40
-    0x8000,0x8000,0x8008,0x801C,0x8036,0x8063,0x8063,0x8063,0x807F,0x8063,0x8063,0x8063,0x8000,0x8000,0x8000,0x8000, // A
-    0x8000,0x8000,0x807E,0x8033,0x8033,0x8033,0x803E,0x8033,0x8033,0x8033,0x8033,0x807E,0x8000,0x8000,0x8000,0x8000, // B
-    0x8000,0x8000,0x801E,0x8033,0x8061,0x8060,0x8060,0x8060,0x8060,0x8061,0x8033,0x801E,0x8000,0x8000,0x8000,0x8000, // C
-    0x8000,0x8000,0x807C,0x8036,0x8033,0x8033,0x8033,0x8033,0x8033,0x8033,0x8036,0x807C,0x8000,0x8000,0x8000,0x8000, // D
-    0x8000,0x8000,0x807F,0x8033,0x8031,0x8034,0x803C,0x8034,0x8030,0x8031,0x8033,0x807F,0x8000,0x8000,0x8000,0x8000, // E
-    0x8000,0x8000,0x807F,0x8033,0x8031,0x8034,0x803C,0x8034,0x8030,0x8030,0x8030,0x8078,0x8000,0x8000,0x8000,0x8000, // F
-    0x8000,0x8000,0x801E,0x8033,0x8061,0x8060,0x8060,0x806F,0x8063,0x8063,0x8037,0x801D,0x8000,0x8000,0x8000,0x8000, // G
-    0x8000,0x8000,0x8063,0x8063,0x8063,0x8063,0x807F,0x8063,0x8063,0x8063,0x8063,0x8063,0x8000,0x8000,0x8000,0x8000, // H
-    0x8000,0x8000,0x803C,0x8018,0x8018,0x8018,0x8018,0x8018,0x8018,0x8018,0x8018,0x803C,0x8000,0x8000,0x8000,0x8000, // I
-    0x8000,0x8000,0x800F,0x8006,0x8006,0x8006,0x8006,0x8006,0x8006,0x8066,0x8066,0x803C,0x8000,0x8000,0x8000,0x8000, // J
-    0x8000,0x8000,0x8073,0x8033,0x8036,0x8036,0x803C,0x8036,0x8036,0x8033,0x8033,0x8073,0x8000,0x8000,0x8000,0x8000, // K
-    0x8000,0x8000,0x8078,0x8030,0x8030,0x8030,0x8030,0x8030,0x8030,0x8031,0x8033,0x807F,0x8000,0x8000,0x8000,0x8000, // L
-    0x8000,0x8000,0x8063,0x8077,0x807F,0x806B,0x8063,0x8063,0x8063,0x8063,0x8063,0x8063,0x8000,0x8000,0x8000,0x8000, // M
-    0x8000,0x8000,0x8063,0x8063,0x8073,0x807B,0x807F,0x806F,0x8067,0x8063,0x8063,0x8063,0x8000,0x8000,0x8000,0x8000, // N
-    0x8000,0x8000,0x801C,0x8036,0x8063,0x8063,0x8063,0x8063,0x8063,0x8063,0x8036,0x801C,0x8000,0x8000,0x8000,0x8000, // O
-    0x8000,0x8000,0x807E,0x8033,0x8033,0x8033,0x803E,0x8030,0x8030,0x8030,0x8030,0x8078,0x8000,0x8000,0x8000,0x8000, // P 0x50
-    0x8000,0x8000,0x803E,0x8063,0x8063,0x8063,0x8063,0x8063,0x8063,0x806B,0x806F,0x803E,0x8006,0x8007,0x8000,0x8000, // Q
-    0x8000,0x8000,0x807E,0x8033,0x8033,0x8033,0x803E,0x8036,0x8036,0x8033,0x8033,0x8073,0x8000,0x8000,0x8000,0x8000, // R
-    0x8000,0x8000,0x803E,0x8063,0x8063,0x8030,0x801C,0x8006,0x8003,0x8063,0x8063,0x803E,0x8000,0x8000,0x8000,0x8000, // S
-    0x8000,0x8000,0x80FF,0x80DB,0x8099,0x8018,0x8018,0x8018,0x8018,0x8018,0x8018,0x803C,0x8000,0x8000,0x8000,0x8000, // T
-    0x8000,0x8000,0x8063,0x8063,0x8063,0x8063,0x8063,0x8063,0x8063,0x8063,0x8063,0x803E,0x8000,0x8000,0x8000,0x8000, // U
-    0x8000,0x8000,0x8063,0x8063,0x8063,0x8063,0x8063,0x8063,0x8063,0x8036,0x801C,0x8008,0x8000,0x8000,0x8000,0x8000, // V
-    0x8000,0x8000,0x8063,0x8063,0x8063,0x8063,0x8063,0x806B,0x806B,0x807F,0x8036,0x8036,0x8000,0x8000,0x8000,0x8000, // W
-    0x8000,0x8000,0x80C3,0x80C3,0x8066,0x803C,0x8018,0x8018,0x803C,0x8066,0x80C3,0x80C3,0x8000,0x8000,0x8000,0x8000, // X
-    0x8000,0x8000,0x80C3,0x80C3,0x80C3,0x8066,0x803C,0x8018,0x8018,0x8018,0x8018,0x803C,0x8000,0x8000,0x8000,0x8000, // Y
-    0x8000,0x8000,0x807F,0x8063,0x8043,0x8006,0x800C,0x8018,0x8030,0x8061,0x8063,0x807F,0x8000,0x8000,0x8000,0x8000, // Z
-    0x8000,0x8000,0x803C,0x8030,0x8030,0x8030,0x8030,0x8030,0x8030,0x8030,0x8030,0x803C,0x8000,0x8000,0x8000,0x8000, // [
-    0x8000,0x8000,0x8080,0x80C0,0x80E0,0x8070,0x8038,0x801C,0x800E,0x8007,0x8003,0x8001,0x8000,0x8000,0x8000,0x8000, // \ (back slash)
-    0x8000,0x8000,0x803C,0x800C,0x800C,0x800C,0x800C,0x800C,0x800C,0x800C,0x800C,0x803C,0x8000,0x8000,0x8000,0x8000, // ]
-    0x8008,0x801C,0x8036,0x8063,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000, // ^
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x80FF,0x8000,0x8000,0x8000, // _
-    0x8018,0x8018,0x800C,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000, // ` 0x60
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x803C,0x8046,0x8006,0x803E,0x8066,0x8066,0x803B,0x8000,0x8000,0x8000,0x8000, // a
-    0x8000,0x8000,0x8070,0x8030,0x8030,0x803C,0x8036,0x8033,0x8033,0x8033,0x8033,0x806E,0x8000,0x8000,0x8000,0x8000, // b
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x803E,0x8063,0x8060,0x8060,0x8060,0x8063,0x803E,0x8000,0x8000,0x8000,0x8000, // c
-    0x8000,0x8000,0x800E,0x8006,0x8006,0x801E,0x8036,0x8066,0x8066,0x8066,0x8066,0x803B,0x8000,0x8000,0x8000,0x8000, // d
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x803E,0x8063,0x8063,0x807E,0x8060,0x8063,0x803E,0x8000,0x8000,0x8000,0x8000, // e
-    0x8000,0x8000,0x801C,0x8036,0x8032,0x8030,0x807C,0x8030,0x8030,0x8030,0x8030,0x8078,0x8000,0x8000,0x8000,0x8000, // f
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x803B,0x8066,0x8066,0x8066,0x8066,0x803E,0x8006,0x8066,0x803C,0x8000,0x8000, // g
-    0x8000,0x8000,0x8070,0x8030,0x8030,0x8036,0x803B,0x8033,0x8033,0x8033,0x8033,0x8073,0x8000,0x8000,0x8000,0x8000, // h
-    0x8000,0x8000,0x800C,0x800C,0x8000,0x801C,0x800C,0x800C,0x800C,0x800C,0x800C,0x801E,0x8000,0x8000,0x8000,0x8000, // i
-    0x8000,0x8000,0x8006,0x8006,0x8000,0x800E,0x8006,0x8006,0x8006,0x8006,0x8006,0x8066,0x8066,0x803C,0x8000,0x8000, // j
-    0x8000,0x8000,0x8070,0x8030,0x8030,0x8033,0x8033,0x8036,0x803C,0x8036,0x8033,0x8073,0x8000,0x8000,0x8000,0x8000, // k
-    0x8000,0x8000,0x801C,0x800C,0x800C,0x800C,0x800C,0x800C,0x800C,0x800C,0x800C,0x801E,0x8000,0x8000,0x8000,0x8000, // l
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x806E,0x807F,0x806B,0x806B,0x806B,0x806B,0x806B,0x8000,0x8000,0x8000,0x8000, // m
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x806E,0x8033,0x8033,0x8033,0x8033,0x8033,0x8033,0x8000,0x8000,0x8000,0x8000, // n
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x803E,0x8063,0x8063,0x8063,0x8063,0x8063,0x803E,0x8000,0x8000,0x8000,0x8000, // o
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x806E,0x8033,0x8033,0x8033,0x8033,0x803E,0x8030,0x8030,0x8078,0x8000,0x8000, // p 0x70
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x803B,0x8066,0x8066,0x8066,0x8066,0x803E,0x8006,0x8006,0x800F,0x8000,0x8000, // q
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x806E,0x803B,0x8033,0x8030,0x8030,0x8030,0x8078,0x8000,0x8000,0x8000,0x8000, // r
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x803E,0x8063,0x8038,0x800E,0x8003,0x8063,0x803E,0x8000,0x8000,0x8000,0x8000, // s
-    0x8000,0x8000,0x8008,0x8018,0x8018,0x807E,0x8018,0x8018,0x8018,0x8018,0x801B,0x800E,0x8000,0x8000,0x8000,0x8000, // t
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8066,0x8066,0x8066,0x8066,0x8066,0x8066,0x803B,0x8000,0x8000,0x8000,0x8000, // u
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8063,0x8063,0x8036,0x8036,0x801C,0x801C,0x8008,0x8000,0x8000,0x8000,0x8000, // v
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8063,0x8063,0x8063,0x806B,0x806B,0x807F,0x8036,0x8000,0x8000,0x8000,0x8000, // w
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8063,0x8036,0x801C,0x801C,0x801C,0x8036,0x8063,0x8000,0x8000,0x8000,0x8000, // x
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8063,0x8063,0x8063,0x8063,0x8063,0x803F,0x8003,0x8006,0x803C,0x8000,0x8000, // y
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x807F,0x8066,0x800C,0x8018,0x8030,0x8063,0x807F,0x8000,0x8000,0x8000,0x8000, // z
-    0x8000,0x8000,0x800E,0x8018,0x8018,0x8018,0x8070,0x8018,0x8018,0x8018,0x8018,0x800E,0x8000,0x8000,0x8000,0x8000, // {
-    0x8000,0x8000,0x8018,0x8018,0x8018,0x8018,0x8018,0x8000,0x8018,0x8018,0x8018,0x8018,0x8018,0x8000,0x8000,0x8000, // |
-    0x8000,0x8000,0x8070,0x8018,0x8018,0x8018,0x800E,0x8018,0x8018,0x8018,0x8018,0x8070,0x8000,0x8000,0x8000,0x8000, // }
-    0x8000,0x8000,0x803B,0x806E,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000, // ~ 7E
-    0x7000,0x7000,0x7000,0x7008,0x7000,0x7000,0x700E,0x7012,0x700C,0x7012,0x7021,0x7020,0x7020,0x7010,0x700F,0x7000,    //7F
-    0x5000,0x5000,0x5000,0x5004,0x5000,0x5000,0x5006,0x5009,0x5005,0x5003,0x501E,0x5000,0x5000,0x5000,0x5000,0x5000,    //80
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8040,0x8081,0x807E,0x8028,0x8010,0x8000,0x8000,0x8000,0x8000,    //81
-    0x7000,0x7000,0x7000,0x7000,0x7000,0x7000,0x7000,0x7006,0x7009,0x7019,0x7066,0x7000,0x7000,0x7000,0x7000,0x7000,    //82-F8
-    0x5000,0x5000,0x5000,0x500A,0x5000,0x5000,0x5006,0x5009,0x5005,0x5003,0x501E,0x5000,0x5000,0x5000,0x5000,0x5000,    //83
-    0x6000,0x6000,0x6000,0x6000,0x6002,0x6000,0x6000,0x6007,0x6009,0x6006,0x603F,0x6000,0x6000,0x6000,0x6000,0x6000,    //84-F6
-    0x6000,0x6000,0x6000,0x6008,0x6000,0x6000,0x600C,0x6012,0x6010,0x6009,0x603E,0x6000,0x6000,0x6000,0x6000,0x6000,    //85-F5
-    0x4000,0x4000,0x4000,0x4001,0x4001,0x4001,0x4001,0x4001,0x4001,0x4001,0x400E,0x4000,0x4000,0x4000,0x4000,0x4000,    //86-F3
-    0x4000,0x4000,0x4000,0x4000,0x4002,0x4000,0x4000,0x4002,0x4001,0x4001,0x400E,0x4000,0x4000,0x4000,0x4000,0x4000,    //87-F2
-    0x6000,0x6000,0x6000,0x6000,0x6000,0x6000,0x6000,0x6007,0x6009,0x6006,0x603F,0x6000,0x6000,0x6000,0x6000,0x6000,    //88-F0
-    0x7000,0x7000,0x7000,0x7000,0x7000,0x7000,0x700E,0x7012,0x700C,0x7012,0x7021,0x7020,0x7020,0x7010,0x700F,0x7000,    //89-F1
-    0x9000,0x9000,0x9000,0x9000,0x9000,0x9000,0x9000,0x9000,0x9049,0x9049,0x91B6,0x9000,0x9000,0x9000,0x9000,0x9000,    //8A
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8008,0x8008,0x8034,0x8044,0x803A,0x8001,0x8000,0x8000,0x8000,0x8000,0x8000,    //8B-E7
-    0x5000,0x5000,0x5000,0x5001,0x5006,0x5008,0x500C,0x5002,0x5001,0x5001,0x501E,0x5000,0x5000,0x5000,0x5000,0x5000,    //8C
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8070,0x808F,0x8030,0x8040,0x8094,0x8080,0x8088,0x8041,0x803E,0x8000,    //8D
-    0x6000,0x6000,0x6000,0x6002,0x6000,0x6005,0x6000,0x6000,0x6001,0x6001,0x6001,0x6002,0x600C,0x6030,0x6000,0x6000,    //8E
-    0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4002,0x4001,0x4001,0x400E,0x4000,0x4000,0x4005,0x4000,0x4000,    //8F-C0
-    0x9001,0x9006,0x9008,0x9001,0x9006,0x9008,0x900C,0x9042,0x9081,0x9081,0x907E,0x9000,0x9000,0x9000,0x9000,0x9000,    //90
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8004,0x800A,0x8012,0x8014,0x80F9,0x8012,0x800C,0x8006,0x8000,0x8000,    //91-95
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8047,0x8088,0x8087,0x8081,0x807E,0x8000,    //92-9C
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8018,0x8024,0x8002,0x80FF,0x8000,0x8028,0x8000,0x8010,0x8000,    //93-9D
-    0x9000,0x9000,0x9000,0x9000,0x9000,0x9000,0x9070,0x908F,0x9034,0x9042,0x9095,0x9080,0x9088,0x9041,0x903E,0x9000,    //94-9E
-    0x8000,0x8000,0x8000,0x8042,0x8022,0x8012,0x800A,0x8006,0x8006,0x800A,0x8031,0x8000,0x8000,0x8000,0x8000,0x8000,    //95-9F
-    0x4000,0x4003,0x4004,0x4003,0x4004,0x4000,0x4000,0x4002,0x4001,0x4001,0x400E,0x4000,0x4000,0x4000,0x4000,0x4000,    //96-A2
-    0x7000,0x7000,0x7000,0x7021,0x7011,0x7009,0x7005,0x7003,0x7002,0x7005,0x7009,0x700F,0x7000,0x7000,0x7000,0x7000,    //97-A5
-    0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4006,0x4008,0x4007,0x400C,0x4000,0x4000,0x4000,0x4000,0x4000,    //98-C1
-    0x6001,0x600E,0x6010,0x6004,0x6004,0x6004,0x6004,0x6004,0x6004,0x6004,0x6004,0x6000,0x6000,0x6000,0x6000,0x6000,    //99-C2
-    0x3000,0x1000,0x1000,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1000,0x1000,0x1000,0x1000,0x1000,    //9A-C7
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8040,0x8081,0x8081,0x807E,0x8000,0x8000,0x8010,0x8000,0x8000,    //9B-C8
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8014,0x8000,0x8040,0x8081,0x8081,0x807E,0x8000,0x8000,0x8000,0x8000,0x8000,    //9C-CA
-    0x8000,0x8000,0x8000,0x8008,0x8000,0x8014,0x8000,0x8040,0x8081,0x8081,0x807E,0x8000,0x8000,0x8000,0x8000,0x8000,    //9D-CB
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8070,0x808F,0x8030,0x8040,0x8080,0x8088,0x8080,0x8041,0x803E,0x8000,    //9E-CC
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8070,0x808F,0x8030,0x8040,0x8080,0x8080,0x8080,0x8041,0x803E,0x8000,    //9F-CD
-    0x8000,0x8000,0x8000,0x8020,0x8000,0x8000,0x8070,0x808F,0x8030,0x8040,0x8080,0x8080,0x8080,0x8041,0x803E,0x8000,    //A0-CE
-    0x5000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4004,0x4002,0x4001,0x4001,0x400E,0x4000,0x4000,0x4000,0x4000,0x4000,    //A1-CF
-    0x5000,0x4000,0x4000,0x4004,0x4000,0x4000,0x4004,0x4002,0x4001,0x4001,0x400E,0x4000,0x4000,0x4000,0x4000,0x4000,    //A2-D0
-    0x7000,0x6000,0x6000,0x6000,0x6000,0x6000,0x6000,0x6000,0x6001,0x6001,0x6001,0x6002,0x600C,0x6030,0x6000,0x6000,    //A3-D1
-    0x7000,0x6000,0x6000,0x6000,0x6000,0x6002,0x6000,0x6000,0x6001,0x6001,0x6001,0x6002,0x600C,0x6030,0x6000,0x6000,    //A4-D2
-    0xC000,0xC000,0xC000,0xC000,0xC000,0xC000,0xC000,0xC000,0xC049,0xC449,0xC836,0xC820,0xC820,0xC440,0xC380,0xC000,    //A5-D3
-    0xC000,0xC000,0xC000,0xC008,0xC000,0xC014,0xC000,0xC000,0xC049,0xC449,0xC836,0xC820,0xC820,0xC440,0xC380,0xC000,    //A6-D4
-    0xC000,0xC000,0xC000,0xC000,0xC000,0xC000,0xC000,0xC006,0xC049,0xC451,0xC83E,0xC820,0xC820,0xC440,0xC380,0xC000,    //A7-D5
-    0xC000,0xC000,0xC000,0xC000,0xC010,0xC000,0xC000,0xC006,0xC049,0xC451,0xC83E,0xC820,0xC820,0xC440,0xC380,0xC000,    //A8-D6
-    0x8000,0x8000,0x8000,0x8020,0x8020,0x8020,0x8020,0x8026,0x8029,0x8031,0x80FE,0x8000,0x8000,0x8000,0x8000,0x8000,    //A9-D8
-    0x8000,0x8000,0x8000,0x8020,0x8024,0x8020,0x8020,0x8026,0x8029,0x8031,0x80FE,0x8000,0x8000,0x8000,0x8000,0x8000,    //AA-D9
-    0x7000,0x7000,0x7000,0x7000,0x7000,0x7030,0x7040,0x7044,0x7038,0x7020,0x7040,0x7040,0x7040,0x7021,0x701E,0x7000,    //AB-DA
-    0x7000,0x7000,0x7020,0x7000,0x7000,0x7030,0x7040,0x7044,0x7038,0x7020,0x7040,0x7040,0x7040,0x7021,0x701E,0x7000,    //AC-DB
-    0x3000,0x3000,0x3000,0x3000,0x3000,0x3000,0x3000,0x3000,0x3000,0x3000,0x3007,0x3000,0x3000,0x3000,0x3000,0x3000,    //AD-DC
-    0xA000,0xA000,0xA000,0xA004,0xA000,0xA000,0xA006,0xA109,0xA205,0xA203,0xA1FE,0xA000,0xA000,0xA000,0xA000,0xA000,    //AE-DD
-    0x8000,0x8000,0x8000,0x8000,0x800A,0x8000,0x8000,0x8006,0x8009,0x8049,0x8087,0x8081,0x8081,0x8042,0x803C,0x8000,    //AF-DE
-    0x8000,0x8000,0x8000,0x8001,0x8006,0x8008,0x800C,0x8042,0x8081,0x8081,0x807E,0x8000,0x8000,0x8000,0x8000,0x8000,    //B0-DF
-    0x7000,0x7000,0x7000,0x7001,0x7001,0x7001,0x7001,0x7001,0x7021,0x7041,0x7041,0x7042,0x703C,0x7000,0x7000,0x7000,    //B1-E1
-    0x6000,0x6000,0x6000,0x6000,0x6000,0x6000,0x6000,0x6006,0x6009,0x6009,0x601E,0x6020,0x6020,0x6020,0x6020,0x6020,    //B2-E3
-    0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8010,0x8000,0x8002,0x8041,0x8081,0x8081,0x8081,0x8042,0x803C,0x8000,    //B3-E4
-    0x5000,0x5000,0x5000,0x5000,0x5000,0x5000,0x500C,0x5012,0x5011,0x5011,0x500E,0x5000,0x5000,0x5000,0x5000,0x5000,    //B4-E5
-    0x7000,0x6000,0x6000,0x6000,0x6000,0x6000,0x6000,0x6006,0x6009,0x6009,0x6007,0x6001,0x6002,0x600C,0x6030,0x6000,    //B5-E6
-    0x9000,0x9000,0x9000,0x9000,0x9000,0x9000,0x9000,0x9003,0x9084,0x9108,0x910E,0x9102,0x9104,0x90F8,0x9000,0x9000    //B6-ED
-};
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Effects.h	Fri Apr 27 07:33:56 2018 +0000
@@ -0,0 +1,318 @@
+#include "ILI9225.h"
+#include <time.h>
+
+//Initialize pins for MBED LPC1768: RST, RS, CS, SDI(MOSI), CLK(SCK), LED.
+ILI9225 tft(P2_4, P2_3, P2_5, P0_9, P0_7, P0_6);
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+DigitalOut led3(LED3);
+DigitalOut led4(LED4);
+
+//Initialize pins for LPCXPRESSO LPC1769: RST, RS, CS, SDI(MOSI), CLK(SCK), LED.
+//ILI9225 tft(P0_5, P0_10, P0_4, P0_18, P0_15, P0_16);
+
+//???b used out of 256kb available.
+//uint16_t picture[13986] = {0};
+
+uint16_t *picture = (uint16_t *)(0x2007C000);
+
+uint8_t puzzState[16] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+    15};
+    
+uint8_t cursorIndex = 0; //Refers to current index (-1 < cursorIndex < 16).
+
+Timer timer; //Timer used to implement wireless input 
+InterruptIn wirelessInput(p18); //Interrupt used to implement wireless input
+float wirelessInput_Freq = 0; //Global variable used to implement wireless input
+
+void flip() {
+    //Convert period (in us) to frequency (Hz)
+    wirelessInput_Freq = (1/(float)timer.read_us())*1000000;
+    //Reset timer and wait for next interrupt
+    timer.reset();
+}
+
+int getPlayerInput(float freq) {
+    int specifier = (((int)freq) - (((int)freq)%1000))/1000;
+    wait_ms(1);
+    if(specifier == 1) {
+        //Turn on LED indicator(s): controller is in range.
+        led1 = led2 = led3 = led4 = 1;
+        return 0;
+    }
+    else if(specifier > 0 && specifier < 8) {
+        //Turn on LED indicator(s): controller is in range.
+        led1 = led2 = led3 = led4 = 1;
+        return specifier;
+    }
+    else {
+        //Turn off LED indicator(s): controller is NOT in range.
+        led1 = led2 = led3 = led4 = 0;
+        return 0;
+    }
+}
+
+void printNumber(int x, int y, uint8_t number) {
+    //tft.fillRectangle(0, 0, 175, 91, COLOR_BLACK);
+    tft.setFont(Terminal12x16);
+        
+    if(number == 0)
+        tft.drawText(x, y, "0", COLOR_WHITE);
+    else if(number == 1)
+        tft.drawText(x, y, "1", COLOR_WHITE);
+    else if(number == 2)
+        tft.drawText(x, y, "2", COLOR_WHITE);
+    else if(number == 3)
+        tft.drawText(x, y, "3", COLOR_WHITE);
+    else if(number == 4)
+        tft.drawText(x, y, "4", COLOR_WHITE);
+    else if(number == 5)
+        tft.drawText(x, y, "5", COLOR_WHITE);
+    else if(number == 6)
+        tft.drawText(x, y, "6", COLOR_WHITE);
+    else if(number == 7)
+        tft.drawText(x, y, "7", COLOR_WHITE);
+    else if(number == 8)
+        tft.drawText(x, y, "8", COLOR_WHITE);
+    else if(number == 9)
+        tft.drawText(x, y, "9", COLOR_WHITE);
+    else if(number == 10)
+        tft.drawText(x, y, "10", COLOR_WHITE);
+    else if(number == 11)
+        tft.drawText(x, y, "11", COLOR_WHITE);
+    else if(number == 12)
+        tft.drawText(x, y, "12", COLOR_WHITE);
+    else if(number == 13)
+        tft.drawText(x, y, "13", COLOR_WHITE);
+    else if(number == 14)
+        tft.drawText(x, y, "14", COLOR_WHITE);
+    else if(number == 15)
+        tft.drawText(x, y, "15", COLOR_WHITE);
+    else
+        tft.drawText(x, y, "?", COLOR_WHITE);
+}
+
+void printElementsInPicture() {
+    tft.fillRectangle(0, 0, 175, 91, COLOR_BLACK);
+    for(int i = 0; i < 16; i++)
+        printNumber((40*(i%4)) + 8, (20*((i - (i%4))/4)) + 8, puzzState[i]);
+}
+
+//Put contents of pictureN at target index on GLCD specified by 'index'.
+void printPictureN(int index, int N) {
+    int c = index%4;
+    int r = (index - c)/4;
+    
+    if(N > 13) {
+        tft.fillRectangle((39*c) + 11, (29*r) + 95,
+            (39*c) + 47, (29*r) + 121, COLOR_BLACK);
+        return;
+    }
+    for(int x = (39*c) + 11; x <= (39*c) + 47; x++) {
+        for(int y = (29*r) + 95; y <= (29*r) + 121; y++)
+            tft.drawPixel(x, y, picture[(999*N) + (4*y) + x]);
+    }
+}
+
+void updatePuzzle() {
+    for(int N = 0; N < 16; N++)
+        printPictureN(N, puzzState[N]);
+}
+
+int getNextPixel_index = 0;
+
+//**TODO** replace the contents of the following method with the code necessary
+//to get the next pixel from the OV7670. The method, in its current state, is
+//good for testing purposes. You should also be able to remove the
+//'getNextPixel_index' variable if you correctly implement this new method.
+uint16_t getNextPixel() {
+    uint16_t value = 0;
+    
+    int x, y;
+    
+    if(getNextPixel_index > 19199) {
+        getNextPixel_index = 0;
+        x = 0;
+    }
+    else
+        x = getNextPixel_index%160;
+    y = (getNextPixel_index - x)/160;
+    
+    //Is pixel in one of 4 outer pieces (corners)?
+    if((x >= 0 && x <= 40) && (y >= 0 && y <= 30)) //Upper left corner.
+        value = 65535;
+    if((x >= 119 && x <= 159) && (y >= 0 && y <= 30)) //Upper right corner.
+        value = 52428;
+    if((x >= 0 && x <= 40) && (y >= 89 && y <= 119)) //Lower left corner.
+        value = 13107;
+    if((x >= 119 && x <= 159) && (y >= 89 && y <= 119)) //Lower right corner.
+        value = 0;
+    
+    //Is pixel in one of 4 outer pieces (left and right)?
+    if((x >= 0 && x <= 40) && (y >= 31 && y <= 59)) //Upper left side.
+        value = 48059;
+    if((x >= 0 && x <= 40) && (y >= 60 && y <= 88)) //Lower left side.
+        value = 30583;
+    if((x >= 119 && x <= 159) && (y >= 31 && y <= 59)) //Upper right side.
+        value = 34952;
+    if((x >= 119 && x <= 159) && (y >= 60 && y <= 88)) //Lower right side.
+        value = 17476;
+    
+    //Is pixel in one of 4 outer pieces (top and bottom)?
+    if((x >= 41 && x <= 79) && (y >= 0 && y <= 30)) //Left top side.
+        value = 61166;
+    if((x >= 80 && x <= 118) && (y >= 0 && y <= 30)) //Right top side.
+        value = 56797;
+    if((x >= 41 && x <= 79) && (y >= 89 && y <= 119)) //Left bottom side.
+        value = 8738;
+    if((x >= 80 && x <= 118) && (y >= 89 && y <= 119)) //Right bottom side.
+        value = 0;
+    
+    //Is pixel in one of 4 inner pieces?
+    if((x >= 41 && x <= 79) && (y >= 31 && y <= 59)) //Upper left inner piece.
+        value = 43690;
+    if((x >= 80 && x <= 118) && (y >= 31 && y <= 59)) //Upper right inner piece.
+        value = 39321;
+    if((x >= 41 && x <= 79) && (y >= 60 && y <= 88)) //Lower left inner piece.
+        value = 26214;
+    if((x >= 80 && x <= 118) && (y >= 60 && y <= 88)) //Lower right inner piece.
+        value = 21845;
+    
+    getNextPixel_index++;
+    
+    return value;
+}
+
+void handlePixel(int index, uint16_t pixel) {
+    int x = index%160;
+    int y = (index - x)/160;
+    if((x >= 3 && x <= 39) && (y >= 3 && y <= 29))
+        picture[37*y + x - 114] = pixel;
+    else if((x >= 42 && x <= 78) && (y >= 3 && y <= 29))
+        picture[37*y + x - 153 + 999] = pixel;
+    else if((x >= 81 && x <= 117) && (y >= 3 && y <= 29))
+        picture[37*y + x - 192 + 1998] = pixel;
+    else if((x >= 120 && x <= 156) && (y >= 3 && y <= 29))
+        picture[37*y + x - 231 + 2997] = pixel;
+    else if((x >= 3 && x <= 39) && (y >= 32 && y <= 58))
+        picture[37*y + x - 1187 + 3996] = pixel;
+    else if((x >= 42 && x <= 78) && (y >= 32 && y <= 58))
+        picture[37*y + x - 1226 + 4995] = pixel;
+    else if((x >= 81 && x <= 117) && (y >= 32 && y <= 58))
+        picture[37*y + x - 1265 + 5994] = pixel;
+    else if((x >= 120 && x <= 156) && (y >= 32 && y <= 58))
+        picture[37*y + x - 1304 + 6993] = pixel;
+    else if((x >= 3 && x <= 39) && (y >= 61 && y <= 87))
+        picture[37*y + x - 2260 + 7992] = pixel;
+    else if((x >= 42 && x <= 78) && (y >= 61 && y <= 87))
+        picture[37*y + x - 2299 + 8991] = pixel;
+    else if((x >= 81 && x <= 117) && (y >= 61 && y <= 87))
+        picture[37*y + x - 2338 + 9990] = pixel;
+    else if((x >= 120 && x <= 156) && (y >= 61 && y <= 87))
+        picture[37*y + x - 2377 + 10989] = pixel;
+    else if((x >= 3 && x <= 39) && (y >= 90 && y <= 116))
+        picture[37*y + x - 3333 + 11988] = pixel;
+    else if((x >= 42 && x <= 78) && (y >= 90 && y <= 116))
+        picture[37*y + x - 3372 + 12987] = pixel;
+}
+
+//A utility function to swap 2 numbers
+void swap(uint8_t *a, uint8_t *b) {
+    uint8_t temp = *a;
+    *a = *b;
+    *b = temp;
+}
+
+void shuffleGridIndices() {
+    int n = sizeof(puzzState)/sizeof(puzzState[0]);
+    
+    //Use a different seed value so that we don't get same result each time we
+    //run this program.
+    srand(time(NULL));
+ 
+    //Start from the last element and swap one by one. We don't need to run for
+    //the first element, which is why i > 0.
+    for (int i = n-1; i > 0; i--) {
+        int j = rand()%(i+1); //Pick a random index b.w. 0 & i.
+        swap(&puzzState[i], &puzzState[j]); //Swap w| element @ random index.
+    }
+}
+
+//This method puts a picture on the screen that is/was helpful during testing.
+void putTestPicture() {
+    //Add 4 outer pieces (corners).
+    tft.fillRectangle(8, 92, 48, 122, 65535); //Upper left corner.
+    tft.fillRectangle(127, 92, 167, 122, 52428); //Upper right corner.
+    tft.fillRectangle(8, 181, 48, 211, 13107); //Lower left corner.
+    tft.fillRectangle(127, 181, 167, 211, 0); //Lower right corner.
+    
+    //Add 4 outer pieces (left and right).
+    tft.fillRectangle(8, 123, 48, 151, 48059); //Upper left side.
+    tft.fillRectangle(8, 152, 48, 180, 30583); //Lower left side.
+    tft.fillRectangle(127, 123, 167, 151, 34952); //Upper right side.
+    tft.fillRectangle(127, 152, 167, 180, 17476); //Lower right side.
+    
+    //Add 4 outer pieces (top and bottom).
+    tft.fillRectangle(49, 92, 87, 122, 61166); //Left top side.
+    tft.fillRectangle(88, 92, 126, 122, 56797); //Right top side.
+    tft.fillRectangle(49, 181, 87, 211, 8738); //Left bottom side.
+    tft.fillRectangle(88, 181, 126, 211, 0); //Right bottom side.
+    
+    //Add 4 inner pieces.
+    tft.fillRectangle(49, 123, 87, 151, 43690); //Upper left inner piece.
+    tft.fillRectangle(88, 123, 126, 151, 39321); //Upper right inner piece.
+    tft.fillRectangle(49, 152, 87, 180, 26214); //Lower left inner piece.
+    tft.fillRectangle(88, 152, 126, 180, 21845); //Lower right inner piece.
+}
+
+void putGrid() {
+    tft.drawRectangle(8, 92, 167, 211, COLOR_WHITE);
+    tft.drawRectangle(9, 93, 166, 210, COLOR_WHITE);
+    
+    for(int r = 0; r < 4; r++) {
+        for(int c = 0; c < 4; c++)
+            tft.drawRectangle(39*c + 10, 29*r + 94, 39*c + 48, 29*r + 122,
+                COLOR_WHITE);
+    }
+}
+
+void highlightGridIndex(uint8_t index, bool hasSelected) {
+    int c = index%4;
+    int r = (index - c)/4;
+    putGrid();
+    if(hasSelected) //Red highlight means player has selected an index.
+        tft.drawRectangle(39*c + 10, 29*r + 94, 39*c + 48, 29*r + 122,
+            COLOR_RED);
+    if(!hasSelected) //Green highlight means player has not selected an index.
+        tft.drawRectangle(39*c + 10, 29*r + 94, 39*c + 48, 29*r + 122,
+            COLOR_GREEN);
+    cursorIndex = index;
+}
+
+bool selectionMode_indexVerified(uint8_t index) {
+    //index must satisfy 2 characteristics for method to return true.
+
+    //1) Target puzzle piece is NOT one of the 2 missing puzzle pieces.
+    if(puzzState[index] > 13)
+        return false;
+    
+    //2) Target puzzle piece is NOT locked on all 4 sides.
+    if(index - 4 > -1) { //NOT out of bounds above.
+        if(puzzState[index - 4] > 13) //Empty space above?
+            return true;
+    }
+    if(index + 4 < 16) { //NOT out of bounds below.
+        if(puzzState[index + 4] > 13) //Empty space below?
+            return true;
+    }
+    if((index%4) - 1 > -1) { //NOT out of bounds to the left.
+        if(puzzState[index - 1] > 13) //Empty space to the left?
+            return true;
+    }
+    if((index%4) + 1 < 4) { //NOT out of bounds to the right.
+        if(puzzState[index + 1] > 13) //Empty space to the right?
+            return true;
+    }
+
+    return false;
+}
\ No newline at end of file
--- a/FAmap.h	Tue Sep 01 12:16:09 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-//------------------------------------------------------------------------------------------------
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-//------------------------------------------------------------------------------------------------
-/*
-....::::: In The Name Of GOD :::::....
-
-
-****************                               ******************
-
-Ported to ILI9225 by Arman Safikhani  31-08-2015
-
-****************                               ******************
-
-
-TFT LCD (ILI9325-ILI9320 LCD Driver) Functions (ECA 2.8 inch LCD Module)
-Version : 1.0
-By Ali Imanifar                 11/06/2013
-
-ECA Corporation........www.ECA.ir
-ECA Eshop..............www.Eshop.ECA.ir
-ECA Forum..............www.ECA.ir/Forum2
-ECA Video Center.......www.TV.ECA.ir
-ECA Blog...............www.Blog.ECA.ir
-
-Important Note :
-DO NOT Change LCD Register Definitions And LCD Command Codes
-*/
-//------------------------------------------------------------------------------------------------
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-//------------------------------------------------------------------------------------------------
-
-
-const unsigned char FAmap[50][6] =
-{
-    //x-C1+5
-    0xB0,0x8C,0xB0,0x8C,1,1,    //34  ک     -   223 
-    0x81,0x03,0x81,0x03,1,1,    //0  پ      -   234
-    0x8D,0x93,0x94,0x93,1,1,    //1  چ      -   235
-    0x8E,0x8E,0x8E,0x8E,1,0,    //2  ژ      -   238
-    0x90,0x01,0x90,0x01,1,1,    //3  گ      -   239
-    0x98,0x96,0x98,0x96,0,1,    //4  ئ      -   193
-    0x99,0x99,0x02,0x02,1,0,    //5  آ      -   194
-    0xC3,0xC3,0x01,0x01,1,0,    //6     -   195
-    0xC4,0xC4,0xC4,0xC4,0,0,    //7     -   196
-    0xC5,0xC5,0x03,0x03,1,0,    //8     -   197
-    0xC6,0xC6,0xC6,0xC6,0,0,    //9     -   198
-    0x9A,0x9A,0x00,0x00,1,0,    //10  ا     -   199
-    0x9B,0x04,0x9B,0x04,1,1,    //11  ب     -   200
-    0xC9,0xFE,0xE9,0x95,1,1,    //12    -   201
-    0x9C,0x05,0x9C,0x05,1,1,    //13  ت    -    202
-    0x9D,0x06,0x9D,0x06,1,1,    //14  ث     -   203
-    0x9E,0x07,0x08,0x07,1,1,    //15  ج     -   204
-    0x9F,0x09,0x0A,0x09,1,1,    //16  ح     -   205
-    0xA0,0x0B,0x0C,0x0B,1,1,    //17  خ     -   206
-    0xA1,0xA1,0xA1,0xA1,1,0,    //18  د     -   207
-    0xA2,0xA2,0xA2,0xA2,1,0,    //19  ذ     -   208
-    0xA3,0xA3,0xA3,0xA3,1,0,    //20  ر     -   209
-    0xA4,0xA4,0xA4,0xA4,1,0,    //21  ز     -   210
-    0xA5,0x8A,0xA5,0x8A,1,1,    //22  س     -   211
-    0xA6,0x0E,0xA6,0x0E,1,1,    //23  ش     -   212
-    0xA7,0x0F,0xA7,0x0F,1,1,    //24  ص     -   213
-    0xA8,0x1A,0xA8,0x1A,1,1,    //25  ض     -   214
-    0xD7,0xD7,0xD7,0xD7,0,0,    //26    -   215
-    0xA9,0xA9,0xA9,0xA9,1,1,    //27  ط     -   216
-    0xAA,0xAA,0xAA,0xAA,1,1,    //28  ظ     -   217
-    0xAB,0x1B,0x89,0x88,1,1,    //29  ع     -   218
-    0xAC,0x85,0x7F,0x84,1,1,    //30  غ     -   219
-    0xAD,0xAD,0xAD,0xAD,1,1,    //31  -     -   220
-    0xAE,0x80,0xAE,0x80,1,1,    //32  ف     -   221
-    0xAF,0x83,0xAF,0x83,1,1,    //33  ق     -   222
-    0xB0,0x8C,0xB0,0x8C,1,1,    //34  ک     -   223
-    0xE0,0xE0,0xE0,0xE0,0,0,    //35    -   224
-    0xB1,0x86,0xB1,0x86,1,1,    //36  ل     -   225
-    0xE2,0xE2,0xE2,0xE2,0,0,    //37    -   226
-    0xB2,0x82,0xB2,0x82,1,1,    //38  م     -   227
-    0xB3,0x87,0xB3,0x87,1,1,    //39  ن     -   228
-    0xB4,0x0D,0x8B,0x91,1,1,    //40  ه     -   229
-    0xB5,0xB5,0xB5,0xB5,1,0,    //41  و     -   230
-    0xE7,0xE7,0xE7,0xE7,0,0,    //42    -   231
-    0xE8,0xE8,0xE8,0xE8,0,0,    //43    -   232
-    0xE9,0xE9,0xE9,0xE9,0,0,    //44    -   233
-    0xFE,0xFE,0xFE,0xFE,0,0,    //45    -   254
-    0xFF,0xFF,0xFF,0xFF,0,0,    //46    -   255
-    0xEC,0xC0,0xA0,0xC0,1,1,    //47    -   236
-    0xB6,0x8F,0x92,0x8F,1,1     //48  ي     -   237
-
-};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Fonts.h	Fri Apr 27 07:33:56 2018 +0000
@@ -0,0 +1,294 @@
+#include "Effects.h"
+
+//GLCD FontName : Terminal12x16
+//GLCD FontSize : 12 x 16
+const uint8_t Terminal12x16[] = {
+    0x0C, 0x10, 0x20, 0x60, 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, //Code for char  
+    0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xFF, 0x33, 0xFF,
+    0x33, 0xFF, 0x33, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, //Code for char !
+    0x09, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x00,
+    0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, //Code for char "
+    0x0C, 0x00, 0x02, 0x10, 0x1E, 0x90, 0x1F, 0xF0, 0x1F, 0xFE, 0x03, 0x7E,
+    0x1E, 0x9E, 0x1F, 0xF0, 0x1F, 0xFE, 0x03, 0x7E, 0x02, 0x1E, 0x00, 0x10,
+    0x00, //Code for char #
+    0x0A, 0x00, 0x00, 0x78, 0x04, 0xFC, 0x0C, 0xFC, 0x0C, 0xFF, 0x3F, 0xFF,
+    0x3F, 0xFF, 0x3F, 0xCC, 0x0F, 0xCC, 0x0F, 0x88, 0x07, 0x00, 0x00, 0x00,
+    0x00, //Code for char $
+    0x0C, 0x00, 0x30, 0x38, 0x38, 0x38, 0x3C, 0x38, 0x1E, 0x38, 0x0F, 0x80,
+    0x07, 0xC0, 0x03, 0xE0, 0x39, 0xF0, 0x38, 0x78, 0x38, 0x3C, 0x38, 0x1C,
+    0x00, //Code for char %
+    0x0B, 0x00, 0x00, 0x00, 0x1F, 0xB8, 0x3F, 0xFC, 0x3F, 0xFE, 0x31, 0xE6,
+    0x37, 0xFE, 0x3F, 0x3E, 0x1E, 0x1C, 0x3E, 0x00, 0x36, 0x00, 0x22, 0x00,
+    0x00, //Code for char &
+    0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x3F, 0x00, 0x3F,
+    0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, //Code for char '
+    0x09, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x03, 0xFC, 0x0F, 0xFE, 0x1F, 0xFF,
+    0x3F, 0x07, 0x38, 0x01, 0x20, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, //Code for char (
+    0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x01, 0x20, 0x07, 0x38, 0xFF,
+    0x3F, 0xFE, 0x1F, 0xFC, 0x0F, 0xF0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, //Code for char )
+    0x0A, 0x00, 0x00, 0x98, 0x0C, 0xB8, 0x0E, 0xF8, 0x0F, 0xF8, 0x0F, 0xF8,
+    0x0F, 0xF8, 0x0F, 0xF8, 0x0F, 0xB8, 0x0E, 0x98, 0x0C, 0x00, 0x00, 0x00,
+    0x00, //Code for char *
+    0x0A, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xF0, 0x0F, 0xF0,
+    0x0F, 0xF0, 0x0F, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00,
+    0x00, //Code for char +
+    0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x00, 0xF8, 0x00,
+    0xF8, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, //Code for char ,
+    0x0A, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80,
+    0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00,
+    0x00, //Code for char -
+    0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00,
+    0x38, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, //Code for char .
+    0x0C, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x07, 0xC0,
+    0x03, 0xE0, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0E,
+    0x00, //Code for char /
+    0x0C, 0xF8, 0x07, 0xFE, 0x1F, 0xFE, 0x1F, 0x07, 0x3F, 0x83, 0x33, 0xC3,
+    0x31, 0xE3, 0x30, 0x73, 0x30, 0x3F, 0x38, 0xFE, 0x1F, 0xFE, 0x1F, 0xF8,
+    0x07, //Code for char 0
+    0x0B, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x30, 0x0C, 0x30, 0x0E, 0x30, 0xFF,
+    0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00,
+    0x00, //Code for char 1
+    0x0C, 0x1C, 0x30, 0x1E, 0x38, 0x1F, 0x3C, 0x07, 0x3E, 0x03, 0x3F, 0x83,
+    0x37, 0xC3, 0x33, 0xE3, 0x31, 0xF7, 0x30, 0x7F, 0x30, 0x3E, 0x30, 0x1C,
+    0x30, //Code for char 2
+    0x0C, 0x0C, 0x0C, 0x0E, 0x1C, 0x0F, 0x3C, 0xC7, 0x38, 0xC3, 0x30, 0xC3,
+    0x30, 0xC3, 0x30, 0xC3, 0x30, 0xE7, 0x39, 0xFF, 0x3F, 0x7E, 0x1F, 0x3C,
+    0x0E, //Code for char 3
+    0x0C, 0xC0, 0x03, 0xE0, 0x03, 0xF0, 0x03, 0x78, 0x03, 0x3C, 0x03, 0x1E,
+    0x03, 0x0F, 0x03, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x03, 0x00,
+    0x03, //Code for char 4
+    0x0C, 0x3F, 0x0C, 0x7F, 0x1C, 0x7F, 0x3C, 0x63, 0x38, 0x63, 0x30, 0x63,
+    0x30, 0x63, 0x30, 0x63, 0x30, 0xE3, 0x38, 0xE3, 0x3F, 0xC3, 0x1F, 0x83,
+    0x0F, //Code for char 5
+    0x0C, 0xC0, 0x0F, 0xF0, 0x1F, 0xF8, 0x3F, 0xFC, 0x39, 0xDE, 0x30, 0xCF,
+    0x30, 0xC7, 0x30, 0xC3, 0x30, 0xC3, 0x39, 0xC3, 0x3F, 0x80, 0x1F, 0x00,
+    0x0F, //Code for char 6
+    0x0C, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x30, 0x03, 0x3C, 0x03,
+    0x3F, 0xC3, 0x0F, 0xF3, 0x03, 0xFF, 0x00, 0x3F, 0x00, 0x0F, 0x00, 0x03,
+    0x00, //Code for char 7
+    0x0C, 0x00, 0x0F, 0xBC, 0x1F, 0xFE, 0x3F, 0xFF, 0x39, 0xE7, 0x30, 0xC3,
+    0x30, 0xC3, 0x30, 0xE7, 0x30, 0xFF, 0x39, 0xFE, 0x3F, 0xBC, 0x1F, 0x00,
+    0x0F, //Code for char 8
+    0x0C, 0x3C, 0x00, 0x7E, 0x00, 0xFF, 0x30, 0xE7, 0x30, 0xC3, 0x30, 0xC3,
+    0x38, 0xC3, 0x3C, 0xC3, 0x1E, 0xE7, 0x0F, 0xFF, 0x07, 0xFE, 0x03, 0xFC,
+    0x00, //Code for char 9
+    0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x1C, 0x70, 0x1C, 0x70,
+    0x1C, 0x70, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, //Code for char :
+    0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x9C, 0x70, 0xFC, 0x70,
+    0xFC, 0x70, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, //Code for char ;
+    0x0A, 0x00, 0x00, 0xC0, 0x00, 0xE0, 0x01, 0xF0, 0x03, 0xF8, 0x07, 0x3C,
+    0x0F, 0x1E, 0x1E, 0x0F, 0x3C, 0x07, 0x38, 0x03, 0x30, 0x00, 0x00, 0x00,
+    0x00, //Code for char <
+    0x0B, 0x00, 0x00, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60,
+    0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x00,
+    0x00, //Code for char =
+    0x0A, 0x00, 0x00, 0x03, 0x30, 0x07, 0x38, 0x0F, 0x3C, 0x1E, 0x1E, 0x3C,
+    0x0F, 0xF8, 0x07, 0xF0, 0x03, 0xE0, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00,
+    0x00, //Code for char >
+    0x0B, 0x1C, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x07, 0x00, 0x83, 0x37, 0xC3,
+    0x37, 0xE3, 0x37, 0xF7, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x00,
+    0x00, //Code for char ?
+    0x0C, 0xF8, 0x0F, 0xFE, 0x1F, 0xFF, 0x1F, 0xF7, 0x3B, 0xFB, 0x37, 0xFB,
+    0x37, 0xFB, 0x37, 0xFB, 0x37, 0xFF, 0x37, 0xFF, 0x37, 0xFE, 0x03, 0xF8,
+    0x01, //Code for char @
+    0x0B, 0x00, 0x38, 0x00, 0x3F, 0xE0, 0x3F, 0xFC, 0x07, 0xFF, 0x06, 0x1F,
+    0x06, 0xFF, 0x06, 0xFC, 0x07, 0xE0, 0x3F, 0x00, 0x3F, 0x00, 0x38, 0x00,
+    0x00, //Code for char A
+    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xC3, 0x30, 0xC3, 0x30, 0xC3,
+    0x30, 0xE7, 0x30, 0xFF, 0x39, 0xFE, 0x3F, 0xBC, 0x1F, 0x00, 0x0F, 0x00,
+    0x00, //Code for char B
+    0x0B, 0xF0, 0x03, 0xFC, 0x0F, 0xFE, 0x1F, 0x0F, 0x3C, 0x07, 0x38, 0x03,
+    0x30, 0x03, 0x30, 0x07, 0x38, 0x0F, 0x3C, 0x0E, 0x1C, 0x0C, 0x0C, 0x00,
+    0x00, //Code for char C
+    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x03, 0x30, 0x03, 0x30, 0x03,
+    0x30, 0x07, 0x38, 0x0F, 0x3C, 0xFE, 0x1F, 0xFC, 0x0F, 0xF0, 0x03, 0x00,
+    0x00, //Code for char D
+    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xC3, 0x30, 0xC3, 0x30, 0xC3,
+    0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC3, 0x30, 0x03, 0x30, 0x03, 0x30, 0x00,
+    0x00, //Code for char E
+    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xC3, 0x00, 0xC3, 0x00, 0xC3,
+    0x00, 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00,
+    0x00, //Code for char F
+    0x0B, 0xF0, 0x03, 0xFC, 0x0F, 0xFE, 0x1F, 0x0F, 0x3C, 0x07, 0x38, 0xC3,
+    0x30, 0xC3, 0x30, 0xC3, 0x30, 0xC7, 0x3F, 0xC7, 0x3F, 0xC6, 0x3F, 0x00,
+    0x00, //Code for char G
+    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xC0, 0x00, 0xC0, 0x00, 0xC0,
+    0x00, 0xC0, 0x00, 0xC0, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00,
+    0x00, //Code for char H
+    0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x03, 0x30, 0xFF, 0x3F, 0xFF,
+    0x3F, 0xFF, 0x3F, 0x03, 0x30, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, //Code for char I
+    0x0B, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x3E, 0x00, 0x38, 0x00, 0x30, 0x00,
+    0x30, 0x00, 0x30, 0x00, 0x38, 0xFF, 0x3F, 0xFF, 0x1F, 0xFF, 0x07, 0x00,
+    0x00, //Code for char J
+    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xE0, 0x01, 0xF0, 0x03, 0xF8,
+    0x07, 0x3C, 0x0F, 0x1E, 0x1E, 0x0F, 0x3C, 0x07, 0x38, 0x03, 0x30, 0x00,
+    0x00, //Code for char K
+    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x30, 0x00, 0x30, 0x00,
+    0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00,
+    0x00, //Code for char L
+    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x7E, 0x00, 0xF8, 0x01, 0xE0,
+    0x01, 0xF8, 0x01, 0x7E, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00,
+    0x00, //Code for char M
+    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x3E, 0x00, 0xF8, 0x00, 0xF0,
+    0x03, 0xC0, 0x07, 0x00, 0x1F, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00,
+    0x00, //Code for char N
+    0x0B, 0xF0, 0x03, 0xFC, 0x0F, 0xFE, 0x1F, 0x0F, 0x3C, 0x07, 0x38, 0x03,
+    0x30, 0x07, 0x38, 0x0F, 0x3C, 0xFE, 0x1F, 0xFC, 0x0F, 0xF0, 0x03, 0x00,
+    0x00, //Code for char O
+    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x83, 0x01, 0x83, 0x01, 0x83,
+    0x01, 0x83, 0x01, 0xC7, 0x01, 0xFF, 0x01, 0xFE, 0x00, 0x7C, 0x00, 0x00,
+    0x00, //Code for char P
+    0x0B, 0xF0, 0x03, 0xFC, 0x0F, 0xFE, 0x1F, 0x0F, 0x3C, 0x07, 0x38, 0x03,
+    0x36, 0x07, 0x3E, 0x0F, 0x3E, 0xFE, 0x3F, 0xFC, 0x3F, 0xF0, 0x33, 0x00, 
+    0x00, //Code for char Q
+    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x83, 0x01, 0x83, 0x03, 0x83,
+    0x07, 0x83, 0x0F, 0xC7, 0x1F, 0xFF, 0x3D, 0xFE, 0x38, 0x7C, 0x30, 0x00,
+    0x00, //Code for char R
+    0x0B, 0x3C, 0x0C, 0x7E, 0x1C, 0xFF, 0x3C, 0xE7, 0x38, 0xC3, 0x30, 0xC3,
+    0x30, 0xC3, 0x30, 0xC7, 0x39, 0xCF, 0x3F, 0x8E, 0x1F, 0x0C, 0x0F, 0x00,
+    0x00, //Code for char S
+    0x0A, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0xFF, 0x3F, 0xFF,
+    0x3F, 0xFF, 0x3F, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+    0x00, //Code for char T
+    0x0B, 0xFF, 0x07, 0xFF, 0x1F, 0xFF, 0x3F, 0x00, 0x38, 0x00, 0x30, 0x00,
+    0x30, 0x00, 0x30, 0x00, 0x38, 0xFF, 0x3F, 0xFF, 0x1F, 0xFF, 0x07, 0x00,
+    0x00, //Code for char U
+    0x0B, 0x07, 0x00, 0x3F, 0x00, 0xFF, 0x01, 0xF8, 0x0F, 0xC0, 0x3F, 0x00,
+    0x3E, 0xC0, 0x3F, 0xF8, 0x0F, 0xFF, 0x01, 0x3F, 0x00, 0x07, 0x00, 0x00,
+    0x00, //Code for char V
+    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x1E, 0x80, 0x07, 0x80,
+    0x03, 0x80, 0x07, 0x00, 0x1E, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00,
+    0x00, //Code for char W
+    0x0B, 0x03, 0x30, 0x0F, 0x3C, 0x1F, 0x3E, 0x3C, 0x0F, 0xF0, 0x03, 0xE0,
+    0x01, 0xF0, 0x03, 0x3C, 0x0F, 0x1F, 0x3E, 0x0F, 0x3C, 0x03, 0x30, 0x00,
+    0x00, //Code for char X
+    0x0B, 0x03, 0x00, 0x0F, 0x00, 0x3F, 0x00, 0xFC, 0x00, 0xF0, 0x3F, 0xC0,
+    0x3F, 0xF0, 0x3F, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0x00, 0x03, 0x00, 0x00,
+    0x00, //Code for char Y
+    0x0B, 0x03, 0x30, 0x03, 0x3C, 0x03, 0x3E, 0x03, 0x3F, 0xC3, 0x33, 0xE3,
+    0x31, 0xF3, 0x30, 0x3F, 0x30, 0x1F, 0x30, 0x0F, 0x30, 0x03, 0x30, 0x00,
+    0x00, //Code for char Z
+    0x09, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x03,
+    0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, //Code for char [
+    0x0C, 0x0E, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x00, 0xE0,
+    0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x1C, 0x00,
+    0x18, //Code for char BackSlash
+    0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03,
+    0x30, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x00, //Code for char ]
+    0x0C, 0x60, 0x00, 0x70, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F,
+    0x00, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x70, 0x00, 0x60,
+    0x00, //Code for char ^
+    0x0C, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00,
+    0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00,
+    0xC0, //Code for char _
+    0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x7E,
+    0x00, 0x7E, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, //Code for char `
+    0x0B, 0x00, 0x1C, 0x40, 0x3E, 0x60, 0x3F, 0x60, 0x33, 0x60, 0x33, 0x60, 
+    0x33, 0x60, 0x33, 0x60, 0x33, 0xE0, 0x3F, 0xE0, 0x3F, 0xC0, 0x3F, 0x00,
+    0x00, //Code for char a
+    0x0B, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xE0, 0x30, 0x60, 0x30, 0x60, 
+    0x30, 0x60, 0x30, 0xE0, 0x38, 0xE0, 0x3F, 0xC0, 0x1F, 0x80, 0x0F, 0x00, 
+    0x00, //Code for char b
+    0x0B, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x3F, 0xE0, 0x38, 0x60, 0x30, 0x60, 
+    0x30, 0x60, 0x30, 0x60, 0x30, 0xE0, 0x38, 0xC0, 0x18, 0x80, 0x08, 0x00, 
+    0x00, //Code for char c
+    0x0B, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x3F, 0xE0, 0x38, 0x60, 0x30, 0x60, 
+    0x30, 0xE0, 0x30, 0xE0, 0x30, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 
+    0x00, //Code for char d
+    0x0B, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x3F, 0xE0, 0x3B, 0x60, 0x33, 0x60, 
+    0x33, 0x60, 0x33, 0x60, 0x33, 0xE0, 0x33, 0xC0, 0x13, 0x80, 0x01, 0x00, 
+    0x00, //Code for char e
+    0x09, 0xC0, 0x00, 0xC0, 0x00, 0xFC, 0x3F, 0xFE, 0x3F, 0xFF, 0x3F, 0xC7, 
+    0x00, 0xC3, 0x00, 0xC3, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x00, //Code for char f
+    0x0B, 0x80, 0x03, 0xC0, 0xC7, 0xE0, 0xCF, 0xE0, 0xCE, 0x60, 0xCC, 0x60, 
+    0xCC, 0x60, 0xCC, 0x60, 0xEE, 0xE0, 0xFF, 0xE0, 0x7F, 0xE0, 0x3F, 0x00, 
+    0x00, //Code for char g
+    0x0A, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xE0, 0x00, 0x60, 0x00, 0x60, 
+    0x00, 0xE0, 0x00, 0xE0, 0x3F, 0xC0, 0x3F, 0x80, 0x3F, 0x00, 0x00, 0x00, 
+    0x00, //Code for char h
+    0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0x30, 0xEC, 0x3F, 0xEC, 
+    0x3F, 0xEC, 0x3F, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x00, //Code for char i
+    0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE0, 0x60, 
+    0xC0, 0xEC, 0xFF, 0xEC, 0xFF, 0xEC, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x00, //Code for char j
+    0x0A, 0x00, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x80, 0x07, 0xC0, 
+    0x0F, 0xE0, 0x1F, 0xE0, 0x3C, 0x60, 0x38, 0x00, 0x30, 0x00, 0x00, 0x00, 
+    0x00, //Code for char k
+    0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x03, 0x30, 0xFF, 0x3F, 0xFF, 
+    0x3F, 0xFF, 0x3F, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x00, //Code for char l
+    0x0B, 0xE0, 0x3F, 0xE0, 0x3F, 0xE0, 0x3F, 0xE0, 0x00, 0xE0, 0x3F, 0xC0, 
+    0x3F, 0xE0, 0x3F, 0xE0, 0x00, 0xE0, 0x3F, 0xC0, 0x3F, 0x80, 0x3F, 0x00, 
+    0x00, //Code for char m
+    0x0B, 0x00, 0x00, 0xE0, 0x3F, 0xE0, 0x3F, 0xE0, 0x3F, 0x60, 0x00, 0x60, 
+    0x00, 0x60, 0x00, 0xE0, 0x00, 0xE0, 0x3F, 0xC0, 0x3F, 0x80, 0x3F, 0x00, 
+    0x00, //Code for char n
+    0x0B, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x3F, 0xE0, 0x38, 0x60, 0x30, 0x60, 
+    0x30, 0x60, 0x30, 0xE0, 0x38, 0xE0, 0x3F, 0xC0, 0x1F, 0x80, 0x0F, 0x00, 
+    0x00, //Code for char o
+    0x0B, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0x60, 0x1C, 0x60, 0x18, 0x60, 
+    0x18, 0x60, 0x18, 0xE0, 0x1C, 0xE0, 0x1F, 0xC0, 0x0F, 0x80, 0x07, 0x00, 
+    0x00, //Code for char p
+    0x0B, 0x80, 0x07, 0xC0, 0x0F, 0xE0, 0x1F, 0xE0, 0x1C, 0x60, 0x18, 0x60, 
+    0x18, 0x60, 0x18, 0x60, 0x1C, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0x00, 
+    0x00, //Code for char q
+    0x0B, 0x00, 0x00, 0xE0, 0x3F, 0xE0, 0x3F, 0xE0, 0x3F, 0xE0, 0x00, 0x60, 
+    0x00, 0x60, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xC0, 0x00, 0x00, 
+    0x00, //Code for char r
+    0x09, 0xC0, 0x11, 0xE0, 0x33, 0xE0, 0x33, 0x60, 0x33, 0x60, 0x33, 0x60, 
+    0x33, 0x60, 0x3F, 0x60, 0x3F, 0x40, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x00, //Code for char s
+    0x09, 0x60, 0x00, 0x60, 0x00, 0xFE, 0x1F, 0xFE, 0x3F, 0xFE, 0x3F, 0x60, 
+    0x30, 0x60, 0x30, 0x60, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x00, //Code for char t
+    0x0B, 0xE0, 0x0F, 0xE0, 0x1F, 0xE0, 0x3F, 0x00, 0x38, 0x00, 0x30, 0x00, 
+    0x30, 0x00, 0x30, 0x00, 0x38, 0xE0, 0x3F, 0xE0, 0x3F, 0xE0, 0x3F, 0x00, 
+    0x00, //Code for char u
+    0x0B, 0x60, 0x00, 0xE0, 0x01, 0xE0, 0x07, 0x80, 0x1F, 0x00, 0x3E, 0x00, 
+    0x38, 0x00, 0x3E, 0x80, 0x1F, 0xE0, 0x07, 0xE0, 0x01, 0x60, 0x00, 0x00, 
+    0x00, //Code for char v
+    0x0B, 0xE0, 0x07, 0xE0, 0x1F, 0xE0, 0x3F, 0x00, 0x3C, 0xE0, 0x1F, 0xE0, 
+    0x0F, 0xE0, 0x1F, 0x00, 0x3C, 0xE0, 0x3F, 0xE0, 0x1F, 0xE0, 0x07, 0x00, 
+    0x00, //Code for char w
+    0x0A, 0x60, 0x30, 0xE0, 0x38, 0xE0, 0x3D, 0xC0, 0x1F, 0x80, 0x0F, 0x80, 
+    0x0F, 0xC0, 0x1F, 0xE0, 0x3D, 0xE0, 0x38, 0x60, 0x30, 0x00, 0x00, 0x00, 
+    0x00, //Code for char x
+    0x0A, 0x00, 0x00, 0x60, 0x00, 0xE0, 0x81, 0xE0, 0xE7, 0x80, 0xFF, 0x00, 
+    0x7E, 0x80, 0x1F, 0xE0, 0x07, 0xE0, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 
+    0x00, //Code for char y
+    0x0A, 0x60, 0x30, 0x60, 0x38, 0x60, 0x3C, 0x60, 0x3E, 0x60, 0x37, 0xE0, 
+    0x33, 0xE0, 0x31, 0xE0, 0x30, 0x60, 0x30, 0x20, 0x30, 0x00, 0x00, 0x00, 
+    0x00, //Code for char z
+    0x0A, 0x00, 0x00, 0x80, 0x00, 0xC0, 0x01, 0xFC, 0x1F, 0xFE, 0x3F, 0x7F, 
+    0x7F, 0x07, 0x70, 0x03, 0x60, 0x03, 0x60, 0x03, 0x60, 0x00, 0x00, 0x00, 
+    0x00, //Code for char {
+    0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F, 0xFF, 
+    0x3F, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x00, //Code for char |
+    0x0A, 0x00, 0x00, 0x03, 0x60, 0x03, 0x60, 0x03, 0x60, 0x07, 0x70, 0x7F, 
+    0x7F, 0xFE, 0x3F, 0xFC, 0x1F, 0xC0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 
+    0x00, //Code for char }
+    0x0B, 0x10, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x1C, 
+    0x00, 0x18, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x00, 
+    0x00, //Code for char ~
+    0x0B, 0x00, 0x0F, 0x80, 0x0F, 0xC0, 0x0F, 0xE0, 0x0C, 0x70, 0x0C, 0x30, 
+    0x0C, 0x70, 0x0C, 0xE0, 0x0C, 0xC0, 0x0F, 0x80, 0x0F, 0x00, 0x0F, 0x00, 
+    0x00 //Code for char 
+};
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ILI9225.cpp	Fri Apr 27 07:33:56 2018 +0000
@@ -0,0 +1,535 @@
+#include "ILI9225.h"
+#define bitRead(value, bit) (((value) >> (bit)) & 0x01)
+
+int font_color, x_font, y_font;
+
+//Global Variables
+int x_text = 0, y_text = 0;
+int x_base = 0;
+
+//Constructor when using software SPI.  All output pins are configurable.
+ILI9225::ILI9225(PinName rst, PinName rs, PinName cs,
+    PinName sdi, PinName clk, PinName led) :
+    _rst(rst), _rs(rs), _cs(cs), _sdi(sdi), _clk(clk), spi(sdi, NC, clk),
+    _led(led), _rstInOut(_rst), _rsInOut(_rs), _csInOut(_cs), _ledInOut(_led),
+    hwSPI(true)
+{}
+
+void ILI9225::_orientCoordinates(uint16_t &x1, uint16_t &y1) {
+    switch (_orientation) {
+    case 0:
+        break;
+    case 1:
+        y1 = _maxY - y1 - 1;
+        _swap(x1, y1);
+        break;
+    case 2:
+        x1 = _maxX - x1 - 1;
+        y1 = _maxY - y1 - 1;
+        break;
+    case 3:
+        x1 = _maxX - x1 - 1;
+        _swap(x1, y1);
+        break;
+    }
+}
+
+void ILI9225::_setWindow(uint16_t x0, uint16_t y0, uint16_t x1,
+    uint16_t y1) {
+    _orientCoordinates(x0, y0);
+    _orientCoordinates(x1, y1);
+
+    if (x1 < x0)
+        _swap(x0, x1);
+    if (y1 < y0)
+        _swap(y0, y1);
+
+    _writeRegister(ILI9225_HORIZONTAL_WINDOW_ADDR1, x1);
+    _writeRegister(ILI9225_HORIZONTAL_WINDOW_ADDR2, x0);
+
+    _writeRegister(ILI9225_VERTICAL_WINDOW_ADDR1, y1);
+    _writeRegister(ILI9225_VERTICAL_WINDOW_ADDR2, y0);
+
+    _writeRegister(ILI9225_RAM_ADDR_SET1, x0);
+    _writeRegister(ILI9225_RAM_ADDR_SET2, y0);
+
+    _writeCommand(0x00, 0x22);
+}
+
+void ILI9225::begin() {
+    //Set up pins
+    _rsInOut.output();
+    _csInOut.output();
+    _rstInOut.output();
+
+    if (_led)
+        _ledInOut.output();
+    if (hwSPI) { //Using hardware SPI
+        spi.frequency(16000000);
+        spi.format(8, 0);
+    }
+    else {
+        DigitalInOut _clkInOut(_clk);
+        _clkInOut.output();
+        DigitalInOut _sdiInOut(_sdi);
+        _sdiInOut.output();
+    }
+
+    //Turn on backlight
+    if (_led)
+        _ledInOut = 1;
+
+    //Initialization Code
+    _rstInOut = 1; //Put reset pin high to release ILI9225C from reset status
+    wait_ms(1);
+    _rstInOut = 0; //Put reset pin low to reset ILI9225
+    wait_ms(10);
+    _rstInOut = 1; //Put reset pin high to release ILI9225C from reset status
+    wait_ms(50);
+
+    //Start Initial Sequence
+    //Set SS bit and direction output from S528 to S1
+    _writeRegister(ILI9225_POWER_CTRL1, 0x0000); //Set SAP,DSTB,STB
+    _writeRegister(ILI9225_POWER_CTRL2, 0x0000); //Set APON,PON,AON,VCI1EN,VC
+    _writeRegister(ILI9225_POWER_CTRL3, 0x0000); //Set BT,DC1,DC2,DC3
+    _writeRegister(ILI9225_POWER_CTRL4, 0x0000); //Set GVDD
+    _writeRegister(ILI9225_POWER_CTRL5, 0x0000); //Set VCOMH/VCOML voltage
+    wait_ms(40);
+
+    //Power-on sequence
+    _writeRegister(ILI9225_POWER_CTRL2, 0x0018); //Set APON,PON,AON,VCI1EN,VC
+    _writeRegister(ILI9225_POWER_CTRL3, 0x6121); //Set BT,DC1,DC2,DC3
+    _writeRegister(ILI9225_POWER_CTRL4, 0x006F); //Set GVDD   /*007F 0088 */
+    _writeRegister(ILI9225_POWER_CTRL5, 0x495F); //Set VCOMH/VCOML voltage
+    _writeRegister(ILI9225_POWER_CTRL1, 0x0800); //Set SAP,DSTB,STB
+    wait_ms(10);
+    _writeRegister(ILI9225_POWER_CTRL2, 0x103B); //Set APON,PON,AON,VCI1EN,VC
+    wait_ms(50);
+
+    //Set disp line # & disp dir
+    _writeRegister(ILI9225_DRIVER_OUTPUT_CTRL, 0x011C);
+    _writeRegister(ILI9225_LCD_AC_DRIVING_CTRL, 0x0100); //Set 1 line inversion
+    _writeRegister(ILI9225_ENTRY_MODE, 0x1030); //Set GRAM write dir & BGR=1.
+    _writeRegister(ILI9225_DISP_CTRL1, 0x0000); //Display off
+    _writeRegister(ILI9225_BLANK_PERIOD_CTRL1, 0x0808); //Set back & front porch
+    _writeRegister(ILI9225_FRAME_CYCLE_CTRL, 0x1100); //Set clocks # per line
+    _writeRegister(ILI9225_INTERFACE_CTRL, 0x0000); //CPU interface
+    _writeRegister(ILI9225_OSC_CTRL, 0x0D01); //Set Osc  /*0e01*/
+    _writeRegister(ILI9225_VCI_RECYCLING, 0x0020); //Set VCI recycling
+    _writeRegister(ILI9225_RAM_ADDR_SET1, 0x0000); //RAM Address
+    _writeRegister(ILI9225_RAM_ADDR_SET2, 0x0000); //RAM Address
+
+    //Set GRAM area
+    _writeRegister(ILI9225_GATE_SCAN_CTRL, 0x0000);
+    _writeRegister(ILI9225_VERTICAL_SCROLL_CTRL1, 0x00DB);
+    _writeRegister(ILI9225_VERTICAL_SCROLL_CTRL2, 0x0000);
+    _writeRegister(ILI9225_VERTICAL_SCROLL_CTRL3, 0x0000);
+    _writeRegister(ILI9225_PARTIAL_DRIVING_POS1, 0x00DB);
+    _writeRegister(ILI9225_PARTIAL_DRIVING_POS2, 0x0000);
+    _writeRegister(ILI9225_HORIZONTAL_WINDOW_ADDR1, 0x00AF);
+    _writeRegister(ILI9225_HORIZONTAL_WINDOW_ADDR2, 0x0000);
+    _writeRegister(ILI9225_VERTICAL_WINDOW_ADDR1, 0x00DB);
+    _writeRegister(ILI9225_VERTICAL_WINDOW_ADDR2, 0x0000);
+
+    //Set GAMMA curve
+    _writeRegister(ILI9225_GAMMA_CTRL1, 0x0000);
+    _writeRegister(ILI9225_GAMMA_CTRL2, 0x0808);
+    _writeRegister(ILI9225_GAMMA_CTRL3, 0x080A);
+    _writeRegister(ILI9225_GAMMA_CTRL4, 0x000A);
+    _writeRegister(ILI9225_GAMMA_CTRL5, 0x0A08);
+    _writeRegister(ILI9225_GAMMA_CTRL6, 0x0808);
+    _writeRegister(ILI9225_GAMMA_CTRL7, 0x0000);
+    _writeRegister(ILI9225_GAMMA_CTRL8, 0x0A00);
+    _writeRegister(ILI9225_GAMMA_CTRL9, 0x0710);
+    _writeRegister(ILI9225_GAMMA_CTRL10, 0x0710);
+
+    _writeRegister(ILI9225_DISP_CTRL1, 0x0012);
+    wait_ms(50);
+    _writeRegister(ILI9225_DISP_CTRL1, 0x1017);
+
+    setBacklight(true);
+    setOrientation(0);
+
+    //Initialize variables
+    setBackgroundColor(COLOR_BLACK);
+
+    clear();
+}
+
+void ILI9225::clear() {
+    uint8_t old = _orientation;
+    setOrientation(0);
+    fillRectangle(0, 0, _maxX - 1, _maxY - 1, COLOR_BLACK);
+    setOrientation(old);
+    wait_ms(10);
+}
+
+void ILI9225::fill(uint16_t color) {
+    fillRectangle(0, 0, _maxX - 1, _maxY - 1, color);
+}
+
+void ILI9225::invert(bool flag) {
+    _writeCommand(0x00, flag ? ILI9225C_INVON : ILI9225C_INVOFF);
+}
+
+void ILI9225::setBacklight(bool flag) {
+    if (_led) _ledInOut = flag ? 1 : 0;
+}
+
+void ILI9225::setDisplay(bool flag) {
+    if (flag) {
+        _writeRegister(0x00ff, 0x0000);
+        _writeRegister(ILI9225_POWER_CTRL1, 0x0000);
+        wait_ms(50);
+        _writeRegister(ILI9225_DISP_CTRL1, 0x1017);
+        wait_ms(200);
+    }
+    else {
+        _writeRegister(0x00ff, 0x0000);
+        _writeRegister(ILI9225_DISP_CTRL1, 0x0000);
+        wait_ms(50);
+        _writeRegister(ILI9225_POWER_CTRL1, 0x0003);
+        wait_ms(200);
+    }
+}
+
+void ILI9225::setOrientation(uint8_t orientation) {
+    _orientation = orientation % 4;
+
+    switch (_orientation) {
+    case 0:
+        _maxX = ILI9225_LCD_WIDTH;
+        _maxY = ILI9225_LCD_HEIGHT;
+        break;
+    case 1:
+        _maxX = ILI9225_LCD_HEIGHT;
+        _maxY = ILI9225_LCD_WIDTH;
+        break;
+    case 2:
+        _maxX = ILI9225_LCD_WIDTH;
+        _maxY = ILI9225_LCD_HEIGHT;
+        break;
+    case 3:
+        _maxX = ILI9225_LCD_HEIGHT;
+        _maxY = ILI9225_LCD_WIDTH;
+        break;
+    }
+}
+
+void ILI9225::drawRectangle(uint16_t x1, uint16_t y1, uint16_t x2,
+    uint16_t y2, uint16_t color) {
+    drawLine(x1, y1, x1, y2, color);
+    drawLine(x1, y1, x2, y1, color);
+    drawLine(x1, y2, x2, y2, color);
+    drawLine(x2, y1, x2, y2, color);
+}
+
+void ILI9225::fillRectangle(uint16_t x1, uint16_t y1, uint16_t x2,
+    uint16_t y2, uint16_t color) {
+    _setWindow(x1, y1, x2, y2);
+
+    for (uint16_t t = (y2 - y1 + 1) * (x2 - x1 + 1); t > 0; t--)
+        _writeData(color >> 8, color);
+}
+
+void ILI9225::drawLine(uint16_t x1, uint16_t y1, uint16_t x2,
+    uint16_t y2, uint16_t color) {
+    //Bresenham algorithm
+    int16_t steep = abs(y2 - y1) > abs(x2 - x1);
+    int16_t dx, dy;
+
+    if (steep) {
+        _swap(x1, y1);
+        _swap(x2, y2);
+    }
+
+    if (x1 > x2) {
+        _swap(x1, x2);
+        _swap(y1, y2);
+    }
+
+    dx = x2 - x1;
+    dy = abs(y2 - y1);
+
+    int16_t err = dx / 2;
+    int16_t ystep;
+
+    if (y1 < y2)
+        ystep = 1;
+    else   
+        ystep = -1;
+
+    for (; x1 <= x2; x1++) {
+        if(steep)
+            drawPixel(y1, x1, color);
+        else
+            drawPixel(x1, y1, color);
+
+        err -= dy;
+        if (err < 0) {
+            y1 += ystep;
+            err += dx;
+        }
+    }
+}
+
+void ILI9225::drawPixel(uint16_t x1, uint16_t y1, uint16_t color) {
+    if ((x1 >= _maxX) || (y1 >= _maxY))
+        return;
+
+    _setWindow(x1, y1, x1 + 1, y1 + 1);
+    _orientCoordinates(x1, y1);
+    _writeData(color >> 8, color);
+}
+
+uint16_t ILI9225::maxX() {
+    return _maxX;
+}
+
+uint16_t ILI9225::maxY() {
+    return _maxY;
+}
+
+uint16_t ILI9225::setColor(uint8_t red8, uint8_t green8, uint8_t blue8) {
+    //RGB16 = red5 green6 blue5
+    return (red8 >> 3) << 11 | (green8 >> 2) << 5 | (blue8 >> 3);
+}
+
+void ILI9225::splitColor(uint16_t rgb, uint8_t &red, uint8_t &green,
+    uint8_t &blue) {
+    //RGB16 = red5 green6 blue5
+    red = (rgb & 0xF800) >> 11 << 3;
+    green = (rgb & 0x7E0) >> 5 << 2;
+    blue = (rgb & 0x1F) << 3;
+}
+
+void ILI9225::_swap(uint16_t &a, uint16_t &b) {
+    uint16_t w = a;
+    a = b;
+    b = w;
+}
+
+//Utilities
+void ILI9225::_writeCommand(uint8_t HI, uint8_t LO) {
+    _rsInOut = 0;
+    _csInOut = 0;
+    spi.write(HI);
+    spi.write(LO);
+    _csInOut = 1;
+}
+
+void ILI9225::_writeData(uint8_t HI, uint8_t LO) {
+    _rsInOut = 1;
+    _csInOut = 0;
+    spi.write(HI);
+    spi.write(LO);
+    _csInOut = 1;
+}
+
+void ILI9225::_writeRegister(uint16_t reg, uint16_t data) {
+    _writeCommand(reg >> 8, reg & 255);
+    _writeData(data >> 8, data & 255);
+}
+
+void ILI9225::setBackgroundColor(uint16_t color) {
+    _bgColor = color;
+}
+
+void ILI9225::setFont(const uint8_t* font) {
+    cfont.font = font;
+    cfont.width = font[0];
+    cfont.height = font[1];
+    cfont.offset = font[2];
+    cfont.numchars = font[3];
+    cfont.nbrows = cfont.height / 8;
+
+    if (cfont.height % 8)
+        cfont.nbrows++; //Set # of bytes used by font height in multiples of 8.
+}
+
+void ILI9225::drawText(uint16_t x, uint16_t y, char *s, uint16_t color) {
+    uint16_t currx = x;
+
+    //Print every character in string
+    for (uint8_t k = 0; k < strlen(s); k++)
+        currx += drawChar(currx, y, s[k], color) + 1;
+}
+
+uint16_t ILI9225::drawChar(uint16_t x, uint16_t y, uint16_t ch,
+    uint16_t color) {
+    uint8_t charData, charWidth;
+    uint8_t h, i, j;
+    uint16_t charOffset;
+
+    //Bytes used by each character
+    charOffset = (cfont.width * cfont.nbrows) + 1;
+    //Char offset (add 4 for font header)
+    charOffset = (charOffset * (ch - cfont.offset)) + FONT_HEADER_SIZE;
+    //Get font width from 1st byte
+    charWidth = cfont.font[charOffset];
+    //Increment pointer to first character data byte
+    charOffset++;
+
+    //Loop through each font "column" (+1 blank column for spacing)
+    for (i = 0; i <= charWidth; i++) {
+        h = 0;  //Keep track of char height
+        for (j = 0; j < cfont.nbrows; j++) { //Each column byte
+            if (i == charWidth)
+                charData = (uint8_t)0x0; //Insert blank column
+            else
+                charData = cfont.font[charOffset];
+            charOffset++;
+
+            //Process every row in font character
+            for (uint8_t k = 0; k < 8; k++) {
+                if (h >= cfont.height)
+                    break;  //No need to process excess bits
+                if (bitRead(charData, k))
+                    drawPixel(x + i, y + (j * 8) + k, color);
+                else
+                    drawPixel(x + i, y + (j * 8) + k, _bgColor);
+                h++;
+            }
+        }
+    }
+    return charWidth;
+}
+
+//------------------------------------------------------------------------------
+//************************************* ECA 2.8 inch LCD Module ****************
+//------------------------------------------------------------------------------
+//Description  : Draws a beveled figure on the screen. 
+//Input        : x0, y0 - coordinate position of the upper left center
+//             : x1, y1 - coordinate position of the lower right center
+//             : rad    - defines the redius of the circle,
+//             : fill   - fill yes or no
+//------------------------------------------------------------------------------
+void ILI9225::roundRectangle(int x0, int y0, int x1, int y1, int rad,
+    bool fill, int color) {
+    signed int a, b, P;
+
+    a = 0; //Increment by 1
+    b = rad; //Decrement by 1 using P
+    P = 1 - rad;
+    if (fill) {
+        fillRectangle(x0, y0 + rad, x1, y1 - rad, color);
+
+        do {
+            fillRectangle(x0 - a + rad, y0 - b + rad, a + x1 - rad,
+                y0 - b + rad, color); //8 --> 1
+            fillRectangle(x0 - b + rad, y0 - a + rad, b + x1 - rad,
+                y0 - a + rad, color); //7 --> 2
+            fillRectangle(x0 - b + rad, a + y1 - rad, b + x1 - rad,
+                a + y1 - rad, color); //6 --> 3
+            fillRectangle(x0 - a + rad, b + y1 - rad, a + x1 - rad,
+                b + y1 - rad, color); //5 --> 4
+
+            if (P < 0)
+                P += 3 + 2 * a++;
+            else
+                P += 5 + 2 * (a++ - b--);
+
+        } while (a <= b);
+    } //Fill
+    else {
+        fillRectangle(x0 + rad, y0, x1 - rad, y0, color); //Top
+        fillRectangle(x0 + rad, y1, x1 - rad, y1, color); //Bottom
+        fillRectangle(x0, y0 + rad, x0, y1 - rad, color); //Left
+        fillRectangle(x1, y0 + rad, x1, y1 - rad, color); //Right
+
+        do {
+            drawPixel(a + x1 - rad, y0 - b + rad, color); // `````` Segment 1
+            drawPixel(b + x1 - rad, y0 - a + rad, color); // `````` Segment 2
+
+            drawPixel(b + x1 - rad, a + y1 - rad, color); // `````` Segment 3
+            drawPixel(a + x1 - rad, b + y1 - rad, color); // `````` Segment 4
+
+            drawPixel(x0 - a + rad, b + y1 - rad, color); // `````` Segment 5
+            drawPixel(x0 - b + rad, a + y1 - rad, color); // `````` Segment 6
+
+            drawPixel(x0 - b + rad, y0 - a + rad, color); // `````` Segment 7
+            drawPixel(x0 - a + rad, y0 - b + rad, color); // `````` Segment 8
+
+            if (P < 0)
+                P += 3 + 2 * a++;
+            else
+                P += 5 + 2 * (a++ - b--);
+        } while (a <= b);
+    } //No fill
+} //RoundRectangle
+
+//------------------------------------------------------------------------------
+//************************************* ECA 2.8 inch LCD Module ****************
+//------------------------------------------------------------------------------
+//Go to a specific pont for farsi font (x:0..TS_SIZE_X , y:0..TS_SIZE_Y)
+//------------------------------------------------------------------------------
+void ILI9225::goToXY(int x, int y) {
+    if ((x >= _maxX) || (x < 0)) {
+        x_font = 0;
+        x_base = 0;
+    }
+    else {
+        x_font = x;
+        x_base = x;
+    }
+    if ((y >= _maxY) || (y < 0))
+        y_font = 0;
+    else
+        y_font = y;
+}
+
+//------------------------------------------------------------------------------
+//************************************* ECA 2.8 inch LCD Module ****************
+//------------------------------------------------------------------------------
+//Make an ascii string from an unicode string 
+//------------------------------------------------------------------------------
+
+void ILI9225::unicode2ascii(char *uni_str, char *ascii_str) {
+    int counter = 0;
+    int Uch = 0;
+    char chl, chh;
+
+    while (*uni_str) {
+        chl = *uni_str++;
+        chh = *uni_str++;
+
+        Uch = 0;
+        Uch = ((Uch | chh) << 8) | chl;
+
+        if (Uch > 1574 && Uch < 1591)
+            *(ascii_str + counter) = (char)(Uch - 1376);
+        else if (Uch > 1590 && Uch < 1595)
+            *(ascii_str + counter) = (char)(Uch - 1375);
+        else if (Uch > 1600 && Uch < 1603)
+            *(ascii_str + counter) = (char)(Uch - 1380);
+        else if (Uch == 1705)
+            *(ascii_str + counter) = (char)(Uch - 1482);
+        else if (Uch == 1604)
+            *(ascii_str + counter) = (char)(Uch - 1379);
+        else if (Uch > 1604 && Uch < 1609)
+            *(ascii_str + counter) = (char)(Uch - 1378);
+        else if (Uch == 1740)
+            *(ascii_str + counter) = (char)(Uch - 1503);
+        else if (Uch == 1574)
+            *(ascii_str + counter) = (char)(Uch - 1381);
+        else if (Uch == 1662)
+            *(ascii_str + counter) = (char)(Uch - 1533);
+        else if (Uch == 1670)
+            *(ascii_str + counter) = (char)(Uch - 1529);
+        else if (Uch == 1688)
+            *(ascii_str + counter) = (char)(Uch - 1546);
+        else if (Uch == 1711)
+            *(ascii_str + counter) = (char)(Uch - 1567);
+        else if (Uch == 1570)
+            *(ascii_str + counter) = (char)(Uch - 1376);
+        else if (Uch > 1631 && Uch < 1642)
+            *(ascii_str + counter) = (char)(Uch - 1584);
+        else if (Uch == 65536)
+            *(ascii_str + counter) = NULL;
+        else
+            *(ascii_str + counter) = (char)Uch;
+
+        counter++;
+    }
+    *(ascii_str + counter) = NULL;
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ILI9225.h	Fri Apr 27 07:33:56 2018 +0000
@@ -0,0 +1,256 @@
+#include "mbed.h"
+#include "SPI.h"
+
+//ILI9225 Aspect ratio
+#define ILI9225_LCD_WIDTH  176
+#define ILI9225_LCD_HEIGHT 220
+
+//ILI9225 Registers
+#define ILI9225_DRIVER_OUTPUT_CTRL      (0x01u)  //Driver Output Control
+#define ILI9225_LCD_AC_DRIVING_CTRL     (0x02u)  //LCD AC Driving Control
+#define ILI9225_ENTRY_MODE              (0x03u)  //Entry Mode
+#define ILI9225_DISP_CTRL1              (0x07u)  //Display Control 1
+#define ILI9225_BLANK_PERIOD_CTRL1      (0x08u)  //Blank Period Control
+#define ILI9225_FRAME_CYCLE_CTRL        (0x0Bu)  //Frame Cycle Control
+#define ILI9225_INTERFACE_CTRL          (0x0Cu)  //Interface Control
+#define ILI9225_OSC_CTRL                (0x0Fu)  //Osc Control
+#define ILI9225_POWER_CTRL1             (0x10u)  //Power Control 1
+#define ILI9225_POWER_CTRL2             (0x11u)  //Power Control 2
+#define ILI9225_POWER_CTRL3             (0x12u)  //Power Control 3
+#define ILI9225_POWER_CTRL4             (0x13u)  //Power Control 4
+#define ILI9225_POWER_CTRL5             (0x14u)  //Power Control 5
+#define ILI9225_VCI_RECYCLING           (0x15u)  //VCI Recycling
+#define ILI9225_RAM_ADDR_SET1           (0x20u)  //Horizontal GRAM Address Set
+#define ILI9225_RAM_ADDR_SET2           (0x21u)  //Vertical GRAM Address Set
+#define ILI9225_GRAM_DATA_REG           (0x22u)  //GRAM Data Register
+#define ILI9225_GATE_SCAN_CTRL          (0x30u)  //Gate Scan Control Register
+#define ILI9225_VERTICAL_SCROLL_CTRL1   (0x31u)  //Vertical Scroll Cont 1 Reg
+#define ILI9225_VERTICAL_SCROLL_CTRL2   (0x32u)  //Vertical Scroll Cont 2 Reg
+#define ILI9225_VERTICAL_SCROLL_CTRL3   (0x33u)  //Vertical Scroll Cont 3 Reg
+#define ILI9225_PARTIAL_DRIVING_POS1    (0x34u)  //Partial Driving Pos 1 Reg
+#define ILI9225_PARTIAL_DRIVING_POS2    (0x35u)  //Partial Driving Pos 2 Reg
+#define ILI9225_HORIZONTAL_WINDOW_ADDR1 (0x36u)  //Horizontal Address Start Pos
+#define ILI9225_HORIZONTAL_WINDOW_ADDR2 (0x37u)  //Horizontal Address End Pos
+#define ILI9225_VERTICAL_WINDOW_ADDR1   (0x38u)  //Vertical Address Start Pos
+#define ILI9225_VERTICAL_WINDOW_ADDR2   (0x39u)  //Vertical Address End Pos
+#define ILI9225_GAMMA_CTRL1             (0x50u)  //Gamma Control 1
+#define ILI9225_GAMMA_CTRL2             (0x51u)  //Gamma Control 2
+#define ILI9225_GAMMA_CTRL3             (0x52u)  //Gamma Control 3
+#define ILI9225_GAMMA_CTRL4             (0x53u)  //Gamma Control 4
+#define ILI9225_GAMMA_CTRL5             (0x54u)  //Gamma Control 5
+#define ILI9225_GAMMA_CTRL6             (0x55u)  //Gamma Control 6
+#define ILI9225_GAMMA_CTRL7             (0x56u)  //Gamma Control 7
+#define ILI9225_GAMMA_CTRL8             (0x57u)  //Gamma Control 8
+#define ILI9225_GAMMA_CTRL9             (0x58u)  //Gamma Control 9
+#define ILI9225_GAMMA_CTRL10            (0x59u)  //Gamma Control 10
+
+#define ILI9225C_INVOFF  0x20
+#define ILI9225C_INVON   0x21
+
+//RGB 24-bits color table definition (RGB888).
+#define RGB888_RGB565(color) ((((color) >> 19) & 0x1f) << 11) | \
+    ((((color) >> 10) & 0x3f) << 5) | (((color) >> 3) & 0x1f)
+
+#define COLOR_BLACK          RGB888_RGB565(0x000000u)
+#define COLOR_WHITE          RGB888_RGB565(0xFFFFFFu)
+#define COLOR_BLUE           RGB888_RGB565(0x0000FFu)
+#define COLOR_GREEN          RGB888_RGB565(0x00FF00u)
+#define COLOR_RED            RGB888_RGB565(0xFF0000u)
+#define COLOR_NAVY           RGB888_RGB565(0x000080u)
+#define COLOR_DARKBLUE       RGB888_RGB565(0x00008Bu)
+#define COLOR_DARKGREEN      RGB888_RGB565(0x006400u)
+#define COLOR_DARKCYAN       RGB888_RGB565(0x008B8Bu)
+#define COLOR_CYAN           RGB888_RGB565(0x00FFFFu)
+#define COLOR_TURQUOISE      RGB888_RGB565(0x40E0D0u)
+#define COLOR_INDIGO         RGB888_RGB565(0x4B0082u)
+#define COLOR_DARKRED        RGB888_RGB565(0x800000u)
+#define COLOR_OLIVE          RGB888_RGB565(0x808000u)
+#define COLOR_GRAY           RGB888_RGB565(0x808080u)
+#define COLOR_SKYBLUE        RGB888_RGB565(0x87CEEBu)
+#define COLOR_BLUEVIOLET     RGB888_RGB565(0x8A2BE2u)
+#define COLOR_LIGHTGREEN     RGB888_RGB565(0x90EE90u)
+#define COLOR_DARKVIOLET     RGB888_RGB565(0x9400D3u)
+#define COLOR_YELLOWGREEN    RGB888_RGB565(0x9ACD32u)
+#define COLOR_BROWN          RGB888_RGB565(0xA52A2Au)
+#define COLOR_DARKGRAY       RGB888_RGB565(0xA9A9A9u)
+#define COLOR_SIENNA         RGB888_RGB565(0xA0522Du)
+#define COLOR_LIGHTBLUE      RGB888_RGB565(0xADD8E6u)
+#define COLOR_GREENYELLOW    RGB888_RGB565(0xADFF2Fu)
+#define COLOR_SILVER         RGB888_RGB565(0xC0C0C0u)
+#define COLOR_LIGHTGREY      RGB888_RGB565(0xD3D3D3u)
+#define COLOR_LIGHTCYAN      RGB888_RGB565(0xE0FFFFu)
+#define COLOR_VIOLET         RGB888_RGB565(0xEE82EEu)
+#define COLOR_AZUR           RGB888_RGB565(0xF0FFFFu)
+#define COLOR_BEIGE          RGB888_RGB565(0xF5F5DCu)
+#define COLOR_MAGENTA        RGB888_RGB565(0xFF00FFu)
+#define COLOR_TOMATO         RGB888_RGB565(0xFF6347u)
+#define COLOR_GOLD           RGB888_RGB565(0xFFD700u)
+#define COLOR_ORANGE         RGB888_RGB565(0xFFA500u)
+#define COLOR_SNOW           RGB888_RGB565(0xFFFAFAu)
+#define COLOR_YELLOW         RGB888_RGB565(0xFFFF00u)
+
+//Font definitions
+#define FONT_HEADER_SIZE 4 //1: pixel width of 1 font char, 2: pixel height 
+#define readFontByte(x) pgm_read_byte(&cfont.font[x])
+
+extern const uint8_t Terminal12x16[];
+
+struct _currentFont {
+    const uint8_t* font;
+    uint8_t width;
+    uint8_t height;
+    uint8_t offset;
+    uint8_t numchars;
+    uint8_t nbrows;
+};
+
+//Main and core class
+class ILI9225 {
+    public:
+        ILI9225(PinName RST, PinName RS, PinName CS, PinName SDI,
+            PinName CLK, PinName LED);
+
+        //Initialization
+        void begin(void);
+    
+        //Clear the screen
+        void clear(void);
+    
+        //Fill the screen with color:
+        void fill(uint16_t color);
+    
+        //Invert screen
+        //@param  flag true to invert, false for normal screen
+        void invert(bool flag);
+    
+        //Switch backlight on or off
+        //@param flag true=on, false=off
+        void setBacklight(bool flag);
+    
+        //Switch display on or off
+        //@param flag true=on, false=off
+        void setDisplay(bool flag);
+    
+        //Set orientation
+        //@param orientation orientation, 0=portrait, 1=right rotated landscape,
+        //2=reverse portrait, 3=left rotated landscape
+        void setOrientation(uint8_t orientation);
+    
+        //Font size, x-axis
+        //@return horizontal size of current font, in pixels
+        uint8_t fontX(void);
+    
+        //Font size, y-axis
+        //@return vertical size of current font, in pixels
+        uint8_t fontY(void);
+    
+        //Screen size, x-axis
+        //@return horizontal size of the screen, in pixels
+        //@note 240 means 240 pixels and thus 0..239 coordinates (decimal)
+        uint16_t maxX(void);
+    
+        //Screen size, y-axis
+        //@return vertical size of the screen, in pixels
+        //@note 220 means 220 pixels and thus 0..219 coordinates (decimal)
+        uint16_t maxY(void);
+    
+        //Set background color
+        //@param color background color, default=black
+        void setBackgroundColor(uint16_t color = COLOR_BLACK);
+    
+        //Draw line, rectangle coordinates
+        //@param x1 top left coordinate, x-axis
+        //@param y1 top left coordinate, y-axis
+        //@param x2 bottom right coordinate, x-axis
+        //@param y2 bottom right coordinate, y-axis
+        //@param color 16-bit color
+        void drawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2,
+            uint16_t color);
+    
+        //Draw rectangle, rectangle coordinates
+        //@param x1 top left coordinate, x-axis
+        //@param y1 top left coordinate, y-axis
+        //@param x2 bottom right coordinate, x-axis
+        //@param y2 bottom right coordinate, y-axis
+        //@param color 16-bit color
+        void drawRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2,
+            uint16_t color);
+    
+        //Draw solid rectangle, rectangle coordinates
+        //@param x1 top left coordinate, x-axis
+        //@param y1 top left coordinate, y-axis
+        //@param x2 bottom right coordinate, x-axis
+        //@param y2 bottom right coordinate, y-axis
+        //@param color 16-bit color
+        void fillRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2,
+            uint16_t color);
+    
+        //Draw pixel
+        //@param x1 point coordinate, x-axis
+        //@param y1 point coordinate, y-axis
+        //@param color 16-bit color
+        void drawPixel(uint16_t x1, uint16_t y1, uint16_t color);
+    
+        //Draw ASCII Text (pixel coordinates)
+        //@param x point coordinate, x-axis
+        //@param y point coordinate, y-axis
+        //@param s text string
+        //@param color 16-bit color, default=white
+        void drawText(uint16_t x, uint16_t y, char *s,
+            uint16_t color = COLOR_WHITE);
+    
+        //Calculate 16-bit color from 8-bit Red-Green-Blue components
+        //@param red red component, 0x00..0xff
+        //@param green green component, 0x00..0xff
+        //@param blue blue component, 0x00..0xff
+        //@return 16-bit color
+        uint16_t setColor(uint8_t red, uint8_t green, uint8_t blue);
+    
+        //Calculate 8-bit Red-Green-Blue components from 16-bit color
+        //@param rgb 16-bit color
+        //@param red red component, 0x00..0xff
+        //@param green green component, 0x00..0xff
+        //@param blue blue component, 0x00..0xff
+        void splitColor(uint16_t rgb, uint8_t &red, uint8_t &green,
+            uint8_t &blue);
+    
+        //Set current font
+        //@param font Font name
+        void setFont(const uint8_t* font);
+    
+        //Draw single character (pixel coordinates)
+        //@param x point coordinate, x-axis
+        //@param y point coordinate, y-axis
+        //@param ch ASCII character
+        //@param color 16-bit color, default=white
+        uint16_t drawChar(uint16_t x, uint16_t y, uint16_t ch,
+            uint16_t color = COLOR_WHITE);
+    
+        void goToXY(int x, int y);
+        void unicode2ascii(char *uni_str, char *ascii_str); 
+        void roundRectangle(int x0, int y0, int x1, int y1, int rad, bool fill,
+            int color);
+    
+    private:
+        SPI spi;
+    
+        void _swap(uint16_t &a, uint16_t &b),
+            _setWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1),
+            _orientCoordinates(uint16_t &x1, uint16_t &y1),
+            _writeRegister(uint16_t reg, uint16_t data),
+            _writeData(uint8_t HI, uint8_t LO),
+            _writeCommand(uint8_t HI, uint8_t LO);
+    
+        uint16_t _maxX, _maxY, _bgColor;
+    
+        PinName  _rst, _rs, _cs, _sdi, _clk, _led;
+        DigitalInOut _rsInOut;
+        DigitalInOut _csInOut;
+        DigitalInOut _rstInOut;
+        DigitalInOut _ledInOut;
+        uint8_t _orientation;
+    
+        bool  hwSPI;
+    
+        _currentFont cfont;
+};
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/States.h	Fri Apr 27 07:33:56 2018 +0000
@@ -0,0 +1,193 @@
+#include "Fonts.h"
+
+//STATE 0
+//GLCD Displays the start screen - encouraging the player to start the game
+//by displaying the message "PRESS SELECT TO START".
+//
+//Player must press the SELECT button to trigger the next STATE.
+void greetingScreen() {
+    tft.clear();
+    tft.setFont(Terminal12x16);
+    tft.drawText(60, 40, "PRESS", COLOR_RED);
+    tft.drawText(54, 65, "SELECT", COLOR_RED);
+    tft.drawText(77, 90, "TO", COLOR_RED);
+    tft.drawText(60, 115, "START", COLOR_RED);
+    
+    while(1) {
+        if(getPlayerInput(wirelessInput_Freq) == 6) //SELECT -> 6
+            return;
+    }
+}
+
+//STATE 1
+//GLCD encourages player to take a picture of something by displaying the
+//message "SELECT TO TAKE PICTURE".
+//
+//Player must press the SELECT button to take a picture and trigger the next
+//STATE.
+void takePicture() {
+    tft.clear();
+    tft.setFont(Terminal12x16);
+    tft.drawText(54, 40, "SELECT", COLOR_RED);
+    tft.drawText(77, 65, "TO", COLOR_RED);
+    tft.drawText(65, 90, "TAKE", COLOR_RED);
+    tft.drawText(50, 115, "PICTURE", COLOR_RED);
+    
+    while(1) {
+        if(getPlayerInput(wirelessInput_Freq) == 6) { //SELECT -> 6
+            for(int index = 0; index < 19200; index++)
+                handlePixel(index, getNextPixel());
+            return;
+        }
+    }
+}
+
+//STATE 2
+//GLCD will display the picture taken in STATE 1 @ the bottom of the screen.
+//
+//Player input is ignored during this STATE.
+void previewPicture() {
+    tft.clear();
+    updatePuzzle();
+}
+
+//STATE 3
+//GLCD will display the message "SELECT > ACCEPT" atop "OR" atop
+//"CANCEL > RETAKE" at the top of the screen.
+//
+//Player may press SELECT to continue (STATE 4) w| picture or CANCEL to retake
+//the picture (STATE 1).
+bool confirmPicture() {
+    tft.fillRectangle(0, 0, 175, 91, COLOR_BLACK);
+    tft.setFont(Terminal12x16);
+    tft.drawText(4, 8, "SELECT > ACCEPT", COLOR_RED);
+    tft.drawText(77, 33, "OR", COLOR_RED);
+    tft.drawText(4, 58, "CANCEL > RETAKE", COLOR_RED);
+    //printElementsInPicture();
+    
+    while(1) {
+        if(getPlayerInput(wirelessInput_Freq) == 6) //SELECT -> 6
+            return true; //Confirm the picture by returning true
+        else if(getPlayerInput(wirelessInput_Freq) == 7) //CANCEL -> 7
+            return false; //Retake the picture by returning false
+    }
+}
+
+//STATE 4
+//GLCD will display the message "LOADING" and keeps it there until the
+//LPC1769 has finished shuffling the pieces in the background. When it is done,
+//it will black out the screen, populate the 4x4 grid with the puzzle pieces,
+//and start the player off at index 0 of the puzzle grid.
+//Remark: 2 out of 16 of the puzzle pieces will be missing. There were 3 reasons
+//that led us to this design choice:
+//1) We had to remove, at the very least, 1 puzzle piece to make a classic
+//sliding puzzle game.
+//2) We desired that the sizeof(picture) << 32kB but we still wanted a colored
+//image (i.e., 16 bit aray element) so we needed to get rid of 2 pieces to reach
+//our goal.
+//3) If puzzle piece positions for a classic sliding puzzle game are generated
+//completely randomly then they are only solvable 50% of the time based off
+//whether there is an even amount of permutations. There are applicable methods
+//for only generating solvable puzzles but another (and easier) solution is to
+//just remove a second puzzle piece.
+//
+//The player's button presses are ignored during this time.
+void shufflePuzzle() {
+    tft.clear();
+    tft.setFont(Terminal12x16);
+    tft.drawText(47, 40, "LOADING", COLOR_RED);
+
+    shuffleGridIndices();
+
+    tft.clear();
+    updatePuzzle();
+    cursorIndex = 0;
+    highlightGridIndex(cursorIndex, false);
+}
+
+//STATE 5
+//We wait for the player to press SELECT. If the player presses SELECT we must
+//verify 2 characteristics about the target piece before we may trigger STATE 6:
+//1) Target puzzle piece is NOT one of the 2 missing puzzle pieces.
+//2) Target puzzle piece is NOT locked on all 4 sides.
+//
+//At this point, the player is able to use the UP, DOWN, LEFT, and RIGHT buttons
+//to move around their cursor until they find a piece that they want to swap
+//for another piece. While their cursor is hovering over the target piece, they
+//would press SELECT to "grab it". The cursor is green in this state.
+uint8_t selectionMode() {
+    highlightGridIndex(cursorIndex, false);
+    //printElementsInPicture();
+    while(1) {
+        if(getPlayerInput(wirelessInput_Freq) == 6) { //SELECT -> 6
+            if(selectionMode_indexVerified(cursorIndex)) //& index verified
+                return cursorIndex;
+        }
+        else if(getPlayerInput(wirelessInput_Freq) == 2 //UP -> 2
+            && cursorIndex - 4 > -1)
+            highlightGridIndex(cursorIndex - 4, false);
+        else if(getPlayerInput(wirelessInput_Freq) == 3 //DOWN -> 3
+            && cursorIndex + 4 < 16)
+            highlightGridIndex(cursorIndex + 4, false);
+        else if(getPlayerInput(wirelessInput_Freq) == 4 //LEFT -> 4
+            && ((cursorIndex%4) - 1) > -1)
+            highlightGridIndex(cursorIndex - 1, false);
+        else if(getPlayerInput(wirelessInput_Freq) == 5 //RIGHT -> 5
+            && ((cursorIndex%4) + 1) < 4)
+            highlightGridIndex(cursorIndex + 1, false);
+    }
+}
+
+//STATE 6
+//If player presses UP, DOWN, LEFT, or RIGHT, we verify that target index is an
+//empty space before making the move and triggering STATE 5. A piece may only be
+//moved 1 index position and it may only be moved to 1 of the 2 missing puzzle
+//piece indices.
+//
+//Only UP, DOWN, LEFT, RIGHT, and CANCEL are monitored during this state.
+//Pressing CANCEL, at any time, would restore us back to STATE 5 and no swapping
+//would occur. The cursor is red in this state.
+void selectedMode(uint8_t selectedIndex) {
+    highlightGridIndex(selectedIndex, true);
+
+    while(1) {
+        if(getPlayerInput(wirelessInput_Freq) == 7) //CANCEL -> 7
+            return;
+        if(getPlayerInput(wirelessInput_Freq) == 2 //UP -> 2
+            && selectedIndex - 4 > -1) {
+            if(puzzState[selectedIndex - 4] > 13) { //Empty space above?
+                swap(&puzzState[selectedIndex], &puzzState[selectedIndex - 4]);
+                updatePuzzle();
+                cursorIndex = selectedIndex - 4;
+                return;
+            }
+        }
+        if(getPlayerInput(wirelessInput_Freq) == 3 //DOWN -> 3
+            && selectedIndex + 4 < 16) {
+            if(puzzState[selectedIndex + 4] > 13) { //Empty space below?
+                swap(&puzzState[selectedIndex], &puzzState[selectedIndex + 4]);
+                updatePuzzle();
+                cursorIndex = selectedIndex + 4;
+                return;
+            }
+        }
+        if(getPlayerInput(wirelessInput_Freq) == 4 //LEFT -> 4
+            && ((selectedIndex%4) - 1) > -1) {
+            if(puzzState[selectedIndex - 1] > 13) { //Empty space to the left?
+                swap(&puzzState[selectedIndex], &puzzState[selectedIndex - 1]);
+                updatePuzzle();
+                cursorIndex = selectedIndex - 1;
+                return;
+            }
+        }
+        if(getPlayerInput(wirelessInput_Freq) == 5 //RIGHT -> 5
+            && ((selectedIndex%4) + 1) < 4) {
+            if(puzzState[selectedIndex + 1] > 13) { //Empty space to the right?
+                swap(&puzzState[selectedIndex], &puzzState[selectedIndex + 1]);
+                updatePuzzle();
+                cursorIndex = selectedIndex + 1;
+                return;
+            }
+        }
+    }
+}
\ No newline at end of file
--- a/TFT_22_ILI9225.cpp	Tue Sep 01 12:16:09 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1215 +0,0 @@
-/*
-****************                               ******************
-
-Ported to mbed platform 
-Added Persian Support 
-
-by Arman Safikhani  31 - 08-2015
-
-* ***************                               ******************
-*/
-
-
-
-
-#include "TFT_22_ILI9225.h"
-#define bitRead(value, bit) (((value) >> (bit)) & 0x01)
-
-int font_color, x_font, y_font;
-char highlight, fa_num;
-int effect = 0, italic = 0;
-unsigned int highlight_color;
-/* Global Variables */
-int x_text = 0, y_text = 0;
-int x_base = 0;
-
-// Constructor when using software SPI.  All output pins are configurable.
-TFT_22_ILI9225::TFT_22_ILI9225(PinName rst, PinName rs, PinName cs, PinName sdi, PinName clk, PinName led) :
-    _rst(rst), _rs(rs), _cs(cs), _sdi(sdi), _clk(clk), spi(sdi, NC, clk), _led(led),
-    _rstInOut(_rst), _rsInOut(_rs), _csInOut(_cs), _ledInOut(_led),
-    hwSPI(true) 
-{
-}
-
-// Constructor when using hardware SPI.  Faster, but must use SPI pins
-// specific to each board type (e.g. 11,13 for Uno, 51,52 for Mega, etc.)
-//TFT_22_ILI9225::TFT_22_ILI9225(PinName rst, PinName rs, PinName cs, PinName led) :
-//  _rst(rst), _rs(rs), _cs(cs), _sdi(NC), _clk(NC), _led(led),
-//  _rstInOut(_rst), _rsInOut(_rs), _csInOut(_cs), _ledInOut(_led),
-//  hwSPI(true), spi(SPI_MOSI, NC, SPI_SCK)
-//{
-//}
-
-
-
-
-void TFT_22_ILI9225::_orientCoordinates(uint16_t &x1, uint16_t &y1) {
-
-    switch (_orientation) {
-    case 0:  // ok
-        break;
-    case 1: // ok
-        y1 = _maxY - y1 - 1;
-        _swap(x1, y1);
-        break;
-    case 2: // ok
-        x1 = _maxX - x1 - 1;
-        y1 = _maxY - y1 - 1;
-        break;
-    case 3: // ok
-        x1 = _maxX - x1 - 1;
-        _swap(x1, y1);
-        break;
-    }
-}
-
-
-void TFT_22_ILI9225::_setWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) {
-    _orientCoordinates(x0, y0);
-    _orientCoordinates(x1, y1);
-
-    if (x1 < x0) _swap(x0, x1);
-    if (y1 < y0) _swap(y0, y1);
-
-    _writeRegister(ILI9225_HORIZONTAL_WINDOW_ADDR1, x1);
-    _writeRegister(ILI9225_HORIZONTAL_WINDOW_ADDR2, x0);
-
-    _writeRegister(ILI9225_VERTICAL_WINDOW_ADDR1, y1);
-    _writeRegister(ILI9225_VERTICAL_WINDOW_ADDR2, y0);
-
-    _writeRegister(ILI9225_RAM_ADDR_SET1, x0);
-    _writeRegister(ILI9225_RAM_ADDR_SET2, y0);
-
-    _writeCommand(0x00, 0x22);
-}
-
-
-void TFT_22_ILI9225::begin() {
-
-    // Set up pins
-
-
-    _rsInOut.output();
-    _csInOut.output();
-    _rstInOut.output();
-
-    if (_led) _ledInOut.output();
-
-    if (hwSPI) { // Using hardware SPI
-        spi.frequency(16000000);
-        spi.format(8, 0);
-
-    }
-    else {
-        DigitalInOut _clkInOut(_clk);
-        _clkInOut.output();
-        DigitalInOut _sdiInOut(_sdi);
-        _sdiInOut.output();
-    }
-
-    // Turn on backlight
-    if (_led) _ledInOut = 1;
-
-    // Initialization Code
-    _rstInOut = 1; // Pull the reset pin high to release the ILI9225C from the reset status
-    wait_ms(1);
-    _rstInOut = 0;// Pull the reset pin low to reset ILI9225
-    wait_ms(10);
-    _rstInOut = 1;// Pull the reset pin high to release the ILI9225C from the reset status
-    wait_ms(50);
-
-    /* Start Initial Sequence */
-    /* Set SS bit and direction output from S528 to S1 */
-    _writeRegister(ILI9225_POWER_CTRL1, 0x0000); // Set SAP,DSTB,STB
-    _writeRegister(ILI9225_POWER_CTRL2, 0x0000); // Set APON,PON,AON,VCI1EN,VC
-    _writeRegister(ILI9225_POWER_CTRL3, 0x0000); // Set BT,DC1,DC2,DC3
-    _writeRegister(ILI9225_POWER_CTRL4, 0x0000); // Set GVDD
-    _writeRegister(ILI9225_POWER_CTRL5, 0x0000); // Set VCOMH/VCOML voltage
-    wait_ms(40);
-
-    // Power-on sequence
-    _writeRegister(ILI9225_POWER_CTRL2, 0x0018); // Set APON,PON,AON,VCI1EN,VC
-    _writeRegister(ILI9225_POWER_CTRL3, 0x6121); // Set BT,DC1,DC2,DC3
-    _writeRegister(ILI9225_POWER_CTRL4, 0x006F); // Set GVDD   /*007F 0088 */
-    _writeRegister(ILI9225_POWER_CTRL5, 0x495F); // Set VCOMH/VCOML voltage
-    _writeRegister(ILI9225_POWER_CTRL1, 0x0800); // Set SAP,DSTB,STB
-    wait_ms(10);
-    _writeRegister(ILI9225_POWER_CTRL2, 0x103B); // Set APON,PON,AON,VCI1EN,VC
-    wait_ms(50);
-
-    _writeRegister(ILI9225_DRIVER_OUTPUT_CTRL, 0x011C); // set the display line number and display direction
-    _writeRegister(ILI9225_LCD_AC_DRIVING_CTRL, 0x0100); // set 1 line inversion
-    _writeRegister(ILI9225_ENTRY_MODE, 0x1030); // set GRAM write direction and BGR=1.
-    _writeRegister(ILI9225_DISP_CTRL1, 0x0000); // Display off
-    _writeRegister(ILI9225_BLANK_PERIOD_CTRL1, 0x0808); // set the back porch and front porch
-    _writeRegister(ILI9225_FRAME_CYCLE_CTRL, 0x1100); // set the clocks number per line
-    _writeRegister(ILI9225_INTERFACE_CTRL, 0x0000); // CPU interface
-    _writeRegister(ILI9225_OSC_CTRL, 0x0D01); // Set Osc  /*0e01*/
-    _writeRegister(ILI9225_VCI_RECYCLING, 0x0020); // Set VCI recycling
-    _writeRegister(ILI9225_RAM_ADDR_SET1, 0x0000); // RAM Address
-    _writeRegister(ILI9225_RAM_ADDR_SET2, 0x0000); // RAM Address
-
-                                                   /* Set GRAM area */
-    _writeRegister(ILI9225_GATE_SCAN_CTRL, 0x0000);
-    _writeRegister(ILI9225_VERTICAL_SCROLL_CTRL1, 0x00DB);
-    _writeRegister(ILI9225_VERTICAL_SCROLL_CTRL2, 0x0000);
-    _writeRegister(ILI9225_VERTICAL_SCROLL_CTRL3, 0x0000);
-    _writeRegister(ILI9225_PARTIAL_DRIVING_POS1, 0x00DB);
-    _writeRegister(ILI9225_PARTIAL_DRIVING_POS2, 0x0000);
-    _writeRegister(ILI9225_HORIZONTAL_WINDOW_ADDR1, 0x00AF);
-    _writeRegister(ILI9225_HORIZONTAL_WINDOW_ADDR2, 0x0000);
-    _writeRegister(ILI9225_VERTICAL_WINDOW_ADDR1, 0x00DB);
-    _writeRegister(ILI9225_VERTICAL_WINDOW_ADDR2, 0x0000);
-
-    /* Set GAMMA curve */
-    _writeRegister(ILI9225_GAMMA_CTRL1, 0x0000);
-    _writeRegister(ILI9225_GAMMA_CTRL2, 0x0808);
-    _writeRegister(ILI9225_GAMMA_CTRL3, 0x080A);
-    _writeRegister(ILI9225_GAMMA_CTRL4, 0x000A);
-    _writeRegister(ILI9225_GAMMA_CTRL5, 0x0A08);
-    _writeRegister(ILI9225_GAMMA_CTRL6, 0x0808);
-    _writeRegister(ILI9225_GAMMA_CTRL7, 0x0000);
-    _writeRegister(ILI9225_GAMMA_CTRL8, 0x0A00);
-    _writeRegister(ILI9225_GAMMA_CTRL9, 0x0710);
-    _writeRegister(ILI9225_GAMMA_CTRL10, 0x0710);
-
-    _writeRegister(ILI9225_DISP_CTRL1, 0x0012);
-    wait_ms(50);
-    _writeRegister(ILI9225_DISP_CTRL1, 0x1017);
-
-    setBacklight(true);
-    setOrientation(0);
-
-    // Initialize variables
-    setBackgroundColor(COLOR_BLACK);
-
-    clear();
-}
-
-
-void TFT_22_ILI9225::clear() {
-    uint8_t old = _orientation;
-    setOrientation(0);
-    fillRectangle(0, 0, _maxX - 1, _maxY - 1, COLOR_BLACK);
-    setOrientation(old);
-    wait_ms(10);
-}
-
-void TFT_22_ILI9225::fill(uint16_t color)
-{
-    fillRectangle(0, 0, _maxX - 1, _maxY - 1, color);
-}
-
-
-void TFT_22_ILI9225::invert(bool flag) {
-    _writeCommand(0x00, flag ? ILI9225C_INVON : ILI9225C_INVOFF);
-}
-
-
-void TFT_22_ILI9225::setBacklight(bool flag) {
-    if (_led) _ledInOut = flag ? 1 : 0;
-}
-
-
-void TFT_22_ILI9225::setDisplay(bool flag) {
-    if (flag) {
-        _writeRegister(0x00ff, 0x0000);
-        _writeRegister(ILI9225_POWER_CTRL1, 0x0000);
-        wait_ms(50);
-        _writeRegister(ILI9225_DISP_CTRL1, 0x1017);
-        wait_ms(200);
-    }
-    else {
-        _writeRegister(0x00ff, 0x0000);
-        _writeRegister(ILI9225_DISP_CTRL1, 0x0000);
-        wait_ms(50);
-        _writeRegister(ILI9225_POWER_CTRL1, 0x0003);
-        wait_ms(200);
-    }
-}
-
-
-void TFT_22_ILI9225::setOrientation(uint8_t orientation) {
-
-    _orientation = orientation % 4;
-
-    switch (_orientation) {
-    case 0:
-        _maxX = ILI9225_LCD_WIDTH;
-        _maxY = ILI9225_LCD_HEIGHT;
-        break;
-    case 1:
-        _maxX = ILI9225_LCD_HEIGHT;
-        _maxY = ILI9225_LCD_WIDTH;
-        break;
-    case 2:
-        _maxX = ILI9225_LCD_WIDTH;
-        _maxY = ILI9225_LCD_HEIGHT;
-        break;
-    case 3:
-        _maxX = ILI9225_LCD_HEIGHT;
-        _maxY = ILI9225_LCD_WIDTH;
-        break;
-    }
-}
-
-
-uint8_t TFT_22_ILI9225::getOrientation() {
-    return _orientation;
-}
-
-
-void TFT_22_ILI9225::drawRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color) {
-    drawLine(x1, y1, x1, y2, color);
-    drawLine(x1, y1, x2, y1, color);
-    drawLine(x1, y2, x2, y2, color);
-    drawLine(x2, y1, x2, y2, color);
-}
-
-
-void TFT_22_ILI9225::fillRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color) {
-
-    _setWindow(x1, y1, x2, y2);
-
-    for (uint16_t t = (y2 - y1 + 1) * (x2 - x1 + 1); t > 0; t--)
-        _writeData(color >> 8, color);
-}
-
-
-void TFT_22_ILI9225::drawCircle(uint16_t x0, uint16_t y0, uint16_t r, uint16_t color) {
-
-    int16_t f = 1 - r;
-    int16_t ddF_x = 1;
-    int16_t ddF_y = -2 * r;
-    int16_t x = 0;
-    int16_t y = r;
-
-    drawPixel(x0, y0 + r, color);
-    drawPixel(x0, y0 - r, color);
-    drawPixel(x0 + r, y0, color);
-    drawPixel(x0 - r, y0, color);
-
-    while (x < y) {
-        if (f >= 0) {
-            y--;
-            ddF_y += 2;
-            f += ddF_y;
-        }
-        x++;
-        ddF_x += 2;
-        f += ddF_x;
-
-        drawPixel(x0 + x, y0 + y, color);
-        drawPixel(x0 - x, y0 + y, color);
-        drawPixel(x0 + x, y0 - y, color);
-        drawPixel(x0 - x, y0 - y, color);
-        drawPixel(x0 + y, y0 + x, color);
-        drawPixel(x0 - y, y0 + x, color);
-        drawPixel(x0 + y, y0 - x, color);
-        drawPixel(x0 - y, y0 - x, color);
-    }
-}
-
-
-void TFT_22_ILI9225::fillCircle(uint8_t x0, uint8_t y0, uint8_t radius, uint16_t color) {
-
-    int16_t f = 1 - radius;
-    int16_t ddF_x = 1;
-    int16_t ddF_y = -2 * radius;
-    int16_t x = 0;
-    int16_t y = radius;
-
-    while (x < y) {
-        if (f >= 0) {
-            y--;
-            ddF_y += 2;
-            f += ddF_y;
-        }
-        x++;
-        ddF_x += 2;
-        f += ddF_x;
-
-        drawLine(x0 + x, y0 + y, x0 - x, y0 + y, color); // bottom
-        drawLine(x0 + x, y0 - y, x0 - x, y0 - y, color); // top
-        drawLine(x0 + y, y0 - x, x0 + y, y0 + x, color); // right
-        drawLine(x0 - y, y0 - x, x0 - y, y0 + x, color); // left
-    }
-    fillRectangle(x0 - x, y0 - y, x0 + x, y0 + y, color);
-}
-
-
-void TFT_22_ILI9225::drawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color) {
-
-    // Classic Bresenham algorithm
-    int16_t steep = abs(y2 - y1) > abs(x2 - x1);
-    int16_t dx, dy;
-
-    if (steep) {
-        _swap(x1, y1);
-        _swap(x2, y2);
-    }
-
-    if (x1 > x2) {
-        _swap(x1, x2);
-        _swap(y1, y2);
-    }
-
-    dx = x2 - x1;
-    dy = abs(y2 - y1);
-
-    int16_t err = dx / 2;
-    int16_t ystep;
-
-    if (y1 < y2) ystep = 1;
-    else ystep = -1;
-
-
-    for (; x1 <= x2; x1++) {
-        if (steep) drawPixel(y1, x1, color);
-        else       drawPixel(x1, y1, color);
-
-        err -= dy;
-        if (err < 0) {
-            y1 += ystep;
-            err += dx;
-        }
-    }
-}
-
-
-void TFT_22_ILI9225::drawPixel(uint16_t x1, uint16_t y1, uint16_t color) {
-
-    if ((x1 >= _maxX) || (y1 >= _maxY)) return;
-
-    _setWindow(x1, y1, x1 + 1, y1 + 1);
-    _orientCoordinates(x1, y1);
-    _writeData(color >> 8, color);
-}
-
-
-uint16_t TFT_22_ILI9225::maxX() {
-    return _maxX;
-}
-
-
-uint16_t TFT_22_ILI9225::maxY() {
-    return _maxY;
-}
-
-
-uint16_t TFT_22_ILI9225::setColor(uint8_t red8, uint8_t green8, uint8_t blue8) {
-    // rgb16 = red5 green6 blue5
-    return (red8 >> 3) << 11 | (green8 >> 2) << 5 | (blue8 >> 3);
-}
-
-
-void TFT_22_ILI9225::splitColor(uint16_t rgb, uint8_t &red, uint8_t &green, uint8_t &blue) {
-    // rgb16 = red5 green6 blue5
-    
-    red = (rgb & 0xF800) >> 11 << 3;
-    green = (rgb & 0x7E0) >> 5 << 2;
-    blue = (rgb & 0x1F) << 3;
-}
-
-
-void TFT_22_ILI9225::_swap(uint16_t &a, uint16_t &b) {
-    uint16_t w = a;
-    a = b;
-    b = w;
-}
-
-// Utilities
-void TFT_22_ILI9225::_writeCommand(uint8_t HI, uint8_t LO) {
-    _rsInOut = 0;
-    _csInOut = 0;
-    spi.write(HI);
-    spi.write(LO);
-    _csInOut = 1;
-}
-
-
-void TFT_22_ILI9225::_writeData(uint8_t HI, uint8_t LO) {
-    _rsInOut = 1;
-    _csInOut = 0;
-    spi.write(HI);
-    spi.write(LO);
-    _csInOut = 1;
-}
-
-
-void TFT_22_ILI9225::_writeRegister(uint16_t reg, uint16_t data) {
-    _writeCommand(reg >> 8, reg & 255);
-    _writeData(data >> 8, data & 255);
-}
-
-
-void TFT_22_ILI9225::drawTriangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t x3, uint16_t y3, uint16_t color) {
-    drawLine(x1, y1, x2, y2, color);
-    drawLine(x2, y2, x3, y3, color);
-    drawLine(x3, y3, x1, y1, color);
-}
-
-
-void TFT_22_ILI9225::fillTriangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t x3, uint16_t y3, uint16_t color) {
-
-    uint16_t a, b, y, last;
-
-    // Sort coordinates by Y order (y3 >= y2 >= y1)
-    if (y1 > y2) {
-        _swap(y1, y2); _swap(x1, x2);
-    }
-    if (y2 > y3) {
-        _swap(y3, y2); _swap(x3, x2);
-    }
-    if (y1 > y2) {
-        _swap(y1, y2); _swap(x1, x2);
-    }
-
-    if (y1 == y3) { // Handle awkward all-on-same-line case as its own thing
-        a = b = x1;
-        if (x2 < a)      a = x2;
-        else if (x2 > b) b = x2;
-        if (x3 < a)      a = x3;
-        else if (x3 > b) b = x3;
-        drawLine(a, y1, b, y1, color);
-        return;
-    }
-
-    uint16_t    dx11 = x2 - x1,
-        dy11 = y2 - y1,
-        dx12 = x3 - x1,
-        dy12 = y3 - y1,
-        dx22 = x3 - x2,
-        dy22 = y3 - y2,
-        sa = 0,
-        sb = 0;
-
-    // For upper part of triangle, find scanline crossings for segments
-    // 0-1 and 0-2.  If y2=y3 (flat-bottomed triangle), the scanline y2
-    // is included here (and second loop will be skipped, avoiding a /0
-    // error there), otherwise scanline y2 is skipped here and handled
-    // in the second loop...which also avoids a /0 error here if y1=y2
-    // (flat-topped triangle).
-    if (y2 == y3) last = y2;   // Include y2 scanline
-    else          last = y2 - 1; // Skip it
-
-    for (y = y1; y <= last; y++) {
-        a = x1 + sa / dy11;
-        b = x1 + sb / dy12;
-        sa += dx11;
-        sb += dx12;
-        /* longhand:
-        a = x1 + (x2 - x1) * (y - y1) / (y2 - y1);
-        b = x1 + (x3 - x1) * (y - y1) / (y3 - y1);
-        */
-        if (a > b) _swap(a, b);
-        drawLine(a, y, b, y, color);
-    }
-
-    // For lower part of triangle, find scanline crossings for segments
-    // 0-2 and 1-2.  This loop is skipped if y2=y3.
-    sa = dx22 * (y - y2);
-    sb = dx12 * (y - y1);
-    for (; y <= y3; y++) {
-        a = x2 + sa / dy22;
-        b = x1 + sb / dy12;
-        sa += dx22;
-        sb += dx12;
-        /* longhand:
-        a = x2 + (x3 - x2) * (y - y2) / (y3 - y2);
-        b = x1 + (x3 - x1) * (y - y1) / (y3 - y1);
-        */
-        if (a > b) _swap(a, b);
-        drawLine(a, y, b, y, color);
-    }
-}
-
-
-void TFT_22_ILI9225::setBackgroundColor(uint16_t color) {
-    _bgColor = color;
-}
-
-
-void TFT_22_ILI9225::setFont(uint8_t* font) {
-
-    cfont.font = font;
-    cfont.width = font[0];
-    cfont.height = font[1];
-    cfont.offset = font[2];
-    cfont.numchars = font[3];
-    cfont.nbrows = cfont.height / 8;
-
-    if (cfont.height % 8) cfont.nbrows++;  // Set number of bytes used by height of font in multiples of 8
-}
-
-
-void TFT_22_ILI9225::drawText(uint16_t x, uint16_t y, char *s, uint16_t color) {
-
-    uint16_t currx = x;
-
-    // Print every character in string
-    for (uint8_t k = 0; k < strlen(s); k++) {
-        currx += drawChar(currx, y, s[k], color) + 1;
-    }
-}
-
-
-uint16_t TFT_22_ILI9225::drawChar(uint16_t x, uint16_t y, uint16_t ch, uint16_t color) {
-
-    uint8_t charData, charWidth;
-    uint8_t h, i, j;
-    uint16_t charOffset;
-
-    charOffset = (cfont.width * cfont.nbrows) + 1;  // bytes used by each character
-    charOffset = (charOffset * (ch - cfont.offset)) + FONT_HEADER_SIZE;  // char offset (add 4 for font header)
-    charWidth = cfont.font[charOffset];  // get font width from 1st byte
-    charOffset++;  // increment pointer to first character data byte
-
-    for (i = 0; i <= charWidth; i++) {  // each font "column" (+1 blank column for spacing)
-        h = 0;  // keep track of char height
-        for (j = 0; j < cfont.nbrows; j++) {  // each column byte
-            if (i == charWidth) charData = (uint8_t)0x0; // Insert blank column
-            else                charData = cfont.font[charOffset];
-            charOffset++;
-
-            // Process every row in font character
-            for (uint8_t k = 0; k < 8; k++) {
-                if (h >= cfont.height) break;  // No need to process excess bits
-                if (bitRead(charData, k)) drawPixel(x + i, y + (j * 8) + k, color);
-                else                      drawPixel(x + i, y + (j * 8) + k, _bgColor);
-                h++;
-            };
-        };
-    };
-    return charWidth;
-}
-
-
-//----------------------------------------------------------------------------------------------------
-//************************************* ECA 2.8 inch LCD Module **************************************
-//----------------------------------------------------------------------------------------------------
-// Set Farsi font color
-//----------------------------------------------------------------------------------------------------
-void TFT_22_ILI9225::setFontColor(int color)
-{
-    font_color = color;
-}
-//----------------------------------------------------------------------------------------------------
-//************************************* ECA 2.8 inch LCD Module **************************************
-//----------------------------------------------------------------------------------------------------
-// Set number format to farsi
-//----------------------------------------------------------------------------------------------------
-void TFT_22_ILI9225::setNumberFormatToFa(void)
-{
-    fa_num = 1;
-}
-
-//----------------------------------------------------------------------------------------------------
-//************************************* ECA 2.8 inch LCD Module **************************************
-//----------------------------------------------------------------------------------------------------
-// Set number format to english
-//----------------------------------------------------------------------------------------------------
-void TFT_22_ILI9225::setNumberFormatToEn(void)
-{
-    fa_num = 0;
-}
-
-//----------------------------------------------------------------------------------------------------
-//************************************* ECA 2.8 inch LCD Module **************************************
-//----------------------------------------------------------------------------------------------------
-// Set efect of the farsi font
-// ef : effect number           ef:1,2,...,5
-//----------------------------------------------------------------------------------------------------
-void TFT_22_ILI9225::setFontEffect(int ef)
-{
-    if (ef >= 0 && ef <= 5)
-        effect = ef;
-}
-
-//----------------------------------------------------------------------------------------------------
-//************************************* ECA 2.8 inch LCD Module **************************************
-//----------------------------------------------------------------------------------------------------
-// Enable Italic effect for farsi font 
-//----------------------------------------------------------------------------------------------------
-void TFT_22_ILI9225::setItalicOn(void)
-{
-    italic = 1;
-}
-
-//----------------------------------------------------------------------------------------------------
-//************************************* ECA 2.8 inch LCD Module **************************************
-//----------------------------------------------------------------------------------------------------
-// Disable Italic effect for farsi font 
-//----------------------------------------------------------------------------------------------------
-void TFT_22_ILI9225::setItalicOff(void)
-{
-    italic = 0;
-}
-
-//----------------------------------------------------------------------------------------------------
-//************************************* ECA 2.8 inch LCD Module **************************************
-//----------------------------------------------------------------------------------------------------
-// Puts a Farsi Character On The LCD Screen      simlpe
-//----------------------------------------------------------------------------------------------------
-void TFT_22_ILI9225::putChar(char character)
-{
-    //x_text
-    int counter_x, counter_y;
-    char letter_length, flag_p;
-
-    letter_length = font12x16_FA[character][0] >> 12;
-    for (counter_y = 0; counter_y<16; counter_y++)
-        for (counter_x = 0; counter_x<letter_length; counter_x++)
-        {
-            flag_p = font12x16_FA[character][counter_y] >> (counter_x);
-            flag_p = flag_p & 0x01;
-            if (flag_p)
-                drawPixel(_maxX - 3 - (x_font + (counter_x)), y_font + counter_y, font_color);
-            else if (highlight)
-                drawPixel(_maxX - 3 - (x_font + (counter_x)), y_font + counter_y, highlight_color);
-        }
-
-    x_font += letter_length;
-    if (x_font > _maxX - 1)
-    {
-        x_font = x_base;
-        y_font += 16;
-        if (y_font > _maxY - 0)
-            y_font = 0;
-    }
-
-}
-
-//----------------------------------------------------------------------------------------------------
-//************************************* ECA 2.8 inch LCD Module **************************************
-//----------------------------------------------------------------------------------------------------
-// Description  : Draws a beveled figure on the screen. 
-// Input        : x0, y0 - coordinate position of the upper left center
-//                  : x1, y1 - coordinate position of the lower right center
-//              : rad    - defines the redius of the circle,
-//              : fill   - fill yes or no
-//----------------------------------------------------------------------------------------------------
-void TFT_22_ILI9225::roundRectangle(int x0, int y0, int x1, int y1, int rad, bool fill, int color)
-{
-    signed int a, b, P;
-
-    a = 0;                      // increment by 1
-    b = rad;                // decrement by 1 using P
-    P = 1 - rad;
-
-
-    if (fill)
-    {
-        fillRectangle(x0, y0 + rad, x1, y1 - rad, color);
-
-        do
-        {
-            fillRectangle(x0 - a + rad, y0 - b + rad, a + x1 - rad, y0 - b + rad, color);   // 8 --> 1
-            fillRectangle(x0 - b + rad, y0 - a + rad, b + x1 - rad, y0 - a + rad, color);   // 7 --> 2
-            fillRectangle(x0 - b + rad, a + y1 - rad, b + x1 - rad, a + y1 - rad, color);   // 6 --> 3
-            fillRectangle(x0 - a + rad, b + y1 - rad, a + x1 - rad, b + y1 - rad, color);   // 5 --> 4
-
-            if (P < 0)
-                P += 3 + 2 * a++;
-            else
-                P += 5 + 2 * (a++ - b--);
-
-        } while (a <= b);
-    } //fill
-    else
-    {
-        fillRectangle(x0 + rad, y0, x1 - rad, y0, color);   // top
-        fillRectangle(x0 + rad, y1, x1 - rad, y1, color);   // bottom
-        fillRectangle(x0, y0 + rad, x0, y1 - rad, color);   // left
-        fillRectangle(x1, y0 + rad, x1, y1 - rad, color);   // right
-
-        do
-        {
-            drawPixel(a + x1 - rad, y0 - b + rad, color);   // `````` Segment 1
-            drawPixel(b + x1 - rad, y0 - a + rad, color);   // `````` Segment 2
-
-            drawPixel(b + x1 - rad, a + y1 - rad, color);   // `````` Segment 3
-            drawPixel(a + x1 - rad, b + y1 - rad, color);   // `````` Segment 4
-
-            drawPixel(x0 - a + rad, b + y1 - rad, color);   // `````` Segment 5
-            drawPixel(x0 - b + rad, a + y1 - rad, color);   // `````` Segment 6
-
-            drawPixel(x0 - b + rad, y0 - a + rad, color);   // `````` Segment 7
-            drawPixel(x0 - a + rad, y0 - b + rad, color);   // `````` Segment 8
-
-            if (P < 0)
-                P += 3 + 2 * a++;
-            else
-                P += 5 + 2 * (a++ - b--);
-        } while (a <= b);
-    } //no fill
-}   //RoundRectangle
-
-
-
-//----------------------------------------------------------------------------------------------------
-//************************************* ECA 2.8 inch LCD Module **************************************
-//----------------------------------------------------------------------------------------------------
-// Puts a Farsi Character On The LCD Screen with scaling
-// size : Scale factor       size:1,2,3,...
-//----------------------------------------------------------------------------------------------------
-void TFT_22_ILI9225::putBoldChar(char character, int size)
-{
-    int counter_x, counter_y, i, j;
-    char letter_length, flag_p;
-
-
-    letter_length = font12x16_FA[character][0] >> 12;
-    for (counter_y = 0; counter_y<16; counter_y++)
-        for (counter_x = 0; counter_x<letter_length; counter_x++)
-        {
-            flag_p = font12x16_FA[character][counter_y] >> (counter_x);
-            flag_p = flag_p & 0x01;
-
-
-            if (flag_p)
-            {
-
-                if (effect == 0)
-                    for (i = 0; i<size; i++)
-                        for (j = 0; j<size; j++)
-                            drawPixel(_maxX - 3 + italic*(-counter_y + 7) + i - (x_font + (size*counter_x)), y_font + size*counter_y + j, font_color);
-                // Very good effect (1)
-                else if (effect == 1)
-                {
-                    // good for size = 2
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y - 1, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y + 1, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - 1 - (x_font + (size*counter_x)), y_font + size*counter_y, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 1 - (x_font + (size*counter_x)), y_font + size*counter_y, font_color);
-                }
-                else if (effect == 2)
-                {
-                    // good for size = 2
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y - 1, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y + 1, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - 1 - (x_font + (size*counter_x)), y_font + size*counter_y + 1, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 1 - (x_font + (size*counter_x)), y_font + size*counter_y + 1, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - 1 - (x_font + (size*counter_x)), y_font + size*counter_y, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 1 - (x_font + (size*counter_x)), y_font + size*counter_y, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y + 2, font_color);
-                }
-                else if (effect == 3)
-                {
-                    // good for size = 3
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y - 1, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 1 - (x_font + (size*counter_x)), y_font + size*counter_y - 1, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - 1 - (x_font + (size*counter_x)), y_font + size*counter_y, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 1 - (x_font + (size*counter_x)), y_font + size*counter_y, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 2 - (x_font + (size*counter_x)), y_font + size*counter_y, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y + 1, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 1 - (x_font + (size*counter_x)), y_font + size*counter_y + 1, font_color);
-                }
-                else if (effect == 4)
-                {
-                    // good for size = 3
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y - 1, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 1 - (x_font + (size*counter_x)), y_font + size*counter_y - 1, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y + 1, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - 1 - (x_font + (size*counter_x)), y_font + size*counter_y + 1, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 1 - (x_font + (size*counter_x)), y_font + size*counter_y + 1, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 2 - (x_font + (size*counter_x)), y_font + size*counter_y + 1, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - 1 - (x_font + (size*counter_x)), y_font + size*counter_y, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 1 - (x_font + (size*counter_x)), y_font + size*counter_y, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 2 - (x_font + (size*counter_x)), y_font + size*counter_y, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y + 2, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 1 - (x_font + (size*counter_x)), y_font + size*counter_y + 2, font_color);
-                }
-                else if (effect == 5)
-                {
-                    // good for size = 1,3
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y + 1, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 1 - (x_font + (size*counter_x)), y_font + size*counter_y, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 1 - (x_font + (size*counter_x)), y_font + size*counter_y + 1, font_color);
-                }
-
-                //tftlcd_draw_circle(_maxX - 3 -(x_font+(size*counter_x)),y_font+size*counter_y,size,1,font_color);
-
-            }
-            else if (highlight)
-            {
-
-
-                if (effect == 0)
-                    for (i = 0; i<size; i++)
-                        for (j = 0; j<size; j++)
-                            drawPixel(_maxX - 3 + italic*(-counter_y + 7) + i - (x_font + (size*counter_x)), y_font + size*counter_y + j, highlight_color);
-                // Very good effect (1)
-                else if (effect == 1)
-                {
-                    // good for size = 2
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y, font_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y - 1, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y + 1, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - 1 - (x_font + (size*counter_x)), y_font + size*counter_y, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 1 - (x_font + (size*counter_x)), y_font + size*counter_y, highlight_color);
-                }
-                else if (effect == 2)
-                {
-                    // good for size = 2
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y - 1, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y + 1, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - 1 - (x_font + (size*counter_x)), y_font + size*counter_y + 1, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 1 - (x_font + (size*counter_x)), y_font + size*counter_y + 1, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - 1 - (x_font + (size*counter_x)), y_font + size*counter_y, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 1 - (x_font + (size*counter_x)), y_font + size*counter_y, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y + 2, highlight_color);
-                }
-                else if (effect == 3)
-                {
-                    // good for size = 3
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y - 1, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 1 - (x_font + (size*counter_x)), y_font + size*counter_y - 1, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - 1 - (x_font + (size*counter_x)), y_font + size*counter_y, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 1 - (x_font + (size*counter_x)), y_font + size*counter_y, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 2 - (x_font + (size*counter_x)), y_font + size*counter_y, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y + 1, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 1 - (x_font + (size*counter_x)), y_font + size*counter_y + 1, highlight_color);
-                }
-                else if (effect == 4)
-                {
-                    // good for size = 3
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y - 1, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 1 - (x_font + (size*counter_x)), y_font + size*counter_y - 1, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y + 1, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - 1 - (x_font + (size*counter_x)), y_font + size*counter_y + 1, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 1 - (x_font + (size*counter_x)), y_font + size*counter_y + 1, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 2 - (x_font + (size*counter_x)), y_font + size*counter_y + 1, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - 1 - (x_font + (size*counter_x)), y_font + size*counter_y, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 1 - (x_font + (size*counter_x)), y_font + size*counter_y, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 2 - (x_font + (size*counter_x)), y_font + size*counter_y, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y + 2, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 1 - (x_font + (size*counter_x)), y_font + size*counter_y + 2, highlight_color);
-                }
-                else if (effect == 5)
-                {
-                    // good for size = 1,3
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) - (x_font + (size*counter_x)), y_font + size*counter_y + 1, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 1 - (x_font + (size*counter_x)), y_font + size*counter_y, highlight_color);
-                    drawPixel(_maxX - 3 + italic*(-counter_y + 7) + 1 - (x_font + (size*counter_x)), y_font + size*counter_y + 1, highlight_color);
-                }
-
-
-
-                //tftlcd_draw_circle(_maxX - 3 + italic*(-counter_y+7) -(x_font+(size*counter_x)),y_font+size*counter_y,size,1,highlight_color);
-
-
-            }
-        }
-
-    x_font += size*letter_length;
-    if (x_font > _maxX - 1)
-    {
-        x_font = x_base;
-        y_font += size * 16;
-        if (y_font > _maxY - 0)
-            y_font = 0;
-    }
-
-}
-
-
-//----------------------------------------------------------------------------------------------------
-//************************************* ECA 2.8 inch LCD Module **************************************
-//----------------------------------------------------------------------------------------------------
-// Go to a specific pont for farsi font (x:0..TS_SIZE_X , y:0..TS_SIZE_Y)
-//----------------------------------------------------------------------------------------------------
-void TFT_22_ILI9225::goToXY(int x, int y)
-{
-    if ((x >= _maxX) || (x < 0))
-    {
-        x_font = 0;
-        x_base = 0;
-    }
-    else
-    {
-        x_font = x;
-        x_base = x;
-    }
-
-    if ((y >= _maxY) || (y < 0))
-        y_font = 0;
-    else
-        y_font = y;
-}
-
-//----------------------------------------------------------------------------------------------------
-//************************************* ECA 2.8 inch LCD Module **************************************
-//----------------------------------------------------------------------------------------------------
-// Enable Farsi font Highlight
-//----------------------------------------------------------------------------------------------------
-void TFT_22_ILI9225::setTextHighlightOn(void)
-{
-    highlight = 1;
-}
-
-//----------------------------------------------------------------------------------------------------
-//************************************* ECA 2.8 inch LCD Module **************************************
-//----------------------------------------------------------------------------------------------------
-// Disable Farsi font Highlight
-//----------------------------------------------------------------------------------------------------
-void TFT_22_ILI9225::setTextHighlightOff(void)
-{
-    highlight = 0;
-}
-
-//----------------------------------------------------------------------------------------------------
-//************************************* ECA 2.8 inch LCD Module **************************************
-//----------------------------------------------------------------------------------------------------
-// Set Farsi font Highlight color
-//----------------------------------------------------------------------------------------------------
-void TFT_22_ILI9225::setTextHighlightColor(unsigned int color)
-{
-    highlight_color = color;
-}
-
-//----------------------------------------------------------------------------------------------------
-//************************************* ECA 2.8 inch LCD Module **************************************
-//----------------------------------------------------------------------------------------------------
-// Show a farsi-englisg string on the LCD with specific size
-// size : Scale factor       size:1,2,3,...
-//----------------------------------------------------------------------------------------------------
-void TFT_22_ILI9225::putMixedEnAndFaString(const unsigned char *string, int size)
-{
-    unsigned char letter, nt_letter, pr_letter;
-    unsigned char CN = 0, CP = 0, pr_CN = 0, nt_CP = 0, place = 0, flag1 = 0;
-    unsigned char letter_counter = 0, letter_count = 0, length = 0, enter = 0;
-    unsigned char text_buffer[32];
-
-
-    flag1 = 0;
-
-    while (*string)
-    {
-        if (*string > 0x80)
-        {
-            while (*string > 0x80)
-            {
-                if (flag1 == 0)
-                    pr_letter = 0x20;
-                else
-                    pr_letter = *(string - 1);
-
-                letter = *string++;
-
-                if (*string == 0)
-                    nt_letter = 0x20;
-                else
-                    nt_letter = *string;
-
-                flag1 = 1;
-
-                if (letter > 0x98) letter = letter;
-                else if (letter == 0x98) letter = 0xBC;
-                else if (letter == 0x90) letter = 0xC0;
-                else if (letter == 0x8D) letter = 0xBE;
-                else if (letter == 0x81) letter = 0xBD;
-                else if (letter == 0x8E) letter = 0xBF;
-
-                if (pr_letter > 0x98) pr_letter = pr_letter;
-                else if (pr_letter == 0x98) pr_letter = 0xBC;
-                else if (pr_letter == 0x90) pr_letter = 0xC0;
-                else if (pr_letter == 0x8D) pr_letter = 0xBE;
-                else if (pr_letter == 0x81) pr_letter = 0xBD;
-                else if (pr_letter == 0x8E) pr_letter = 0xBF;
-
-                if (nt_letter > 0x98) nt_letter = nt_letter;
-                else if (nt_letter == 0x98) nt_letter = 0xBC;
-                else if (nt_letter == 0x90) nt_letter = 0xC0;
-                else if (nt_letter == 0x8D) nt_letter = 0xBE;
-                else if (nt_letter == 0x81) nt_letter = 0xBD;
-                else if (nt_letter == 0x8E) nt_letter = 0xBF;
-
-
-
-                if (pr_letter > 0x80)
-                    pr_CN = ((FAmap[(pr_letter - 0xBC)][5]) == 1);
-                else
-                    pr_CN = 0;
-
-                if (nt_letter > 0x80)
-                    nt_CP = ((FAmap[(nt_letter - 0xBC)][4]) == 1);
-                else
-                    nt_CP = 0;
-
-                if (letter > 0x80)
-                    CP = ((FAmap[(letter - 0xBC)][4]) == 1);
-                else
-                    CP = 0;
-
-                if (letter > 0x80)
-                    CN = ((FAmap[(letter - 0xBC)][5]) == 1);
-                else
-                    CN = 0;
-
-                CP = pr_CN && CP;
-                CN = CN && nt_CP;
-                place = (CP << 1) | CN;
-
-                text_buffer[letter_counter++] = FAmap[(letter - 0xBC)][place];
-
-                length += size*(font12x16_FA[FAmap[(letter - 0xBC)][place]][1] >> 12);
-            }
-
-
-
-            if (length < _maxX - x_font - 3)
-                for (letter_count = 0; letter_count<letter_counter; letter_count++)
-                    putBoldChar(text_buffer[letter_count], size);
-            else
-            {
-
-                x_font = x_base;
-                y_font += size * 16;
-                if (y_font > _maxY - size * 16)
-                    y_font = 0;
-
-                for (letter_count = 0; letter_count<letter_counter; letter_count++)
-                    putBoldChar(text_buffer[letter_count], size);
-            }
-            letter_counter = 0;
-            length = 0;
-        }
-        else if (*string == 0x20)   //Space detect
-            putBoldChar(*string++, size);
-        else   //English letter & Number & Enter detect
-        {
-            if (*string == 0x0D)   //Enter detect
-            {
-                x_font = x_base;
-                y_font += size * 16;
-                if (y_font > _maxY - size * 16)
-                    y_font = 0;
-
-                string += 2;
-                goto p1;
-            }
-            //letter_counter = 0;
-            while ((*string < 0x81) && (*(string + 1) < 0x81) && (*string != 0x00))
-            {
-
-                if (fa_num)
-                {
-                    if ((*string > 0x2F) && (*string < 0x3A) && (*string != 0x00))
-                    {
-                        letter = (*string) - 0x20;
-                        text_buffer[letter_counter++] = letter;
-                        string++;
-                        goto P2;
-                    }
-                }
-                text_buffer[letter_counter++] = *string++;
-            P2:
-                if ((*string == 0x20) && ((letter_counter * size * 8) < (_maxX - x_font - 1)))
-                    flag1 = letter_counter;
-
-                if ((letter_counter * size * 8) > (_maxX - x_font - 1))
-                {
-                    string -= (letter_counter - flag1 + 1);
-                    letter_counter = flag1 - 1;
-                    enter = 1;
-
-                    break;
-                }
-
-            }
-            if ((letter_counter * size * 8) < (_maxX - x_font - 1))
-            {
-                for (letter_count = (letter_counter); letter_count>0; letter_count--)
-                    putBoldChar(text_buffer[letter_count - 1], size);
-
-                if (enter)
-                {
-                    enter = 0;
-                    x_font = x_base;
-                    y_font += size * 16;
-                    if (y_font > _maxY - size * 16)
-                        y_font = 0;
-                }
-            }
-        p1:
-            letter_counter = 0;
-            flag1 = 0;
-
-        }
-    }
-    flag1 = 0;
-
-}
-
-//----------------------------------------------------------------------------------------------------
-//************************************* ECA 2.8 inch LCD Module **************************************
-//----------------------------------------------------------------------------------------------------
-// Make an ascii string from an unicode string 
-//----------------------------------------------------------------------------------------------------
-
-void TFT_22_ILI9225::unicode2ascii(char *uni_str, char *ascii_str)
-{
-    int counter = 0;
-    int Uch = 0;
-    char chl, chh;
-
-
-    while (*uni_str)
-    {
-        chl = *uni_str++;
-        chh = *uni_str++;
-
-        Uch = 0;
-        Uch = ((Uch | chh) << 8) | chl;
-
-        if (Uch > 1574 && Uch < 1591)
-            *(ascii_str + counter) = (char)(Uch - 1376);
-        else if (Uch > 1590 && Uch < 1595)
-            *(ascii_str + counter) = (char)(Uch - 1375);
-        else if (Uch > 1600 && Uch < 1603)
-            *(ascii_str + counter) = (char)(Uch - 1380);
-        else if (Uch == 1705)
-            *(ascii_str + counter) = (char)(Uch - 1482);
-        else if (Uch == 1604)
-            *(ascii_str + counter) = (char)(Uch - 1379);
-        else if (Uch > 1604 && Uch < 1609)
-            *(ascii_str + counter) = (char)(Uch - 1378);
-        else if (Uch == 1740)
-            *(ascii_str + counter) = (char)(Uch - 1503);
-        else if (Uch == 1574)
-            *(ascii_str + counter) = (char)(Uch - 1381);
-        else if (Uch == 1662)
-            *(ascii_str + counter) = (char)(Uch - 1533);
-        else if (Uch == 1670)
-            *(ascii_str + counter) = (char)(Uch - 1529);
-        else if (Uch == 1688)
-            *(ascii_str + counter) = (char)(Uch - 1546);
-        else if (Uch == 1711)
-            *(ascii_str + counter) = (char)(Uch - 1567);
-        else if (Uch == 1570)
-            *(ascii_str + counter) = (char)(Uch - 1376);
-        else if (Uch > 1631 && Uch < 1642)
-            *(ascii_str + counter) = (char)(Uch - 1584);
-        else if (Uch == 65536)
-            *(ascii_str + counter) = NULL;
-        else
-            *(ascii_str + counter) = (char)Uch;
-
-
-        counter++;
-
-    }
-    *(ascii_str + counter) = NULL;
-
-}
-
--- a/TFT_22_ILI9225.h	Tue Sep 01 12:16:09 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,316 +0,0 @@
-#ifndef TFT_22_ILI9225_h
-#define TFT_22_ILI9225_h
-#include "mbed.h"
-#include "FAmap.h"
-#include "EN_FA_font.h"
-
-// Other libraries
-#include "SPI.h"
-
-/* ILI9225 screen size */
-#define ILI9225_LCD_WIDTH  176
-#define ILI9225_LCD_HEIGHT 220
-
-/* ILI9225 LCD Registers */
-#define ILI9225_DRIVER_OUTPUT_CTRL      (0x01u)  // Driver Output Control
-#define ILI9225_LCD_AC_DRIVING_CTRL     (0x02u)  // LCD AC Driving Control
-#define ILI9225_ENTRY_MODE              (0x03u)  // Entry Mode
-#define ILI9225_DISP_CTRL1              (0x07u)  // Display Control 1
-#define ILI9225_BLANK_PERIOD_CTRL1      (0x08u)  // Blank Period Control
-#define ILI9225_FRAME_CYCLE_CTRL        (0x0Bu)  // Frame Cycle Control
-#define ILI9225_INTERFACE_CTRL          (0x0Cu)  // Interface Control
-#define ILI9225_OSC_CTRL                (0x0Fu)  // Osc Control
-#define ILI9225_POWER_CTRL1             (0x10u)  // Power Control 1
-#define ILI9225_POWER_CTRL2             (0x11u)  // Power Control 2
-#define ILI9225_POWER_CTRL3             (0x12u)  // Power Control 3
-#define ILI9225_POWER_CTRL4             (0x13u)  // Power Control 4
-#define ILI9225_POWER_CTRL5             (0x14u)  // Power Control 5
-#define ILI9225_VCI_RECYCLING           (0x15u)  // VCI Recycling
-#define ILI9225_RAM_ADDR_SET1           (0x20u)  // Horizontal GRAM Address Set
-#define ILI9225_RAM_ADDR_SET2           (0x21u)  // Vertical GRAM Address Set
-#define ILI9225_GRAM_DATA_REG           (0x22u)  // GRAM Data Register
-#define ILI9225_GATE_SCAN_CTRL          (0x30u)  // Gate Scan Control Register
-#define ILI9225_VERTICAL_SCROLL_CTRL1   (0x31u)  // Vertical Scroll Control 1 Register
-#define ILI9225_VERTICAL_SCROLL_CTRL2   (0x32u)  // Vertical Scroll Control 2 Register
-#define ILI9225_VERTICAL_SCROLL_CTRL3   (0x33u)  // Vertical Scroll Control 3 Register
-#define ILI9225_PARTIAL_DRIVING_POS1    (0x34u)  // Partial Driving Position 1 Register
-#define ILI9225_PARTIAL_DRIVING_POS2    (0x35u)  // Partial Driving Position 2 Register
-#define ILI9225_HORIZONTAL_WINDOW_ADDR1 (0x36u)  // Horizontal Address Start Position
-#define ILI9225_HORIZONTAL_WINDOW_ADDR2 (0x37u)  // Horizontal Address End Position
-#define ILI9225_VERTICAL_WINDOW_ADDR1   (0x38u)  // Vertical Address Start Position
-#define ILI9225_VERTICAL_WINDOW_ADDR2   (0x39u)  // Vertical Address End Position
-#define ILI9225_GAMMA_CTRL1             (0x50u)  // Gamma Control 1
-#define ILI9225_GAMMA_CTRL2             (0x51u)  // Gamma Control 2
-#define ILI9225_GAMMA_CTRL3             (0x52u)  // Gamma Control 3
-#define ILI9225_GAMMA_CTRL4             (0x53u)  // Gamma Control 4
-#define ILI9225_GAMMA_CTRL5             (0x54u)  // Gamma Control 5
-#define ILI9225_GAMMA_CTRL6             (0x55u)  // Gamma Control 6
-#define ILI9225_GAMMA_CTRL7             (0x56u)  // Gamma Control 7
-#define ILI9225_GAMMA_CTRL8             (0x57u)  // Gamma Control 8
-#define ILI9225_GAMMA_CTRL9             (0x58u)  // Gamma Control 9
-#define ILI9225_GAMMA_CTRL10            (0x59u)  // Gamma Control 10
-
-#define ILI9225C_INVOFF  0x20
-#define ILI9225C_INVON   0x21
-
-
-/* RGB 24-bits color table definition (RGB888). */
-#define RGB888_RGB565(color) ((((color) >> 19) & 0x1f) << 11) | ((((color) >> 10) & 0x3f) << 5) | (((color) >> 3) & 0x1f)
-
-#define COLOR_BLACK          RGB888_RGB565(0x000000u)
-#define COLOR_WHITE          RGB888_RGB565(0xFFFFFFu)
-#define COLOR_BLUE           RGB888_RGB565(0x0000FFu)
-#define COLOR_GREEN          RGB888_RGB565(0x00FF00u)
-#define COLOR_RED            RGB888_RGB565(0xFF0000u)
-#define COLOR_NAVY           RGB888_RGB565(0x000080u)
-#define COLOR_DARKBLUE       RGB888_RGB565(0x00008Bu)
-#define COLOR_DARKGREEN      RGB888_RGB565(0x006400u)
-#define COLOR_DARKCYAN       RGB888_RGB565(0x008B8Bu)
-#define COLOR_CYAN           RGB888_RGB565(0x00FFFFu)
-#define COLOR_TURQUOISE      RGB888_RGB565(0x40E0D0u)
-#define COLOR_INDIGO         RGB888_RGB565(0x4B0082u)
-#define COLOR_DARKRED        RGB888_RGB565(0x800000u)
-#define COLOR_OLIVE          RGB888_RGB565(0x808000u)
-#define COLOR_GRAY           RGB888_RGB565(0x808080u)
-#define COLOR_SKYBLUE        RGB888_RGB565(0x87CEEBu)
-#define COLOR_BLUEVIOLET     RGB888_RGB565(0x8A2BE2u)
-#define COLOR_LIGHTGREEN     RGB888_RGB565(0x90EE90u)
-#define COLOR_DARKVIOLET     RGB888_RGB565(0x9400D3u)
-#define COLOR_YELLOWGREEN    RGB888_RGB565(0x9ACD32u)
-#define COLOR_BROWN          RGB888_RGB565(0xA52A2Au)
-#define COLOR_DARKGRAY       RGB888_RGB565(0xA9A9A9u)
-#define COLOR_SIENNA         RGB888_RGB565(0xA0522Du)
-#define COLOR_LIGHTBLUE      RGB888_RGB565(0xADD8E6u)
-#define COLOR_GREENYELLOW    RGB888_RGB565(0xADFF2Fu)
-#define COLOR_SILVER         RGB888_RGB565(0xC0C0C0u)
-#define COLOR_LIGHTGREY      RGB888_RGB565(0xD3D3D3u)
-#define COLOR_LIGHTCYAN      RGB888_RGB565(0xE0FFFFu)
-#define COLOR_VIOLET         RGB888_RGB565(0xEE82EEu)
-#define COLOR_AZUR           RGB888_RGB565(0xF0FFFFu)
-#define COLOR_BEIGE          RGB888_RGB565(0xF5F5DCu)
-#define COLOR_MAGENTA        RGB888_RGB565(0xFF00FFu)
-#define COLOR_TOMATO         RGB888_RGB565(0xFF6347u)
-#define COLOR_GOLD           RGB888_RGB565(0xFFD700u)
-#define COLOR_ORANGE         RGB888_RGB565(0xFFA500u)
-#define COLOR_SNOW           RGB888_RGB565(0xFFFAFAu)
-#define COLOR_YELLOW         RGB888_RGB565(0xFFFF00u)
-
-/* Font defines */
-#define FONT_HEADER_SIZE 4 // 1: pixel width of 1 font character, 2: pixel height, 
-#define readFontByte(x) pgm_read_byte(&cfont.font[x])  
-
-extern uint8_t Terminal6x8[];
-extern uint8_t Terminal11x16[];
-extern uint8_t Terminal12x16[];
-extern uint8_t Trebuchet_MS16x21[];
-
-struct _currentFont
-{
-    uint8_t* font;
-    uint8_t width;
-    uint8_t height;
-    uint8_t offset;
-    uint8_t numchars;
-    uint8_t nbrows;
-};
-
-/// Main and core class
-class TFT_22_ILI9225 {
-
-public:
-
-    TFT_22_ILI9225(PinName RST, PinName RS, PinName CS, PinName SDI, PinName CLK, PinName LED);
-    //TFT_22_ILI9225(PinName RST, PinName RS, PinName CS, PinName LED);
-
-
-    /// Initialization
-    void begin(void);
-
-    /// Clear the screen
-    void clear(void);
-
-    /// fill the screen with color:
-    void fill(uint16_t color);
-
-    /// Invert screen
-    /// @param  flag true to invert, false for normal screen
-    void invert(bool flag);
-
-    /// Switch backlight on or off
-    /// @param  flag true=on, false=off
-    void setBacklight(bool flag);
-
-    /// Switch display on or off
-    /// @param  flag true=on, false=off
-    void setDisplay(bool flag);
-
-    /// Set orientation
-    /// @param  orientation orientation, 0=portrait, 1=right rotated landscape, 2=reverse portrait, 3=left rotated landscape
-    void setOrientation(uint8_t orientation);
-
-    /// Get orientation
-    /// @return orientation orientation, 0=portrait, 1=right rotated landscape, 2=reverse portrait, 3=left rotated landscape
-    uint8_t getOrientation(void);
-
-    /// Font size, x-axis
-    /// @return horizontal size of current font, in pixels
-    uint8_t fontX(void);
-
-    /// Font size, y-axis
-    /// @return vertical size of current font, in pixels
-    uint8_t fontY(void);
-
-    /// Screen size, x-axis
-    /// @return horizontal size of the screen, in pixels
-    /// @note   240 means 240 pixels and thus 0..239 coordinates (decimal)
-    uint16_t maxX(void);
-
-    /// Screen size, y-axis
-    /// @return vertical size of the screen, in pixels
-    /// @note   220 means 220 pixels and thus 0..219 coordinates (decimal)
-    uint16_t maxY(void);
-
-    /// Draw circle
-    /// @param  x0 center, point coordinate, x-axis
-    /// @param  y0 center, point coordinate, y-axis
-    /// @param  radius radius
-    /// @param  color 16-bit color
-    void drawCircle(uint16_t x0, uint16_t y0, uint16_t radius, uint16_t color);
-
-    /// Draw solid circle
-    /// @param  x0 center, point coordinate, x-axis
-    /// @param  y0 center, point coordinate, y-axis
-    /// @param  radius radius
-    /// @param  color 16-bit color
-    void fillCircle(uint8_t x0, uint8_t y0, uint8_t radius, uint16_t color);
-
-    /// Set background color
-    /// @param  color background color, default=black
-    void setBackgroundColor(uint16_t color = COLOR_BLACK);
-
-    /// Draw line, rectangle coordinates
-    /// @param  x1 top left coordinate, x-axis
-    /// @param  y1 top left coordinate, y-axis
-    /// @param  x2 bottom right coordinate, x-axis
-    /// @param  y2 bottom right coordinate, y-axis
-    /// @param  color 16-bit color
-    void drawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color);
-
-    /// Draw rectangle, rectangle coordinates
-    /// @param  x1 top left coordinate, x-axis
-    /// @param  y1 top left coordinate, y-axis
-    /// @param  x2 bottom right coordinate, x-axis
-    /// @param  y2 bottom right coordinate, y-axis
-    /// @param  color 16-bit color
-    void drawRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color);
-
-    /// Draw solid rectangle, rectangle coordinates
-    /// @param  x1 top left coordinate, x-axis
-    /// @param  y1 top left coordinate, y-axis
-    /// @param  x2 bottom right coordinate, x-axis
-    /// @param  y2 bottom right coordinate, y-axis
-    /// @param  color 16-bit color
-    void fillRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color);
-
-    /// Draw pixel
-    /// @param  x1 point coordinate, x-axis
-    /// @param  y1 point coordinate, y-axis
-    /// @param  color 16-bit color
-    void drawPixel(uint16_t x1, uint16_t y1, uint16_t color);
-
-    /// Draw ASCII Text (pixel coordinates)
-    /// @param  x point coordinate, x-axis
-    /// @param  y point coordinate, y-axis
-    /// @param  s text string
-    /// @param  color 16-bit color, default=white
-    void drawText(uint16_t x, uint16_t y, char *s, uint16_t color = COLOR_WHITE);
-
-    /// Calculate 16-bit color from 8-bit Red-Green-Blue components
-    /// @param  red red component, 0x00..0xff
-    /// @param  green green component, 0x00..0xff
-    /// @param  blue blue component, 0x00..0xff
-    /// @return 16-bit color
-    uint16_t setColor(uint8_t red, uint8_t green, uint8_t blue);
-
-    /// Calculate 8-bit Red-Green-Blue components from 16-bit color
-    /// @param  rgb 16-bit color
-    /// @param  red red component, 0x00..0xff
-    /// @param  green green component, 0x00..0xff
-    /// @param  blue blue component, 0x00..0xff
-    void splitColor(uint16_t rgb, uint8_t &red, uint8_t &green, uint8_t &blue);
-
-    /// Draw triangle, triangle coordinates
-    /// @param  x1 corner 1 coordinate, x-axis
-    /// @param  y1 corner 1 coordinate, y-axis
-    /// @param  x2 corner 2 coordinate, x-axis
-    /// @param  y2 corner 2 coordinate, y-axis
-    /// @param  x3 corner 3 coordinate, x-axis
-    /// @param  y3 corner 3 coordinate, y-axis
-    /// @param  color 16-bit color
-    void drawTriangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t x3, uint16_t y3, uint16_t color);
-
-    /// Draw solid triangle, triangle coordinates
-    /// @param  x1 corner 1 coordinate, x-axis
-    /// @param  y1 corner 1 coordinate, y-axis
-    /// @param  x2 corner 2 coordinate, x-axis
-    /// @param  y2 corner 2 coordinate, y-axis
-    /// @param  x3 corner 3 coordinate, x-axis
-    /// @param  y3 corner 3 coordinate, y-axis
-    /// @param  color 16-bit color
-    void fillTriangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t x3, uint16_t y3, uint16_t color);
-
-    /// Set current font
-    /// @param  font Font name
-    void setFont(uint8_t* font);
-
-    /// Draw single character (pixel coordinates)
-    /// @param  x point coordinate, x-axis
-    /// @param  y point coordinate, y-axis
-    /// @param  ch ASCII character
-    /// @param  color 16-bit color, default=white
-    uint16_t drawChar(uint16_t x, uint16_t y, uint16_t ch, uint16_t color = COLOR_WHITE);
-
-    void setFontColor(int color);
-    void setNumberFormatToFa(void);
-    void setNumberFormatToEn(void);
-    void setFontEffect(int ef);
-    void setItalicOn(void);
-    void setItalicOff(void);
-    void putChar(char character);
-    void putBoldChar(char character, int size);
-    void goToXY(int x, int y);
-    void setTextHighlightOn(void);
-    void setTextHighlightOff(void);
-    void setTextHighlightColor(unsigned int color);
-    void putMixedEnAndFaString(const unsigned char *string, int size);
-    void unicode2ascii(char *uni_str, char *ascii_str); 
-    void roundRectangle(int x0, int y0, int x1, int y1, int rad, bool fill, int color);
-
-
-private:
-    SPI spi;
-
-    void     _swap(uint16_t &a, uint16_t &b),
-        _setWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1),
-        _orientCoordinates(uint16_t &x1, uint16_t &y1),
-        _writeRegister(uint16_t reg, uint16_t data),
-        _writeData(uint8_t HI, uint8_t LO),
-        _writeCommand(uint8_t HI, uint8_t LO);
-
-    uint16_t _maxX, _maxY, _bgColor;
-
-    PinName  _rst, _rs, _cs, _sdi, _clk, _led;
-    DigitalInOut _rsInOut;
-    DigitalInOut _csInOut;
-    DigitalInOut _rstInOut;
-    DigitalInOut _ledInOut;
-    uint8_t _orientation;
-
-
-    bool  hwSPI;
-
-    _currentFont cfont;
-
-};
-
-#endif