Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
jigr69
Date:
Fri Jul 02 15:36:51 2010 +0000
Commit message:

Changed in this revision

MobileLCD.cpp Show annotated file Show diff for this revision Revisions of this file
MobileLCD.h Show annotated file Show diff for this revision Revisions of this file
Terminal.cpp Show annotated file Show diff for this revision Revisions of this file
Terminal.h 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
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MobileLCD.cpp	Fri Jul 02 15:36:51 2010 +0000
@@ -0,0 +1,652 @@
+/* mbed Library - MobileLCD
+ * Copyright (c) 2007, sford
+ */
+
+#include "MobileLCD.h"
+
+#include "mbed.h"
+
+#include "Terminal.h"
+
+Terminal term(USBTX, USBRX); // tx, rx
+
+using namespace mbed;
+
+const unsigned char FONT6x8[97][8] = {
+    0x06,0x08,0x08,0x00,0x00,0x00,0x00,0x00, // columns, rows, num_bytes_per_char
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // space 0x20
+    0x20,0x20,0x20,0x20,0x20,0x00,0x20,0x00, // !
+    0x50,0x50,0x50,0x00,0x00,0x00,0x00,0x00, // "
+    0x50,0x50,0xF8,0x50,0xF8,0x50,0x50,0x00, // #
+    0x20,0x78,0xA0,0x70,0x28,0xF0,0x20,0x00, // $
+    0xC0,0xC8,0x10,0x20,0x40,0x98,0x18,0x00, // %
+    0x40,0xA0,0xA0,0x40,0xA8,0x90,0x68,0x00, // &
+    0x30,0x30,0x20,0x40,0x00,0x00,0x00,0x00, // '
+    0x10,0x20,0x40,0x40,0x40,0x20,0x10,0x00, // (
+    0x40,0x20,0x10,0x10,0x10,0x20,0x40,0x00, // )
+    0x00,0x20,0xA8,0x70,0x70,0xA8,0x20,0x00, // *
+    0x00,0x20,0x20,0xF8,0x20,0x20,0x00,0x00, // +
+    0x00,0x00,0x00,0x00,0x30,0x30,0x20,0x40, // ,
+    0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00, // -
+    0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00, // .
+    0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00, // / (forward slash)
+    0x70,0x88,0x88,0xA8,0x88,0x88,0x70,0x00, // 0 0x30
+    0x20,0x60,0x20,0x20,0x20,0x20,0x70,0x00, // 1
+    0x70,0x88,0x08,0x70,0x80,0x80,0xF8,0x00, // 2
+    0xF8,0x08,0x10,0x30,0x08,0x88,0x70,0x00, // 3
+    0x10,0x30,0x50,0x90,0xF8,0x10,0x10,0x00, // 4
+    0xF8,0x80,0xF0,0x08,0x08,0x88,0x70,0x00, // 5
+    0x38,0x40,0x80,0xF0,0x88,0x88,0x70,0x00, // 6
+    0xF8,0x08,0x08,0x10,0x20,0x40,0x80,0x00, // 7
+    0x70,0x88,0x88,0x70,0x88,0x88,0x70,0x00, // 8
+    0x70,0x88,0x88,0x78,0x08,0x10,0xE0,0x00, // 9
+    0x00,0x00,0x20,0x00,0x20,0x00,0x00,0x00, // :
+    0x00,0x00,0x20,0x00,0x20,0x20,0x40,0x00, // ;
+    0x08,0x10,0x20,0x40,0x20,0x10,0x08,0x00, // <
+    0x00,0x00,0xF8,0x00,0xF8,0x00,0x00,0x00, // =
+    0x40,0x20,0x10,0x08,0x10,0x20,0x40,0x00, // >
+    0x70,0x88,0x08,0x30,0x20,0x00,0x20,0x00, // ?
+    0x70,0x88,0xA8,0xB8,0xB0,0x80,0x78,0x00, // @ 0x40
+    0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00, // A
+    0xF0,0x88,0x88,0xF0,0x88,0x88,0xF0,0x00, // B
+    0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x00, // C
+    0xF0,0x88,0x88,0x88,0x88,0x88,0xF0,0x00, // D
+    0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00, // E
+    0xF8,0x80,0x80,0xF0,0x80,0x80,0x80,0x00, // F
+    0x78,0x88,0x80,0x80,0x98,0x88,0x78,0x00, // G
+    0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x00, // H
+    0x70,0x20,0x20,0x20,0x20,0x20,0x70,0x00, // I
+    0x38,0x10,0x10,0x10,0x10,0x90,0x60,0x00, // J
+    0x88,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x00, // K
+    0x80,0x80,0x80,0x80,0x80,0x80,0xF8,0x00, // L
+    0x88,0xD8,0xA8,0xA8,0xA8,0x88,0x88,0x00, // M
+    0x88,0x88,0xC8,0xA8,0x98,0x88,0x88,0x00, // N
+    0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00, // O
+    0xF0,0x88,0x88,0xF0,0x80,0x80,0x80,0x00, // P 0x50
+    0x70,0x88,0x88,0x88,0xA8,0x90,0x68,0x00, // Q
+    0xF0,0x88,0x88,0xF0,0xA0,0x90,0x88,0x00, // R
+    0x70,0x88,0x80,0x70,0x08,0x88,0x70,0x00, // S
+    0xF8,0xA8,0x20,0x20,0x20,0x20,0x20,0x00, // T
+    0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00, // U
+    0x88,0x88,0x88,0x88,0x88,0x50,0x20,0x00, // V
+    0x88,0x88,0x88,0xA8,0xA8,0xA8,0x50,0x00, // W
+    0x88,0x88,0x50,0x20,0x50,0x88,0x88,0x00, // X
+    0x88,0x88,0x50,0x20,0x20,0x20,0x20,0x00, // Y
+    0xF8,0x08,0x10,0x70,0x40,0x80,0xF8,0x00, // Z
+    0x78,0x40,0x40,0x40,0x40,0x40,0x78,0x00, // [
+    0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00, // \ (back slash)
+    0x78,0x08,0x08,0x08,0x08,0x08,0x78,0x00, // ]
+    0x20,0x50,0x88,0x00,0x00,0x00,0x00,0x00, // ^
+    0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00, // _
+    0x60,0x60,0x20,0x10,0x00,0x00,0x00,0x00, // ` 0x60
+    0x00,0x00,0x60,0x10,0x70,0x90,0x78,0x00, // a
+    0x80,0x80,0xB0,0xC8,0x88,0xC8,0xB0,0x00, // b
+    0x00,0x00,0x70,0x88,0x80,0x88,0x70,0x00, // c
+    0x08,0x08,0x68,0x98,0x88,0x98,0x68,0x00, // d
+    0x00,0x00,0x70,0x88,0xF8,0x80,0x70,0x00, // e
+    0x10,0x28,0x20,0x70,0x20,0x20,0x20,0x00, // f
+    0x00,0x00,0x70,0x98,0x98,0x68,0x08,0x70, // g
+    0x80,0x80,0xB0,0xC8,0x88,0x88,0x88,0x00, // h
+    0x20,0x00,0x60,0x20,0x20,0x20,0x70,0x00, // i
+    0x10,0x00,0x10,0x10,0x10,0x90,0x60,0x00, // j
+    0x80,0x80,0x90,0xA0,0xC0,0xA0,0x90,0x00, // k
+    0x60,0x20,0x20,0x20,0x20,0x20,0x70,0x00, // l
+    0x00,0x00,0xD0,0xA8,0xA8,0xA8,0xA8,0x00, // m
+    0x00,0x00,0xB0,0xC8,0x88,0x88,0x88,0x00, // n
+    0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x00, // o
+    0x00,0x00,0xB0,0xC8,0xC8,0xB0,0x80,0x80, // p 0x70
+    0x00,0x00,0x68,0x98,0x98,0x68,0x08,0x08, // q
+    0x00,0x00,0xB0,0xC8,0x80,0x80,0x80,0x00, // r
+    0x00,0x00,0x78,0x80,0x70,0x08,0xF0,0x00, // s
+    0x20,0x20,0xF8,0x20,0x20,0x28,0x10,0x00, // t
+    0x00,0x00,0x88,0x88,0x88,0x98,0x68,0x00, // u
+    0x00,0x00,0x88,0x88,0x88,0x50,0x20,0x00, // v
+    0x00,0x00,0x88,0x88,0xA8,0xA8,0x50,0x00, // w
+    0x00,0x00,0x88,0x50,0x20,0x50,0x88,0x00, // x
+    0x00,0x00,0x88,0x88,0x78,0x08,0x88,0x70, // y
+    0x00,0x00,0xF8,0x10,0x20,0x40,0xF8,0x00, // z
+    0x10,0x20,0x20,0x40,0x20,0x20,0x10,0x00, // {
+    0x20,0x20,0x20,0x00,0x20,0x20,0x20,0x00, // |
+    0x40,0x20,0x20,0x10,0x20,0x20,0x40,0x00, // }
+    0x40,0xA8,0x10,0x00,0x00,0x00,0x00,0x00, // ~
+    0x70,0xD8,0xD8,0x70,0x00,0x00,0x00,0x00
+}; // DEL
+
+const unsigned char FONT8x8[97][8] = {
+    0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00, // columns, rows, num_bytes_per_char
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // space 0x20
+    0x30,0x78,0x78,0x30,0x30,0x00,0x30,0x00, // !
+    0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00, // "
+    0x6C,0x6C,0xFE,0x6C,0xFE,0x6C,0x6C,0x00, // #
+    0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00, // $
+    0x00,0x63,0x66,0x0C,0x18,0x33,0x63,0x00, // %
+    0x1C,0x36,0x1C,0x3B,0x6E,0x66,0x3B,0x00, // &
+    0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00, // '
+    0x0C,0x18,0x30,0x30,0x30,0x18,0x0C,0x00, // (
+    0x30,0x18,0x0C,0x0C,0x0C,0x18,0x30,0x00, // )
+    0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00, // *
+    0x00,0x30,0x30,0xFC,0x30,0x30,0x00,0x00, // +
+    0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30, // ,
+    0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00, // -
+    0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00, // .
+    0x03,0x06,0x0C,0x18,0x30,0x60,0x40,0x00, // / (forward slash)
+    0x3E,0x63,0x63,0x6B,0x63,0x63,0x3E,0x00, // 0 0x30
+    0x18,0x38,0x58,0x18,0x18,0x18,0x7E,0x00, // 1
+    0x3C,0x66,0x06,0x1C,0x30,0x66,0x7E,0x00, // 2
+    0x3C,0x66,0x06,0x1C,0x06,0x66,0x3C,0x00, // 3
+    0x0E,0x1E,0x36,0x66,0x7F,0x06,0x0F,0x00, // 4
+    0x7E,0x60,0x7C,0x06,0x06,0x66,0x3C,0x00, // 5
+    0x1C,0x30,0x60,0x7C,0x66,0x66,0x3C,0x00, // 6
+    0x7E,0x66,0x06,0x0C,0x18,0x18,0x18,0x00, // 7
+    0x3C,0x66,0x66,0x3C,0x66,0x66,0x3C,0x00, // 8
+    0x3C,0x66,0x66,0x3E,0x06,0x0C,0x38,0x00, // 9
+    0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00, // :
+    0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x30, // ;
+    0x0C,0x18,0x30,0x60,0x30,0x18,0x0C,0x00, // <
+    0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00, // =
+    0x30,0x18,0x0C,0x06,0x0C,0x18,0x30,0x00, // >
+    0x3C,0x66,0x06,0x0C,0x18,0x00,0x18,0x00, // ?
+    0x3E,0x63,0x6F,0x69,0x6F,0x60,0x3E,0x00, // @ 0x40
+    0x18,0x3C,0x66,0x66,0x7E,0x66,0x66,0x00, // A
+    0x7E,0x33,0x33,0x3E,0x33,0x33,0x7E,0x00, // B
+    0x1E,0x33,0x60,0x60,0x60,0x33,0x1E,0x00, // C
+    0x7C,0x36,0x33,0x33,0x33,0x36,0x7C,0x00, // D
+    0x7F,0x31,0x34,0x3C,0x34,0x31,0x7F,0x00, // E
+    0x7F,0x31,0x34,0x3C,0x34,0x30,0x78,0x00, // F
+    0x1E,0x33,0x60,0x60,0x67,0x33,0x1F,0x00, // G
+    0x66,0x66,0x66,0x7E,0x66,0x66,0x66,0x00, // H
+    0x3C,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, // I
+    0x0F,0x06,0x06,0x06,0x66,0x66,0x3C,0x00, // J
+    0x73,0x33,0x36,0x3C,0x36,0x33,0x73,0x00, // K
+    0x78,0x30,0x30,0x30,0x31,0x33,0x7F,0x00, // L
+    0x63,0x77,0x7F,0x7F,0x6B,0x63,0x63,0x00, // M
+    0x63,0x73,0x7B,0x6F,0x67,0x63,0x63,0x00, // N
+    0x3E,0x63,0x63,0x63,0x63,0x63,0x3E,0x00, // O
+    0x7E,0x33,0x33,0x3E,0x30,0x30,0x78,0x00, // P 0x50
+    0x3C,0x66,0x66,0x66,0x6E,0x3C,0x0E,0x00, // Q
+    0x7E,0x33,0x33,0x3E,0x36,0x33,0x73,0x00, // R
+    0x3C,0x66,0x30,0x18,0x0C,0x66,0x3C,0x00, // S
+    0x7E,0x5A,0x18,0x18,0x18,0x18,0x3C,0x00, // T
+    0x66,0x66,0x66,0x66,0x66,0x66,0x7E,0x00, // U
+    0x66,0x66,0x66,0x66,0x66,0x3C,0x18,0x00, // V
+    0x63,0x63,0x63,0x6B,0x7F,0x77,0x63,0x00, // W
+    0x63,0x63,0x36,0x1C,0x1C,0x36,0x63,0x00, // X
+    0x66,0x66,0x66,0x3C,0x18,0x18,0x3C,0x00, // Y
+    0x7F,0x63,0x46,0x0C,0x19,0x33,0x7F,0x00, // Z
+    0x3C,0x30,0x30,0x30,0x30,0x30,0x3C,0x00, // [
+    0x60,0x30,0x18,0x0C,0x06,0x03,0x01,0x00, // \ (back slash)
+    0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00, // ]
+    0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00, // ^
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, // _
+    0x18,0x18,0x0C,0x00,0x00,0x00,0x00,0x00, // ` 0x60
+    0x00,0x00,0x3C,0x06,0x3E,0x66,0x3B,0x00, // a
+    0x70,0x30,0x3E,0x33,0x33,0x33,0x6E,0x00, // b
+    0x00,0x00,0x3C,0x66,0x60,0x66,0x3C,0x00, // c
+    0x0E,0x06,0x3E,0x66,0x66,0x66,0x3B,0x00, // d
+    0x00,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00, // e
+    0x1C,0x36,0x30,0x78,0x30,0x30,0x78,0x00, // f
+    0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x7C, // g
+    0x70,0x30,0x36,0x3B,0x33,0x33,0x73,0x00, // h
+    0x18,0x00,0x38,0x18,0x18,0x18,0x3C,0x00, // i
+    0x06,0x00,0x06,0x06,0x06,0x66,0x66,0x3C, // j
+    0x70,0x30,0x33,0x36,0x3C,0x36,0x73,0x00, // k
+    0x38,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, // l
+    0x00,0x00,0x66,0x7F,0x7F,0x6B,0x63,0x00, // m
+    0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x00, // n
+    0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00, // o
+    0x00,0x00,0x6E,0x33,0x33,0x3E,0x30,0x78, // p
+    0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x0F, // q
+    0x00,0x00,0x6E,0x3B,0x33,0x30,0x78,0x00, // r
+    0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00, // s
+    0x08,0x18,0x3E,0x18,0x18,0x1A,0x0C,0x00, // t
+    0x00,0x00,0x66,0x66,0x66,0x66,0x3B,0x00, // u
+    0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00, // v
+    0x00,0x00,0x63,0x6B,0x7F,0x7F,0x36,0x00, // w
+    0x00,0x00,0x63,0x36,0x1C,0x36,0x63,0x00, // x
+    0x00,0x00,0x66,0x66,0x66,0x3E,0x06,0x7C, // y
+    0x00,0x00,0x7E,0x4C,0x18,0x32,0x7E,0x00, // z
+    0x0E,0x18,0x18,0x70,0x18,0x18,0x0E,0x00, // {
+    0x0C,0x0C,0x0C,0x00,0x0C,0x0C,0x0C,0x00, // |
+    0x70,0x18,0x18,0x0E,0x18,0x18,0x70,0x00, // }
+    0x3B,0x6E,0x00,0x00,0x00,0x00,0x00,0x00, // ~
+    0x1C,0x36,0x36,0x1C,0x00,0x00,0x00,0x00
+}; // DEL
+
+const unsigned char FONT8x16[97][16] = {
+    0x08,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // columns, rows, num_bytes_per_char
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // space 0x20
+    0x00,0x00,0x18,0x3C,0x3C,0x3C,0x18,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00, // !
+    0x00,0x63,0x63,0x63,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // "
+    0x00,0x00,0x00,0x36,0x36,0x7F,0x36,0x36,0x36,0x7F,0x36,0x36,0x00,0x00,0x00,0x00, // #
+    0x0C,0x0C,0x3E,0x63,0x61,0x60,0x3E,0x03,0x03,0x43,0x63,0x3E,0x0C,0x0C,0x00,0x00, // $
+    0x00,0x00,0x00,0x00,0x00,0x61,0x63,0x06,0x0C,0x18,0x33,0x63,0x00,0x00,0x00,0x00, // %
+    0x00,0x00,0x00,0x1C,0x36,0x36,0x1C,0x3B,0x6E,0x66,0x66,0x3B,0x00,0x00,0x00,0x00, // &
+    0x00,0x30,0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // '
+    0x00,0x00,0x0C,0x18,0x18,0x30,0x30,0x30,0x30,0x18,0x18,0x0C,0x00,0x00,0x00,0x00, // (
+    0x00,0x00,0x18,0x0C,0x0C,0x06,0x06,0x06,0x06,0x0C,0x0C,0x18,0x00,0x00,0x00,0x00, // )
+    0x00,0x00,0x00,0x00,0x42,0x66,0x3C,0xFF,0x3C,0x66,0x42,0x00,0x00,0x00,0x00,0x00, // *
+    0x00,0x00,0x00,0x00,0x18,0x18,0x18,0xFF,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00, // +
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x30,0x00,0x00, // ,
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00, // .
+    0x00,0x00,0x01,0x03,0x07,0x0E,0x1C,0x38,0x70,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00, // / (forward slash)
+    0x00,0x00,0x3E,0x63,0x63,0x63,0x6B,0x6B,0x63,0x63,0x63,0x3E,0x00,0x00,0x00,0x00, // 0 0x30
+    0x00,0x00,0x0C,0x1C,0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3F,0x00,0x00,0x00,0x00, // 1
+    0x00,0x00,0x3E,0x63,0x03,0x06,0x0C,0x18,0x30,0x61,0x63,0x7F,0x00,0x00,0x00,0x00, // 2
+    0x00,0x00,0x3E,0x63,0x03,0x03,0x1E,0x03,0x03,0x03,0x63,0x3E,0x00,0x00,0x00,0x00, // 3
+    0x00,0x00,0x06,0x0E,0x1E,0x36,0x66,0x66,0x7F,0x06,0x06,0x0F,0x00,0x00,0x00,0x00, // 4
+    0x00,0x00,0x7F,0x60,0x60,0x60,0x7E,0x03,0x03,0x63,0x73,0x3E,0x00,0x00,0x00,0x00, // 5
+    0x00,0x00,0x1C,0x30,0x60,0x60,0x7E,0x63,0x63,0x63,0x63,0x3E,0x00,0x00,0x00,0x00, // 6
+    0x00,0x00,0x7F,0x63,0x03,0x06,0x06,0x0C,0x0C,0x18,0x18,0x18,0x00,0x00,0x00,0x00, // 7
+    0x00,0x00,0x3E,0x63,0x63,0x63,0x3E,0x63,0x63,0x63,0x63,0x3E,0x00,0x00,0x00,0x00, // 8
+    0x00,0x00,0x3E,0x63,0x63,0x63,0x63,0x3F,0x03,0x03,0x06,0x3C,0x00,0x00,0x00,0x00, // 9
+    0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00, // :
+    0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x18,0x30,0x00,0x00, // ;
+    0x00,0x00,0x00,0x06,0x0C,0x18,0x30,0x60,0x30,0x18,0x0C,0x06,0x00,0x00,0x00,0x00, // <
+    0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00, // =
+    0x00,0x00,0x00,0x60,0x30,0x18,0x0C,0x06,0x0C,0x18,0x30,0x60,0x00,0x00,0x00,0x00, // >
+    0x00,0x00,0x3E,0x63,0x63,0x06,0x0C,0x0C,0x0C,0x00,0x0C,0x0C,0x00,0x00,0x00,0x00, // ?
+    0x00,0x00,0x3E,0x63,0x63,0x6F,0x6B,0x6B,0x6E,0x60,0x60,0x3E,0x00,0x00,0x00,0x00, // @ 0x40
+    0x00,0x00,0x08,0x1C,0x36,0x63,0x63,0x63,0x7F,0x63,0x63,0x63,0x00,0x00,0x00,0x00, // A
+    0x00,0x00,0x7E,0x33,0x33,0x33,0x3E,0x33,0x33,0x33,0x33,0x7E,0x00,0x00,0x00,0x00, // B
+    0x00,0x00,0x1E,0x33,0x61,0x60,0x60,0x60,0x60,0x61,0x33,0x1E,0x00,0x00,0x00,0x00, // C
+    0x00,0x00,0x7C,0x36,0x33,0x33,0x33,0x33,0x33,0x33,0x36,0x7C,0x00,0x00,0x00,0x00, // D
+    0x00,0x00,0x7F,0x33,0x31,0x34,0x3C,0x34,0x30,0x31,0x33,0x7F,0x00,0x00,0x00,0x00, // E
+    0x00,0x00,0x7F,0x33,0x31,0x34,0x3C,0x34,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00, // F
+    0x00,0x00,0x1E,0x33,0x61,0x60,0x60,0x6F,0x63,0x63,0x37,0x1D,0x00,0x00,0x00,0x00, // G
+    0x00,0x00,0x63,0x63,0x63,0x63,0x7F,0x63,0x63,0x63,0x63,0x63,0x00,0x00,0x00,0x00, // H
+    0x00,0x00,0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00, // I
+    0x00,0x00,0x0F,0x06,0x06,0x06,0x06,0x06,0x06,0x66,0x66,0x3C,0x00,0x00,0x00,0x00, // J
+    0x00,0x00,0x73,0x33,0x36,0x36,0x3C,0x36,0x36,0x33,0x33,0x73,0x00,0x00,0x00,0x00, // K
+    0x00,0x00,0x78,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x33,0x7F,0x00,0x00,0x00,0x00, // L
+    0x00,0x00,0x63,0x77,0x7F,0x6B,0x63,0x63,0x63,0x63,0x63,0x63,0x00,0x00,0x00,0x00, // M
+    0x00,0x00,0x63,0x63,0x73,0x7B,0x7F,0x6F,0x67,0x63,0x63,0x63,0x00,0x00,0x00,0x00, // N
+    0x00,0x00,0x1C,0x36,0x63,0x63,0x63,0x63,0x63,0x63,0x36,0x1C,0x00,0x00,0x00,0x00, // O
+    0x00,0x00,0x7E,0x33,0x33,0x33,0x3E,0x30,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00, // P 0x50
+    0x00,0x00,0x3E,0x63,0x63,0x63,0x63,0x63,0x63,0x6B,0x6F,0x3E,0x06,0x07,0x00,0x00, // Q
+    0x00,0x00,0x7E,0x33,0x33,0x33,0x3E,0x36,0x36,0x33,0x33,0x73,0x00,0x00,0x00,0x00, // R
+    0x00,0x00,0x3E,0x63,0x63,0x30,0x1C,0x06,0x03,0x63,0x63,0x3E,0x00,0x00,0x00,0x00, // S
+    0x00,0x00,0xFF,0xDB,0x99,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00, // T
+    0x00,0x00,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x3E,0x00,0x00,0x00,0x00, // U
+    0x00,0x00,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x36,0x1C,0x08,0x00,0x00,0x00,0x00, // V
+    0x00,0x00,0x63,0x63,0x63,0x63,0x63,0x6B,0x6B,0x7F,0x36,0x36,0x00,0x00,0x00,0x00, // W
+    0x00,0x00,0xC3,0xC3,0x66,0x3C,0x18,0x18,0x3C,0x66,0xC3,0xC3,0x00,0x00,0x00,0x00, // X
+    0x00,0x00,0xC3,0xC3,0xC3,0x66,0x3C,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00, // Y
+    0x00,0x00,0x7F,0x63,0x43,0x06,0x0C,0x18,0x30,0x61,0x63,0x7F,0x00,0x00,0x00,0x00, // Z
+    0x00,0x00,0x3C,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x3C,0x00,0x00,0x00,0x00, // [
+    0x00,0x00,0x80,0xC0,0xE0,0x70,0x38,0x1C,0x0E,0x07,0x03,0x01,0x00,0x00,0x00,0x00, // \ (back slash)
+    0x00,0x00,0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00,0x00,0x00,0x00, // ]
+    0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ^
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, // _
+    0x18,0x18,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ` 0x60
+    0x00,0x00,0x00,0x00,0x00,0x3C,0x46,0x06,0x3E,0x66,0x66,0x3B,0x00,0x00,0x00,0x00, // a
+    0x00,0x00,0x70,0x30,0x30,0x3C,0x36,0x33,0x33,0x33,0x33,0x6E,0x00,0x00,0x00,0x00, // b
+    0x00,0x00,0x00,0x00,0x00,0x3E,0x63,0x60,0x60,0x60,0x63,0x3E,0x00,0x00,0x00,0x00, // c
+    0x00,0x00,0x0E,0x06,0x06,0x1E,0x36,0x66,0x66,0x66,0x66,0x3B,0x00,0x00,0x00,0x00, // d
+    0x00,0x00,0x00,0x00,0x00,0x3E,0x63,0x63,0x7E,0x60,0x63,0x3E,0x00,0x00,0x00,0x00, // e
+    0x00,0x00,0x1C,0x36,0x32,0x30,0x7C,0x30,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00, // f
+    0x00,0x00,0x00,0x00,0x00,0x3B,0x66,0x66,0x66,0x66,0x3E,0x06,0x66,0x3C,0x00,0x00, // g
+    0x00,0x00,0x70,0x30,0x30,0x36,0x3B,0x33,0x33,0x33,0x33,0x73,0x00,0x00,0x00,0x00, // h
+    0x00,0x00,0x0C,0x0C,0x00,0x1C,0x0C,0x0C,0x0C,0x0C,0x0C,0x1E,0x00,0x00,0x00,0x00, // i
+    0x00,0x00,0x06,0x06,0x00,0x0E,0x06,0x06,0x06,0x06,0x06,0x66,0x66,0x3C,0x00,0x00, // j
+    0x00,0x00,0x70,0x30,0x30,0x33,0x33,0x36,0x3C,0x36,0x33,0x73,0x00,0x00,0x00,0x00, // k
+    0x00,0x00,0x1C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x1E,0x00,0x00,0x00,0x00, // l
+    0x00,0x00,0x00,0x00,0x00,0x6E,0x7F,0x6B,0x6B,0x6B,0x6B,0x6B,0x00,0x00,0x00,0x00, // m
+    0x00,0x00,0x00,0x00,0x00,0x6E,0x33,0x33,0x33,0x33,0x33,0x33,0x00,0x00,0x00,0x00, // n
+    0x00,0x00,0x00,0x00,0x00,0x3E,0x63,0x63,0x63,0x63,0x63,0x3E,0x00,0x00,0x00,0x00, // o
+    0x00,0x00,0x00,0x00,0x00,0x6E,0x33,0x33,0x33,0x33,0x3E,0x30,0x30,0x78,0x00,0x00, // p 0x70
+    0x00,0x00,0x00,0x00,0x00,0x3B,0x66,0x66,0x66,0x66,0x3E,0x06,0x06,0x0F,0x00,0x00, // q
+    0x00,0x00,0x00,0x00,0x00,0x6E,0x3B,0x33,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00, // r
+    0x00,0x00,0x00,0x00,0x00,0x3E,0x63,0x38,0x0E,0x03,0x63,0x3E,0x00,0x00,0x00,0x00, // s
+    0x00,0x00,0x08,0x18,0x18,0x7E,0x18,0x18,0x18,0x18,0x1B,0x0E,0x00,0x00,0x00,0x00, // t
+    0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3B,0x00,0x00,0x00,0x00, // u
+    0x00,0x00,0x00,0x00,0x00,0x63,0x63,0x36,0x36,0x1C,0x1C,0x08,0x00,0x00,0x00,0x00, // v
+    0x00,0x00,0x00,0x00,0x00,0x63,0x63,0x63,0x6B,0x6B,0x7F,0x36,0x00,0x00,0x00,0x00, // w
+    0x00,0x00,0x00,0x00,0x00,0x63,0x36,0x1C,0x1C,0x1C,0x36,0x63,0x00,0x00,0x00,0x00, // x
+    0x00,0x00,0x00,0x00,0x00,0x63,0x63,0x63,0x63,0x63,0x3F,0x03,0x06,0x3C,0x00,0x00, // y
+    0x00,0x00,0x00,0x00,0x00,0x7F,0x66,0x0C,0x18,0x30,0x63,0x7F,0x00,0x00,0x00,0x00, // z
+    0x00,0x00,0x0E,0x18,0x18,0x18,0x70,0x18,0x18,0x18,0x18,0x0E,0x00,0x00,0x00,0x00, // {
+    0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x00,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00, // |
+    0x00,0x00,0x70,0x18,0x18,0x18,0x0E,0x18,0x18,0x18,0x18,0x70,0x00,0x00,0x00,0x00, // }
+    0x00,0x00,0x3B,0x6E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ~
+    0x00,0x70,0xD8,0xD8,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  // DELL
+};
+
+void MobileLCD::command(int value) {
+    _spi.write(value & 0xFF);
+}
+
+void MobileLCD::data(int value) {
+    _spi.write(value | 0x100);
+}
+
+void MobileLCD::_select() {
+    _cs = 0;
+}
+
+void MobileLCD::_deselect() {
+    _cs = 1;
+}
+
+int MobileLCD::width() {
+    return _width;
+}
+
+int MobileLCD::height() {
+    return _height;
+}
+
+void MobileLCD::foreground(int v) {
+    _foreground = v;
+}
+
+void MobileLCD::background(int v) {
+    _background = v;
+}
+
+
+/*************************************************************************/
+
+MobileLCD::MobileLCD(PinName mosi, PinName miso, PinName clk, PinName cs, PinName rst)
+        : _spi(mosi, miso, clk)
+        , _rst(rst)
+        , _cs(cs) {
+
+    _width = 130;
+    _height = 130;
+    foreground(0xFFFFFF);
+    background(0x000000);
+    reset();
+}
+
+void MobileLCD::reset() {
+
+    _cs = 1;
+    _rst = 0;
+    _spi.format(9);
+    _spi.frequency(5000000);
+
+    wait_ms(1);
+
+    _rst = 1;
+
+    wait_ms(1);
+
+    _select();
+
+    command(DISCTL); // display control
+    data(0x0);
+    data(31);
+    data(0x0);
+
+    command(COMSCN);  // scan
+    data(0x1);
+
+    command(OSCON); // oscillator on
+    command(SLPOUT); // sleep out
+    command(PWRCTR); // power control
+    data(0x0F);
+
+    command(DISINV); // invert display
+
+    command(VOLCTR); // Voltage control
+    data(39);      // contrast setting: 0..63
+    data(3);       // resistance ratio
+
+    wait_ms(1);
+
+    command(DATCTL); // data control
+    data(0x0); // scan dirs
+    data(0x0); // RGB
+    data(0x2); // grayscale
+
+    command(DISON);  // turn on the display
+
+    _deselect();
+
+    cls();
+}
+
+void MobileLCD::cls()
+{
+    fill(0, 0, 130, 130, _background);
+}
+
+void MobileLCD::_window(int x, int y, int width, int height) 
+{
+    int x1, x2, y1, y2;
+    x1 = x + 0;
+    y1 = y + 2;
+    x2 = x1 + width - 1;
+    y2 = y1 + height - 1;
+
+    command(CASET); // column
+    data(x1);
+    data(x2);
+
+    command(PASET); // page
+    data(y1);
+    data(y2);
+
+    command(RAMWR); // start write to ram
+}
+
+void MobileLCD::fill(int x, int y, int width, int height, int colour)
+{
+    int i = 0;
+
+    _select();
+    _window(x, y, width, height);
+
+    int r4 = (colour >> (16 + 4)) & 0xF;
+    int g4 = (colour >> (8 + 4)) & 0xF;
+    int b4 = (colour >> (0 + 4)) & 0xF;
+
+    int d1 = (r4 << 4) | g4;
+    int d2 = (b4 << 4) | r4;
+    int d3 = (g4 << 4) | b4;
+
+    for(i=0; i<(width*height+1)/2; i++) 
+    {
+        data(d1);
+        data(d2);
+        data(d3);
+    }
+    
+    _deselect();
+}
+
+void MobileLCD::pixel(int x, int y, int colour) {
+    fill(x, y, 1, 1, colour);
+}
+
+void MobileLCD::setpixel(int x, int y, int colour) {
+
+    _select();
+
+    int r4 = (colour >> (16 + 4)) & 0xF;
+    int g4 = (colour >> (8 + 4)) & 0xF;
+    int b4 = (colour >> (0 + 4)) & 0xF;
+
+    int d1 = (r4 << 4) | g4;
+    int d2 = (b4 << 4) | r4;
+    int d3 = (g4 << 4) | b4;
+
+    command(CASET); // column
+    data(x);
+    data(x);
+
+    command(PASET); // page
+    data(y);
+    data(y);
+
+    command(RAMWR); // start write to ram
+
+    data(d1);
+    data(d2);
+    data(d3);
+
+    _deselect();
+}
+
+void MobileLCD::setline(int x0, int y0, int x1, int y1, int color) {
+    int dy = y1 - y0;
+    int dx = x1 - x0;
+    int stepx, stepy;
+
+    if(dy < 0)
+    {
+        dy = -dy; 
+        stepy = -1; 
+    }
+    else
+        stepy = 1;
+        
+    if(dx < 0)
+    {
+        dx = -dx; 
+        stepx = -1; 
+    } 
+    else
+        stepx = 1;
+
+    dy <<= 1; // dy is now 2*dy
+    dx <<= 1; // dx is now 2*dx
+
+    setpixel(x0, y0, color);
+    if (dx > dy) 
+    {
+        int fraction = dy - (dx >> 1); // same as 2*dy - dx
+        while (x0 != x1) 
+        {
+            if (fraction >= 0) 
+            {
+                y0 += stepy;
+                fraction -= dx; // same as fraction -= 2*dx
+            }
+            x0 += stepx;
+            fraction += dy; // same as fraction -= 2*dy
+            setpixel(x0, y0, color);
+        }
+    }
+    else
+    {
+        int fraction = dx - (dy >> 1);
+        while (y0 != y1) 
+        {
+            if (fraction >= 0) 
+            {
+                x0 += stepx;
+                fraction -= dy;
+            }
+            y0 += stepy;
+            fraction += dx;
+            setpixel(x0, y0, color);
+        }
+    }
+}
+
+void  MobileLCD::setrect(int x0, int y0, int x1, int y1, unsigned char tmpNum, int color) {
+
+    int xmin, xmax, ymin, ymax;
+
+    // check if the rectangle is to be filled
+    if (tmpNum == FILL) 
+    {
+        // best way to create a filled rectangle is to define a drawing box
+        // and loop two pixels at a time
+        // calculate the min and max for x and y directions
+        xmin = (x0 <= x1) ? x0 : x1;
+        xmax = (x0 > x1) ? x0 : x1;
+        ymin = (y0 <= y1) ? y0 : y1;
+        ymax = (y0 > y1) ? y0 : y1;
+
+        fill(xmin, ymin, (xmax - xmin), (ymax - ymin), color);
+    }
+    else
+    {
+        // best way to draw un unfilled rectangle is to draw four lines
+        setline(x0, y0, x1, y0, color);
+        setline(x0, y1, x1, y1, color);
+        setline(x0, y0, x0, y1, color);
+        setline(x1, y0, x1, y1, color);
+    }
+}
+
+void MobileLCD::setcircle(int x0, int y0, int radius, int color) {
+
+    int f = 1 - radius;
+    int ddF_x = 0;
+    int ddF_y = -2 * radius;
+    int x = 0;
+    int y = radius;
+
+    setpixel(x0, y0 + radius, color);
+    setpixel(x0, y0 - radius, color);
+    setpixel(x0 + radius, y0, color);
+    setpixel(x0 - radius, y0, color);
+    
+    while(x < y) 
+    {
+        if(f >= 0) 
+        {
+            y--;
+            ddF_y += 2;
+            f += ddF_y;
+        }
+        x++;
+        ddF_x += 2;
+        f += ddF_x + 1;
+        
+        setpixel(x0 + x, y0 + y, color);
+        setpixel(x0 - x, y0 + y, color);
+        setpixel(x0 + x, y0 - y, color);
+        setpixel(x0 - x, y0 - y, color);
+        setpixel(x0 + y, y0 + x, color);
+        setpixel(x0 - y, y0 + x, color);
+        setpixel(x0 + y, y0 - x, color);
+        setpixel(x0 - y, y0 - x, color);
+    }
+}
+
+void MobileLCD::bitblit(int x, int y, int width, int height, const char* bitstream, int fColor, int bColor) {
+    _select();
+    _window(x, y, width, height);
+    for(int i=0; i<height*width/2; i++) {
+    int byte1 = (i*2) / 8;
+    int bit1 = (i*2) % 8;    
+    int colour1 = ((bitstream[byte1] << bit1) & 0x80) ? fColor : bColor;
+    int byte2 = (i*2+1) / 8;
+    int bit2 = (i*2+1) % 8;    
+    int colour2 = ((bitstream[byte2] << bit2) & 0x80) ? fColor : bColor;
+
+    int r41 = (colour1 >> (16 + 4)) & 0xF;
+    int g41 = (colour1 >> (8 + 4)) & 0xF;
+    int b41 = (colour1 >> (0 + 4)) & 0xF;
+    
+    int r42 = (colour2 >> (16 + 4)) & 0xF;
+    int g42 = (colour2 >> (8 + 4)) & 0xF;
+    int b42 = (colour2 >> (0 + 4)) & 0xF;    
+    int d1 = (r41 << 4) | g41;
+    int d2 = (b41 << 4) | r42;
+    int d3 = (g42 << 4) | b42;                
+        data(d1); 
+        data(d2); 
+        data(d3); 
+    }
+    _deselect();
+}
+
+void MobileLCD::putchar(int x, int y, int size, int value, int fColor, int bColor) { 
+
+    switch(size)
+    {
+        case SMALL    :    bitblit(x, y, 8, 8, (char*)&(FONT6x8[value - 0x1F][0]), fColor, bColor);
+                           break;
+        case MEDIUM   :    bitblit(x, y, 8, 8, (char*)&(FONT8x8[value - 0x1F][0]), fColor, bColor);
+                           break;
+        case LARGE    :    bitblit(x, y, 8, 16, (char*)&(FONT8x16[value - 0x1F][0]), fColor, bColor);
+                           break;
+    }
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MobileLCD.h	Fri Jul 02 15:36:51 2010 +0000
@@ -0,0 +1,136 @@
+
+#ifndef MBED_MOBILELCD_H
+#define MBED_MOBILELCD_H
+
+#include "mbed.h"
+
+class MobileLCD {
+
+public:
+
+    MobileLCD(PinName mosi, PinName miso, PinName clk, PinName cs, PinName rst);
+
+    void cls();
+    int width();
+    int height();
+    void foreground(int v);
+    void background(int v);
+    void fill(int x, int y, int width, int height, int colour);
+    void reset();
+    void pixel(int x, int y, int colour);
+    void setpixel(int x, int y, int colour);
+    void setline(int x0, int y0, int x1, int y1, int color);
+    void setrect(int x0, int y0, int x1, int y1, unsigned char fill, int color);
+    void setcircle(int x0, int y0, int radius, int color);
+    void putchar(int x, int y, int size, int value, int fColor, int bColor);
+    void bitblit(int x, int y, int width, int height, const char* bitstream, int fColor, int bColor);
+    
+protected:
+
+    SPI _spi;
+    DigitalOut _rst;
+    DigitalOut _cs;
+
+    void _select();
+    void _deselect();
+    void _window(int x, int y, int width, int height);
+    void command(int value);
+    void data(int value);
+
+    int _foreground, _background, _width, _height;
+};
+    
+#define     DISON     0xAF     // Display on
+#define     DISOFF    0xAE     // Display off
+#define     DISNOR    0xA6     // Normal display
+#define     DISINV    0xA7     // Inverse display
+#define     COMSCN    0xBB     // Common scan direction
+#define     DISCTL    0xCA     // Display control
+#define     SLPIN     0x95     // Sleep in
+#define     SLPOUT    0x94     // Sleep out
+#define     PASET     0x75     // Page address set
+#define     CASET     0x15     // Column address set
+#define     DATCTL    0xBC     // Data scan direction, etc.
+#define     RGBSET8   0xCE     // 256-color position set
+#define     RAMWR     0x5C     // Writing to memory
+#define     RAMRD     0x5D     // Reading from memory
+#define     PTLIN     0xA8     // Partial display in
+#define     PTLOUT    0xA9     // Partial display out
+#define     RMWIN     0xE0     // Read and modify write
+#define     RMWOUT    0xEE     // End
+#define     ASCSET    0xAA     // Area scroll set
+#define     SCSTART   0xAB     // Scroll start set
+#define     OSCON     0xD1     // Internal oscillation on
+#define     OSCOFF    0xD2     // Internal oscillation off
+#define     PWRCTR    0x20     // Power control
+#define     VOLCTR    0x81     // Electronic volume control
+#define     VOLUP     0xD6     // Increment electronic control by 1
+#define     VOLDOWN   0xD7     // Decrement electronic control by 1
+#define     TMPGRD    0x82     // Temperature gradient set
+#define     EPCTIN    0xCD     // Control EEPROM
+#define     EPCOUT    0xCC     // Cancel EEPROM control
+#define     EPMWR     0xFC     // Write into EEPROM
+#define     EPMRD     0xFD     // Read from EEPROM
+#define     EPSRRD1   0x7C     // Read register 1
+#define     EPSRRD2   0x7D     // Read register 2
+#define     NOP       0x25     // NOP instruction
+
+// backlight control
+#define     BKLGHT_LCD_ON     1
+#define     BKLGHT_LCD_OFF    2
+
+// Booleans
+#define     NOFILL     0
+#define     FILL       1
+#define     SMALL      0
+#define     MEDIUM     1
+#define     LARGE      2
+
+// mask definitions
+#define     BIT0     0x00000001
+#define     BIT1     0x00000002
+#define     BIT2     0x00000004
+#define     BIT3     0x00000008
+#define     BIT4     0x00000010
+#define     BIT5     0x00000020
+#define     BIT6     0x00000040
+#define     BIT7     0x00000080
+#define     BIT8     0x00000100
+#define     BIT9     0x00000200
+#define     BIT10    0x00000400
+#define     BIT11    0x00000800
+#define     BIT12    0x00001000
+#define     BIT13    0x00002000
+#define     BIT14    0x00004000
+#define     BIT15    0x00008000
+#define     BIT16    0x00010000
+#define     BIT17    0x00020000
+#define     BIT18    0x00040000
+#define     BIT19    0x00080000
+#define     BIT20    0x00100000
+#define     BIT21    0x00200000
+#define     BIT22    0x00400000
+#define     BIT23    0x00800000
+#define     BIT24    0x01000000
+#define     BIT25    0x02000000
+#define     BIT26    0x04000000
+#define     BIT27    0x08000000
+#define     BIT28    0x10000000
+#define     BIT29    0x20000000
+#define     BIT30    0x40000000
+#define     BIT31    0x80000000
+
+// 12-bit color definitions
+#define     WHITE     0xFFFFFF
+#define     BLACK     0x000000
+#define     RED       0xFF0000
+#define     GREEN     0x00FF00
+#define     BLUE      0x0000FF
+#define     CYAN      0x00FFFF
+#define     MAGENTA   0xFF00FF
+#define     YELLOW    0xFFFF00
+#define     BROWN     0xBB2222
+#define     ORANGE    0xFFAA00
+#define     PINK      0xFF66AA
+
+#endif // Lcd_h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Terminal.cpp	Fri Jul 02 15:36:51 2010 +0000
@@ -0,0 +1,40 @@
+/* mbed ANSI/VT100 Terminal Library
+ * Copyright (c) 2007-2009 sford
+ * Released under the MIT License: http://mbed.org/license/mit
+ */
+
+#include "Terminal.h"
+
+#include "mbed.h"
+
+Terminal::Terminal(PinName tx, PinName rx) : Serial(tx, rx) {}
+
+void Terminal::cls() {
+    this->printf("\033[2J");
+}
+
+void Terminal::locate(int column, int row) {
+    // Cursor Home    <ESC>[{ROW};{COLUMN}H
+    this->printf("\033[%d;%dH%c", row + 1, column + 1);
+}
+
+static int rgb888tobgr111(int colour) {
+    int r = (colour >> 23) & 1;
+    int g = (colour >> 15) & 1;
+    int b = (colour >> 7) & 1;
+    return (b << 2) | (g << 1) | (r << 0);
+}
+
+void Terminal::foreground(int colour) {
+    // Set Attribute Mode    <ESC>[{n}m
+    // Foreground Colours : 30 + bgr
+    int c = 30 + rgb888tobgr111(colour);
+    this->printf("\033[%dm", c);
+}
+
+void Terminal::background(int colour) {
+    // Set Attribute Mode    <ESC>[{n}m
+    // Background Colours : 40 + bgr
+    int c = 40 + rgb888tobgr111(colour);
+    this->printf("\033[%dm", c);
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Terminal.h	Fri Jul 02 15:36:51 2010 +0000
@@ -0,0 +1,27 @@
+/* mbed Terminal TextDisplay Library
+ * Copyright (c) 2007-2009 sford
+ * Released under the MIT License: http://mbed.org/license/mit
+ *
+ * Implementation of ANSI/VT100 Terminal escape codes
+ * for use with e.g. Teraterm, Hyperterminal
+ */
+
+#include "mbed.h"
+
+#ifndef MBED_TERMINAL_H
+#define MBED_TERMINAL_H
+
+class Terminal : public Serial {
+public:
+
+    Terminal(PinName tx, PinName rx);
+
+    // printf(), put(), baud() etc - inherited from Serial
+
+    void cls();
+    void locate(int column, int row);
+    void foreground(int colour);
+    void background(int colour);
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Jul 02 15:36:51 2010 +0000
@@ -0,0 +1,17 @@
+#include "mbed.h"
+#include "MobileLCD.h"
+
+MobileLCD lcd(p5, p6, p7, p8, p9);
+
+int main() {
+
+    // clear the screen
+    lcd.cls();
+    lcd.setcircle(50, 50, 25, YELLOW);
+    lcd.putchar(50, 50, SMALL, 65, 0x000000, 0xFFFFFF);
+    lcd.putchar(60, 60, MEDIUM, 65, 0xFFFFFF, 0x000000);
+    lcd.putchar(70, 70, LARGE, 'A', 0xFF0000, 0x0000FF);
+    lcd.putchar(80, 80, LARGE, '0', 0xFFFFFF, 0x111111);
+
+//    lcd.putchar('E', 50, 50, SMALL, BLUE, YELLOW);
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Fri Jul 02 15:36:51 2010 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/49a220cc26e0