Index: main/window/generic.lisp
===================================================================
--- main/window/generic.lisp	(revision main,66)
+++ main/window/generic.lisp	(revision main,86)
@@ -18,4 +18,5 @@
    #:screen-window-destruction-error
    #:with-screen
+   #:without-screen
    #:with-screen-window))
 
Index: main/window/screen.lisp
===================================================================
--- main/window/screen.lisp	(revision main,82)
+++ main/window/screen.lisp	(revision main,86)
@@ -27,4 +27,6 @@
 (defcfun "endwin" :int)
 
+(defvar *screen*)
+
 (defmacro with-screen ((screen) &body body)
   (with-gensyms (ptr)
@@ -38,7 +40,15 @@
                 (let ((j (1+ i)))
                   (init-pair j (mod j 8) (floor j 8))))
-              (let ((,screen (make-instance 'screen-window :ptr ,ptr)))
+              (let* ((*screen* (make-instance 'screen-window :ptr ,ptr))
+                     (,screen *screen*))
                 ,@body))
          (endwin)))))
+
+(defmacro without-screen (&body body)
+  `(unwind-protect
+        (progn
+          (endwin)
+          (progn ,@body))
+     (refresh *screen*)))
 
 
