;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:8; Patch-File:T -*-
;;; Patch file for System version 123.135
;;; Reason:
;;;  Allow <NETWORK> E to toggle remote echo mode in Telnet window.
;;; Written 2-Dec-87 17:55:18 by pld at site Gigamos Cambridge
;;; while running on Jack Flanders from band 2
;;; with Experimental System 123.134, Experimental Local-File 73.3, Experimental FILE-Server 22.1, Experimental Unix-Interface 11.0, Experimental Tape 18.0, Experimental KERMIT 34.0, Experimental ZMail 71.0, Experimental Lambda-Diag 15.0, microcode 1754, SDU Boot Tape 3.12, SDU ROM 8.



; From modified file DJ: L.NETWORK; SUPDUP.LISP#299 at 2-Dec-87 17:55:28
#8R SUPDUP#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SUPDUP")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; SUPDUP  "

(DEFMETHOD (BASIC-NVT :HANDLE-ESCAPE) (&AUX CH XPOS YPOS)
  (UNWIND-PROTECT
    (PROGN
      (MULTIPLE-VALUE (XPOS YPOS) (TV:SHEET-READ-CURSORPOS SELF))
      (PUT-DOWN-STRING SELF "CMND-->")
      (SETQ CH (CHAR-UPCASE (SEND SELF :TYI)))
      (SELECTQ CH
	((#/CALL #/P)
	 (TV:DESELECT-AND-MAYBE-BURY-WINDOW SELF))
	(#/A
	 (IF (NOT (NULL CONNECTION))
	     (SEND SELF :SEND-IF-HANDLES :SEND-IP)))
	((#/B #/BREAK)
	 (SEND SELF :SET-SUPER-IMAGE-MODE NIL)
	 (BREAK "BREAK")
	 (SEND SELF :SET-SUPER-IMAGE-MODE T))
	(#/C			      ;C = Change escape character.
	 (PUT-DOWN-STRING SELF "Change escape character to -->")
	 (SEND SELF :SET-SUPER-IMAGE-MODE NIL)
	 (SETQ ESCAPE-CHAR (CHAR-UPCASE (SEND SELF :TYI)))
	 (SEND SELF :SET-SUPER-IMAGE-MODE T))
	(#/D                         ;D = Disconnect, ask for new host to connect to.
	 (IF (NULL CONNECTION)
	     (THROW 'NVT-DONE "(Already disconnected.)")
	   (SEND SELF :DISCONNECT)
	   (THROW 'NVT-DONE "Disconnected")))
	(#/E
	 (unless (null connection)
	   (send self :send-if-handles :toggle-remote-echo)))
	(#/N
	 (SEND SELF :SET-SUPER-IMAGE-MODE NIL))
	(#/L			      ;L = Logout.
	 (IF (NULL CONNECTION)
	     (QUIT)
	   (SEND SELF :LOGOUT)
	   (QUIT "Logout")))
	(#/Q			      ;Q = Quit.
	 (QUIT))
	(#/M			      ;M = More.
	 (IF (NOT (NULL CONNECTION))
	     (SEND SELF :SEND-IF-HANDLES :USER-SET-MORE-P (NOT (SEND SELF :MORE-P)))))
	(#/I			      ;I = Imlac.
	 (IF (NOT (NULL CONNECTION))
	     (SEND SELF :SEND-IF-HANDLES :TOGGLE-IMLAC-SIMULATION)))
	(#/O
	 (SEND SELF :SEND-IF-HANDLES :TOGGLE-OVERPRINTING))
	(#/Y
	 (let* ((node (zwei:history-latest-element zwei:*kill-history*))
		(string (if (arrayp node) node (zwei:string-interval node nil nil t))))
	   (dotimes (i (array-length string))
	     (send self :force-kbd-input (aref string i)))))

	((#/HELP #/?)		      ;<HELP> or ? = Help
	 (SI:WITH-HELP-STREAM (WINDOW :LABEL "Help for Network commands")
	   (SEND WINDOW :CLEAR-WINDOW)
	   (FORMAT WINDOW "After typing the Escape character, which is ~:C,
you can type these commands:~%" ESCAPE-CHAR)
	   (FORMAT WINDOW "
CALL -- Do a local CALL (return to top window).
BREAK-- Enter a breakpoint.
~:[~;A    -- Send an ATTN (in Telnet, a New Telnet /"Interrupt Process/").
~]~
C    -- Change the SUPDUP escape character.
D    -- Disconnect and connect to new host.
~:[~;E    -- Toggle remote echo
~]~
~:[~;I    -- Toggle imlac simulation.
~]~
L    -- Log out of remote host, and break the connection.
~:[~;M    -- Toggle more processing.
~]~
~:[~;O    -- Toggle overprinting (for servers that expect non-overprinting terminals).
~]~
P    -- Return to top window, but don't break connection.
Q    -- Disconnect and return to top window.
Y    -- Send the most recently killed string through the connection.

Help -- Type this cruft.
"
		   (GET-HANDLER-FOR SELF :SEND-IP)
		   (GET-HANDLER-FOR SELF :TOGGLE-REMOTE-ECHO)
		   (GET-HANDLER-FOR SELF :TOGGLE-IMLAC-SIMULATION)
		   (GET-HANDLER-FOR SELF :USER-SET-MORE-P)
		   (GET-HANDLER-FOR SELF :TOGGLE-OVERPRINTING))
	   (FORMAT WINDOW "~4A -- Send ~:C through~%"
		   (FORMAT NIL "~:C" ESCAPE-CHAR)
		   ESCAPE-CHAR)))
	(#/RUBOUT)				;<RUBOUT> = Do nothing.
	(OTHERWISE
	  (COND ((= CH ESCAPE-CHAR)
		 (SEND SELF :NET-OUTPUT-TRANSLATED CH)
		 (LOCK-OUTPUT
		   (SEND STREAM :FORCE-OUTPUT)))
		(T (TV:BEEP))))))
    (TV:SHEET-FORCE-ACCESS (SELF T)
      (PUT-DOWN-STRING SELF "")      ;Clear the bottom line.
      (TV:SHEET-SET-CURSORPOS SELF XPOS YPOS))))

))

; From modified file DJ: L.NETWORK; SUPDUP.LISP#299 at 2-Dec-87 17:55:36
#8R SUPDUP#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SUPDUP")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; SUPDUP  "


(defmethod (basic-telnet :toggle-remote-echo) ()
  (telnet-echo (not echo-flag)))

))
