;;; -*- Mode: Common-Lisp; Package: User; Base: 8.; Patch-File: T -*-
;;; Written 08/25/87 13:25:04 by sparacin,
;;; Reason: Moved the stripping off of the parity bit to a lower level.  Garbage characters were displayed when
;;; connecting to a VMS host over chaosnet.  The only reason the stripping off of the parity bit was kept, was
;;; to correct a problem using the serial port to connect to an ULTRIX host via a micom port selector.  This
;;; should not impact any other operations unless the remote host sends an escape character followed by an
;;; 8 bit character.
;;; while running on Texas from band LOD2
;;; With IO 3.22, PATHNAME 3.16, FILE 3.8, SYSTEM 3.44, METER 3.1, SERIAL 3.0, CHAOSNET 3.10,
;;;  ETHERNET 3.0, GC 3.9, IMAGEN 3.0, MAIL-DAEMON 3.1, NETWORK-SUPPORT 3.7, PROFILE 3.0,
;;;  SUGGESTIONS 3.3, UCL 3.0, ZWEI 3.12, STREAMER-TAPE 3.5, DEBUG-TOOLS 3.1, FONT-EDITOR 3.1,
;;;  GLOSSARY 3.0, INPUT-EDITOR 3.0, MAIL-READER 3.2, NAMESPACE-EDITOR 3.4, NVRAM 3.1,
;;;  TELNET 3.3, TV 3.6, NAMESPACE 3.7, COMPILER 3.19, PRINTER 3.2, SYSLOG 3.0, VT100 3.5,
;;;  IP 2.44, Experimental BUG 7.0, DECNET 1.25, KERMIT 1.0,  microcode 106, Band Name: Release 3.0 - 7/9+IP + KS

#!C
; From file VT100-CHANGES.LISP#> PUBLIC.KERMIT; sys:
#8R TELNET#:
(COMPILER-LET ((*PACKAGE* (FIND-PACKAGE "TELNET"))
                          (SI:*LISP-MODE* :COMMON-LISP)
                          (*READTABLE* SYS:COMMON-LISP-READTABLE)
                          (SI:*READER-SYMBOL-SUBSTITUTIONS* SYS::*COMMON-LISP-SYMBOL-SUBSTITUTIONS*))
  (COMPILER#:PATCH-SOURCE-FILE "sys: PUBLIC.KERMIT; VT100-CHANGES.#"


(DEFMETHOD (VT100-ESCAPE-SEQUENCE-MIXIN :PROCESS-ESCAPE) (CH)
  (COND
    (PROCESS-CH?
     (IF (= CH NVT-IAC)
	 (SEND SELF :HANDLE-IAC)
	 (SEND SELF :TEST-FOR-ESCAPE-SEQUENCE CH)))
    (T (SEND SELF :BUFFERED-TYO CH))))

))

#!C
; From file VT100-CHANGES.LISP#> PUBLIC.KERMIT; sys:
#8R TELNET#:
(COMPILER-LET ((*PACKAGE* (FIND-PACKAGE "TELNET"))
                          (SI:*LISP-MODE* :COMMON-LISP)
                          (*READTABLE* SYS:COMMON-LISP-READTABLE)
                          (SI:*READER-SYMBOL-SUBSTITUTIONS* SYS::*COMMON-LISP-SYMBOL-SUBSTITUTIONS*))
  (COMPILER#:PATCH-SOURCE-FILE "sys: PUBLIC.KERMIT; VT100-CHANGES.#"


(DEFMETHOD (VT100-ESCAPE-SEQUENCE-MIXIN :TEST-FOR-ESCAPE-SEQUENCE) (CH)
  (COND
    (LARGE-CHARACTERS			   ;Test for the large size character set
     (COND
       ((OR (= CH ESC) (= CH CR) (= CH LF))
	(SEND VT100-PANE :SET-CURRENT-FONT SAVE-FONT)
	(SETQ LARGE-CHARACTERS ())))))
  (MULTIPLE-VALUE-BIND (CURRENT-X CURRENT-Y)
      (SEND VT100-PANE :READ-CURSORPOS :CHARACTER)
      ;   (cond ((and (>= current-y bottom-of-scroll)	;Is this the bottom of scroll region?
      ;		(<= current-y (+ bottom-of-scroll 1)) ; Done just once per line
      ;		(= current-x 0.))	   
      ;	   (setf (tv:sheet-end-page-flag vt100-pane) 0.)
      ;	   (sheet-scroll-up vt100-pane new-line)))
    (COND
      ((OR (< CH ENQ) (= CH VT)) NIL)
      (ESCAPE-FLAG			   ; Yes, we got an esc
       ;; Strip off the parity bit if it is set.        
       (SETF ch (LDB #o0007 ch))                        
       (SEND SELF :PROCESS-ESCAPE-SEQUENCE CH))
      ((= CH ESC)			   ; Is it 'ESC'
       (SETQ ESCAPE-FLAG T))
      (T				   ; The char isn't in an escape sequence
       (SEND SELF :PROCESS-CHARACTER CH CURRENT-X CURRENT-Y)))))

))
