Files at this revision

API Documentation at this revision

Comitter:
Wimpie
Date:
Sun Apr 17 18:03:24 2011 +0000
Child:
1:ce391193b822
Commit message:

Changed in this revision

PCD8544LCD.cpp Show annotated file Show diff for this revision Revisions of this file
PCD8544LCD.h Show annotated file Show diff for this revision Revisions of this file
fonts/font_16x20.cpp Show annotated file Show diff for this revision Revisions of this file
fonts/font_16x20.h Show annotated file Show diff for this revision Revisions of this file
fonts/font_16x24.h Show annotated file Show diff for this revision Revisions of this file
fonts/font_3x5.h Show annotated file Show diff for this revision Revisions of this file
fonts/font_5x7.h Show annotated file Show diff for this revision Revisions of this file
fonts/font_6x8.cpp Show annotated file Show diff for this revision Revisions of this file
fonts/font_6x8.h Show annotated file Show diff for this revision Revisions of this file
fonts/font_8x12.cpp Show annotated file Show diff for this revision Revisions of this file
fonts/font_8x12.h Show annotated file Show diff for this revision Revisions of this file
fonts/font_8x8.cpp Show annotated file Show diff for this revision Revisions of this file
fonts/font_8x8.h Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PCD8544LCD.cpp	Sun Apr 17 18:03:24 2011 +0000
@@ -0,0 +1,602 @@
+/* mbed PCD8544 - Graphic Library for driving monochrome displays based on
+ *  the PCD8544  48 x 84 pixels matrix LCD controller/driver
+ *  used in Nokia 3310, 3315, 3330, 3350, 3410, 3210,  5110, 5120, 5130, 5160, 6110, 6150
+ *
+ * Copyright (c) 2011, Wim De Roeve
+ * partial port of the code found on http://serdisplib.sourceforge.net/ser/pcd8544.html#links
+ * and by Petras Saduikis <petras@petras.co.uk>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the updaSoftware, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include "PCD8544LCD.h"
+
+#include "fonts/font_3x5.h"
+#include "fonts/font_5x7.h"
+#include "fonts/font_6x8.h"
+#include "fonts/font_8x8.h"
+#include "fonts/font_8x12.h"
+#include "fonts/font_16x20.h"
+#include "fonts/font_16x24.h"
+
+#include "DebugTrace.h"
+#include "sstream"
+
+DebugTrace pc_PCD8544(ON, TO_SERIAL);
+
+/*
+       PCD8544 from Philips Semiconductors is
+       48 x 84 pixels monochrome matrix LCD controller/driver
+
+       generic for LPH7366, LPH7677, and LPH7779; no backlight
+
+       model name (of display)     type     used in cellphones
+       LPH 7366         2     Nokia 5110, 5120, 5130, 5160, 6110, 6150
+       LPH 7677         1     Nokia 3210
+       LPH 7779         1     Nokia 3310, 3315, 3330, 3350, 3410
+
+
+       +-------------------------+
+       |     1 2 3 4 5 6 7 8     |
+       |     # # # # # # # #     |
+       |  ===#=#=#=#=#=#=#=#===  |  Red     1 .. VDD  - chip power supply +3.3V  
+       +--=====================--+  Green   2 .. SCLK - serial clock line of LCD
+       |                         |  Yellow  3 .. SI   - serial data input of LCD
+       |                         |  Gray    4 .. D/C  - command/data switch
+       |        rear view        |  Blue    5 .. /CS  - active low chip select
+       |  connector is visible   |  Black   6 .. GND  - for VDD
+       |                         |          7 .. Vout - output of display-internal dc/dc converter
+       |         LPH7779         |  White   8 .. /RES - active low reset
+       |                         |
+       +-------------------------+
+
+*/
+
+PCD8544LCD::PCD8544LCD (PinName mosi, PinName miso, PinName sck,
+                        PinName cs, PinName data_cmd, PinName reset):
+        _spi(mosi, miso, sck),
+        _cs(cs),
+        _dc(data_cmd),
+        _reset(reset) {
+
+    _cs    = HIGH;
+    _reset = HIGH;
+
+    init();
+}
+
+void PCD8544LCD::init() {
+
+    _spi.format(8,0);
+    _spi.frequency(1000000);
+
+    /* reset lcd
+
+       After reset, the LCD driver has the following state:
+       - Power-down mode (bit PD = 1)
+       - Horizontal addressing (bit V = 0)
+       - normal instruction set (bit H = 0)
+       - Display blank (bit E = D = 0)
+       - Address counter X6 to X0 = 0; Y2 to Y0 = 0
+       - Temperature control mode (TC1 TC0 = 0)
+       - Bias system (BS2 to BS0 = 0)
+       - VLCD is equal to 0, the HV generator is switched off
+        (VOP6 to VOP0 = 0)
+       - After power-on, the RAM contents are undefined.
+    */
+
+    wait_ms(1);
+    _reset = LOW;  // reset
+    wait_ms(1);
+    _reset = HIGH;
+
+    writeCmd(EXTENDEDSET);   // folowing commands are extended ones
+    writeCmd(0xc8);          // Set Voltage 0x80+value: set contrast
+    writeCmd(0x06);          // set temp coefficient
+    writeCmd(0x13);          // set BIAS mode 1:48
+    writeCmd(STANDARDSET);   // STANDARDSET: following commands are standard ones
+
+    writeCmd(NORMAL_MODE);
+
+    _LoMark = LCD_CACHE_SIZE; // Reset watermark pointers.
+    _HiMark = 0;
+
+    cls();
+}
+
+void PCD8544LCD::writeCmd(BYTE data) {
+    _cs = LOW;
+    _dc = LOW;
+    _spi.write(data);
+    _cs = HIGH;
+}
+
+void PCD8544LCD::writeData(BYTE data) {
+    _cs = LOW;
+    _dc = HIGH;
+    _spi.write(data);
+    _cs = HIGH;
+}
+
+void PCD8544LCD::close() {
+    writeCmd(DISPLAYOFF);
+    _cs    = HIGH;
+    _reset = HIGH;
+}
+
+//  GRAPHICAL functions
+
+void PCD8544LCD::cls() {
+    for (int i = 0; i < LCD_CACHE_SIZE ; i++) {
+        _LcdCache[i]=0x00;
+    }
+    _LoMark = 0;
+    _HiMark = LCD_CACHE_SIZE - 1;
+    update();
+}
+
+void PCD8544LCD::update() {
+
+    if ( _LoMark < 0 )
+        _LoMark = 0;
+    else if ( _LoMark >= LCD_CACHE_SIZE )
+        _LoMark = LCD_CACHE_SIZE - 1;
+    if ( _HiMark < 0 )
+        _HiMark = 0;
+    else if ( _HiMark >= LCD_CACHE_SIZE )
+        _HiMark = LCD_CACHE_SIZE - 1;
+
+    writeCmd(SET_ADDRES_X | (_LoMark % LCD_X_RES));
+    writeCmd(SET_ADDRES_Y | (_LoMark / LCD_X_RES));
+
+    for (int i = _LoMark; i <= _HiMark; i++ ) {
+        writeData( _LcdCache[i]);
+    }
+    _LoMark = LCD_CACHE_SIZE - 1;
+    _HiMark = 0;
+}
+
+
+
+void PCD8544LCD::locate(BYTE x0, BYTE y0) {
+    _LcdCacheIdx = x0*LCD_BANKS + y0 * LCD_X_RES;
+}
+
+// Bitmap
+
+void PCD8544LCD::drawBitmap(BYTE x0, BYTE y0, BYTE* bitmap, BYTE bmpXSize, BYTE bmpYSize,BYTE fupdate) {
+    BYTE row;
+
+    if (0 == bmpYSize % 8)
+        row = bmpYSize/8;
+    else
+        row = bmpYSize/8 + 1;
+
+    _LoMark= 0;
+    _HiMark= LCD_CACHE_SIZE - 1;
+
+    for (BYTE n = 0; n < row; n++) {
+        locate(x0, y0);
+
+        for (BYTE i = 0; i < bmpXSize; i++) {
+            _LcdCache[_LcdCacheIdx+ i]=bitmap[i + (n * bmpXSize)];
+        }
+        y0++;
+    }
+    if (fupdate==TRUE)
+        update();
+}
+
+void PCD8544LCD::writeString(BYTE x0, BYTE y0, char* string,  eFonts font,eDisplayMode mode,BYTE fupdate) {
+    locate(x0, y0);
+    chooseFont(font);
+
+    while (*string) {
+        writeChar(x0,y0,*string++,font, mode, FALSE);
+        x0+=_font_width;   // width +1;
+    }
+    if (fupdate==TRUE)
+        update();
+}
+
+void PCD8544LCD::chooseFont(eFonts font) {
+
+    switch (font) {
+
+        case VERYSMALLFONT: {
+            _font_width  = FONT3x5_WIDTH;
+            _font_height = FONT3x5_HEIGHT;
+            _font_start  = FONT3x5_START;
+            _font_end    = FONT3x5_END;
+
+            _pFont = (unsigned char*) font_3x5;
+
+            break;
+        }
+        case TINYFONT: {
+            _font_width  = FONT5x7_WIDTH;
+            _font_height = FONT5x7_HEIGHT;
+            _font_start  = FONT5x7_START;
+            _font_end    = FONT5x7_END;
+
+            _pFont = (unsigned char*) font_5x7;
+
+            break;
+        }
+
+        case SMALLFONT: {
+            _font_width  = FONT6x8_WIDTH;
+            _font_height = FONT6x8_HEIGHT;
+            _font_start  = FONT6x8_START;
+            _font_end    = FONT6x8_END;
+
+            _pFont = (unsigned char*) font_6x8;
+
+            break;
+        }
+        case NORMALFONT: {
+            _font_width  = FONT8x8_WIDTH;
+            _font_height = FONT8x8_HEIGHT;
+            _font_start  = FONT8x8_START;
+            _font_end    = FONT8x8_END;
+
+            _pFont = (unsigned char*) font_8x8;
+
+            break;
+        }
+        case BIGFONT: {
+            _font_width  = FONT8x12_WIDTH;
+            _font_height = FONT8x12_HEIGHT;
+            _font_start  = FONT8x12_START;
+            _font_end    = FONT8x12_END;
+
+            _pFont = (unsigned char*) font_8x12;
+
+            break;
+        }
+
+        case TIMENUMBERFONT: {
+            _font_width  = FONT16x20_WIDTH;
+            _font_height = FONT16x20_HEIGHT;
+            _font_start  = FONT16x20_START;
+            _font_end    = FONT16x20_END;
+
+            _pFont = (unsigned char*) font_16x20;
+
+            break;
+        }
+
+        case BIGNUMBERFONT: {
+            _font_width  = FONT16x24_WIDTH;
+            _font_height = FONT16x24_HEIGHT;
+            _font_start  = FONT16x24_START;
+            _font_end    = FONT16x24_END;
+
+            _pFont = (unsigned char*) font_16x24;
+
+            break;
+        }
+    }
+}
+
+void PCD8544LCD::writeChar(BYTE x0, BYTE y0, BYTE ch,  eFonts font, eDisplayMode mode,BYTE fupdate) {
+    BYTE sendByte;
+
+    chooseFont(font);
+
+    if ((ch <= _font_start) || (ch > _font_end))
+        ch=_font_start;
+
+    ch -= _font_start;
+
+    for (int i = 0; i < _font_width; i++ ) {
+
+        sendByte = *(_pFont + ch*_font_width +i);
+        sendByte = ((mode == NORMAL)? sendByte:(sendByte ^ 0xff));
+
+        for (int j=0 ; j<_font_height; j++) {
+            if ((sendByte & 0x01) == 0x01) {
+                drawpixel(x0,y0+j,PIXEL_ON,FALSE);
+            } else {
+                drawpixel(x0,y0+j,PIXEL_OFF,FALSE);
+            }
+            sendByte=sendByte>>1;
+        }
+        x0++;
+    }
+    if (fupdate==TRUE)
+        update();
+}
+
+
+void PCD8544LCD::drawpixel(BYTE x0, BYTE  y0, ePixelMode mode,BYTE fupdate) {
+    uint16_t index;
+    BYTE offset;
+    BYTE data;
+
+    if ( x0 > LCD_X_RES-1 ) return;
+    if ( y0 > LCD_Y_RES-1 ) return;
+
+    index = ((y0 / 8) * LCD_X_RES) + x0;
+    offset = y0 - ((y0 / 8) * 8);
+
+    data = _LcdCache[index];
+
+    if ( mode == PIXEL_OFF ) {
+        data &= (~(0x01 << offset));
+    } else if ( mode == PIXEL_ON ) {
+        data |= (0x01 << offset);
+    } else if ( mode == PIXEL_XOR ) {
+        data ^= (0x01 << offset);
+    }
+    _LcdCache[index] = data;
+
+    if ( index < _LoMark ) {
+        _LoMark = index;
+    }
+    if ( index > _HiMark ) {
+        _HiMark = index;
+    }
+    if (fupdate==TRUE)
+        update();
+}
+
+void PCD8544LCD::drawline(BYTE  x0, BYTE y0, BYTE x1, BYTE y1, ePixelMode mode,BYTE fupdate) {
+    int dx, dy, stepx, stepy, fraction;
+
+    dy = y1 - y0;
+    dx = x1 - x0;
+    if ( dy < 0 ) {
+        dy = -dy;
+        stepy = -1;
+    } else {
+        stepy = 1;
+    }
+    if ( dx < 0 ) {
+        dx = -dx;
+        stepx = -1;
+    } else {
+        stepx = 1;
+    }
+    dx <<= 1;
+    dy <<= 1;
+
+    drawpixel( x0, y0, mode , FALSE);
+    if ( dx > dy ) {
+        fraction = dy - (dx >> 1);
+        while ( x0 != x1 ) {
+            if ( fraction >= 0 ) {
+                y0 += stepy;
+                fraction -= dx;
+            }
+            x0 += stepx;
+            fraction += dy;
+            drawpixel( x0, y0, mode , FALSE);
+        }
+    } else {
+        fraction = dx - (dy >> 1);
+        while ( y0 != y1 ) {
+            if ( fraction >= 0 ) {
+                x0 += stepx;
+                fraction -= dy;
+            }
+            y0 += stepy;
+            fraction += dx;
+            drawpixel( x0, y0, mode , FALSE);
+        }
+    }
+    if (fupdate==TRUE)
+        update();
+}
+
+void PCD8544LCD::drawrectangle(BYTE  x0, BYTE y0, BYTE x1, BYTE y1, eFillMode fill, ePixelMode mode,BYTE fupdate) {
+    if (fill==1) {
+        BYTE i, xmin, xmax, ymin, ymax;
+        if (x0 < x1) { // Find x min and max
+            xmin = x0;
+            xmax = x1;
+        } else {
+            xmin = x1;
+            xmax = x0;
+        }
+        if (y0 < y1) { // Find the y min and max
+            ymin = y0;
+            ymax = y1;
+        } else {
+            ymin = y1;
+            ymax = y0;
+        }
+        for (; xmin <= xmax; ++xmin) {
+            for (i=ymin; i<=ymax; ++i) {
+                drawpixel(xmin, i, mode, FALSE);
+            }
+        }
+    } else {
+        drawline(x0, y0, x1, y0, mode, FALSE); // Draw the 4 sides
+        drawline(x0, y1, x1, y1, mode, FALSE);
+        drawline(x0, y0, x0, y1, mode, FALSE);
+        drawline(x1, y0, x1, y1, mode, FALSE);
+    }
+    if (fupdate==TRUE)
+        update();
+}
+
+void PCD8544LCD::drawprogressbar(BYTE  x0, BYTE y0, BYTE w, BYTE h, BYTE percentage,BYTE fupdate) {
+    drawrectangle(x0,y0,x0+w,y0+h,FILL_OFF,PIXEL_ON, FALSE);
+    drawrectangle(x0+2,y0+2,x0+w-2,y0+h-2,FILL_ON,PIXEL_OFF, FALSE);
+    drawrectangle(x0+2,y0+2,x0+2+(percentage*(w-4)/100),y0+h-2,FILL_ON,PIXEL_ON, FALSE);
+    if (fupdate==TRUE)
+        update();
+}
+
+void PCD8544LCD::drawchart(BYTE  x0, BYTE y0, BYTE w, BYTE h, BYTE unitx, BYTE unity,
+                           eRasterMode rmode,signed char * val, int start, int count)  {
+  BYTE miny,endy,maxy;
+  
+       drawrectangle(x0,y0-h,x0+w,y0,FILL_OFF,PIXEL_ON,FALSE);
+
+       for (int i=0;i<h;i++) {
+           if ((i % unity) == 0) {
+               drawpixel(x0-2,y0-i,PIXEL_ON,FALSE);
+               drawpixel(x0+w+2,y0-i,PIXEL_ON,FALSE);
+
+               if (rmode==RASTER_ON) {
+                   for (int r=0;r<w;r++) {
+                       if ((r % 2) ==0)
+                           drawpixel(x0+r,y0-i,PIXEL_ON,FALSE);
+                   }
+               }
+           }
+           if ((i % 2) == 0) {
+               drawpixel(x0-1,y0-i,PIXEL_ON,FALSE);
+               drawpixel(x0+w+1,y0-i,PIXEL_ON,FALSE);
+           }
+       }
+
+       for (int i=0;i<w;i++) {
+           if ((i % unitx) == 0) {
+               drawpixel(x0+i,y0-1,PIXEL_ON,FALSE);
+
+               if (rmode==RASTER_ON) {
+                   for (int r=0;r<h;r++) {
+                       if ((r % 2) ==0)
+                           drawpixel(x0+i,y0-r,PIXEL_ON,FALSE);
+                   }
+               }
+           }
+           if ((i % 2) == 0) {
+               drawpixel(x0+i,y0+1,PIXEL_ON,FALSE);
+           }
+       }
+/*
+           // clear axis area
+           drawrectangle(x0-9,y0-1,x0-3,y0-h,FILL_ON,PIXEL_OFF,FALSE);
+           drawrectangle(x0-4,y0+3,x0+w+2,y0+7,FILL_ON,PIXEL_OFF,FALSE);
+  */  
+    //write labels Axis X
+
+    //draw data values
+    //axisy halen uit minimum ans maximum value van timeframe
+  
+
+    endy = ((val[start+count] / unity))*unity;
+    maxy=0;
+    miny =10;
+
+    for ( int i=start; i<start+count-1;i++) {
+        if (maxy < ((val[start+count] / unity)+1)*unity)
+            maxy=(((val[start+count] / unity)+1)*unity);
+        if (miny > ((val[start+count] / unity))*unity)
+            miny=((val[start+count] / unity)*unity);
+    }
+
+     // TODO check this
+    //  if ((maxy-miny)>h)  // problems screen is not high enough
+    miny =10; //(h- (maxy-endy));
+
+    signed char v1,v2;
+    
+    if (count>w)
+        count=w;
+
+    for (int i=0; i<count-1;i++) {
+        v1 = val[i+start]*0.5;
+        
+       
+        /*if ((v1-miny)<=0)
+            v1=miny;
+
+        if ((v1-miny)>=h)
+            v1=v1*0.5;*/
+            
+        //pc_PCD8544.traceOut("v1=%i ",v1);
+       
+        v2 = val[i+start+1]*0.5;
+        
+         //pc_PCD8544.traceOut("v2=%i",v2);
+/*
+        if ((v2-miny)<=0)
+            v2=miny;
+
+        if ((v2-miny)>=h)
+            v2=h;*/
+ 
+ //drawpixel(x0+i,y0-v1,PIXEL_ON,FALSE);
+ 
+        drawline(x0+i,y0-v1,x0+i+1,y0-v2,PIXEL_ON,FALSE);
+    }
+
+    /*
+
+        BYTE V;
+    char s[2];
+
+    for (int i=0;i<unitx;i++){
+      V=axisx+i*axisunitx;
+
+    std::string s;
+    std::stringstream out;
+    out << V;
+    s = out.str();
+
+      if (B>10)
+        writeString(x0-4,0,"Hallo Pieter-Jan",TINYFONT,NORMAL,TRUE);
+      }
+      }*/
+
+    update();
+}
+
+/*
+void PCD8544LCD::writeCharBig(BYTE x, BYTE y, BYTE ch, eDisplayMode mode) {
+    BYTE sendByte;
+
+    unsigned char* pFont = (unsigned char *) font_bignumber;
+
+    if ('.' == ch)
+        ch = 10;
+    else if ('+' == ch)
+        ch = 11;
+    else if ('-' == ch)
+        ch = 12;
+    else
+        ch = ch & 0x0f;
+
+    for (BYTE i = 0; i < 3; i++) {
+        locate(x, y + i);
+
+        for (BYTE j = 0; j < 16; j++) {
+            sendByte =  *(pFont + ch*48 + i*16 + j);
+            writeData((mode == NORMAL)? sendByte : (sendByte^0xff));
+        }
+    }
+}
+
+
+void PCD8544LCD::writeStringBig(BYTE x0, BYTE y0, char* string, eDisplayMode mode, BYTE fupdate) {
+    while (*string) {
+        writeCharBig(x0, y0, *string , mode);
+
+        if ('.' == *string++)
+            x0 += 5;
+        else
+            x0 += 12;
+    }
+}
+*/
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PCD8544LCD.h	Sun Apr 17 18:03:24 2011 +0000
@@ -0,0 +1,185 @@
+/* mbed PCD8544 - Graphic Library for driving monochrome displays based on PCD8544
+ *  used in Nokia 3310, 3315, 3330, 3350, 3410, 3210,  5110, 5120, 5130, 5160, 6110, 6150
+ *
+ * Copyright (c) 2011, Wim De Roeve
+ * partial port of the code found on http://serdisplib.sourceforge.net/ser/pcd8544.html#links
+ * and by Petras Saduikis <petras@petras.co.uk>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+#ifndef PCD8544LCD_H
+#define PCD8544LCD_H
+
+#include "mbed.h"
+
+/* Number of pixels on the LCD */
+#define LCD_X_RES  84
+#define LCD_Y_RES  48
+#define LCD_BANKS (LCD_Y_RES / 8)
+
+#define LCD_CACHE_SIZE ((LCD_X_RES * LCD_Y_RES) / 8)
+
+#define MAX_ADR_X  (LCD_X_RES)-1
+#define MAX_ADR_Y  LCD_BANKS-1
+
+#define HIGH  1
+#define LOW   0
+#define TRUE  1
+#define FALSE 0
+
+/* Display control command */
+#define EXTENDEDSET   0x21
+#define STANDARDSET   0x20
+#define DISPLAYOFF    0x08  // switch off display 
+#define ALL_SEG_ON    0x09  // switch on display and set to all pixels on
+#define NORMAL_MODE   0x0C  // NOREVERSE
+#define INVERSE_MODE  0x0D  // REVERSE
+
+#define SET_ADDRES_X  0x80
+#define SET_ADDRES_Y  0x40
+
+
+typedef uint8_t BYTE;
+
+typedef enum {
+    PIXEL_OFF = 0,
+    PIXEL_ON = 1,
+    PIXEL_XOR = 2
+}ePixelMode;
+
+typedef enum {
+    FILL_OFF = 0,
+    FILL_ON = 1
+}eFillMode;
+
+typedef enum {
+    RASTER_OFF = 0,
+    RASTER_ON = 1
+}eRasterMode;
+
+typedef enum {
+    VERYSMALLFONT = 0, //3x5
+    TINYFONT =      1, //5x7
+    SMALLFONT =     2, //6x8
+    NORMALFONT =    3, //8x8
+    BIGFONT    =    4, //8x12&#65533;
+    TIMENUMBERFONT= 5, //16x20
+    BIGNUMBERFONT=  6
+}eFonts;
+
+
+enum eDisplayMode {NORMAL, HIGHLIGHT};
+
+class PCD8544LCD {
+
+    /* PCD8544 from Philips Semiconductors is
+        48 x 84 pixels monochrome matrix LCD controller/driver
+
+        The PCD8544 has a 504 byte memory with NO read function.
+        Each bit is a pixel
+        You can only write 1 byte at a time in vertical or horizontal mode.
+        There is no read functionality with the controller.
+        Caching a copy of the LCD-memory is the only solution if we want
+        to set one pixel at a time.
+
+    */
+public:
+    PCD8544LCD(PinName mosi, PinName miso, PinName sclk,
+               PinName cs, PinName dc, PinName reset);
+
+    /** init()
+     *
+     * Initialise the device.
+     * @param PinName SPI mosi
+     * @param PinName SPI miso
+     * @param PinName SPI sclk
+     * @param PinName DigitalOut cs
+     * @param PinName DigitalOut dc
+     * @param PinName DigitalOut reset
+    */
+
+    void init();
+
+    /** cls()
+     *  clears the cached copy of the screen
+     *  and the screen itself
+    */
+    void cls();
+
+    /** update()
+     *  copies the cached memory to the screen
+     *  use this to update the screen after
+     *  - drawBitmap
+    */
+    void update();
+
+    /** close()
+     *  screen display OFF
+    */
+    void close();
+
+    /** locate(x,y)
+     *  sets the cursor on position x,y
+    */
+    void locate         (BYTE x0, BYTE y0);
+
+    void chooseFont(eFonts font);
+
+    void writeString    (BYTE x0, BYTE y0, char* string, eFonts font, eDisplayMode mode, BYTE update);
+    void writeChar      (BYTE x0, BYTE y0, BYTE ch,  eFonts font,eDisplayMode mode, BYTE update);
+
+    /** drawBitmap(x,y,bitmap,xsize,ysize)
+     *  draw a monochrome bitmap on position x,y
+     *  with size xsize,ysize
+    */
+    void drawBitmap     (BYTE x0, BYTE y0, BYTE* bitmap, BYTE bmpXSize, BYTE bmpYSize, BYTE update);
+
+    void drawpixel      (BYTE x0, BYTE y0, ePixelMode pmode, BYTE update);
+    void drawline       (BYTE x0, BYTE y0, BYTE x1,BYTE y1, ePixelMode pmode, BYTE update);
+    void drawcircle     (BYTE x0, BYTE y0, BYTE radius, ePixelMode pmode, BYTE update);
+    void drawrectangle  (BYTE x0, BYTE y0, BYTE x1,BYTE y1, eFillMode fill, ePixelMode pmode, BYTE update);
+    void drawprogressbar(BYTE x0, BYTE y0, BYTE w, BYTE h, BYTE percentage, BYTE update);
+    void drawchart      (BYTE  x0, BYTE y0, BYTE w, BYTE h, BYTE unitx, BYTE unity,
+                         eRasterMode rmode,signed char * val, int start, int count);
+
+private:
+
+    SPI _spi;
+    DigitalOut _cs;    // chip select
+    DigitalOut _dc;    // data / command
+    DigitalOut _reset; // reset
+
+    void writeCmd(BYTE data);
+    void writeData(BYTE data);
+
+    BYTE _LcdCache[ LCD_CACHE_SIZE ];  // local LCD buffer
+
+    int _LcdCacheIdx;
+    int _LoMark;
+    int _HiMark;
+
+    BYTE _font_width;
+    BYTE _font_height;
+    BYTE _font_start;
+    BYTE _font_end;
+    unsigned char* _pFont;
+
+};
+
+#endif
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fonts/font_16x20.cpp	Sun Apr 17 18:03:24 2011 +0000
@@ -0,0 +1,29 @@
+#include "font_16x20.h"
+
+
+//0x20 - 0x3A
+const unsigned char font_16x20[] = 
+{
+  0xf4,0xbf,0xf8,0x7f,0x1c,0xe0,0xec,0xdf,0x1c,0xe0,0x1c,0xe0,0x0c,0xc0,0x1c,0xe0,0x00,0x00,0x04,0x80,
+  0x0c,0xc0,0x04,0x80,0x1c,0xe0,0x1c,0xe0,0x1c,0xe0,0x1c,0xe0,0xec,0xdf,0x1c,0xe0,0xf8,0x7f,0xf4,0xbf, // 0x30
+  0x04,0x00,0x00,0x00,0x1c,0x00,0x0c,0x00,0x1c,0x00,0x1c,0x00,0x0c,0x00,0x1c,0x00,0x00,0x00,0x04,0x00,
+  0x0c,0x00,0x04,0x00,0x1c,0x00,0x1c,0x00,0x1c,0x00,0x1c,0x00,0x0c,0x00,0x1c,0x00,0x00,0x00,0x04,0x00, // 0x31
+  0xf4,0x3f,0xf8,0x7f,0x1c,0x00,0xec,0x1f,0x1c,0x00,0x1c,0x00,0x0c,0x00,0x1c,0x00,0xf8,0x7f,0xf4,0x3f,
+  0x00,0xc0,0xf0,0xbf,0x00,0xe0,0x00,0xe0,0x00,0xe0,0x00,0xe0,0xe0,0xdf,0x00,0xe0,0xf8,0x7f,0xf0,0xbf, // 0x32
+  0xf4,0x3f,0xf8,0x7f,0x1c,0x00,0xec,0x1f,0x1c,0x00,0x1c,0x00,0x0c,0x00,0x1c,0x00,0xf8,0x7f,0xf4,0x3f,
+  0x0c,0x00,0xf4,0x3f,0x1c,0x00,0x1c,0x00,0x1c,0x00,0x1c,0x00,0xec,0x1f,0x1c,0x00,0xf8,0x7f,0xf4,0x3f, // 0x33
+  0x04,0x80,0x00,0x00,0x1c,0xe0,0x0c,0xc0,0x1c,0xe0,0x1c,0xe0,0x0c,0xc0,0x1c,0xe0,0xf8,0x7f,0xf4,0xbf,
+  0x0c,0x00,0xf4,0x3f,0x1c,0x00,0x1c,0x00,0x1c,0x00,0x1c,0x00,0x0c,0x00,0x1c,0x00,0x00,0x00,0x04,0x00, // 0x34
+  0xf0,0xbf,0xf8,0x7f,0x00,0xe0,0xe0,0xdf,0x00,0xe0,0x00,0xe0,0x00,0xc0,0x00,0xe0,0xf8,0x7f,0xf0,0xbf,
+  0x0c,0x00,0xf4,0x3f,0x1c,0x00,0x1c,0x00,0x1c,0x00,0x1c,0x00,0xec,0x1f,0x1c,0x00,0xf8,0x7f,0xf4,0x3f, // 0x35
+  0xf0,0xbf,0xf8,0x7f,0x00,0xe0,0xe0,0xdf,0x00,0xe0,0x00,0xe0,0x00,0xc0,0x00,0xe0,0xf8,0x7f,0xf0,0xbf,
+  0x0c,0xc0,0xf4,0xbf,0x1c,0xe0,0x1c,0xe0,0x1c,0xe0,0x1c,0xe0,0xec,0xdf,0x1c,0xe0,0xf8,0x7f,0xf4,0xbf, // 0x36
+  0xf4,0x3f,0xf8,0x7f,0x1c,0x00,0xec,0x1f,0x1c,0x00,0x1c,0x00,0x0c,0x00,0x1c,0x00,0x00,0x00,0x04,0x00,
+  0x0c,0x00,0x04,0x00,0x1c,0x00,0x1c,0x00,0x1c,0x00,0x1c,0x00,0x0c,0x00,0x1c,0x00,0x00,0x00,0x04,0x00, // 0x37
+  0xf4,0xbf,0xf8,0x7f,0x1c,0xe0,0xec,0xdf,0x1c,0xe0,0x1c,0xe0,0x0c,0xc0,0x1c,0xe0,0xf8,0x7f,0xf4,0xbf,
+  0x0c,0xc0,0xf4,0xbf,0x1c,0xe0,0x1c,0xe0,0x1c,0xe0,0x1c,0xe0,0xec,0xdf,0x1c,0xe0,0xf8,0x7f,0xf4,0xbf, // 0x38
+  0xf4,0xbf,0xf8,0x7f,0x1c,0xe0,0xec,0xdf,0x1c,0xe0,0x1c,0xe0,0x0c,0xc0,0x1c,0xe0,0xf8,0x7f,0xf4,0xbf,
+  0x0c,0x00,0xf4,0x3f,0x1c,0x00,0x1c,0x00,0x1c,0x00,0x1c,0x00,0x0c,0x00,0x1c,0x00,0x00,0x00,0x04,0x00, // 0x39
+  0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x80,0x0f,0x00,0x07,0x00,0x02,0x00,0x07,0x00,0x00,0x00,0x00,
+  0x00,0x02,0x00,0x00,0x80,0x0f,0x00,0x07,0x00,0x02,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  // 0x3a
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fonts/font_16x20.h	Sun Apr 17 18:03:24 2011 +0000
@@ -0,0 +1,16 @@
+#ifndef _FONT_16x20_H_
+#define _FONT_16x20_H_
+
+
+//----- DEFINES -----
+#define FONT16x20_START                   0x30
+#define FONT16x20_END                     0x3A
+#define FONT16x20_WIDTH                   16
+#define FONT16x20_HEIGHT                  20
+
+
+//----- GLOBALS -----
+extern const unsigned char font_16x20[];
+
+
+#endif 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fonts/font_16x24.h	Sun Apr 17 18:03:24 2011 +0000
@@ -0,0 +1,145 @@
+#ifndef _FONT_16x24_H_
+#define _FONT_16x24_H_
+
+//----- DEFINES -----
+#define FONT16x24_START                   0x30
+#define FONT16x24_END                     0x3A
+#define FONT16x24_WIDTH                   16
+#define FONT16x24_HEIGHT                  24
+
+//used here for displaying numbers 0 - 9 and '+', '-', '.'
+
+unsigned char   font_16x24[13][3][16]  = 
+{
+    0,128,192,224,224,96,224,224,  //'0'
+    192,128,0,0,0,0,0,0
+    ,
+    112,255,255,1,0,0,0,0,
+    255,255,254,0,0,0,0,0
+    ,
+    0,15,31,60,56,48,56,56,
+    31,15,3,0,0,0,0,0
+    ,
+
+    0,0,0,0,128,224,224,0,            //'1'
+    0,0,0,0,0,0,0,0
+    ,
+    0,0,3,3,3,255,255,0,
+    0,0,0,0,0,0,0,0
+    ,
+    0,0,56,56,56,63,63,56,
+    56,56,0,0,0,0,0,0
+    ,
+
+    0,192,192,224,96,96,224,224,   //'2'
+    192,128,0,0,0,0,0,0
+    ,
+    0,1,0,0,128,192,224,249,
+    63,31,0,0,0,0,0,0
+    ,
+    0,60,62,63,63,59,57,56,
+    56,56,56,0,0,0,0,0
+    ,
+
+    0,192,224,224,96,96,224,224,   //'3'
+    192,192,0,0,0,0,0,0
+    ,
+    0,1,0,0,48,48,56,125,
+    239,207,0,0,0,0,0,0
+    ,
+    0,28,56,56,48,48,56,60,
+    31,15,1,0,0,0,0,0
+    ,
+
+    0,0,0,0,0,128,192,224,            //'4'
+    224,0,0,0,0,0,0,0
+    ,
+    224,240,248,222,207,199,193,255,
+    255,192,192,0,0,0,0,0
+    ,
+    0,0,0,0,0,0,0,63,
+    63,0,0,0,0,0,0,0
+    ,
+
+    0,224,224,224,224,224,224,224,    //'5'
+    224,224,224,0,0,0,0,0
+    ,
+    0,63,63,63,56,56,48,112,
+    240,224,0,0,0,0,0,0
+    ,
+    0,28,56,56,48,48,56,60,
+    31,15,1,0,0,0,0,0
+    ,
+
+    0,0,128,192,192,224,96,96,        //'6'
+    224,224,0,0,0,0,0,0
+    ,
+    224,254,255,55,57,24,24,56,
+    240,240,192,0,0,0,0,0
+    ,
+    0,15,31,28,56,48,48,56,
+    31,15,7,0,0,0,0,0
+    ,
+
+    0,224,224,224,224,224,224,224,         //'7'
+    224,224,224,0,0,0,0,0
+    ,
+    0,0,0,0,128,224,248,126,
+    31,7,1,0,0,0,0,0
+    ,
+    0,0,56,62,31,7,1,0,
+    0,0,0,0,0,0,0,0
+    ,
+
+    0,128,192,224,224,96,96,224,         //'8'
+    192,192,0,0,0,0,0,0
+    ,
+    0,207,255,127,56,48,112,112,
+    255,239,199,0,0,0,0,0
+    ,
+    3,15,31,60,56,48,48,56,
+    31,31,15,0,0,0,0,0
+    ,
+
+    0,128,192,224,224,96,224,224,         //'9'
+    192,128,0,0,0,0,0,0
+    ,
+    12,63,127,241,224,192,192,225,
+    255,255,254,0,0,0,0,0
+    ,
+    0,0,56,48,48,56,56,30,
+    15,7,0,0,0,0,0,0
+    ,
+
+
+    0,0,0,0,0,0,0,0,                         //'.'
+    0,0,0,0,0,0,0,0
+    ,
+    0,0,0,0,0,0,0,0,
+    0,0,0,0,0,0,0,0
+    ,
+    60,60,60,0,0,0,0,0,
+    0,0,0,0,0,0,0,0
+    ,
+
+    0,0,0,0,0,0,0,0,                        //'+'
+    0,0,0,0,0,0,0,0
+    ,
+    0,0,64,64,64,64,64,254,
+    254,64,64,64,64,64,0,0
+    ,
+    0,0,0,0,0,0,0,15,
+    15,0,0,0,0,0,0,0
+    ,
+
+    0,0,0,0,0,0,0,0,                         //'-'
+    0,0,0,0,0,0,0,0
+    ,
+    0,64,64,64,64,64,64,0,
+    0,0,0,0,0,0,0,0
+    ,
+    0,0,0,0,0,0,0,0,
+    0,0,0,0,0,0,0,0
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fonts/font_3x5.h	Sun Apr 17 18:03:24 2011 +0000
@@ -0,0 +1,20 @@
+/* *******************************************
+ * Only numbers in a 3x5 dot format 
+ ********************************************* */
+#define FONT3x5_START                    0x30
+#define FONT3x5_END                      0x39
+#define FONT3x5_WIDTH                    3
+#define FONT3x5_HEIGHT                   5
+
+static const char font_3x5[] = {
+    0x1F, 0x11, 0x1F,  // 0   //0x30
+    0x00, 0x1F, 0x00,  // 1   //0x31
+    0x1D, 0x15, 0x17,  // 2   //0x32
+    0x15, 0x15, 0x1F,  // 3//0x33
+    0x07, 0x04, 0x1F,  // 4//0x34
+    0x17, 0x15, 0x1D,  // 5//0x35
+    0x1F, 0x14, 0x1C,  // 6//0x36
+    0x01, 0x01, 0x1F,  // 7//0x37
+    0x1F, 0x15, 0x1F,  // 8//0x38
+    0x07, 0x05, 0x1F,  // 9//0x39
+};
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fonts/font_5x7.h	Sun Apr 17 18:03:24 2011 +0000
@@ -0,0 +1,100 @@
+#define FONT5x7_START                    0x20
+#define FONT5x7_END                      0x7A
+#define FONT5x7_WIDTH                    5
+#define FONT5x7_HEIGHT                   7
+
+
+static const char font_5x7[][5] =
+{
+   { 0x00, 0x00, 0x00, 0x00, 0x00 },  // sp
+   { 0x00, 0x00, 0x2f, 0x00, 0x00 },  // !
+   { 0x00, 0x07, 0x00, 0x07, 0x00 },  // "
+   { 0x14, 0x7f, 0x14, 0x7f, 0x14 },  // #
+   { 0x24, 0x2a, 0x7f, 0x2a, 0x12 },  // $
+   { 0xc4, 0xc8, 0x10, 0x26, 0x46 },  // %
+   { 0x36, 0x49, 0x55, 0x22, 0x50 },  // &
+   { 0x00, 0x05, 0x03, 0x00, 0x00 },  // '
+   { 0x00, 0x1c, 0x22, 0x41, 0x00 },  // (
+   { 0x00, 0x41, 0x22, 0x1c, 0x00 },  // )
+   { 0x14, 0x08, 0x3E, 0x08, 0x14 },  // *
+   { 0x08, 0x08, 0x3E, 0x08, 0x08 },  // +
+   { 0x00, 0x00, 0x50, 0x30, 0x00 },  // ,
+   { 0x10, 0x10, 0x10, 0x10, 0x10 },  // -
+   { 0x00, 0x60, 0x60, 0x00, 0x00 },  // .
+   { 0x20, 0x10, 0x08, 0x04, 0x02 },  // /
+   { 0x3E, 0x51, 0x49, 0x45, 0x3E },  // 0
+   { 0x00, 0x42, 0x7F, 0x40, 0x00 },  // 1
+   { 0x42, 0x61, 0x51, 0x49, 0x46 },  // 2
+   { 0x21, 0x41, 0x45, 0x4B, 0x31 },  // 3
+   { 0x18, 0x14, 0x12, 0x7F, 0x10 },  // 4
+   { 0x27, 0x45, 0x45, 0x45, 0x39 },  // 5
+   { 0x3C, 0x4A, 0x49, 0x49, 0x30 },  // 6
+   { 0x01, 0x71, 0x09, 0x05, 0x03 },  // 7
+   { 0x36, 0x49, 0x49, 0x49, 0x36 },  // 8
+   { 0x06, 0x49, 0x49, 0x29, 0x1E },  // 9
+   { 0x00, 0x36, 0x36, 0x00, 0x00 },  // :
+   { 0x00, 0x56, 0x36, 0x00, 0x00 },  // ;
+   { 0x08, 0x14, 0x22, 0x41, 0x00 },  // <
+   { 0x14, 0x14, 0x14, 0x14, 0x14 },  // =
+   { 0x00, 0x41, 0x22, 0x14, 0x08 },  // >
+   { 0x02, 0x01, 0x51, 0x09, 0x06 },  // ?
+   { 0x32, 0x49, 0x59, 0x51, 0x3E },  // @
+   { 0x7E, 0x11, 0x11, 0x11, 0x7E },  // A
+   { 0x7F, 0x49, 0x49, 0x49, 0x36 },  // B
+   { 0x3E, 0x41, 0x41, 0x41, 0x22 },  // C
+   { 0x7F, 0x41, 0x41, 0x22, 0x1C },  // D
+   { 0x7F, 0x49, 0x49, 0x49, 0x41 },  // E
+   { 0x7F, 0x09, 0x09, 0x09, 0x01 },  // F
+   { 0x3E, 0x41, 0x49, 0x49, 0x7A },  // G
+   { 0x7F, 0x08, 0x08, 0x08, 0x7F },  // H
+   { 0x00, 0x41, 0x7F, 0x41, 0x00 },  // I
+   { 0x20, 0x40, 0x41, 0x3F, 0x01 },  // J
+   { 0x7F, 0x08, 0x14, 0x22, 0x41 },  // K
+   { 0x7F, 0x40, 0x40, 0x40, 0x40 },  // L
+   { 0x7F, 0x02, 0x0C, 0x02, 0x7F },  // M
+   { 0x7F, 0x04, 0x08, 0x10, 0x7F },  // N
+   { 0x3E, 0x41, 0x41, 0x41, 0x3E },  // O
+   { 0x7F, 0x09, 0x09, 0x09, 0x06 },  // P
+   { 0x3E, 0x41, 0x51, 0x21, 0x5E },  // Q
+   { 0x7F, 0x09, 0x19, 0x29, 0x46 },  // R
+   { 0x46, 0x49, 0x49, 0x49, 0x31 },  // S
+   { 0x01, 0x01, 0x7F, 0x01, 0x01 },  // T
+   { 0x3F, 0x40, 0x40, 0x40, 0x3F },  // U
+   { 0x1F, 0x20, 0x40, 0x20, 0x1F },  // V
+   { 0x3F, 0x40, 0x38, 0x40, 0x3F },  // W
+   { 0x63, 0x14, 0x08, 0x14, 0x63 },  // X
+   { 0x07, 0x08, 0x70, 0x08, 0x07 },  // Y
+   { 0x61, 0x51, 0x49, 0x45, 0x43 },  // Z
+   { 0x00, 0x7F, 0x41, 0x41, 0x00 },  // [
+   { 0x55, 0x2A, 0x55, 0x2A, 0x55 },  // 55
+   { 0x00, 0x41, 0x41, 0x7F, 0x00 },  // ]
+   { 0x04, 0x02, 0x01, 0x02, 0x04 },  // ^
+   { 0x40, 0x40, 0x40, 0x40, 0x40 },  // _
+   { 0x00, 0x01, 0x02, 0x04, 0x00 },  // '
+   { 0x20, 0x54, 0x54, 0x54, 0x78 },  // a
+   { 0x7F, 0x48, 0x44, 0x44, 0x38 },  // b
+   { 0x38, 0x44, 0x44, 0x44, 0x20 },  // c
+   { 0x38, 0x44, 0x44, 0x48, 0x7F },  // d
+   { 0x38, 0x54, 0x54, 0x54, 0x18 },  // e
+   { 0x08, 0x7E, 0x09, 0x01, 0x02 },  // f
+   { 0x0C, 0x52, 0x52, 0x52, 0x3E },  // g
+   { 0x7F, 0x08, 0x04, 0x04, 0x78 },  // h
+   { 0x00, 0x44, 0x7D, 0x40, 0x00 },  // i
+   { 0x20, 0x40, 0x44, 0x3D, 0x00 },  // j
+   { 0x7F, 0x10, 0x28, 0x44, 0x00 },  // k
+   { 0x00, 0x41, 0x7F, 0x40, 0x00 },  // l
+   { 0x7C, 0x04, 0x18, 0x04, 0x78 },  // m
+   { 0x7C, 0x08, 0x04, 0x04, 0x78 },  // n
+   { 0x38, 0x44, 0x44, 0x44, 0x38 },  // o
+   { 0x7C, 0x14, 0x14, 0x14, 0x08 },  // p
+   { 0x08, 0x14, 0x14, 0x18, 0x7C },  // q
+   { 0x7C, 0x08, 0x04, 0x04, 0x08 },  // r
+   { 0x48, 0x54, 0x54, 0x54, 0x20 },  // s
+   { 0x04, 0x3F, 0x44, 0x40, 0x20 },  // t
+   { 0x3C, 0x40, 0x40, 0x20, 0x7C },  // u
+   { 0x1C, 0x20, 0x40, 0x20, 0x1C },  // v
+   { 0x3C, 0x40, 0x30, 0x40, 0x3C },  // w
+   { 0x44, 0x28, 0x10, 0x28, 0x44 },  // x
+   { 0x0C, 0x50, 0x50, 0x50, 0x3C },  // y
+   { 0x44, 0x64, 0x54, 0x4C, 0x44 }   // z
+};
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fonts/font_6x8.cpp	Sun Apr 17 18:03:24 2011 +0000
@@ -0,0 +1,99 @@
+#include "font_6x8.h"
+const unsigned char font_6x8[576] = {
+0x00,0x00,0x00,0x00,0x00,0x00, // Symbol 20
+0x00,0x00,0x00,0x5F,0x00,0x00, // Symbol 21
+0x00,0x00,0x03,0x00,0x03,0x00, // Symbol 22
+0x22,0x7F,0x22,0x22,0x7F,0x22, // Symbol 23
+0x00,0x24,0x2A,0x6B,0x2A,0x12, // Symbol 24
+0x00,0x23,0x13,0x08,0x64,0x62, // Symbol 25
+0x00,0x3A,0x45,0x45,0x3A,0x28, // Symbol 26
+0x00,0x00,0x00,0x02,0x01,0x00, // Symbol 27
+0x00,0x00,0x3E,0x41,0x00,0x00, // Symbol 28
+0x00,0x00,0x41,0x3E,0x00,0x00, // Symbol 29
+0x00,0x2A,0x1C,0x1C,0x2A,0x00, // Symbol 2A
+0x00,0x08,0x08,0x3E,0x08,0x08, // Symbol 2B
+0x00,0x00,0x80,0x40,0x00,0x00, // Symbol 2C
+0x00,0x08,0x08,0x08,0x08,0x00, // Symbol 2D
+0x00,0x00,0x00,0x40,0x00,0x00, // Symbol 2E
+0x00,0x20,0x10,0x08,0x04,0x02, // Symbol 2F
+0x00,0x3E,0x51,0x49,0x45,0x3E, // Symbol 30
+0x00,0x00,0x42,0x7F,0x40,0x00, // Symbol 31
+0x00,0x62,0x51,0x51,0x51,0x4E, // Symbol 32
+0x00,0x21,0x41,0x45,0x45,0x3B, // Symbol 33
+0x00,0x18,0x16,0x11,0x7F,0x10, // Symbol 34
+0x00,0x27,0x45,0x45,0x45,0x39, // Symbol 35
+0x00,0x3E,0x49,0x49,0x49,0x32, // Symbol 36
+0x00,0x01,0x61,0x11,0x09,0x07, // Symbol 37
+0x00,0x36,0x49,0x49,0x49,0x36, // Symbol 38
+0x00,0x26,0x49,0x49,0x49,0x3E, // Symbol 39
+0x00,0x00,0x00,0x12,0x00,0x00, // Symbol 3A
+0x00,0x00,0x20,0x12,0x00,0x00, // Symbol 3B
+0x00,0x08,0x14,0x22,0x41,0x00, // Symbol 3C
+0x00,0x14,0x14,0x14,0x14,0x14, // Symbol 3D
+0x00,0x41,0x22,0x14,0x08,0x00, // Symbol 3E
+0x00,0x06,0x01,0x51,0x09,0x06, // Symbol 3F
+0x00,0x3E,0x41,0x4D,0x4D,0x2E, // Symbol 40
+0x00,0x78,0x16,0x11,0x16,0x78, // Symbol 41
+0x00,0x7F,0x49,0x49,0x49,0x36, // Symbol 42
+0x00,0x3E,0x41,0x41,0x41,0x22, // Symbol 43
+0x00,0x7F,0x41,0x41,0x41,0x3E, // Symbol 44
+0x00,0x7F,0x49,0x49,0x49,0x41, // Symbol 45
+0x00,0x7F,0x09,0x09,0x09,0x01, // Symbol 46
+0x00,0x3E,0x41,0x41,0x51,0x32, // Symbol 47
+0x00,0x7F,0x08,0x08,0x08,0x7F, // Symbol 48
+0x00,0x00,0x41,0x7F,0x41,0x00, // Symbol 49
+0x00,0x30,0x40,0x41,0x41,0x3F, // Symbol 4A
+0x00,0x7F,0x08,0x08,0x14,0x63, // Symbol 4B
+0x00,0x7F,0x40,0x40,0x40,0x60, // Symbol 4C
+0x00,0x7F,0x04,0x18,0x04,0x7F, // Symbol 4D
+0x00,0x7F,0x04,0x08,0x10,0x7F, // Symbol 4E
+0x00,0x3E,0x41,0x41,0x41,0x3E, // Symbol 4F
+0x00,0x7F,0x09,0x09,0x09,0x06, // Symbol 50
+0x00,0x3E,0x41,0x61,0x21,0x5E, // Symbol 51
+0x00,0x7F,0x09,0x09,0x19,0x66, // Symbol 52
+0x00,0x26,0x49,0x49,0x49,0x32, // Symbol 53
+0x00,0x01,0x01,0x7F,0x01,0x01, // Symbol 54
+0x00,0x3F,0x40,0x40,0x40,0x3F, // Symbol 55
+0x00,0x07,0x18,0x60,0x18,0x07, // Symbol 56
+0x00,0x1F,0x60,0x18,0x60,0x1F, // Symbol 57
+0x00,0x63,0x14,0x08,0x14,0x63, // Symbol 58
+0x00,0x03,0x04,0x78,0x04,0x03, // Symbol 59
+0x00,0x61,0x51,0x49,0x45,0x43, // Symbol 5A
+0x00,0x00,0x7F,0x41,0x00,0x00, // Symbol 5B
+0x00,0x02,0x04,0x08,0x10,0x20, // Symbol 5C
+0x00,0x00,0x41,0x7F,0x00,0x00, // Symbol 5D
+0x00,0x00,0x00,0x00,0x00,0x00, // Symbol 5E
+0x40,0x40,0x40,0x40,0x40,0x40, // Symbol 5F
+0x00,0x00,0x00,0x01,0x02,0x00, // Symbol 60
+0x00,0x20,0x54,0x54,0x54,0x78, // Symbol 61
+0x00,0x7E,0x48,0x48,0x48,0x30, // Symbol 62
+0x00,0x38,0x44,0x44,0x44,0x28, // Symbol 63
+0x00,0x30,0x48,0x48,0x48,0x7E, // Symbol 64
+0x00,0x38,0x54,0x54,0x54,0x18, // Symbol 65
+0x00,0x10,0x7C,0x12,0x02,0x04, // Symbol 66
+0x00,0x0C,0x52,0x52,0x3C,0x02, // Symbol 67
+0x00,0x7E,0x08,0x08,0x08,0x70, // Symbol 68
+0x00,0x00,0x00,0x74,0x00,0x00, // Symbol 69
+0x00,0x40,0x80,0x80,0x74,0x00, // Symbol 6A
+0x00,0x7E,0x10,0x10,0x10,0x6C, // Symbol 6B
+0x00,0x00,0x02,0x7E,0x00,0x00, // Symbol 6C
+0x00,0x7C,0x04,0x78,0x04,0x78, // Symbol 6D
+0x00,0x7C,0x04,0x04,0x04,0x78, // Symbol 6E
+0x00,0x38,0x44,0x44,0x44,0x38, // Symbol 6F
+0x00,0xFC,0x24,0x24,0x24,0x18, // Symbol 70
+0x00,0x18,0x24,0x24,0x24,0xFC, // Symbol 71
+0x00,0x7C,0x08,0x04,0x04,0x08, // Symbol 72
+0x00,0x48,0x54,0x54,0x54,0x20, // Symbol 73
+0x00,0x08,0x3E,0x48,0x40,0x00, // Symbol 74
+0x00,0x3C,0x40,0x40,0x40,0x3C, // Symbol 75
+0x00,0x1C,0x20,0x40,0x20,0x1C, // Symbol 76
+0x00,0x3C,0x40,0x30,0x40,0x3C, // Symbol 77
+0x00,0x44,0x28,0x10,0x28,0x44, // Symbol 78
+0x00,0x1C,0x20,0xA0,0xA0,0x7C, // Symbol 79
+0x00,0x44,0x64,0x54,0x4C,0x44, // Symbol 7A
+0x00,0x08,0x36,0x41,0x00,0x00, // Symbol 7B
+0x00,0x00,0x00,0x7F,0x00,0x00, // Symbol 7C
+0x00,0x00,0x41,0x36,0x08,0x00, // Symbol 7D
+0x02,0x01,0x01,0x02,0x02,0x01, // Symbol 7E
+0x00,0x7F,0x7F,0x7F,0x7F,0x7F  // Symbol 7F
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fonts/font_6x8.h	Sun Apr 17 18:03:24 2011 +0000
@@ -0,0 +1,16 @@
+#ifndef _FONT_6X8_H_
+#define _FONT_6X8_H_
+
+
+//----- DEFINES -----
+#define FONT6x8_START            0x20
+#define FONT6x8_END              0x7A
+#define FONT6x8_WIDTH            6
+#define FONT6x8_HEIGHT           8
+
+
+//----- GLOBALS -----
+extern const unsigned char font_6x8[];
+
+
+#endif 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fonts/font_8x12.cpp	Sun Apr 17 18:03:24 2011 +0000
@@ -0,0 +1,231 @@
+#include "font_8x12.h"
+
+
+//0x20 - 0xFF
+const unsigned char font_8x12[] = 
+{
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 0x20
+  0x78,0x78,0x30,0x00,0x00,0x30,0x30,0x78,0x00,0x00,0x30,0x30, // 0x21
+  0x66,0x66,0x66,0x00,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x00, // 0x22
+  0xfe,0x6c,0x6c,0x00,0xfe,0x6c,0x6c,0x6c,0x00,0x00,0x6c,0x6c, // 0x23
+  0xc0,0x7c,0x30,0x30,0x0c,0x0c,0x78,0xc0,0x00,0x30,0x30,0xf8, // 0x24
+  0xc4,0x00,0x00,0x00,0x60,0x30,0x18,0xcc,0x00,0x00,0x8c,0xcc, // 0x25
+  0xd8,0xd8,0x70,0x00,0xcc,0xde,0xfa,0x70,0x00,0x00,0x76,0xdc, // 0x26
+  0x30,0x30,0x30,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00, // 0x27
+  0x30,0x18,0x0c,0x00,0x30,0x60,0x60,0x60,0x00,0x00,0x0c,0x18, // 0x28
+  0x18,0x30,0x60,0x00,0x18,0x0c,0x0c,0x0c,0x00,0x00,0x60,0x30, // 0x29
+  0x66,0x00,0x00,0x00,0x66,0x3c,0xff,0x3c,0x00,0x00,0x00,0x00, // 0x2a
+  0x18,0x00,0x00,0x00,0x18,0x18,0x7e,0x18,0x00,0x00,0x00,0x00, // 0x2b
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x38,0x38, // 0x2c
+  0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00, // 0x2d
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x38, // 0x2e
+  0x06,0x02,0x00,0x00,0x60,0x30,0x18,0x0c,0x00,0x00,0x80,0xc0, // 0x2f
+  0xce,0xc6,0x7c,0x00,0xe6,0xf6,0xd6,0xde,0x00,0x00,0x7c,0xc6, // 0x30
+  0xf0,0x30,0x10,0x00,0x30,0x30,0x30,0x30,0x00,0x00,0xfc,0x30, // 0x31
+  0xcc,0xcc,0x78,0x00,0x60,0x30,0x18,0x0c,0x00,0x00,0xfc,0xcc, // 0x32
+  0x0c,0xcc,0x78,0x00,0x0c,0x0c,0x38,0x0c,0x00,0x00,0x78,0xcc, // 0x33
+  0x3c,0x1c,0x0c,0x00,0x0c,0xfe,0xcc,0x6c,0x00,0x00,0x1e,0x0c, // 0x34
+  0xc0,0xc0,0xfc,0x00,0x0c,0x0c,0xf8,0xc0,0x00,0x00,0x78,0xcc, // 0x35
+  0xc0,0x60,0x38,0x00,0xcc,0xcc,0xf8,0xc0,0x00,0x00,0x78,0xcc, // 0x36
+  0xc6,0xc6,0xfe,0x00,0x30,0x18,0x0c,0x06,0x00,0x00,0x30,0x30, // 0x37
+  0xcc,0xcc,0x78,0x00,0xcc,0xcc,0x78,0xcc,0x00,0x00,0x78,0xcc, // 0x38
+  0xcc,0xcc,0x78,0x00,0x18,0x18,0x7c,0xcc,0x00,0x00,0x70,0x30, // 0x39
+  0x38,0x00,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x00,0x38, // 0x3a
+  0x38,0x00,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x30,0x18,0x38, // 0x3b
+  0x30,0x18,0x0c,0x00,0x30,0x60,0xc0,0x60,0x00,0x00,0x0c,0x18, // 0x3c
+  0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x7e,0x00,0x00,0x00,0x00, // 0x3d
+  0x18,0x30,0x60,0x00,0x18,0x0c,0x06,0x0c,0x00,0x00,0x60,0x30, // 0x3e
+  0x0c,0xcc,0x78,0x00,0x00,0x30,0x30,0x18,0x00,0x00,0x30,0x30, // 0x3f
+  0xc6,0xc6,0x7c,0x00,0xc0,0xde,0xde,0xde,0x00,0x00,0x7c,0xc0, // 0x40
+  0xcc,0x78,0x30,0x00,0xcc,0xfc,0xcc,0xcc,0x00,0x00,0xcc,0xcc, // 0x41
+  0x66,0x66,0xfc,0x00,0x66,0x66,0x7c,0x66,0x00,0x00,0xfc,0x66, // 0x42
+  0xc6,0x66,0x3c,0x00,0xc6,0xc0,0xc0,0xc0,0x00,0x00,0x3c,0x66, // 0x43
+  0x66,0x6c,0xf8,0x00,0x66,0x66,0x66,0x66,0x00,0x00,0xf8,0x6c, // 0x44
+  0x60,0x62,0xfe,0x00,0x60,0x64,0x7c,0x64,0x00,0x00,0xfe,0x62, // 0x45
+  0x62,0x66,0xfe,0x00,0x60,0x64,0x7c,0x64,0x00,0x00,0xf0,0x60, // 0x46
+  0xc6,0x66,0x3c,0x00,0xc6,0xce,0xc0,0xc0,0x00,0x00,0x3e,0x66, // 0x47
+  0xcc,0xcc,0xcc,0x00,0xcc,0xcc,0xfc,0xcc,0x00,0x00,0xcc,0xcc, // 0x48
+  0x30,0x30,0x78,0x00,0x30,0x30,0x30,0x30,0x00,0x00,0x78,0x30, // 0x49
+  0x0c,0x0c,0x1e,0x00,0xcc,0xcc,0x0c,0x0c,0x00,0x00,0x78,0xcc, // 0x4a
+  0x6c,0x66,0xe6,0x00,0x6c,0x6c,0x78,0x6c,0x00,0x00,0xe6,0x66, // 0x4b
+  0x60,0x60,0xf0,0x00,0x66,0x62,0x60,0x60,0x00,0x00,0xfe,0x66, // 0x4c
+  0xfe,0xee,0xc6,0x00,0xc6,0xc6,0xd6,0xfe,0x00,0x00,0xc6,0xc6, // 0x4d
+  0xe6,0xc6,0xc6,0x00,0xce,0xde,0xfe,0xf6,0x00,0x00,0xc6,0xc6, // 0x4e
+  0xc6,0x6c,0x38,0x00,0xc6,0xc6,0xc6,0xc6,0x00,0x00,0x38,0x6c, // 0x4f
+  0x66,0x66,0xfc,0x00,0x60,0x60,0x7c,0x66,0x00,0x00,0xf0,0x60, // 0x50
+  0xc6,0x6c,0x38,0x00,0xde,0xce,0xc6,0xc6,0x00,0x1e,0x0c,0x7c, // 0x51
+  0x66,0x66,0xfc,0x00,0x66,0x6c,0x7c,0x66,0x00,0x00,0xe6,0x66, // 0x52
+  0xcc,0xcc,0x78,0x00,0xcc,0x18,0x70,0xc0,0x00,0x00,0x78,0xcc, // 0x53
+  0x30,0xb4,0xfc,0x00,0x30,0x30,0x30,0x30,0x00,0x00,0x78,0x30, // 0x54
+  0xcc,0xcc,0xcc,0x00,0xcc,0xcc,0xcc,0xcc,0x00,0x00,0x78,0xcc, // 0x55
+  0xcc,0xcc,0xcc,0x00,0xcc,0xcc,0xcc,0xcc,0x00,0x00,0x30,0x78, // 0x56
+  0xc6,0xc6,0xc6,0x00,0x6c,0xd6,0xd6,0xc6,0x00,0x00,0x6c,0x6c, // 0x57
+  0xcc,0xcc,0xcc,0x00,0xcc,0x78,0x30,0x78,0x00,0x00,0xcc,0xcc, // 0x58
+  0xcc,0xcc,0xcc,0x00,0x30,0x30,0x78,0xcc,0x00,0x00,0x78,0x30, // 0x59
+  0x98,0xce,0xfe,0x00,0x62,0x60,0x30,0x18,0x00,0x00,0xfe,0xc6, // 0x5a
+  0x30,0x30,0x3c,0x00,0x30,0x30,0x30,0x30,0x00,0x00,0x3c,0x30, // 0x5b
+  0xc0,0x80,0x00,0x00,0x0c,0x18,0x30,0x60,0x00,0x00,0x02,0x06, // 0x5c
+  0x0c,0x0c,0x3c,0x00,0x0c,0x0c,0x0c,0x0c,0x00,0x00,0x3c,0x0c, // 0x5d
+  0xc6,0x6c,0x38,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 0x5e
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00, // 0x5f
+  0x00,0x18,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 0x60
+  0x00,0x00,0x00,0x00,0xcc,0x7c,0x0c,0x78,0x00,0x00,0x76,0xcc, // 0x61
+  0x60,0x60,0xe0,0x00,0x66,0x66,0x66,0x7c,0x00,0x00,0xdc,0x66, // 0x62
+  0x00,0x00,0x00,0x00,0xc0,0xc0,0xcc,0x78,0x00,0x00,0x78,0xcc, // 0x63
+  0x0c,0x0c,0x1c,0x00,0xcc,0xcc,0xcc,0x7c,0x00,0x00,0x76,0xcc, // 0x64
+  0x00,0x00,0x00,0x00,0xc0,0xfc,0xcc,0x78,0x00,0x00,0x78,0xcc, // 0x65
+  0x60,0x6c,0x38,0x00,0x60,0x60,0xf8,0x60,0x00,0x00,0xf0,0x60, // 0x66
+  0x00,0x00,0x00,0x00,0xcc,0xcc,0xcc,0x76,0x78,0xcc,0x0c,0x7c, // 0x67
+  0x60,0x60,0xe0,0x00,0x66,0x66,0x76,0x6c,0x00,0x00,0xe6,0x66, // 0x68
+  0x00,0x18,0x18,0x00,0x18,0x18,0x18,0x78,0x00,0x00,0x7e,0x18, // 0x69
+  0x00,0x0c,0x0c,0x00,0x0c,0x0c,0x0c,0x3c,0x78,0xcc,0xcc,0x0c, // 0x6a
+  0x60,0x60,0xe0,0x00,0x6c,0x78,0x6c,0x66,0x00,0x00,0xe6,0x66, // 0x6b
+  0x18,0x18,0x78,0x00,0x18,0x18,0x18,0x18,0x00,0x00,0x7e,0x18, // 0x6c
+  0x00,0x00,0x00,0x00,0xd6,0xd6,0xd6,0xfc,0x00,0x00,0xc6,0xd6, // 0x6d
+  0x00,0x00,0x00,0x00,0xcc,0xcc,0xcc,0xf8,0x00,0x00,0xcc,0xcc, // 0x6e
+  0x00,0x00,0x00,0x00,0xcc,0xcc,0xcc,0x78,0x00,0x00,0x78,0xcc, // 0x6f
+  0x00,0x00,0x00,0x00,0x66,0x66,0x66,0xdc,0xf0,0x60,0x7c,0x66, // 0x70
+  0x00,0x00,0x00,0x00,0xcc,0xcc,0xcc,0x76,0x1e,0x0c,0x7c,0xcc, // 0x71
+  0x00,0x00,0x00,0x00,0x60,0x76,0x6e,0xec,0x00,0x00,0xf0,0x60, // 0x72
+  0x00,0x00,0x00,0x00,0x18,0x60,0xcc,0x78,0x00,0x00,0x78,0xcc, // 0x73
+  0x60,0x20,0x00,0x00,0x60,0x60,0x60,0xfc,0x00,0x00,0x38,0x6c, // 0x74
+  0x00,0x00,0x00,0x00,0xcc,0xcc,0xcc,0xcc,0x00,0x00,0x76,0xcc, // 0x75
+  0x00,0x00,0x00,0x00,0xcc,0xcc,0xcc,0xcc,0x00,0x00,0x30,0x78, // 0x76
+  0x00,0x00,0x00,0x00,0xd6,0xd6,0xc6,0xc6,0x00,0x00,0x6c,0x6c, // 0x77
+  0x00,0x00,0x00,0x00,0x38,0x38,0x6c,0xc6,0x00,0x00,0xc6,0x6c, // 0x78
+  0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0xf0,0x18,0x0c,0x3c, // 0x79
+  0x00,0x00,0x00,0x00,0x60,0x18,0x8c,0xfc,0x00,0x00,0xfc,0xc4, // 0x7a
+  0x30,0x30,0x1c,0x00,0x30,0x60,0xc0,0x60,0x00,0x00,0x1c,0x30, // 0x7b
+  0x18,0x18,0x18,0x00,0x18,0x18,0x00,0x18,0x00,0x00,0x18,0x18, // 0x7c
+  0x30,0x30,0xe0,0x00,0x30,0x18,0x0c,0x18,0x00,0x00,0xe0,0x30, // 0x7d
+  0xce,0xda,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 0x7e
+  0x10,0x00,0x00,0x00,0xc6,0xc6,0x6c,0x38,0x00,0x00,0x00,0xfe, // 0x7f
+  0xcc,0xcc,0x78,0x00,0xcc,0xc0,0xc0,0xc0,0x60,0x30,0x78,0xcc, // 0x80
+  0x00,0xcc,0xcc,0x00,0xcc,0xcc,0xcc,0xcc,0x00,0x00,0x76,0xcc, // 0x81
+  0x00,0x30,0x18,0x0c,0xc0,0xfc,0xcc,0x78,0x00,0x00,0x78,0xcc, // 0x82
+  0x00,0xcc,0x78,0x30,0xcc,0x7c,0x0c,0x78,0x00,0x00,0x76,0xcc, // 0x83
+  0x00,0xcc,0xcc,0x00,0xcc,0x7c,0x0c,0x78,0x00,0x00,0x76,0xcc, // 0x84
+  0x00,0x30,0x60,0xc0,0xcc,0x7c,0x0c,0x78,0x00,0x00,0x76,0xcc, // 0x85
+  0x38,0x6c,0x6c,0x38,0xcc,0x7c,0x0c,0xf8,0x00,0x00,0x76,0xcc, // 0x86
+  0x00,0x00,0x00,0x00,0xc0,0xc0,0xcc,0x78,0x60,0x30,0x78,0xcc, // 0x87
+  0x00,0xcc,0x78,0x30,0xc0,0xfc,0xcc,0x78,0x00,0x00,0x7c,0xc0, // 0x88
+  0x00,0xcc,0xcc,0x00,0xc0,0xfc,0xcc,0x78,0x00,0x00,0x7c,0xc0, // 0x89
+  0x00,0x30,0x60,0xc0,0xc0,0xfc,0xcc,0x78,0x00,0x00,0x7c,0xc0, // 0x8a
+  0x00,0x6c,0x6c,0x00,0x18,0x18,0x18,0x78,0x00,0x00,0x7e,0x18, // 0x8b
+  0x00,0x6c,0x38,0x10,0x18,0x18,0x18,0x78,0x00,0x00,0x7e,0x18, // 0x8c
+  0x00,0x18,0x30,0x60,0x18,0x18,0x18,0x78,0x00,0x00,0x7e,0x18, // 0x8d
+  0x30,0x00,0xcc,0x00,0xfc,0xcc,0xcc,0x78,0x00,0x00,0xcc,0xcc, // 0x8e
+  0x78,0xcc,0xcc,0x78,0xfc,0xcc,0xcc,0x78,0x00,0x00,0xcc,0xcc, // 0x8f
+  0xfc,0x00,0x18,0x0c,0xc0,0xf8,0xc0,0xc4,0x00,0x00,0xfc,0xc4, // 0x90
+  0x00,0x00,0x00,0x00,0xd8,0x7f,0x1b,0xfe,0x00,0x00,0xef,0xd8, // 0x91
+  0xd8,0x78,0x3e,0x00,0xd8,0xd8,0xfe,0xd8,0x00,0x00,0xde,0xd8, // 0x92
+  0x00,0xcc,0x78,0x30,0xcc,0xcc,0xcc,0x78,0x00,0x00,0x78,0xcc, // 0x93
+  0x00,0xcc,0xcc,0x00,0xcc,0xcc,0xcc,0x78,0x00,0x00,0x78,0xcc, // 0x94
+  0x00,0x30,0x60,0xc0,0xcc,0xcc,0xcc,0x78,0x00,0x00,0x78,0xcc, // 0x95
+  0x00,0xcc,0x78,0x30,0xcc,0xcc,0xcc,0xcc,0x00,0x00,0x76,0xcc, // 0x96
+  0x00,0x30,0x60,0xc0,0xcc,0xcc,0xcc,0xcc,0x00,0x00,0x76,0xcc, // 0x97
+  0x00,0x66,0x66,0x00,0x66,0x66,0x66,0x66,0xf0,0x18,0x0c,0x3c, // 0x98
+  0x78,0x00,0xcc,0x00,0xcc,0xcc,0xcc,0xcc,0x00,0x00,0x78,0xcc, // 0x99
+  0xcc,0xcc,0x00,0xcc,0xcc,0xcc,0xcc,0xcc,0x00,0x00,0x78,0xcc, // 0x9a
+  0x00,0x00,0x00,0x00,0xec,0xdc,0xcc,0x78,0x00,0x00,0x78,0xcc, // 0x9b
+  0x60,0x60,0x66,0x3c,0x60,0x60,0xfc,0x60,0x00,0x00,0xfe,0xc0, // 0x9c
+  0xce,0x6c,0x3a,0x00,0xe6,0xd6,0xd6,0xd6,0x00,0x00,0xb8,0x6c, // 0x9d
+  0x00,0x00,0x00,0x00,0x38,0x6c,0xc6,0x00,0x00,0x00,0xc6,0x6c, // 0x9e
+  0x18,0x18,0x1b,0x0e,0x18,0x18,0x18,0x7e,0x00,0x00,0x70,0xd8, // 0x9f
+  0x00,0x30,0x18,0x0c,0xcc,0x7c,0x0c,0x78,0x00,0x00,0x76,0xcc, // 0xa0
+  0x00,0x30,0x18,0x0c,0x18,0x18,0x18,0x78,0x00,0x00,0x7e,0x18, // 0xa1
+  0x00,0x30,0x18,0x0c,0xcc,0xcc,0xcc,0x78,0x00,0x00,0x78,0xcc, // 0xa2
+  0x00,0x30,0x18,0x0c,0xcc,0xcc,0xcc,0xcc,0x00,0x00,0x76,0xcc, // 0xa3
+  0x00,0xdc,0x76,0x00,0xcc,0xcc,0xcc,0xf8,0x00,0x00,0xcc,0xcc, // 0xa4
+  0xc6,0x00,0xdc,0x76,0xce,0xde,0xf6,0xe6,0x00,0x00,0xc6,0xc6, // 0xa5
+  0xcc,0xcc,0x78,0x00,0x00,0xfe,0x00,0x7e,0x00,0x00,0x00,0x00, // 0xa6
+  0xcc,0xcc,0x78,0x00,0x00,0xfe,0x00,0x78,0x00,0x00,0x00,0x00, // 0xa7
+  0x00,0x30,0x30,0x00,0xc0,0xc0,0x60,0x30,0x00,0x00,0x78,0xcc, // 0xa8
+  0xba,0x44,0x38,0x00,0xaa,0xb2,0xba,0xaa,0x00,0x00,0x38,0x44, // 0xa9
+  0x00,0x00,0x00,0x00,0x0c,0x0c,0xfc,0x00,0x00,0x00,0x00,0x0c, // 0xaa
+  0x6c,0xe6,0x62,0x00,0xc3,0x6e,0x30,0x78,0x00,0x1f,0x0c,0x86, // 0xab
+  0x6c,0xe6,0x63,0x00,0xdb,0x6f,0x37,0x78,0x00,0x03,0x3f,0xb3, // 0xac
+  0x00,0x30,0x30,0x00,0x78,0x78,0x30,0x30,0x00,0x00,0x30,0x78, // 0xad
+  0x00,0x00,0x00,0x00,0xcc,0xcc,0x66,0x33,0x00,0x00,0x33,0x66, // 0xae
+  0x00,0x00,0x00,0x00,0x33,0x33,0x66,0xcc,0x00,0x00,0xcc,0x66, // 0xaf
+  0x24,0x49,0x92,0x24,0x92,0x24,0x49,0x92,0x49,0x92,0x24,0x49, // 0xb0
+  0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55, // 0xb1
+  0x6d,0xb6,0xdb,0x6d,0xdb,0x6d,0xb6,0xdb,0xb6,0xdb,0x6d,0xb6, // 0xb2
+  0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, // 0xb3
+  0x18,0x18,0x18,0x18,0x18,0x18,0xf8,0x18,0x18,0x18,0x18,0x18, // 0xb4
+  0x30,0x00,0x18,0x0c,0xfc,0xcc,0xcc,0x78,0x00,0x00,0xcc,0xcc, // 0xb5
+  0x30,0x00,0xcc,0x78,0xfc,0xcc,0xcc,0x78,0x00,0x00,0xcc,0xcc, // 0xb6
+  0x30,0x00,0x30,0x60,0xfc,0xcc,0xcc,0x78,0x00,0x00,0xcc,0xcc, // 0xb7
+  0xba,0x44,0x38,0x00,0xba,0xa2,0xa2,0xa2,0x00,0x00,0x38,0x44, // 0xb8
+  0x66,0x66,0x66,0x66,0xe6,0x06,0x06,0xe6,0x66,0x66,0x66,0x66, // 0xb9
+  0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66, // 0xba
+  0x00,0x00,0x00,0x00,0xe6,0x06,0x06,0xfe,0x66,0x66,0x66,0x66, // 0xbb
+  0x66,0x66,0x66,0x66,0xfe,0x06,0x06,0xe6,0x00,0x00,0x00,0x00, // 0xbc
+  0x78,0x30,0x30,0x00,0xcc,0xc0,0xc0,0xcc,0x00,0x30,0x30,0x78, // 0xbd
+  0xcc,0xcc,0xcc,0xcc,0xfc,0x30,0xfc,0x78,0x00,0x00,0x30,0x30, // 0xbe
+  0x00,0x00,0x00,0x00,0x18,0x18,0xf8,0x00,0x18,0x18,0x18,0x18, // 0xbf
+  0x18,0x18,0x18,0x18,0x00,0x00,0x1f,0x18,0x00,0x00,0x00,0x00, // 0xc0
+  0x18,0x18,0x18,0x18,0x00,0x00,0xff,0x18,0x00,0x00,0x00,0x00, // 0xc1
+  0x00,0x00,0x00,0x00,0x18,0x18,0xff,0x00,0x18,0x18,0x18,0x18, // 0xc2
+  0x18,0x18,0x18,0x18,0x18,0x18,0x1f,0x18,0x18,0x18,0x18,0x18, // 0xc3
+  0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00, // 0xc4
+  0x18,0x18,0x18,0x18,0x18,0x18,0xff,0x18,0x18,0x18,0x18,0x18, // 0xc5
+  0x00,0xdc,0x76,0x00,0xcc,0x7c,0x0c,0x78,0x00,0x00,0x76,0xcc, // 0xc6
+  0x30,0x00,0xdc,0x76,0xfc,0xcc,0xcc,0x78,0x00,0x00,0xcc,0xcc, // 0xc7
+  0x66,0x66,0x66,0x66,0x7f,0x60,0x60,0x67,0x00,0x00,0x00,0x00, // 0xc8
+  0x00,0x00,0x00,0x00,0x67,0x60,0x60,0x7f,0x66,0x66,0x66,0x66, // 0xc9
+  0x66,0x66,0x66,0x66,0xff,0x00,0x00,0xe7,0x00,0x00,0x00,0x00, // 0xca
+  0x00,0x00,0x00,0x00,0xe7,0x00,0x00,0xff,0x66,0x66,0x66,0x66, // 0xcb
+  0x66,0x66,0x66,0x66,0x67,0x60,0x60,0x67,0x66,0x66,0x66,0x66, // 0xcc
+  0x00,0x00,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,0x00,0x00, // 0xcd
+  0x66,0x66,0x66,0x66,0xe7,0x00,0x00,0xe7,0x66,0x66,0x66,0x66, // 0xce
+  0x00,0x00,0x00,0x00,0x6c,0x7c,0xc6,0x00,0x00,0x00,0xc6,0x7c, // 0xcf
+  0x0c,0xd8,0x30,0xcc,0xc6,0xc6,0x7e,0x06,0x00,0x00,0x7c,0xc6, // 0xd0
+  0x66,0x6c,0xf8,0x00,0x66,0x66,0xf6,0x66,0x00,0x00,0xf8,0x6c, // 0xd1
+  0xfc,0x00,0xcc,0x78,0xc0,0xf8,0xc0,0xc4,0x00,0x00,0xfc,0xc4, // 0xd2
+  0xfc,0x00,0xcc,0x00,0xc0,0xf8,0xc0,0xc4,0x00,0x00,0xfc,0xc4, // 0xd3
+  0xfc,0x00,0x30,0x60,0xc0,0xf8,0xc0,0xc4,0x00,0x00,0xfc,0xc4, // 0xd4
+  0x30,0x30,0xf0,0x00,0x00,0x00,0xfc,0x30,0x00,0x00,0x00,0x00, // 0xd5
+  0x78,0x00,0x30,0x18,0x30,0x30,0x30,0x30,0x00,0x00,0x78,0x30, // 0xd6
+  0x78,0x00,0xcc,0x78,0x30,0x30,0x30,0x30,0x00,0x00,0x78,0x30, // 0xd7
+  0x78,0x00,0xcc,0x00,0x30,0x30,0x30,0x30,0x00,0x00,0x78,0x30, // 0xd8
+  0x18,0x18,0x18,0x18,0x00,0x00,0xf8,0x18,0x00,0x00,0x00,0x00, // 0xd9
+  0x00,0x00,0x00,0x00,0x18,0x18,0x1f,0x00,0x18,0x18,0x18,0x18, // 0xda
+  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, // 0xdb
+  0x00,0x00,0x00,0x00,0xff,0xff,0x00,0x00,0xff,0xff,0xff,0xff, // 0xdc
+  0x18,0x18,0x18,0x00,0x18,0x18,0x00,0x18,0x00,0x00,0x18,0x18, // 0xdd
+  0x78,0x00,0x30,0x60,0x30,0x30,0x30,0x30,0x00,0x00,0x78,0x30, // 0xde
+  0xff,0xff,0xff,0xff,0x00,0x00,0xff,0xff,0x00,0x00,0x00,0x00, // 0xdf
+  0x78,0x00,0x30,0x18,0xcc,0xcc,0xcc,0xcc,0x00,0x00,0x78,0xcc, // 0xe0
+  0xcc,0xcc,0x78,0x00,0xcc,0xcc,0xcc,0xd8,0x00,0x60,0xc0,0xf8, // 0xe1
+  0x78,0x00,0xcc,0x78,0xcc,0xcc,0xcc,0xcc,0x00,0x00,0x78,0xcc, // 0xe2
+  0x78,0x00,0x30,0x60,0xcc,0xcc,0xcc,0xcc,0x00,0x00,0x78,0xcc, // 0xe3
+  0x00,0xdc,0x76,0x00,0xcc,0xcc,0xcc,0x78,0x00,0x00,0x78,0xcc, // 0xe4
+  0x78,0x00,0xdc,0x76,0xcc,0xcc,0xcc,0xcc,0x00,0x00,0x78,0xcc, // 0xe5
+  0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0xc0,0x60,0x7b,0x66, // 0xe6
+  0x60,0xe0,0x00,0x00,0x7c,0x66,0x66,0x7c,0x00,0x00,0xf0,0x60, // 0xe7
+  0x7c,0x60,0xf0,0x00,0x7c,0x66,0x66,0x66,0x00,0x00,0xf0,0x60, // 0xe8
+  0xcc,0x00,0x30,0x18,0xcc,0xcc,0xcc,0xcc,0x00,0x00,0x78,0xcc, // 0xe9
+  0xcc,0x00,0xcc,0x78,0xcc,0xcc,0xcc,0xcc,0x00,0x00,0x78,0xcc, // 0xea
+  0xcc,0x00,0x30,0x60,0xcc,0xcc,0xcc,0xcc,0x00,0x00,0x78,0xcc, // 0xeb
+  0x00,0x18,0x0c,0x06,0x66,0x66,0x66,0x66,0xf0,0x18,0x0c,0x3c, // 0xec
+  0xcc,0x00,0x30,0x18,0x30,0x78,0xcc,0xcc,0x00,0x00,0x78,0x30, // 0xed
+  0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 0xee
+  0x00,0x30,0x18,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 0xef
+  0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00, // 0xf0
+  0x30,0x30,0x00,0x00,0x00,0x30,0x30,0xfc,0x00,0x00,0x00,0xfc, // 0xf1
+  0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0xf8, // 0xf2
+  0x3c,0x66,0x33,0xe0,0xdb,0x6f,0x37,0xf8,0x00,0x03,0x3f,0xb3, // 0xf3
+  0xdb,0xdb,0x7f,0x00,0x1b,0x1b,0x7b,0xdb,0x00,0x00,0x1b,0x1b, // 0xf4
+  0x30,0x63,0x7e,0x00,0x3c,0x66,0x66,0x3c,0x00,0x7e,0xc6,0x0c, // 0xf5
+  0x30,0x30,0x00,0x00,0x30,0x00,0xfc,0x00,0x00,0x00,0x00,0x30, // 0xf6
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x30,0x00,0x00, // 0xf7
+  0x66,0x66,0x3c,0x00,0x00,0x00,0x3c,0x66,0x00,0x00,0x00,0x00, // 0xf8
+  0x00,0x00,0xcc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 0xf9
+  0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00, // 0xfa
+  0x30,0x70,0x30,0x00,0x00,0x00,0x78,0x30,0x00,0x00,0x00,0x00, // 0xfb
+  0x38,0x0c,0x78,0x00,0x00,0x00,0x78,0x0c,0x00,0x00,0x00,0x00, // 0xfc
+  0x18,0x0c,0x78,0x00,0x00,0x00,0x7c,0x30,0x00,0x00,0x00,0x00, // 0xfd
+  0xfc,0x00,0x00,0x00,0xfc,0xfc,0xfc,0xfc,0x00,0x00,0x00,0xfc, // 0xfe
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  // 0xff
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fonts/font_8x12.h	Sun Apr 17 18:03:24 2011 +0000
@@ -0,0 +1,16 @@
+#ifndef _FONT_8X12_H_
+#define _FONT_8X12_H_
+
+
+//----- DEFINES -----
+#define FONT8x12_START                    0x20
+#define FONT8x12_END                      0x7A
+#define FONT8x12_WIDTH                    8
+#define FONT8x12_HEIGHT                   12
+
+
+//----- GLOBALS -----
+extern const unsigned char font_8x12[];
+
+
+#endif //_FONT_8X12_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fonts/font_8x8.cpp	Sun Apr 17 18:03:24 2011 +0000
@@ -0,0 +1,231 @@
+#include "font_8x8.h"
+
+
+//0x20 - 0xFF
+const unsigned char font_8x8[] = 
+{
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 0x20
+  0x30,0x78,0x78,0x30,0x00,0x30,0x00,0x30, // 0x21
+  0x00,0x6c,0x6c,0x6c,0x00,0x00,0x00,0x00, // 0x22
+  0x6c,0xfe,0x6c,0x6c,0x00,0x6c,0x6c,0xfe, // 0x23
+  0x78,0xc0,0x7c,0x30,0x00,0x30,0xf8,0x0c, // 0x24
+  0x18,0xcc,0xc6,0x00,0x00,0xc6,0x66,0x30, // 0x25
+  0x76,0x38,0x6c,0x38,0x00,0x76,0xcc,0xdc, // 0x26
+  0x00,0xc0,0x60,0x60,0x00,0x00,0x00,0x00, // 0x27
+  0x60,0x60,0x30,0x18,0x00,0x18,0x30,0x60, // 0x28
+  0x18,0x18,0x30,0x60,0x00,0x60,0x30,0x18, // 0x29
+  0xff,0x3c,0x66,0x00,0x00,0x00,0x66,0x3c, // 0x2a
+  0xfc,0x30,0x30,0x00,0x00,0x00,0x30,0x30, // 0x2b
+  0x00,0x00,0x00,0x00,0x60,0x30,0x70,0x00, // 0x2c
+  0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 0x2d
+  0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00, // 0x2e
+  0x30,0x18,0x0c,0x06,0x00,0x80,0xc0,0x60, // 0x2f
+  0xfc,0xdc,0xcc,0x78,0x00,0x78,0xcc,0xec, // 0x30
+  0x30,0x30,0xf0,0x30,0x00,0xfc,0x30,0x30, // 0x31
+  0x38,0x0c,0xcc,0x78,0x00,0xfc,0xcc,0x60, // 0x32
+  0x38,0x0c,0xcc,0x78,0x00,0x78,0xcc,0x0c, // 0x33
+  0xcc,0x6c,0x3c,0x1c,0x00,0x0c,0x0c,0xfe, // 0x34
+  0x0c,0xf8,0xc0,0xfc,0x00,0x78,0xcc,0x0c, // 0x35
+  0xf8,0xc0,0x60,0x38,0x00,0x78,0xcc,0xcc, // 0x36
+  0x18,0x0c,0xcc,0xfc,0x00,0x60,0x60,0x30, // 0x37
+  0x78,0xcc,0xcc,0x78,0x00,0x78,0xcc,0xcc, // 0x38
+  0x7c,0xcc,0xcc,0x78,0x00,0x70,0x18,0x0c, // 0x39
+  0x30,0x30,0x00,0x00,0x00,0x30,0x30,0x00, // 0x3a
+  0x30,0x30,0x00,0x00,0x60,0x30,0x70,0x00, // 0x3b
+  0xc0,0x60,0x30,0x18,0x00,0x18,0x30,0x60, // 0x3c
+  0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0xfc, // 0x3d
+  0x0c,0x18,0x30,0x60,0x00,0x60,0x30,0x18, // 0x3e
+  0x18,0x0c,0xcc,0x78,0x00,0x30,0x00,0x30, // 0x3f
+  0xde,0xde,0xc6,0x7c,0x00,0x78,0xc0,0xde, // 0x40
+  0xcc,0xcc,0x78,0x30,0x00,0xcc,0xcc,0xfc, // 0x41
+  0x7c,0x66,0x66,0xfc,0x00,0xfc,0x66,0x66, // 0x42
+  0xc0,0xc0,0x66,0x3c,0x00,0x3c,0x66,0xc0, // 0x43
+  0x66,0x66,0x6c,0xfc,0x00,0xfc,0x6c,0x66, // 0x44
+  0x78,0x68,0x62,0xfe,0x00,0xfe,0x62,0x68, // 0x45
+  0x78,0x68,0x62,0xfe,0x00,0xf0,0x60,0x68, // 0x46
+  0xc0,0xc0,0x66,0x3c,0x00,0x3e,0x66,0xce, // 0x47
+  0xfc,0xcc,0xcc,0xcc,0x00,0xcc,0xcc,0xcc, // 0x48
+  0x30,0x30,0x30,0x78,0x00,0x78,0x30,0x30, // 0x49
+  0x0c,0x0c,0x0c,0x1e,0x00,0x78,0xcc,0xcc, // 0x4a
+  0x78,0x6c,0x66,0xe6,0x00,0xe6,0x66,0x6c, // 0x4b
+  0x60,0x60,0x60,0xf0,0x00,0xfe,0x66,0x62, // 0x4c
+  0xd6,0xfe,0xee,0xc6,0x00,0xc6,0xc6,0xc6, // 0x4d
+  0xde,0xf6,0xe6,0xc6,0x00,0xc6,0xc6,0xce, // 0x4e
+  0xc6,0xc6,0x6c,0x38,0x00,0x38,0x6c,0xc6, // 0x4f
+  0x7c,0x66,0x66,0xfc,0x00,0xf0,0x60,0x60, // 0x50
+  0xcc,0xcc,0xcc,0x78,0x00,0x1c,0x78,0xdc, // 0x51
+  0x7c,0x66,0x66,0xfc,0x00,0xe6,0x6c,0x78, // 0x52
+  0x38,0xe0,0xcc,0x78,0x00,0x78,0xcc,0x1c, // 0x53
+  0x30,0x30,0xb4,0xfc,0x00,0x78,0x30,0x30, // 0x54
+  0xcc,0xcc,0xcc,0xcc,0x00,0xfc,0xcc,0xcc, // 0x55
+  0xcc,0xcc,0xcc,0xcc,0x00,0x30,0x78,0xcc, // 0x56
+  0xd6,0xc6,0xc6,0xc6,0x00,0xc6,0xee,0xfe, // 0x57
+  0x38,0x6c,0xc6,0xc6,0x00,0xc6,0xc6,0x6c, // 0x58
+  0x78,0xcc,0xcc,0xcc,0x00,0x78,0x30,0x30, // 0x59
+  0x30,0x98,0xcc,0xfe,0x00,0xfe,0xc6,0x62, // 0x5a
+  0x60,0x60,0x60,0x78,0x00,0x78,0x60,0x60, // 0x5b
+  0x18,0x30,0x60,0xc0,0x00,0x02,0x06,0x0c, // 0x5c
+  0x18,0x18,0x18,0x78,0x00,0x78,0x18,0x18, // 0x5d
+  0xc6,0x6c,0x38,0x10,0x00,0x00,0x00,0x00, // 0x5e
+  0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00, // 0x5f
+  0x00,0x18,0x30,0x30,0x00,0x00,0x00,0x00, // 0x60
+  0x0c,0x78,0x00,0x00,0x00,0x76,0xcc,0x7c, // 0x61
+  0x66,0x7c,0x60,0xe0,0x00,0xbc,0x66,0x66, // 0x62
+  0xcc,0x78,0x00,0x00,0x00,0x78,0xcc,0xc0, // 0x63
+  0x7c,0x0c,0x0c,0x1c,0x00,0x76,0xcc,0xcc, // 0x64
+  0xcc,0x78,0x00,0x00,0x00,0x78,0xc0,0xfc, // 0x65
+  0xf0,0x60,0x6c,0x38,0x00,0xf0,0x60,0x60, // 0x66
+  0xcc,0x76,0x00,0x00,0xf8,0x0c,0x7c,0xcc, // 0x67
+  0x76,0x6c,0x60,0xe0,0x00,0xe6,0x66,0x66, // 0x68
+  0x30,0x70,0x00,0x30,0x00,0x78,0x30,0x30, // 0x69
+  0x18,0x78,0x00,0x18,0x70,0xd8,0x18,0x18, // 0x6a
+  0x6c,0x66,0x60,0xe0,0x00,0xe6,0x6c,0x78, // 0x6b
+  0x30,0x30,0x30,0x70,0x00,0x78,0x30,0x30, // 0x6c
+  0xfe,0xec,0x00,0x00,0x00,0xc6,0xc6,0xd6, // 0x6d
+  0xcc,0xf8,0x00,0x00,0x00,0xcc,0xcc,0xcc, // 0x6e
+  0xcc,0x78,0x00,0x00,0x00,0x78,0xcc,0xcc, // 0x6f
+  0x66,0xdc,0x00,0x00,0xf0,0x60,0x7c,0x66, // 0x70
+  0xcc,0x76,0x00,0x00,0x1e,0x0c,0x7c,0xcc, // 0x71
+  0x6c,0xd8,0x00,0x00,0x00,0xf0,0x60,0x6c, // 0x72
+  0xc0,0x7c,0x00,0x00,0x00,0xf8,0x0c,0x78, // 0x73
+  0x30,0x7c,0x30,0x10,0x00,0x18,0x34,0x30, // 0x74
+  0xcc,0xcc,0x00,0x00,0x00,0x76,0xcc,0xcc, // 0x75
+  0xcc,0xcc,0x00,0x00,0x00,0x30,0x78,0xcc, // 0x76
+  0xc6,0xc6,0x00,0x00,0x00,0x6c,0xfe,0xd6, // 0x77
+  0x6c,0xc6,0x00,0x00,0x00,0xc6,0x6c,0x38, // 0x78
+  0xcc,0xcc,0x00,0x00,0xf8,0x0c,0x7c,0xcc, // 0x79
+  0x98,0xfc,0x00,0x00,0x00,0xfc,0x64,0x30, // 0x7a
+  0xe0,0x30,0x30,0x1c,0x00,0x1c,0x30,0x30, // 0x7b
+  0x00,0x18,0x18,0x18,0x00,0x18,0x18,0x18, // 0x7c
+  0x1c,0x30,0x30,0xe0,0x00,0xe0,0x30,0x30, // 0x7d
+  0x00,0x00,0xdc,0x76,0x00,0x00,0x00,0x00, // 0x7e
+  0xc6,0x6c,0x38,0x10,0x00,0xfe,0xc6,0xc6, // 0x7f
+  0xc0,0xc0,0xcc,0x78,0x60,0x30,0x78,0xcc, // 0x80
+  0xcc,0x00,0xcc,0x00,0x00,0x7e,0xcc,0xcc, // 0x81
+  0xcc,0x78,0x30,0x18,0x00,0x78,0xc0,0xfc, // 0x82
+  0x06,0x3c,0xc3,0x7e,0x00,0x3f,0x66,0x3e, // 0x83
+  0x0c,0x78,0x00,0xcc,0x00,0x7e,0xcc,0x7c, // 0x84
+  0x0c,0x78,0x30,0x60,0x00,0x7e,0xcc,0x7c, // 0x85
+  0x06,0x3c,0x66,0x3c,0x00,0x3f,0x66,0x3e, // 0x86
+  0xc0,0xcc,0x78,0x00,0x60,0x30,0x78,0xcc, // 0x87
+  0x66,0x3c,0xc3,0x7e,0x00,0x3c,0x60,0x7e, // 0x88
+  0xcc,0x78,0x00,0xcc,0x00,0x78,0xc0,0xfc, // 0x89
+  0xcc,0x78,0x30,0x60,0x00,0x78,0xc0,0xfc, // 0x8a
+  0x30,0x70,0x00,0xcc,0x00,0x78,0x30,0x30, // 0x8b
+  0x18,0x38,0xc6,0x7c,0x00,0x3c,0x18,0x18, // 0x8c
+  0x30,0x70,0x30,0x60,0x00,0x78,0x30,0x30, // 0x8d
+  0xcc,0x78,0x30,0xcc,0x00,0xcc,0xfc,0xcc, // 0x8e
+  0x78,0x30,0x48,0x30,0x00,0xcc,0xfc,0xcc, // 0x8f
+  0x60,0xfc,0x30,0x18,0x00,0xfc,0x60,0x78, // 0x90
+  0x0c,0x7f,0x00,0x00,0x00,0x7f,0xcc,0x7f, // 0x91
+  0xfe,0xcc,0x6c,0x3e,0x00,0xce,0xcc,0xcc, // 0x92
+  0x78,0x00,0xcc,0x78,0x00,0x78,0xcc,0xcc, // 0x93
+  0x78,0x00,0xcc,0x00,0x00,0x78,0xcc,0xcc, // 0x94
+  0x78,0x00,0x30,0x60,0x00,0x78,0xcc,0xcc, // 0x95
+  0xcc,0x00,0xcc,0x78,0x00,0x7e,0xcc,0xcc, // 0x96
+  0xcc,0x00,0x30,0x60,0x00,0x7e,0xcc,0xcc, // 0x97
+  0xcc,0x00,0xcc,0x00,0xf8,0x0c,0xfc,0xcc, // 0x98
+  0xc6,0x7c,0x00,0xc6,0x00,0x7c,0xc6,0xc6, // 0x99
+  0xcc,0xcc,0x00,0xcc,0x00,0x78,0xcc,0xcc, // 0x9a
+  0xce,0x7c,0x00,0x00,0x00,0x7c,0xe6,0xd6, // 0x9b
+  0xf0,0x64,0x6c,0x38,0x00,0xfc,0xe6,0x60, // 0x9c
+  0xd6,0xce,0x6c,0x3a,0x00,0xb8,0x6c,0xe6, // 0x9d
+  0x78,0xcc,0x00,0x00,0x00,0xcc,0x78,0x30, // 0x9e
+  0x7e,0x18,0x1b,0x0e,0x70,0xd8,0x18,0x18, // 0x9f
+  0x0c,0x78,0x30,0x18,0x00,0x7e,0xcc,0x7c, // 0xa0
+  0x30,0x70,0x30,0x18,0x00,0x78,0x30,0x30, // 0xa1
+  0x78,0x00,0x18,0x0c,0x00,0x78,0xcc,0xcc, // 0xa2
+  0xcc,0x00,0x18,0x0c,0x00,0x7e,0xcc,0xcc, // 0xa3
+  0xf8,0x00,0xdc,0x76,0x00,0xcc,0xcc,0xcc, // 0xa4
+  0xec,0x00,0xdc,0x76,0x00,0xcc,0xdc,0xfc, // 0xa5
+  0x3e,0x6c,0x6c,0x3c,0x00,0x00,0x7e,0x00, // 0xa6
+  0x3c,0x66,0x66,0x3c,0x00,0x00,0x7e,0x00, // 0xa7
+  0x60,0x30,0x00,0x30,0x00,0x78,0xcc,0xc0, // 0xa8
+  0xb9,0xa5,0x5a,0x3c,0x00,0x3c,0x66,0xa9, // 0xa9
+  0xfc,0x00,0x00,0x00,0x00,0x00,0x0c,0x0c, // 0xaa
+  0x7e,0x78,0x6c,0xe6,0x1f,0x98,0xce,0x63, // 0xab
+  0x73,0x78,0x6c,0xe6,0x03,0x9f,0xcd,0x67, // 0xac
+  0x18,0x00,0x18,0x00,0x18,0x3c,0x3c,0x18, // 0xad
+  0xcc,0x66,0x33,0x00,0x00,0x00,0x33,0x66, // 0xae
+  0x33,0x66,0xcc,0x00,0x00,0x00,0xcc,0x66, // 0xaf
+  0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22, // 0xb0
+  0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55, // 0xb1
+  0x77,0xdd,0x77,0xdd,0x77,0xdd,0x77,0xdd, // 0xb2
+  0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, // 0xb3
+  0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xf8, // 0xb4
+  0x78,0x30,0x18,0x0c,0x00,0xcc,0xfc,0xcc, // 0xb5
+  0x78,0x30,0x84,0x78,0x00,0xcc,0xfc,0xcc, // 0xb6
+  0x78,0x30,0x60,0xc0,0x00,0xcc,0xfc,0xcc, // 0xb7
+  0xa1,0xb9,0x42,0x3c,0x00,0x3c,0x42,0xb9, // 0xb8
+  0x06,0xf6,0x36,0x36,0x36,0x36,0x36,0xf6, // 0xb9
+  0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, // 0xba
+  0x06,0xfe,0x00,0x00,0x36,0x36,0x36,0xf6, // 0xbb
+  0x06,0xf6,0x36,0x36,0x00,0x00,0x00,0xfe, // 0xbc
+  0xc0,0x7e,0x18,0x18,0x18,0x18,0x7e,0xc0, // 0xbd
+  0xfc,0x78,0xcc,0xcc,0x30,0x30,0xfc,0x30, // 0xbe
+  0x00,0x00,0x00,0x00,0x18,0x18,0x18,0xf8, // 0xbf
+  0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x1f, // 0xc0
+  0x18,0x18,0x18,0x18,0x00,0x00,0x00,0xff, // 0xc1
+  0x00,0x00,0x00,0x00,0x18,0x18,0x18,0xff, // 0xc2
+  0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1f, // 0xc3
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff, // 0xc4
+  0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xff, // 0xc5
+  0x0c,0x78,0xdc,0x76,0x00,0x7e,0xcc,0x7c, // 0xc6
+  0x78,0x30,0xdc,0x76,0x00,0xcc,0xfc,0xcc, // 0xc7
+  0x30,0x37,0x36,0x36,0x00,0x00,0x00,0x3f, // 0xc8
+  0x30,0x3f,0x00,0x00,0x36,0x36,0x36,0x37, // 0xc9
+  0x00,0xf7,0x36,0x36,0x00,0x00,0x00,0xff, // 0xca
+  0x00,0xff,0x00,0x00,0x36,0x36,0x36,0xf7, // 0xcb
+  0x30,0x37,0x36,0x36,0x36,0x36,0x36,0x37, // 0xcc
+  0x00,0xff,0x00,0x00,0x00,0x00,0x00,0xff, // 0xcd
+  0x00,0xf7,0x36,0x36,0x36,0x36,0x36,0xf7, // 0xce
+  0x6c,0xfe,0x82,0x00,0x00,0x82,0xfe,0x6c, // 0xcf
+  0x0c,0xd8,0x70,0xd8,0x00,0x38,0x6c,0x3c, // 0xd0
+  0xf6,0x66,0x6c,0xfc,0x00,0xfc,0x6c,0x66, // 0xd1
+  0x60,0xfc,0x84,0x78,0x00,0xfc,0x60,0x78, // 0xd2
+  0x60,0xfc,0x00,0xcc,0x00,0xfc,0x60,0x78, // 0xd3
+  0x60,0xfc,0x30,0x60,0x00,0xfc,0x60,0x78, // 0xd4
+  0xe0,0x40,0xc0,0x00,0x00,0x00,0x00,0x00, // 0xd5
+  0x30,0x78,0x30,0x18,0x00,0x78,0x30,0x30, // 0xd6
+  0x30,0x78,0x84,0x78,0x00,0x78,0x30,0x30, // 0xd7
+  0x30,0x78,0x00,0xcc,0x00,0x78,0x30,0x30, // 0xd8
+  0x18,0x18,0x18,0x18,0x00,0x00,0x00,0xf8, // 0xd9
+  0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x1f, // 0xda
+  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, // 0xdb
+  0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff, // 0xdc
+  0x00,0x18,0x18,0x18,0x00,0x18,0x18,0x18, // 0xdd
+  0x30,0x78,0x30,0x60,0x00,0x78,0x30,0x30, // 0xde
+  0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00, // 0xdf
+  0xc6,0x7c,0x30,0x18,0x00,0x7c,0xc6,0xc6, // 0xe0
+  0xf8,0xcc,0x78,0x00,0xc0,0xc0,0xf8,0xcc, // 0xe1
+  0xc6,0x7c,0x82,0x7c,0x00,0x7c,0xc6,0xc6, // 0xe2
+  0xc6,0x7c,0x18,0x30,0x00,0x7c,0xc6,0xc6, // 0xe3
+  0x78,0x00,0xdc,0x76,0x00,0x78,0xcc,0xcc, // 0xe4
+  0xc6,0x7c,0xdc,0x76,0x00,0x7c,0xc6,0xc6, // 0xe5
+  0x66,0x66,0x66,0x00,0xc0,0x60,0x7c,0x66, // 0xe6
+  0x6c,0x78,0xe0,0x00,0x00,0xf0,0x60,0x78, // 0xe7
+  0x66,0x7c,0x60,0xf0,0x00,0xf0,0x60,0x7c, // 0xe8
+  0xcc,0xcc,0x30,0x18,0x00,0x78,0xcc,0xcc, // 0xe9
+  0xcc,0x00,0x84,0x78,0x00,0x78,0xcc,0xcc, // 0xea
+  0xcc,0xcc,0x30,0x60,0x00,0x78,0xcc,0xcc, // 0xeb
+  0xcc,0x00,0x30,0x18,0xf8,0x0c,0xfc,0xcc, // 0xec
+  0xcc,0xcc,0x30,0x18,0x00,0x78,0x30,0x78, // 0xed
+  0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00, // 0xee
+  0x00,0x00,0x30,0x18,0x00,0x00,0x00,0x00, // 0xef
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, // 0xf0
+  0x30,0xfc,0x30,0x30,0x00,0xfc,0x00,0x30, // 0xf1
+  0xfc,0x00,0x00,0x00,0x00,0x00,0xfc,0x00, // 0xf2
+  0x33,0x78,0x2c,0xe6,0x03,0x9f,0xcd,0xe7, // 0xf3
+  0x7b,0xdb,0xdb,0x7f,0x00,0x1b,0x1b,0x1b, // 0xf4
+  0xcc,0x78,0xc3,0x7e,0xf8,0x8c,0x78,0xcc, // 0xf5
+  0xfc,0x00,0x30,0x30,0x00,0x30,0x30,0x00, // 0xf6
+  0x00,0x00,0x00,0x00,0x60,0x30,0x00,0x00, // 0xf7
+  0x38,0x6c,0x6c,0x38,0x00,0x00,0x00,0x00, // 0xf8
+  0x00,0x00,0xcc,0x00,0x00,0x00,0x00,0x00, // 0xf9
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18, // 0xfa
+  0x18,0x18,0x78,0x38,0x00,0x00,0x00,0x7e, // 0xfb
+  0x3c,0x38,0x30,0x00,0x00,0x30,0x38,0x3c, // 0xfc //play
+  0x66,0x66,0x66,0x00,0x00,0x66,0x66,0x66, // 0xfd //buf
+  0x7e,0x7e,0x7e,0x00,0x00,0x7e,0x7e,0x7e, // 0xfe //stop
+  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  // 0xff
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fonts/font_8x8.h	Sun Apr 17 18:03:24 2011 +0000
@@ -0,0 +1,16 @@
+#ifndef _FONT_8X8_H_
+#define _FONT_8X8_H_
+
+
+//----- DEFINES -----
+#define FONT8x8_START                    0x20
+#define FONT8x8_END                      0xFF
+#define FONT8x8_WIDTH                    8
+#define FONT8x8_HEIGHT                   8
+
+
+//----- GLOBALS -----
+extern const unsigned char font_8x8[];
+
+
+#endif //_FONT_8X8_H_