initial support for a display module, incomplete
[dcpu16] / chargen-4x8.h
diff --git a/chargen-4x8.h b/chargen-4x8.h
new file mode 100644 (file)
index 0000000..f29cb04
--- /dev/null
@@ -0,0 +1,276 @@
+#ifndef CHARGEN_4X8_H_KMZC3DOG
+#define CHARGEN_4X8_H_KMZC3DOG
+
+/* 4x8 pixel default font map */
+
+const char chargen_4x8_glyphs[][4] = {
+    /* 00 */
+    { 0x10, 0x10, 0xf0, 0x00 },
+    /* 01 */
+    { 0x10, 0x10, 0xf0, 0x10 },
+    /* 02 */
+    { 0x10, 0x10, 0x1f, 0x10 },
+    /* 03 */
+    { 0x10, 0x10, 0xff, 0x10 },
+    /* 04 */
+    { 0x10, 0x10, 0x10, 0x10 },
+    /* 05 */
+    { 0x10, 0xff, 0x10, 0x10 },
+    /* 06 */
+    { 0x00, 0xff, 0x28, 0x28 },
+    /* 07 */
+    { 0xff, 0x00, 0xff, 0x10 },
+    /* 08 */
+    { 0xf8, 0x08, 0xe8, 0x28 },
+    /* 09 */
+    { 0x3f, 0x20, 0x2f, 0x28 },
+    /* 0a */
+    { 0xe8, 0x08, 0xe8, 0x28 },
+    /* 0b */
+    { 0x2f, 0x20, 0x2f, 0x20 },
+    /* 0c */
+    { 0xff, 0x00, 0xef, 0x2f },
+    /* 0d */
+    { 0x2f, 0x2f, 0x2f, 0x2f },
+    /* 0e */
+    { 0xef, 0x00, 0xef, 0xe8 },
+    /* 0f */
+    { 0x28, 0xe8, 0x28, 0x28 },
+    /* 10 */
+    { 0xf0, 0x10, 0xf0, 0x10 },
+    /* 11 */
+    { 0x28, 0x2f, 0x28, 0x28 },
+    /* 12 */
+    { 0x1f, 0x10, 0x1f, 0x10 },
+    /* 13 */
+    { 0xf0, 0x10, 0xf0, 0x10 },
+    /* 14 */
+    { 0x00, 0xf8, 0x28, 0x28 },
+    /* 15 */
+    { 0x00, 0x3f, 0x28, 0x28 },
+    /* 16 */
+    { 0x1f, 0x10, 0x1f, 0x10 },
+    /* 17 */
+    { 0xff, 0x10, 0xff, 0x10 },
+    /* 18 */
+    { 0x28, 0xff, 0x28, 0x28 },
+    /* 19 */
+    { 0x10, 0xf0, 0x00, 0x00 },
+    /* 1a */
+    { 0x00, 0x1f, 0x10, 0x10 },
+    /* 1b */
+    { 0xff, 0xff, 0xff, 0xff },
+    /* 1c */
+    { 0x0f, 0x0f, 0x0f, 0x0f },
+    /* 1d */
+    { 0xff, 0xff, 0x00, 0x00 },
+    /* 1e */
+    { 0x00, 0x00, 0xff ,0xff },
+    /* 1f */
+    { 0xf0, 0xf0, 0xf0, 0xf0 },
+
+    /* --- */
+
+    /* 20 ' ' */
+    { 0x00, 0x00, 0x00, 0x00 },
+    /* 21 '!' */
+    { 0x00, 0xfa, 0x00, 0x00 },
+    /* 22 '"' "*/
+    { 0xb0, 0x00, 0xb0, 0x00 },
+    /* 23 '#' */
+    { 0x7b, 0x28, 0x7b, 0x00 },
+    /* 24 '$' */
+    { 0x64, 0xd6, 0x4b, 0x00 },
+    /* 25 '%' */
+    { 0x86, 0x38, 0xb2, 0x00 },
+    /* 26 '&' */
+    { 0x6b, 0x94, 0x6e, 0x0a },
+    /* 27 ''' */
+    { 0x00, 0x40, 0x80, 0x00 },
+    /* 28 '(' */
+    { 0x38, 0x44, 0x82, 0x00 },
+    /* 29 ')' */
+    { 0x82, 0x44, 0x38, 0x00 },
+    /* 2a '*' */
+    { 0x54, 0x38, 0x54, 0x00 },
+    /* 2b '+' */
+    { 0x10, 0x7c, 0x10, 0x00 },
+    /* 2c ',' */
+    { 0x02, 0x04, 0x00, 0x00 },
+    /* 2d '-' */
+    { 0x10, 0x10, 0x10, 0x00 },
+    /* 2e '.' */
+    { 0x00, 0x02, 0x00, 0x00 },
+    /* 2f '/' */
+    { 0x06, 0x38, 0xc0, 0x00 },
+    /* 30 '0' */
+    { 0x7c, 0x82, 0x7c, 0x00 },
+    /* 31 '1' */
+    { 0x42, 0xfe, 0x02, 0x00 },
+    /* 32 '2' */
+    { 0x46, 0x9a, 0x62, 0x00 },
+    /* 33 '3' */
+    { 0x44, 0x92, 0x6c, 0x00 },
+    /* 34 '4' */
+    { 0xf0, 0x10, 0xfe, 0x00 },
+    /* 35 '5' */
+    { 0xe4, 0xa2, 0x9c, 0x00 },
+    /* 36 '6' */
+    { 0x7c, 0x92, 0x4c, 0x00 },
+    /* 37 '7' */
+    { 0x86, 0x98, 0xe0, 0x00 },
+    /* 38 '8' */
+    { 0x6c, 0x92, 0x6c, 0x00 },
+    /* 39 '9' */
+    { 0x64, 0x92, 0x7c, 0x00 },
+    /* 3a ':' */
+    { 0x00, 0x24, 0x00, 0x00 },
+    /* 3b ';' */
+    { 0x02, 0x24, 0x00, 0x00 },
+    /* 3c '<' */
+    { 0x10, 0x28, 0x44, 0x82 },
+    /* 3d '=' */
+    { 0x28, 0x28, 0x28, 0x00 },
+    /* 3e '>' */
+    { 0x82, 0x44, 0x28, 0x10 },
+    /* 3f '?' */
+    { 0x40, 0x9a, 0x60, 0x00 },
+
+    /* --- */
+
+    /* 40 '@' */
+    { 0x7c, 0x9a, 0x7a, 0x00 },
+    /* 41 'A' */
+    { 0x7e, 0x90, 0x7e, 0x00 },
+    /* 42 'B' */
+    { 0xfe, 0x92, 0x6c, 0x00 },
+    /* 43 'C' */
+    { 0x7c, 0x82, 0x44, 0x00 },
+    /* 44 'D' */
+    { 0xfe, 0x82, 0x7c, 0x00 },
+    /* 45 'E' */
+    { 0xfe, 0x92, 0x82, 0x00 },
+    /* 46 'F' */
+    { 0xfe, 0x90, 0x80, 0x00 },
+    /* 47 'G' */
+    { 0x7c, 0x92, 0x5c, 0x00 },
+    /* 48 'H' */
+    { 0xfe, 0x10, 0xfe, 0x00 },
+    /* 49 'I' */
+    { 0x82, 0xfe, 0x82, 0x00 },
+    /* 4a 'J' */
+    { 0x04, 0x02, 0xfc, 0x00 },
+    /* 4b 'K' */
+    { 0xfe, 0x30, 0xce, 0x00 },
+    /* 4c 'L' */
+    { 0xfe, 0x02, 0x02, 0x00 },
+    /* 4d 'M' */
+    { 0xfe, 0x60, 0xfe, 0x00 },
+    /* 4e 'N' */
+    { 0xfe, 0x80, 0x8e, 0x00 },
+    /* 4f 'O' */
+    { 0x7c, 0x82, 0x7c, 0x00 },
+    /* 50 'P' */
+    { 0xfe, 0x90, 0x60, 0x00 },
+    /* 51 'Q' */
+    { 0x7c, 0x82, 0x7d, 0x00 },
+    /* 52 'R' */
+    { 0xfe, 0x90, 0x6e, 0x00 },
+    /* 53 'S' */
+    { 0x64, 0x92, 0x4c, 0x00 },
+    /* 54 'T' */
+    { 0x80, 0xfe, 0x80, 0x00 },
+    /* 55 'U' */
+    { 0xfe, 0x02, 0xfe, 0x02 },
+    /* 56 'V' */
+    { 0xf8, 0x06, 0xf8, 0x00 },
+    /* 57 'W' */
+    { 0xfe, 0x0c, 0xfe, 0x00 },
+    /* 58 'X' */
+    { 0xee, 0x10, 0xee, 0x00 },
+    /* 59 'Y' */
+    { 0xe0, 0x1e, 0xe0, 0x00 },
+    /* 5a 'Z' */
+    { 0x8e, 0x92, 0xe2, 0x00 },
+    /* 5b '[' */
+    { 0x00, 0xfe, 0x82, 0x00 },
+    /* 5c '\' */
+    { 0xc0, 0x38, 0x06, 0x00 },
+    /* 5d ']' */
+    { 0x00, 0x82, 0xfe, 0x00 },
+    /* 5e '^' */
+    { 0x40, 0x80, 0x40, 0x00 },
+    /* 5f '_' */
+    { 0x01, 0x01, 0x01, 0x00 },
+
+    /* --- */
+
+    /* 60 '`' */
+    { 0x00, 0x80, 0x40, 0x00 },
+    /* 61 'a' */
+    { 0x24, 0x2a, 0x1e, 0x00 },
+    /* 62 'b' */
+    { 0xfe, 0x22, 0x1c, 0x00 },
+    /* 63 'c' */
+    { 0x1c, 0x22, 0x14, 0x00 },
+    /* 64 'd' */
+    { 0x1c, 0x22, 0xfe, 0x00 },
+    /* 65 'e' */
+    { 0x1c, 0x2a, 0x1a, 0x00 },
+    /* 66 'f' */
+    { 0x10, 0x77, 0x90, 0x00 },
+    /* 67 'g' */
+    { 0x12, 0x2a, 0x3a, 0x00 },
+    /* 68 'h' */
+    { 0xfe, 0x20, 0x1e, 0x00 },
+    /* 69 'i' */
+    { 0x22, 0xbe, 0x02, 0x00 },
+    /* 6a 'j' */
+    { 0x04, 0x02, 0xbc, 0x00 },
+    /* 6b 'k' */
+    { 0xfe, 0x08, 0x36, 0x00 },
+    /* 6c 'l' */
+    { 0x82, 0xfe, 0x02, 0x00 },
+    /* 6d 'm' */
+    { 0x3e, 0x18, 0x3e, 0x00 },
+    /* 6e 'n' */
+    { 0x3e, 0x20, 0x1e, 0x00 },
+    /* 6f 'o' */
+    { 0x1c, 0x22, 0x1c, 0x00 },
+    /* 70 'p' */
+    { 0x3e, 0x28, 0x10, 0x00 },
+    /* 71 'q' */
+    { 0x10, 0x28, 0x3e, 0x00 },
+    /* 72 'r' */
+    { 0x3e, 0x20, 0x10, 0x00 },
+    /* 73 's' */
+    { 0x12, 0x2a, 0x24, 0x00 },
+    /* 74 't' */
+    { 0x20, 0x7c, 0x22, 0x00 },
+    /* 75 'u' */
+    { 0x3c, 0x02, 0x37, 0x00 },
+    /* 76 'v' */
+    { 0x38, 0x06, 0x38, 0x00 },
+    /* 77 'w' */
+    { 0x3e, 0x0c, 0x3e, 0x00 },
+    /* 78 'x' */
+    { 0x36, 0x08, 0x36, 0x00 },
+    /* 79 'y' */
+    { 0x32, 0x0a, 0x3c, 0x00 },
+    /* 7a 'z' */
+    { 0x26, 0x2a, 0x32, 0x00 },
+    /* 7b '{' */
+    { 0x10, 0x6c, 0x82, 0x00 },
+    /* 7c '|' */
+    { 0x00, 0xee, 0x00, 0x00 },
+    /* 7d '}' */
+    { 0x82, 0x6c, 0x10, 0x00 },
+    /* 7e '~' */
+    { 0x40, 0x80, 0x40, 0x80 },
+    /* 7f '<delta>' */
+    { 0x0e, 0x32, 0x0e, 0x00 },
+};
+
+#define CHARGEN_4x8_GLYPHS_NUM ( (sizeof chargen_4x8_glyphs) / (sizeof chargen_4x8_glyphs[0]) )
+
+#endif /* CHARGEN_4X8_H_KMZC3DOG */