From dffcf2d4bf9bf3e78a85fde704659be2b8384d40 Mon Sep 17 00:00:00 2001
From: NIIBE Yutaka <gniibe@fsij.org>
Date: Mon, 4 Aug 2014 11:23:43 +0900
Subject: fix col/row.

---
 example-fsm-55/gnu.txt         | 179 +++++++++++++++++++++++++
 example-fsm-55/hacker-emblem.c | 149 ++++++++++++++-------
 example-fsm-55/hh.txt          |  59 +++++++++
 example-fsm-55/hiroshi-ayumi.c | 217 +++++++++++++++++++++++++++++++
 example-fsm-55/l55.txt         | 119 +++++++++++++++++
 example-fsm-55/name.txt        | 287 +++++++++++++++++++++++++++++++++++++++++
 6 files changed, 961 insertions(+), 49 deletions(-)
 create mode 100644 example-fsm-55/gnu.txt
 create mode 100644 example-fsm-55/hh.txt
 create mode 100644 example-fsm-55/hiroshi-ayumi.c
 create mode 100644 example-fsm-55/l55.txt
 create mode 100644 example-fsm-55/name.txt

(limited to 'example-fsm-55')

diff --git a/example-fsm-55/gnu.txt b/example-fsm-55/gnu.txt
new file mode 100644
index 0000000..feb789a
--- /dev/null
+++ b/example-fsm-55/gnu.txt
@@ -0,0 +1,179 @@
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+
+_____ 00
+____* 01
+____* 01
+____* 01
+_____ 00
+
+____* 01
+___*_ 02
+___*_ 02
+___*_ 02
+____* 01
+
+___** 03
+__*__ 04
+__*__ 04
+__*__ 04
+___** 03
+
+__*** 07
+_*___ 08
+_*__* 09
+_*___ 08
+__*** 07
+
+_***_ 0e
+*____ 10
+*__** 13
+*___* 11
+_***_ 0e
+
+***__ 1c
+_____ 00
+__**_ 06
+___*_ 02
+***__ 1c
+
+**__* 19
+____* 01
+_**_* 0d
+__*_* 05
+**__* 19
+
+*__*_ 12
+ __** 03
+**_*_ 1a
+_*_*_ 0a
+*__*_ 12
+
+__*__ 04
+ _**_ 06
+*_*_* 15
+*_*__ 14
+__*__ 04
+
+_*___ 08
+_**__ 0c
+_*_*_ 0a
+_*__* 09
+_*___ 08
+
+*___* 11
+**__* 19
+*_*_* 15
+*__** 13
+*___* 11
+
+___*_ 02
+*__*_ 12
+_*_*_ 0a
+__**_ 06
+___*_ 02
+
+__*_* 05
+__*_* 05
+*_*_* 15
+_**_* 0d
+__*__ 04
+
+_*_*_ 0a
+_*_*_ 0a
+_*_*_ 0a
+**_*_ 1a
+_*__* 09
+
+*_*__ 14
+*_*__ 14
+*_*__ 14
+*_*__ 14
+*__** 13
+
+_*___ 08
+_*___ 08
+_*___ 08
+_*___ 08
+__*** 07
+
+*___* 11
+*___* 11
+*___* 11
+*___* 11
+_***_ 0e
+
+___*_ 02
+___*_ 02
+___*_ 02
+___*_ 02
+***__ 1c
+
+__*__ 04
+__*__ 04
+__*__ 04
+__*__ 04
+**___ 18
+
+_*___ 08
+_*___ 08
+_*___ 08
+_*___ 08
+*____ 10
+
+*___* 11
+*___* 11
+*___* 11
+*____ 10
+____* 01
+
+___** 03
+___** 03
+___** 03
+_____ 00
+___*_ 02
+
+__**_ 06
+__**_ 06
+__**_ 06
+_____ 00
+__*__ 04
+
+_**__ 0c
+_**__ 0c
+_**__ 0c
+_____ 00
+_*___ 08
+
+**___ 18
+**___ 18
+**___ 18
+_____ 00
+*____ 10
+
+*____ 10
+*____ 10
+*____ 10
+_____ 00
+_____ 00
+
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+_____ 00
diff --git a/example-fsm-55/hacker-emblem.c b/example-fsm-55/hacker-emblem.c
index b66fe26..ddf83db 100644
--- a/example-fsm-55/hacker-emblem.c
+++ b/example-fsm-55/hacker-emblem.c
@@ -33,26 +33,27 @@ struct GPIO {
 #define GPIOF		((struct GPIO *) GPIOF_BASE)
 
 static struct GPIO *const GPIO_LED = ((struct GPIO *const) GPIO_LED_BASE);
-
+static struct GPIO *const GPIO_OTHER = ((struct GPIO *const) GPIO_OTHER_BASE);
+
 static chopstx_mutex_t mtx;
 static chopstx_cond_t cnd0;
-static chopstx_cond_t cnd1;
 
-static uint8_t u;
+static uint8_t
+user_button (void)
+{
+  return (GPIO_OTHER->IDR & 1) == 0;
+}
 
 static uint8_t l_data[5];
 
 static void
 set_led_display (uint32_t data)
 {
-  if (data)
-    {
-      l_data[0] = l_data[1] = l_data[2] = l_data[3] = l_data[4] = 0x1f;
-    }
-  else
-    {
-      l_data[0] = l_data[1] = l_data[2] = l_data[3] = l_data[4] = 0x00;
-    }
+  l_data[0] = (data >>  0) & 0x1f;
+  l_data[1] = (data >>  5) & 0x1f;
+  l_data[2] = (data >> 10) & 0x1f;
+  l_data[3] = (data >> 15) & 0x1f;
+  l_data[4] = (data >> 20) & 0x1f;
 }
 
 
@@ -63,17 +64,22 @@ wait_for (uint32_t usec)
 }
 
 static void
