mirror of
https://github.com/elliotnunn/ToolboxToolbox.git
synced 2024-06-08 03:29:28 +00:00
More junk
This commit is contained in:
parent
99d17e5656
commit
48345cd9c8
21
BuildMiniVmac.sh
Executable file
21
BuildMiniVmac.sh
Executable 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
217
CCompilerPatcher.py
Executable 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
84
CategorizeRoms.py
Executable 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)
|
|
@ -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
11
System7InSS.sh
Executable 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
35
alias2ln.sh
Executable 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
50
bloodbath
Executable 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
15
cmpscod.sh
Executable 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
5
comparelp.sh
Executable 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
3
dump
Executable 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
8
dumpall
Executable 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
9
fdump
Executable 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
189
fsnek
Executable 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
51
mpwobject.py
Normal 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
781
process-mgr-seg-lister
Normal 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)
|
Loading…
Reference in New Issue
Block a user