diff --git a/hemlock/rompsite.lisp b/hemlock/rompsite.lisp
index ffd419428c8203da42b6bc881ec91bb376faa774..9ba05080d688bb0eac3dc1611b972c074c397d35 100644
--- a/hemlock/rompsite.lisp
+++ b/hemlock/rompsite.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman or slisp-group@cs.cmu.edu.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/hemlock/rompsite.lisp,v 1.1.1.27 1993/07/23 13:24:30 ram Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/hemlock/rompsite.lisp,v 1.1.1.28 1993/07/26 19:49:45 hallgren Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -928,9 +928,63 @@
 
 (defvar old-ltchars)
 
+#+hpux
+(progn
+  (defvar old-c-iflag)
+  (defvar old-c-oflag)
+  (defvar old-c-cflag)
+  (defvar old-c-lflag)
+  (defvar old-c-cc))
+
 (defun setup-input ()
   (let ((fd *editor-file-descriptor*))
     (when (unix:unix-isatty 0)
+      #+hpux
+      (alien:with-alien ((tios (alien:struct unix:termios)))
+	(multiple-value-bind
+	    (val err)
+	    (unix:unix-tcgetattr fd (alien:alien-sap tios))
+	  (when (null val)
+	    (error "Could not tcgetattr, unix error ~S."
+		   (unix:get-unix-error-msg err))))
+	(setf old-c-iflag (alien:slot tios 'unix:c-iflag))
+	(setf old-c-oflag (alien:slot tios 'unix:c-oflag))
+	(setf old-c-cflag (alien:slot tios 'unix:c-cflag))
+	(setf old-c-lflag (alien:slot tios 'unix:c-lflag))
+	(setf old-c-cc
+	      (vector (alien:deref (alien:slot tios 'unix:c-cc) unix:vdsusp)
+		      (alien:deref (alien:slot tios 'unix:c-cc) unix:veof)
+		      (alien:deref (alien:slot tios 'unix:c-cc) unix:vintr)
+		      (alien:deref (alien:slot tios 'unix:c-cc) unix:vquit)
+		      (alien:deref (alien:slot tios 'unix:c-cc) unix:vstart)
+		      (alien:deref (alien:slot tios 'unix:c-cc) unix:vstop)
+		      (alien:deref (alien:slot tios 'unix:c-cc) unix:vsusp)
+		      (alien:deref (alien:slot tios 'unix:c-cc) unix:vmin)
+		      (alien:deref (alien:slot tios 'unix:c-cc) unix:vtime)))
+	(setf (alien:slot tios 'unix:c-lflag)
+	      (logand (alien:slot tios 'unix:c-lflag)
+		      (lognot (logior unix:tty-echo unix:tty-icanon))))
+	(setf (alien:slot tios 'unix:c-iflag)
+	      (logand (alien:slot tios 'unix:c-iflag) (lognot unix:tty-icrnl)))
+	(setf (alien:slot tios 'unix:c-oflag)
+	      (logand (alien:slot tios 'unix:c-oflag) (lognot unix:tty-ocrnl)))
+	(setf (alien:deref (alien:slot tios 'unix:c-cc) unix:vdsusp) #xff)
+	(setf (alien:deref (alien:slot tios 'unix:c-cc) unix:veof) #xff)
+	(setf (alien:deref (alien:slot tios 'unix:c-cc) unix:vintr)
+	      (if *editor-windowed-input* #xff 28))
+	(setf (alien:deref (alien:slot tios 'unix:c-cc) unix:vquit) #xff)
+	(setf (alien:deref (alien:slot tios 'unix:c-cc) unix:vstart) #xff)
+	(setf (alien:deref (alien:slot tios 'unix:c-cc) unix:vstop) #xff)
+	(setf (alien:deref (alien:slot tios 'unix:c-cc) unix:vsusp) #xff)
+	(setf (alien:deref (alien:slot tios 'unix:c-cc) unix:vmin) 1)
+	(setf (alien:deref (alien:slot tios 'unix:c-cc) unix:vtime) 0)
+	(multiple-value-bind
+	    (val err)
+	    (unix:unix-tcsetattr fd unix:tcsaflush (alien:alien-sap tios))
+	  (when (null val)
+	    (error "Could not tcsetattr, unix error ~S."
+		   (unix:get-unix-error-msg err)))))
+      #-hpux
       (alien:with-alien ((sg (alien:struct unix:sgttyb)))
 	(multiple-value-bind
 	    (val err)
@@ -941,7 +995,7 @@
 	(let ((flags (alien:slot sg 'unix:sg-flags)))
 	  (setq old-flags flags)
 	  (setf (alien:slot sg 'unix:sg-flags)
-		(logand (logior flags unix:tty-cbreak)
+		(logand #-hpux (logior flags unix:tty-cbreak)
 			(lognot unix:tty-echo)
 			(lognot unix:tty-crmod)))
 	  (multiple-value-bind
@@ -950,6 +1004,7 @@
 	    (if (null val)
 		(error "Could not set tty information, unix error ~S."
 		       (unix:get-unix-error-msg err))))))
+      #-hpux
       (alien:with-alien ((tc (alien:struct unix:tchars)))
 	(multiple-value-bind
 	    (val err)
@@ -977,6 +1032,7 @@
 	  (unless val
 	    (error "Failed to set tchars, unix error ~S."
 		   (unix:get-unix-error-msg err)))))
+      #-hpux
       (alien:with-alien ((tc (alien:struct unix:ltchars)))
 	(multiple-value-bind
 	    (val err)
@@ -1007,6 +1063,44 @@
 (defun reset-input ()
   (when (unix:unix-isatty 0)
     (let ((fd *editor-file-descriptor*))
+      #+hpux
+      (when (boundp 'old-c-lflag)
+	(alien:with-alien ((tios (alien:struct unix:termios)))
+	  (multiple-value-bind
+	      (val err)
+	      (unix:unix-tcgetattr fd (alien:alien-sap tios))
+	    (when (null val)
+	      (error "Could not tcgetattr, unix error ~S."
+		     (unix:get-unix-error-msg err))))
+	  (setf (alien:slot tios 'unix:c-iflag) old-c-iflag)
+	  (setf (alien:slot tios 'unix:c-oflag) old-c-oflag)
+	  (setf (alien:slot tios 'unix:c-cflag) old-c-cflag)
+	  (setf (alien:slot tios 'unix:c-lflag) old-c-lflag)
+	  (setf (alien:deref (alien:slot tios 'unix:c-cc) unix:vdsusp)
+		(svref old-c-cc 0))
+	  (setf (alien:deref (alien:slot tios 'unix:c-cc) unix:veof)
+		(svref old-c-cc 1))
+	  (setf (alien:deref (alien:slot tios 'unix:c-cc) unix:vintr)
+		(svref old-c-cc 2))
+	  (setf (alien:deref (alien:slot tios 'unix:c-cc) unix:vquit)
+		(svref old-c-cc 3))
+	  (setf (alien:deref (alien:slot tios 'unix:c-cc) unix:vstart)
+		(svref old-c-cc 4))
+	  (setf (alien:deref (alien:slot tios 'unix:c-cc) unix:vstop)
+		(svref old-c-cc 5))
+	  (setf (alien:deref (alien:slot tios 'unix:c-cc) unix:vsusp)
+		(svref old-c-cc 6))
+	  (setf (alien:deref (alien:slot tios 'unix:c-cc) unix:vmin)
+		(svref old-c-cc 7))
+	  (setf (alien:deref (alien:slot tios 'unix:c-cc) unix:vtime)
+		(svref old-c-cc 8))
+	  (multiple-value-bind
+	      (val err)
+	      (unix:unix-tcsetattr fd unix:tcsaflush (alien:alien-sap tios))
+	    (when (null val)
+	      (error "Could not tcsetattr, unix error ~S."
+		     (unix:get-unix-error-msg err))))))
+      #-hpux
       (when (boundp 'old-flags)
 	(alien:with-alien ((sg (alien:struct unix:sgttyb)))
 	  (multiple-value-bind
@@ -1022,6 +1116,7 @@
 	      (unless val
 		(error "Could not set tty information, unix error ~S."
 		       (unix:get-unix-error-msg err)))))))
+      #-hpux
       (when (and (boundp 'old-tchars)
 		 (simple-vector-p old-tchars)
 		 (eq (length old-tchars) 6))
@@ -1038,6 +1133,7 @@
 	    (unless val
 	      (error "Failed to set tchars, unix error ~S."
 		     (unix:get-unix-error-msg err))))))
+      #-hpux
       (when (and (boundp 'old-ltchars)
 		 (simple-vector-p old-ltchars)
 		 (eq (length old-ltchars) 6))