Use the MAXREFDES99 to display the time from a DS3231 RTC. Requires the DS3231 RTC, or a MAXREFDES72 which has the rtc on it.

Dependencies:   MAX7219 ds3231 mbed

Files at this revision

API Documentation at this revision

Comitter:
j3
Date:
Tue May 31 22:32:53 2016 +0000
Parent:
0:52f9ecc09233
Commit message:
Updated libraries

Changed in this revision

MAX7219.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
maxrefdes99.cpp Show annotated file Show diff for this revision Revisions of this file
maxrefdes99.h Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 52f9ecc09233 -r ce6a3accca77 MAX7219.lib
--- a/MAX7219.lib	Fri Mar 25 22:50:52 2016 +0000
+++ b/MAX7219.lib	Tue May 31 22:32:53 2016 +0000
@@ -1,1 +1,1 @@
-https://developer.mbed.org/teams/Maxim-Integrated/code/MAX7219/#90a7cf4e7d26
+https://developer.mbed.org/teams/Maxim-Integrated/code/MAX7219/#b5e4379a3d90
diff -r 52f9ecc09233 -r ce6a3accca77 main.cpp
--- a/main.cpp	Fri Mar 25 22:50:52 2016 +0000
+++ b/main.cpp	Tue May 31 22:32:53 2016 +0000
@@ -45,13 +45,7 @@
     //rtc object
     Ds3231 rtc(D14, D15); 
     
-    //switch for setting clock, requires tera term interface at 9600 8N1
-    DigitalIn sw(SW3);
-    
-    if(sw.read() == 0)
-    {
-        set_rtc(rtc);
-    }
+    set_rtc(rtc);
     
     Max7219 display(D11, D12, D13, D10);
     
