George D. Plymale II's multi-tty support patch
https://bitbucket.org/mituharu/emacs-mac/pull-requests/2

--- lisp/server.el
+++ lisp/server.el
@@ -1263,10 +1263,9 @@
                  ;; choice there.)  In daemon mode on Windows, we can't
                  ;; make tty frames, so force the frame type to GUI
                  ;; there too.
-                 (when (or (and (eq system-type 'windows-nt)
-                                (or (daemonp)
-                                    (eq window-system 'w32)))
-                           (eq window-system 'mac))
+                 (when (and (eq system-type 'windows-nt)
+                            (or (daemonp)
+                                (eq window-system 'w32)))
                    (push "-window-system" args-left)))
 
                 ;; -position +LINE[:COLUMN]:  Set point to the given
--- src/frame.c
+++ src/frame.c
@@ -1351,12 +1351,8 @@
     emacs_abort ();
 #else /* not MSDOS */
 
-#if defined WINDOWSNT || defined HAVE_MACGUI /* This should work now! */
-  if (sf->output_method != output_termcap
-#ifdef HAVE_MACGUI
-      && sf->output_method != output_initial
-#endif
-      )
+#ifdef WINDOWSNT                           /* This should work now! */
+  if (sf->output_method != output_termcap)
     error ("Not using an ASCII terminal now; cannot make a new ASCII frame");
 #endif
 #endif /* not MSDOS */
--- src/macterm.c
+++ src/macterm.c
@@ -2980,6 +2980,7 @@
   struct frame *f1;
   struct mac_display_info *dpyinfo = FRAME_DISPLAY_INFO (*fp);
   bool return_no_frame_flag = false;
+  struct frame *sf = SELECTED_FRAME ();
 
   block_input ();
 
@@ -3018,7 +3019,7 @@
 	f1 = XFRAME (mac_event_frame ());
     }
 
-  if (f1)
+  if (f1 && sf->output_method != output_termcap)
     {
       /* Ok, we found a frame.  Store all the values.
 	 last_mouse_glyph is a rectangle used to reduce the generation
