-struct timezone timezone;
-
-char ibuf[512];
-char *ibufp;
-int ibufc;
-#define bgetc() (ibufc ? ibufc--, *ibufp++&0x7f : -1)
-#define bpeekc() (ibufc ? *ibufp&0x7f : -1)
-#define bungetc(c) (ibufp > ibuf ? ibufc++, *--ibufp = (c) : -1)
-
-struct ww *selwin;
-struct ww *cmdwin;
-
-char quit;
-char terse;
-char escapec;
-
- /* flags to doclose() */
-#define CLOSE_ONE 0
-#define CLOSE_ALL 1
-#define CLOSE_DEAD 2
+
+struct ww *window[NWINDOW]; /* the windows */
+struct ww *selwin; /* the selected window */
+struct ww *lastselwin; /* the last selected window */
+struct ww *cmdwin; /* the command window */
+struct ww *framewin; /* the window for framing */
+struct ww *boxwin; /* the window for the box */
+struct ww *fgwin; /* the last foreground window */
+
+#define isfg(w) ((w)->ww_order <= fgwin->ww_order)
+
+char *shell[128]; /* the shell argv */
+char *shellfile; /* the shell program */
+int nbufline; /* default buffer size for new windows */
+char escapec; /* the escape character */
+
+ /* flags */
+char quit; /* quit command issued */
+char terse; /* terse mode */
+char debug; /* debug mode */
+char incmd; /* in command mode */
+
+struct ww *getwin();
+struct ww *openwin();
+struct ww *vtowin();
+struct ww *openiwin();