diff -r 52f9ecc09233 -r ce6a3accca77 maxrefdes99.cpp
--- a/maxrefdes99.cpp	Fri Mar 25 22:50:52 2016 +0000
+++ b/maxrefdes99.cpp	Tue May 31 22:32:53 2016 +0000
@@ -1,16 +1,5 @@
 /******************************************************************//**
 * @file maxrefdes99.cpp
-*
-* @author Justin Jordan
-*
-* @version 0.0
-*
-* Started: 08JAN16
-*
-* Updated: 
-*
-* @brief Source file for maxrefdes99 demo
-***********************************************************************
 * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
@@ -48,138 +37,1092 @@
 
 //5x7 character bit map
 static const uint8_t font_5x7[95][6] = {
-    {0x00,0x00,0x00,0x00,0x00,0x00},    // SPACE
-    {0x00,0x00,0x00,0x4F,0x00,0x00},    // !
-    {0x00,0x00,0x07,0x00,0x07,0x00},    // "
-    {0x00,0x14,0x7F,0x14,0x7F,0x14},    // #
-    {0x00,0x24,0x2A,0x7F,0x2A,0x12},    // $
-    {0x00,0x23,0x13,0x08,0x64,0x62},    // %
-    {0x00,0x36,0x49,0x55,0x22,0x50},    // &
-    {0x00,0x00,0x05,0x03,0x00,0x00},    // '
-    {0x00,0x00,0x1C,0x22,0x41,0x00},    // (
-    {0x00,0x00,0x41,0x22,0x1C,0x00},    // )
-    {0x00,0x14,0x08,0x3E,0x08,0x14},    // *
-    {0x00,0x08,0x08,0x3E,0x08,0x08},    // +
-    {0x00,0x00,0x50,0x30,0x00,0x00},    // ,
-    {0x00,0x08,0x08,0x08,0x08,0x08},    // -
-    {0x00,0x00,0x60,0x60,0x00,0x00},    // .
-    {0x00,0x20,0x10,0x08,0x04,0x02},    // /
-    {0x00,0x3E,0x51,0x49,0x45,0x3E},    // 0
-    {0x00,0x00,0x42,0x7F,0x40,0x00},    // 1
-    {0x00,0x42,0x61,0x51,0x49,0x46},    // 2
-    {0x00,0x21,0x41,0x45,0x4B,0x31},    // 3
-    {0x00,0x18,0x14,0x12,0x7F,0x10},    // 4
-    {0x00,0x27,0x45,0x45,0x45,0x39},    // 5
-    {0x00,0x3C,0x4A,0x49,0x49,0x30},    // 6
-    {0x00,0x01,0x71,0x09,0x05,0x03},    // 7
-    {0x00,0x36,0x49,0x49,0x49,0x36},    // 8
-    {0x00,0x06,0x49,0x49,0x29,0x1E},    // 9
-    {0x00,0x36,0x36,0x00,0x00,0x00},    // :
-    {0x00,0x56,0x36,0x00,0x00,0x00},    // ;
-    {0x00,0x08,0x14,0x22,0x41,0x00},    // <
-    {0x00,0x14,0x14,0x14,0x14,0x14},    // =
-    {0x00,0x00,0x41,0x22,0x14,0x08},    // >
-    {0x00,0x02,0x01,0x51,0x09,0x06},    // ?
-    {0x00,0x30,0x49,0x79,0x41,0x3E},    // @
-    {0x00,0x7E,0x11,0x11,0x11,0x7E},    // A
-    {0x00,0x7F,0x49,0x49,0x49,0x36},    // B
-    {0x00,0x3E,0x41,0x41,0x41,0x22},    // C
-    {0x00,0x7F,0x41,0x41,0x22,0x1C},    // D
-    {0x00,0x7F,0x49,0x49,0x49,0x41},    // E
-    {0x00,0x7F,0x09,0x09,0x09,0x01},    // F
-    {0x00,0x3E,0x41,0x49,0x49,0x7A},    // G
-    {0x00,0x7F,0x08,0x08,0x08,0x7F},    // H
-    {0x00,0x00,0x41,0x7F,0x41,0x00},    // I
-    {0x00,0x20,0x40,0x41,0x3F,0x01},    // J
-    {0x00,0x7F,0x08,0x14,0x22,0x41},    // K
-    {0x00,0x7F,0x40,0x40,0x40,0x40},    // L
-    {0x00,0x7F,0x02,0x0C,0x02,0x7F},    // M
-    {0x00,0x7F,0x04,0x08,0x10,0x7F},    // N
-    {0x00,0x3E,0x41,0x41,0x41,0x3E},    // O
-    {0x00,0x7F,0x09,0x09,0x09,0x06},    // P
-    {0x00,0x3E,0x41,0x51,0x21,0x5E},    // Q
-    {0x00,0x7F,0x09,0x19,0x29,0x46},    // R
-    {0x00,0x46,0x49,0x49,0x49,0x31},    // S
-    {0x00,0x01,0x01,0x7F,0x01,0x01},    // T
-    {0x00,0x3F,0x40,0x40,0x40,0x3F},    // U
-    {0x00,0x1F,0x20,0x40,0x20,0x1F},    // V
-    {0x00,0x3F,0x40,0x30,0x40,0x3F},    // W
-    {0x00,0x63,0x14,0x08,0x14,0x63},    // X
-    {0x00,0x07,0x08,0x70,0x08,0x07},    // Y
-    {0x00,0x61,0x51,0x49,0x45,0x43},    // Z
-    {0x00,0x00,0x7F,0x41,0x41,0x00},    // [
-    {0x00,0x02,0x04,0x08,0x10,0x20},    // backslash
-    {0x00,0x00,0x41,0x41,0x7F,0x00},    // ]
-    {0x00,0x04,0x02,0x01,0x02,0x04},    // ^
-    {0x00,0x40,0x40,0x40,0x40,0x40},    // _
-    {0x00,0x00,0x01,0x02,0x04,0x00},    // `
-    {0x00,0x20,0x54,0x54,0x54,0x78},    // a
-    {0x00,0x7F,0x50,0x48,0x48,0x30},    // b
-    {0x00,0x38,0x44,0x44,0x44,0x20},    // c
-    {0x00,0x38,0x44,0x44,0x48,0x7F},    // d
-    {0x00,0x38,0x54,0x54,0x54,0x18},    // e
-    {0x00,0x08,0x7E,0x09,0x01,0x02},    // f
-    {0x00,0x0C,0x52,0x52,0x52,0x3E},    // g
-    {0x00,0x7F,0x08,0x04,0x04,0x78},    // h
-    {0x00,0x00,0x44,0x7D,0x40,0x00},    // i
-    {0x00,0x20,0x40,0x44,0x3D,0x00},    // j
-    {0x00,0x7F,0x10,0x28,0x44,0x00},    // k
-    {0x00,0x00,0x41,0x7F,0x40,0x00},    // l
-    {0x00,0x78,0x04,0x58,0x44,0x78},    // m
-    {0x00,0x7C,0x08,0x04,0x04,0x78},    // n
-    {0x00,0x38,0x44,0x44,0x44,0x38},    // o
-    {0x00,0x7C,0x14,0x14,0x14,0x08},    // p
-    {0x00,0x08,0x14,0x14,0x18,0x7C},    // q
-    {0x00,0x7C,0x08,0x04,0x04,0x08},    // r
-    {0x00,0x48,0x54,0x54,0x54,0x20},    // s
-    {0x00,0x04,0x3F,0x44,0x40,0x20},    // t
-    {0x00,0x3C,0x40,0x40,0x20,0x7C},    // u
-    {0x00,0x1C,0x20,0x40,0x20,0x1C},    // v
-    {0x00,0x3C,0x40,0x30,0x40,0x3C},    // w
-    {0x00,0x44,0x28,0x10,0x28,0x44},    // x
-    {0x00,0x0C,0x50,0x50,0x50,0x3C},    // y
-    {0x00,0x44,0x64,0x54,0x4C,0x44},    // z
-    {0x00,0x00,0x08,0x36,0x41,0x00},    // {
-    {0x00,0x00,0x00,0x7F,0x00,0x00},    // |
-    {0x00,0x00,0x41,0x36,0x08,0x00},    // }
-    {0x00,0x0C,0x02,0x0C,0x10,0x0C}     // ~
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //SPACE
+    {0x00, 0x00, 0x00, 0xf2, 0x00, 0x00}, //!
+    {0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00}, //"
+    {0x00, 0x28, 0xfe, 0x28, 0xfe, 0x28}, //#
+    {0x00, 0x24, 0x54, 0xfe, 0x54, 0x48}, //$
+    {0x00, 0xc4, 0xc8, 0x10, 0x26, 0x46}, //%
+    {0x00, 0x6c, 0x92, 0xaa, 0x44, 0x0a}, //&
+    {0x00, 0x00, 0xa0, 0xc0, 0x00, 0x00}, //'
+    {0x00, 0x00, 0x38, 0x44, 0x82, 0x00}, //(
+    {0x00, 0x00, 0x82, 0x44, 0x38, 0x00}, //)
+    {0x00, 0x28, 0x10, 0x7c, 0x10, 0x28}, //*
+    {0x00, 0x10, 0x10, 0x7c, 0x10, 0x10}, //+
+    {0x00, 0x00, 0x0a, 0x0c, 0x00, 0x00}, //,
+    {0x00, 0x10, 0x10, 0x10, 0x10, 0x10}, //-
+    {0x00, 0x00, 0x06, 0x06, 0x00, 0x00}, //.
+    {0x00, 0x04, 0x08, 0x10, 0x20, 0x40}, ///
+    {0x00, 0x7c, 0x8a, 0x92, 0xa2, 0x7c}, //0
+    {0x00, 0x00, 0x42, 0xfe, 0x02, 0x00}, //1
+    {0x00, 0x42, 0x86, 0x8a, 0x92, 0x62}, //2
+    {0x00, 0x84, 0x82, 0xa2, 0xd2, 0x8c}, //3
+    {0x00, 0x18, 0x28, 0x48, 0xfe, 0x08}, //4
+    {0x00, 0xe4, 0xa2, 0xa2, 0xa2, 0x9c}, //5
+    {0x00, 0x3c, 0x52, 0x92, 0x92, 0x0c}, //6
+    {0x00, 0x80, 0x8e, 0x90, 0xa0, 0xc0}, //7
+    {0x00, 0x6c, 0x92, 0x92, 0x92, 0x6c}, //8
+    {0x00, 0x60, 0x92, 0x92, 0x94, 0x78}, //9
+    {0x00, 0x6c, 0x6c, 0x00, 0x00, 0x00}, //:
+    {0x00, 0x6a, 0x6c, 0x00, 0x00, 0x00}, //;
+    {0x00, 0x10, 0x28, 0x44, 0x82, 0x00}, //<
+    {0x00, 0x28, 0x28, 0x28, 0x28, 0x28}, //=
+    {0x00, 0x00, 0x82, 0x44, 0x28, 0x10}, //>
+    {0x00, 0x40, 0x80, 0x8a, 0x90, 0x60}, //?
+    {0x00, 0x0c, 0x92, 0x9e, 0x82, 0x7c}, //@
+    {0x00, 0x7e, 0x88, 0x88, 0x88, 0x7e}, //A
+    {0x00, 0xfe, 0x92, 0x92, 0x92, 0x6c}, //B
+    {0x00, 0x7c, 0x82, 0x82, 0x82, 0x44}, //C
+    {0x00, 0xfe, 0x82, 0x82, 0x44, 0x38}, //D
+    {0x00, 0xfe, 0x92, 0x92, 0x92, 0x82}, //E
+    {0x00, 0xfe, 0x90, 0x90, 0x90, 0x80}, //F
+    {0x00, 0x7c, 0x82, 0x92, 0x92, 0x5e}, //G
+    {0x00, 0xfe, 0x10, 0x10, 0x10, 0xfe}, //H
+    {0x00, 0x00, 0x82, 0xfe, 0x82, 0x00}, //I
+    {0x00, 0x04, 0x02, 0x82, 0xfc, 0x80}, //J
+    {0x00, 0xfe, 0x10, 0x28, 0x44, 0x82}, //K
+    {0x00, 0xfe, 0x02, 0x02, 0x02, 0x02}, //L
+    {0x00, 0xfe, 0x40, 0x30, 0x40, 0xfe}, //M
+    {0x00, 0xfe, 0x20, 0x10, 0x08, 0xfe}, //N
+    {0x00, 0x7c, 0x82, 0x82, 0x82, 0x7c}, //O
+    {0x00, 0xfe, 0x90, 0x90, 0x90, 0x60}, //P
+    {0x00, 0x7c, 0x82, 0x8a, 0x84, 0x7a}, //Q
+    {0x00, 0xfe, 0x90, 0x98, 0x94, 0x62}, //R
+    {0x00, 0x62, 0x92, 0x92, 0x92, 0x8c}, //S
+    {0x00, 0x80, 0x80, 0xfe, 0x80, 0x80}, //T
+    {0x00, 0xfc, 0x02, 0x02, 0x02, 0xfc}, //U
+    {0x00, 0xf8, 0x04, 0x02, 0x04, 0xf8}, //V
+    {0x00, 0xfc, 0x02, 0x0c, 0x02, 0xfc}, //W
+    {0x00, 0xc6, 0x28, 0x10, 0x28, 0xc6}, //X
+    {0x00, 0xe0, 0x10, 0x0e, 0x10, 0xe0}, //Y
+    {0x00, 0x86, 0x8a, 0x92, 0xa2, 0xc2}, //Z
+    {0x00, 0x00, 0xfe, 0x82, 0x82, 0x00}, //[
+    {0x00, 0x40, 0x20, 0x10, 0x08, 0x04}, //backslash
+    {0x00, 0x00, 0x82, 0x82, 0xfe, 0x00}, //]
+    {0x00, 0x20, 0x40, 0x80, 0x40, 0x20}, //^
+    {0x00, 0x02, 0x02, 0x02, 0x02, 0x02}, //_
+    {0x00, 0x00, 0x80, 0x40, 0x20, 0x00}, //`
+    {0x00, 0x04, 0x2a, 0x2a, 0x2a, 0x1e}, //a
+    {0x00, 0xfe, 0x0a, 0x12, 0x12, 0x0c}, //b
+    {0x00, 0x1c, 0x22, 0x22, 0x22, 0x04}, //c
+    {0x00, 0x1c, 0x22, 0x22, 0x12, 0xfe}, //d
+    {0x00, 0x1c, 0x2a, 0x2a, 0x2a, 0x18}, //e
+    {0x00, 0x10, 0x7e, 0x90, 0x80, 0x40}, //f
+    {0x00, 0x30, 0x4a, 0x4a, 0x4a, 0x7c}, //g
+    {0x00, 0xfe, 0x10, 0x20, 0x20, 0x1e}, //h
+    {0x00, 0x00, 0x22, 0xbe, 0x02, 0x00}, //i
+    {0x00, 0x04, 0x02, 0x22, 0xbc, 0x00}, //j
+    {0x00, 0xfe, 0x08, 0x14, 0x22, 0x00}, //k
+    {0x00, 0x00, 0x82, 0xfe, 0x02, 0x00}, //l
+    {0x00, 0x1e, 0x20, 0x1a, 0x22, 0x1e}, //m
+    {0x00, 0x3e, 0x10, 0x20, 0x20, 0x1e}, //n
+    {0x00, 0x1c, 0x22, 0x22, 0x22, 0x1c}, //o
+    {0x00, 0x3e, 0x28, 0x28, 0x28, 0x10}, //p
+    {0x00, 0x10, 0x28, 0x28, 0x18, 0x3e}, //q
+    {0x00, 0x3e, 0x10, 0x20, 0x20, 0x10}, //r
+    {0x00, 0x12, 0x2a, 0x2a, 0x2a, 0x04}, //s
+    {0x00, 0x20, 0xfc, 0x22, 0x02, 0x04}, //t
+    {0x00, 0x3c, 0x02, 0x02, 0x04, 0x3e}, //u
+    {0x00, 0x38, 0x04, 0x02, 0x04, 0x38}, //v
+    {0x00, 0x3c, 0x02, 0x0c, 0x02, 0x3c}, //w
+    {0x00, 0x22, 0x14, 0x08, 0x14, 0x22}, //x
+    {0x00, 0x30, 0x0a, 0x0a, 0x0a, 0x3c}, //y
+    {0x00, 0x22, 0x26, 0x2a, 0x32, 0x22}, //z
+    {0x00, 0x00, 0x10, 0x6c, 0x82, 0x00}, //{
+    {0x00, 0x00, 0x00, 0xfe, 0x00, 0x00}, //|
+    {0x00, 0x00, 0x82, 0x6c, 0x10, 0x00}, //}
+    {0x00, 0x30, 0x40, 0x30, 0x08, 0x30}  //~
 };
 
 
-static uint8_t display_buff[256];
+/*******************************************************************************
+* 16*16 character bit map for Aerial bold fonts
+* These font data taken from the rinkydinkelectronic.com 
+* All fonts are considered Public Domain. This means that 
+* you are free to use them as you see fit in any project, 
+* commercial or not.
+* Important note: Commercial projects will still need a 
+* commercial license for any libraries used
+*********************************************************************************/
+
+static const uint8_t Aerial_bold_font_16x16[95][32] = {
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // SPACE
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x3F,0x3F,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0xEC,0xEC,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // !
+
+    {0x0,0x0,0x0,0x0,0x0,0x3C,0x3C,0x0,
+    0x0,0x3C,0x3C,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //"
+
+    {0x0,0x0,0x6,0x6,0x6,0xF,0x3F,0x36,
+    0xF,0x3F,0x36,0x6,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x60,0x6C,0xFC,0xF0,0x6C,0xFC,
+    0xF0,0x60,0x60,0x60,0x0,0x0,0x0,0x0},// #
+
+    {0x0,0x0,0x0,0x0,0xE,0x1F,0x33,0x7F,
+    0x31,0x18,0x8,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x30,0x38,0x8C,0xFE,
+    0xCC,0xF8,0x70,0x0,0x0,0x0,0x0,0x0}, //$
+
+    {0x0,0x1E,0x3F,0x21,0x21,0x3F,0x1E,0x0,
+    0x3,0x7,0x1C,0x38,0x20,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x4,0xC,0x38,0xF0,
+    0xC0,0x0,0x78,0xFC,0x84,0x84,0xFC,0x78},//%
+
+    {0x0,0x0,0x0,0x0,0x1C,0x3F,0x33,0x33,
+    0x33,0x3E,0x1C,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x70,0xF8,0x8C,0xC,0xCC,
+    0xEC,0x78,0x38,0xF8,0x5C,0x8,0x0,0x0},//&
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3C,
+    0x3C,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},//'
+
+    {0x0,0x0,0x0,0x0,0x0,0xF,0x3F,0x70,
+    0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0xE0,0xF8,0x1C,
+    0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0},//(
+
+    {0x0,0x0,0x0,0x0,0x0,0x40,0x70,0x3F,
+    0xF,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x4,0x1C,0xF8,
+    0xE0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //}  
+
+    {0x0,0x0,0x3,0x3,0x1,0x1,0xF,0xF,
+    0xF,0x1,0x1,0x3,0x3,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x10,0x30,0xF8,0xE0,0xC0,
+    0xE0,0xF8,0x30,0x10,0x0,0x0,0x0,0x0},//*
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x7,0x7,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0xC0,0xC0,0xC0,
+    0xF8,0xF8,0xC0,0xC0,0xC0,0x0,0x0,0x0},//+
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x32,0x3C,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //,
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0xC0,0xC0,
+    0xC0,0xC0,0xC0,0x0,0x0,0x0,0x0,0x0},// -
+ 
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x18,0x18,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // .
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0xF,0x3F,0x30,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0xC,0xFC,
+    0xF0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // /
+
+    {0x0,0x0,0x0,0x0,0xF,0x1F,0x38,0x30,
+    0x30,0x38,0x1F,0xF,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0xF0,0xF8,0x1C,0xC,
+    0xC,0x1C,0xF8,0xF0,0x0,0x0,0x0,0x0}, // 0
+
+    {0x0,0x0,0x0,0x0,0x6,0xC,0x18,0x3F,
+    0x3F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xFC,
+    0xFC,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // 1
+
+    {0x0,0x0,0x0,0x0,0xC,0x1C,0x38,0x30,
+    0x30,0x31,0x1F,0xE,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0xC,0x1C,0x3C,0x6C,
+    0xEC,0xCC,0x8C,0xC,0x0,0x0,0x0,0x0},// 2
+
+    {0x0,0x0,0x0,0x0,0x8,0x18,0x38,0x33,
+    0x33,0x33,0x3F,0x1C,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x30,0x38,0x1C,0xC,
+    0xC,0x9C,0xF8,0xF0,0x0,0x0,0x0,0x0}, // 3
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x7,
+    0x1C,0x3F,0x3F,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x70,0xF0,0xB0,0x30,
+    0x30,0xFC,0xFC,0x30,0x0,0x0,0x0,0x0},//4
+
+    {0x0,0x0,0x0,0x0,0x7,0x3F,0x3B,0x33,
+    0x33,0x33,0x31,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0xB0,0xB8,0x1C,0xC,
+    0xC,0x9C,0xF8,0xF0,0x0,0x0,0x0,0x0}, //5
+
+    {0x0,0x0,0x0,0x0,0x7,0x1F,0x39,0x33,
+    0x33,0x33,0x39,0x18,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0xE0,0xF8,0x9C,0xC,
+    0xC,0x8C,0xF8,0xF0,0x0,0x0,0x0,0x0}, //6
+
+    {0x0,0x0,0x0,0x0,0x30,0x30,0x30,0x31,
+    0x37,0x3E,0x38,0x30,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x3C,0xFC,
+    0xE0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // 7
+
+    {0x0,0x0,0x0,0x0,0xE,0x1F,0x31,0x31,
+    0x31,0x31,0x1F,0xE,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x70,0xF8,0x8C,0x8C,
+    0x8C,0x8C,0xF8,0x70,0x0,0x0,0x0,0x0}, //8 
+
+    {0x0,0x0,0x0,0x0,0xF,0x1F,0x31,0x30,
+    0x30,0x39,0x1F,0x7,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x18,0x9C,0xCC,0xCC,
+    0xCC,0x9C,0xF8,0xE0,0x0,0x0,0x0,0x0}, //9
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18,
+    0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,
+    0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0},  // :
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18,
+    0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x32,
+    0x3C,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // ;
+
+    {0x0,0x0,0x0,0x0,0x1,0x1,0x3,0x3,
+    0x6,0x6,0xC,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x80,0xC0,0xC0,0x60,0x60,
+    0x30,0x30,0x18,0x0,0x0,0x0,0x0,0x0}, // <
+
+    {0x0,0x0,0x0,0xC,0xC,0xC,0xC,0xC,
+    0xC,0xC,0xC,0xC,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0xC0,0xC0,0xC0,0xC0,0xC0,
+    0xC0,0xC0,0xC0,0xC0,0x0,0x0,0x0,0x0}, // =
+
+    {0x0,0x0,0x0,0x0,0xC,0x6,0x6,0x3,
+    0x3,0x1,0x1,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x18,0x30,0x30,0x60,
+    0x60,0xC0,0xC0,0x80,0x0,0x0,0x0,0x0}, // >
+
+    {0x0,0x0,0x0,0x0,0xC,0x1C,0x38,0x30,
+    0x31,0x33,0x1F,0xE,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xEC,
+    0xEC,0x80,0x0,0x0,0x0,0x0,0x0,0x0}, // ?
+
+    {0x0,0x0,0x7,0x18,0x27,0x6F,0x58,0x58,
+    0x4F,0x5F,0x38,0x30,0x1F,0x0,0x0,0x0,
+    0x0,0x0,0xC0,0x20,0x90,0xC8,0xC8,0x88,
+    0xC8,0xC8,0x48,0x90,0x20,0x0,0x0,0x0}, //@
+
+    {0x0,0x0,0x0,0x0,0x1,0xF,0x3E,0x30,
+    0x3E,0xF,0x1,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x4,0x3C,0xF8,0xE0,0x60,0x60,
+    0x60,0xE0,0xF8,0x3C,0x4,0x0,0x0,0x0}, // A
+
+    {0x0,0x0,0x0,0x3F,0x3F,0x31,0x31,0x31,
+    0x31,0x31,0x3F,0x1E,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0xFC,0xFC,0x8C,0x8C,0x8C,
+    0x8C,0x8C,0x8C,0xF8,0x70,0x0,0x0,0x0}, // B
+
+    {0x0,0x0,0x0,0x7,0x1F,0x1C,0x30,0x30,
+    0x30,0x30,0x38,0x1C,0x8,0x0,0x0,0x0,
+    0x0,0x0,0x0,0xE0,0xF8,0x38,0xC,0xC,
+    0xC,0xC,0x1C,0x38,0x10,0x0,0x0,0x0}, // C
+
+    {0x0,0x0,0x0,0x3F,0x3F,0x30,0x30,0x30,
+    0x30,0x30,0x18,0x1F,0x7,0x0,0x0,0x0,
+    0x0,0x0,0x0,0xFC,0xFC,0xC,0xC,0xC,
+    0xC,0xC,0x18,0xF8,0xE0,0x0,0x0,0x0}, // D 
+
+    {0x0,0x0,0x0,0x0,0x3F,0x3F,0x31,0x31,
+    0x31,0x31,0x31,0x31,0x31,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0xFC,0xFC,0x8C,0x8C,
+    0x8C,0x8C,0x8C,0x8C,0x8C,0x0,0x0,0x0}, // E
+
+    {0x0,0x0,0x0,0x0,0x3F,0x3F,0x31,0x31,
+    0x31,0x31,0x31,0x30,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0xFC,0xFC,0x80,0x80,
+    0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0}, // F
+
+    {0x0,0x0,0x7,0x1F,0x1C,0x30,0x30,0x30,
+    0x30,0x30,0x38,0x1C,0x8,0x0,0x0,0x0,
+    0x0,0x0,0xE0,0xF8,0x38,0xC,0xC,0xC,
+    0xCC,0xCC,0xDC,0xF8,0xF8,0x0,0x0,0x0}, //G
+
+    {0x0,0x0,0x0,0x3F,0x3F,0x1,0x1,0x1,
+    0x1,0x1,0x1,0x3F,0x3F,0x0,0x0,0x0,
+    0x0,0x0,0x0,0xFC,0xFC,0x80,0x80,0x80,
+    0x80,0x80,0x80,0xFC,0xFC,0x0,0x0,0x0}, //H
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3F,
+    0x3F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xFC,
+    0xFC,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // I
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x3F,0x3F,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x30,0x38,0x1C,0xC,
+    0xC,0x1C,0xF8,0xF0,0x0,0x0,0x0,0x0}, // J
+
+    {0x0,0x0,0x0,0x3F,0x3F,0x0,0x1,0x3,
+    0x7,0xD,0x18,0x30,0x20,0x0,0x0,0x0,
+    0x0,0x0,0x0,0xFC,0xFC,0xC0,0x80,0x0,
+    0x80,0xE0,0x70,0x3C,0xC,0x0,0x0,0x0}, //K
+ 
+    {0x0,0x0,0x0,0x0,0x3F,0x3F,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0xFC,0xFC,0xC,0xC,
+    0xC,0xC,0xC,0xC,0x0,0x0,0x0,0x0},    // L
+
+    {0x0,0x0,0x3F,0x3F,0x3C,0xF,0x1,0x0,
+    0x1,0xF,0x3C,0x3F,0x3F,0x0,0x0,0x0,
+    0x0,0x0,0xFC,0xFC,0x0,0xC0,0xF8,0x3C,
+    0xF8,0xC0,0x0,0xFC,0xFC,0x0,0x0,0x0},  // M
+
+    {0x0,0x0,0x0,0x3F,0x3F,0x1C,0xE,0x3,
+    0x1,0x0,0x0,0x3F,0x3F,0x0,0x0,0x0,
+    0x0,0x0,0x0,0xFC,0xFC,0x0,0x0,0x80,
+    0xC0,0x70,0x38,0xFC,0xFC,0x0,0x0,0x0},  // N
+
+    {0x0,0x0,0x7,0x1F,0x18,0x30,0x30,0x30,
+    0x30,0x30,0x18,0x1F,0x7,0x0,0x0,0x0,
+    0x0,0x0,0xE0,0xF8,0x18,0xC,0xC,0xC,
+    0xC,0xC,0x18,0xF8,0xE0,0x0,0x0,0x0},  // O 
+
+    {0x0,0x0,0x0,0x0,0x3F,0x3F,0x31,0x31,
+    0x31,0x31,0x3B,0x1F,0xE,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0xFC,0xFC,0x80,0x80,
+    0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0}, // P
+
+    {0x0,0x0,0x7,0x1F,0x18,0x30,0x30,0x30,
+    0x30,0x30,0x18,0x1F,0x7,0x0,0x0,0x0,
+    0x0,0x0,0xE0,0xF8,0x18,0xC,0xC,0x2C,
+    0x3C,0x18,0x3C,0xFE,0xE2,0x0,0x0,0x0},// Q
+
+    {0x0,0x0,0x0,0x3F,0x3F,0x31,0x31,0x31,
+    0x31,0x31,0x3B,0x1F,0xE,0x0,0x0,0x0,
+    0x0,0x0,0x0,0xFC,0xFC,0x80,0x80,0x80,
+    0xC0,0xE0,0x78,0x3C,0xC,0x4,0x0,0x0}, // R
+
+    {0x0,0x0,0x0,0x0,0xE,0x1F,0x3B,0x33,
+    0x31,0x31,0x39,0x1C,0xC,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x30,0x38,0x1C,0x8C,
+    0x8C,0x8C,0xDC,0xF8,0x70,0x0,0x0,0x0}, //S
+
+    {0x0,0x0,0x0,0x30,0x30,0x30,0x30,0x3F,
+    0x3F,0x30,0x30,0x30,0x30,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xFC,
+    0xFC,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //T 
+
+    {0x0,0x0,0x0,0x3F,0x3F,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x3F,0x3F,0x0,0x0,0x0,
+    0x0,0x0,0x0,0xF0,0xF8,0x1C,0xC,0xC,
+    0xC,0xC,0x1C,0xF8,0xF0,0x0,0x0,0x0}, //U
+
+    {0x0,0x0,0x20,0x3C,0x1F,0x3,0x0,0x0,
+    0x0,0x3,0x1F,0x3C,0x20,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x80,0xE0,0xFC,0x1C,
+    0xFC,0xE0,0x80,0x0,0x0,0x0,0x0,0x0},//V 
+
+    {0x0,0x0,0x38,0x3F,0x7,0x0,0x7,0x3F,
+    0x38,0x3F,0x7,0x0,0x7,0x3F,0x38,0x0,
+    0x0,0x0,0x0,0xC0,0xFC,0x3C,0xFC,0xC0,
+    0x0,0xC0,0xFC,0x3C,0xFC,0xC0,0x0,0x0}, // W
+
+    {0x0,0x0,0x0,0x30,0x38,0x1E,0x7,0x3,
+    0x7,0x1E,0x38,0x30,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0xC,0x1C,0x78,0xE0,0xC0,
+    0xE0,0x78,0x1C,0xC,0x0,0x0,0x0,0x0}, // X
+
+    {0x0,0x0,0x0,0x30,0x38,0x1E,0x7,0x1,
+    0x1,0x7,0x1E,0x38,0x30,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xFC,
+    0xFC,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // Y 
+
+    {0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x30,
+    0x33,0x37,0x3E,0x38,0x30,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0xC,0x1C,0x7C,0xEC,
+    0xCC,0xC,0xC,0xC,0xC,0x0,0x0,0x0}, // Z
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x7F,0x7F,
+    0x60,0x60,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0xFE,0xFE,
+    0x6,0x6,0x0,0x0,0x0,0x0,0x0,0x0},  // [
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x3F,
+    0xF,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0xF0,0xFC,0xC,0x0,0x0,0x0,0x0,0x0}, // backslash
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x60,0x60,
+    0x7F,0x7F,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x6,
+    0xFE,0xFE,0x0,0x0,0x0,0x0,0x0,0x0}, // ]
+
+    {0x0,0x0,0x0,0x0,0x1,0xF,0x3E,0x70,
+    0x70,0x3E,0xF,0x1,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // ^
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x6,0x6,0x6,0x6,0x6,0x6,0x6,0x6,
+    0x6,0x6,0x6,0x6,0x6,0x6,0x6,0x6}, // _
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,
+    0x30,0x10,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // `
+
+    {0x0,0x0,0x0,0x0,0x6,0xE,0xC,0xD,
+    0xD,0xF,0x7,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x70,0xF8,0xD8,0x98,
+    0x98,0xF0,0xF8,0x8,0x0,0x0,0x0,0x0}, // a
+
+    {0x0,0x0,0x0,0x0,0x7F,0x7F,0x6,0xC,
+    0xC,0xE,0x7,0x3,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0xF8,0xF8,0x30,0x18,
+    0x18,0x38,0xF0,0xE0,0x0,0x0,0x0,0x0}, // b
+
+    {0x0,0x0,0x0,0x0,0x3,0x7,0xE,0xC,
+    0xC,0xE,0x6,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0xE0,0xF0,0x38,0x18,
+    0x18,0x38,0x30,0x0,0x0,0x0,0x0,0x0}, //c
+
+    {0x0,0x0,0x0,0x0,0x3,0x7,0xE,0xC,
+    0xC,0x6,0x7F,0x7F,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0xE0,0xF0,0x38,0x18,
+    0x18,0x30,0xF8,0xF8,0x0,0x0,0x0,0x0}, // d
+
+    {0x0,0x0,0x0,0x0,0x3,0x7,0xD,0xD,
+    0xD,0x7,0x3,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0xE0,0xF0,0xB8,0x98,
+    0x98,0xB0,0xA0,0x0,0x0,0x0,0x0,0x0},  // e
+
+    {0x0,0x0,0x0,0x0,0xC,0x3F,0x7F,0x6C,
+    0x6C,0x60,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0xF8,0xF8,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},   // f
+
+    {0x0,0x0,0x0,0x7,0xF,0x1C,0x18,0x18,
+    0xC,0x1F,0x1F,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0xCC,0xEE,0x76,0x36,0x36,
+    0x66,0xFE,0xFC,0x0,0x0,0x0,0x0,0x0}, // g
+
+    {0x0,0x0,0x0,0x0,0x7F,0x7F,0x6,0xC,
+    0xC,0xC,0xF,0x7,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0xF8,0xF8,0x0,0x0,
+    0x0,0x0,0xF8,0xF8,0x0,0x0,0x0,0x0}, //h
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x37,
+    0x37,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF8,
+    0xF8,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // i
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x37,
+    0x37,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x3,0x3,0xFF,
+    0xFE,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // j
+
+    {0x0,0x0,0x0,0x0,0x7F,0x7F,0x1,0x3,
+    0x7,0xC,0x8,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0xF8,0xF8,0xC0,0x80,
+    0xE0,0xF8,0x18,0x0,0x0,0x0,0x0,0x0}, // k
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7F,
+    0x7F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF8,
+    0xF8,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // l
+
+    {0x0,0x0,0xF,0xF,0x6,0xC,0xC,0xF,
+    0x7,0x6,0xC,0xC,0xF,0x7,0x0,0x0,
+    0x0,0x0,0xF8,0xF8,0x0,0x0,0x0,0xF8,
+    0xF8,0x0,0x0,0x0,0xF8,0xF8,0x0,0x0},// m
+
+    0x0,0x0,0x0,0x0,0xF,0xF,0x6,0xC,
+    0xC,0xC,0xF,0x7,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0xF8,0xF8,0x0,0x0,
+    0x0,0x0,0xF8,0xF8,0x0,0x0,0x0,0x0, // n
+
+    {0x0,0x0,0x0,0x0,0x3,0x7,0xE,0xC,
+    0xC,0xE,0x7,0x3,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0xE0,0xF0,0x38,0x18,
+    0x18,0x38,0xF0,0xE0,0x0,0x0,0x0,0x0}, // o
+
+    {0x0,0x0,0x0,0x0,0xF,0xF,0x6,0xC,
+    0xC,0xE,0x7,0x3,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0xFF,0xFF,0x30,0x18,
+    0x18,0x38,0xF0,0xE0,0x0,0x0,0x0,0x0}, // p
+
+    {0x0,0x0,0x0,0x0,0x3,0x7,0xE,0xC,
+    0xC,0x6,0xF,0xF,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0xE0,0xF0,0x38,0x18,
+    0x18,0x30,0xFF,0xFF,0x0,0x0,0x0,0x0}, //q
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0xF,0xF,
+    0x6,0xC,0xC,0xC,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0xF8,0xF8,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //r
+
+    {0x0,0x0,0x0,0x0,0x7,0xF,0xD,0xD,
+    0xC,0xE,0x6,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x30,0xB8,0x98,0x98,
+    0xD8,0xF8,0x70,0x0,0x0,0x0,0x0,0x0}, // s
+
+    {0x0,0x0,0x0,0x0,0x0,0xC,0x3F,0x7F,
+    0xC,0xC,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0xF0,0xF8,
+    0x18,0x18,0x0,0x0,0x0,0x0,0x0,0x0}, // t
+
+    {0x0,0x0,0x0,0x0,0xF,0xF,0x0,0x0,
+    0x0,0x0,0xF,0xF,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0xF0,0xF8,0x18,0x18,
+    0x18,0x30,0xF8,0xF8,0x0,0x0,0x0,0x0}, // u
+
+    {0x0,0x0,0x0,0x0,0x0,0xE,0xF,0x1,
+    0x0,0x1,0xF,0xE,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0xC0,0xF8,
+    0x38,0xF8,0xC0,0x0,0x0,0x0,0x0,0x0}, // v
+
+    {0x0,0x0,0xC,0xF,0x3,0x0,0x1,0xF,
+    0xE,0xF,0x1,0x0,0x3,0xF,0xC,0x0,
+    0x0,0x0,0x0,0xC0,0xF8,0x38,0xF8,0xC0,
+    0x0,0xC0,0xF8,0x38,0xF8,0xC0,0x0,0x0}, // w
+
+    {0x0,0x0,0x0,0x0,0x0,0xC,0xE,0x7,
+    0x1,0x7,0xE,0xC,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x18,0x38,0xF0,
+    0xC0,0xF0,0x38,0x18,0x0,0x0,0x0,0x0}, // x
+
+    {0x0,0x0,0x0,0x0,0xC,0xF,0x3,0x0,
+    0x0,0x0,0x3,0xF,0xC,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x3,0xE3,0xFF,
+    0x3E,0xF8,0xE0,0x0,0x0,0x0,0x0,0x0}, // y
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0xC,0xC,
+    0xC,0xD,0xF,0xF,0xC,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x18,0x78,
+    0xF8,0xD8,0x98,0x18,0x18,0x0,0x0,0x0}, //z
+
+    {0x0,0x0,0x0,0x0,0x3,0x3,0x7F,0xFC,
+    0xC0,0xC0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0xFC,0xFE,
+    0x6,0x6,0x0,0x0,0x0,0x0,0x0,0x0}, // {
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xFF,
+    0xFF,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xFF,
+    0xFF,0x0,0x0,0x0,0x0,0x0,0x0,0x0},  // |
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0xC0,0xC0,
+    0xFC,0x7F,0x3,0x3,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x6,
+    0xFE,0xFC,0x0,0x0,0x0,0x0,0x0,0x0}, // }
+
+    {0x0,0x0,0x0,0x0,0x18,0x30,0x30,0x30,
+    0x38,0x18,0x18,0x18,0x30,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // ~
+};
+
+// Manually created 16*16 character bit map 
+static const uint8_t Manual_font_16x16[95][32] = {
+    
+    // Note: Number 0-9, char A-Z and char a-z  bit map data created manually, other 
+    // font bit map data taken from Aerial_bold font
+    
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // SPACE
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x3F,0x3F,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0xEC,0xEC,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // !
+
+    {0x0,0x0,0x0,0x0,0x0,0x3C,0x3C,0x0,
+    0x0,0x3C,0x3C,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //"
+
+    {0x0,0x0,0x6,0x6,0x6,0xF,0x3F,0x36,
+    0xF,0x3F,0x36,0x6,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x60,0x6C,0xFC,0xF0,0x6C,0xFC,
+    0xF0,0x60,0x60,0x60,0x0,0x0,0x0,0x0},// #
+
+    {0x0,0x0,0x0,0x0,0xE,0x1F,0x33,0x7F,
+    0x31,0x18,0x8,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x30,0x38,0x8C,0xFE,
+    0xCC,0xF8,0x70,0x0,0x0,0x0,0x0,0x0}, //$
+
+    {0x0,0x1E,0x3F,0x21,0x21,0x3F,0x1E,0x0,
+    0x3,0x7,0x1C,0x38,0x20,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x4,0xC,0x38,0xF0,
+    0xC0,0x0,0x78,0xFC,0x84,0x84,0xFC,0x78},//%
+
+    {0x0,0x0,0x0,0x0,0x1C,0x3F,0x33,0x33,
+    0x33,0x3E,0x1C,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x70,0xF8,0x8C,0xC,0xCC,
+    0xEC,0x78,0x38,0xF8,0x5C,0x8,0x0,0x0},//&
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3C,
+    0x3C,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},//'
+
+    {0x0,0x0,0x0,0x0,0x0,0xF,0x3F,0x70,
+    0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0xE0,0xF8,0x1C,
+    0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0},//(
+
+    {0x0,0x0,0x0,0x0,0x0,0x40,0x70,0x3F,
+    0xF,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x4,0x1C,0xF8,
+    0xE0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //}  
+
+    {0x0,0x0,0x3,0x3,0x1,0x1,0xF,0xF,
+    0xF,0x1,0x1,0x3,0x3,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x10,0x30,0xF8,0xE0,0xC0,
+    0xE0,0xF8,0x30,0x10,0x0,0x0,0x0,0x0},//*
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x7,0x7,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0xC0,0xC0,0xC0,
+    0xF8,0xF8,0xC0,0xC0,0xC0,0x0,0x0,0x0},//+
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x32,0x3C,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //,
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0xC0,0xC0,
+    0xC0,0xC0,0xC0,0x0,0x0,0x0,0x0,0x0},// -
+ 
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x18,0x18,
+    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // .
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+    0xF,0x3F,0x30,0x0,0x0,0x0,0x0,0x0,
+    0x0,0x0,0x0,0x0,0x0,0x0,0xC,0xFC,
+    0xF0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // /
+    
+    {0x00,0x00,0x3F,0x7F,0x7F,0x60,0x60,0x60, 
+    0x61,0x63,0x66,0x7F,0x7F,0x3F,0x00,0x00, 
+    0x00,0x00,0xFE,0xFF,0xFF,0x33,0x63,0xC3,
+    0x83,0x03,0x03,0xFF,0xFF,0x0FE,0x00,0x00}, // 0
+    
+    {0x00,0x00,0x00,0x00,0x08,0x18,0x3F,0x7F, 
+    0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,  
+    0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,
+    0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00 }, //  1
+    
+    {0x00,0x00,0x30,0x70,0x60,0x60,0x60,0x60, 
+    0x61,0x63,0x66,0x7C,0x38,0x30,0x00,0x00,  
+    0x00,0x00,0x06,0x0E,0x1E,0x36,0x66,0xC6,
+    0x86,0x06,0x06,0x06,0x06,0x06,0x00,0x00 }, // 2  
+
+    {0x00,0x00,0x30,0x70,0x60,0x60,0x60,0x60, 
+    0x61,0x63,0x66,0x7E,0x7C,0x38,0x00,0x00,  
+    0x00,0x00,0x0C,0x0E,0x06,0x06,0x06,0x06,
+    0x86,0xC6,0x66,0x7E,0x3E,0x1C,0x00,0x00 }, // 3
+ 
+    {0x00,0x00,0x00,0x01,0x03,0x06,0xC,0x18, 
+    0x30,0x7F,0xFF,0xFF,0x00,0x00,0x00,0x00,  
+    0x00,0x00,0xE0,0xE0,0x60,0x60,0x60,0x60,
+    0x60,0xFE,0xFE,0xFE,0x60,0x60,0x00,0x00 }, // 4    
+    
+    {0x00,0x00,0x7F,0x7F,0x7F,0x61,0x61,0x61, 
+     0x61,0x61,0x61,0x61,0x61,0x60,0x00,0x00,  
+     0x00,0x00,0x04,0x86,0x86,0x86,0x86,0x86,
+     0x86,0x86,0x86,0xFE,0xFE,0xFC,0x00,0x00 }, // 5
+   
+    {0x00,0x00,0x3F,0x7F,0x7F,0x61,0x61,0x61, 
+     0x61,0x61,0x61,0x61,0x61,0x20,0x00,0x00,  
+     0x00,0x00,0xFC,0xFE,0xFE,0x86,0x86,0x86,
+     0x86,0x86,0x86,0xFE,0xFE,0xFC,0x00,0x00 }, // 6
+   
+    {0x00,0x00,0x00,0x30,0x30,0x30,0x30,0x30, 
+     0x30,0x30,0x31,0x3F,0x3E,0x00,0x00,0x00,  
+     0x00,0x00,0x00,0x00,0x06,0x0C,0x18,0x30,
+     0x60,0xC0,0x80,0x00,0x00,0x00,0x00,0x00 }, // 7
+ 
+    {0x00,0x00,0x3F,0x7F,0x7F,0x60,0x60,0x60, 
+     0x60,0x60,0x60,0x7F,0x7F,0x3F,0x00,0x00, 
+     0x00,0x00,0x3E,0xFF,0xFF,0xC3,0xC3,0xC3,
+     0xC3,0xC3,0xC3,0xFF,0xFF,0x03E,0x00,0x00}, // 8
+
+    {0x00,0x00,0x3F,0x7F,0x7F,0x60,0x60,0x60, 
+     0x60,0x60,0x60,0x7F,0x7F,0x3F,0x00,0x00, 
+     0x00,0x00,0x86,0xC7,0xC3,0xC3,0xC3,0xC3,
+     0xC3,0xC3,0xC3,0xFF,0xFF,0x0FE,0x00,0x00}, // 9 
+      
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18,
+     0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,
+     0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0},  // :
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18,
+     0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x32,
+     0x3C,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // ;
+
+    {0x0,0x0,0x0,0x0,0x1,0x1,0x3,0x3,
+     0x6,0x6,0xC,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x80,0xC0,0xC0,0x60,0x60,
+     0x30,0x30,0x18,0x0,0x0,0x0,0x0,0x0}, // <
+
+    {0x0,0x0,0x0,0xC,0xC,0xC,0xC,0xC,
+     0xC,0xC,0xC,0xC,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0xC0,0xC0,0xC0,0xC0,0xC0,
+     0xC0,0xC0,0xC0,0xC0,0x0,0x0,0x0,0x0}, // =
+
+    {0x0,0x0,0x0,0x0,0xC,0x6,0x6,0x3,
+     0x3,0x1,0x1,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x18,0x30,0x30,0x60,
+     0x60,0xC0,0xC0,0x80,0x0,0x0,0x0,0x0}, // >
+
+    {0x0,0x0,0x0,0x0,0xC,0x1C,0x38,0x30,
+     0x31,0x33,0x1F,0xE,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xEC,
+     0xEC,0x80,0x0,0x0,0x0,0x0,0x0,0x0}, // ?
+
+    {0x0,0x0,0x7,0x18,0x27,0x6F,0x58,0x58,
+     0x4F,0x5F,0x38,0x30,0x1F,0x0,0x0,0x0,
+     0x0,0x0,0xC0,0x20,0x90,0xC8,0xC8,0x88,
+     0xC8,0xC8,0x48,0x90,0x20,0x0,0x0,0x0}, //@
+                                                   
+    {0x00,0x00,0x3F,0x7F,0x7F,0x60,0x60,0x60, 
+     0x60,0x60,0x60,0x7F,0x7F,0x3F,0x00,0x00, 
+     0x00,0x00,0xFF,0xFF,0xFF,0x60,0x60,0x60,  
+     0x60,0x60,0x60,0xFF,0xFF,0xFF,0x00,0x00 }, // A 
+  
+    {0x00,0x00,0x7F,0x7F,0x7F,0x60,0x60,0x60, 
+     0x60,0x60,0x60,0x7F,0x07F,0x3E,0x00,0x00, 
+     0x00,0x00,0xFF,0xFF,0xFF,0xC3,0xC3,0xC3,
+     0xC3,0xC3,0xC3,0xFF,0xFF,0x3E,0x00,0x00}, // B    
+ 
+    {0x00,0x00,0x3F,0x7F,0x7F,0x60,0x60,0x60, 
+     0x60,0x60,0x60,0x70,0x30,0x00,0x00,0x00, 
+     0x00,0x00,0xFE,0xFF,0xFF,0x03,0x03,0x03,
+     0x03,0x03,0x03,0x07,0x06,0x00,0x00,0x00}, // C
+
+    {0x00,0x00,0x7F,0x7F,0x7F,0x60,0x60,0x60, 
+     0x60,0x60,0x60,0x70,0x3F,0x1F,0x00,0x00, 
+     0x00,0x00,0xFF,0xFF,0xFF,0x03,0x03,0x03,
+     0x03,0x03,0x03,0x07,0xFE,0x0FC,0x00,0x00}, // D
+
+    {0x00,0x00,0x07F,0x7F,0x7F,0x60,0x60,0x60, 
+     0x60,0x60,0x60,0x60,0x60,0x060,0x00,0x00, 
+     0x00,0x00,0xFF,0xFF,0xFF,0xC3,0xC3,0xC3,
+     0xC3,0xC3,0xC3,0xC3,0x03,0x03,0x00,0x00}, // E
+       
+    {0x00,0x00,0x7F,0x7F,0x7F,0x60,0x60,0x60,  
+     0x60,0x60,0x60,0x60,0x60,0x060,0x00,0x00, 
+     0x00,0x00,0xFF,0xFF,0xFF,0xC0,0xC0,0xC0,
+     0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0x00}, // F 
+
+    {0x00,0x00,0x3F,0x7F,0x7F,0x60,0x60,0x60,  
+     0x60,0x60,0x60,0x78,0x38,0x18,0x00,0x00, 
+     0x00,0x00,0xFE,0xFF,0xFF,0x03,0x03,0x03,
+     0x03,0x23,0x33,0x3F,0x3F,0x3F,0x00,0x00}, // G
+   
+    {0x00,0x00,0x7F,0x7F,0x7F,0x00,0x00,0x00,  
+     0x00,0x00,0x00,0x7F,0x7F,0x7F,0x00,0x00, 
+     0x00,0x00,0xFF,0xFF,0xFF,0xC0,0xC0,0xC0,
+     0xC0,0xC0,0xC0,0xFF,0xFF,0xFF,0x00,0x00 }, // H
+
+    {0x00,0x00,0x00,0x00,0x60,0x60,0x7F,0x7F, 
+     0x7F,0x7F,0x60,0x60,0x00,0x00,0x00,0x00,  
+     0x00,0x00,0x00,0x00,0x03,0x03,0xFF,0xFF,
+     0xFF,0xFF,0x03,0x03,0x00,0x00,0x00,0x00 }, // I
+
+    {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
+     0x00,0x00,0x00,0x7F,0x7F,0x7F,0x00,0x00, 
+     0x00,0x00,0x00,0x01E,0x1F,0x1F,0x03,0x03,
+     0x03,0x03,0x03,0xFF,0xFF,0xFE,0x00,0x00 }, // J
+
+    {0x00,0x00,0x7F,0x7F,0x7F,0x03,0x03,0x06,  
+     0x0C,0x18,0x30,0x60,0x60,0x00,0x00,0x00,  
+     0x00,0x00,0xFE,0xFE,0xFE,0xC0,0xC0,0x60,
+     0x30,0x18,0x0C,0x06,0x06,0x00,0x00,0x00 }, // K
+
+    {0x00,0x00,0x7F,0x7F,0x7F,0x00,0x00,0x00, 
+     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  
+     0x00,0x00,0xFF,0xFF,0xFF,0x03,0x03,0x03,
+     0x03,0x03,0x03,0x03,0x03,0x00,0x00,0x00 }, // L
+
+    {0x00,0x00,0x7F,0x7F,0x7F,0x1C,0x0E,0x07, 
+     0x07,0x0E,0x1C,0x7F,0x7F,0x7F,0x00,0x00, 
+     0x00,0x00,0xFC,0xFC,0xFC,0x00,0x00,0x80,
+     0x80,0x00,0x00,0xFC,0xFC,0xFC,0x00,0x00 }, // M
+   
+    {0x00,0x00,0x7F,0x7F,0x7F,0x38,0x1C,0x07, 
+     0x03,0x00,0x00,0x7F,0x7F,0x7F,0x00,0x00, 
+     0x00,0x00,0xFC,0xFC,0xFC,0x00,0x00,0x00,
+     0x80,0xE0,0x70,0xFC,0xFC,0xFC,0x00,0x00 }, // N
+
+    {0x00,0x00,0x3F,0x7F,0x7F,0x60,0x60,0x60, 
+     0x60,0x60,0x60,0x7F,0x7F,0x3F,0x00,0x00, 
+     0x00,0x00,0xFE,0xFF,0xFF,0x03,0x03,0x03,
+     0x03,0x03,0x03,0xFF,0xFF,0x0FE,0x00,0x00}, // O
+   
+    {0x00,0x00,0x07F,0x7F,0x7F,0x60,0x60,0x60, 
+     0x60,0x60,0x60,0x7F,0x7F,0x03F,0x00,0x00,  
+     0x00,0x00,0xFF,0xFF,0xFF,0xC0,0xC0,0xC0,
+     0xC0,0xC0,0xC0,0xC0,0xC0,0x80,0x00,0x00}, // P
+  
+    {0x00,0x00,0x3F,0x7F,0x60,0x60,0x60,0x60, 
+     0x60,0x60,0x60,0x60,0x7F,0x3F,0x00,0x00, 
+     0x00,0x00,0xF8,0xFC,0x0C,0x0C,0x0C,0x0C,
+     0x0C,0x0C,0x3C,0x3C,0xFE,0xFF,0x03,0x00}, // Q
+
+    {0x00,0x00,0x07F,0x7F,0x7F,0x61,0x61,0x61, 
+     0x61,0x61,0x61,0x7F,0x7F,0x03F,0x00,0x00, 
+     0x00,0x00,0xFF,0xFF,0xFF,0xC0,0xE0,0xF0,
+     0xB8,0x9C,0x8E,0x87,0x83,0x03,0x00,0x00}, // R
+ 
+    {0x00,0x00,0x1E,0x3F,0x73,0x61,0x61,0x61, 
+     0x61,0x61,0x61,0x70,0x30,0x00,0x00,0x00, 
+     0x00,0x00,0x0C,0x0C,0x86,0x86,0x86,0x86,
+     0x86,0x86,0xC6,0xFC,0x78,0x00,0x00,0x00}, // S  
+    
+    {0x00,0x00,0x10,0x30,0x30,0x30,0x30,0x3F, 
+     0x3F,0x30,0x30,0x30,0x30,0x10,0x00,0x00, 
+     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
+     0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, // T
+  
+    {0x00,0x00,0x7F,0x7F,0x7F,0x00,0x00,0x00, 
+     0x00,0x00,0x00,0x7F,0x7F,0x7F,0x00,0x00,  
+     0x00,0x00,0xFC,0xFE,0xFE,0x06,0x06,0x06,
+     0x06,0x06,0x06,0xFE,0xFE,0xFC,0x00,0x00 }, // U
+  
+    {0x60,0x70,0x1C,0x0F,0x03,0x00,0x00,  
+     0x00,0x00,0x00,0x00,0x03,0x0F,0x1C,0x70,0x60,  
+     0x00,0x00,0x00,0x00,0xC0,0xF0,0x3C,0x06,
+     0x06,0x3C,0xF0,0xC0,0x00,0x00,0x00,0x00 }, // V  
+  
+    {0x00,0x00,0x7F,0x7F,0x7F,0x00,0x00,0x00, 
+     0x00,0x00,0x00,0x7F,0x7F,0x7F,0x00,0x00,  
+     0x00,0x00,0xFC,0xFE,0xFE,0x1C,0x38,0x70,
+     0x70,0x38,0x1C,0xFE,0xFE,0xFC,0x00,0x00 }, // W
+   
+    {0x00,0x00,0x60,0x70,0x78,0x0E,0x07,0x03, 
+     0x03,0x07,0x0E,0x78,0x70,0x60,0x00,0x00,  
+     0x00,0x00,0x06,0x0E,0x1E,0x70,0xE0,0xC0,
+     0xC0,0xE0,0x70,0x1E,0x0E,0x06,0x00,0x00 }, // X
+    
+    {0x00,0x00,0x20,0x30,0x18,0x0C,0x06,0x03, 
+     0x03,0x06,0x0C,0x18,0x30,0x20,0x00,0x00,  
+     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,
+     0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, // Y 
+
+    {0x00,0x00,0x70,0x70,0x60,0x60,0x60,0x61, 
+     0x63,0x67,0x6E,0x78,0x70,0x60,0x00,0x00,  
+     0x00,0x00,0x06,0x0E,0x3E,0x76,0xE6,0xC6,
+     0x86,0x06,0x06,0x06,0x0E,0x0E,0x00,0x00 }, // Z 
+    
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x7F,0x7F,
+     0x60,0x60,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0xFE,0xFE,
+     0x6,0x6,0x0,0x0,0x0,0x0,0x0,0x0},  // [
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x3F,
+     0xF,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+     0xF0,0xFC,0xC,0x0,0x0,0x0,0x0,0x0}, // backslash
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x60,0x60,
+     0x7F,0x7F,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x6,
+     0xFE,0xFE,0x0,0x0,0x0,0x0,0x0,0x0}, // ]
+
+    {0x0,0x0,0x0,0x0,0x1,0xF,0x3E,0x70,
+     0x70,0x3E,0xF,0x1,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // ^
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x6,0x6,0x6,0x6,0x6,0x6,0x6,0x6,
+     0x6,0x6,0x6,0x6,0x6,0x6,0x6,0x6}, // _
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,
+     0x30,0x10,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // `
+
+    {0x0,0x0,0x0,0x04,0x09,0x19,0x19,0x19,
+     0x0F,0x07,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0xE0,0xB0,0x30,0x30,0x20,
+     0xF0,0xF0,0x10,0x0,0x0,0x0,0x0,0x0}, // a
+
+    {0x0,0x0,0xFF,0xFF,0xFC,0x8,0x18,0x18,
+     0x1C,0xF,0x3,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0xF0,0xF0,0x60,0x30,0x30,0x30,
+     0x60,0xE0,0x80,0x0,0x0,0x0,0x0,0x0}, // b
+
+    {0x0,0x0,0x07,0x0F,0x0C,0x18,0x18,0x18,
+     0xC,0x4,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0xC0,0xE0,0x60,0x30,0x30,0x30,
+     0x60,0x40,0x0,0x0,0x0,0x0,0x0,0x0}, // c
+
+    {0x0,0x0,0x03,0x07,0x0C,0x18,0x18,0x18,
+     0xFF,0xFF,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0xC0,0xE0,0x60,0x30,0x30,0x30,
+     0xF8,0xF8,0x0,0x0,0x0,0x0,0x0,0x0}, // d
+
+    {0x0,0x0,0x03,0x0F,0x0D,0x19,0x19,0x19,
+     0x19,0x0F,0x06,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0xC0,0xE0,0x30,0x30,0x10,0x30,
+     0x30,0x60,0x40,0x0,0x0,0x0,0x0,0x0}, // e
+
+    {0x0,0x0,0x0,0x0,0x00,0x03,0x03,0x3F,
+     0x7F,0x43,0x03,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x00,0xFE,
+     0xFE,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // f
+
+    {0x0,0x0,0x01,0x07,0x0E,0x08,0x08,0x0C,
+     0x0F,0x1F,0x00,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x84,0xE2,0x62,0x23,0x23,0x63,
+     0xFE,0xFC,0x0,0x0,0x0,0x0,0x0,0x0}, // g
+
+    {0x0,0x0,0x00,0x3F,0x3F,0x03,0x02,0x03,
+     0x03,0x01,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0xFC,0xFC,0x0,0x0,0x0,
+     0xFC,0xFC,0x0,0x0,0x0,0x0,0x0,0x0}, // h
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x06F,
+     0x6F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF0,
+     0xF0,0x00,0x0,0x0,0x0,0x0,0x0,0x0}, // i
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xDF,
+     0xDF,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x08,0x0C,0xFC,
+     0xF8,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // j
+
+    {0x0,0x0,0xFF,0xFF,0x03,0x03,0x07,0x0C,
+     0x18,0x30,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0xF0,0xF0,0x80,0x0,0x80,0xE0,
+     0x30,0x10,0x0,0x0,0x0,0x0,0x0,0x0}, // k
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3F,
+     0x3F,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xFC,
+     0xFC,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // l
+
+    {0x0,0x0,0x08,0x1F,0x1F,0x18,0x18,0x18,
+     0x1F,0x1F,0x18,0x18,0x18,0x1F,0x0F,0x0,
+     0x0,0x0,0x0,0xF0,0xF0,0x0,0x0,0x0,
+     0xF0,0xF0,0x0,0x0,0x0,0xF0,0xF0,0x0}, // m
+
+    {0x0,0x0,0x1F,0x0F,0x0C,0x18,0x18,0x1C,
+     0x0F,0x07,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0xF0,0xF0,0x0,0x0,0x0,0x0,
+     0xF0,0xF0,0x0,0x0,0x0,0x0,0x0,0x0}, // n
+
+    {0x0,0x0,0x03,0x07,0x0C,0x18,0x18,0x18,
+     0x0C,0x07,0x03,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x80,0xC0,0x60,0x30,0x30,0x30,
+     0x60,0xC0,0x80,0x0,0x0,0x0,0x0,0x0}, // o
+
+    {0x0,0x0,0x0,0x1F,0x1F,0x0C,0x08,0x08,
+     0x0C,0x07,0x03,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0xFE,0xFE,0x30,0x10,0x10,
+     0x30,0xE0,0xC0,0x0,0x0,0x0,0x0,0x0}, // p
+
+    {0x0,0x0,0x01,0x07,0x0C,0x08,0x08,0x0C,
+     0x1F,0x1F,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x80,0xE0,0x30,0x10,0x10,0x30,
+     0xFE,0xFE,0x0,0x0,0x0,0x0,0x0,0x0}, // q
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1F,
+     0x1F,0x0C,0x08,0x0C,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF0,
+     0xF0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // r
+
+    {0x0,0x0,0x0,0x07,0x0F,0x19,0x19,0x0D,
+     0x04,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x60,0x30,0x18,0x98,0xB0,
+     0xE0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // s
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x03,0x3F,
+     0x3F,0x03,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF8,
+     0xFC,0x0C,0x08,0x0,0x0,0x0,0x0,0x0}, // t
+
+    {0x0,0x0,0x1F,0x1F,0x0,0x0,0x0,0x0,
+     0x1F,0x1F,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0xC0,0xE0,0x70,0x30,0x30,0x60,
+     0xF0,0xF0,0x0,0x0,0x0,0x0,0x0,0x0}, // u
+
+    {0x0,0x0,0x0C,0x0F,0x01,0x0,0x0,0x01,
+     0x0F,0x0C,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x80,0xE0,0x30,0x30,0xE0,
+     0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // v
+
+    {0x0,0x0,0x18,0x1F,0x0,0x0,0x07,0x0E,
+    0x07,0x0,0x0,0x1F,0x18,0x0,0x0,0x0,
+    0x0,0x0,0x0,0xC0,0x60,0x60,0xC0,0x0,
+    0xC0,0x60,0x60,0xC0,0x0,0x0,0x0,0x0}, // w
+
+    {0x0,0x0,0x0,0x0,0x08,0x0C,0x06,0x03,
+     0x03,0x06,0x0C,0x08,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x10,0x30,0x60,0xC0,
+     0xC0,0x60,0x30,0x10,0x0,0x0,0x0,0x0}, // x
+
+    {0x0,0x0,0x08,0x0C,0x06,0x03,0x01,0x01,
+     0x03,0x06,0x0C,0x08,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0C,0x18,0x30,0x60,0xC0,0x80,
+     0x00,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // y
+
+    {0x0,0x0,0x08,0x08,0x08,0x09,0x0B,0x0E,
+     0x0C,0x08,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x30,0x070,0xD0,0x90,0x10,0x10,
+     0x10,0x10,0x0,0x0,0x0,0x0,0x0,0x0}, // z
+
+    {0x0,0x0,0x0,0x0,0x3,0x3,0x7F,0xFC,
+     0xC0,0xC0,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0xFC,0xFE,
+     0x6,0x6,0x0,0x0,0x0,0x0,0x0,0x0}, // {
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xFF,
+     0xFF,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xFF,
+     0xFF,0x0,0x0,0x0,0x0,0x0,0x0,0x0},  // |
+
+    {0x0,0x0,0x0,0x0,0x0,0x0,0xC0,0xC0,
+     0xFC,0x7F,0x3,0x3,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x6,
+     0xFE,0xFC,0x0,0x0,0x0,0x0,0x0,0x0}, // }
+
+    {0x0,0x0,0x0,0x0,0x18,0x30,0x30,0x30,
+     0x38,0x18,0x18,0x18,0x30,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+     0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // ~
+    };
+
+
+
+static uint8_t display_buff[1024];
+static uint8_t display_buff_16x16[32];
+static uint16_t buff_end =0;
+static uint8_t disp_buff1[512];
+static uint8_t disp_buff2[512];
+static uint8_t temp_buff1[512];
+static uint8_t temp_buff2[512];
 static uint8_t temp_buff[256];
 
 static const uint8_t DISPLAY_BUFF_START = 0;
 static const uint8_t DISPLAY_BUFF_END = 31;
-
-static uint8_t buff_end = 0;
-
 static const uint32_t MAX_STRING_LENGTH = 32;
 static char str[MAX_STRING_LENGTH];
 
 
 //*********************************************************************
-void get_5x7_character(char c, uint8_t *char_buff)
-{
-    uint16_t temp_data;
-    uint8_t idx, idy;
-
-    for(idx = 0; idx < 6; idx++) 
-    {
-        //get byte of char from map and flip it, bit 0 becomes bit 7 and so on
-        temp_data = (0x00FF & (font_5x7[c - 0x20][idx]));
-        for(idy = 0; idy < 8; idy++) 
-        {
-            temp_data = (temp_data | (((temp_data & (1 << idy)) << (15 - (idy*2)))));
-        }
-        temp_data = ((temp_data >> 8) & 0x00FF);
-        
-        char_buff[idx] = ((uint8_t) temp_data);
-    }
-}
-
-
-//*********************************************************************
 void print_char(Max7219 *p_display, uint8_t position99, char c)
 {
     uint8_t idx;
@@ -189,77 +1132,73 @@
     uint8_t wrap_idx;
     uint8_t buff_start = position99;
     
-    get_5x7_character(c, char_buff);
+    memcpy(char_buff, &(font_5x7[c - 0x20][0]), 6);
 
     if(position99 < 33)
     {
-      //get device and device_position
-      if(position99 > 8)
-      {
-          if(position99%8)
-          {
-              device = ((position99/8) + 1);
-              position99 = position99%8;
-          }
-          else
-          {
-              device = position99/8;
-              position99 = 8;
-          }
-      }
-      else
-      {
-          device = 1;
-      }
-
-      //check for dispaly wrap around 
-      //(moving to next 8x8 grid cause character doesn't fit on current one)
-      if(position99 > 3)
-      {
-          wrap_idx = (9 - position99);
-          if(device < 4)
-          {
-              wrap_device = (device + 1);
-          }
-          else
-          {
-              wrap_device = 1;
-          }
-      }
-      else
-      {
-          wrap_idx = 6; //make bigger than idx, not used
-          wrap_device = 0; //not used
-      }
-
-      //print character to position
-      for(idx = 0; idx < 6; idx++)
-      {
-          //check for wrap
-          if((idx >= wrap_idx)  && (device != 4))
-          {
-              p_display->write_digit(wrap_device, ((idx - wrap_idx) + 1), char_buff[idx]);
-          }
-          else
-          {
-              p_display->write_digit(device, (position99 + idx), char_buff[idx]);
-          }
-
-          buff_end = ((buff_start - 1) + idx);
-          display_buff[buff_end] = char_buff[idx];
-      }
+        //get device and device_position
+        if(position99 > 8)
+        {
+            if(position99%8)
+            {
+                device = ((position99/8) + 1);
+                position99 = position99%8;
+            }
+            else
+            {
+                device = position99/8;
+                position99 = 8;
+            }
+        }
+        else
+        {
+            device = 1;
+        }
+        //check for dispaly wrap around 
+        //(moving to next 8x8 grid cause character doesn't fit on current one)
+        if(position99 > 3)
+        {
+            wrap_idx = (9 - position99);
+            if(device < 4)
+            {
+                wrap_device = (device + 1);
+            }
+            else
+            {
+                wrap_device = 1;
+            }
+        }
+        else
+        {
+            wrap_idx = 6; //make bigger than idx, not used
+            wrap_device = 0; //not used
+        }
+        //print character to position
+        for(idx = 0; idx < 6; idx++)
+        {
+            //check for wrap
+            if((idx >= wrap_idx)  && (device != 4))
+            {
+                p_display->write_digit(wrap_device, ((idx - wrap_idx) + 1), char_buff[idx]);
+            }
+            else
+            {
+                p_display->write_digit(device, (position99 + idx), char_buff[idx]);
+            }
+            buff_end = ((buff_start - 1) + idx);
+            display_buff[buff_end] = char_buff[idx];
+        }
     }
     else
     {
-      for(idx = 0; idx < 6; idx++)
-      {
-        buff_end = ((buff_start - 1) + idx);
-        display_buff[buff_end] = char_buff[idx];
-      }
+        for(idx = 0; idx < 6; idx++)
+        {
+            buff_end = ((buff_start - 1) + idx);
+            display_buff[buff_end] = char_buff[idx];
+        }
     }
 }
 
-
 //*********************************************************************
 void print_string(Max7219 *p_display, uint8_t position, const char *s)
 {
@@ -272,7 +1211,6 @@
     } 
 }
 
