import binascii import os import sys import time import shutil LEN = 2**16 huffman = False TARGET=os.getcwd() SOURCE=sys.argv[1] DEFLATE=os.path.basename(sys.argv[1]) + ".deflate" PATH="/Users/david/Devel/arch/avr/code/quickdev16/scripts" WINE="/Applications/Darwine/Wine.bundle/Contents/bin/wine" KZIP=os.path.join(PATH,"kzip.exe") DEFLOPT=os.path.join(PATH,"DeflOpt.exe") ZIP2RAW=os.path.join(PATH,"zip2raw.rb") if os.path.isfile("rom.zip"): os.unlink("rom.zip") os.system("%s %s rom /s1 %s" % (WINE,KZIP,SOURCE)) os.system("%s %s /a rom.zip" % (WINE,DEFLOPT)) os.system("ruby %s rom.zip" % ZIP2RAW) if os.path.isfile("rom.zip"): os.unlink("rom.zip") data = open(DEFLATE).read() os.unlink(DEFLATE) zip_size = len(data) cfile = open("/tmp/loader.c","w") hfile = open("/tmp/loader.h","w") parts = [] cnt = len(data) / ((2**15) -1 ) r = len(data) - (cnt * ((2**15) -1)) for i in range(0, cnt): parts.append(((2**15) -1 )) parts.append(r) hfile.write('''/* File: %s Time: %s */ #ifndef __FIFO_H__ #define __FIFO_H__ #define ROM_ZIP_SIZE %i #define ROM_BUFFER_CNT %i ''' % (os.path.basename(SOURCE),time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime()),zip_size,len(parts))) for idx,val in enumerate(parts): hfile.write('#define ROM_BUFFER_SIZE%02i %i\n' % (idx+1,val)) hfile.write('\n#endif\n') hfile.close() cfile.write('''/* File: %s Time: %s */ #include #include ''') addr = 0 for idx,val in enumerate(parts): cfile.write(''' const char _rom%02i[ROM_BUFFER_SIZE%02i] PROGMEM = { ''' % (idx+1,idx+1)) l = addr h = addr + parts[idx] addr+= parts[idx] for idx,c in enumerate(data[l:h]): c = ord(c) if idx