More junk

This commit is contained in:
Elliot Nunn 2020-05-13 19:14:40 +08:00
parent 99d17e5656
commit 48345cd9c8
15 changed files with 1481 additions and 2 deletions

21
BuildMiniVmac.sh Executable file
View File

@ -0,0 +1,21 @@
#!/bin/sh
ROMFILE="$(find ~/Documents/mac/MacROMan/TestImages -name '*9779D2C4*.ROM' | head -n1)"
set -e -u -o pipefail
cd $1
echo '#define kMaintainerName "Elliot build box"' >setup/CONFIGUR.i
gcc setup/tool.c -o setup_t
./setup_t -t mc64 -m II -speed a -bg 1 -as 0 >setup_buildbox.bash
chmod +x setup_buildbox.bash
./setup_buildbox.bash
make
mkdir -p ~/Documents/buildmac
rm -rf ~/Documents/buildmac/{minivmac,MacII.ROM}
cp -R minivmac.app ~/Documents/buildmac/
cp "$ROMFILE" ~/Documents/buildmac/MacII.ROM

217
CCompilerPatcher.py Executable file
View File

@ -0,0 +1,217 @@
#!/usr/bin/env python3
# Patch the Apple C Compiler to output symbol-laden files unconditionally... without messing up the codegen!
from collections import Counter
def do_everything():
# Essential Patches
# Sets the "version" of the output file (to 3)
force_value(2, 0x5048, 'OPENOBJECTFILE', 'move.b #gSymOn,d0')
# Places Filename records
force_value(1, 0x842, 'OPENNEWFILE', 'move.b #gSymOn,d0')
# Apparently we crash without this
force_value(26, 0x118, 'INITIALIZE', 'move.b #gSymOn,d0')
# Inits something called the "file pos array"
force_value(25, 0x63e6, 'INITPROC', 'move.b #gSymOn,d0')
# Ooooh boy...
# force_value(10, 0x4576, 'FUNCTIONDECL', 'move.b #gSymOn,d0')
force_value(10, 0x47e6, 'FUNCTIONDECL', 'move.b #gSymOn,d0')
# force_value(10, 0x4afe, 'FUNCTIONDECL', 'move.b #gSymOn,d0')
# force_value(10, 0x4c62, 'FUNCTIONDECL', 'move.b #gSymOn,d0')
# force_value(10, 0x4d8e, 'FUNCTIONDECL', 'move.b #gSymOn,d0')
# force_value(10, 0x5116, 'FUNCTIONDECL', 'move.b #gSymOn,d0')
# force_value(10, 0x51b8, 'FUNCTIONDECL', 'move.b #gSymOn,d0')
# force_value(10, 0x52e6, 'FUNCTIONDECL', 'move.b #gSymOn,d0')
# force_value(10, 0x5544, 'FUNCTIONDECL', 'move.b #gSymOn,d0')
# force_value(10, 0x4e3c, 'FUNCTIONDECL', 'move.b #gSymVars,d0')
# force_value(10, 0x4f56, 'FUNCTIONDECL', 'move.b #gSymVars,d0')
# force_value(10, 0x5142, 'FUNCTIONDECL', 'move.b #gSymVars,d0')
# force_value(10, 0x521a, 'FUNCTIONDECL', 'move.b #gSymVars,d0')
# force_value(10, 0x538a, 'FUNCTIONDECL', 'move.b #gSymVars,d0')
# One of these seems to annotate which files have been opened...
# force_value(1, 0x48, 'SETSCANFILE', 'move.b #gSymOn,d0')
# One of these is required for the first "ModuleBegin"... can safely skip, apparently!
# force_value(1, 0x3fa2, 'PROG', 'move.b #gSymOn,d0')
# force_value(1, 0x40fe, 'PROG', 'move.b #gSymOn,d0')
# force_value(1, 0x4170, 'PROG', 'move.b #gSymVars,d0')
# force_value(1, 0x4250, 'PROG', 'move.b #gSymVars,d0')
# force_value(1, 0x486e, 'PROG', 'move.b #gSymOn,d0')
# force_value(6, 0x258a, 'EXPANDMACRO', 'and.b #gSymOn,d0')
# force_value(6, 0x441a, 'MACROLINE', 'move.b #gSymOn,d0')
# force_value(6, 0x508a, 'LOADFILE', 'cmp.b #gSymOn,d0')
# force_value(6, 0x5174, 'LOADFILE', 'move.b #gSymOn,d0')
# force_value(6, 0x6416, 'DUMPFILE', 'move.b #gSymOn,-$2190(a6)')
# force_value(6, 0x6720, 'DUMPFILE', 'move.b #gSymOn,d0')
# force_value(7, 0x7d4, 'PROTOPARMLIST', 'move.b #gSymVars,d0')
# force_value(7, 0x89a, 'PROTOPARMLIST', 'move.b #gSymOn,d0')
# force_value(7, 0xa80, 'PROTOPARMLIST', 'move.b #gSymVars,d0')
# force_value(7, 0xb16, 'PROTOPARMLIST', 'move.b #gSymOn,d0')
# Not required...
# force_value(7, 0x19f6, 'DECLARATION', 'move.b #gSymOn,d0')
# force_value(7, 0x1d6e, 'DECLARATION', 'move.b #gSymOn,d0')
# force_value(7, 0x1dec, 'DECLARATION', 'move.b #gSymOn,d0')
# force_value(7, 0x2180, 'DECLARATION', 'move.b #gSymOn,d0')
# force_value(7, 0x2296, 'DECLARATION', 'move.b #gSymOn,d0')
# force_value(7, 0x2314, 'DECLARATION', 'move.b #gSymOn,d0')
# force_value(7, 0x267a, 'DECLARATION', 'move.b #gSymOn,d0')
# force_value(7, 0x27c8, 'DECLARATION', 'move.b #gSymOn,d0')
#... skipped some because bored!
# skipped some tedious "dumpfunction" symbols here!
# force_value(25, 0x53d0, 'FORMATCODE', 'move.b #gSymOn,d0')
# force_value(25, 0x53d8, 'FORMATCODE', 'move.b #gSymLines,d0')
def gappy_compare(actual_str, search_str):
if len(actual_str) != len(search_str): return False
for actual_el, search_el in zip(actual_str, search_str):
if actual_el != search_el and search_el != 0x99: return False
return True
def scan_back(cursor, binary, *search_strs):
if cursor is None: cursor = len(binary)
while cursor > 0:
cursor -= 1
for which, ss in enumerate(search_strs):
if gappy_compare(binary[cursor:cursor+len(ss)], ss):
return cursor, which
return cursor, None
def bool_global_a5_offset_from_SETSYMDEBUGOPTION(code):
# Count all the below opcodes, and the most common is accessing our desired global
most_common = Counter()
i = None
while True:
i, which = scan_back(i, code, b'\x1B\x7C\x00\x01\x99\x99') # MOVE.B #1,????(A5)
if which != 0: break
a5 = bytes(code[i+4:i+6])
most_common[a5] += 1
if most_common:
most_common, freq = most_common.most_common(1)[0]
return most_common
def patch_global_access_by_function(code, my_global):
global_access = b'\x10\x2d' + my_global # MOVE.B my_global(A5),D0
num_patches = 0
i = None
while True:
if b'FUNCTIONDECL\0' in code:
i, which = scan_back(i, code, b'\x3f\x3c\x00\x04\x2f\x2d\x99\x99\x4e\x99\x99\x99') # MOVE.W #4,-(SP); MOVE.L ????(A5),-(SP); JSR ??????)
if which != 0: break
i, which = scan_back(i, code, global_access)
if which != 0: break
code[i:i+4] = b'\x10\x3c\x00\x01' # MOVE.B #1,D0
num_patches += 1
return num_patches
def find_functions(segment):
offset = 0
biglist = []
while offset < len(segment):
next_offset = segment.find(b'NV', offset + 1)
if next_offset == -1: next_offset = len(segment)
biglist.append((offset, segment[offset:next_offset]))
offset = next_offset
return biglist
def do_better(all_resources):
segments = [r for r in all_resources if r.type == b'CODE' and r.id > 0]
print('Patching C compiler to force some SADE symbols (selectively, without changing codegen)')
a5glob = None
for segment in segments:
for offset, function in find_functions(segment):
if b'SETSYMDEBUGOPTION\0' in function:
a5glob = bool_global_a5_offset_from_SETSYMDEBUGOPTION(function)
if a5glob is None:
print(' Could not find the -sym global. Stopping.')
return
print(f' Found the -sym global: {hex(struct.unpack(">h", a5glob)[0])}(A5)')
for segment in segments:
for offset, function in find_functions(segment):
for fname in ['OPENOBJECTFILE', 'OPENNEWFILE', 'INITIALIZE', 'INITPROC', 'FUNCTIONDECL']:
if fname.encode('ascii') + b'\0' in function:
num_patches = patch_global_access_by_function(function, a5glob)
if num_patches:
print(f' Hardcoded to true: {fname} (seg {segment.id} {repr(segment.name)} + {hex(offset)}) x{num_patches}')
segment[offset:offset+len(function)] = function
import macresources
import re
import struct
target = '/Users/elliotnunn/Documents/mac/supermario/worktree/cube-e/Tools/C.rdump'
resources = list(macresources.parse_rez_code(open(target, 'rb').read()))
def force_value(in_segment, at_offset, in_func_name, code):
known_globals = {'gSymLines': -0x1082, 'gSymTypes': -0x1081, 'gSymVars': -0x1080, 'gSymOn': -0x107f}
for r in resources:
if r.id == in_segment and r.type == b'CODE': break
else:
raise ValueError('bad segment %r' % in_segment)
m = re.match(r'move.b #(\w+),d0', code)
if not m:
print('Could not match %r' % code)
return
if struct.unpack_from('>h', r, at_offset + 2)[0] != known_globals[m.group(1)]:
print('Bad code %r %r %r %r' % (in_segment, at_offset, in_func_name, code))
return
struct.pack_into('>HH', r, at_offset, 0x103C, 1) # WE ARE FORCING THINGS ON!
# do_everything()
# find_a5_offset_of_boolean_global(resources)
do_better(resources)
open(target, 'wb').write(macresources.make_rez_code(resources, ascii_clean=True))