-
 //*********************************************************************
 void shift_display_right(Max7219 *p_display, uint8_t count, uint8_t ms_delay)
 {
@@ -292,12 +1230,10 @@
                 temp_buff[idy + 1] = display_buff[idy];
             }
         }
-        
         for(idy = 0; idy < (buff_end + 1); idy++)
         {
             //save shifted display in buffer
             display_buff[idy] = temp_buff[idy];
-            
             if(idy <= DISPLAY_BUFF_END)
             {
                 position99 = ((idy - DISPLAY_BUFF_START) + 1);
@@ -333,7 +1269,7 @@
                     }
                     else
                     {
-                         position99 = 8;
+                        position99 = 8;
                     }
                     p_display->write_digit(2, position99, display_buff[idy]);
                 }
@@ -343,12 +1279,10 @@
                 }
             }
         }
-
         wait_ms(ms_delay);
     }
 }
 
-
 //*********************************************************************
 void shift_display_left(Max7219 *p_display, uint8_t count, uint8_t ms_delay)
 {
@@ -368,12 +1302,10 @@
                 temp_buff[idy - 1] = display_buff[idy];
             }
         }
-        
         for(idy = 0; idy < (buff_end + 1); idy++)
         {
             //save shifted display in buffer
             display_buff[idy] = temp_buff[idy];
-            
             if(idy <= DISPLAY_BUFF_END)
             {
                 position99 = ((idy - DISPLAY_BUFF_START) + 1);
@@ -409,7 +1341,7 @@
                     }
                     else
                     {
-                         position99 = 8;
+                        position99 = 8;
                     }
                     p_display->write_digit(2, position99, display_buff[idy]);
                 }
