Added SysBeep
diff --git a/Mac/Modules/macosmodule.c b/Mac/Modules/macosmodule.c
index d187ac3..1717d39 100644
--- a/Mac/Modules/macosmodule.c
+++ b/Mac/Modules/macosmodule.c
@@ -482,13 +482,13 @@
 	if ( schp.process_events )
 		old = 1;
 	else if ( schp.check_interrupt )
-		old = -1;
-	else
 		old = 0;
+	else
+		old = -1;
 	if ( new > 0 ) {
 		schp.process_events = mDownMask|keyDownMask|osMask;
 		schp.check_interrupt = 1;
-	} else if ( new < 0 ) {
+	} else if ( new == 0 ) {
 		schp.process_events = 0;
 		schp.check_interrupt = 1;
 	} else {
@@ -555,16 +555,14 @@
 {
 	int resid = -1;
 	static DialogPtr curdialog = NULL;
+	DialogPtr olddialog;
 	WindowRef theWindow;
 	CGrafPtr thePort;
 	short xpos, ypos, width, height, swidth, sheight;
 	
 	if (!PyArg_ParseTuple(args, "|i", &resid))
 		return NULL;
-	if (curdialog) {
-		DisposeDialog(curdialog);
-		curdialog = NULL;
-	}
+	olddialog = curdialog;
 		
 	if ( resid != -1 ) {
 		curdialog = GetNewDialog(resid, NULL, (WindowPtr)-1);
@@ -582,6 +580,8 @@
 			DrawDialog(curdialog);
 		}
 	}
+	if (olddialog)
+		DisposeDialog(olddialog);
 	Py_INCREF(Py_None);
 	return Py_None;
 }
@@ -601,6 +601,20 @@
 	return Py_None;
 }
 
+static char SysBeep_doc[] = "BEEEEEP!!!";
+
+static PyObject *
+MacOS_SysBeep(PyObject *self, PyObject *args)
+{
+	int duration = 6;
+	
+	if (!PyArg_ParseTuple(args, "|i", &duration))
+		return NULL;
+	SysBeep(duration);
+	Py_INCREF(Py_None);
+	return Py_None;
+}
+
 static char GetTicks_doc[] = "Return number of ticks since bootup";
 
 static PyObject *
@@ -685,6 +699,7 @@
 	{"splash",			MacOS_splash,		1, 	splash_doc},
 	{"DebugStr",			MacOS_DebugStr,		1,	DebugStr_doc},
 	{"GetTicks",			MacOS_GetTicks,		1,	GetTicks_doc},
+	{"SysBeep",			MacOS_SysBeep,		1,	SysBeep_doc},
 	{NULL,				NULL}		 /* Sentinel */
 };