84
CategorizeRoms.py Executable file
View File

@ -0,0 +1,84 @@
#!/usr/bin/env python3
import sys
import struct
from os import path
biglist = []
def could_be_rom(lb):
if not lb: return False
if lb == 0x300000: return True # special supermario case!
while not (lb & 1):
lb >>= 1
if lb != 1: return False
return True
for rompath in sys.argv[1:]:
try:
if not could_be_rom(path.getsize(rompath)): continue
rom = open(rompath, 'rb').read()
except IsADirectoryError:
continue
info = []
a, = struct.unpack_from('>H', rom, 8)
b, = struct.unpack_from('>H', rom, 18)
order = a << 64
if a == 0x69:
info.append('Original')
elif a == 0x75:
info.append('Plus')
elif a == 0x178:
info.append('II')
elif a == 0x276:
info.append('SE')
elif a == 0x37a:
info.append('Portable')
elif a == 0x67c:
info.append('IIci')
if rom[18] == 0x15:
order += 1 << 63
info.append('TERROR')
elif rom[18] == 0x17:
order += 2 << 63
info.append('Zydeco')
elif rom[20] & 1:
order += 3 << 63
info.append('Horror')
elif a == 0x77d:
info.append('SuperMario')
else:
order = 0
info.append('?-%X' % a)
if a >= 0x300:
info.append('Rel-%04x' % b)
order += b << 32
if a == 0x77d: # SuperMario
info.append('SubVer-%x' % struct.unpack_from('>H', rom, 0x4c))
order += struct.unpack_from('>H', rom, 0x4c)[0]
if a == 0x67c:
if b >= 0x12f1: info.append("EricksonSndMgr")
if b == 0x12f1: info.append("EricksonMistake")
biglist.append((order, ' '.join(info), rompath))
biglist.sort()
wid = max(len(s) for _, s, *_ in biglist)
for o, s, p in biglist:
print(s.ljust(wid + 4), p)

View File

@ -33,7 +33,7 @@
# Byte = 0;
import argparse
from macresources.do_what_i_mean import read
import macresources
import os
from os import path
import struct
@ -62,7 +62,7 @@ for base, dirs, files in os.walk(args.src):
files[:] = [f for f in files if f.endswith('.rdump')]
for f in files:
resources = read(path.join(base, f))
resources = list(macresources.parse_rez_code(open(path.join(base, f), 'rb').read()))
for r in resources:
if r.type == b'ckid':

11
System7InSS.sh Executable file
View File

@ -0,0 +1,11 @@
#!/bin/sh
set -euo pipefail
rm -rf /tmp/SheepShaver7
mkdir /tmp/SheepShaver7
cp ~/Documents/mac/supermario/worktree/cube-e/BuildResults/System/System* /tmp/SheepShaver7/
cp ~/Downloads/MacsBug\ 6.2.2/* /tmp/SheepShaver7/
cp ~/Documents/mac/slow/sev-fun/Finder* /tmp/SheepShaver7/
MakeHFS -n SheepShaver7 -i /tmp/SheepShaver7 -s 20m -d now /tmp/SheepShaver7.dsk

35
alias2ln.sh Executable file
View File

@ -0,0 +1,35 @@
#!/bin/sh
# http://hints.macworld.com/article.php?story=20021024064107356
if [ $# -eq 0 ]; then
echo "Usage: alias2ln alias1 alias2 alias3..."
echo " where alias1, alias2, etc are alias files."
echo " Each alias file will be converted into a symlink."
fi
while [ $# -gt 0 ]; do
if [ -f "$1" -a ! -L "$1" ]; then
item_name=`basename "$1"`
item_parent=`dirname "$1"`
# Next two rows should be entered as one row #
item_parent="`cd \"${item_parent}\" 2>/dev/null && pwd || echo \"${item_parent}\"`"
item_path="${item_parent}/${item_name}"
line_1='tell application "Finder"'
line_2='set theItem to (POSIX file "'${item_path}'") as alias'
line_3='if the kind of theItem is "alias" then'
line_4='get the posix path of (original item of theItem as text)'
line_5='end if'
line_6='end tell'
# Next two rows should be entered as one row #
linksource=`osascript -e "$line_1" -e "$line_2" -e "$line_3" -e "$line_4" -e "$line_5" -e "$line_6"`
if [ $? -eq 0 ]; then
if [ ! -z "$linksource" ]; then
rm "$item_path"
ln -s "${linksource}" "${item_path}"
echo "\"${1}\" -> \"${linksource}\""
fi
fi
shift
fi
done

50
bloodbath Executable file
View File

@ -0,0 +1,50 @@
#!/bin/bash
custer=custer
system=cube-e
cd ~/Documents/mac
sh -c "cd supermario/worktree/$custer && ./.build RISC" > /tmp/result-$custer &
sh -c "cd supermario/worktree/$system && ./.build System" > /tmp/result-$system &
rm -rf /tmp/bbathrom*
cp MacROMan/TestImages/New*/*"Mac OS ROM 9.8.1.rom" /tmp/bbathrom
tbxi dump /tmp/bbathrom
wait # for the builds above to complete
echo ----------------------------------------------------------------
echo $custer...
cat /tmp/result-$custer
echo ----------------------------------------------------------------
echo $system...
cat /tmp/result-$system
echo ----------------------------------------------------------------
threemeg=`find /tmp/bbathrom.src -iname mac68krom`
cp supermario/worktree/$custer/BuildResults/RISC/Image/RomMondo $threemeg; rm -rf $threemeg.src
tbxi build /tmp/bbathrom.src -o /tmp/newrom.hqx
insertees="$insertees /tmp/newrom.hqx"
Rhqx supermario/worktree/$system/BuildResults/System/System
mv supermario/worktree/$system/BuildResults/System/System.hqx /tmp/newsys.hqx
insertees="$insertees /tmp/newsys.hqx"
cd ~/Documents/qemu
insertees="$insertees ./newmxbg.hqx"
cp test-template.img /tmp/test-boot.img
hmount /tmp/test-boot.img
for x in $insertees; do hcopy $x 'QEMU HD:System Folder:'; done
hrename 'QEMU HD:System Folder:Extensions' 'QEMU HD:Disabled Extensions'
humount
./qemu-system-ppc -L pc-bios -boot c -M mac99 -m 128 -prom-env 'auto-boot?=true' -prom-env 'aapl,debug=2000000' \
-drive file=/tmp/test-boot.img,format=raw,media=disk \
-prom-env 'vga-ndrv?=true' -device usb-mouse -device usb-kbd \
-netdev user,id=network01 -device sungem,netdev=network01
rm -f /tmp/test-boot.img

15
cmpscod.sh Executable file
View File

@ -0,0 +1,15 @@
#!/bin/sh
n=$1
shift
o=$n
if [ "$#" != "0" ]; then o=$1; fi
Rez -o /tmp/ascod ~/MacSrc/Sys710.rdump 2>/dev/null
zcp /tmp/ascod//scod/$n /tmp/ascod$n
#zcp ~/MacFiles/System711//scod/$n /tmp/ascod$n
Rez -o /tmp/bscod BuildResults/System/Rsrc/System.rsrc.rdump
zcp /tmp/bscod//scod/$o /tmp/bscod$o
exec vbindiff /tmp/ascod$n /tmp/bscod$o
# NB: These truly are the sources to System 7.1, plus a tiny bit of sugar.