@@ -419,7 +1351,6 @@
                 }
             }
         }
-
         wait_ms(ms_delay);
     }
 }
@@ -442,16 +1373,13 @@
             display_buff[idx + DISPLAY_BUFF_START] = 0xFF;
         }
     }
-
     if(buff_end < (quad * 8))
     {
-      buff_end = (quad * 8);
+        buff_end = (quad * 8);
     }
-    
     p_display->device_all_on(quad);
 }
 
-
 //*********************************************************************
 void quad_all_off(Max7219 *p_display, uint8_t quad)
 {
@@ -473,14 +1401,12 @@
     //is buff_end in the quad?
     if((((quad - 1) * 8) < buff_end) && ((quad * 8) > buff_end))
     {
-      buff_end = ((quad - 1) * 8);
+        buff_end = ((quad - 1) * 8);
     }
     //leave it alone otherwise
-    
     p_display->device_all_off(quad);
 }
 
-
 //*********************************************************************
 void all_on(Max7219 *p_display)
 {
@@ -488,16 +1414,13 @@
     {
         display_buff[idx] = 0xFF;
     }
-
     if(buff_end < 32)
     {
-      buff_end = 32;
+        buff_end = 32;
     }
-    
     p_display->display_all_on();
 }
 
-
 //*********************************************************************
 void all_off(Max7219 *p_display)
 {
@@ -505,66 +1428,45 @@
     {
         display_buff[idx] = 0;
     }
-
     if(buff_end < 32)
     {
-      buff_end = 0;
+        buff_end = 0;
     }
-    
     p_display->display_all_off();
 }
 
