' % function[fulltag - 1]
if fulltag != uniquefunction.index('define'):
dump['blocktext'] += ' '
def print_format(fulltag):
index = formats.index(dump['format'])
dump['print_formats'][index](fulltag)
def print_hex(integer):
dump['blocktext'] += '%x' % integer
def print_decimal(integer):
if (highbit & integer):
integer -= 0x100000000
dump['blocktext'] += '%d' % integer
def print_plain(fulltag):
if dump['blocktext'] and fulltag == uniquefunction.index('define'):
dump['blocktext'] += '\n'
if fulltag != uniquefunction.index('end_of_block'):
if dump['blocktext'] and fulltag != uniquefunction.index('define'):
dump['blocktext'] += ' '
dump['blocktext'] += '%s ' % uniquefunction[fulltag].upper()
def print_code(chunk):
"""dump as raw hex so it can be undumped"""
dump['blocktext'] += '%02x' * len(chunk) % tuple(map(ord, chunk))
def dump_block(chunk):
"""see http://www.colorforth.com/parsed.html for meaning of bit patterns"""
state = 'default'
if (dump['block'] / 1024) < high_level_block and not dump['original']:
# assume machine code
dump['dirty'] = True
else: # assume high-level Forth
dump['dirty'] = False
for dump['index'] in range(0, len(chunk), 4):
integer = struct.unpack('> 5) | 0xf8000000)
else:
print_hex(integer >> 5)
else:
if integer & highbit:
print_decimal((integer >> 5) | 0xf8000000)
else:
print_decimal(integer >> 5)
elif tag == uniquefunction.index('variable'):
print_format(tag)
print_text(integer & 0xfffffff0)
state = 'print number as decimal'
print_format(uniquefunction.index('compileword'))
elif not dump['original'] and tag > 0xc:
#debug('block is dirty: tag = 0x%x' % tag)
dump['dirty'] = True
print_format(uniquefunction.index('binary'))
print_code(struct.pack('\n')
output.write('\n')
for dump['block'] in range(0, len(data), 1024):
chunk = data[dump['block']:dump['block'] + 1024]
debug('block %d: %s' % (dump['block'] / 1024, repr(chunk)))
output.write('{block %d}\n' % (dump['block'] / 1024))
if dump['format'] == 'html':
output.write('\n')
dump_block(chunk)
output.write(dump['blocktext'])
if dump['blocktext']:
dump['blocktext'] = ''
if dump['original']:
output.write('\n')
if dump['format'] == 'html':
output.write('\n
\n')
if dump['format'] == 'html':
output.write('