aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWanderingGlitch <wandering.glitch+git@gmail.com>2016-07-01 19:38:46 -0500
committerWanderingGlitch <wandering.glitch+git@gmail.com>2016-07-01 20:36:50 -0500
commit16c3423c520e588f54bbe8e145388ef1ea8c2ed2 (patch)
tree295cc2c13a716a4d46d6d985b8562e0b171c674b
parent6a62efabb0b048a6f2f1d74870fccbd634e281d3 (diff)
Adding the unoptimized text drawing code
-rwxr-xr-xlaser-tag software/CMakeLists.txt1
-rw-r--r--laser-tag software/images/alphabet/ascii0x20.xbm5
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x21.xbm5
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x22.xbm5
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x23.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x24.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x25.xbm9
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x26.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x27.xbm5
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x28.xbm5
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x29.xbm5
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x2a.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x2b.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x2c.xbm5
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x2d.xbm5
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x2e.xbm5
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x2f.xbm5
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x30.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x31.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x32.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x33.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x34.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x35.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x36.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x37.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x38.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x39.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x3a.xbm5
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x3b.xbm5
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x3c.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x3d.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x3e.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x3f.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x40.xbm9
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x41.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x42.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x43.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x44.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x45.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x46.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x47.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x48.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x49.xbm5
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x4a.xbm5
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x4b.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x4c.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x4d.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x4e.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x4f.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x50.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x51.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x52.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x53.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x54.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x55.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x56.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x57.xbm9
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x58.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x59.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x5a.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x5b.xbm5
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x5c.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x5d.xbm5
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x5e.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x5f.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x60.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x61.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x62.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x63.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x64.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x65.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x66.xbm5
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x67.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x68.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x69.xbm5
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x6a.xbm5
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x6b.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x6c.xbm5
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x6d.xbm9
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x6e.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x6f.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x70.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x71.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x72.xbm5
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x73.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x74.xbm5
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x75.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x76.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x77.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x78.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x79.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x7a.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x7b.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x7c.xbm5
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x7d.xbm7
-rwxr-xr-xlaser-tag software/images/alphabet/ascii0x7e.xbm7
-rw-r--r--laser-tag software/images/create_images_from_font.py124
-rwxr-xr-xlaser-tag software/main.c1
-rw-r--r--laser-tag software/text.c780
-rw-r--r--laser-tag software/text.h19
100 files changed, 1552 insertions, 0 deletions
diff --git a/laser-tag software/CMakeLists.txt b/laser-tag software/CMakeLists.txt
index e88e8ae..1861b60 100755
--- a/laser-tag software/CMakeLists.txt
+++ b/laser-tag software/CMakeLists.txt
@@ -100,6 +100,7 @@ ADD_EXECUTABLE(hello_world
"${ProjDirPath}/../KSDK_1.2.0/platform/drivers/src/spi/fsl_spi_dma_irq.c"
"${ProjDirPath}/main.c"
"${ProjDirPath}/epaper.c"
+ "${ProjDirPath}/text.c"
)
SET_TARGET_PROPERTIES(hello_world PROPERTIES OUTPUT_NAME "hello_world.elf")
diff --git a/laser-tag software/images/alphabet/ascii0x20.xbm b/laser-tag software/images/alphabet/ascii0x20.xbm
new file mode 100644
index 0000000..3f6eea0
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x20.xbm
@@ -0,0 +1,5 @@
+#define ascii0x20_width 5
+#define ascii0x20_height 22
+static unsigned char ascii0x20_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x21.xbm b/laser-tag software/images/alphabet/ascii0x21.xbm
new file mode 100755
index 0000000..c23b9aa
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x21.xbm
@@ -0,0 +1,5 @@
+#define ascii0x21_width 7
+#define ascii0x21_height 22
+static unsigned char ascii0x21_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
+ 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x22.xbm b/laser-tag software/images/alphabet/ascii0x22.xbm
new file mode 100755
index 0000000..8a0629f
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x22.xbm
@@ -0,0 +1,5 @@
+#define ascii0x22_width 8
+#define ascii0x22_height 22
+static unsigned char ascii0x22_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x23.xbm b/laser-tag software/images/alphabet/ascii0x23.xbm
new file mode 100755
index 0000000..d36ec0e
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x23.xbm
@@ -0,0 +1,7 @@
+#define ascii0x23_width 15
+#define ascii0x23_height 22
+static unsigned char ascii0x23_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04,
+ 0x80, 0x04, 0x40, 0x02, 0x40, 0x02, 0xf8, 0x1f, 0x40, 0x02, 0x60, 0x03,
+ 0x20, 0x01, 0xfc, 0x0f, 0x20, 0x01, 0x20, 0x01, 0x90, 0x00, 0x90, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x24.xbm b/laser-tag software/images/alphabet/ascii0x24.xbm
new file mode 100755
index 0000000..4c84a16
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x24.xbm
@@ -0,0 +1,7 @@
+#define ascii0x24_width 11
+#define ascii0x24_height 22
+static unsigned char ascii0x24_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
+ 0x20, 0x00, 0xf8, 0x03, 0xfc, 0x03, 0x26, 0x00, 0x26, 0x00, 0x2e, 0x00,
+ 0xf8, 0x00, 0xa0, 0x03, 0x20, 0x03, 0x22, 0x03, 0xfe, 0x01, 0xfc, 0x00,
+ 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x25.xbm b/laser-tag software/images/alphabet/ascii0x25.xbm
new file mode 100755
index 0000000..bbc3cf4
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x25.xbm
@@ -0,0 +1,9 @@
+#define ascii0x25_width 19
+#define ascii0x25_height 22
+static unsigned char ascii0x25_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x3c, 0x30, 0x00, 0x26, 0x10, 0x00, 0x66, 0x18, 0x00,
+ 0x66, 0x0c, 0x00, 0x66, 0x04, 0x00, 0x66, 0xe6, 0x01, 0x66, 0x32, 0x03,
+ 0x3c, 0x33, 0x03, 0x00, 0x31, 0x03, 0x80, 0x31, 0x03, 0xc0, 0x30, 0x03,
+ 0x40, 0x20, 0x03, 0x60, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x26.xbm b/laser-tag software/images/alphabet/ascii0x26.xbm
new file mode 100755
index 0000000..876b204
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x26.xbm
@@ -0,0 +1,7 @@
+#define ascii0x26_width 13
+#define ascii0x26_height 22
+static unsigned char ascii0x26_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00,
+ 0xfc, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0x4c, 0x00, 0x38, 0x06, 0x6c, 0x06,
+ 0xc4, 0x06, 0x86, 0x07, 0x06, 0x03, 0x8e, 0x07, 0xfc, 0x0d, 0x78, 0x18,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x27.xbm b/laser-tag software/images/alphabet/ascii0x27.xbm
new file mode 100755
index 0000000..97cb120
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x27.xbm
@@ -0,0 +1,5 @@
+#define ascii0x27_width 5
+#define ascii0x27_height 22
+static unsigned char ascii0x27_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x28.xbm b/laser-tag software/images/alphabet/ascii0x28.xbm
new file mode 100755
index 0000000..75c17b6
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x28.xbm
@@ -0,0 +1,5 @@
+#define ascii0x28_width 8
+#define ascii0x28_height 22
+static unsigned char ascii0x28_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x08, 0x0c, 0x0c, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x0c, 0x0c, 0x08, 0x18, 0x30 };
diff --git a/laser-tag software/images/alphabet/ascii0x29.xbm b/laser-tag software/images/alphabet/ascii0x29.xbm
new file mode 100755
index 0000000..a04e9fe
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x29.xbm
@@ -0,0 +1,5 @@
+#define ascii0x29_width 8
+#define ascii0x29_height 22
+static unsigned char ascii0x29_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x06, 0x0c, 0x08, 0x18, 0x18, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x18, 0x0c, 0x0c, 0x06 };
diff --git a/laser-tag software/images/alphabet/ascii0x2a.xbm b/laser-tag software/images/alphabet/ascii0x2a.xbm
new file mode 100755
index 0000000..27b9cdb
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x2a.xbm
@@ -0,0 +1,7 @@
+#define ascii0x2a_width 11
+#define ascii0x2a_height 22
+static unsigned char ascii0x2a_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x22, 0x02,
+ 0xac, 0x01, 0x70, 0x00, 0x70, 0x00, 0xac, 0x01, 0x22, 0x02, 0x20, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x2b.xbm b/laser-tag software/images/alphabet/ascii0x2b.xbm
new file mode 100755
index 0000000..84df8f5
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x2b.xbm
@@ -0,0 +1,7 @@
+#define ascii0x2b_width 15
+#define ascii0x2b_height 22
+static unsigned char ascii0x2b_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
+ 0xfc, 0x3f, 0xfc, 0x3f, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
+ 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x2c.xbm b/laser-tag software/images/alphabet/ascii0x2c.xbm
new file mode 100755
index 0000000..b893751
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x2c.xbm
@@ -0,0 +1,5 @@
+#define ascii0x2c_width 7
+#define ascii0x2c_height 22
+static unsigned char ascii0x2c_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x04, 0x06, 0x06, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x2d.xbm b/laser-tag software/images/alphabet/ascii0x2d.xbm
new file mode 100755
index 0000000..2f3aca3
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x2d.xbm
@@ -0,0 +1,5 @@
+#define ascii0x2d_width 8
+#define ascii0x2d_height 22
+static unsigned char ascii0x2d_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e,
+ 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x2e.xbm b/laser-tag software/images/alphabet/ascii0x2e.xbm
new file mode 100755
index 0000000..cd990fe
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x2e.xbm
@@ -0,0 +1,5 @@
+#define ascii0x2e_width 7
+#define ascii0x2e_height 22
+static unsigned char ascii0x2e_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x2f.xbm b/laser-tag software/images/alphabet/ascii0x2f.xbm
new file mode 100755
index 0000000..7d9a697
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x2f.xbm
@@ -0,0 +1,5 @@
+#define ascii0x2f_width 8
+#define ascii0x2f_height 22
+static unsigned char ascii0x2f_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x30, 0x18,
+ 0x18, 0x18, 0x0c, 0x0c, 0x0c, 0x06, 0x06, 0x06, 0x03, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x30.xbm b/laser-tag software/images/alphabet/ascii0x30.xbm
new file mode 100755
index 0000000..a2452f8
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x30.xbm
@@ -0,0 +1,7 @@
+#define ascii0x30_width 11
+#define ascii0x30_height 22
+static unsigned char ascii0x30_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00,
+ 0xfc, 0x01, 0x8c, 0x01, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03,
+ 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x8c, 0x01, 0xfc, 0x01, 0xf8, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x31.xbm b/laser-tag software/images/alphabet/ascii0x31.xbm
new file mode 100755
index 0000000..1dcb7a9
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x31.xbm
@@ -0,0 +1,7 @@
+#define ascii0x31_width 11
+#define ascii0x31_height 22
+static unsigned char ascii0x31_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
+ 0x70, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
+ 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0xfc, 0x03, 0xfc, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x32.xbm b/laser-tag software/images/alphabet/ascii0x32.xbm
new file mode 100755
index 0000000..4a3c3d4
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x32.xbm
@@ -0,0 +1,7 @@
+#define ascii0x32_width 11
+#define ascii0x32_height 22
+static unsigned char ascii0x32_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00,
+ 0xfe, 0x00, 0xc2, 0x01, 0x80, 0x01, 0x80, 0x01, 0xc0, 0x00, 0xc0, 0x00,
+ 0x60, 0x00, 0x30, 0x00, 0x1c, 0x00, 0x06, 0x00, 0xfe, 0x03, 0xfe, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x33.xbm b/laser-tag software/images/alphabet/ascii0x33.xbm
new file mode 100755
index 0000000..7589630
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x33.xbm
@@ -0,0 +1,7 @@
+#define ascii0x33_width 11
+#define ascii0x33_height 22
+static unsigned char ascii0x33_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00,
+ 0xfe, 0x01, 0x82, 0x03, 0x00, 0x03, 0x80, 0x01, 0xf0, 0x00, 0xf0, 0x01,
+ 0x80, 0x03, 0x00, 0x03, 0x00, 0x03, 0x82, 0x03, 0xfe, 0x01, 0xfc, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x34.xbm b/laser-tag software/images/alphabet/ascii0x34.xbm
new file mode 100755
index 0000000..1928e77
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x34.xbm
@@ -0,0 +1,7 @@
+#define ascii0x34_width 11
+#define ascii0x34_height 22
+static unsigned char ascii0x34_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
+ 0xc0, 0x01, 0xe0, 0x01, 0xf0, 0x01, 0xb8, 0x01, 0x9c, 0x01, 0x8e, 0x01,
+ 0xfe, 0x07, 0xfe, 0x07, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x35.xbm b/laser-tag software/images/alphabet/ascii0x35.xbm
new file mode 100755
index 0000000..303cc0a
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x35.xbm
@@ -0,0 +1,7 @@
+#define ascii0x35_width 11
+#define ascii0x35_height 22
+static unsigned char ascii0x35_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03,
+ 0xf8, 0x03, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0xf8, 0x00, 0xf8, 0x01,
+ 0x80, 0x03, 0x00, 0x03, 0x00, 0x03, 0x84, 0x03, 0xfc, 0x01, 0xf8, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x36.xbm b/laser-tag software/images/alphabet/ascii0x36.xbm
new file mode 100755
index 0000000..cf1e7aa
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x36.xbm
@@ -0,0 +1,7 @@
+#define ascii0x36_width 11
+#define ascii0x36_height 22
+static unsigned char ascii0x36_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01,
+ 0xf8, 0x01, 0x1c, 0x00, 0x0c, 0x00, 0x06, 0x00, 0xf6, 0x00, 0xfe, 0x01,
+ 0x86, 0x03, 0x06, 0x03, 0x06, 0x03, 0x8c, 0x03, 0xfc, 0x01, 0xf8, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x37.xbm b/laser-tag software/images/alphabet/ascii0x37.xbm
new file mode 100755
index 0000000..f3002b7
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x37.xbm
@@ -0,0 +1,7 @@
+#define ascii0x37_width 11
+#define ascii0x37_height 22
+static unsigned char ascii0x37_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03,
+ 0xfe, 0x03, 0x00, 0x03, 0x80, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0xe0, 0x00,
+ 0x60, 0x00, 0x70, 0x00, 0x30, 0x00, 0x38, 0x00, 0x18, 0x00, 0x1c, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x38.xbm b/laser-tag software/images/alphabet/ascii0x38.xbm
new file mode 100755
index 0000000..984acc4
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x38.xbm
@@ -0,0 +1,7 @@
+#define ascii0x38_width 11
+#define ascii0x38_height 22
+static unsigned char ascii0x38_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00,
+ 0xfc, 0x01, 0x8e, 0x03, 0x06, 0x03, 0x0e, 0x03, 0xbc, 0x01, 0xfc, 0x00,
+ 0x84, 0x01, 0x06, 0x03, 0x06, 0x03, 0x8e, 0x03, 0xfc, 0x01, 0xf8, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x39.xbm b/laser-tag software/images/alphabet/ascii0x39.xbm
new file mode 100755
index 0000000..d507a51
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x39.xbm
@@ -0,0 +1,7 @@
+#define ascii0x39_width 11
+#define ascii0x39_height 22
+static unsigned char ascii0x39_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00,
+ 0xfc, 0x01, 0x8e, 0x01, 0x06, 0x03, 0x06, 0x03, 0x0e, 0x03, 0xfc, 0x03,
+ 0xf8, 0x03, 0x00, 0x03, 0x80, 0x01, 0xc0, 0x01, 0xfc, 0x00, 0x3c, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x3a.xbm b/laser-tag software/images/alphabet/ascii0x3a.xbm
new file mode 100755
index 0000000..d1720c9
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x3a.xbm
@@ -0,0 +1,5 @@
+#define ascii0x3a_width 8
+#define ascii0x3a_height 22
+static unsigned char ascii0x3a_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x00,
+ 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x3b.xbm b/laser-tag software/images/alphabet/ascii0x3b.xbm
new file mode 100755
index 0000000..5ad8289
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x3b.xbm
@@ -0,0 +1,5 @@
+#define ascii0x3b_width 8
+#define ascii0x3b_height 22
+static unsigned char ascii0x3b_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x00,
+ 0x00, 0x00, 0x00, 0x38, 0x18, 0x18, 0x08, 0x0c, 0x0c, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x3c.xbm b/laser-tag software/images/alphabet/ascii0x3c.xbm
new file mode 100755
index 0000000..68bdf2f
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x3c.xbm
@@ -0,0 +1,7 @@
+#define ascii0x3c_width 15
+#define ascii0x3c_height 22
+static unsigned char ascii0x3c_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0f, 0xc0, 0x03, 0xf0, 0x00, 0x3c, 0x00,
+ 0x3c, 0x00, 0xf0, 0x00, 0xc0, 0x03, 0x00, 0x0f, 0x00, 0x0c, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x3d.xbm b/laser-tag software/images/alphabet/ascii0x3d.xbm
new file mode 100755
index 0000000..e17ffc9
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x3d.xbm
@@ -0,0 +1,7 @@
+#define ascii0x3d_width 15
+#define ascii0x3d_height 22
+static unsigned char ascii0x3d_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x0f, 0xfc, 0x0f,
+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x0f, 0xfc, 0x0f, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x3e.xbm b/laser-tag software/images/alphabet/ascii0x3e.xbm
new file mode 100755
index 0000000..0288c69
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x3e.xbm
@@ -0,0 +1,7 @@
+#define ascii0x3e_width 15
+#define ascii0x3e_height 22
+static unsigned char ascii0x3e_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x0c, 0x00, 0x3c, 0x00, 0xf0, 0x00, 0xc0, 0x03, 0x00, 0x0f,
+ 0x00, 0x0f, 0xc0, 0x03, 0xf0, 0x00, 0x3c, 0x00, 0x0c, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x3f.xbm b/laser-tag software/images/alphabet/ascii0x3f.xbm
new file mode 100755
index 0000000..2aa7b83
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x3f.xbm
@@ -0,0 +1,7 @@
+#define ascii0x3f_width 10
+#define ascii0x3f_height 22
+static unsigned char ascii0x3f_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00,
+ 0x7e, 0x00, 0xe2, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x60, 0x00, 0x30, 0x00,
+ 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x40.xbm b/laser-tag software/images/alphabet/ascii0x40.xbm
new file mode 100755
index 0000000..962b323
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x40.xbm
@@ -0,0 +1,9 @@
+#define ascii0x40_width 18
+#define ascii0x40_height 22
+static unsigned char ascii0x40_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x60, 0x30, 0x00, 0x30, 0x60, 0x00,
+ 0x18, 0xdf, 0x00, 0x98, 0x99, 0x00, 0xcc, 0x98, 0x01, 0xcc, 0x98, 0x01,
+ 0xcc, 0x98, 0x01, 0xcc, 0x98, 0x01, 0xcc, 0x98, 0x01, 0x98, 0x9d, 0x00,
+ 0x98, 0xfb, 0x00, 0x30, 0x00, 0x00, 0xe0, 0x10, 0x00, 0x80, 0x1f, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x41.xbm b/laser-tag software/images/alphabet/ascii0x41.xbm
new file mode 100755
index 0000000..f62f6bc
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x41.xbm
@@ -0,0 +1,7 @@
+#define ascii0x41_width 12
+#define ascii0x41_height 22
+static unsigned char ascii0x41_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
+ 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0x98, 0x01, 0x98, 0x01, 0x0c, 0x03,
+ 0x0c, 0x03, 0xfc, 0x03, 0xfe, 0x07, 0x06, 0x06, 0x06, 0x06, 0x03, 0x0c,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x42.xbm b/laser-tag software/images/alphabet/ascii0x42.xbm
new file mode 100755
index 0000000..49588bd
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x42.xbm
@@ -0,0 +1,7 @@
+#define ascii0x42_width 12
+#define ascii0x42_height 22
+static unsigned char ascii0x42_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01,
+ 0xfc, 0x03, 0x0c, 0x03, 0x0c, 0x03, 0x8c, 0x01, 0xfc, 0x01, 0xfc, 0x03,
+ 0x0c, 0x07, 0x0c, 0x06, 0x0c, 0x06, 0x0c, 0x07, 0xfc, 0x03, 0xfc, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x43.xbm b/laser-tag software/images/alphabet/ascii0x43.xbm
new file mode 100755
index 0000000..59d9d58
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x43.xbm
@@ -0,0 +1,7 @@
+#define ascii0x43_width 13
+#define ascii0x43_height 22
+static unsigned char ascii0x43_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07,
+ 0xf8, 0x0f, 0x1c, 0x08, 0x0c, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00,
+ 0x06, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x1c, 0x08, 0xf8, 0x0f, 0xe0, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x44.xbm b/laser-tag software/images/alphabet/ascii0x44.xbm
new file mode 100755
index 0000000..4ad3860
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x44.xbm
@@ -0,0 +1,7 @@
+#define ascii0x44_width 14
+#define ascii0x44_height 22
+static unsigned char ascii0x44_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01,
+ 0xfc, 0x07, 0x0c, 0x0f, 0x0c, 0x0c, 0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x18,
+ 0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x0c, 0x0c, 0x0e, 0xfc, 0x07, 0xfc, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x45.xbm b/laser-tag software/images/alphabet/ascii0x45.xbm
new file mode 100755
index 0000000..7b167ec
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x45.xbm
@@ -0,0 +1,7 @@
+#define ascii0x45_width 11
+#define ascii0x45_height 22
+static unsigned char ascii0x45_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03,
+ 0xfc, 0x03, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0xfc, 0x03, 0xfc, 0x03,
+ 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0xfc, 0x03, 0xfc, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x46.xbm b/laser-tag software/images/alphabet/ascii0x46.xbm
new file mode 100755
index 0000000..c078d02
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x46.xbm
@@ -0,0 +1,7 @@
+#define ascii0x46_width 10
+#define ascii0x46_height 22
+static unsigned char ascii0x46_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03,
+ 0xfc, 0x03, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0xfc, 0x01, 0xfc, 0x01,
+ 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x47.xbm b/laser-tag software/images/alphabet/ascii0x47.xbm
new file mode 100755
index 0000000..8ad2d2a
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x47.xbm
@@ -0,0 +1,7 @@
+#define ascii0x47_width 14
+#define ascii0x47_height 22
+static unsigned char ascii0x47_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07,
+ 0xf8, 0x1f, 0x1c, 0x18, 0x0c, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x1f,
+ 0x06, 0x1f, 0x06, 0x18, 0x0c, 0x18, 0x1c, 0x18, 0xf8, 0x1f, 0xe0, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x48.xbm b/laser-tag software/images/alphabet/ascii0x48.xbm
new file mode 100755
index 0000000..6b110b6
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x48.xbm
@@ -0,0 +1,7 @@
+#define ascii0x48_width 14
+#define ascii0x48_height 22
+static unsigned char ascii0x48_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c,
+ 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xfc, 0x0f, 0xfc, 0x0f,
+ 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x49.xbm b/laser-tag software/images/alphabet/ascii0x49.xbm
new file mode 100755
index 0000000..4bb4792
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x49.xbm
@@ -0,0 +1,5 @@
+#define ascii0x49_width 8
+#define ascii0x49_height 22
+static unsigned char ascii0x49_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18,
+ 0x18, 0x18, 0x18, 0x18, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x4a.xbm b/laser-tag software/images/alphabet/ascii0x4a.xbm
new file mode 100755
index 0000000..1244094
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x4a.xbm
@@ -0,0 +1,5 @@
+#define ascii0x4a_width 8
+#define ascii0x4a_height 22
+static unsigned char ascii0x4a_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x38, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x4b.xbm b/laser-tag software/images/alphabet/ascii0x4b.xbm
new file mode 100755
index 0000000..d78acc8
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x4b.xbm
@@ -0,0 +1,7 @@
+#define ascii0x4b_width 12
+#define ascii0x4b_height 22
+static unsigned char ascii0x4b_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0e,
+ 0x0c, 0x07, 0x8c, 0x03, 0xcc, 0x01, 0xec, 0x00, 0x6c, 0x00, 0x7c, 0x00,
+ 0xfc, 0x00, 0xcc, 0x00, 0x8c, 0x01, 0x0c, 0x03, 0x0c, 0x07, 0x0c, 0x0e,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x4c.xbm b/laser-tag software/images/alphabet/ascii0x4c.xbm
new file mode 100755
index 0000000..6cfbcd6
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x4c.xbm
@@ -0,0 +1,7 @@
+#define ascii0x4c_width 10
+#define ascii0x4c_height 22
+static unsigned char ascii0x4c_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,
+ 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00,
+ 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0xfc, 0x03, 0xfc, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x4d.xbm b/laser-tag software/images/alphabet/ascii0x4d.xbm
new file mode 100755
index 0000000..bf58e81
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x4d.xbm
@@ -0,0 +1,7 @@
+#define ascii0x4d_width 15
+#define ascii0x4d_height 22
+static unsigned char ascii0x4d_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1c,
+ 0x1c, 0x1c, 0x3c, 0x1e, 0x2c, 0x1a, 0x6c, 0x1a, 0x4c, 0x19, 0xcc, 0x19,
+ 0xcc, 0x19, 0x8c, 0x18, 0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x18,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x4e.xbm b/laser-tag software/images/alphabet/ascii0x4e.xbm
new file mode 100755
index 0000000..de63e39
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x4e.xbm
@@ -0,0 +1,7 @@
+#define ascii0x4e_width 13
+#define ascii0x4e_height 22
+static unsigned char ascii0x4e_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x06,
+ 0x1c, 0x06, 0x3c, 0x06, 0x2c, 0x06, 0x6c, 0x06, 0x4c, 0x06, 0x4c, 0x06,
+ 0xcc, 0x06, 0x8c, 0x06, 0x8c, 0x07, 0x0c, 0x07, 0x0c, 0x07, 0x0c, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x4f.xbm b/laser-tag software/images/alphabet/ascii0x4f.xbm
new file mode 100755
index 0000000..9aa90c1
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x4f.xbm
@@ -0,0 +1,7 @@
+#define ascii0x4f_width 14
+#define ascii0x4f_height 22
+static unsigned char ascii0x4f_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03,
+ 0xf8, 0x07, 0x1c, 0x0e, 0x0c, 0x0c, 0x06, 0x18, 0x06, 0x18, 0x06, 0x18,
+ 0x06, 0x18, 0x06, 0x18, 0x0c, 0x0c, 0x1c, 0x0e, 0xf8, 0x07, 0xf0, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x50.xbm b/laser-tag software/images/alphabet/ascii0x50.xbm
new file mode 100755
index 0000000..988bc92
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x50.xbm
@@ -0,0 +1,7 @@
+#define ascii0x50_width 11
+#define ascii0x50_height 22
+static unsigned char ascii0x50_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00,
+ 0xfc, 0x01, 0x8c, 0x03, 0x0c, 0x03, 0x0c, 0x03, 0x8c, 0x03, 0xfc, 0x01,
+ 0xfc, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x51.xbm b/laser-tag software/images/alphabet/ascii0x51.xbm
new file mode 100755
index 0000000..15a08af
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x51.xbm
@@ -0,0 +1,7 @@
+#define ascii0x51_width 14
+#define ascii0x51_height 22
+static unsigned char ascii0x51_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03,
+ 0xf8, 0x07, 0x1c, 0x0e, 0x0c, 0x0c, 0x06, 0x18, 0x06, 0x18, 0x06, 0x18,
+ 0x06, 0x18, 0x06, 0x18, 0x0c, 0x0c, 0x1c, 0x0e, 0xf8, 0x07, 0xf0, 0x03,
+ 0x00, 0x03, 0x00, 0x1f, 0x00, 0x1e, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x52.xbm b/laser-tag software/images/alphabet/ascii0x52.xbm
new file mode 100755
index 0000000..895c0f0
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x52.xbm
@@ -0,0 +1,7 @@
+#define ascii0x52_width 13
+#define ascii0x52_height 22
+static unsigned char ascii0x52_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01,
+ 0xfc, 0x03, 0x0c, 0x07, 0x0c, 0x06, 0x0c, 0x06, 0x0c, 0x07, 0xfc, 0x03,
+ 0xfc, 0x00, 0x8c, 0x01, 0x8c, 0x03, 0x0c, 0x07, 0x0c, 0x0e, 0x0c, 0x1c,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x53.xbm b/laser-tag software/images/alphabet/ascii0x53.xbm
new file mode 100755
index 0000000..ff38a37
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x53.xbm
@@ -0,0 +1,7 @@
+#define ascii0x53_width 12
+#define ascii0x53_height 22
+static unsigned char ascii0x53_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01,
+ 0xfc, 0x03, 0x0e, 0x02, 0x06, 0x00, 0x06, 0x00, 0x3c, 0x00, 0xf8, 0x01,
+ 0x80, 0x07, 0x00, 0x06, 0x00, 0x06, 0x02, 0x07, 0xfe, 0x03, 0xfc, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x54.xbm b/laser-tag software/images/alphabet/ascii0x54.xbm
new file mode 100755
index 0000000..05a6c04
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x54.xbm
@@ -0,0 +1,7 @@
+#define ascii0x54_width 12
+#define ascii0x54_height 22
+static unsigned char ascii0x54_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x0f,
+ 0xff, 0x0f, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
+ 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x55.xbm b/laser-tag software/images/alphabet/ascii0x55.xbm
new file mode 100755
index 0000000..7c3bd67
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x55.xbm
@@ -0,0 +1,7 @@
+#define ascii0x55_width 13
+#define ascii0x55_height 22
+static unsigned char ascii0x55_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x06,
+ 0x0c, 0x06, 0x0c, 0x06, 0x0c, 0x06, 0x0c, 0x06, 0x0c, 0x06, 0x0c, 0x06,
+ 0x0c, 0x06, 0x0c, 0x06, 0x0c, 0x06, 0x1c, 0x07, 0xf8, 0x03, 0xf0, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x56.xbm b/laser-tag software/images/alphabet/ascii0x56.xbm
new file mode 100755
index 0000000..f8634ea
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x56.xbm
@@ -0,0 +1,7 @@
+#define ascii0x56_width 12
+#define ascii0x56_height 22
+static unsigned char ascii0x56_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0c, 0x03, 0x0c, 0x03, 0x1c, 0x03,
+ 0x98, 0x01, 0x98, 0x01, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0x60, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x57.xbm b/laser-tag software/images/alphabet/ascii0x57.xbm
new file mode 100755
index 0000000..4f86b97
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x57.xbm
@@ -0,0 +1,9 @@
+#define ascii0x57_width 18
+#define ascii0x57_height 22
+static unsigned char ascii0x57_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x06, 0x83, 0x01, 0x06, 0x83, 0x01, 0x0c, 0xc7, 0x00,
+ 0x8c, 0xc7, 0x00, 0x8c, 0xc4, 0x00, 0x8c, 0xc4, 0x00, 0x98, 0x4c, 0x00,
+ 0xd8, 0x6c, 0x00, 0x58, 0x68, 0x00, 0x58, 0x68, 0x00, 0x70, 0x38, 0x00,
+ 0x70, 0x38, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x58.xbm b/laser-tag software/images/alphabet/ascii0x58.xbm
new file mode 100755
index 0000000..f3d121c
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x58.xbm
@@ -0,0 +1,7 @@
+#define ascii0x58_width 12
+#define ascii0x58_height 22
+static unsigned char ascii0x58_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x07,
+ 0x0c, 0x03, 0x98, 0x01, 0x98, 0x01, 0xf0, 0x00, 0xf0, 0x00, 0x60, 0x00,
+ 0xf0, 0x00, 0xf0, 0x00, 0x98, 0x01, 0x98, 0x01, 0x0c, 0x03, 0x0e, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x59.xbm b/laser-tag software/images/alphabet/ascii0x59.xbm
new file mode 100755
index 0000000..5d11c9d
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x59.xbm
@@ -0,0 +1,7 @@
+#define ascii0x59_width 12
+#define ascii0x59_height 22
+static unsigned char ascii0x59_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0e,
+ 0x06, 0x06, 0x0c, 0x03, 0x9c, 0x03, 0x98, 0x01, 0xf0, 0x00, 0xf0, 0x00,
+ 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x5a.xbm b/laser-tag software/images/alphabet/ascii0x5a.xbm
new file mode 100755
index 0000000..d7a7696
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x5a.xbm
@@ -0,0 +1,7 @@
+#define ascii0x5a_width 12
+#define ascii0x5a_height 22
+static unsigned char ascii0x5a_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x07,
+ 0xfe, 0x07, 0x00, 0x07, 0x80, 0x03, 0xc0, 0x01, 0xc0, 0x00, 0x60, 0x00,
+ 0x30, 0x00, 0x38, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0xfe, 0x07, 0xfe, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x5b.xbm b/laser-tag software/images/alphabet/ascii0x5b.xbm
new file mode 100755
index 0000000..eda8bba
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x5b.xbm
@@ -0,0 +1,5 @@
+#define ascii0x5b_width 8
+#define ascii0x5b_height 22
+static unsigned char ascii0x5b_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x7c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
+ 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x7c, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x5c.xbm b/laser-tag software/images/alphabet/ascii0x5c.xbm
new file mode 100755
index 0000000..3ad133f
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x5c.xbm
@@ -0,0 +1,7 @@
+#define ascii0x5c_width 9
+#define ascii0x5c_height 22
+static unsigned char ascii0x5c_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0c, 0x00,
+ 0x0c, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00,
+ 0x30, 0x00, 0x30, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0xc0, 0x00,
+ 0xc0, 0x00, 0xc0, 0x00, 0x80, 0x01, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x5d.xbm b/laser-tag software/images/alphabet/ascii0x5d.xbm
new file mode 100755
index 0000000..6d49b7e
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x5d.xbm
@@ -0,0 +1,5 @@
+#define ascii0x5d_width 8
+#define ascii0x5d_height 22
+static unsigned char ascii0x5d_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x7c, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
+ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7c, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x5e.xbm b/laser-tag software/images/alphabet/ascii0x5e.xbm
new file mode 100755
index 0000000..72f764e
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x5e.xbm
@@ -0,0 +1,7 @@
+#define ascii0x5e_width 15
+#define ascii0x5e_height 22
+static unsigned char ascii0x5e_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
+ 0xc0, 0x01, 0x60, 0x03, 0x30, 0x06, 0x10, 0x04, 0x18, 0x0c, 0x0c, 0x18,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x5f.xbm b/laser-tag software/images/alphabet/ascii0x5f.xbm
new file mode 100755
index 0000000..1f8d25b
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x5f.xbm
@@ -0,0 +1,7 @@
+#define ascii0x5f_width 11
+#define ascii0x5f_height 22
+static unsigned char ascii0x5f_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x07, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x60.xbm b/laser-tag software/images/alphabet/ascii0x60.xbm
new file mode 100755
index 0000000..e93d3ab
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x60.xbm
@@ -0,0 +1,7 @@
+#define ascii0x60_width 11
+#define ascii0x60_height 22
+static unsigned char ascii0x60_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x30, 0x00,
+ 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x61.xbm b/laser-tag software/images/alphabet/ascii0x61.xbm
new file mode 100755
index 0000000..38c1f40
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x61.xbm
@@ -0,0 +1,7 @@
+#define ascii0x61_width 11
+#define ascii0x61_height 22
+static unsigned char ascii0x61_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0xfe, 0x00, 0x80, 0x01, 0xf8, 0x01,
+ 0xfe, 0x01, 0x87, 0x01, 0x83, 0x01, 0xc3, 0x01, 0xfe, 0x01, 0xbc, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x62.xbm b/laser-tag software/images/alphabet/ascii0x62.xbm
new file mode 100755
index 0000000..97e23d8
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x62.xbm
@@ -0,0 +1,7 @@
+#define ascii0x62_width 11
+#define ascii0x62_height 22
+static unsigned char ascii0x62_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00,
+ 0x06, 0x00, 0x06, 0x00, 0xf6, 0x00, 0xfe, 0x01, 0x8e, 0x03, 0x06, 0x03,
+ 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x86, 0x01, 0xfe, 0x01, 0xfe, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x63.xbm b/laser-tag software/images/alphabet/ascii0x63.xbm
new file mode 100755
index 0000000..bd9e7e1
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x63.xbm
@@ -0,0 +1,7 @@
+#define ascii0x63_width 9
+#define ascii0x63_height 22
+static unsigned char ascii0x63_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0xfe, 0x00, 0x86, 0x00, 0x03, 0x00,
+ 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x87, 0x00, 0xfe, 0x00, 0x7c, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x64.xbm b/laser-tag software/images/alphabet/ascii0x64.xbm
new file mode 100755
index 0000000..8a15fc6
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x64.xbm
@@ -0,0 +1,7 @@
+#define ascii0x64_width 11
+#define ascii0x64_height 22
+static unsigned char ascii0x64_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01,
+ 0x80, 0x01, 0x80, 0x01, 0xfc, 0x01, 0xfe, 0x01, 0x86, 0x01, 0x83, 0x01,
+ 0x83, 0x01, 0x83, 0x01, 0x83, 0x01, 0xc7, 0x01, 0xfe, 0x01, 0xbc, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x65.xbm b/laser-tag software/images/alphabet/ascii0x65.xbm
new file mode 100755
index 0000000..62296ee
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x65.xbm
@@ -0,0 +1,7 @@
+#define ascii0x65_width 11
+#define ascii0x65_height 22
+static unsigned char ascii0x65_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0xfe, 0x01, 0x86, 0x03, 0x03, 0x03,
+ 0xff, 0x03, 0xff, 0x03, 0x03, 0x00, 0x06, 0x02, 0xfe, 0x03, 0xf8, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x66.xbm b/laser-tag software/images/alphabet/ascii0x66.xbm
new file mode 100755
index 0000000..f525f59
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x66.xbm
@@ -0,0 +1,5 @@
+#define ascii0x66_width 6
+#define ascii0x66_height 22
+static unsigned char ascii0x66_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x06, 0x06, 0x1f, 0x1f, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x67.xbm b/laser-tag software/images/alphabet/ascii0x67.xbm
new file mode 100755
index 0000000..ccdd4d2
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x67.xbm
@@ -0,0 +1,7 @@
+#define ascii0x67_width 11
+#define ascii0x67_height 22
+static unsigned char ascii0x67_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01, 0xfe, 0x01, 0x86, 0x01, 0x83, 0x01,
+ 0x83, 0x01, 0x83, 0x01, 0x83, 0x01, 0xc7, 0x01, 0xfe, 0x01, 0xbc, 0x01,
+ 0x80, 0x01, 0xc0, 0x01, 0xfe, 0x00, 0x7e, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x68.xbm b/laser-tag software/images/alphabet/ascii0x68.xbm
new file mode 100755
index 0000000..e88fb10
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x68.xbm
@@ -0,0 +1,7 @@
+#define ascii0x68_width 11
+#define ascii0x68_height 22
+static unsigned char ascii0x68_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00,
+ 0x06, 0x00, 0x06, 0x00, 0xf6, 0x00, 0xfe, 0x01, 0xce, 0x01, 0x86, 0x01,
+ 0x86, 0x01, 0x86, 0x01, 0x86, 0x01, 0x86, 0x01, 0x86, 0x01, 0x86, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x69.xbm b/laser-tag software/images/alphabet/ascii0x69.xbm
new file mode 100755
index 0000000..75b1e64
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x69.xbm
@@ -0,0 +1,5 @@
+#define ascii0x69_width 5
+#define ascii0x69_height 22
+static unsigned char ascii0x69_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x6a.xbm b/laser-tag software/images/alphabet/ascii0x6a.xbm
new file mode 100755
index 0000000..ec6b1aa
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x6a.xbm
@@ -0,0 +1,5 @@
+#define ascii0x6a_width 7
+#define ascii0x6a_height 22
+static unsigned char ascii0x6a_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x1e, 0x1e, 0x18, 0x18,
+ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0f, 0x0f };
diff --git a/laser-tag software/images/alphabet/ascii0x6b.xbm b/laser-tag software/images/alphabet/ascii0x6b.xbm
new file mode 100755
index 0000000..6b0c0c5
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x6b.xbm
@@ -0,0 +1,7 @@
+#define ascii0x6b_width 11
+#define ascii0x6b_height 22
+static unsigned char ascii0x6b_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00,
+ 0x06, 0x00, 0x06, 0x00, 0x06, 0x03, 0x86, 0x01, 0xc6, 0x00, 0x66, 0x00,
+ 0x36, 0x00, 0x7e, 0x00, 0xe6, 0x00, 0xc6, 0x01, 0x86, 0x03, 0x06, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x6c.xbm b/laser-tag software/images/alphabet/ascii0x6c.xbm
new file mode 100755
index 0000000..24a387d
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x6c.xbm
@@ -0,0 +1,5 @@
+#define ascii0x6c_width 5
+#define ascii0x6c_height 22
+static unsigned char ascii0x6c_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x6d.xbm b/laser-tag software/images/alphabet/ascii0x6d.xbm
new file mode 100755
index 0000000..2285f30
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x6d.xbm
@@ -0,0 +1,9 @@
+#define ascii0x6d_width 18
+#define ascii0x6d_height 22
+static unsigned char ascii0x6d_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xec, 0x79, 0x00, 0xfc, 0xff, 0x00, 0x1c, 0xe7, 0x00, 0x0c, 0xc3, 0x00,
+ 0x0c, 0xc3, 0x00, 0x0c, 0xc3, 0x00, 0x0c, 0xc3, 0x00, 0x0c, 0xc3, 0x00,
+ 0x0c, 0xc3, 0x00, 0x0c, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x6e.xbm b/laser-tag software/images/alphabet/ascii0x6e.xbm
new file mode 100755
index 0000000..3ac6474
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x6e.xbm
@@ -0,0 +1,7 @@
+#define ascii0x6e_width 11
+#define ascii0x6e_height 22
+static unsigned char ascii0x6e_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xf6, 0x00, 0xfe, 0x01, 0xce, 0x01, 0x86, 0x01,
+ 0x86, 0x01, 0x86, 0x01, 0x86, 0x01, 0x86, 0x01, 0x86, 0x01, 0x86, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x6f.xbm b/laser-tag software/images/alphabet/ascii0x6f.xbm
new file mode 100755
index 0000000..f9ac972
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x6f.xbm
@@ -0,0 +1,7 @@
+#define ascii0x6f_width 11
+#define ascii0x6f_height 22
+static unsigned char ascii0x6f_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0xfe, 0x01, 0x86, 0x01, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x86, 0x01, 0xfe, 0x01, 0x78, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x70.xbm b/laser-tag software/images/alphabet/ascii0x70.xbm
new file mode 100755
index 0000000..56c5c7c
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x70.xbm
@@ -0,0 +1,7 @@
+#define ascii0x70_width 11
+#define ascii0x70_height 22
+static unsigned char ascii0x70_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xf6, 0x00, 0xfe, 0x01, 0x8e, 0x03, 0x06, 0x03,
+ 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x86, 0x01, 0xfe, 0x01, 0xfe, 0x00,
+ 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x71.xbm b/laser-tag software/images/alphabet/ascii0x71.xbm
new file mode 100755
index 0000000..ddd13c8
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x71.xbm
@@ -0,0 +1,7 @@
+#define ascii0x71_width 11
+#define ascii0x71_height 22
+static unsigned char ascii0x71_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01, 0xfe, 0x01, 0x86, 0x01, 0x83, 0x01,
+ 0x83, 0x01, 0x83, 0x01, 0x83, 0x01, 0xc7, 0x01, 0xfe, 0x01, 0xbc, 0x01,
+ 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01 };
diff --git a/laser-tag software/images/alphabet/ascii0x72.xbm b/laser-tag software/images/alphabet/ascii0x72.xbm
new file mode 100755
index 0000000..f0b5b01
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x72.xbm
@@ -0,0 +1,5 @@
+#define ascii0x72_width 8
+#define ascii0x72_height 22
+static unsigned char ascii0x72_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0xfe, 0x0e, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x73.xbm b/laser-tag software/images/alphabet/ascii0x73.xbm
new file mode 100755
index 0000000..c64460b
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x73.xbm
@@ -0,0 +1,7 @@
+#define ascii0x73_width 9
+#define ascii0x73_height 22
+static unsigned char ascii0x73_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0xff, 0x00, 0x83, 0x00, 0x03, 0x00,
+ 0x3e, 0x00, 0x78, 0x00, 0xc0, 0x00, 0xc1, 0x00, 0xff, 0x00, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x74.xbm b/laser-tag software/images/alphabet/ascii0x74.xbm
new file mode 100755
index 0000000..3fa3072
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x74.xbm
@@ -0,0 +1,5 @@
+#define ascii0x74_width 7
+#define ascii0x74_height 22
+static unsigned char ascii0x74_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x7f, 0x7f, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x0e, 0x7e, 0x7c, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x75.xbm b/laser-tag software/images/alphabet/ascii0x75.xbm
new file mode 100755
index 0000000..af2b1ac
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x75.xbm
@@ -0,0 +1,7 @@
+#define ascii0x75_width 11
+#define ascii0x75_height 22
+static unsigned char ascii0x75_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x86, 0x01, 0x86, 0x01, 0x86, 0x01, 0x86, 0x01,
+ 0x86, 0x01, 0x86, 0x01, 0x86, 0x01, 0xce, 0x01, 0xfe, 0x01, 0xbc, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x76.xbm b/laser-tag software/images/alphabet/ascii0x76.xbm
new file mode 100755
index 0000000..798ffbc
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x76.xbm
@@ -0,0 +1,7 @@
+#define ascii0x76_width 11
+#define ascii0x76_height 22
+static unsigned char ascii0x76_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x06, 0x03, 0x8c, 0x01, 0x8c, 0x01, 0x8c, 0x01,
+ 0x98, 0x00, 0xd8, 0x00, 0xd8, 0x00, 0x70, 0x00, 0x70, 0x00, 0x20, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x77.xbm b/laser-tag software/images/alphabet/ascii0x77.xbm
new file mode 100755
index 0000000..0e29b46
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x77.xbm
@@ -0,0 +1,7 @@
+#define ascii0x77_width 15
+#define ascii0x77_height 22
+static unsigned char ascii0x77_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x86, 0x30, 0xc6, 0x31, 0xcc, 0x11, 0x4c, 0x19,
+ 0x6c, 0x1b, 0x2c, 0x1a, 0x28, 0x0a, 0x38, 0x0e, 0x38, 0x0e, 0x18, 0x0c,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x78.xbm b/laser-tag software/images/alphabet/ascii0x78.xbm
new file mode 100755
index 0000000..5e45f08
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x78.xbm
@@ -0,0 +1,7 @@
+#define ascii0x78_width 11
+#define ascii0x78_height 22
+static unsigned char ascii0x78_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x8e, 0x03, 0x8c, 0x01, 0xd8, 0x00, 0x70, 0x00,
+ 0x70, 0x00, 0x70, 0x00, 0xf0, 0x00, 0xd8, 0x00, 0x8c, 0x01, 0x8e, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x79.xbm b/laser-tag software/images/alphabet/ascii0x79.xbm
new file mode 100755
index 0000000..91d9b9a
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x79.xbm
@@ -0,0 +1,7 @@
+#define ascii0x79_width 11
+#define ascii0x79_height 22
+static unsigned char ascii0x79_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x06, 0x03, 0x8c, 0x01, 0x8c, 0x01, 0x8c, 0x01,
+ 0xd8, 0x00, 0xd8, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0x20, 0x00,
+ 0x30, 0x00, 0x30, 0x00, 0x18, 0x00, 0x18, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x7a.xbm b/laser-tag software/images/alphabet/ascii0x7a.xbm
new file mode 100755
index 0000000..6105bc9
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x7a.xbm
@@ -0,0 +1,7 @@
+#define ascii0x7a_width 9
+#define ascii0x7a_height 22
+static unsigned char ascii0x7a_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0xc0, 0x00, 0x60, 0x00,
+ 0x30, 0x00, 0x18, 0x00, 0x0c, 0x00, 0x06, 0x00, 0xfe, 0x00, 0xfe, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x7b.xbm b/laser-tag software/images/alphabet/ascii0x7b.xbm
new file mode 100755
index 0000000..c3ef00b
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x7b.xbm
@@ -0,0 +1,7 @@
+#define ascii0x7b_width 11
+#define ascii0x7b_height 22
+static unsigned char ascii0x7b_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0xc0, 0x00,
+ 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x30, 0x00,
+ 0x1c, 0x00, 0x30, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
+ 0x60, 0x00, 0xc0, 0x00, 0x80, 0x03, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x7c.xbm b/laser-tag software/images/alphabet/ascii0x7c.xbm
new file mode 100755
index 0000000..79b6998
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x7c.xbm
@@ -0,0 +1,5 @@
+#define ascii0x7c_width 8
+#define ascii0x7c_height 22
+static unsigned char ascii0x7c_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
+ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x7d.xbm b/laser-tag software/images/alphabet/ascii0x7d.xbm
new file mode 100755
index 0000000..b7c10e6
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x7d.xbm
@@ -0,0 +1,7 @@
+#define ascii0x7d_width 11
+#define ascii0x7d_height 22
+static unsigned char ascii0x7d_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x18, 0x00,
+ 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x60, 0x00,
+ 0xc0, 0x01, 0x60, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00,
+ 0x30, 0x00, 0x18, 0x00, 0x0e, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/alphabet/ascii0x7e.xbm b/laser-tag software/images/alphabet/ascii0x7e.xbm
new file mode 100755
index 0000000..4a35f98
--- /dev/null
+++ b/laser-tag software/images/alphabet/ascii0x7e.xbm
@@ -0,0 +1,7 @@
+#define ascii0x7e_width 15
+#define ascii0x7e_height 22
+static unsigned char ascii0x7e_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x78, 0x18,
+ 0x9c, 0x1c, 0x0c, 0x0f, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/laser-tag software/images/create_images_from_font.py b/laser-tag software/images/create_images_from_font.py
new file mode 100644
index 0000000..36d6522
--- /dev/null
+++ b/laser-tag software/images/create_images_from_font.py
@@ -0,0 +1,124 @@
+
+from gimpfu import gimp
+from gimpfu import pdb
+
+from gimpfu import main
+from gimpfu import register
+
+from gimpfu import INDEXED
+from gimpfu import PIXELS
+from gimpfu import PF_FONT
+from gimpfu import PF_SPINNER
+from gimpfu import PF_STRING
+
+from os.path import join
+
+def create_base_alphabet(font, font_size, directory_base):
+ suffix = '.xbm'
+ for c_gen, c_prefix in ( (map(chr, xrange(ord('A'), ord('Z')+1)), 'upper'),
+ (map(chr, xrange(ord('a'), ord('z')+1)), 'lower'),
+ (map(chr, xrange(ord('0'), ord('9')+1)), 'number'), ):
+ for c in c_gen:
+ prefix = '%s%c' % (c_prefix, c)
+ filename = '%s%s' % (prefix, suffix)
+
+ image = gimp.Image(1, 1, INDEXED)
+ image.disable_undo()
+
+ # necessary ?
+ pdb.gimp_context_push()
+
+ gimp.set_foreground( (0.0, 0.0, 0.0) )
+
+ x = y = border = 0
+ layer = pdb.gimp_text_fontname(image, None, x, y, c, border, True, font_size, PIXELS, font)
+
+ image.resize(layer.width, layer.height, 0, 0)
+
+ filepath = join(directory_base, filename)
+ pdb.gimp_file_save(image, layer, filepath, '?')
+ #pdb.file_xbm_save(RUN_NONINTERACTIVE, image, None, filename, filepath, '', 0, 0, 0)
+ # find out how to properly call file_xbm_save so we can avoid this crap
+ with open(filepath, 'r+b') as file_h:
+ lines = file_h.readlines()
+ file_h.seek(0)
+ for line in lines:
+ if '_' in line:
+ if '_hot' not in line:
+ file_h.write(line.replace('_', prefix+'_'))
+ else:
+ file_h.write(line)
+ file_h.truncate()
+
+ pdb.gimp_image_delete(image)
+
+ # necessary ?
+ pdb.gimp_context_pop()
+
+import string
+def create_base_alphabet(font, font_size, directory_base):
+ suffix = '.xbm'
+ for c in string.printable:
+ # Only need the first guard to prevent \x0b and \x0c, but meh
+ if not ' ' <= c <= '\x7f':
+ continue
+ prefix = 'ascii0x%02x' % ord(c)
+ filename = '%s%s' % (prefix, suffix)
+
+ image = gimp.Image(1, 1, INDEXED)
+ image.disable_undo()
+
+ # necessary ?
+ pdb.gimp_context_push()
+
+ gimp.set_foreground( (0.0, 0.0, 0.0) )
+
+ x = y = border = 0
+ layer = pdb.gimp_text_fontname(image, None, x, y, c, border, True, font_size, PIXELS, font)
+
+ if layer is None:
+ print 'Failed to handle %r' % c
+
+ else:
+ image.resize(layer.width, layer.height, 0, 0)
+
+ filepath = join(directory_base, filename)
+ pdb.gimp_file_save(image, layer, filepath, '?')
+ #pdb.file_xbm_save(RUN_NONINTERACTIVE, image, None, filename, filepath, '', 0, 0, 0)
+ # find out how to properly call file_xbm_save so we can avoid this section
+ with open(filepath, 'r+b') as file_h:
+ lines = file_h.readlines()
+ file_h.seek(0)
+ for line in lines:
+ if '_' in line:
+ if '_hot' not in line:
+ file_h.write(line.replace('_', prefix+'_'))
+ else:
+ file_h.write(line)
+ file_h.truncate()
+
+ pdb.gimp_image_delete(image)
+
+ # necessary ?
+ pdb.gimp_context_pop()
+
+register(
+ "create_base_alphabet",
+ "Create the base alphabet XBMs for a given font/size",
+ "Create the base alphabet XBMs for a given font/size",
+ "WanderingGlitch",
+ "WanderingGlitch",
+ "2016",
+ "Create base alphabet",
+ "",
+ [
+ (PF_FONT, "font", "Font face", "Ariel"),
+ (PF_SPINNER, "font_size", "Font Size", 18, (10, 100, 1)),
+ (PF_STRING, "string", "Directory base", ""),
+ ],
+ [],
+ create_base_alphabet,
+)
+
+main()
+
diff --git a/laser-tag software/main.c b/laser-tag software/main.c
index d861d5e..de48d95 100755
--- a/laser-tag software/main.c
+++ b/laser-tag software/main.c
@@ -30,6 +30,7 @@
*/
#include "epaper.h"
+#include "text.h"
#include "fsl_clock_manager.h"
#include "fsl_cmp_driver.h"
#include "fsl_dac_driver.h"
diff --git a/laser-tag software/text.c b/laser-tag software/text.c
new file mode 100644
index 0000000..6637c62
--- /dev/null
+++ b/laser-tag software/text.c
@@ -0,0 +1,780 @@
+
+#include "text.h"
+
+#define LINES_PER_DISPLAY (128)
+#define BYTES_PER_SCAN (128 / 4 / 2)
+#define BYTES_PER_LINE (232 / 8)
+
+
+#include "images/alphabet/ascii0x20.xbm"
+#include "images/alphabet/ascii0x21.xbm"
+#include "images/alphabet/ascii0x22.xbm"
+#include "images/alphabet/ascii0x23.xbm"
+#include "images/alphabet/ascii0x24.xbm"
+#include "images/alphabet/ascii0x25.xbm"
+#include "images/alphabet/ascii0x26.xbm"
+#include "images/alphabet/ascii0x27.xbm"
+#include "images/alphabet/ascii0x28.xbm"
+#include "images/alphabet/ascii0x29.xbm"
+#include "images/alphabet/ascii0x2a.xbm"
+#include "images/alphabet/ascii0x2b.xbm"
+#include "images/alphabet/ascii0x2c.xbm"
+#include "images/alphabet/ascii0x2d.xbm"
+#include "images/alphabet/ascii0x2e.xbm"
+#include "images/alphabet/ascii0x2f.xbm"
+#include "images/alphabet/ascii0x30.xbm"
+#include "images/alphabet/ascii0x31.xbm"
+#include "images/alphabet/ascii0x32.xbm"
+#include "images/alphabet/ascii0x33.xbm"
+#include "images/alphabet/ascii0x34.xbm"
+#include "images/alphabet/ascii0x35.xbm"
+#include "images/alphabet/ascii0x36.xbm"
+#include "images/alphabet/ascii0x37.xbm"
+#include "images/alphabet/ascii0x38.xbm"
+#include "images/alphabet/ascii0x39.xbm"
+#include "images/alphabet/ascii0x3a.xbm"
+#include "images/alphabet/ascii0x3b.xbm"
+#include "images/alphabet/ascii0x3c.xbm"
+#include "images/alphabet/ascii0x3d.xbm"
+#include "images/alphabet/ascii0x3e.xbm"
+#include "images/alphabet/ascii0x3f.xbm"
+#include "images/alphabet/ascii0x40.xbm"
+#include "images/alphabet/ascii0x41.xbm"
+#include "images/alphabet/ascii0x42.xbm"
+#include "images/alphabet/ascii0x43.xbm"
+#include "images/alphabet/ascii0x44.xbm"
+#include "images/alphabet/ascii0x45.xbm"
+#include "images/alphabet/ascii0x46.xbm"
+#include "images/alphabet/ascii0x47.xbm"
+#include "images/alphabet/ascii0x48.xbm"
+#include "images/alphabet/ascii0x49.xbm"
+#include "images/alphabet/ascii0x4a.xbm"
+#include "images/alphabet/ascii0x4b.xbm"
+#include "images/alphabet/ascii0x4c.xbm"
+#include "images/alphabet/ascii0x4d.xbm"
+#include "images/alphabet/ascii0x4e.xbm"
+#include "images/alphabet/ascii0x4f.xbm"
+#include "images/alphabet/ascii0x50.xbm"
+#include "images/alphabet/ascii0x51.xbm"
+#include "images/alphabet/ascii0x52.xbm"
+#include "images/alphabet/ascii0x53.xbm"
+#include "images/alphabet/ascii0x54.xbm"
+#include "images/alphabet/ascii0x55.xbm"
+#include "images/alphabet/ascii0x56.xbm"
+#include "images/alphabet/ascii0x57.xbm"
+#include "images/alphabet/ascii0x58.xbm"
+#include "images/alphabet/ascii0x59.xbm"
+#include "images/alphabet/ascii0x5a.xbm"
+#include "images/alphabet/ascii0x5b.xbm"
+#include "images/alphabet/ascii0x5c.xbm"
+#include "images/alphabet/ascii0x5d.xbm"
+#include "images/alphabet/ascii0x5e.xbm"
+#include "images/alphabet/ascii0x5f.xbm"
+#include "images/alphabet/ascii0x60.xbm"
+#include "images/alphabet/ascii0x61.xbm"
+#include "images/alphabet/ascii0x62.xbm"
+#include "images/alphabet/ascii0x63.xbm"
+#include "images/alphabet/ascii0x64.xbm"
+#include "images/alphabet/ascii0x65.xbm"
+#include "images/alphabet/ascii0x66.xbm"
+#include "images/alphabet/ascii0x67.xbm"
+#include "images/alphabet/ascii0x68.xbm"
+#include "images/alphabet/ascii0x69.xbm"
+#include "images/alphabet/ascii0x6a.xbm"
+#include "images/alphabet/ascii0x6b.xbm"
+#include "images/alphabet/ascii0x6c.xbm"
+#include "images/alphabet/ascii0x6d.xbm"
+#include "images/alphabet/ascii0x6e.xbm"
+#include "images/alphabet/ascii0x6f.xbm"
+#include "images/alphabet/ascii0x70.xbm"
+#include "images/alphabet/ascii0x71.xbm"
+#include "images/alphabet/ascii0x72.xbm"
+#include "images/alphabet/ascii0x73.xbm"
+#include "images/alphabet/ascii0x74.xbm"
+#include "images/alphabet/ascii0x75.xbm"
+#include "images/alphabet/ascii0x76.xbm"
+#include "images/alphabet/ascii0x77.xbm"
+#include "images/alphabet/ascii0x78.xbm"
+#include "images/alphabet/ascii0x79.xbm"
+#include "images/alphabet/ascii0x7a.xbm"
+#include "images/alphabet/ascii0x7b.xbm"
+#include "images/alphabet/ascii0x7c.xbm"
+#include "images/alphabet/ascii0x7d.xbm"
+#include "images/alphabet/ascii0x7e.xbm"
+
+#if (ascii0x41_width > EPAPER_WIDTH) || (ascii0x41_width == 0)
+#error "Invalid character width"
+#endif
+#if (ascii0x41_height > EPAPER_HEIGHT) || (ascii0x41_height == 0)
+#error "Invalid character height"
+#endif
+
+#if ascii0x21_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x21 is thus invalid"
+#endif
+#if ascii0x22_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x22 is thus invalid"
+#endif
+#if ascii0x23_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x23 is thus invalid"
+#endif
+#if ascii0x24_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x24 is thus invalid"
+#endif
+#if ascii0x25_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x25 is thus invalid"
+#endif
+#if ascii0x26_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x26 is thus invalid"
+#endif
+#if ascii0x27_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x27 is thus invalid"
+#endif
+#if ascii0x28_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x28 is thus invalid"
+#endif
+#if ascii0x29_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x29 is thus invalid"
+#endif
+#if ascii0x2a_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x2a is thus invalid"
+#endif
+#if ascii0x2b_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x2b is thus invalid"
+#endif
+#if ascii0x2c_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x2c is thus invalid"
+#endif
+#if ascii0x2d_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x2d is thus invalid"
+#endif
+#if ascii0x2e_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x2e is thus invalid"
+#endif
+#if ascii0x2f_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x2f is thus invalid"
+#endif
+#if ascii0x30_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x30 is thus invalid"
+#endif
+#if ascii0x31_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x31 is thus invalid"
+#endif
+#if ascii0x32_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x32 is thus invalid"
+#endif
+#if ascii0x33_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x33 is thus invalid"
+#endif
+#if ascii0x34_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x34 is thus invalid"
+#endif
+#if ascii0x35_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x35 is thus invalid"
+#endif
+#if ascii0x36_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x36 is thus invalid"
+#endif
+#if ascii0x37_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x37 is thus invalid"
+#endif
+#if ascii0x38_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x38 is thus invalid"
+#endif
+#if ascii0x39_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x39 is thus invalid"
+#endif
+#if ascii0x3a_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x3a is thus invalid"
+#endif
+#if ascii0x3b_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x3b is thus invalid"
+#endif
+#if ascii0x3c_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x3c is thus invalid"
+#endif
+#if ascii0x3d_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x3d is thus invalid"
+#endif
+#if ascii0x3e_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x3e is thus invalid"
+#endif
+#if ascii0x3f_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x3f is thus invalid"
+#endif
+#if ascii0x40_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x40 is thus invalid"
+#endif
+#if ascii0x41_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x41 is thus invalid"
+#endif
+#if ascii0x42_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x42 is thus invalid"
+#endif
+#if ascii0x43_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x43 is thus invalid"
+#endif
+#if ascii0x44_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x44 is thus invalid"
+#endif
+#if ascii0x45_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x45 is thus invalid"
+#endif
+#if ascii0x46_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x46 is thus invalid"
+#endif
+#if ascii0x47_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x47 is thus invalid"
+#endif
+#if ascii0x48_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x48 is thus invalid"
+#endif
+#if ascii0x49_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x49 is thus invalid"
+#endif
+#if ascii0x4a_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x4a is thus invalid"
+#endif
+#if ascii0x4b_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x4b is thus invalid"
+#endif
+#if ascii0x4c_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x4c is thus invalid"
+#endif
+#if ascii0x4d_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x4d is thus invalid"
+#endif
+#if ascii0x4e_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x4e is thus invalid"
+#endif
+#if ascii0x4f_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x4f is thus invalid"
+#endif
+#if ascii0x50_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x50 is thus invalid"
+#endif
+#if ascii0x51_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x51 is thus invalid"
+#endif
+#if ascii0x52_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x52 is thus invalid"
+#endif
+#if ascii0x53_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x53 is thus invalid"
+#endif
+#if ascii0x54_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x54 is thus invalid"
+#endif
+#if ascii0x55_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x55 is thus invalid"
+#endif
+#if ascii0x56_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x56 is thus invalid"
+#endif
+#if ascii0x57_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x57 is thus invalid"
+#endif
+#if ascii0x58_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x58 is thus invalid"
+#endif
+#if ascii0x59_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x59 is thus invalid"
+#endif
+#if ascii0x5a_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x5a is thus invalid"
+#endif
+#if ascii0x5b_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x5b is thus invalid"
+#endif
+#if ascii0x5c_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x5c is thus invalid"
+#endif
+#if ascii0x5d_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x5d is thus invalid"
+#endif
+#if ascii0x5e_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x5e is thus invalid"
+#endif
+#if ascii0x5f_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x5f is thus invalid"
+#endif
+#if ascii0x60_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x60 is thus invalid"
+#endif
+#if ascii0x61_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x61 is thus invalid"
+#endif
+#if ascii0x62_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x62 is thus invalid"
+#endif
+#if ascii0x63_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x63 is thus invalid"
+#endif
+#if ascii0x64_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x64 is thus invalid"
+#endif
+#if ascii0x65_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x65 is thus invalid"
+#endif
+#if ascii0x66_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x66 is thus invalid"
+#endif
+#if ascii0x67_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x67 is thus invalid"
+#endif
+#if ascii0x68_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x68 is thus invalid"
+#endif
+#if ascii0x69_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x69 is thus invalid"
+#endif
+#if ascii0x6a_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x6a is thus invalid"
+#endif
+#if ascii0x6b_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x6b is thus invalid"
+#endif
+#if ascii0x6c_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x6c is thus invalid"
+#endif
+#if ascii0x6d_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x6d is thus invalid"
+#endif
+#if ascii0x6e_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x6e is thus invalid"
+#endif
+#if ascii0x6f_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x6f is thus invalid"
+#endif
+#if ascii0x70_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x70 is thus invalid"
+#endif
+#if ascii0x71_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x71 is thus invalid"
+#endif
+#if ascii0x72_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x72 is thus invalid"
+#endif
+#if ascii0x73_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x73 is thus invalid"
+#endif
+#if ascii0x74_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x74 is thus invalid"
+#endif
+#if ascii0x75_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x75 is thus invalid"
+#endif
+#if ascii0x76_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x76 is thus invalid"
+#endif
+#if ascii0x77_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x77 is thus invalid"
+#endif
+#if ascii0x78_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x78 is thus invalid"
+#endif
+#if ascii0x79_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x79 is thus invalid"
+#endif
+#if ascii0x7a_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x7a is thus invalid"
+#endif
+#if ascii0x7b_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x7b is thus invalid"
+#endif
+#if ascii0x7c_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x7c is thus invalid"
+#endif
+#if ascii0x7d_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x7d is thus invalid"
+#endif
+#if ascii0x7e_height != ascii0x41_height
+#error "Only fixed-height fonts are currently supported, ascii0x7e is thus invalid"
+#endif
+
+#define CHARACTER_HEIGHT ascii0x41_height
+#define HEIGHT_SPACING 0
+#define WIDTH_SPACING 4
+
+/* Create a space, based on an 'i' */
+//#define ascii0x20_width ascii0x69_width
+//static const uint8_t ascii0x20_bits[ascii0x20_width] = { 0 };
+
+static const uint8_t *alphabet_bits[] = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ ascii0x20_bits,
+ ascii0x21_bits,
+ ascii0x22_bits,
+ ascii0x23_bits,
+ ascii0x24_bits,
+ ascii0x25_bits,
+ ascii0x26_bits,
+ ascii0x27_bits,
+ ascii0x28_bits,
+ ascii0x29_bits,
+ ascii0x2a_bits,
+ ascii0x2b_bits,
+ ascii0x2c_bits,
+ ascii0x2d_bits,
+ ascii0x2e_bits,
+ ascii0x2f_bits,
+ ascii0x30_bits,
+ ascii0x31_bits,
+ ascii0x32_bits,
+ ascii0x33_bits,
+ ascii0x34_bits,
+ ascii0x35_bits,
+ ascii0x36_bits,
+ ascii0x37_bits,
+ ascii0x38_bits,
+ ascii0x39_bits,
+ ascii0x3a_bits,
+ ascii0x3b_bits,
+ ascii0x3c_bits,
+ ascii0x3d_bits,
+ ascii0x3e_bits,
+ ascii0x3f_bits,
+ ascii0x40_bits,
+ ascii0x41_bits,
+ ascii0x42_bits,
+ ascii0x43_bits,
+ ascii0x44_bits,
+ ascii0x45_bits,
+ ascii0x46_bits,
+ ascii0x47_bits,
+ ascii0x48_bits,
+ ascii0x49_bits,
+ ascii0x4a_bits,
+ ascii0x4b_bits,
+ ascii0x4c_bits,
+ ascii0x4d_bits,
+ ascii0x4e_bits,
+ ascii0x4f_bits,
+ ascii0x50_bits,
+ ascii0x51_bits,
+ ascii0x52_bits,
+ ascii0x53_bits,
+ ascii0x54_bits,
+ ascii0x55_bits,
+ ascii0x56_bits,
+ ascii0x57_bits,
+ ascii0x58_bits,
+ ascii0x59_bits,
+ ascii0x5a_bits,
+ ascii0x5b_bits,
+ ascii0x5c_bits,
+ ascii0x5d_bits,
+ ascii0x5e_bits,
+ ascii0x5f_bits,
+ ascii0x60_bits,
+ ascii0x61_bits,
+ ascii0x62_bits,
+ ascii0x63_bits,
+ ascii0x64_bits,
+ ascii0x65_bits,
+ ascii0x66_bits,
+ ascii0x67_bits,
+ ascii0x68_bits,
+ ascii0x69_bits,
+ ascii0x6a_bits,
+ ascii0x6b_bits,
+ ascii0x6c_bits,
+ ascii0x6d_bits,
+ ascii0x6e_bits,
+ ascii0x6f_bits,
+ ascii0x70_bits,
+ ascii0x71_bits,
+ ascii0x72_bits,
+ ascii0x73_bits,
+ ascii0x74_bits,
+ ascii0x75_bits,
+ ascii0x76_bits,
+ ascii0x77_bits,
+ ascii0x78_bits,
+ ascii0x79_bits,
+ ascii0x7a_bits,
+ ascii0x7b_bits,
+ ascii0x7c_bits,
+ ascii0x7d_bits,
+ ascii0x7e_bits,
+ NULL,
+};
+
+#define ALIGN_WIDTH(x) ((x+7)/8)
+#define GET_BLOCK2(x) (x/8)
+#define GET_BLOCK(x) ((x)>>3)
+static const uint8_t alphabet_bit_width[] = {
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ ascii0x20_width,
+ ascii0x21_width,
+ ascii0x22_width,
+ ascii0x23_width,
+ ascii0x24_width,
+ ascii0x25_width,
+ ascii0x26_width,
+ ascii0x27_width,
+ ascii0x28_width,
+ ascii0x29_width,
+ ascii0x2a_width,
+ ascii0x2b_width,
+ ascii0x2c_width,
+ ascii0x2d_width,
+ ascii0x2e_width,
+ ascii0x2f_width,
+ ascii0x30_width,
+ ascii0x31_width,
+ ascii0x32_width,
+ ascii0x33_width,
+ ascii0x34_width,
+ ascii0x35_width,
+ ascii0x36_width,
+ ascii0x37_width,
+ ascii0x38_width,
+ ascii0x39_width,
+ ascii0x3a_width,
+ ascii0x3b_width,
+ ascii0x3c_width,
+ ascii0x3d_width,
+ ascii0x3e_width,
+ ascii0x3f_width,
+ ascii0x40_width,
+ ascii0x41_width,
+ ascii0x42_width,
+ ascii0x43_width,
+ ascii0x44_width,
+ ascii0x45_width,
+ ascii0x46_width,
+ ascii0x47_width,
+ ascii0x48_width,
+ ascii0x49_width,
+ ascii0x4a_width,
+ ascii0x4b_width,
+ ascii0x4c_width,
+ ascii0x4d_width,
+ ascii0x4e_width,
+ ascii0x4f_width,
+ ascii0x50_width,
+ ascii0x51_width,
+ ascii0x52_width,
+ ascii0x53_width,
+ ascii0x54_width,
+ ascii0x55_width,
+ ascii0x56_width,
+ ascii0x57_width,
+ ascii0x58_width,
+ ascii0x59_width,
+ ascii0x5a_width,
+ ascii0x5b_width,
+ ascii0x5c_width,
+ ascii0x5d_width,
+ ascii0x5e_width,
+ ascii0x5f_width,
+ ascii0x60_width,
+ ascii0x61_width,
+ ascii0x62_width,
+ ascii0x63_width,
+ ascii0x64_width,
+ ascii0x65_width,
+ ascii0x66_width,
+ ascii0x67_width,
+ ascii0x68_width,
+ ascii0x69_width,
+ ascii0x6a_width,
+ ascii0x6b_width,
+ ascii0x6c_width,
+ ascii0x6d_width,
+ ascii0x6e_width,
+ ascii0x6f_width,
+ ascii0x70_width,
+ ascii0x71_width,
+ ascii0x72_width,
+ ascii0x73_width,
+ ascii0x74_width,
+ ascii0x75_width,
+ ascii0x76_width,
+ ascii0x77_width,
+ ascii0x78_width,
+ ascii0x79_width,
+ ascii0x7a_width,
+ ascii0x7b_width,
+ ascii0x7c_width,
+ ascii0x7d_width,
+ ascii0x7e_width,
+ 0,
+};
+
+#define alphabet_byte_width(x) ALIGN_WIDTH(alphabet_bit_width[x])
+
+/* a truthy result indicates that *pimage is safe to use */
+/* otherwise, pimage must be reinitialized */
+uint8_t text_to_image(const char* ptext, uint8_t length, uint8_t *pimage, uint8_t offset_x, uint8_t offset_y, uint8_t upper_x, uint8_t upper_y) {
+ /* Check input properly when you're thinking clearly */
+ if (upper_x > EPAPER_WIDTH) {
+ printf("1\n");
+ return 0;
+ }
+ if (upper_y > EPAPER_HEIGHT) {
+ printf("2\n");
+ return 0;
+ }
+
+ if ((uint16_t)offset_x + ascii0x41_width > upper_x) {
+ printf("3\n");
+ return 0;
+ }
+ if ((uint16_t)offset_y + CHARACTER_HEIGHT + HEIGHT_SPACING > upper_y) {
+ printf("4\n");
+ return 0;
+ }
+
+ if (length == 0) {
+ return 0;
+ }
+
+ // Easier to let the compiler handle offsets
+ uint8_t (*ppimage)[EPAPER_HEIGHT][ALIGN_WIDTH(EPAPER_WIDTH)] = (void*)pimage;
+
+ /* Now replace the image */
+ {
+ printf("performing a write\n");
+ uint32_t x = offset_x;
+ uint32_t y = offset_y;
+ uint8_t last_line = 0;
+ uint8_t temp = 0;
+ // Block == byte that contains the 8 values
+ // Cell == bit within a block
+ uint8_t image_cell, char_cell;
+ uint32_t image_block;
+ uint32_t char_block;
+ for (uint32_t i = 0; i < length; i++) {
+ uint8_t c = ptext[i];
+
+ if (c == 0) {
+ length = i;
+ break;
+ }
+ if ((uint8_t)c > 0x80) {
+ printf("Char violation %02x\n", c);
+ return 0;
+ }
+
+
+ const uint8_t (*pchar)[CHARACTER_HEIGHT][alphabet_byte_width(c)] = (void*)alphabet_bits[c];
+
+ // Wrap to next line
+ if (x + alphabet_bit_width[c] >= upper_x) {
+ // Last line but we have more data, can't fulfill
+ if (last_line) {
+ printf("More writing requested but already hit end\n");
+ return 0;
+ }
+
+ x = offset_x;
+ y += CHARACTER_HEIGHT + HEIGHT_SPACING;
+ }
+
+ if (y >= upper_y) {
+ printf("Bounds violation y WITHIN REPLACER\n");
+ return 0;
+ }
+
+ if (y + CHARACTER_HEIGHT >= upper_y) {
+ printf("Bounds violation y WITHIN REPLACER\n");
+ return 0;
+ }
+
+ if (y + CHARACTER_HEIGHT + HEIGHT_SPACING >= upper_y) {
+ last_line = 1;
+ }
+
+ printf("writing %c (x=%04d) starting at x=%04d, y=%04d\n", c, alphabet_bit_width[c], x, y);
+ for (uint8_t yi = 0; yi < CHARACTER_HEIGHT; yi++) {
+ if (x + alphabet_bit_width[c] >= upper_x) {
+ printf("Bounds violation x+abw WITHIN REPLACER\n");
+ return 0;
+ }
+ for (uint8_t xi = 0; xi < alphabet_bit_width[c]; xi++) {
+ image_block = GET_BLOCK(x + xi);
+ image_cell = ((x + xi) % 8);
+ char_block = GET_BLOCK(xi);
+ char_cell = (xi % 8);
+ printf(" x=%02d, xi=%02d ib=%04d, ic=%04d cb=%04d, cc=%04d\n", x, xi, image_block, image_cell, char_block, char_cell);
+
+ temp = (*ppimage)[y+yi][image_block];
+ temp &= ((uint8_t)-1) ^ (1<<image_cell);
+ temp |= (((*pchar)[yi][char_block] >> char_cell) & 1) << image_cell;
+
+ (*ppimage)[y+yi][image_block] = temp;
+ }
+ }
+
+ x += alphabet_bit_width[c];
+ x += WIDTH_SPACING;
+ }
+ }
+
+ return 1;
+}
+
diff --git a/laser-tag software/text.h b/laser-tag software/text.h
new file mode 100644
index 0000000..a1363d1
--- /dev/null
+++ b/laser-tag software/text.h
@@ -0,0 +1,19 @@
+#ifndef _TEXT_H_
+#define _TEXT_H_
+
+#include <stdint.h>
+
+#define EPAPER_WIDTH 232
+#define EPAPER_HEIGHT 128
+
+#ifndef GLITCHDEBUG
+#define printf(...)
+#endif
+
+#ifndef NULL
+#define NULL ((void*)0)
+#endif
+
+uint8_t text_to_image(const char* ptext, uint8_t length, uint8_t *pimage, uint8_t offset_x, uint8_t offset_y, uint8_t upper_x, uint8_t upper_y);
+
+#endif