-
-void clear_buffer(void)
-{
-    buff_end = 0;
-    
-    for(uint16_t idx = 0; idx < 256; idx++)
-    {
-        display_buff[idx] = 0;
-    }
-}
-
-
 //*********************************************************************
 void demo(Max7219 *display, max7219_configuration_t display_config, bool endless_loop)
 {
     uint8_t position = 1;
     uint8_t idx = 0;
-    
     do
     {
         all_off(display);
-        
         if(position > 25)
         {
             position = 1;
         }
         printf("\nPosition = %d\n", position);
-        
         for(idx = 0x20; idx < 0x7F; idx++)
         {
             print_char(display, position, (char) idx);
             wait(0.25);
         }
         position = (position + 8);
-        
         all_on(display);
-        
         for(idx = 0; idx < 16; idx++)
         {
             display_config.intensity = 15 - idx;
             display->init_display(display_config);
             wait_ms(50);
         } 
-        
         for(idx = 0; idx < 16; idx++)
         {
             display_config.intensity = idx;
             display->init_display(display_config);
             wait_ms(100);
         } 
-        
         wait_ms(100);
         all_off(display);
         wait_ms(100);
@@ -585,7 +1487,6 @@
     while(endless_loop);
 }
 
-
 //*********************************************************************
 void endless_scroll_display(Max7219 *display, uint32_t scroll_right)
 {
@@ -607,6 +1508,255 @@
     }
 }
 
