diff --git a/Mac/MPW/Build b/Mac/MPW/Build
new file mode 100644
index 0000000..f85c0da
--- /dev/null
+++ b/Mac/MPW/Build
@@ -0,0 +1,3 @@
+Make {1} -f MakeFile >Make.out
+Set Echo 1
+Make.out
diff --git a/Mac/mkapplet.py b/Mac/mkapplet.py
new file mode 100644
index 0000000..d5cfba3
--- /dev/null
+++ b/Mac/mkapplet.py
@@ -0,0 +1,89 @@
+"""Add a 'PYC ' resource named "__main__" to a resource file.
+
+This first puts up a dialog asking for a Python source file ('TEXT'),
+then one asking for an existing destination file ('APPL' or 'rsrc').
+
+It compiles the Python source into a code object, marshals it into a string,
+prefixes the string with a .pyc header, and turns it into a resource,
+which is then written to the destination.
+
+If the destination already contains a resource with the same name and type,
+it is overwritten.
+"""
+
+import marshal
+import imp
+import macfs
+from Res import *
+
+# .pyc file (and 'PYC ' resource magic number)
+MAGIC = imp.get_magic()
+
+# Complete specification of our resource
+RESTYPE = 'PYC '
+RESID = 128
+RESNAME = '__main__'
+
+# OpenResFile mode parameters
+READ = 1
+WRITE = 2
+
+def main():
+	
+	# Ask for source text
+	
+	srcfss, ok = macfs.StandardGetFile('TEXT')
+	if not ok: return
+	
+	# Read the source and compile it
+	# (there's no point asking for a destination if it has a syntax error)
+	
+	filename = srcfss.as_pathname()
+	fp = open(filename)
+	text = fp.read()
+	fp.close()
+	code = compile(text, filename, "exec")
+	
+	# Ask for destination file
+	
+	dstfss, ok = macfs.StandardGetFile('APPL', 'rsrc')
+	if not ok: return
+	
+	# Create the raw data for the resource from the code object
+	
+	data = marshal.dumps(code)
+	del code
+	data = (MAGIC + '\0\0\0\0') + data
+	
+	# Open the resource file
+	
+	fnum = FSpOpenResFile(dstfss.as_pathname(), WRITE)
+	
+	# Delete any existing resource with name __main__ or number 128
+	
+	try:
+		res = Get1NamedResource(RESTYPE, RESNAME)
+		res.RmveResource()
+	except Error:
+		pass
+	
+	try:
+		res = Get1Resource(RESTYPE, RESID)
+		res.RmveResource()
+	except Error:
+		pass
+	
+	# Create the resource and write it
+	
+	res = Resource(data)
+	res.AddResource(RESTYPE, RESID, RESNAME)
+	# XXX Are the following two calls needed?
+	res.WriteResource()
+	res.ReleaseResource()
+	
+	# Close the resource file
+	
+	CloseResFile(fnum)
+
+if __name__ == '__main__':
+	main()