5
comparelp.sh Executable file
View File

@ -0,0 +1,5 @@
#!/bin/bash
set -m
~/Documents/mac/slow/lpch/patch_rip.py ~/Documents/mac/supermario/worktree/cube-e/BuildResults/System/System.rdump -pj -w 64 -sh ~/Documents/mac/supermario/worktree/cube-e/BuildResults/System/Text/LinkPatchJumpTbl >/tmp/elliot && ~/Documents/mac/slow/lpch/patch_rip.py ~/Documents/mac/primary/Sys710x.rdump -pj -w 64 -sh ~/Documents/mac/supermario/worktree/cube-e/BuildResults/System/Text/LinkPatchJumpTbl >/tmp/apple && git diff --no-index -U999999999 /tmp/elliot /tmp/apple >/tmp/lpch.patch

3
dump Executable file
View File

@ -0,0 +1,3 @@
#!/bin/sh
for x in "$@"; do SetFile -t 'OBJ ' -c 'MPS ' "$x"; mpw DumpObj "$x"; done

8
dumpall Executable file
View File

@ -0,0 +1,8 @@
#!/bin/bash
find "$1" -iname '*.o' -type f | while read -r x; do
if [ ! -e "$x.dmp" ] || [ "$x" -nt "$x.dmp" ]; then
echo "$x"
~/MacSrc/dump "$x" > "$x.dmp"
fi
done

9
fdump Executable file
View File

@ -0,0 +1,9 @@
#!/bin/bash
t="`mktemp`"
for x in "$@"; do
touch "$t"
SimpleRez -o "$t"/..namedfork/rsrc <(echo "data 'xxxx' (0) {"; xxd -p "$x" | sed 's/^/$"/' | sed 's/$/"/'; echo "};")
mpw DumpCode -rt xxxx=0 "$t"
done
rm -f "$t"

189
fsnek Executable file
View File

