Revision:
5:39b01a6f0f75
Parent:
4:1f72df1a88e0
Child:
6:96576c9c7828
--- a/s_Lcd.cpp	Sun Oct 23 02:06:34 2011 +0000
+++ b/s_Lcd.cpp	Wed Nov 23 12:12:11 2011 +0000
@@ -1,20 +1,15 @@
 #include "mbed.h"
 
-#define  kanji_file    "/local/SHMZN16X.FNT"
-//#defin  kanji_file  "/local/k12x10.fnt"
-    
-Serial device(p9, p10);  // tx, rx  LCD
+Serial device(p9, p10);  // tx, rx
+//Serial pc(USBTX, USBRX); // tx, rx
 DigitalOut rst(p20);     //P20  --> LCD  RST  (Reset)
 
 LocalFileSystem local("local");
+//Serial pc(USBTX, USBRX);
+int csrx = 0;
+int csry = 16;
 
-int cx = 0;
-int cy = 0;
-int offsety = 0;
-bool kstate = false;
-unsigned char kbuf;
-
-    FILE *fp;   //File open buffer
+    FILE *fp;
 
     unsigned short start[92], end[92];
     unsigned char font[64];              
@@ -42,35 +37,6 @@
     device.putc(0x4E);
     device.putc(0xAA);
     }
-void bmp(int x0,int y0,int bmp_no)
-    {
-    unsigned char x0H;
-    unsigned char x0L;
-    unsigned char y0H;
-    unsigned char y0L;
-    unsigned char rH;
-    unsigned char rL;
-    unsigned char sum;
-
-    x0H = x0 >> 8;
-    x0L = x0 & 0xFF;
-    y0H = y0 >> 8;
-    y0L = y0 & 0xff;
-    rH = bmp_no >> 8;
-    rL = bmp_no & 0xFF;
-    sum = x0H+x0L+y0H+y0L+rH+rL+0x09;
-    device.putc(0x55);
-    device.putc(0x07);
-    device.putc(0x09);//command
-    device.putc(x0H);
-    device.putc(x0L);
-    device.putc(y0H);
-    device.putc(y0L);
-    device.putc(rH);
-    device.putc(rL);
-    device.putc(sum);
-    device.putc(0xAA);
-    }
 
 void cls()
     {
@@ -81,16 +47,10 @@
     device.putc(0xD5);
     device.putc(0xAA);
     }
-void scroll(void){
-
-}
-
-
-
 
 void lcdputs( char data[98],int x,int y)
     {
-    unsigned char s=0;
+    unsigned char s;
     unsigned char x0H;
     unsigned char x0L;
     unsigned char y0H;
@@ -112,10 +72,12 @@
         {
             device.putc(data[a]);
             s = s+data[a];
+//            pc.printf("%x:",data[a]);
         }
     s = s+x0H+x0L+y0H+y0L+0x0B;
     device.putc(s);//sumcheck
     device.putc(0xAA);
+//    pc.printf("print %x %x %x %x %x %d   ",x0H,x0L,y0H,y0L,s,datalen);
     }
 
 void color(int rgb)
@@ -134,27 +96,9 @@
     device.putc(c2);
     device.putc(sum);
     device.putc(0xAA);
+    //pc.printf("color %x %x %x ",c1,c2,sum);
     }
 
-void newline(void){
-    cx = 0;
-    cy += 16;
-    if(cy > 160){
-        scroll();
-        cy = 0;
-        color(0x001f);
-        cls();
-        color(0xffff);
-    }
-}
-
-void movecorsor(int a)
-    {
-    cx+=8*a;
-    if(cx>=128) newline();
-    }
-
-
 void pixel(int x0,int y0)
     {
     unsigned char x0H;
@@ -326,97 +270,10 @@
     s = data+x0H+x0L+y0H+y0L+0x0B;
     device.putc(s);//sumcheck
     device.putc(0xAA);
+//    pc.printf("print %x %x %x %x %x %d   ",x0H,x0L,y0H,y0L,s,datalen);
     }
     
 