-led_prepare_column (uint8_t data)
+led_prepare_row (uint8_t col)
 {
+  uint16_t data = 0x1f;
+
+  data |= ((l_data[0] & (1 << col)) ? 1 : 0) << 5;
+  data |= ((l_data[1] & (1 << col)) ? 1 : 0) << 6;
+  data |= ((l_data[2] & (1 << col)) ? 1 : 0) << 7;
+  data |= ((l_data[3] & (1 << col)) ? 1 : 0) << 9;
+  data |= ((l_data[4] & (1 << col)) ? 1 : 0) << 10;
   GPIO_LED->ODR = data;
 }
 
 static void
-led_enable_row (uint8_t row)
+led_enable_column (uint8_t col)
 {
-  static const uint8_t row_to_pin[5] = { 5, 6, 7, 9, 10 };
-
-  GPIO_LED->BSRR = (1 << row_to_pin[row]);
+  GPIO_LED->BRR = (1 << col);
 }
 
 static void *
@@ -91,8 +97,8 @@ led (void *arg)
 
       for (i = 0; i < 5; i++)
 	{
-	  led_prepare_column (l_data [i]);
-	  led_enable_row (i);
+	  led_prepare_row (i);
+	  led_enable_column (i);
 	  wait_for (1000);
 	}
     }
@@ -100,65 +106,110 @@ led (void *arg)
   return NULL;
 }
 
-static void *
-blk (void *arg)
-{
-  (void)arg;
-
-  chopstx_mutex_lock (&mtx);
-  chopstx_cond_wait (&cnd1, &mtx);
-  chopstx_mutex_unlock (&mtx);
-
-  while (1)
-    {
-      set_led_display (0);
-      wait_for (200*1000);
-      set_led_display (u);
-      wait_for (200*1000);
-    }
-
-  return NULL;
-}
-
 #define PRIO_LED 3
-#define PRIO_BLK 2
 
 extern uint8_t __process1_stack_base__, __process1_stack_size__;
-extern uint8_t __process2_stack_base__, __process2_stack_size__;
-extern uint8_t __process3_stack_base__, __process3_stack_size__;
 
 const uint32_t __stackaddr_led = (uint32_t)&__process1_stack_base__;
 const size_t __stacksize_led = (size_t)&__process1_stack_size__;
 