@ -0,0 +1,189 @@
#!/usr/bin/env python3
import sys
from os import path
import hashlib
import textwrap
# Thanks user25148: https://stackoverflow.com/questions/1131220/get-md5-hash-of-big-files-in-python
def generate_file_md5(filename, blocksize=2**20):
m = hashlib.md5()
with open(filename, 'rb') as f:
while True:
buf = f.read(blocksize)
if not buf:
break
m.update(buf)
return m.hexdigest()
def split_args_by_delim(xx):
retval = [[]]
for el in xx:
if el in ('', '--'):
retval.append([])
else:
retval[-1].append(el)
return retval
def group_to_dict(group):
retval = {}
for filename in group:
key = path.basename(filename)
if key in retval:
raise ValueError('duplicate filename in same group: %r' % filename)
value = generate_file_md5(filename)
retval[key] = value
return retval
def indices(container, searchfor):
retval = []
for i, el in enumerate(container):
if el == searchfor:
retval.append(i)
return retval
def where_do_snakes_go(hash_list):
hash_do_list = list(set(hash_list))
hash_do_list.sort(key=hash_list.index)
hash_y_dict = {}
occupied_points = set()
# Next, try to cram everything else onto other lines...
for the_hash in hash_do_list:
if the_hash is None or hash_list.count(the_hash) == 1:
hash_y_dict[the_hash] = 0
else:
first_x = hash_list.index(the_hash)
last_x = len(hash_list) - list(reversed(hash_list)).index(the_hash) - 1
y = 1
while any((x, y) in occupied_points for x in range(first_x, last_x + 1)):
y += 1
hash_y_dict[the_hash] = y
for x in range(first_x, last_x + 1):
occupied_points.add((x, y))
return hash_y_dict
def one_snake(hash_list, col_width):
col_x = [i * col_width + (col_width + 1) // 2 for i in range(len(hash_list))]
locs = where_do_snakes_go(hash_list)
num_lines = max(locs.values())
lines = []
for this_hash, hash_y in locs.items():
if this_hash is None: continue
while len(lines) <= hash_y:
lines.append([' '] * (col_width * len(hash_list)))
which = indices(hash_list, this_hash)
which_x = [col_x[col] for col in which]
for x in range(col_x[which[0]], col_x[which[-1]] + 1):
if x == col_x[which[0]]:
the_char = '\u2514' # '\'
elif x == col_x[which[-1]]:
the_char = '\u2518' # '/'
elif x in which_x:
the_char = '\u2534' # inv 'T'
else:
the_char = '\u2500' # '-'
lines[hash_y][x] = the_char
for ind in which:
lines[0][col_x[ind]] = '\u25CF' # '*'
for ind in which:
x = col_x[ind]
for y in range(1, hash_y):
lines[y][x] = '\u2502' # '|'
return '\n'.join(''.join(l).rstrip() for l in lines).rstrip('\n')
# uniques_by_name is a list of (name, [hash, ...])
def snake_table(uniques_by_name, headings=None):
if headings:
col_width = max(len(h) for h in headings) + 1
col_width = max(col_width, 5)
while col_width % 2 == 0: col_width += 1
else:
col_width = 5
gutter_width = max(len(n) for n, uu in uniques_by_name)
lines = []
for i, (name, uniques) in enumerate(uniques_by_name):
if lines: lines.append('')
if i % 20 == 0 and headings:
lines.append((' ' * gutter_width) + ' ' + ''.join(h.center(col_width) for h in headings).rstrip())
lines.append('')
gutter = name
for line in one_snake(uniques, col_width).split('\n'):
lines.append(gutter.rjust(gutter_width) + ' ' + line)
gutter = ''
return '\n'.join(lines)
# Cheeky experiment
if __name__ == '__main__' and sys.argv[1:2] == ['-r']:
import macresources
files = sys.argv[2:]
resfiles = [list(macresources.parse_rez_code(open(p, 'rb').read())) for p in files]
headings = [path.basename(p) for p in files]
headings = [h[:-6] if h.endswith('.rdump') else h for h in headings]
every_typeid = list(set((r.type, r.id) for rf in resfiles for r in rf))
every_typeid.sort(key=lambda rtypeid: (rtypeid[0].decode('mac_roman').upper(), rtypeid[0].decode('mac_roman'), rtypeid[1]))
by_typeid = {typeid: [None] * len(resfiles) for typeid in every_typeid}
for i, rf in enumerate(resfiles):
for r in rf:
by_typeid[(r.type, r.id)][i] = hash(bytes(r))
uniques_by_name = []
for rtype, rid in every_typeid:
leftcol = rtype.decode('mac_roman') + str(rid).rjust(7)
uniques_by_name.append((leftcol, by_typeid[(rtype, rid)]))
print(snake_table(uniques_by_name, headings=headings))
exit()
if __name__ == '__main__':
group_lists = split_args_by_delim(sys.argv[1:])
every_filename = sorted(set(path.basename(p) for g in group_lists for p in g))
headings = [path.commonprefix([path.abspath(p) for p in group]) for group in group_lists]
heading_strip = path.commonprefix(headings)
headings = [h[len(heading_strip):].lstrip(path.sep) for h in headings]
uniques_by_name = {fn: [None] * len(group_lists) for fn in every_filename}
for i, group in enumerate(group_lists):
for p in group:
uniques_by_name[path.basename(p)][i] = generate_file_md5(p)
uniques_by_name = list(uniques_by_name.items())
print(snake_table(uniques_by_name, headings=headings))

51
mpwobject.py Normal file
View File

@ -0,0 +1,51 @@
# The only clever thing that we do, is strip out "pad" and "last" records
# To make editing less tedious
def split(mpwobj):
"""Split the binary object into a list of "chunks"
"""
biglist = []
ofs = 0
while ofs < len(mpwobj):
rectype = mpwobj[ofs]
if not (rectype <= 20 or rectype == 25):
raise ValueError(f'bad record type {rectype} at {hex(offset)}')
if rectype == 1: # First
reclen = 4
elif rectype == 2: # Last
reclen = 2
elif rectype == 5: # Module
reclen = 6
elif rectype == 6: # EntryPoint
reclen = 8
elif rectype == 7: # Size
reclen = 6
elif rectype == 11: # Filename
reclen = 8
elif rectype == 14: # ModuleEnd
reclen = 8
elif rectype == 16: # BlockEnd
reclen = 12
elif rectype == 25: # XData
reclen = 8
else:
reclen = 256 * mpwobj[ofs+2] + mpwobj[ofs+3]
biglist.append(mpwobj[ofs:ofs+reclen])
ofs += reclen
return biglist
def join(chunks):
newlist = []
for c in chunks:
newlist.append(c)
if len(c) & 1:
newlist.append(b'\0')
return newlist

781
process-mgr-seg-lister Normal file
View File

@ -0,0 +1,781 @@
lines = """
seg INIT 1
MYGESTALT INIT $1,$0
main INIT $1,$16 @22
InitializeEnvironment INIT $1,$176 @2A
InitializeScheduler INIT $1,$22C
InitConfig INIT $1,$438
InitExceptions INIT $1,$510
VNInit INIT $1,$580
InitHeapRoutines INIT $1,$58E
InitHeaps INIT $1,$5C4
InitAppleMenuList INIT $1,$692
InitSystemMenus INIT $1,$6A0
InstallPatches INIT $1,$748
PuppetStringsInit INIT $1,$7DA
LaunchFacelessTasks INIT $1,$7FA
GetSwitchTab INIT $1,$90A
size INIT $962
seg %GlobalData 0
connectionQ %GlobalData $0,$0 C
ppcWriteBQ %GlobalData $0,$1A C
ppcReadBQ %GlobalData $0,$34 C
ppcInformBQ %GlobalData $0,$4E C
eppcBQ %GlobalData $0,$68 C
MacOSPortTypepStr %GlobalData $0,$82
MacOSPortNamepStr %GlobalData $0,$86
SSSPromptpStr %GlobalData $0,$8A
lastmouse %GlobalData $0,$8E
mousebox %GlobalData $0,$92
VolumeNotificationList %GlobalData $0,$96
newProcessMgrZone %GlobalData $0,$9A
oldProcessMgrZone %GlobalData $0,$9E
oldSysGZProc %GlobalData $0,$A2 #
hAppleItemShare %GlobalData $0,$A6
globalPrTypeString %GlobalData $0,$AA
blockTrapAddr %GlobalData $0,$CA
myRoverPtr %GlobalData $0,$CE #C
inLauncheesWorld %GlobalData $0,$D2 C
timeoutButtonDown %GlobalData $0,$D4
timeoutMaskYield %GlobalData $0,$D6
forcedPupStrMenuSelection %GlobalData $0,$D8
buttonUpPt %GlobalData $0,$DC
defaultPuppetStringHdl %GlobalData $0,$E0
list %GlobalData $0,$E4
clickDAWindTimeout %GlobalData $0,$E8 #
eatMouseTimeout %GlobalData $0,$EA #
resume_message %GlobalData $0,$EC #
qd %GlobalData $0,$F0 E
randSeed %GlobalData $0,$13C E
screenBits %GlobalData $0,$140 E
arrow %GlobalData $0,$14E E
dkGray %GlobalData $0,$192 E
ltGray %GlobalData $0,$19A E
gray %GlobalData $0,$1A2 E
black %GlobalData $0,$1AA E
white %GlobalData $0,$1B2 E
thePort %GlobalData $0,$1BA E
QUICKDRAW %GlobalData $0,$1BE E
OSDispatchTable %GlobalData $0,$1BE C
patchtraps %GlobalData $0,$446 C
skiaExists %GlobalData $0,$6DA
routeEvent %GlobalData $0,$6DC
tsmLayerOwner %GlobalData $0,$6DE
dontGetFakeKey %GlobalData $0,$6E2
fakeKeyHandle %GlobalData $0,$6E4
fakeKeyCount %GlobalData $0,$6E8
MachineHasMacPlusKbd %GlobalData $0,$6EA
MachineHasFPU %GlobalData $0,$6EC
Colorized %GlobalData $0,$6EE
allocateGMBlkInSysHeap %GlobalData $0,$6F0
pSystemQuitAllMsg %GlobalData $0,$6F2
ppcInitErr %GlobalData $0,$6F6
debugKeyTryCount %GlobalData $0,$6F8
debugControlKeyCode %GlobalData $0,$6FA
debugToAppRoutine %GlobalData $0,$6FC
debugExitRoutine %GlobalData $0,$700
debugEntryRoutine %GlobalData $0,$704
oldExceptionVectors %GlobalData $0,$708
IsOldDebugger %GlobalData $0,$7C0
initCurStackBase %GlobalData $0,$7C2
initFSQueueHook %GlobalData $0,$7C6
initMemTop %GlobalData $0,$7CA
initLocationZero %GlobalData $0,$7CE
kernelbusy %GlobalData $0,$7D2
kernelstackbase %GlobalData $0,$7D4
kernelstack %GlobalData $0,$7D8
kernelMode %GlobalData $0,$7DC
SystemTempMemHList %GlobalData $0,$7DE
vrGetProcessMgrHiMaxBlock %GlobalData $0,$7E2
vrGetSystemHiFreeBytes %GlobalData $0,$7E6
vrZoneMPBlockPtr %GlobalData $0,$7EA
vrChipOffRelocFromFree %GlobalData $0,$7EE
vrFreeTop %GlobalData $0,$7F2
vrGetTopBlockSize %GlobalData $0,$7F6
vrGetHighestLargeFreeBlock %GlobalData $0,$7FA
vrGetLockPtr %GlobalData $0,$7FE
vrShrinkProcessMgrZone %GlobalData $0,$802
vrMoveZone %GlobalData $0,$806
vrExtendZone %GlobalData $0,$80A
vrGetProcessMgrLoFreeBytes %GlobalData $0,$80E
In32BitMode %GlobalData $0,$812
ProcessMgrZone %GlobalData $0,$814
ApplicationMenuHdl %GlobalData $0,$818
hGenericDAIconSuite %GlobalData $0,$81C
hGenericAppIconSuite %GlobalData $0,$820
FirstAppleItem %GlobalData $0,$824
pStrListCopyNamePrefix %GlobalData $0,$828
hHideCurrent %GlobalData $0,$82C
standardMenuDefProcRsrc %GlobalData $0,$830
nullTimeout %GlobalData $0,$834
srcMyScrapInfo %GlobalData $0,$836
napOver %GlobalData $0,$848
dont_switch %GlobalData $0,$84A
coercionState %GlobalData $0,$84C
cutCopyCount %GlobalData $0,$84E
lmemToolDataSize %GlobalData $0,$850
switchTabPtr %GlobalData $0,$854
nextswitch %GlobalData $0,$858
lastswitch %GlobalData $0,$85C
desklayerowner %GlobalData $0,$860
desklayer %GlobalData $0,$864
IMLayer %GlobalData $0,$868
MFLayer %GlobalData $0,$86C
ShellWasFinderType %GlobalData $0,$870
pDyingStateList %GlobalData $0,$872
pSleepingStateList %GlobalData $0,$876
pDebugProcess %GlobalData $0,$87A
pShellProcess %GlobalData $0,$87E
pLastBGProcess %GlobalData $0,$882
pFrontProcessQueue %GlobalData $0,$886
pNewFrontProcess %GlobalData $0,$88A
pFrontProcess %GlobalData $0,$88E
pCurrentProcess %GlobalData $0,$892
initialProcessSR %GlobalData $0,$896
remnulls %GlobalData $0,$898
nbacks %GlobalData $0,$89A
ProcessIDSource %GlobalData $0,$89C
ProcessNumberSource %GlobalData $0,$89E
NullProcess %GlobalData $0,$8A2
size %GlobalData $A00
seg Main 2
#0001 Main $2,$0 #
buserr Main $2,$52 @32 E
addrerr Main $2,$54 @3A E
ilglerr Main $2,$56 @42 E
zeroerr Main $2,$58 @4A E
chkerr Main $2,$5A @52 E
trapverr Main $2,$5C @5A E
priverr Main $2,$5E @62 E
traceerr Main $2,$60 @6A E
line1111err Main $2,$64 @72 E
unass Main $2,$66 @7A E
spurint Main $2,$66 @82 E
uniniterr Main $2,$66 @8A E
fmterr Main $2,$66 E
coprocerr Main $2,$68 @92 E
trap5err Main $2,$6C @9A E
trap6err Main $2,$6E @A2 E
a_syserror Main $2,$10A @AA
IsNonFatalSysErr Main $2,$1CE
BeginKernelStack Main $2,$200 @B2
EndKernelStack Main $2,$23A
a_osdispatch Main $2,$256 @BA
SETTRAPADDRESS_GLUE Main $2,$2EE
OverlayRecoverHandle Main $2,$2FC @C2
PROCESSMGR_GZPROC_GLUE Main $2,$322 @CA
a_settrapaddress Main $2,$358 @D2
a_newhandle Main $2,$36A @DA
a_handlezone Main $2,$3E6 @E2
a_recoverhandle Main $2,$41C @EA
a_reallochandle Main $2,$446 @F2
#0001 Main $2,$4BC #
a_disposhandle Main $2,$4BC @FA E
a_handtohand Main $2,$4F8 @102
a_open Main $2,$51E @10A
GetMapHdlFromRefNum Main $2,$5A0 @112
a_openrf Main $2,$5CE @11A
a_close Main $2,$644 @122
#0002 Main $2,$68E #
a_getvol Main $2,$68E @12A E
a_getvolinfo Main $2,$694 @132 E
a_hfsdispatch Main $2,$69A @13A E
#0003 Main $2,$6E8 #
a_mountvol Main $2,$726 @142 E
a_offline Main $2,$770 @14A E
a_eject Main $2,$77E @152 E
a_unmountvol Main $2,$7C2 @15A E
a_getscrap Main $2,$806 @162
#0004 Main $2,$828 #
a_zeroscrap Main $2,$828 @16A E
a_putscrap Main $2,$82E @172 E
a_pack3 Main $2,$84E @17A
a_drawmenubar Main $2,$8B4 @182
a_postevent Main $2,$8DC @18A
a_launch Main $2,$986 @192
a_osreserved Main $2,$992 @19A
a_wakeup Main $2,$994 @1A2
MyPrefixRelString Main $2,$99E @1AA
MyRelString Main $2,$9B4 @1B2
a_checkload Main $2,$9C8 @1BA
SetOldCheckLoad Main $2,$9F6 @1C2 E
a_updateresfile Main $2,$A00 @1CA
a_getresattrs Main $2,$A16 @1D2
a_releaseresource Main $2,$A32 @1DA
a_getnamedresource Main $2,$A48 @1E2
a_sizersrc Main $2,$A68 @1EA
a_getresource Main $2,$A84 @1F2
a_setgrowzone Main $2,$B0A @1FA
#0005 Main $2,$B22 #
MyNewGestalt Main $2,$B40 @202 E
ZOOMRECT Main $2,$B56 @20A
FloatMainUp Main $2,$C5A @212
GetDrvrResourceAndInfo Main $2,$C62 @21A
CheckUnitTableEntry Main $2,$CC6 @222
CORELAUNCHDESKACCESSORY Main $2,$D06
C_OPENDESKACC Main $2,$EF0 @22A
C_LAUNCHDESKACCESSORY Main $2,$F62 @232
C_SYSEDIT Main $2,$F90 @23A
C_SYSTEMMENU Main $2,$FFE @242
C_SYSTEMCLICK Main $2,$10EE @24A
C_SYSTEMEVENT Main $2,$1132 @252
OVERLAYSYSTEMEVENT Main $2,$12A0 @25A
SetOverlaySystemEvent Main $2,$12EC
LimitFrontSleepForDriversSake Main $2,$130A
LimitBackSleepForDriversSake Main $2,$13AE
GiveLocalDriversTime Main $2,$147A
C_SYSTEMTASK Main $2,$1536 @262
IsMacJmpDebugger Main $2,$15AE
SysErrRecover Main $2,$15CC
C_WAITNEXTEVENT Main $2,$1640 @26A
C_GETNEXTEVENT Main $2,$1706 @272
C_EVENTAVAIL Main $2,$172A @27A
event_common Main $2,$174E
GetNextDeskUpdateEvent Main $2,$1D30
pollmouse Main $2,$1D94 @282
GetNextPseudoEvent Main $2,$1E02
PostPseudoEvent Main $2,$1E74 @28A
imLayerKeyDown Main $2,$1F0A
GetFakeKeyEvent Main $2,$1F76
C_POSTFAKEKEYDOWN Main $2,$2000 @292
C_POSTTEXT Main $2,$20B4 @29A
OSEventAvailForFront Main $2,$2170
C_STILLDOWN Main $2,$2184 @2A2
C_WAITMOUSEUP Main $2,$21CE @2AA
C_REQUESTVOLUMENOTIFICATION Main $2,$2208 @2B2
C_DECLINEVOLUMENOTIFICATION Main $2,$2274 @2BA
VNKill Main $2,$2318 @2C2
ResetStandardFileVol Main $2,$237C
NotifyVolumeAction Main $2,$23D2
NotifyVolumeGoodbye Main $2,$2452
DecomposeWD Main $2,$24D2 @2CA
CHECKIFBACKINGWD Main $2,$252C
C_TEMPMAXMEM Main $2,$2562 @2D2
C_TEMPFREEMEM Main $2,$2598 @2DA
C_TEMPTOPMEM Main $2,$25F0 @2E2
C_SYSZONEFLOATSIZES Main $2,$2616 @2EA
GMBlk Main $2,$2664 @2F2
ProcessMgrNewHandle Main $2,$26CA
C_TEMPNEWHANDLE Main $2,$270A @2FA
LikelyTempMemHList Main $2,$278A
InCurrTempMem Main $2,$27D4
RemoveCurrTempMem Main $2,$282A
RecoverCurrTempHdl Main $2,$288A
C_TEMPHLOCK Main $2,$28E2 @302
C_TEMPHUNLOCK Main $2,$28FC @30A
C_TEMPDISPOSEHANDLE Main $2,$2916 @312
MYGROWZONE Main $2,$2930 @31A
SafeSetGrowZone Main $2,$29F8
StraddleBlockSize Main $2,$2A56 @322
ProcessMgrMaxBlock Main $2,$2AAE
IsEnabledItem Main $2,$2B04
MYIUTEXTORDER Main $2,$2B44 @32A
MenuItemAddress Main $2,$2B92 @332
MenuSelectionGivenName Main $2,$2BDE @33A
ApplyToAllAppleMenus Main $2,$2C48 @342
C_ADDRESMENU Main $2,$2C7C @34A
CheckItemNameAndCharForCutCopy Main $2,$2E2A
C_MENUSELECT Main $2,$2EA8 @352
C_MENUKEY Main $2,$2F3A @35A
C_SETCURSOR Main $2,$2F90 @362
ItemNumFromItemPtr Main $2,$2FD2
StringToAppleItemHdl Main $2,$301C @36A
C_GETAUXMENUITEM Main $2,$306E @372
FLUSHICON Main $2,$31E4 @37A
GETPROCESSICON Main $2,$3212 @382
ChangeIconicTitle Main $2,$32D6
AdjustApplicationMenu Main $2,$32FC @38A
GetProcessIconCache Main $2,$3430 @392
MakeHidingString Main $2,$34C6 @39A
InsertAppInApplicationMenu Main $2,$3508
DeleteAppFromApplicationMenu Main $2,$35CA @3A2
PEntryFromApplicationMenuItem Main $2,$361E
ApplicationMenuItemFromPEntry Main $2,$3646 @3AA
GetApplicationMenuLeftCoord Main $2,$3670 @3B2
RemoveFromAppleMenuList Main $2,$36C2
InTypeList Main $2,$36E8
AcceptedByFileFilter Main $2,$3726
CopyWDToCurProc Main $2,$379E
IsForcedOpen Main $2,$37F4
C_GETPROCESSTRAPADDRESS Main $2,$39E4 @3BA
C_SETPROCESSTRAPADDRESS Main $2,$3AAA @3C2
c_settrapaddress Main $2,$3B3E
GetApplPatch Main $2,$3C0E
UpdatePatchRegistry Main $2,$3C5A
AddApplPatch Main $2,$3D7E
GetRealTrapAddr Main $2,$3DEC
save_or_restore_dispatch Main $2,$3E4C @3CA
kill_dispatch Main $2,$3ED2 @3D2
InitApplPatchTable Main $2,$3F06 @3DA
InitPuppets Main $2,$3F48 @3E2
PuppetKill Main $2,$3F96 @3EA
CoreRequestScratchSwitchTask Main $2,$3FA4 @3F2
DOREQUESTSCRATCHSWITCHTASK Main $2,$4026 @3FA
DOGETACTIVETASKINFO Main $2,$4094 @402
DOGETSWITCHINFO Main $2,$4114 @40A
DOCANCELSWITCH Main $2,$4146 @412
CancelSwitchWithError Main $2,$41EE
AddInstrsHdl Main $2,$4220
PushInstrsHdl Main $2,$4282 @41A
DumpFirstInstr Main $2,$4324
GetActiveInstrsHdl Main $2,$436A
GetNextPuppetEvent Main $2,$4392
Get1MenuStrings Main $2,$496E
GetMenuStrings Main $2,$49BC
CheckLocalPt Main $2,$4A0A
SetMousePosition Main $2,$4AB2
PuppetForceButtonDown Main $2,$4AE6
generate_mousedown_in_menubar Main $2,$4B18
q_push Main $2,$4B40 @422
q_pop Main $2,$4B6C @42A
llsetMatch Main $2,$4B84 @432
llcheck Main $2,$4B96 @43A
llsetlist Main $2,$4BE0 @442
llsetsize Main $2,$4BEE @44A
llinit Main $2,$4C00
llhead Main $2,$4C56 @452
lltail Main $2,$4C68 @45A
llnext Main $2,$4C7C @462
llprevious Main $2,$4CA6 @46A
llretrieve Main $2,$4CD4 @472
lladd Main $2,$4CEC @47A
lladdhead Main $2,$4D5A
lldelete Main $2,$4DB4 @482
ll_length Main $2,$4E8E @48A
ApplyToAllRefEntries Main $2,$4E9E
ClearSharingBitFromEntry Main $2,$4F12 @492
ClearSharingBits Main $2,$4F30
ResetSharedBitForEntry Main $2,$4FAA @49A
C_UPDATERESFILE Main $2,$4FD4
C_RELEASERESOURCE Main $2,$5034
C_GETRESATTRS Main $2,$50DE
GetMapHdlInOtherChainFromRefNum Main $2,$5128
C_GETNAMEDRESOURCE Main $2,$5172
C_SIZERSRC Main $2,$51EA
AddToFrontProcessQueue Main $2,$523E @4A2
PopFrontProcessQueue Main $2,$528A @4AA
RemoveFromFrontProcessQueue Main $2,$52AE @4B2
OrphanScrapIntoPartition Main $2,$5302 @4BA
DisposeOrphanedScrap Main $2,$53AC @4C2
src_scrap_setup Main $2,$53D0 @4CA
StartForegroundSwitch Main $2,$5424
SetThirdSrcCoercionState Main $2,$54CA @4D2
SetFirstDstCoercionState Main $2,$552E @4DA
CheckForCutCopySysEditCmd Main $2,$55BC
CheckForCutCopyMenuKey Main $2,$55F0
FindCutCopyItems Main $2,$5644 @4E2
SyncSIZEInfo Main $2,$56B0
GetSizeInfo Main $2,$571A @4EA
StandardLaunch Main $2,$57C2 @4F2
C_LAUNCH Main $2,$59AA
PutOnSleepQueue Main $2,$5BDC
C_SLEEPPROCESS Main $2,$5C58 @4FA
clkint Main $2,$5CAA @502
PushOnStateList Main $2,$5CF0 @50A
RemoveFromStateList Main $2,$5D20 @512
RoustSleepers Main $2,$5D66
CancelSleep Main $2,$5DC2 @51A
switch_task Main $2,$5DEE @522
C_INITWINDOWS Main $2,$5EFE @52A
PortListKill Main $2,$6002
QDKill Main $2,$606A @532
INITZONE Main $2,$6082 @53A
GETHANDLESIZE Main $2,$608E @542
NGETTRAPADDRESS Main $2,$609C @54A
NSETTRAPADDRESS Main $2,$60B0 @552
PBCLOSE Main $2,$60C4 @55A
PBREAD Main $2,$60D6 @562
PBWRITE Main $2,$60E8 @56A
PBCONTROL Main $2,$60FA @572
GETVOL Main $2,$610C
SETVOL Main $2,$612E @57A
PBOPENWD Main $2,$614E @582
PBCLOSEWD Main $2,$6164
PBGETWDINFO Main $2,$617A
PBGETFCBINFO Main $2,$6190 @58A
PBGETCATINFO Main $2,$61A6 @592
PBHGETFINFO Main $2,$61BC @59A
PBOPENDF Main $2,$61CE @5A2
HANDTOHAND Main $2,$61E4 @5AA
PTRTOHAND Main $2,$61FA @5B2
PPCOPEN Main $2,$6216 @5BA
PPCINFORM Main $2,$622A @5C2
PPCACCEPT Main $2,$623E @5CA
PPCREJECT Main $2,$6252 @5D2
PPCWRITE Main $2,$6266 @5DA
PPCREAD Main $2,$627A @5E2
PPCEND Main $2,$628E @5EA
PPCCLOSE Main $2,$62A2 @5F2
IPCLISTPORTS Main $2,$62B6 @5FA
DELETEUSERIDENTITY Main $2,$62CA @602
STARTSECURESESSION Main $2,$62D8 @60A
LDIVTS Main $2,$62E8
LDIVT Main $2,$62F0 @612 E
ULDIVTS Main $2,$62F8
ULDIVT Main $2,$6300 @61A E
LMODTS Main $2,$6308
LMODT Main $2,$6310 E
ULMODTS Main $2,$6336
ULMODT Main $2,$633E E
size Main $638E
seg kernel_segment 3
a_exittoshell kernel_segment $3,$0 @622
InitializeProcess kernel_segment $3,$16 @62A
FPInit kernel_segment $3,$1C
SwitchAllRegs kernel_segment $3,$24 @632
SwitchCPURegs kernel_segment $3,$60 @63A
disable kernel_segment $3,$80 @642
spl kernel_segment $3,$90 @64A
AtomicVBLSave kernel_segment $3,$A2
dummyvbl kernel_segment $3,$114
save_lmemtab kernel_segment $3,$11C
restore_lmemtab kernel_segment $3,$152
FloatKernelUp kernel_segment $3,$188 @652
FindKeywordParameter kernel_segment $3,$190
ExamineDocList kernel_segment $3,$1E2
NextListParam kernel_segment $3,$25E @65A
SendInstructions kernel_segment $3,$286
SendGenericInstruction kernel_segment $3,$2F4
AppFileAndDocList kernel_segment $3,$35C
FileIDToAppFile kernel_segment $3,$424 @662
SendFileInstruction kernel_segment $3,$4F2
TranslateAppleEvent kernel_segment $3,$5C0 @66A
postTranslationResult kernel_segment $3,$680 @672
AEParmToAppParmHandle kernel_segment $3,$6A0
AppParmHandleToAEParm kernel_segment $3,$816
SendSystemQuit kernel_segment $3,$938
ContinueQuitAll kernel_segment $3,$9C2
CancelQuitAll kernel_segment $3,$A82 @67A
HandleSystemQuit kernel_segment $3,$AC0
AnswerWasFromQuitAll kernel_segment $3,$AF6
HandleFeedback kernel_segment $3,$B84
HandleSystemMessage kernel_segment $3,$C64 @682
postResult kernel_segment $3,$D2E
C_REGISTERDEBUGGER kernel_segment $3,$E4E @68A
C_READWRITEPROCESSMEMORY kernel_segment $3,$EDC @692
C_READWRITEPROCESSFPUREGS kernel_segment $3,$F88 @69A
AddToHList kernel_segment $3,$FDA @6A2
InHList kernel_segment $3,$103C @6AA
RecoverHListElem kernel_segment $3,$1084 @6B2
RemoveFromHList kernel_segment $3,$10D6 @6BA
GetFirstHListElem kernel_segment $3,$113C @6C2
ApplyToHListElems kernel_segment $3,$1168 @6CA
DestroyHList kernel_segment $3,$11A6
C_GETLAYER kernel_segment $3,$11EC @6D2
C_LAYERINSERT kernel_segment $3,$1216 @6DA
C_LAYERDELETE kernel_segment $3,$1226 @6E2
C_LNEWWINDOW kernel_segment $3,$123A @6EA
C_LCLOSEWINDOW kernel_segment $3,$1248 @6F2
C_LCALCVIS kernel_segment $3,$1256 @6FA
C_LCVBEHIND kernel_segment $3,$1266 @702
C_LPAINTONE kernel_segment $3,$1278 @70A
C_LPAINTBEHIND kernel_segment $3,$128A @712
C_LSHOWHIDE kernel_segment $3,$129C @71A
C_LCLIPABOVE kernel_segment $3,$12AC @722
C_MAKETOPLAYER kernel_segment $3,$12D8 @72A
C_LAYERCLOSE kernel_segment $3,$1354 @732
C_LAYERINIT kernel_segment $3,$1380 @73A
C_LGETNEXTLAYER kernel_segment $3,$13DC @742
C_LAYERFIND kernel_segment $3,$143E @74A
C_LGETAUXWIN kernel_segment $3,$1494 @752
C_LCOLORINVALRECT kernel_segment $3,$14D4 @75A
HIDELAYER kernel_segment $3,$1500 @762
ShowHideOthers kernel_segment $3,$15F6 @76A
FindAppBaseLayer kernel_segment $3,$1628 @772
CANCELUPDATEACTION kernel_segment $3,$1664 @77A
CancelPendingUpdates kernel_segment $3,$1680 @782
C_NEWFLOATLAYER kernel_segment $3,$16A8 @78A
C_DISPOSEFLOATLAYER kernel_segment $3,$175A @792
InsertCustomItem kernel_segment $3,$17A0 @79A
InsertCustomItemSorted kernel_segment $3,$180A @7A2
C_ADDAPPLEMENUITEM kernel_segment $3,$194E @7AA
DeleteCustomItemFromMenu kernel_segment $3,$1B16 @7B2
DeleteCustomItem kernel_segment $3,$1BA4
DeleteAppleItem kernel_segment $3,$1C18
C_DELETEAPPLEMENUITEM kernel_segment $3,$1CF0 @7BA
SendAppleMenuSelectMsg kernel_segment $3,$1D26 @7C2
AppleMenuCleanup kernel_segment $3,$1DD6
C_KERNELLAUNCH kernel_segment $3,$1E1C @7CA
C_TWFGSWITCH kernel_segment $3,$1E4E @7D2
C_KILLPROCESS kernel_segment $3,$1E92 @7DA
C_TWGETPID kernel_segment $3,$1EF6 @7E2
C_TWGETPROCINFO kernel_segment $3,$1F2E @7EA
C_GETCURRENTPROCESS kernel_segment $3,$2060 @7F2
C_GETSYSTEMCLIENTPROCESS kernel_segment $3,$20A4 @7FA
C_GETNEXTPROCESS kernel_segment $3,$20FA @802
C_GETPROCESSFROMLAYER kernel_segment $3,$21AE @80A
C_SAMEPROCESS kernel_segment $3,$223C @812
C_GETPROCESSINFORMATION kernel_segment $3,$22D4 @81A
C_SETFRONTPROCESS kernel_segment $3,$2424 @822
c_Wakeup kernel_segment $3,$24B8 @82A
C_WAKEUPPROCESS kernel_segment $3,$24EE @832
C_BEGINSYSTEMMODE kernel_segment $3,$253A @83A
C_ENDSYSTEMMODE kernel_segment $3,$2566 @842
C_NEWDESKTOPLAYEROWNER kernel_segment $3,$259C @84A
C_PENTRYFROMPROCESSSERIALNUMBER kernel_segment $3,$25DC @852
C_DISABLESWITCHING kernel_segment $3,$2640 @85A
C_ENABLESWITCHING kernel_segment $3,$2662 @862
C_GETPRTYPESTRINGS kernel_segment $3,$268A @86A
C_SETPRTYPESTRINGS kernel_segment $3,$271E @872
C_TWPOSTALLPSEUDOEVENT kernel_segment $3,$2786 @87A
C_TWPOSTPSEUDOEVENT kernel_segment $3,$279C @882
C_SETSTDFILEDIR kernel_segment $3,$27AC @88A
C_BACKGROUNDNOTIFY kernel_segment $3,$27BC @892
C_INLINEAWARE kernel_segment $3,$27CA @89A
C_NEWTSMLAYEROWNER kernel_segment $3,$2824 @8A2
C_ROUTEEVENTTOSWM kernel_segment $3,$2860 @8AA
NewProcessEntryClear kernel_segment $3,$2890
DisposeProcessEntry kernel_segment $3,$2918
NewProcess kernel_segment $3,$292A
userret kernel_segment $3,$2CFC @8B2
CreateProcess kernel_segment $3,$2D06
InitHeapZone kernel_segment $3,$3018
InitLowMemory kernel_segment $3,$30AC
GetCeilingPtr kernel_segment $3,$317A
GetProcessMemory kernel_segment $3,$321C
GetFinderInfoForFile kernel_segment $3,$3348
HandleShellDeath kernel_segment $3,$33DA
DisposeProcessMemory kernel_segment $3,$34DE
MenuKill kernel_segment $3,$3588
NMKill kernel_segment $3,$35C8
FMKill kernel_segment $3,$363E @8BA
MakeSynStrikesPurgeable kernel_segment $3,$3714 @8C2
SendDeathNotice kernel_segment $3,$3764
C_EXITTOSHELL kernel_segment $3,$3842
PEntryFromPID kernel_segment $3,$3B7A @8CA
EqualPSN kernel_segment $3,$3BB2 @8D2
PEntryFromPSN kernel_segment $3,$3BE2 @8DA
PEntryFromFileSpec kernel_segment $3,$3C3E @8E2
BringProcessToFront kernel_segment $3,$3CD6 @8EA
imLayerMouseDown kernel_segment $3,$3D62
SendEventToSWMDriver kernel_segment $3,$3E18 @8F2
fg_resched kernel_segment $3,$3E56 @8FA
cpu_resched kernel_segment $3,$409A @902
nexttask kernel_segment $3,$40DC
nextback kernel_segment $3,$4214
PrepareForUpdate kernel_segment $3,$425A
ActivateTopWindow kernel_segment $3,$4288
PutUpFakeWindow kernel_segment $3,$42FC @90A
TakeDownFakeWindow kernel_segment $3,$4352 @912
MoveScrap kernel_segment $3,$437A
IsScrapOwnedByCurrentProcess kernel_segment $3,$443E @91A
ScrapIO kernel_segment $3,$4474
Coercion_State_Engine kernel_segment $3,$4508 @922
NewAppParmHandle kernel_segment $3,$4992
SizeOfThisAppFile kernel_segment $3,$49BC
NextAppFile kernel_segment $3,$49E6
CopyAppParmHandle kernel_segment $3,$4A08
SetAppParameters kernel_segment $3,$4AE4
OpenAppWDs kernel_segment $3,$4BC0
BeginApplication kernel_segment $3,$4CD2
C_RDRVRINSTALL kernel_segment $3,$4D02 @92A
save_state kernel_segment $3,$4D12 @932
restore_state kernel_segment $3,$4D56 @93A
kill_state kernel_segment $3,$4DC6
save_lomem kernel_segment $3,$4DFE
restore_lomem kernel_segment $3,$4ED6
save_vbl kernel_segment $3,$4FDA
restore_vbl kernel_segment $3,$500C
kill_vbl kernel_segment $3,$506A
save_dce kernel_segment $3,$50B4
restore_dce kernel_segment $3,$51FC
kill_dce kernel_segment $3,$5248
GiveGoodByeKiss kernel_segment $3,$5358
save_hooks kernel_segment $3,$539A
restore_hooks kernel_segment $3,$53C6
kill_hooks kernel_segment $3,$53EE
SetOverlayRecoverHandle kernel_segment $3,$5406 @942
GetOverlayRecoverHandleOldTrap kernel_segment $3,$5424 @94A
MemClear kernel_segment $3,$5452 @952
StripLeadingNulls kernel_segment $3,$5472 @95A
NewMungedString kernel_segment $3,$54AC @962
StrInStrList kernel_segment $3,$5522 @96A
GetRsrcHdlMatchingFirstLongword kernel_segment $3,$5564
GetIconIDFromBundle kernel_segment $3,$55B0 @972
OptionKeyIsDown kernel_segment $3,$563A @97A
size kernel_segment $565E
seg eppc_segment 4
FloatEppcUp eppc_segment $4,$0 @982
ePPCInit eppc_segment $4,$8 @98A
C_GETPORTNAMEFROMPSN eppc_segment $4,$6C @992
C_GETPSNFROMPORTNAME eppc_segment $4,$B0 @99A
C_GETSPECIFICHIGHLEVELEVENT eppc_segment $4,$F4 @9A2
copyMsg eppc_segment $4,$46C
C_ACCEPTHIGHLEVELEVENT eppc_segment $4,$4D4 @9AA
getSessionRecord eppc_segment $4,$5C2
FlushHLEQueue eppc_segment $4,$698
flushMsg eppc_segment $4,$748 @9B2
fetchMsgData eppc_segment $4,$78A
postReturnReceipt eppc_segment $4,$852 @9BA
C_POSTHIGHLEVELEVENT eppc_segment $4,$8BA @9C2
CreateMsgQ eppc_segment $4,$A4E @9CA
makePortName eppc_segment $4,$B32
openPPCPort eppc_segment $4,$C58
doDuplicateNameOpen eppc_segment $4,$CE6
GetNextPortName eppc_segment $4,$D26
closePPCPort eppc_segment $4,$D68
DestroyMsgQ eppc_segment $4,$DBE @9D2
breakConnections eppc_segment $4,$E6E
DeleteBQEntries eppc_segment $4,$F32
GetMsgEventBuffer eppc_segment $4,$101C
RelMsgEventBuffer eppc_segment $4,$10A2 @9DA
postMsg eppc_segment $4,$10C6 @9E2
postMsgToPPC eppc_segment $4,$1120
C_GETNEXTHIGHLEVELEVENT eppc_segment $4,$11AA @9EA
scanInformBQ eppc_segment $4,$1282
scanWriteBQ eppc_segment $4,$143E
scanReadBQ eppc_segment $4,$1584
endSessionAfterAReadError eppc_segment $4,$1784
GetConnectionType eppc_segment $4,$1802
validateSessionID eppc_segment $4,$1B04
comparePortNames eppc_segment $4,$1B90
comparePortLocation eppc_segment $4,$1C52
PortNameAndLocationAreEqual eppc_segment $4,$1D1C
getTIDfromEppcBlk eppc_segment $4,$1D72
findSessionRecord eppc_segment $4,$1DAE
findFreeSessionRecord eppc_segment $4,$1E0A
getSessionID eppc_segment $4,$1E3A
restartPPCRead eppc_segment $4,$214A
startPPCRead eppc_segment $4,$2188
guestAllowed eppc_segment $4,$21C6
findElement eppc_segment $4,$2250 @9F2
byPSN eppc_segment $4,$226C @9FA
byPortName eppc_segment $4,$2288 @A02
bySignature eppc_segment $4,$22AE @A0A
bySessionID eppc_segment $4,$22CC @A12
byportID eppc_segment $4,$22E6 @A1A
PSNFromName eppc_segment $4,$2300
NameFromPSN eppc_segment $4,$2380
PSNFromSignature eppc_segment $4,$23F0
EPPCBlkFromPSN eppc_segment $4,$2470
releasePPCpb eppc_segment $4,$24B0
getPPCInformPB eppc_segment $4,$24D0
getPPCReadPB eppc_segment $4,$254C
qPPCPb eppc_segment $4,$25C0
KnockKnock eppc_segment $4,$25E6 @A22
size eppc_segment $26C4
seg Debugger 5
CoreRegisterDebugger Debugger $5,$0 @A2A
swap_state Debugger $5,$AE
CoreReadWriteProcessMemory Debugger $5,$E6 @A32
CoreReadWriteProcessFPURegs Debugger $5,$15A @A3A
InitDebuggerExceptions Debugger $5,$23A
UnplugDebuggerExceptions Debugger $5,$300
CallDebugger Debugger $5,$358 @A42
size Debugger $444
seg zone24_tools 6
ZoneMPBlockPtr24 zone24_tools $6,$0 @A4A
MakeNonRelocatable24 zone24_tools $6,$10 @A52
GetProcessMgrLoFreeBytes24 zone24_tools $6,$32 @A5A
GetSystemHiFreeBytes24 zone24_tools $6,$CC @A62
ExtendZone24 zone24_tools $6,$142 @A6A
MoveZone24 zone24_tools $6,$198 @A72
ShrinkProcessMgrZone24 zone24_tools $6,$2CA @A7A
GetLockPtr24 zone24_tools $6,$33C @A82
GetProcessMgrHiMaxBlock24 zone24_tools $6,$3E8 @A8A
GetHighestLargeFreeBlock24 zone24_tools $6,$4A8 @A92
GetTopBlockSize24 zone24_tools $6,$504 @A9A
FreeTop24 zone24_tools $6,$538 @AA2
ChipOffRelocFromFree24 zone24_tools $6,$580 @AAA
InitVectorTable24 zone24_tools $6,$618 @AB2
size zone24_tools $698
seg zone32_tools 7
ZoneMPBlockPtr32 zone32_tools $7,$0 @ABA
MakeNonRelocatable32 zone32_tools $7,$10 @AC2
GetProcessMgrLoFreeBytes32 zone32_tools $7,$40 @ACA
GetSystemHiFreeBytes32 zone32_tools $7,$BC @AD2
ExtendZone32 zone32_tools $7,$11E @ADA
MoveZone32 zone32_tools $7,$160 @AE2
ShrinkProcessMgrZone32 zone32_tools $7,$25C @AEA
GetLockPtr32 zone32_tools $7,$2CA @AF2
GetProcessMgrHiMaxBlock32 zone32_tools $7,$2D4 @AFA
GetHighestLargeFreeBlock32 zone32_tools $7,$37C @B02
GetTopBlockSize32 zone32_tools $7,$3CA @B0A
FreeTop32 zone32_tools $7,$3FA @B12
ChipOffRelocFromFree32 zone32_tools $7,$434 @B1A
InitVectorTable32 zone32_tools $7,$4A2 @B22
size zone32_tools $522
seg zone_tools 8
InitMPBlock zone_tools $8,$0 @B2A
PROCESSMGRSYSGZPROC zone_tools $8,$5A @B32
ShrinkSysHeap zone_tools $8,$FA
LowerProcessMgrZoneBottom zone_tools $8,$1C6
PROCESSMGRGZPROC zone_tools $8,$20C @B3A
ReclaimSpaceIfSysHeapLow zone_tools $8,$280 @B42
ProcessMgrHiNewHandle zone_tools $8,$33A @B4A
ProcessMgrHMakeMoreMasters zone_tools $8,$4A6 @B52
size zone_tools $4FA
seg %A5Init 9
_DATAINIT %A5Init $9,$0
_DataInit %A5Init $9,$0 @B5A E
uncompress_world %A5Init $9,$5A #
get_rl %A5Init $9,$B6 #
relocate_world %A5Init $9,$10A #
ZEROBUFFER %A5Init $9,$166 #
#0001 %A5Init $9,$1A8 #
_A5Init3 %A5Init $9,$1AA E
size %A5Init $1AA
""".split('\n')
fnames = """BuildResults/Sys/Obj/MenuMgrPatches.c.o.pmdmp
BuildResults/Sys/Obj/ResourceMgrPatches.c.o.pmdmp
BuildResults/Sys/Obj/Data.c.o.pmdmp
BuildResults/Sys/Obj/MemoryMgrPatches.c.o.pmdmp
BuildResults/Sys/Obj/Processes.c.o.pmdmp
BuildResults/Sys/Obj/Debugger.c.o.pmdmp
BuildResults/Sys/Obj/Startup.c.o.pmdmp
BuildResults/Sys/Obj/AppleEventExtensions.c.o.pmdmp
BuildResults/Sys/Obj/MemoryMgr24Patches.c.o.pmdmp
BuildResults/Sys/Obj/FileSystem.c.o.pmdmp
BuildResults/Sys/Obj/Schedule.c.o.pmdmp
BuildResults/Sys/Obj/LayerMgrPatches.c.o.pmdmp
BuildResults/Sys/Obj/ProcessMgrMisc.a.o.pmdmp
BuildResults/Sys/Obj/Utilities.c.o.pmdmp
BuildResults/Sys/Obj/HList.c.o.pmdmp
BuildResults/Sys/Obj/Puppet.c.o.pmdmp
BuildResults/Sys/Obj/PackageMgrPatches.c.o.pmdmp
BuildResults/Sys/Obj/Error.a.o.pmdmp
BuildResults/Sys/Obj/DeskMgrPatches.c.o.pmdmp
BuildResults/Sys/Obj/SegmentLoaderPatches.c.o.pmdmp
BuildResults/Sys/Obj/Queue.c.o.pmdmp
BuildResults/Sys/Obj/OSDispatch.a.o.pmdmp
BuildResults/Sys/Obj/ZoomRect.a.o.pmdmp
BuildResults/Sys/Obj/Switch.a.o.pmdmp
BuildResults/Sys/Obj/EventMgrPatches.c.o.pmdmp
BuildResults/Sys/Obj/MemoryMgr32Patches.c.o.pmdmp
BuildResults/Sys/Obj/Patches.c.o.pmdmp
BuildResults/Sys/Obj/WindowMgrPatches.c.o.pmdmp
BuildResults/Sys/Obj/Sleep.c.o.pmdmp
BuildResults/Sys/Obj/Switch.c.o.pmdmp
BuildResults/Sys/Obj/OSDispatch.c.o.pmdmp
BuildResults/Sys/Obj/Eppc.c.o.pmdmp
BuildResults/Sys/Obj/ScrapCoercion.c.o.pmdmp
BuildResults/Sys/Obj/Memory.c.o.pmdmp
BuildResults/Sys/Obj/Error.c.o.pmdmp""".split()
def srippify(nam):
return nam.split('/')[-1][:-8]
fconts = []
for f in fnames:
fconts.append(open(f, 'rb').read())
for line in lines:
if '\t' in line and line[0] not in ' \t':
a, b, c = line.partition('\t')
searchfor = b'Module="%s"' % a.encode('ascii')
for i in range(len(fnames)):
if searchfor in fconts[i]:
line = srippify(fnames[i]) + ':' + line
print(line)