-
-void kanji_init(){ 
-    //move cursor 
-     fp = fopen(kanji_file , "r");
-
-
-    if(!fp) {
-        printf("File could not be opened!\n");
-        exit(1);
-    }
-
-    fgets(Identifier,   6+1, fp);    // FONTX2
-    fgets(FontName,     8+1, fp);        
-    fread(&XSize,       1, 1, fp);        
-    fread(&YSize,       1, 1, fp);        
-    fread(&CodeType,    1, 1, fp);  
-    fread(&Tnum,        1, 1, fp);
-
-    // Table read
-    for(int a=0;a< Tnum ;a++){
-        fread(&start[a],1,2,fp);
-        fread(&end[a]  ,1,2,fp);
-        }
-}
-
-//Kanji puts  cr = kanji cord
-void k_puts(int cr){
-    //kanji address
-    int c;
-    int adrs;
-    c=0;
-    adrs=0;
-    while(cr>start[c]){
-        if(cr > end[c]){
-            adrs += end[c]-start[c]+1;
-            }
-        else{
-        adrs += cr - start[c];
-        }
-        c++;
-    }
-    c--;
-                        //printf("C=%d,adrs=%d cr=%X ",c,adrs,cr);
-    // Kanji image Read
-    fseek( fp, Tnum*4+18+32*adrs, SEEK_SET );
-    fread(&font,1,32,fp); 
-    // kanji put
-    c=0;
-    for (int y=0;y<16;y++){
-        for (int x=0;x<8;x++){
-            if((font[c] & 0x80)==0x80){
-                pixel(cx+x,cy+y);
-                }
-            font[c] = font[c] << 1;
-            if((font[c+1] & 0x80)==0x80){
-                pixel(cx+x+8,cy+y);
-                }
-            font[c+1] = font[c+1] << 1;
-        }
-        c+=2;
-    }
-    //move cursor 
-    cx+=16;
-    if(cx>=128){   //LF control
-        cx=0;
-        cy+=16;
-        }
-}
-
-void kanji_end(){
-    fclose(fp);
-}
-
-void drawc(unsigned char c){
-    if(kstate){ // 2nd byte of shift-jis
-        kstate = false;
-
-       k_puts(kbuf << 8 | c);
-    } else if((0x81 <= c && c <= 0x9f) || (0xe0 <= c && c <= 0xfc)){ // 1st byte of shift-jis
-        kstate = true;
-        kbuf = c;
-    } else { // Ascii Out
-        lcdput(c,cx,cy);
-        movecorsor(1);  // 1byte Move
-    }
-}
-
-
 void s_Lcdinit()
     {
 //        device.baud(9600);
@@ -434,13 +291,72 @@
     device.putc(0x2C);
     device.putc(0xB6);
     device.putc(0xAA);
-    bmp(0,0,1);
-    lcdputs(" GingaX ",20,140);
-    wait(3);
-    bmp(0,0,0);
-    wait(3);
     cls();
-    color(0xffff);
-    kanji_init();
+
+    }
+
+void kanji_init(){    
+    printf("Open File...\n"); // Drive should be marked as removed
+    //move cursor 
+     fp = fopen("/local/SHMZN16X.FNT", "r");
+    //FILE *fp = fopen("/local/k12x10.fnt", "r");
+
+    if(!fp) {
+        printf("File could not be opened!\n");
+        exit(1);
     }
 
+    fgets(Identifier,   6+1, fp);    // FONTX2
+    fgets(FontName,     8+1, fp);        
+    fread(&XSize,       1, 1, fp);        
+    fread(&YSize,       1, 1, fp);        
+    fread(&CodeType,    1, 1, fp);  
+    fread(&Tnum,        1, 1, fp);
+
+    Size = FONT_XBYTE*YSize;
+         printf("\nfget[%d]\n",fgetc( fp ));
+    // Table read
+    for(int a=0;a<=Size*4;a++){
+        fread(&start[a],1,2,fp);
+        fread(&end[a]  ,1,2,fp);
+        }
+}
+
+//Kanji puts  cr = kanji address
+void k_puts(int cr){
+    int c;
+ /*   fp = fopen("/local/SHMZN16X.FNT", "r");
+      if(!fp) {
+        pc.printf("File could not be opened!\n");
+        exit(1);
+        }
+*/
+    // Kanji image Read
+    fseek( fp, Tnum*4+18+32*cr, SEEK_SET );
+    fread(&font,1,32,fp); 
+    // kanji put
+    c=0;
+    for (int y=0;y<16;y++){
+        for (int x=0;x<8;x++){
+            if((font[c] & 0x80)==0x80){
+                pixel(csrx+x,csry+y);
+                }
+            font[c] = font[c] << 1;
+            if((font[c+1] & 0x80)==0x80){
+                pixel(csrx+x+8,csry+y);
+                }
+            font[c+1] = font[c+1] << 1;
+        }
+        c+=2;
+    }
+    //move cursor 
+    csrx+=16;
+    if(csrx>128){   //LF control
+        csrx=0;
+        csry+=16;
+        }
+}
+
+void kanji_end(){
+    fclose(fp);
+}