aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/charmem.py60
-rw-r--r--src/charset.py14
-rw-r--r--src/charset.txt208
3 files changed, 60 insertions, 222 deletions
diff --git a/src/charmem.py b/src/charmem.py
new file mode 100644
index 0000000..25eeec9
--- /dev/null
+++ b/src/charmem.py
@@ -0,0 +1,60 @@
+#!/usr/bin/env python3
+# Generate .bin file with ATK16 CPU TPU charmem data
+
+# Addressed by _CCC CCCC CYYY
+# Data width 8bit: ___X XXXX
+# where _ = unused, C = 8bit character code, Y = character y coordinate, X = pixel value
+
+import sys
+
+if len(sys.argv) != 2:
+ print("usage: charmem.py <outfile.bin>")
+ sys.exit(1)
+
+outfile_path = sys.argv[1]
+
+with open("charset.txt", "r") as f:
+ lines = [s.strip("\n") for s in f.readlines()]
+
+header_chars = lines[0]
+
+charset: list[list[str]] = []
+CHAR_HEIGHT_BITS = 3
+CHAR_HEIGHT = 2 ** CHAR_HEIGHT_BITS
+CHAR_WIDTH = 5
+
+i = CHAR_HEIGHT
+while i < len(lines):
+ char = lines[i:i+CHAR_HEIGHT]
+ for row in char:
+ assert len(row) == CHAR_WIDTH
+ charset.append(char)
+ i += CHAR_HEIGHT
+
+CHAR_N = len(charset)
+
+TOTAL_BYTEARRAY_SIZE = CHAR_N * CHAR_HEIGHT
+print("TOTAL_BYTEARRAY_SIZE:", TOTAL_BYTEARRAY_SIZE)
+
+def string_to_byte(input_string: str):
+ # Replace spaces with '0' and '#' with '1'
+ binary_string = input_string.replace(' ', '0').replace('#', '1') + "000"
+
+ # Check if the string contains only '0' or '1'
+ if not all(c in '01' for c in binary_string):
+ raise ValueError("Input string must contain only spaces and '#' characters.")
+
+ # Convert the binary string to an unsigned integer byte
+ return int(binary_string[::-1], 2)
+
+
+res_b = bytearray(TOTAL_BYTEARRAY_SIZE)
+for cn, char in enumerate(charset):
+ for cy in range(0, CHAR_HEIGHT):
+ addr = (cn << 3) + cy
+ byte = string_to_byte(char[cy])
+ print(f"{byte:>08b}")
+ res_b[addr] = byte
+
+with open(outfile_path, "wb") as f:
+ f.write(res_b)
diff --git a/src/charset.py b/src/charset.py
deleted file mode 100644
index 628a983..0000000
--- a/src/charset.py
+++ /dev/null
@@ -1,14 +0,0 @@
-def gen_charset(file = "charset.txt"):
- with open(file, "r") as f:
- lines = [s.strip("\n") for s in f.readlines()]
-
- result: list[list[str]] = []
- i = 0
- while i < len(lines):
- char = lines[i:i+8]
- result.append(char)
- i += 8
-
- print(result)
-
-gen_charset()
diff --git a/src/charset.txt b/src/charset.txt
deleted file mode 100644
index 0b68a45..0000000
--- a/src/charset.txt
+++ /dev/null
@@ -1,208 +0,0 @@
-% ABCDEFGHIJKLMNOPQRSTUVWXYZ
-
-
-
-
-
-
-
- ##
-# #
-# #
-####
-# #
-# #
-# #
-
-##
-# #
-# #
-###
-# #
-# #
-####
-
- ##
-# #
-#
-#
-#
-# #
- ##
-
-####
-#
-#
-##
-#
-#
-####
-
-####
-#
-#
-##
-#
-#
-#
-
- ##
-# #
-#
-#
-# ##
-# #
- ##
-
-# #
-# #
-####
-# #
-# #
-# #
-# #
-
-###
- #
- #
- #
- #
- #
-###
-
- ###
- #
- #
- #
- #
-# #
- ##
-
-# #
-# #
-##
-# #
-# #
-# #
-# #
-
-#
-#
-#
-#
-#
-#
-####
-
-# #
-####
-####
-# #
-# #
-# #
-# #
-
-# #
-## #
-## #
-# ##
-# ##
-# #
-# #
-
- ##
-# #
-# #
-# #
-# #
-# #
- ##
-
-###
-# #
-# #
-###
-#
-#
-#
-
- ##
-# #
-# #
-# #
-# ##
- ###
- #
-
-###
-# #
-# #
-###
-##
-# #
-# #
-
- ##
-# #
-#
- ##
- #
-# #
- ##
-
-###
- #
- #
- #
- #
- #
- #
-
-# #
-# #
-# #
-# #
-# #
-# #
- ###
-
-# #
-# #
-# #
-# #
-# #
-# #
- ##
-
-# #
-# #
-# #
-# #
-####
-####
-# #
-
-# #
-# #
- ##
-# #
-# #
-# #
-# #
-
-# #
-# #
-# #
- ###
- #
-# #
- ###
-
-####
- #
- #
- #
- #
-#
-####
- \ No newline at end of file