-const uint32_t __stackaddr_blk = (uint32_t)&__process2_stack_base__;
-const size_t __stacksize_blk = (size_t)&__process2_stack_size__;
-
+#define DATA55(x0,x1,x2,x3,x4) (x0<<20)|(x1<<15)|(x2<<10)|(x3<< 5)|(x4<< 0)
+
+static uint32_t l55[20] = {
+  DATA55 (0x08, 0x04, 0x1c, 0x00, 0x00),
+  DATA55 (0x00, 0x14, 0x0c, 0x08, 0x00),
+  DATA55 (0x00, 0x04, 0x14, 0x0c, 0x00),
+  DATA55 (0x00, 0x08, 0x06, 0x0c, 0x00),
+  DATA55 (0x00, 0x04, 0x02, 0x0e, 0x00),
+  DATA55 (0x00, 0x00, 0x0a, 0x06, 0x04),
+  DATA55 (0x00, 0x00, 0x02, 0x0a, 0x06),
+  DATA55 (0x00, 0x00, 0x04, 0x03, 0x06),
+  DATA55 (0x00, 0x00, 0x02, 0x01, 0x07),
+  DATA55 (0x02, 0x00, 0x00, 0x05, 0x03),
+  DATA55 (0x03, 0x00, 0x00, 0x01, 0x05),
+  DATA55 (0x03, 0x00, 0x00, 0x02, 0x11),
+  DATA55 (0x13, 0x00, 0x00, 0x01, 0x10),
+  DATA55 (0x11, 0x01, 0x00, 0x00, 0x12),
+  DATA55 (0x12, 0x11, 0x00, 0x00, 0x10),
+  DATA55 (0x18, 0x11, 0x00, 0x00, 0x01),
+  DATA55 (0x08, 0x19, 0x00, 0x00, 0x10),
+  DATA55 (0x09, 0x18, 0x10, 0x00, 0x00),
+  DATA55 (0x08, 0x09, 0x18, 0x00, 0x00),
+  DATA55 (0x10, 0x0c, 0x18, 0x00, 0x00),
+};
 
