LMFL#!C(:HOST "SYS" :BACKUP-DATE 2760032729. :SYSTEM-TYPE :LOGICAL :VERSION 2. :TYPE "LISP" :NAME "VT100-CHANGES" :DIRECTORY ("REL3-PUBLIC" "PUBLIC" "KERMIT") :SOURCE-PATTERN "( :DIRECTORY (\"REL3-PUBLIC\") :NAME :WILD :TYPE :WILD :VERSION :NEWEST)" :CHARACTERS T :NOT-BACKED-UP T :CREATION-DATE 2758741334. :AUTHOR "REL3" :LENGTH-IN-BYTES 7503. :LENGTH-IN-BLOCKS 8. :BYTE-SIZE 8.)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ;;; -*- Mode:Common-Lisp; Package:TELNET; Base:8; Patch-file:T -*-;;;                           RESTRICTED RIGHTS LEGEND;;;Use, duplication, or disclosure by the Government is subject to;;;restrictions as set forth in subdivision (b)(3)(ii) of the Rights in;;;Technical Data and Computer Software clause at 52.227-7013.;;;;;;                     TEXAS INSTRUMENTS INCORPORATED.;;;                              P.O. BOX 2909;;;                           AUSTIN, TEXAS 78769;;;                                 MS 2151;;;;;; Copyright (C) 1987, Texas Instruments Incorporated. All rights reserved.;;; Copyright (C) 1987 Unisys Corporation;;; All Rights Reserved(DEFMETHOD (VT100-ESCAPE-SEQUENCE-MIXIN :AUXILIARY-UP) ()  (SEND SELF :NET-OUTPUT #\ESCAPE)  (SEND SELF :NET-OUTPUT #\[)  (SEND SELF :NET-OUTPUT #\A))(DEFMETHOD (VT100-ESCAPE-SEQUENCE-MIXIN :AUXILIARY-DOWN) ()  (SEND SELF :NET-OUTPUT #\ESCAPE)  (SEND SELF :NET-OUTPUT #\[)  (SEND SELF :NET-OUTPUT #\B))(DEFMETHOD (VT100-ESCAPE-SEQUENCE-MIXIN :AUXILIARY-RIGHT) ()  (SEND SELF :NET-OUTPUT #\ESCAPE)  (SEND SELF :NET-OUTPUT #\[)  (SEND SELF :NET-OUTPUT #\C))(DEFMETHOD (VT100-ESCAPE-SEQUENCE-MIXIN :AUXILIARY-LEFT) ()  (SEND SELF :NET-OUTPUT #\ESCAPE)  (SEND SELF :NET-OUTPUT #\[)  (SEND SELF :NET-OUTPUT #\D))(DEFMETHOD (VT100-ESCAPE-SEQUENCE-MIXIN :PROCESS-ESCAPE) (CH)  (SETQ ch (LDB 7. ch))                                       ;;; strip off the parity bit  (COND    (PROCESS-CH?     (IF (= CH NVT-IAC) (SEND SELF :HANDLE-IAC) (SEND SELF :TEST-FOR-ESCAPE-SEQUENCE CH)))    (T (SEND SELF :BUFFERED-TYO CH))))(DEFMETHOD (VT100-FRAME :NET-OUTPUT) (CH)  (LOCK-OUTPUT    (COND ((AND (NOT (LDB-TEST TELNET-KEYS-BYTE-SPEC CH))(LDB-TEST (BYTE 1 7.) CH)(NOT (TYPEP STREAM 'SYS:SERIAL-STREAM)))    ;;don't do this for a serial stream   ;; reverse cases since this is a meta character.   (SETQ CH (MOD CH 128.))   (COND ((< CH #.(CHAR-CODE #\a)) ; #. (char-code #\a) is same as #o141  (SETQ CH (CHAR-DOWNCASE CH)))  (T   (SETQ CH (CHAR-UPCASE CH)))))    ((LDB-TEST TELNET-KEYS-BYTE-SPEC CH)   ;An NVT char from TELNET-KEYS table   (IF NEW-TELNET-P       (SEND STREAM :TYO NVT-IAC))   (SETQ CH (LDB (BYTE 8. 0) CH))))    (SEND STREAM :TYO CH)    (COND ((AND (= CH CR) (NOT (TYPEP STREAM 'SYS:SERIAL-STREAM)))  ;;just send the CR to a serial stream   (SEND STREAM :TYO LF))   ;Carrage Return is two chars, CR LF  ((AND (= CH NVT-IAC)NEW-TELNET-P)   (SEND STREAM :TYO NVT-IAC)))))(DEFCOMMAND (VT100-FRAME :DEFINE-SERIAL-HOST) ()  '(:DESCRIPTION "Display a CVV menu to add a serial host to a namespace."    :NAMES ("Define Serial Host"))  (NET:DEFINE-SERIAL-HOST-FROM-CVV))(DEFCOMMAND (VT100-FRAME :AUTODIAL) ()  '(:DESCRIPTION "Display a pop-up menu to dial a phone number using an autodialer." :NAMES ("Autodial"))  (COND (STREAM (FUNCALL 'AUTODIAL :STREAM STREAM :MENU T))(T (FORMAT T "~&Not connected.  Can't Autodial.") (WHEN (NOT UCL:PREEMPTING?)  (SEND SELF ':HANDLE-PROMPT)))))(DEFCOMMAND (VT100-FRAME :KERMIT) ()  '(:DESCRIPTION "Display a pop-up menu of KERMIT file-transfer commands." :Names ("Kermit"))  (DECLARE (SPECIAL KERMIT:*KERMIT-FRAME*))  (COND (STREAM (LET   ((VT100-SUBSTITUTE (SEND SELF :SELECTION-SUBSTITUTE))    (KERMIT-SUPERIOR (SEND KERMIT:*KERMIT-FRAME* :SUPERIOR))    (MENU-PANE (SEND SELF :GET-PANE 'MENU-TELNET)))   (UNWIND-PROTECT       (LET ((FORM NIL)) (SEND TYPEOUT-PROCESS :ARREST-REASON 'KERMIT); Stop the vt100 process from using serial stream (SETQ FORM (KERMIT:INTERACTIVE-KERMIT STREAM NIL)) ; Get the Kermit arguments (WHEN FORM   (SETF (SEND MENU-PANE :INVISIBLE-TO-MOUSE-P) T); Make the vt100 menu items non-mousable   (SEND KERMIT:*KERMIT-FRAME* :SET-SUPERIOR SELF)   (SEND SELF :SET-SELECTION-SUBSTITUTE KERMIT:*KERMIT-FRAME*); Attach the kermit frame to vt100   (EVAL FORM))); Call Kermit     (SEND TYPEOUT-PROCESS :REVOKE-ARREST-REASON 'KERMIT); Reallow vt100 to use serial     (SETF (SEND MENU-PANE :INVISIBLE-TO-MOUSE-P) NIL); Make menu items mousable     (SEND SELF :SET-SELECTION-SUBSTITUTE VT100-SUBSTITUTE)     (SEND KERMIT:*KERMIT-FRAME* :SET-SUPERIOR KERMIT-SUPERIOR))))(T (FORMAT T "~&Not connected.  Can't run KERMIT.") (WHEN (NOT UCL:PREEMPTING?)   (SEND SELF ':HANDLE-PROMPT)))))(DEFCOMMAND (vt100-frame :LOCAL-ECHO-COMMAND) ()  '(:DESCRIPTION "Toggle local echo mode of Vt100 screen pane." :NAMES ("Local Echo"))  (SETF ECHO-FLAG (IF ECHO-FLAG NIL T))  (FORMAT T "~&Local echo now ~A.~%"  (IF ECHO-FLAG "off" "on"))                  ; echo-flag=T means local echo is off!  (WHEN (AND (NULL STREAM) (NOT UCL:PREEMPTING?))      (SEND SELF ':HANDLE-PROMPT)))(DEFCOMMAND (VT100-FRAME :LONG-BREAK) ()  '(:DESCRIPTION "Send a short break to stream."    :NAMES ("Long Break")    :KEYS ((#\NETWORK #\CTRL-BREAK)))  (IF STREAM      (SEND STREAM :SEND-LONG-BREAK)      (FORMAT T "~&Not connected. Can't send Long Break.")      (WHEN (NOT UCL:PREEMPTING?)(SEND SELF :HANDLE-PROMPT))))(DEFCOMMAND (VT100-FRAME :SHORT-BREAK) ()  '(:DESCRIPTION "Send a short break to stream."    :NAMES ("Short Break")    :KEYS ((#\NETWORK #\BREAK)))  (IF STREAM      (SEND STREAM :SEND-SHORT-BREAK)      (FORMAT T "~&Not connected. Can't send Short Break.")      (WHEN (NOT UCL:PREEMPTING?)(SEND SELF :HANDLE-PROMPT))));;; Redefine the VT100 layout and menu;;;(DEFFLAVOR VT100-TELNET-MENU   (TV:INVISIBLE-TO-MOUSE-P)   (TV:DYNAMIC-ITEM-LIST-MIXIN TV:COMMAND-MENU)  (:SETTABLE-INSTANCE-VARIABLES TV:INVISIBLE-TO-MOUSE-P)  (:DEFAULT-INIT-PLIST     :LABEL (LIST :TOP :FONT FONTS:HL12B :STRING "VT100 & Telnet Commands")    :ROWS 4    :COLUMNS 5    :VSP 8.    :FONT-MAP (LIST FONTS:MEDFNT)    :LABEL-BOX-P NIL    :ITEM-LIST NIL)  (:DOCUMENTATION :COMBINATION    "Command menu needs dynamic-item-list-mixin for UCL."))(BUILD-COMMAND-TABLE 'VT100-TELNET-CMD-TABLE 'VT100-FRAME  '((:method telnet-frame :exit-command)    (:method telnet-frame :disconnect-command)    (:method telnet-frame :interrupt-process-command)    :send-answerback-command    :reverse-video-command    :reset-command    :escape-processing-command    (:method telnet-frame :quit-and-disconnect-command)    (:method telnet-frame :status-command)    (:method telnet-frame :abort-output-command)    :column-command    :truncate-command    :set-vt100-lines    :network-help-command    (:method telnet-frame :clear-input-command)    :define-serial-host    :autodial    :kermit    :local-echo-command    :short-break    :long-break    )  :INIT-OPTIONS  '(:NAME "Vt100 & Telnet Commands"  :DOCUMENTATION "The Vt100 & Telnet commands."))(BUILD-MENU 'UCL-VT100-TELNET-MENU 'VT100-FRAME  :DEFAULT-ITEM-OPTIONS  '(:FONT FONTS:MEDFNT)  :ITEM-LIST-ORDER      '((:method telnet-frame :exit-command)      (:method telnet-frame :disconnect-command)      (:method telnet-frame :interrupt-process-command)      :send-answerback-command      :reverse-video-command      :reset-command      :escape-processing-command      (:method telnet-frame :quit-and-disconnect-command)      (:method telnet-frame :status-command)      (:method telnet-frame :abort-output-command)      :column-command      :truncate-command      :set-vt100-lines      :network-help-command      :define-serial-host      :autodial      :kermit      :local-echo-command      :short-break      :long-break      ))space."    :MENU-ALIST (("LOCAL" T) ("GLOBAL" NIL)))  (baud    "Baud rate"    :DOCUMENTATION "Line speed.  (Most asynchronous modems use 1200 or 300)"    :CHOOSE (300 1200 2400 4800 9600 19200))  (force-output    "Force output"    :DOCUMENTATION "YES: send characters immediately.  NO: send characters when buffer is full."    :BOOLEAN)  (number-of-data-bits    "Data Bits"    :DOCUMENTATION "Number of data bits."    :CHOOSE (5 6 7 8))  (number-of-stop-bits    "Stop Bits"    :DOCUMENTATION "Number of stop bits."    :CHOOSE (1 2))  (parity    "Parity"    :DOCUMENTATION "Type of parity to use."    :CHOOSE (:NONE :EVEN :ODD))  (xon-xoff-protoc