Jason at AtomSoft sent me a couple Nokia 7110 LCDs. Thanks Jason! They're nice cheap little 96x65 monochrome graphic LCD's if you can find them. In this project I build a breadboard connector for the display and write some PIC 18LF1330 code and some 18F2550 code to drive the display

I made a connector out of a turned-pin 14-pin IC socket, matching the LCD's pinout.

Since I have no idea where to get a socket for the connector, I just soldered wire-wrap wire directly to the connector. Works ok. At right is a pinout diagram. The pinout is as follows:

  1. Temp sensor 47K (at 25C)
  2. _CS
  3. Speaker_p
  4. D/_C
  5. SCLK (max 3.2MHz at Vlogic=+2.8V
  6. Speaker_n
  7. On/Off
  8. Led -
  9. Led +
  10. GND
  11. GND
  12. Vlogic (+2.8V)
  13. SDATA
  14. _RESET

Video of the 7110 LCD being driven with a PIC 18LF1330:

The 18LF1330 (and many other smaller PICs) doesn't have enough RAM to do a frame buffer for graphics, so I built a font and coded to use the LCD as a 16-char x 8-line text LCD. The small PICs could also easily do static graphics, but any kind of real animation is ridiculously difficult and slow without more RAM. At the bottom of this page (below the 18LF1330 code) I'll post some 18F2550 code that does animated graphics.

The 18LF1330 PIC is a low power device, and runs fine at 3.3V or less. But it wants to be programmed at no less than 4.5V. Hitting this 2.8-3.0V LCD with 4.5V worries me (might let the magic smoke out), so I unplug the display while writing the chip. Then I switch back to 3.3V and run it.

Here's the 18LF1330 code (header file at the bottom):
NOTE: Scroll even further to find 18F2550 graphic demo code.
#include "7110_lcd.h"

char string[] = "                ";

void main()
{
    unsigned char x,y;
    int count;
    osccon = 0x72;          //set int osc to 8MHz
    trisa = trisb = 0;
    adcon1 = 0b00001111;    //all digital
    lcd_init();
    lcd_string("Coded by futz:  ",0);
    lcd_string("Nokia 7110 LCD  ",2);
    lcd_string("Powered by      ",4);
    lcd_string("PIC 18F1330     ",5);
    while(1){
        for(count=0;count<0xffff;count++){
            sprintf(string,"Count: %07u",count);
            lcd_string(string,7);
            delay_ms(50);
        }
    }
}

void lcd_string(const char *str,unsigned char row){
    unsigned char x,page = 0xb0;
    page = page + row;
    lcd_send(page,0);       //page address
    lcd_send(0x11,0);       //column address
    lcd_send(0x02,0);
    while(*str)
        lcd_char(*str++);
}

void lcd_char(unsigned char letter){
    unsigned char col;
    if(letter < 0x52){
        letter = letter - 0x20;
        for(col=0;col<5;col++){
            lcd_send(Alpha1[(letter*5)+col],1);
        }
    }
    else{
        letter = letter - 0x52;
        for(col=0;col<5;col++){
            lcd_send(Alpha2[(letter*5)+col],1);
        }
    }
    lcd_send(0,1);                          //send space
}

void lcd_send(unsigned char cmd, unsigned char type){
    char x;
    if(type)                //set char/data type
        DATACHAR = 1;
    else
        DATACHAR = 0;
    CS = 0;
    for(x=0;x<9;x++){       //clock the byte out
        SCLK = 0;
        SDATA = 0;
        if(cmd & 0x80)
            SDATA = 1;
        SCLK = 1;
        cmd <<= 1;
    }
    CS = 1;
}

void lcd_cls(void){
    unsigned char i,x,line;
    line = 0xb0;                //page address variable
    for(x=0;x<9;x++){
        lcd_send(line,0);       //set page address
        lcd_send(0x11,0);       //set column address
        lcd_send(0x02,0);
        for(i=0;i<0x60;i++){    //write zeros to display RAM
            lcd_send(0x00,1);
        }
        line++;
    }
}

void lcd_row_cls(unsigned char row){
    unsigned char x,page = 0xb0;
    page = page + row;
    for(x=0;x<0x60;x++)
        lcd_send(0x00,1);
}

void lcd_init(void){
    DATACHAR = 1;
    delay_ms(2);
    CS = 1;
    delay_ms(2);
//    RST = 1;
    delay_ms(2);
    lcd_send(0xa6,0);   //Display: Normal
    lcd_send(0xA3,0);   //LCD Bias Settings: 1/7
    lcd_send(0xA1,0);   //ADC Selection: Reverse
    lcd_send(0xC0,0); //Common Output: Normal Direction
//    lcd_send(0xC8,0); //Common Output: Upside Down
    lcd_send(0x22,0);   //Set the V5 output Voltage
    lcd_send(0x81,0);   //set Electronic Volume - brightness
    lcd_send(0x2f,0);
    lcd_send(0x2E,0);   //Power Controller Set: Booster circuit: ON
    //Voltage regulator circuit: ON
    //Voltage follower circuit: OFF
    lcd_send(0x2F,0);   //Power Controller Set: Voltage follower circuit: ON
//    lcd_send(0xE3,0);   //Non-OPeration Command
//    lcd_send(0x40,0);   //Set the start line
    lcd_send(0xAF,0);   //LCD On
    lcd_send(0xA4,0);   //Display All Points: NORMAL
    lcd_cls();
}
7110_lcd.h
#include <system.h>
#include <stdio.h>
#pragma    CLOCK_FREQ    8000000
#pragma DATA    _CONFIG1H, _OSC_INTIO2_1H
#pragma DATA    _CONFIG2H, _WDT_OFF_2H
#pragma DATA    _CONFIG3H, _MCLRE_ON_3H

#define CS      lata.3
#define DATACHAR    latb.0
#define SCLK    latb.1
#define SDATA   latb.4

void lcd_cls(void);
void lcd_row_cls(unsigned char);
void lcd_init(void);
void lcd_send(unsigned char, unsigned char);
void lcd_char(unsigned char);
void lcd_string(const char *,unsigned char);

rom char *Alpha1 = {
                  0x00,0x00,0x00,0x00,0x00,  // 20 space
                  0x00,0x00,0x5f,0x00,0x00,  // 21 !
                  0x00,0x07,0x00,0x07,0x00,  // 22 "
                  0x14,0x7f,0x14,0x7f,0x14,  // 23 #
                  0x24,0x2a,0x7f,0x2a,0x12,  // 24 $
                  0x23,0x13,0x08,0x64,0x62,  // 25 %
                  0x36,0x49,0x55,0x22,0x50,  // 26 &
                  0x00,0x05,0x03,0x00,0x00,  // 27 '
                  0x00,0x1c,0x22,0x41,0x00,  // 28 (
                  0x00,0x41,0x22,0x1c,0x00,  // 29 )
                  0x14,0x08,0x3e,0x08,0x14,  // 2a *
                  0x08,0x08,0x3e,0x08,0x08,  // 2b +
                  0x00,0x50,0x30,0x00,0x00,  // 2c ,
                  0x08,0x08,0x08,0x08,0x08,  // 2d -
                  0x00,0x60,0x60,0x00,0x00,  // 2e .
                  0x20,0x10,0x08,0x04,0x02,  // 2f /
                  0x3e,0x51,0x49,0x45,0x3e,  // 30 0
                  0x00,0x42,0x7f,0x40,0x00,  // 31 1
                  0x42,0x61,0x51,0x49,0x46,  // 32 2
                  0x21,0x41,0x45,0x4b,0x31,  // 33 3
                  0x18,0x14,0x12,0x7f,0x10,  // 34 4
                  0x27,0x45,0x45,0x45,0x39,  // 35 5
                  0x3c,0x4a,0x49,0x49,0x30,  // 36 6
                  0x01,0x71,0x09,0x05,0x03,  // 37 7
                  0x36,0x49,0x49,0x49,0x36,  // 38 8
                  0x06,0x49,0x49,0x29,0x1e,  // 39 9
                  0x00,0x36,0x36,0x00,0x00,  // 3a :
                  0x00,0x56,0x36,0x00,0x00,  // 3b ;
                  0x08,0x14,0x22,0x41,0x00,  // 3c <
                  0x14,0x14,0x14,0x14,0x14,  // 3d =
                  0x00,0x41,0x22,0x14,0x08,  // 3e >
                  0x02,0x01,0x51,0x09,0x06,  // 3f ?
                  0x32,0x49,0x79,0x41,0x3e,  // 40 @
                  0x7e,0x11,0x11,0x11,0x7e,  // 41 A
                  0x7f,0x49,0x49,0x49,0x36,  // 42 B
                  0x3e,0x41,0x41,0x41,0x22,  // 43 C
                  0x7f,0x41,0x41,0x22,0x1c,  // 44 D
                  0x7f,0x49,0x49,0x49,0x41,  // 45 E
                  0x7f,0x09,0x09,0x09,0x01,  // 46 F
                  0x3e,0x41,0x49,0x49,0x7a,  // 47 G
                  0x7f,0x08,0x08,0x08,0x7f,  // 48 H
                  0x00,0x41,0x7f,0x41,0x00,  // 49 I
                  0x20,0x40,0x41,0x3f,0x01,  // 4a J
                  0x7f,0x08,0x14,0x22,0x41,  // 4b K
                  0x7f,0x40,0x40,0x40,0x40,  // 4c L
                  0x7f,0x02,0x0c,0x02,0x7f,  // 4d M
                  0x7f,0x04,0x08,0x10,0x7f,  // 4e N
                  0x3e,0x41,0x41,0x41,0x3e,  // 4f O
                  0x7f,0x09,0x09,0x09,0x06,  // 50 P
                  0x3e,0x41,0x51,0x21,0x5e}; // 51 Q

rom char *Alpha2 = {
                  0x7f,0x09,0x19,0x29,0x46,  // 52 R
                  0x46,0x49,0x49,0x49,0x31,  // 53 S
                  0x01,0x01,0x7f,0x01,0x01,  // 54 T
                  0x3f,0x40,0x40,0x40,0x3f,  // 55 U
                  0x1f,0x20,0x40,0x20,0x1f,  // 56 V
                  0x3f,0x40,0x38,0x40,0x3f,  // 57 W
                  0x63,0x14,0x08,0x14,0x63,  // 58 X
                  0x07,0x08,0x70,0x08,0x07,  // 59 Y
                  0x61,0x51,0x49,0x45,0x43,  // 5a Z
                  0x00,0x7f,0x41,0x41,0x00,  // 5b [
                  0x02,0x04,0x08,0x10,0x20,  // 5c 55
                  0x00,0x41,0x41,0x7f,0x00,  // 5d ]
                  0x04,0x02,0x01,0x02,0x04,  // 5e ^
                  0x40,0x40,0x40,0x40,0x40,  // 5f _
                  0x00,0x01,0x02,0x04,0x00,  // 60 `
                  0x20,0x54,0x54,0x54,0x78,  // 61 a
                  0x7f,0x48,0x44,0x44,0x38,  // 62 b
                  0x38,0x44,0x44,0x44,0x20,  // 63 c
                  0x38,0x44,0x44,0x48,0x7f,  // 64 d
                  0x38,0x54,0x54,0x54,0x18,  // 65 e
                  0x08,0x7e,0x09,0x01,0x02,  // 66 f
                  0x0c,0x52,0x52,0x52,0x3e,  // 67 g
                  0x7f,0x08,0x04,0x04,0x78,  // 68 h
                  0x00,0x44,0x7d,0x40,0x00,  // 69 i
                  0x20,0x40,0x44,0x3d,0x00,  // 6a j
                  0x7f,0x10,0x28,0x44,0x00,  // 6b k
                  0x00,0x41,0x7f,0x40,0x00,  // 6c l
                  0x7c,0x04,0x18,0x04,0x78,  // 6d m
                  0x7c,0x08,0x04,0x04,0x78,  // 6e n
                  0x38,0x44,0x44,0x44,0x38,  // 6f o
                  0x7c,0x14,0x14,0x14,0x08,  // 70 p
                  0x08,0x14,0x14,0x18,0x7c,  // 71 q
                  0x7c,0x08,0x04,0x04,0x08,  // 72 r
                  0x48,0x54,0x54,0x54,0x20,  // 73 s
                  0x04,0x3f,0x44,0x40,0x20,  // 74 t
                  0x3c,0x40,0x40,0x20,0x7c,  // 75 u
                  0x1c,0x20,0x40,0x20,0x1c,  // 76 v
                  0x3c,0x40,0x30,0x40,0x3c,  // 77 w
                  0x44,0x28,0x10,0x28,0x44,  // 78 x
                  0x0c,0x50,0x50,0x50,0x3c,  // 79 y
                  0x44,0x64,0x54,0x4c,0x44,  // 7a z
                  0x00,0x08,0x36,0x41,0x00,  // 7b {
                  0x00,0x00,0x7f,0x00,0x00,  // 7c |
                  0x00,0x41,0x36,0x08,0x00,  // 7d }
                  0x10,0x08,0x08,0x10,0x08,  // 7e ~
                  0x78,0x46,0x41,0x46,0x78}; // 7f &brvbar;



Code for 18F2550 graphic demo (header at bottom):
#include "7110_lcd.h"

char string[] = "                ";

void main()
{
    int i,j,k;
    int px0,py0,px1,py1,px2,py2,px3,py3;
    int dx0,dy0,dx1,dy1,dx2,dy2,dx3,dy3;

    osccon = 0x70;          //external 20MHz clock
    trisa = 0; trisb = 0;
    adcon1 = 0b00001111;    //all digital
    lcd_init();
    int x[4] = {3,45,90,10};
    int y[4] = {2,50,30,10};
    px0=x[0];py0=y[0];px1=x[1];py1=y[1];px2=x[2];py2=y[2];px3=x[3];py3=y[3];
    dx0=3;dy0=-2;dx1=-3;dy1=3;dx2=-3;dy2=3;dx3=-3;dy3=3;

    while(1){                   //main loop
        delay_ms(100);
        line(px0,py0,px1,py1,0);
        line(px1,py1,px2,py2,0);
        line(px2,py2,px3,py3,0);
        line(px3,py3,px0,py0,0);
        line(x[0],y[0],x[1],y[1],1);
        line(x[1],y[1],x[2],y[2],1);
        line(x[2],y[2],x[3],y[3],1);
        line(x[3],y[3],x[0],y[0],1);
        update();
        px0=x[0];py0=y[0];px1=x[1];py1=y[1];px2=x[2];py2=y[2];px3=x[3];py3=y[3];
        x[0] += dx0;
        if((x[0]<0)||(x[0]>95))
        {
            dx0 = -dx0;
            x[0] = px0;
            x[0] += dx0;
        }
        x[1] += dx1;
        if((x[1]<0)||(x[1]>95))
        {
            dx1 = -dx1;
            x[1] = px1;
            x[1] += dx1;
        }
        x[2] += dx2;
        if((x[2]<0)||(x[2]>95))
        {
            dx2 = -dx2;
            x[2] = px2;
            x[2] += dx2;
        }
        x[3] += dx3;
        if((x[3]<0)||(x[3]>95))
        {
            dx3 = -dx3;
            x[3] = px3;
            x[3] += dx3;
        }
        y[0] += dy0;
        if((y[0]<0)||(y[0]>64))
        {
            dy0 = -dy0;
            y[0] = py0;
            y[0] += dy0;
        }
        y[1] += dy1;
        if((y[1]<0)||(y[1]>64))
        {
            dy1 = -dy1;
            y[1] = py1;
            y[1] += dy1;
        }
        y[2] += dy2;
        if((y[2]<0)||(y[2]>64))
        {
            dy2 = -dy2;
            y[2] = py2;
            y[2] += dy2;
        }
        y[3] += dy3;
        if((y[3]<0)||(y[3]>64))
        {
            dy3 = -dy3;
            y[3] = py3;
            y[3] += dy3;
        }
    }
}

void update(void){                          //display frame buffer
    unsigned char i,x,outbyte,page;
    int count = 0;
    page = 0xb0;                            //page address variable
    for(x=0;x<2;x++){
        lcd_send(page,0);                       //set page address
        lcd_send(0x11,0);                       //set column address
        lcd_send(0x02,0);
        for(i=0;i<0x60;i++){                //display a row
            outbyte = framebuff1[count++];
            lcd_send(outbyte,1);
        }
        page++;
    }
    count = 0;
    for(x=0;x<2;x++){
        lcd_send(page,0);                       //set page address
        lcd_send(0x11,0);                       //set column address
        lcd_send(0x02,0);
        for(i=0;i<0x60;i++){    //display a row
            outbyte = framebuff2[count++];
            lcd_send(outbyte,1);
        }
        page++;
    }
    count = 0;
    for(x=0;x<2;x++){
        lcd_send(page,0);                       //set page address
        lcd_send(0x11,0);                       //set column address
        lcd_send(0x02,0);
        for(i=0;i<0x60;i++){    //display a row
            outbyte = framebuff3[count++];
            lcd_send(outbyte,1);
        }
        page++;
    }
    count = 0;
    for(x=0;x<2;x++){
        lcd_send(page,0);                       //set page address
        lcd_send(0x11,0);                       //set column address
        lcd_send(0x02,0);
        for(i=0;i<0x60;i++){    //display a row
            outbyte = framebuff4[count++];
            lcd_send(outbyte,1);
        }
        page++;
    }
    count = 0;
    lcd_send(page,0);                       //set page address
    lcd_send(0x11,0);                       //set column address
    lcd_send(0x02,0);
    for(i=0;i<0x60;i++){    //display a row
        outbyte = framebuff1[count++];
        lcd_send(outbyte,1);
    }
}

void pixel(unsigned char x, unsigned char y, unsigned char color){
    unsigned char temp,readtemp,mbit,div,offset;

    div = y >> 3;
    if(div < 2){
        offset = div * 96 + x;
        mbit = y - (div << 3);
        temp = 1 << mbit;            //create new byte with bit set
        readtemp = framebuff1[offset];
        if(!color)
            y = readtemp & ~temp;
        else
            y = readtemp | temp;
        framebuff1[offset] = y;
    }
    else if(div < 4){
        offset = ((div * 96) - 192) + x;
        mbit = y - (div << 3);
        temp = 1 << mbit;            //create new byte with bit set
        readtemp = framebuff2[offset];
        if(!color)
            y = readtemp & ~temp;
        else
            y = readtemp | temp;
        framebuff2[offset] = y;
    }
    else if(div < 6){
        offset = ((div * 96) - 384) + x;
        mbit = y - (div << 3);
        temp = 1 << mbit;            //create new byte with bit set
        readtemp = framebuff3[offset];
        if(!color)
            y = readtemp & ~temp;
        else
            y = readtemp | temp;
        framebuff3[offset] = y;
    }
    else if(div < 8){
        offset = ((div * 96) - 576) + x;
        mbit = y - (div << 3);
        temp = 1 << mbit;            //create new byte with bit set
        readtemp = framebuff4[offset];
        if(!color)
            y = readtemp & ~temp;
        else
            y = readtemp | temp;
        framebuff4[offset] = y;
    }
    else if(div < 9){
        offset = ((div * 96) - 768) + x;
        mbit = y - (div << 3);
        temp = 1 << mbit;            //create new byte with bit set
        readtemp = framebuff5[offset];
        if(!color)
            y = readtemp & ~temp;
        else
            y = readtemp | temp;
        framebuff5[offset] = y;
    }
}

void line(int x1,int y1,int x2,int y2,unsigned char color)
{
    int steep,temp,error,deltaerror;
    int xstep,ystep,deltax,deltay,x,y;
    steep = abs(y2-y1) > abs(x2-x1);
    if (steep)
    {
        temp=x1; x1=y1; y1=temp;            //swap x1,y1
        temp=x2; x2=y2; y2=temp;            //swap x2,y2
    }
    deltax = abs(x2-x1);                    //x Difference
    deltay = abs(y2-y1);                    //y Difference
    error = 0;                              //overflow counter
    deltaerror = deltay;                    //counter adder
    x = x1;                                 //start at x1,y1
    y = y1;
    if(x1 < x2)                             //direction
        xstep = 1;
    else
        xstep = -1;
    if(y1 < y2)                             //direction
        ystep = 1;
    else
        ystep = -1;
    if(steep)                               //draw
        pixel(y,x,color);
    else
        pixel(x,y,color);
    while(x != x2)
    {
        x += xstep;                         //move in x
        error += deltaerror;                //add to counter
        if((error << 1) > deltax)           //would it overflow?
        {
            y += ystep;                     //move in y
            error = error - deltax;         //overflow/wrap the counter
        }
        if(steep)                           //draw
            pixel(y,x,color);
        else
            pixel(x,y,color);
    }
}

void lcd_string(const char *str,unsigned char row){
    unsigned char x,page = 0xb0;
    page = page + row;
    lcd_send(page,0);       //page address
    lcd_send(0x11,0);       //column address
    lcd_send(0x02,0);
    while(*str)
        lcd_char(*str++);
}

void lcd_char(unsigned char letter){
    unsigned char col;
    if(letter < 0x52){
        letter = letter - 0x20;
        for(col=0;col<5;col++){
            lcd_send(Alpha1[(letter*5)+col],1);
        }
    }
    else{
        letter = letter - 0x52;
        for(col=0;col<5;col++){
            lcd_send(Alpha2[(letter*5)+col],1);
        }
    }
    lcd_send(0,1);                          //send space
}

void lcd_send(unsigned char cmd, unsigned char type){
    char x;
    if(type)                //set char/data type
        DATACHAR = 1;
    else
        DATACHAR = 0;
    CS = 0;
    for(x=0;x<9;x++){       //clock the byte out
        SCLK = 0;
        SDATA = 0;
        if(cmd & 0x80)
            SDATA = 1;
        SCLK = 1;
        cmd <<= 1;
    }
    CS = 1;
}

void lcd_cls(void){
    unsigned char i;
    for(i=0;i<0xc0;i++){
        framebuff1[i] = 0;
        framebuff2[i] = 0;
        framebuff3[i] = 0;
        framebuff4[i] = 0;
    }
    for(i=0;i<0x60;i++)
        framebuff5[i] = 0;
    update();
}

void lcd_row_cls(unsigned char row){
    unsigned char x,page = 0xb0;
    page = page + row;
    for(x=0;x<0x60;x++)
        lcd_send(0x00,1);
}

void lcd_init(void){
    DATACHAR = 1;
    delay_ms(2);
    CS = 1;
    delay_ms(2);
    RST = 1;
    delay_ms(2);
    lcd_send(0xa6,0);   //Display: Normal
    lcd_send(0xA3,0);   //LCD Bias Settings: 1/7
    lcd_send(0xA1,0);   //ADC Selection: Reverse
    lcd_send(0xC0,0); //Common Output: Normal Direction
//    lcd_send(0xC8,0); //Common Output: Upside Down
    lcd_send(0x22,0);   //Set the V5 output Voltage
    lcd_send(0x81,0);   //set Electronic Volume - brightness
    lcd_send(0x2f,0);
    lcd_send(0x2E,0);   //Power Controller Set: Booster circuit: ON/Voltage regulator circuit: ON/Voltage follower circuit: OFF
    lcd_send(0x2F,0);   //Power Controller Set: Voltage follower circuit: ON
//    lcd_send(0xE3,0);   //Non-OPeration Command
//    lcd_send(0x40,0);   //Set the start line
    lcd_send(0xAF,0);   //LCD On
    lcd_send(0xA4,0);   //Display All Points: NORMAL
    lcd_cls();
}
7110_lcd.h
#include <system.h>
#include <stdio.h>
#pragma    CLOCK_FREQ    20000000
#pragma DATA    _CONFIG1L, _CPUDIV_OSC1_PLL2_1L
#pragma DATA    _CONFIG1H, _FOSC_HS_1H
#pragma DATA    _CONFIG2H, _WDT_OFF_2H
#pragma DATA    _CONFIG3H, _MCLRE_ON_3H
#pragma DATA    _CONFIG4L, _LVP_OFF_4L
#pragma DATA    _CONFIG4L, _XINST_OFF_4L

#define CS      porta.0
#define DATACHAR    porta.1
#define SCLK    porta.2
#define SDATA   portb.0
#define RST     portb.1

unsigned char framebuff1[864];
unsigned char framebuff2[192];
unsigned char framebuff3[192];
unsigned char framebuff4[192];
unsigned char framebuff5[96];

void lcd_cls(void);
void lcd_row_cls(unsigned char);
void lcd_init(void);
void lcd_send(unsigned char, unsigned char);
void lcd_char(unsigned char);
void lcd_string(const char *,unsigned char);
void update(void);
void pixel(unsigned char, unsigned char, unsigned char);
void line(int,int,int,int,unsigned char);

rom char *Alpha1 = {
                  0x00,0x00,0x00,0x00,0x00,  // 20 space
                  0x00,0x00,0x5f,0x00,0x00,  // 21 !
                  0x00,0x07,0x00,0x07,0x00,  // 22 "
                  0x14,0x7f,0x14,0x7f,0x14,  // 23 #
                  0x24,0x2a,0x7f,0x2a,0x12,  // 24 $
                  0x23,0x13,0x08,0x64,0x62,  // 25 %
                  0x36,0x49,0x55,0x22,0x50,  // 26 &
                  0x00,0x05,0x03,0x00,0x00,  // 27 '
                  0x00,0x1c,0x22,0x41,0x00,  // 28 (
                  0x00,0x41,0x22,0x1c,0x00,  // 29 )
                  0x14,0x08,0x3e,0x08,0x14,  // 2a *
                  0x08,0x08,0x3e,0x08,0x08,  // 2b +
                  0x00,0x50,0x30,0x00,0x00,  // 2c ,
                  0x08,0x08,0x08,0x08,0x08,  // 2d -
                  0x00,0x60,0x60,0x00,0x00,  // 2e .
                  0x20,0x10,0x08,0x04,0x02,  // 2f /
                  0x3e,0x51,0x49,0x45,0x3e,  // 30 0
                  0x00,0x42,0x7f,0x40,0x00,  // 31 1
                  0x42,0x61,0x51,0x49,0x46,  // 32 2
                  0x21,0x41,0x45,0x4b,0x31,  // 33 3
                  0x18,0x14,0x12,0x7f,0x10,  // 34 4
                  0x27,0x45,0x45,0x45,0x39,  // 35 5
                  0x3c,0x4a,0x49,0x49,0x30,  // 36 6
                  0x01,0x71,0x09,0x05,0x03,  // 37 7
                  0x36,0x49,0x49,0x49,0x36,  // 38 8
                  0x06,0x49,0x49,0x29,0x1e,  // 39 9
                  0x00,0x36,0x36,0x00,0x00,  // 3a :
                  0x00,0x56,0x36,0x00,0x00,  // 3b ;
                  0x08,0x14,0x22,0x41,0x00,  // 3c <
                  0x14,0x14,0x14,0x14,0x14,  // 3d =
                  0x00,0x41,0x22,0x14,0x08,  // 3e >
                  0x02,0x01,0x51,0x09,0x06,  // 3f ?
                  0x32,0x49,0x79,0x41,0x3e,  // 40 @
                  0x7e,0x11,0x11,0x11,0x7e,  // 41 A
                  0x7f,0x49,0x49,0x49,0x36,  // 42 B
                  0x3e,0x41,0x41,0x41,0x22,  // 43 C
                  0x7f,0x41,0x41,0x22,0x1c,  // 44 D
                  0x7f,0x49,0x49,0x49,0x41,  // 45 E
                  0x7f,0x09,0x09,0x09,0x01,  // 46 F
                  0x3e,0x41,0x49,0x49,0x7a,  // 47 G
                  0x7f,0x08,0x08,0x08,0x7f,  // 48 H
                  0x00,0x41,0x7f,0x41,0x00,  // 49 I
                  0x20,0x40,0x41,0x3f,0x01,  // 4a J
                  0x7f,0x08,0x14,0x22,0x41,  // 4b K
                  0x7f,0x40,0x40,0x40,0x40,  // 4c L
                  0x7f,0x02,0x0c,0x02,0x7f,  // 4d M
                  0x7f,0x04,0x08,0x10,0x7f,  // 4e N
                  0x3e,0x41,0x41,0x41,0x3e,  // 4f O
                  0x7f,0x09,0x09,0x09,0x06,  // 50 P
                  0x3e,0x41,0x51,0x21,0x5e}; // 51 Q

rom char *Alpha2 = {
                  0x7f,0x09,0x19,0x29,0x46,  // 52 R
                  0x46,0x49,0x49,0x49,0x31,  // 53 S
                  0x01,0x01,0x7f,0x01,0x01,  // 54 T
                  0x3f,0x40,0x40,0x40,0x3f,  // 55 U
                  0x1f,0x20,0x40,0x20,0x1f,  // 56 V
                  0x3f,0x40,0x38,0x40,0x3f,  // 57 W
                  0x63,0x14,0x08,0x14,0x63,  // 58 X
                  0x07,0x08,0x70,0x08,0x07,  // 59 Y
                  0x61,0x51,0x49,0x45,0x43,  // 5a Z
                  0x00,0x7f,0x41,0x41,0x00,  // 5b [
                  0x02,0x04,0x08,0x10,0x20,  // 5c 55
                  0x00,0x41,0x41,0x7f,0x00,  // 5d ]
                  0x04,0x02,0x01,0x02,0x04,  // 5e ^
                  0x40,0x40,0x40,0x40,0x40,  // 5f _
                  0x00,0x01,0x02,0x04,0x00,  // 60 `
                  0x20,0x54,0x54,0x54,0x78,  // 61 a
                  0x7f,0x48,0x44,0x44,0x38,  // 62 b
                  0x38,0x44,0x44,0x44,0x20,  // 63 c
                  0x38,0x44,0x44,0x48,0x7f,  // 64 d
                  0x38,0x54,0x54,0x54,0x18,  // 65 e
                  0x08,0x7e,0x09,0x01,0x02,  // 66 f
                  0x0c,0x52,0x52,0x52,0x3e,  // 67 g
                  0x7f,0x08,0x04,0x04,0x78,  // 68 h
                  0x00,0x44,0x7d,0x40,0x00,  // 69 i
                  0x20,0x40,0x44,0x3d,0x00,  // 6a j
                  0x7f,0x10,0x28,0x44,0x00,  // 6b k
                  0x00,0x41,0x7f,0x40,0x00,  // 6c l
                  0x7c,0x04,0x18,0x04,0x78,  // 6d m
                  0x7c,0x08,0x04,0x04,0x78,  // 6e n
                  0x38,0x44,0x44,0x44,0x38,  // 6f o
                  0x7c,0x14,0x14,0x14,0x08,  // 70 p
                  0x08,0x14,0x14,0x18,0x7c,  // 71 q
                  0x7c,0x08,0x04,0x04,0x08,  // 72 r
                  0x48,0x54,0x54,0x54,0x20,  // 73 s
                  0x04,0x3f,0x44,0x40,0x20,  // 74 t
                  0x3c,0x40,0x40,0x20,0x7c,  // 75 u
                  0x1c,0x20,0x40,0x20,0x1c,  // 76 v
                  0x3c,0x40,0x30,0x40,0x3c,  // 77 w
                  0x44,0x28,0x10,0x28,0x44,  // 78 x
                  0x0c,0x50,0x50,0x50,0x3c,  // 79 y
                  0x44,0x64,0x54,0x4c,0x44,  // 7a z
                  0x00,0x08,0x36,0x41,0x00,  // 7b {
                  0x00,0x00,0x7f,0x00,0x00,  // 7c |
                  0x00,0x41,0x36,0x08,0x00,  // 7d }
                  0x10,0x08,0x08,0x10,0x08,  // 7e ~
                  0x78,0x46,0x41,0x46,0x78}; // 7f &brvbar;

Next Post Previous Post