+/********************************************************************/
+void get_16x16_character(char c, uint8_t *char_buff, uint8_t font_type)
+{
+    uint8_t idx;
+    
+    switch(font_type)
+    {
+        case 1: // Use 16x16 Aerial bold font
+                for(idx = 0; idx < 32; idx++) 
+                {
+                    //Get byte of char from map & store in buffer
+                    char_buff[idx] = Aerial_bold_font_16x16[c - 0x20][idx];
+                }
+                break; 
+        case 2: // Use For 16x16 manual font 
+                for(idx = 0; idx < 32; idx++) 
+                {
+                    //Get byte of char from map & store in buffer
+                    char_buff[idx] = Manual_font_16x16[c - 0x20][idx];
+                }
+                break;
+        default : //Use 16x16 Aerial bold font
+                for(idx = 0; idx < 32; idx++) 
+                {
+                    //Get byte of char from map & store in buffer
+                    char_buff[idx] = Aerial_bold_font_16x16[c - 0x20][idx];
+                }
+                break; 
+    } //end of switch       
+}
+
+void print_char_16x16(Max7219 *p_display, uint16_t position, char c, uint8_t font_type)
+{
+   
+    uint8_t idx,device;
+    uint8_t char_buff[32]; 
+    uint16_t buff_start = position;
+    
+    get_16x16_character(c, char_buff,font_type);
+    //Write bit map data to display device and store it in buffer 
+    for(device = 1; device < 5; device++)
+    {
+        for(idx = 0; idx < 8; idx++)
+        {
+            p_display->write_digit(device, (idx+1), char_buff[idx + ( device - 1) * 8]); 
+            //Get index for display buffer, keeps image of display for shifting
+            buff_end = (device - 1) * 8 + idx + buff_start;
+            //Wrap buffer back around 
+            if(buff_end > 1023)
+            {
+                buff_end -= 1023;
+            }
+            display_buff[buff_end] = char_buff[idx + ( device - 1) * 8];
+         } 
+    }
+    buff_end +=1;
+    //Arrange single character data in buffers as upper and lower row   
+    for(idx = 0;idx < 16; idx++)
+    {
+        disp_buff1[idx] = display_buff[idx];
+        disp_buff2[idx] = display_buff[idx+16];
+    }
+}
+
+void print_string_16x16(Max7219 *p_display, char *s,uint8_t font_type)
+{
+    uint16_t idx1=0,idy1=0;
+    
+    while(s[idx1] != '\0')
+    {
+        print_char_16x16(p_display, (idx1 * 32), s[idx1], font_type);
+        idx1++;
+        wait_ms(200);
+    } 
+    //Arrange character data in upper and lower row data 
+    for (idy1=0; idy1 < (buff_end/32); idy1++)
+    {
+        for(idx1 = 0; idx1 < 16; idx1++)
+        {
+            disp_buff1[idx1 + (16 * idy1)] = display_buff[idx1 + (32 * idy1)];
+            disp_buff2[idx1 + (16 * idy1)] = display_buff[idx1 + 16 + (32 * idy1)];
+        }
+    }
+    // Clear buffer for next iteration
+    for(idx1 = 0; idx1 < 1024; idx1++)
+    display_buff[idx1] = 0;
+}
+
+//*********************************************************************
+void shift_display_right_16x16(Max7219 *p_display, uint8_t count, uint8_t delay)
+{
+    uint16_t idx1, idy1;
+    uint8_t position,device;
+                     
+    for(idx1 = 0; idx1 < count; idx1++)
+    {
+        // Right shift data in display buffer 1 & 2  
+        for(idy1 = 0; idy1 < buff_end/2; idy1++)
+        {
+            if(idy1 == ((buff_end/2)-1))
+            {
+                temp_buff1[0] = disp_buff1[(buff_end/2) - 1];
+                temp_buff2[0] = disp_buff2[(buff_end/2) - 1];
+            }
+            else 
+            {
+                temp_buff1[idy1 + 1] = disp_buff1[idy1];
+                temp_buff2[idy1 + 1] = disp_buff2[idy1];
+            }
+        }
+        // Save shifted data in the display buffer 1 & 2
+        for(idy1 = 0; idy1 < buff_end/2; idy1++) 
+        { 
+            disp_buff1[idy1] = temp_buff1[idy1]; 
+            disp_buff2[idy1] = temp_buff2[idy1]; 
+        }
+        for(idy1 = 0; idy1 < 16; idy1++) 
+        {
+            display_buff_16x16[idy1] = disp_buff1[idy1];
+            display_buff_16x16[idy1 + 16] = disp_buff2[idy1];
+        }
+        position = 0; 
+        for(device = 1; device < 5; device++)
+        {
+            for(idy1 = 0; idy1 < 8; idy1++)
+            {
+                p_display->write_digit(device, (idy1 + 1), display_buff_16x16[idy1 + position]); 
+            }
+            position+= 8; 
+        } 
+        wait_ms(delay);  
+    }
+}
+
+//*********************************************************************
+void shift_display_left_16x16(Max7219 *p_display, uint8_t count, uint8_t delay)
+{
+    uint16_t idx1,idy1;
+    uint8_t position,device;
+    
+    for(idx1 = 0; idx1 < count; idx1++)
+    {
+        // Left shift data in display buffer 1 & 2  
+        for(idy1 = 0; idy1 < buff_end/2; idy1++)
+        {
+            if(idy1 == 0)
+            {
+                temp_buff1[(buff_end/2) - 1] = disp_buff1[idy1];
+                temp_buff2[(buff_end/2) - 1] = disp_buff2[idy1];
+            }
+            else 
+            {
+                temp_buff1[idy1 - 1] = disp_buff1[idy1];
+                temp_buff2[idy1 - 1] = disp_buff2[idy1];
+            }
+        }
+        // Save shifted data in the display buffer 1 & 2 
+        for(idy1 = 0; idy1 < buff_end/2; idy1++) 
+        { 
+            disp_buff1[idy1] = temp_buff1[idy1]; 
+            disp_buff2[idy1] = temp_buff2[idy1]; 
+        }
+        for(idy1 = 0; idy1 < 16; idy1++) 
+        {
+            display_buff_16x16[idy1] = disp_buff1[idy1];
+            display_buff_16x16[idy1 + 16] = disp_buff2[idy1];  
+        }
+        position = 0; 
+        for(device = 1; device < 5; device++)
+        {
+            for(idy1 = 0; idy1 < 8; idy1++)
+            {
+                p_display->write_digit(device, (idy1+1), display_buff_16x16[idy1 + position]); 
+            }
+            position+= 8; 
+        }
+    wait_ms(delay);
+    }
+}
+
+//*********************************************************************
+void demo_16x16(Max7219 *display, max7219_configuration_t display_config, uint8_t font_type, bool endless_loop)
+{
+    uint8_t index = 0;
+    
+    do
+    {
+        all_off(display);
+        for(index = 0x20; index < 0x7F; index++)
+        {
+            print_char_16x16(display, 0, (char) index, font_type);
+            wait(0.25);
+        }
+        all_on(display);
+        for(index = 0; index < 16; index++)
+        {
+            display_config.intensity = 15 - index;
+            display->init_display(display_config);
+            wait_ms(50);
+        } 
+        for(index = 0; index < 16; index++)
+        {
+            display_config.intensity = index;
+            display->init_display(display_config);
+            wait_ms(100);
+        } 
+        wait_ms(100);
+        all_off(display);
+        wait_ms(100);
+        
+        all_on(display);
+        wait_ms(500);
+        // Display character then shift right and left
+        print_char_16x16(display, 0, 'A', font_type);
+        wait_ms(500);
+        shift_display_right_16x16(display, 32, 100);
+        shift_display_left_16x16(display, 32, 100);
+        all_off(display);
+        wait_ms(100);
+        // Display string then shift right and left
+        print_string_16x16(display, "Maxim", font_type);
+        wait_ms(500);
+        shift_display_right_16x16(display, 32, 100);
+        shift_display_left_16x16(display, 32, 100);
+        wait_ms(100);
+    }
+    while(endless_loop);
+}
+
+//*********************************************************************
+void endless_scroll_display_16x16(Max7219 *display, uint32_t scroll_right)
+{
+    if(scroll_right)
+    {
+        printf("\nScrolling Right\n");
+        while(1)
+        {
+            shift_display_right_16x16(display, 1, 100);
+        }
+    }
+    else
+    {
+        printf("\nScrolling Left\n");
+        while(1)
+        {
+            shift_display_left_16x16(display, 1, 100);
+        }
+    }
+}
 
 //*********************************************************************
 uint32_t print_menu(void)
