Generalize to macintosh.
diff --git a/Include/pgenheaders.h b/Include/pgenheaders.h
index 4712431..59c7e32 100644
--- a/Include/pgenheaders.h
+++ b/Include/pgenheaders.h
@@ -25,11 +25,15 @@
 /* Include files and extern declarations used by most of the parser.
    This is a precompiled header for THINK C. */
 
+#ifdef THINK_C
+#define macintosh
+/* #define THINK_C_3_0		/*** TURN THIS ON FOR THINK C 3.0 ***/
+#endif
+
 #include <stdio.h>
 #include <string.h>
 
 #ifdef THINK_C
-/* #define THINK_C_3_0			/*** TURN THIS ON FOR THINK C 3.0 ****/
 #define label label_
 #undef label
 #endif
@@ -38,7 +42,7 @@
 #include <proto.h>
 #endif
 
-#ifdef THINK_C
+#ifdef macintosh
 #ifndef THINK_C_3_0
 #include <stdlib.h>
 #endif
diff --git a/Parser/intrcheck.c b/Parser/intrcheck.c
index 8dbeb5f..ee14eca 100644
--- a/Parser/intrcheck.c
+++ b/Parser/intrcheck.c
@@ -24,6 +24,11 @@
 
 /* Check for interrupts */
 
+#ifdef THINK_C
+#define macintosh
+#endif
+
+
 #ifdef MSDOS
 
 /* This might work for MS-DOS (untested though): */
@@ -49,19 +54,26 @@
 #endif
 
 
-#ifdef THINK_C
+#ifdef macintosh
 
+#ifdef THINK_C
 /* This is for THINK C 4.0.
    For 3.0, you may have to remove the signal stuff. */
-
 #include <MacHeaders>
+#else
+/* This is for MPW 3.1 */
+/* XXX Untested */
+#include <OSEvents.h>
+#include <SysEqu.h>
+#endif
+
 #include <signal.h>
 #include "sigtype.h"
 
 static int interrupted;
 
 static SIGTYPE
-intcatcher(sig)
+intcatcher(ig)
 	int sig;
 {
 	interrupted = 1;
@@ -80,17 +92,15 @@
 {
 	register EvQElPtr q;
 	
-	/* This is like THINK C 4.0's <console.h>.
-	   I'm not sure why FlushEvents must be called from asm{}. */
-	for (q = (EvQElPtr)EventQueue.qHead; q; q = (EvQElPtr)q->qLink) {
+	/* This is like THINK C 4.0's <console.h> */
+	/* q = (EvQElPtr) EventQueue.qHead; */
+	q = (EvQElPtr) GetEvQHdr()->qHead;
+	
+	for (; q; q = (EvQElPtr)q->qLink) {
 		if (q->evtQWhat == keyDown &&
 				(char)q->evtQMessage == '.' &&
 				(q->evtQModifiers & cmdKey) != 0) {
-			
-			asm {
-				moveq	#keyDownMask,d0
-				_FlushEvents
-			}
+			FlushEvents(keyDownMask, 0);
 			interrupted = 1;
 			break;
 		}
@@ -104,7 +114,7 @@
 
 #define OK
 
-#endif /* THINK_C */
+#endif /* macintosh */
 
 
 #ifndef OK
diff --git a/Parser/pgenmain.c b/Parser/pgenmain.c
index c1bd486..da6aa2e 100644
--- a/Parser/pgenmain.c
+++ b/Parser/pgenmain.c
@@ -42,7 +42,7 @@
 
 /* Forward */
 grammar *getgrammar PROTO((char *filename));
-#ifdef THINK_C
+#ifdef macintosh
 int main PROTO((int, char **));
 char *askfile PROTO((void));
 #endif
@@ -57,7 +57,7 @@
 	FILE *fp;
 	char *filename;
 	
-#ifdef THINK_C
+#ifdef macintosh
 	filename = askfile();
 #else
 	if (argc != 2) {
@@ -115,7 +115,7 @@
 	return g;
 }
 
-#ifdef THINK_C
+#ifdef macintosh
 char *
 askfile()
 {
diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c
index 62a3da0..ccff9d1 100644
--- a/Parser/tokenizer.c
+++ b/Parser/tokenizer.c
@@ -37,7 +37,7 @@
 #include "tokenizer.h"
 #include "errcode.h"
 
-#ifdef THINK_C
+#ifdef macintosh
 #define TABSIZE 4
 #endif
 
diff --git a/Python/import.c b/Python/import.c
index a4995ea..f62d1d2 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -37,13 +37,9 @@
 #include "compile.h"
 #include "ceval.h"
 
-#ifdef THINK_C
-#define macintosh
-#endif
-
 /* Define pathname separator used in file names */
 
-#ifdef THINK_C
+#ifdef macintosh
 #define SEP ':'
 #endif
 
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index e66223e..69489c8 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -45,7 +45,7 @@
 
 /* Define delimiter used in $PYTHONPATH */
 
-#ifdef THINK_C
+#ifdef macintosh
 #define DELIM ' '
 #endif