+static uint32_t gnu[30] = {
+  DATA55 (0x00,	0x00, 0x00, 0x00, 0x00),
+  DATA55 (0x00,	0x01, 0x01, 0x01, 0x00),
+  DATA55 (0x01,	0x02, 0x02, 0x02, 0x01),
+  DATA55 (0x03,	0x04, 0x04, 0x04, 0x03),
+  DATA55 (0x07,	0x08, 0x09, 0x08, 0x07),
+  DATA55 (0x0e,	0x10, 0x13, 0x11, 0x0e),
+  DATA55 (0x1c,	0x00, 0x06, 0x02, 0x1c),
+  DATA55 (0x19,	0x01, 0x0d, 0x05, 0x19),
+  DATA55 (0x12,	0x03, 0x1a, 0x0a, 0x12),
+  DATA55 (0x04,	0x06, 0x15, 0x14, 0x04),
+  DATA55 (0x08,	0x0c, 0x0a, 0x09, 0x08),
+  DATA55 (0x11,	0x19, 0x15, 0x13, 0x11),
+  DATA55 (0x02,	0x12, 0x0a, 0x06, 0x02),
+  DATA55 (0x05,	0x05, 0x15, 0x0d, 0x04),
+  DATA55 (0x0a,	0x0a, 0x0a, 0x1a, 0x09),
+  DATA55 (0x14,	0x14, 0x14, 0x14, 0x13),
+  DATA55 (0x08,	0x08, 0x08, 0x08, 0x07),
+  DATA55 (0x11,	0x11, 0x11, 0x11, 0x0e),
+  DATA55 (0x02,	0x02, 0x02, 0x02, 0x1c),
+  DATA55 (0x04,	0x04, 0x04, 0x04, 0x18),
+  DATA55 (0x08,	0x08, 0x08, 0x08, 0x10),
+  DATA55 (0x11,	0x11, 0x11, 0x10, 0x01),
+  DATA55 (0x03,	0x03, 0x03, 0x00, 0x02),
+  DATA55 (0x06,	0x06, 0x06, 0x00, 0x04),
+  DATA55 (0x0c,	0x0c, 0x0c, 0x00, 0x08),
+  DATA55 (0x18,	0x18, 0x18, 0x00, 0x10),
+  DATA55 (0x10,	0x10, 0x10, 0x00, 0x00),
+  DATA55 (0x00,	0x00, 0x00, 0x00, 0x00),
+  DATA55 (0x00,	0x00, 0x00, 0x00, 0x00),
+  DATA55 (0x00,	0x00, 0x00, 0x00, 0x00),
+};
 
 int
 main (int argc, const char *argv[])
 {
+  uint8_t state = 0;
+
   (void)argc;
   (void)argv;
 
   chopstx_mutex_init (&mtx);
   chopstx_cond_init (&cnd0);
-  chopstx_cond_init (&cnd1);
 
   chopstx_create (PRIO_LED, __stackaddr_led, __stacksize_led, led, NULL);
-  chopstx_create (PRIO_BLK, __stackaddr_blk, __stacksize_blk, blk, NULL);
 
   chopstx_usec_wait (200*1000);
 
   chopstx_mutex_lock (&mtx);
   chopstx_cond_signal (&cnd0);
-  chopstx_cond_signal (&cnd1);
   chopstx_mutex_unlock (&mtx);
 
   while (1)
     {
-      u ^= 1;
-      wait_for (200*1000*6);
+      int i;
+
+      if (state)
+	for (i = 0; i < 20; i++)
+	  {
+	    if (user_button ())
+	      state = 0;
+	    set_led_display (l55[i]);
+	    wait_for (500*1000);
+	  }
+      else
+	for (i = 0; i < 30; i++)
+	  {
+	    if (user_button ())
+	      state = 1;
+	    set_led_display (gnu[i]);
+	    wait_for (200*1000);
+	  }
     }
 
   return 0;
diff --git a/example-fsm-55/hh.txt b/example-fsm-55/hh.txt
new file mode 100644
index 0000000..72f51e4
--- /dev/null
+++ b/example-fsm-55/hh.txt
@@ -0,0 +1,59 @@
+o...o
+o...o
+ooooo
+o...o
+o...o
+
+..o.
+.o.o.
+o...o
+ooooo
+o...o
+
+ooooo
+o...o
+oooo.
+o....
+o....
+
+o...o
+o...o
+.ooo.
+..o..
+..o..
+
+.ooo.
+o....
+o....
+o...o
+.ooo.
+
+o..o.
+o.o..
+ooo..
+o..o.
+o...o
+
+ooo
+.o.
+.o.
+.o.
+ooo
+
+o...o 11
+oo..o 19
+o.o.o 15
+o..oo 13
+o...o 11
+
+.ooo. 0e
+o.... 10
+o..oo 13
+o...o 11
+.ooo. 0e
+
+oo
+oo
+oo
+..
+o.
diff --git a/example-fsm-55/hiroshi-ayumi.c b/example-fsm-55/hiroshi-ayumi.c
new file mode 100644
index 0000000..8c47d54
--- /dev/null
+++ b/example-fsm-55/hiroshi-ayumi.c
@@ -0,0 +1,217 @@
+#include <stdint.h>
+#include <stdlib.h>
+#include <chopstx.h>
+
+#include "board.h"
+
+#define PERIPH_BASE	0x40000000
+#define APBPERIPH_BASE   PERIPH_BASE
+#define APB2PERIPH_BASE	(PERIPH_BASE + 0x10000)
+#define AHBPERIPH_BASE	(PERIPH_BASE + 0x20000)
+#define AHB2PERIPH_BASE	(PERIPH_BASE + 0x08000000)
+
+struct GPIO {
+  volatile uint32_t MODER;
+  volatile uint16_t OTYPER;
+  uint16_t dummy0;
+  volatile uint32_t OSPEEDR;
+  volatile uint32_t PUPDR;
+  volatile uint16_t IDR;
+  uint16_t dummy1;
+  volatile uint16_t ODR;
+  uint16_t dummy2;
+  volatile uint16_t BSRR;
+  uint16_t dummy3;
+  volatile uint32_t LCKR;
+  volatile uint32_t AFR[2];
+  volatile uint16_t BRR;
+  uint16_t dummy4;
+};
+#define GPIOA_BASE	(AHB2PERIPH_BASE + 0x0000)
+#define GPIOA		((struct GPIO *) GPIOA_BASE)
+#define GPIOF_BASE	(AHB2PERIPH_BASE + 0x1400)
+#define GPIOF		((struct GPIO *) GPIOF_BASE)
+
+static struct GPIO *const GPIO_LED = ((struct GPIO *const) GPIO_LED_BASE);
+static struct GPIO *const GPIO_OTHER = ((struct GPIO *const) GPIO_OTHER_BASE);
+
+static chopstx_mutex_t mtx;
+static chopstx_cond_t cnd0;
+
+static uint8_t
+user_button (void)
+{
+  return (GPIO_OTHER->IDR & 1) == 0;
+}
+
+static uint8_t l_data[5];
+
+static void
+set_led_display (uint32_t data)
+{
+  l_data[0] = (data >>  0) & 0x1f;
+  l_data[1] = (data >>  5) & 0x1f;
+  l_data[2] = (data >> 10) & 0x1f;
+  l_data[3] = (data >> 15) & 0x1f;
+  l_data[4] = (data >> 20) & 0x1f;
+}
+
+
+static void
+wait_for (uint32_t usec)
+{
+  chopstx_usec_wait (usec);
+}
+
+static void
+led_prepare_row (uint8_t col)
+{
+  uint16_t data = 0x1f;
+
+  data |= ((l_data[0] & (1 << col)) ? 1 : 0) << 5;
+  data |= ((l_data[1] & (1 << col)) ? 1 : 0) << 6;
+  data |= ((l_data[2] & (1 << col)) ? 1 : 0) << 7;
+  data |= ((l_data[3] & (1 << col)) ? 1 : 0) << 9;
+  data |= ((l_data[4] & (1 << col)) ? 1 : 0) << 10;
+  GPIO_LED->ODR = data;
+}
+
+static void
+led_enable_column (uint8_t col)
+{
+  GPIO_LED->BRR = (1 << col);
+}
+
+static void *
+led (void *arg)
+{
+  (void)arg;
+
+  chopstx_mutex_lock (&mtx);
+  chopstx_cond_wait (&cnd0, &mtx);
+  chopstx_mutex_unlock (&mtx);
+
+  while (1)
+    {
+      int i;
+
+      for (i = 0; i < 5; i++)
+	{
+	  led_prepare_row (i);
+	  led_enable_column (i);
+	  wait_for (1000);
+	}
+    }
+
+  return NULL;
+}
+
+#define PRIO_LED 3
+
+extern uint8_t __process1_stack_base__, __process1_stack_size__;
+
+const uint32_t __stackaddr_led = (uint32_t)&__process1_stack_base__;
+const size_t __stacksize_led = (size_t)&__process1_stack_size__;
+
+#define DATA55(x0,x1,x2,x3,x4) (x0<<20)|(x1<<15)|(x2<<10)|(x3<< 5)|(x4<< 0)
+#define SIZE55(img) (sizeof (img) / sizeof (uint32_t))
+
+static uint32_t image0[] = {
+  DATA55 (0x00,0x00,0x00,0x00,0x00),
+  DATA55 (0x00,0x01,0x00,0x00,0x00),
+  DATA55 (0x01,0x03,0x01,0x01,0x00),
+  DATA55 (0x02,0x06,0x02,0x02,0x01),
+  DATA55 (0x05,0x0d,0x05,0x05,0x03),
+  DATA55 (0x0b,0x1a,0x0a,0x0a,0x06),
+  DATA55 (0x16,0x14,0x14,0x14,0x0c),
+  DATA55 (0x0d,0x08,0x09,0x08,0x19),
+  DATA55 (0x1b,0x11,0x12,0x10,0x13),
+  DATA55 (0x17,0x03,0x04,0x00,0x07),
+  DATA55 (0x0f,0x06,0x09,0x01,0x0e),
+  DATA55 (0x1e,0x0c,0x12,0x02,0x1c),
+  DATA55 (0x1d,0x19,0x05,0x05,0x18),
+  DATA55 (0x1a,0x12,0x0a,0x0a,0x11),
+  DATA55 (0x14,0x04,0x14,0x14,0x03),
+  DATA55 (0x08,0x08,0x08,0x09,0x06),
+  DATA55 (0x10,0x10,0x10,0x12,0x0c),
+  DATA55 (0x00,0x00,0x00,0x04,0x18),
+  DATA55 (0x00,0x00,0x00,0x08,0x10),
+  DATA55 (0x00,0x00,0x00,0x10,0x00),
+  DATA55 (0x00,0x00,0x00,0x00,0x00),
+  DATA55 (0x00,0x00,0x00,0x00,0x00),
+  DATA55 (0x00,0x00,0x00,0x00,0x00),
+  DATA55 (0x00,0x00,0x00,0x00,0x00),
+  DATA55 (0x00,0x00,0x00,0x00,0x00),
+};
+
+static uint32_t image1[] = {
+  DATA55 (0x00,0x00,0x00,0x00,0x00),
+  DATA55 (0x01,0x00,0x00,0x00,0x01),
+  DATA55 (0x03,0x00,0x00,0x01,0x03),
+  DATA55 (0x07,0x01,0x01,0x03,0x06),
+  DATA55 (0x0f,0x02,0x02,0x06,0x0c),
+  DATA55 (0x1f,0x05,0x05,0x0c,0x18),
+  DATA55 (0x1e,0x0a,0x0a,0x18,0x11),
+  DATA55 (0x1d,0x14,0x14,0x10,0x03),
+  DATA55 (0x1b,0x08,0x08,0x00,0x07),
+  DATA55 (0x17,0x11,0x11,0x01,0x0f),
+  DATA55 (0x0e,0x02,0x02,0x02,0x1f),
+  DATA55 (0x1c,0x04,0x04,0x04,0x1e),
+  DATA55 (0x19,0x08,0x09,0x08,0x1d),
+  DATA55 (0x13,0x10,0x13,0x10,0x1b),
+  DATA55 (0x07,0x00,0x07,0x00,0x17),
+  DATA55 (0x0f,0x00,0x0f,0x00,0x0f),
+  DATA55 (0x1e,0x00,0x1e,0x00,0x1e),
+  DATA55 (0x1c,0x00,0x1c,0x00,0x1c),
+  DATA55 (0x18,0x00,0x18,0x00,0x18),
+  DATA55 (0x10,0x00,0x10,0x00,0x10),
+  DATA55 (0x00,0x00,0x00,0x00,0x00),
+  DATA55 (0x00,0x00,0x00,0x00,0x00),
+  DATA55 (0x00,0x00,0x00,0x00,0x00),
+  DATA55 (0x00,0x00,0x00,0x00,0x00),
+  DATA55 (0x00,0x00,0x00,0x00,0x00),
+};
+
+int
+main (int argc, const char *argv[])
+{
+  uint8_t state = 0;
+
+  (void)argc;
+  (void)argv;
+
+  chopstx_mutex_init (&mtx);
+  chopstx_cond_init (&cnd0);
+
+  chopstx_create (PRIO_LED, __stackaddr_led, __stacksize_led, led, NULL);
+
+  chopstx_usec_wait (200*1000);
+
+  chopstx_mutex_lock (&mtx);
+  chopstx_cond_signal (&cnd0);
+  chopstx_mutex_unlock (&mtx);
+
+  while (1)
+    {
+      unsigned int i;
+
+      if (state)
+	for (i = 0; i < SIZE55 (image0); i++)
+	  {
+	    if (user_button ())
+	      state = 0;
+	    set_led_display (image0[i]);
+	    wait_for (200*1000);
+	  }
+      else
+	for (i = 0; i < SIZE55 (image1); i++)
+	  {
+	    if (user_button ())
+	      state = 1;
+	    set_led_display (image1[i]);
+	    wait_for (200*1000);
+	  }
+    }
+
+  return 0;
+}
diff --git a/example-fsm-55/l55.txt b/example-fsm-55/l55.txt
new file mode 100644
index 0000000..701248e
--- /dev/null
+++ b/example-fsm-55/l55.txt
@@ -0,0 +1,119 @@
+_*___  08
+__*__  04
+***__  1c
+_____  00
+_____  00
+
+_____  00
+*_*__  14
+_**__  0c
+_*___  08
+_____  00
+
+_____  00
+__*__  04
+*_*__  14
+_**__  0c
+_____  00
+
+_____  00
+_*__   08
+__**_  06
+_**__  0c
+_____  00
+
+_____  00
+__*__  04
+___*_  02
+_***_  0e
+_____  00
+
+_____  00
+_____  00
+_*_*_  0a
+__**_  06
+__*__  04
+
+_____  00
+_____  00
+___*_  02
+_*_*_  0a
+__**_  06
+
+_____  00
+_____  00
+__*__  04
+___**  03
+__**_  06
+
+_____  00
+_____  00
+ __*_  02
+____*  01
+__***  07
+
+___*_  02
+_____  00
+_____  00
+__*_*  05
+___**  03
+
+___**  03
+_____  00
+_____  00
+____*  01
+__*_*  05
+
+___**  03
+_____  00
+_____  00
+_ _*_  02
+*___*  11
+
+*__**  13
+_____  00
+_____  00
+____*  01
+*____  10
+
+*___*  11
+____*  01
+_____  00
+_____  00
+*__*_  12
+
+*__*_  12
+*___*  11
+_____  00
+_____  00
+*____  10
+
+**___  18
+*___*  11
+_____  00
+_____  00
+____*  01
+
+_*___  08
+**__*  19
+_____  00
+_____  00
+*____  10
+
+_*__*  09
+**___  18
+*____  10
+_____  00
+_____  00
+
+_*___  08
+_*__*  09
+**___  18
+_____  00
+_____  00
+
+*____  10
+_**__  0c
+**___  18
+_____  00
+_____  00
diff --git a/example-fsm-55/name.txt b/example-fsm-55/name.txt
new file mode 100644
index 0000000..e54ee58
--- /dev/null
+++ b/example-fsm-55/name.txt
@@ -0,0 +1,287 @@
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+
+_____ 00
+____* 01
+_____ 00
+_____ 00
+_____ 00
+
+____* 01
+___** 03
+____* 01
+____* 01
+_____ 00
+
+___*_ 02
+__**_ 06
+___*_ 02
+___*_ 02
+____* 01
+
+__*_* 05
+_**_* 0d
+__*_* 05
+__*_* 05
+___** 03
+
+_*_** 0b
+**_*_ 1a
+_*_*_ 0a
+_*_*_ 0a
+__**_ 06
+
+*_**_ 16
+*_*__ 14
+*_*__ 14
+*_*__ 14
+_**__ 0c
+
+_**_* 0d
+_*___ 08
+_*__* 09
+_*___ 08
+**__* 19
+
+**_** 1b
+*___* 11
+*__*_ 12
+*____ 10
+*__** 13
+
+*_*** 17
+___** 03
+__*__ 04
+_____ 00
+__*** 07
+
+_**** 0f
+__**_ 06
+_*__* 09
+____* 01
+_***_ 0e
+
+****_ 1e
+_**__ 0c
+*__*_ 12
+___*_ 02
+***__ 1c
+
+***_* 1d
+**__* 19
+__*_* 05
+__*_* 05
+**___ 18
+
+**_*_ 1a
+*__*_ 12
+_*_*_ 0a
+_*_*_ 0a
+*___* 11
+
+*_*__ 14
+__*__ 04
+*_*__ 14
+*_*__ 14
+___** 03
+
+_*___ 08
+_*___ 08
+_*___ 08
+_*__* 09
+__**_ 06
+
+*____ 10
+*____ 10
+*____ 10
+*__*_ 12
+_**__ 0c
+
+_____ 00
+_____ 00
+_____ 00
+__*__ 04
+**___ 18
+
+_____ 00
+_____ 00
+_____ 00
+_*___ 08
+*____ 10
+
+_____ 00
+_____ 00
+_____ 00
+*____ 10
+_____ 00
+
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+
+____* 01
+_____ 00
+_____ 00
+_____ 00
+____* 01
+
+___** 03
+_____ 00
+_____ 00
+____* 01
+___** 03
+
+__*** 07
+____* 01
+____* 01
+___** 03
+__**_ 06
+
+_**** 0f
+___*_ 02
+___*_ 02
+__**_ 06
+_**__ 0c
+
+***** 1f
+__*_* 05
+__*_* 05
+_**__ 0c
+**___ 18
+
+****_ 1e
+_*_*_ 0a
+_*_*_ 0a
+**___ 18
+*___* 11
+
+***_* 1d
+*_*__ 14
+*_*__ 14
+*____ 10
+___** 03
+
+**_** 1b
+_*___ 08
+_*___ 08
+_____ 00
+__*** 07
+
+*_*** 17
+*___* 11
+*___* 11
+____* 01
+_**** 0f
+
+_***_ 0e
+___*_ 02
+___*_ 02
+___*_ 02
+***** 1f
+
+***__ 1c
+__*__ 04
+__*__ 04
+__*__ 04
+****_ 1e
+
+**__* 19
+_*___ 08
+_*__* 09
+_*___ 08
+***_* 1d
+
+*__** 13
+*____ 10
+*__** 13
+*____ 10
+**_** 1b
+
+__*** 07
+_____ 00
+__*** 07
+_____ 00
+*_*** 17
+
+_**** 0f
+_____ 00
+_**** 0f
+_____ 00
+_**** 0f
+
+****_ 1e
+_____ 00
+****_ 1e
+_____ 00
+****_ 1e
+
+***__ 1c
+_____ 00
+***__ 1c
+_____ 00
+***__ 1c
+
+**___ 18
+_____ 00
+**___ 18
+_____ 00
+**___ 18
+
+*____ 10
+_____ 00
+*____ 10
+_____ 00
+*____ 10
+
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+
+_____ 00
+_____ 00
+_____ 00
+_____ 00
+_____ 00
-- 
cgit v1.2.3