diff --git a/data/apple2.rom b/data/apple2.rom new file mode 100644 index 0000000..916b318 Binary files /dev/null and b/data/apple2.rom differ diff --git a/data/disk2.rom b/data/disk2.rom new file mode 100644 index 0000000..56698b0 Binary files /dev/null and b/data/disk2.rom differ diff --git a/tools/store-data b/tools/store-data new file mode 100755 index 0000000..c26df8a --- /dev/null +++ b/tools/store-data @@ -0,0 +1,44 @@ +#!/usr/bin/env python2 + +import sys + +# If we can open fname, then return its data; otherwise, raise an exception +def file_data(fname): + with open(fname, 'r') as f: + return f.read() + raise Exception("failed to read file %s" % (fname)) + +# This is "header" field of the objstore struct. +data = 'hope' + +# These must be appended in the exact order indicated by the struct definition +# in objstore.h +data += file_data('./data/apple2.rom') +data += file_data('./data/disk2.rom') +data += file_data('./fonts/apple2-system.bmp') + +# Let's not keep calling len(data) since we know it won't change over our +# iterations +data_len = len(data) + +# This just defines the variable name for the store data +sys.stdout.write("static unsigned char store_data[] =\n") + +# This loop will write out a series of 16 characters given in hexadecimal +# escape, preceded by a quote and ending in a quote. C will automatically +# append literal strings when given one after another with no other punctuation +# (e.g. "abc" "def" is equivalent to "abcdef"). The first sys.stdout.write() +# will start us off with the first line's quote mark. +sys.stdout.write('"') +for i in range(0, data_len): + sys.stdout.write("\\x%02x" % (ord(data[i]))) + if i == data_len - 1: + break + if i > 0 and (i+1) % 16 == 0: + sys.stdout.write('"\n"') + +# And we're about done; finish with the last quote, and then terminate with a +# semicolon. +sys.stdout.write('";') + +# vim:ft=python: