mirror of
https://github.com/pevans/erc-c.git
synced 2024-12-21 23:29:16 +00:00
Add data for system; python script to build store_data
This commit is contained in:
parent
6963883a60
commit
74e81a3f57
BIN
data/apple2.rom
Normal file
BIN
data/apple2.rom
Normal file
Binary file not shown.
BIN
data/disk2.rom
Normal file
BIN
data/disk2.rom
Normal file
Binary file not shown.
44
tools/store-data
Executable file
44
tools/store-data
Executable file
@ -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:
|
Loading…
Reference in New Issue
Block a user