@@ -614,13 +1764,13 @@
     uint32_t user_input;
     
     printf("\nPlease select an option below:\n");
-    printf("%t1. Set Brightness\n");
-    printf("%t2. Print a characther to given position\n");
-    printf("%t3. Print a string to position\n");//TODO fix this case
-    printf("%t4. Shift display given number of position and direction\n"); //TODO fix this case
-    printf("%t5. Clear display\n");
-    printf("%t6. Run the Demo Rotuine\n");
-    printf("%t7. Run the Demo Rotuine In Endless Loop\n");
+    printf("%t1. Select font\n");
+    printf("%t2. Set Brightness\n");
+    printf("%t3. Print a character to given position\n");
+    printf("%t4. Print a string to position\n");
+    printf("%t5. Shift display given number of position and direction\n"); 
+    printf("%t6. Clear display\n");
+    printf("%t7. Run the Demo Routine\n");
     printf("%t8. Scroll Display In Endless Loop, left or right\n");
     printf("%t9. Quit\n\n");
     
@@ -629,7 +1779,6 @@
     return(user_input);
 }
 
-
 //*********************************************************************
 uint32_t get_user_input(char *msg, uint32_t max_val)
 {
@@ -641,30 +1790,26 @@
         
         //get user input
         fgets(str, MAX_STRING_LENGTH, stdin);
-        
+               
         //Remove trailing newline and CR, if there.
         if((strlen(str) > 0 ) && (str[strlen(str) - 1] == 0x0A) && (str[strlen(str) - 2] == 0x0D))
         {
             str[strlen(str) - 1] = '\0';
             str[strlen(str) - 1] = '\0';
         }
-        
         user_input = strtoul(str, NULL, 0);
-        
         printf("\nYou entered = %d\n", user_input);
         
         if(user_input > max_val)
         {
             printf("\nOut of range\n");
         }
-        
     }
     while(user_input > max_val);
     
     return(user_input);
 }
 
-
 //*********************************************************************
 char get_user_char(char *msg)
 {
@@ -674,8 +1819,9 @@
         printf(msg);
         
         //get user input
+        fflush(stdin);
         fgets(str, 4, stdin);
-        
+        fflush(stdin);
         //Remove trailing newline and CR, if there.
         if((strlen(str) > 0 ) && (str[strlen(str) - 1] == 0x0A) && (str[strlen(str) - 2] == 0x0D))
         {
@@ -712,3 +1858,13 @@
     return(str);
 }
 
+
+void clear_buffer(void)
+{
+    buff_end = 0;
+    
+    for(uint16_t idx = 0; idx < 256; idx++)
+    {
+        display_buff[idx] = 0;
+    }
+}
diff -r 52f9ecc09233 -r ce6a3accca77 maxrefdes99.h
--- a/maxrefdes99.h	Fri Mar 25 22:50:52 2016 +0000
+++ b/maxrefdes99.h	Tue May 31 22:32:53 2016 +0000
@@ -1,16 +1,5 @@
 /******************************************************************//**
 * @file maxrefdes99.h
-*
-* @author Justin Jordan
-*
-* @version 0.0
-*
-* Started: 08JAN16
-*
-* Updated: 
-*
-* @brief Header file for maxrefdes99 demo
-***********************************************************************
 * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
@@ -42,19 +31,16 @@
 * ownership rights.
 **********************************************************************/
 
-
 #ifndef MAXREFDES99_H
 #define MAXREFDES99_H
 
 
 #include "mbed.h"
 #include "max7219.h"
-
-#define ESC 0x1B
     
 
 /**********************************************************//**
-* @brief gets character bitmap fom memory
+* @brief Gets character bitmap fom memory
 * 
 * @details 
 *
@@ -64,13 +50,13 @@
 *                            must be at least 6 bytes
 *
 * On Exit:
-*    @return none
+*    @return None
 **************************************************************/
 void get_5x7_character(char c, uint8_t *char_buff);
 
 
 /**********************************************************//**
-* @brief prints character to MAXREFDES99 at given position
+* @brief Prints character to MAXREFDES99 at given position
 * 
 * @details 
 *
@@ -82,13 +68,13 @@
 *     @param[in] c - char to print
 *
 * On Exit:
-*    @return none
+*    @return None
 **************************************************************/
 void print_char(Max7219 *p_display, uint8_t position, char c);
 
 
 /**********************************************************//**
-* @brief prints given string to MAXREFDES99 at given position
+* @brief Prints given string to MAXREFDES99 at given position
 * 
 * @details 
 *
@@ -100,13 +86,13 @@
 *     @param[in] s - pointer to string to print
 *
 * On Exit:
-*    @return none
+*    @return None
 **************************************************************/
 void print_string(Max7219 *p_display, uint8_t position, const char *s);
 
 
 /**********************************************************//**
-* @brief shifts display right 'count' positions with given
+* @brief Shifts display right 'count' positions with given
 *        delay between shifts 
 * 
 * @details 
@@ -117,13 +103,13 @@
 *     @param[in] delay - delay between shifts
 *
 * On Exit:
-*    @return none
+*    @return None
 **************************************************************/
 void shift_display_right(Max7219 *p_display, uint8_t count, uint8_t delay);
 
 
 /**********************************************************//**
-* @brief shifts display left 'count' positions with given
+* @brief Shifts display left 'count' positions with given
 *        delay between shifts
 * 
 * @details 
@@ -134,13 +120,13 @@
 *     @param[in] delay - delay between shifts
 *
 * On Exit:
-*    @return none
+*    @return None
 **************************************************************/
 void shift_display_left(Max7219 *p_display, uint8_t count, uint8_t delay);
 
 
 /**********************************************************//**
-* @brief turns on all leds for given quadrant, with quad 1 being
+* @brief Turns on all leds for given quadrant, with quad 1 being
 *        top left and quad 4 being bottom right
 * 
 * @details 
@@ -150,13 +136,13 @@
 *     @param[in] quad - see brief
 *
 * On Exit:
-*    @return none
+*    @return None
 **************************************************************/
 void quad_all_on(Max7219 *p_display, uint8_t quad);
 
 
 /**********************************************************//**
-* @brief turns off all leds for given quadrant, with quad 1 being
+* @brief Turns off all leds for given quadrant, with quad 1 being
 *        top left and quad 4 being bottom right
 * 
 * @details 
@@ -166,13 +152,13 @@
 *     @param[in] quad - see brief
 *
 * On Exit:
-*    @return none
+*    @return None
 **************************************************************/
 void quad_all_off(Max7219 *p_display, uint8_t quad);
 
 
 /**********************************************************//**
-* @brief turns all leds for whole display on
+* @brief Turns all leds for whole display on
 * 
 * @details 
 *
@@ -180,13 +166,13 @@
 *     @param[in] p_display - pointer to Max7219 object
 *
 * On Exit:
-*    @return none
+*    @return None
 **************************************************************/
 void all_on(Max7219 *p_display);
 
 
 /**********************************************************//**
-* @brief turns all leds for whole display off
+* @brief Turns all leds for whole display off
 * 
 * @details 
 *
@@ -194,16 +180,13 @@
 *     @param[in] p_display - pointer to Max7219 object
 *
 * On Exit:
-*    @return none
+*    @return None
 **************************************************************/
 void all_off(Max7219 *p_display);
 
 
-void clear_buffer(void);
-
-
 /**********************************************************//**
-* @brief demo loop for MAXREFDES99
+* @brief Demo loop for MAXREFDES99
 * 
 * @details 
 *
@@ -213,13 +196,13 @@
 *     @param[in] endless_loop - if true run demo in endless loop
 *
 * On Exit:
-*    @return none
+*    @return None
 **************************************************************/
 void demo(Max7219 *display, max7219_configuration_t display_config, bool endless_loop);
 
 
 /**********************************************************//**
-* @brief shift display in given direction forever
+* @brief Shift display in given direction forever
 * 
 * @details 
 *
@@ -228,26 +211,140 @@
 *     @param[in] scroll_right - if true shift right, else shift left
 *
 * On Exit:
-*    @return none
+*    @return None
 **************************************************************/
 void endless_scroll_display(Max7219 *display, uint32_t scroll_right);
 
+/**********************************************************//**
+* @brief Gets 16x16 character bitmap fom memory
+* 
+* @details 
+*
+* On Entry:
+*     @param[in] c - character to get bitmap for
+*     @param[in] char_buff - pointer to buffer to store bitmap 
+*                            Buffer should be 32 bytes
+*     @param[in] font_type - 16x16 font type used for display 
+* On Exit:
+*    @return None
+**************************************************************/
+void get_16x16_character(char c, uint8_t *char_buff, uint8_t font_type);
+
+
+/**********************************************************//**
+* @brief Prints character to MAXREFDES99 16x16 LED display
+* 
+* @details 
+*
+* On Entry:
+*     @param[in] p_display - pointer to Max7219 object
+      @param[in] position -  for single char print this value is zero,
+                 for string case it is multiple of 32 bytes as each char data is 32 bytes, 
+*     @param[in] c - char to print
+*     @param[in] font_type - 16x16 font type used for display 
+*
+* On Exit:
+*    @return None
+**************************************************************/
+void print_char_16x16(Max7219 *p_display, uint16_t position, char c, uint8_t font_type);
+
+
+/**********************************************************//**
+* @brief Prints given string to MAXREFDES99 16x16 LED display
+* 
+* @details 
+*
+* On Entry:
+*     @param[in] p_display - pointer to Max7219 object
+*     @param[in] s - pointer to string to print
+*     @param[in] font_type - 16x16 font type used for display 
+*
+* On Exit:
+*    @return None
+**************************************************************/
+void print_string_16x16(Max7219 *p_display, char *s, uint8_t font_type);
+
 
 /**********************************************************//**
-* @brief print demo menu
+* @brief Shifts 16x16 font display right 'count' positions with given
+*        delay between shifts 
+* 
+* @details 
+*
+* On Entry:
+*     @param[in] p_display - pointer to Max7219 object
+*     @param[in] count - number of positions to shift
+*     @param[in] delay - delay between shifts in milliseconds
+*
+* On Exit:
+*    @return None
+**************************************************************/
+void shift_display_right_16x16(Max7219 *p_display, uint8_t count, uint8_t delay);
+
+
+/**********************************************************//**
+* @brief Shifts 16x16 font display left 'count' positions with given
+*        delay between shifts
+* 
+* @details 
+*
+* On Entry:
+*     @param[in] p_display - pointer to Max7219 object
+*     @param[in] count - number of positions to shift
+*     @param[in] delay - delay between shifts in milliseconds
+*
+* On Exit:
+*    @return None
+**************************************************************/
+void shift_display_left_16x16(Max7219 *p_display, uint8_t count, uint8_t delay);
+
+/**********************************************************//**
+* @brief Demo loop for MAXREFDES99 with 16x16 font display
+* 
+* @details 
+*
+* On Entry:
+*     @param[in] p_display - pointer to Max7219 object
+*     @param[in] display_config - structure holding configuration data
+*     @param[in] font_type - 16x16 font type used for display 
+*     @param[in] endless_loop - if true run demo in endless loop
+*
+* On Exit:
+*    @return None
+**************************************************************/
+void demo_16x16(Max7219 *display, max7219_configuration_t display_config, uint8_t font_type, bool endless_loop);
+
+
+/**********************************************************//**
+* @brief Shift 16x16 font display in given direction forever
+* 
+* @details 
+*
+* On Entry:
+*     @param[in] p_display - pointer to Max7219 object
+*     @param[in] scroll_right - if true shift right, else shift left
+*
+* On Exit:
+*    @return None
+**************************************************************/
+void endless_scroll_display_16x16(Max7219 *display, uint32_t scroll_right);
+
+
+/**********************************************************//**
+* @brief Print demo menu
 * 
 * @details 
 *
 * On Entry:
 *
 * On Exit:
-*    @return user entry
+*    @return User entry
 **************************************************************/
 uint32_t print_menu(void);
 
 
 /**********************************************************//**
-* @brief get integer value from user
+* @brief Get integer value from user
 * 
 * @details 
 *
@@ -256,13 +353,13 @@
 *     @param[in] max_val - maximum allowable input
 *
 * On Exit:
-*    @return user entry
+*    @return User entry
 **************************************************************/
 uint32_t get_user_input(char *msg, uint32_t max_val);
 
 
 /**********************************************************//**
-* @brief get char from user
+* @brief Get char from user
 * 
 * @details 
 *
@@ -270,13 +367,13 @@
 *     @param[in] msg - prompt for user
 *
 * On Exit:
-*    @return user entry
+*    @return User entry
 **************************************************************/
 char get_user_char(char *msg);
 
 
 /**********************************************************//**
-* @brief get string from user
+* @brief Get string from user
 * 
 * @details 
 *
@@ -284,10 +381,13 @@
 *     @param[in] msg - prompt for user
 *
 * On Exit:
-*    @return user entry
+*    @return User entry
 **************************************************************/
 char * get_user_string(char *msg);
 
 
+void clear_buffer(void);
+
+
 #endif /*MAXREFDES99_H*/
 
diff -r 52f9ecc09233 -r ce6a3accca77 mbed.bld
--- a/mbed.bld	Fri Mar 25 22:50:52 2016 +0000
+++ b/mbed.bld	Tue May 31 22:32:53 2016 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/mbed/builds/c0f6e94411f5
\ No newline at end of file
+http://mbed.org/users/mbed_official/code/mbed/builds/6c34061e7c34
\ No newline at end of file