diff -du japanese.orig/Makefile japanese/Makefile
--- japanese.orig/Makefile	2010-04-14 19:41:17.000000000 +0900
+++ japanese/Makefile	2010-04-16 00:06:42.000000000 +0900
@@ -76,6 +76,7 @@
 ${COMPILER}/hello.axf: ${COMPILER}/hello.o
 ${COMPILER}/hello.axf: ${COMPILER}/startup_${COMPILER}.o
 ${COMPILER}/hello.axf: ${ROOT}/driverlib/${COMPILER}/libdriver.a
+${COMPILER}/hello.axf: ${ROOT}/k6x8/${COMPILER}/libjptext.a
 ifeq (${COMPILER}, gcc)
 ${COMPILER}/hello.axf: hello.ld
 endif
diff -du japanese.orig/hello.c japanese/hello.c
--- japanese.orig/hello.c	2010-04-14 19:41:17.000000000 +0900
+++ japanese/hello.c	2010-04-16 01:13:18.000000000 +0900
@@ -29,6 +29,10 @@
 #include "driverlib/debug.h"
 #include "driverlib/sysctl.h"
 #include "drivers/display96x16x1.h"
+#include "inc/hw_memmap.h"
+#include "driverlib/gpio.h"
+#include "k6x8/k6x8.h"
+#include <stdint.h>
 
 //*****************************************************************************
 //
@@ -52,6 +56,9 @@
 }
 #endif
 
+#define PUSH_BUTTON             GPIO_PIN_4
+#define USER_LED                GPIO_PIN_5
+
 //*****************************************************************************
 //
 // Print "Hello world!" to the LCD on the Stellaris evaluation board.
@@ -65,21 +72,98 @@
     //
     SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
                    SYSCTL_XTAL_6MHZ);
-
+    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
+    GPIOPinTypeGPIOInput(GPIO_PORTC_BASE, PUSH_BUTTON);
+    GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE, USER_LED);
+    GPIOPinWrite(GPIO_PORTC_BASE, USER_LED, 0x0);
     //
     // Initialize the OLED display.
     //
     Display96x16x1Init(false);
+    static FullScreenText text;
+    unsigned int mask_level;
+    {
+      fstInit( &text, "(C) 2010 Naomasa Matsubayashi" );
+      unsigned int mask_level;
+      for( mask_level = 4; mask_level; mask_level-- ) {
+        fstSetMask( &text, mask_level );
+        Display96x16x1ImageDraw( fstGetBuffer( &text ), 0, 0, 96, 2 );
+        SysCtlDelay( 60000 );
+      }
+      fstSetMask( &text, 0 );
+      Display96x16x1ImageDraw( fstGetBuffer( &text ), 0, 0, 96, 2 );
+      SysCtlDelay( 1600000 );
+      for( mask_level = 0; mask_level != 5; mask_level++ ) {
+        fstSetMask( &text, mask_level );
+        Display96x16x1ImageDraw( fstGetBuffer( &text ), 0, 0, 96, 2 );
+        SysCtlDelay( 60000 );
+      }
+    }
+    {
+      fstInit( &text, "Stellaris\nÆüËÜ¸ì¿¶Æ°¥Ç¥â" );
+      unsigned int mask_level;
+      for( mask_level = 4; mask_level; mask_level-- ) {
+        fstSetMask( &text, mask_level );
+        Display96x16x1ImageDraw( fstGetBuffer( &text ), 0, 0, 96, 2 );
+        SysCtlDelay( 60000 );
+      }
+      fstSetMask( &text, 0 );
+              Display96x16x1ImageDraw( fstGetBuffer( &text ), 0, 0, 96, 2 );
 
-    //
-    // Hello!
-    //
-    Display96x16x1StringDraw("Hello World!", 0, 0);
+      SysCtlDelay( 1600000 );
+      for( mask_level = 0; mask_level != 5; mask_level++ ) {
+        fstSetMask( &text, mask_level );
+                Display96x16x1ImageDraw( fstGetBuffer( &text ), 0, 0, 96, 2 );
 
-    //
-    // Finished.
-    //
-    while(1)
-    {
+        SysCtlDelay( 60000 );
+      }
+    }
+    while( 1 ) {
+      fstInit( &text,
+"¤¬¤¯¤¬¤¯ ¤Ö¤ë¤Ö¤ë\n    ¥¬¥¯¥¬¥¯ ¥Ö¥ë¥Ö¥ë"
+      );
+      for( mask_level = 4; mask_level; mask_level-- ) {
+        fstSetMask( &text, mask_level );
+                Display96x16x1ImageDraw( fstGetBuffer( &text ), 0, 0, 96, 2 );
+
+        SysCtlDelay( 60000 );
+      }
+      fstSetMask( &text, 0 );
+              Display96x16x1ImageDraw( fstGetBuffer( &text ), 0, 0, 96, 2 );
+
+      unsigned long int timeout = 400;
+      while( timeout )
+      {
+        if( GPIOPinRead(GPIO_PORTC_BASE, PUSH_BUTTON) ) {
+          GPIOPinWrite( GPIO_PORTC_BASE, USER_LED, 0x00 );
+          fstSetDisplace( &text, 1 );
+        }
+        else {
+          GPIOPinWrite( GPIO_PORTC_BASE, USER_LED, 0xFF );
+          fstSetDisplace( &text, 0 );
+          timeout = 400;
+        }
+        SysCtlDelay( 20000 );
+                Display96x16x1ImageDraw( fstGetBuffer( &text ), 0, 0, 96, 2 );
+
+        timeout--;
+      }
+      for( mask_level = 0; mask_level != 5; mask_level++ ) {
+        fstSetMask( &text, mask_level );
+                Display96x16x1ImageDraw( fstGetBuffer( &text ), 0, 0, 96, 2 );
+
+        SysCtlDelay( 60000 );
+      }
+      Display96x16x1Clear();
+      Display96x16x1DisplayOff();
+      GPIODirModeSet( GPIO_PORTC_BASE, GPIO_PIN_4, GPIO_DIR_MODE_IN );
+      SysCtlClockSet( SYSCTL_SYSDIV_16 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_6MHZ );
+      while(1)
+      {
+        if( GPIOPinRead(GPIO_PORTC_BASE, PUSH_BUTTON) == 0 )
+          break;
+      }
+      SysCtlClockSet( SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_6MHZ );
+      Display96x16x1DisplayOn();
     }
 }
