diff --git a/Mac/Contrib/mpwsystem/mpwsystem.py b/Mac/Contrib/mpwsystem/mpwsystem.py
new file mode 100644
index 0000000..34646c4
--- /dev/null
+++ b/Mac/Contrib/mpwsystem/mpwsystem.py
@@ -0,0 +1,67 @@
+
+"""mpwsystem -
+A simple example of how to use Apple Events to implement a "system()"
+call that invokes ToolServer on the command.
+
+Contributed by Daniel Brotsky <dev@brotsky.com>.
+
+(renamed from aesystem to mpwsystem by Jack)
+
+system(cmd, infile = None, outfile = None, errfile = None)
+
+1. Every call to system sets "lastStatus" and "lastOutput" to the 
+status and output
+produced by the command when executed in ToolServer.  (lastParameters 
+and lastAttributes
+are set to the values of the AppleEvent result.)
+
+2. system returns lastStatus unless the command result indicates a MacOS error,
+in which case os.Error is raised with the errnum as associated value.
+
+3. You can specify ToolServer-understandable pathnames for 
+redirection of input,
+output, and error streams.  By default, input is Dev:Null, output is captured
+and returned to the caller, diagnostics are captured and returned to 
+the caller.
+(There's a 64K limit to how much can be captured and returned this way.)"""
+
+import os
+import aetools
+
+try: server
+except NameError: server = aetools.TalkTo("MPSX", 1)
+
+lastStatus = None
+lastOutput = None
+lastErrorOutput = None
+lastScript = None
+lastEvent = None
+lastReply = None
+lastParameters = None
+lastAttributes = None
+
+def system(cmd, infile = None, outfile = None, errfile = None):
+	global lastStatus, lastOutput, lastErrorOutput
+	global lastScript, lastEvent, lastReply, lastParameters, lastAttributes
+	cmdline = cmd
+	if infile: cmdline += " <" + infile
+	if outfile: cmdline += " >" + outfile
+	if errfile: cmdline += " " + str(chr(179)) + errfile
+	lastScript = "set Exit 0\r" + cmdline + "\rexit {Status}"
+	lastEvent = server.newevent("misc", "dosc", {"----" : lastScript})
+	(lastReply, lastParameters, lastAttributes) = server.sendevent(lastEvent)
+	if lastParameters.has_key('stat'): lastStatus = lastParameters['stat']
+	else: lastStatus = None
+	if lastParameters.has_key('----'): lastOutput = lastParameters['----']
+	else: lastOutput = None
+	if lastParameters.has_key('diag'): lastErrorOutput = lastParameters['diag']
+	else: lastErrorOutput = None
+	if lastParameters['errn'] != 0:
+		raise os.Error, lastParameters['errn']
+	return lastStatus
+	
+if __name__ == '__main__':
+	sts = system('alert "Hello World"')
+	print 'system returned', sts
+	
+	
