1 LISP LIBRARY PACKAGES MANUAL 1 LISP LIBRARY PACKAGES MANUAL CHAT 1 COMMUNICATIONS/NETWORK 1 CHAT 6 Chat is a ©©remote terminal¹¹ facility that allows you to communicate with other machines while inside Interlisp-D. The function CHAT sets up a ©©Chat connection¹¹ to a remote machine, so that everything you type is sent to the remote machine, and everything the remote machine prints is displayed in a ©©Chat window.¹¹ Multiple simultaneous Chat connections are possible. To switch between typing to different Chat connections, simply button within the Chat window you want to use. Chat prompts for a new window for each new connection, except that it saves the first window to reuse once the connection in that window is closed (other windows just go away when their connections are closed). Chat is an extensible terminal emulation facility. Its core supplies both terminal- and network-protocol-independent functionality; new terminal types and new Chat protocols, based on this core, can be added to Chat at any time. You can choose any terminal type to be used with any network protocol type. Interlisp-D currently provides terminal emulators for the following terminals: Datamedia 2500, Digital VT100, Tektronix 4010, and ©©TEdit¹¹ (this last emulator is actually a TEdit-based Chat window, supporting the capability to scrolling and copy-source operations as in standard TEdit). Each of these terminal emulators will be described in greater detail later in this document. Interlisp-D also provides a number of network protocol interfaces to be used with Chat. The following protocols are available with the Koto release: PUP Chat, NS Chat (using the GAP protocol), TCP (ARPANET) TELNET, and RS232 Chat (using either the RS232 or TTY ports of the 1108, 1185, and 1186 processors). 2 Using Chat 1 Beginning with the Koto release of Interlisp-D, Chat resides in the Lisp Library, rather than in the distributed Lisp sysout. To use Chat, you must load the files CHAT.DCOM and CHATTERMINAL.DCOM. In addition, you must load at least one of the terminal emulator packagesœDMCHAT.DCOM, VTCHAT.DCOM, TEK4010CHAT.DCOM, or TEDITCHAT.DCOMœand at least one of the Chat network protocol packagesœPUPCHAT.DCOM, NSCHAT.DCOM, TCPCHAT.DCOM, RS232CHAT.DCOM, or TTYCHAT.DCOM. The simplest way to open a Chat connection is to select the ©©Chat¹¹ option of the right-button background menu. The first time you do this, you will be prompted in the system's prompt window for the name of a host to which to connect. Subsequently, you will be prompted with a menu of all hosts to which you have opened Chat connections; the last entry in this menu will be ©©Other,¹¹ and provides a way for you to connect to new Chat hosts. The other method of opening a Chat connection is to call the CHAT function directly: (CHAT HOST LOGOPTION INITSTREAM WINDOW) [Function] Opens a Chat connection to HOST, or to the value of DEFAULTCHATHOST. If HOST requires login, CHAT supplies a login sequence. You may alternatively specify one of the following values for LOGOPTION: · LOGIN: Always perform a login. · ATTACH: Always perform an attach (this is likely to be useful only when opening Chat connections to hosts running the Tops-20 or Tenex operating systems). This will fail if you do not have exactly one detached job. · NONE: Do not attempt to log in or attach. If INITSTREAM is supplied, it is either a string or the name of a file whose contents will be read as type-in. When the string/file is exhausted, input is taken from the keyboard. If WINDOW is supplied, it is a window to use for the connection; otherwise, you are prompted for a window. While Chat is in control, all Lisp interrupts are turned off, so that control characters can be transmitted to the remote host. Chat does not turn off interrupt characters until after creating the Chat window, so you can abort the call to Chat by typing control-E while specifying the Chat window region. If you button in a Lisp Executive window, the Interlisp system's focus-of-attention will be switched to that window. At the same time, Lisp keyboard interrupts, such as control-E, will be reenabled. Whenever you button in an open Chat window, the focus-of-attention will be returned to the Chat window, and keyboard interrupts will be disabled. Issuing Commands to a Chat Connection 1 Commands can be given to an active Chat connection by buttoning the middle mouse button in the Chat window to get a command menu. Current commands are: · Close: Closes this connection. Once the connection is closed, control is handed over to the main Lisp Executive window. Closes the Chat window unless it is the primary Chat window. · Suspend: Same as Close, but always leaves the window open. · New: Closes the current connection and prompts for a new host to which to open a connection in the same window. · Freeze: Holds type-out from this Chat window. Buttoning in the window in any way releases the hold. This is most useful if you want to switch to another, overlapping window and there is typeout in this window that would compete for screen space. · Dribble: Opens a typescript file for this Chat connection (closing any previous dribble file for the window). You are prompted for a file name; if you want simply to close an open dribble file (without opening a new one), just type a bare carriage return. · Input: Prompts for a file to take input from. When the end of the file is reached, input reverts to the keyboard. · Clear: Clears the window and resets the simulated terminal to its default state. This is useful if undesired terminal commands have been received from the remote host that place the simulated terminal into a funny state. In an inactive Chat window, the middle mouse button brings up a menu of one item, Reconnect, whose selection reopens a connection to the same host as was last in the window. This is the primary motivation for the Suspend menu command. The left mouse button, when inside an active Chat window, holds output as long as the button is down. Holding down the middle button coincidentally does this, too, but not on purpose: since the menu handler does not yield control to other processes, it is possible to kill the connection by keeping the menu up too long. 2 Customizing Chat 1 CHAT.DISPLAYTYPES [Variable] This variable contains a list that controls which terminal emulators are used with which hosts. Each entry on the list is of the form: () When Chat opens a connection, it scans CHAT.DISPLAYTYPES to find an entry whose HostName field matches the name of the Chat host. If no matching entry is found, it scans the list again, looking for an entry whose HostName field is NIL. CHAT uses the TerminalEmulator field of the entry it finds to choose which terminal type to emulate. Typical terminal type names are DM2500, VT100, TEK4010, and TEDIT. The TerminalTypeNumber field is only important when the Chat protocol in use is PUP Chat. This number identifies the terminal type to the Chat host's operating system. Currently, only Tops-20 and Tenex hosts make use of this facility; if the Chat host does not support this feature, the number in the TerminalTypeNumber field is ignored. CHAT.KEYACTIONS [Variable] This variable controls the remapping of the keyboard when the Interlisp system's focus-of-attention is an active Chat window. The format of this list is: ((KEYNAME . ACTIONS) (KEYNAME . ACTIONS) ... ) For example, if you prefer the backspace to send the rubout character (octal 177), you would set CHAT.KEYACTIONS to be: ((BS (177Q 177Q NOLOCKSHIFT) . IGNORE)) CHAT.ALLHOSTS [Variable] A list of host names, as uppercase litatoms, to which you desire to chat. Chatting to a host not on the list adds it to the list. These names are placed in the menu used by the background Chat command prompts. CLOSECHATWINDOWFLG [Variable] If true, every Chat window is closed on exit. If NIL, the initial setting, then the primary Chat window is not closed. DEFAULTCHATHOST [Variable] The host to which CHAT connects when it is called with no HOST argument. CHAT.FONT [Variable] If non-NIL, the font that Chat windows are created with. If CHAT.FONT is NIL, Chat windows are created with (DEFAULTFONT 'DISPLAY). Chat fonts must be fixed-width fonts (e.g., Gacha or Terminal) to work well with the DM2500, VT100, and Tektronix 4010 terminal emulators. CHAT.WINDOW.SIZE [Variable] This variable is either NIL, or a dotted pair of (WIDTH . HEIGHT). The value of the WIDTH field indicates the desired width of the Chat window, in pixels. The value of the HEIGHT field indicates the desired HEIGHT of the window, also in pixels. CHAT.WINDOW.REGION [Variable] This variable is either NIL, or an instance of a REGION. When CHAT.WINDOW.REGION is non-NIL, its value is used as the region in which to create new Chat windows. 2 Using Chat With Specific Network Protocols 1 For the most part, you should not notice too many differences in the behavior of Chat when using one network protocol versus another network protocol. In the following, we document the unique features of each of the support Chat network protocols. PUP Chat 1 PUP Chat is contained in the file PUPCHAT.DCOM. Implementations of PUP Chat servers exist for Tops-20, Tenex, VAX/Unix, and VAX/VMS operating systems. The PUP Chat protocol contains provisions for automatically setting your terminal type, width, and height whenever you establish a connection or reshape your Chat window. NS Chat 1 The NS Chat protocol (also known as GAP, for ©©Gateway Access Protocol¹¹) is used to communicate with Xerox product servers, such as 8044 print servers or 8037 file servers. This protocol is contained on the file NSCHAT.DCOM. The NS Chat protocol differentiates among a number of virtual terminal services. When you chat to an NS host, the NS Chat package queries the Clearinghouse for information about the specified host. This information permits the NS Chat package to determine which of the following virtual terminal services are appropriate for the host. · Remote System Administration: This service lets you log onto print servers and clearinghouse servers, and issue appropriate commands. NS Chat will automatically choose this service when the specified host is registered in the Clearinghouse as any type of server machine. · Remote System Executive: This service is currently supported only by XDE workstations with appropriate software loaded. · Interactive Terminal Service: The ITS is a TTY-based interface to NS mail. ÿÿïfÿ External Communication Service: the External Communication Service enables Chat connections to external hosts accessible only by use of a modem. When you open a Chat connection to an ECS, you will be prompted for a telephone number; the ECS will dial that number, and complete the connection if a compatible modem answers. ECS hosts typically support a variety of modem connection characteristics (specific combinations of parity, character length, baud rate, and flow control settings). Each connection type is known by a different Chat host name; check with your system administrator to determine the Chat host name you should use to connect to a particular external host. The NS Chat package uses a small set of heuristics to choose which virtual terminal service to invoke, based on information returned by the Clearinghouse. If the Clearinghouse information indicates that only one service type is possible, NS Chat opens a connection to the Chat host and invokes the proper virtual terminal service. If the Clearinghouse returns information indicating that more than one virtual terminal service is supported by the specified host, you are prompted to choose a service from a menu of the possible service types. If NS Chat guesses an incorrect service type, or you choose an incorrect service type, you will be prompted to choose a service from a menu of all known virtual service types. If this fails, NS Chat will abandon its attempts to connect to the specified host. TCP Chat 1 TCP TELNET is the Chat interface to the TCP-based TELNET protocol, which is the protocol in use throughout the ARPANET. It is contained in the file TCPCHAT.DCOM. TCPCHAT will load and initialize the Interlisp-D TCP/IP package, if necessary. Users are encouraged to read the TCP/IP section of the Lisp Library documentation. RS232 Chat 1 RS232 Chat is contained on the files RS232CHAT.DCOM and TTYCHAT.DCOM. RS232 Chat enables use of the 1108, 1185, and 1186 RS232 ports; TTY Chat enables use of the 1108, 1185, and 1186 TTY ports. Users should read the RS232 section of the Lisp Library documentation. 2 Using Chat With Specific Terminal Emulators 1 The following section describes the individual characteristics of each of the currently supported terminal emulator packages. DM2500 Chat 1 The Datamedia 2500 terminal emulator is contained in DMCHAT.DCOM. To use it, load DMCHAT.DCOM and add entries to CHAT.DISPLAYTYPES in the form: ( DM2500) VT100 Chat 1 The VT100 emulator is contained in VTCHAT.DCOM. To use it, load VTCHAT.DCOM and add entries to CHAT.DISPLAYTYPES in the form: ( VT100) Currently, the VT100 emulator does not emulate the following features of the actual Digital VT100 terminal: · Dual-width and/or dual-height characters, · Graphics character set, and · Remotely initiated switching between 80- and 132-column mode. TEK4010 Chat 1 TEK4010 Chat, unlike other terminal emulators, runs in non-scroll, paint mode, with the right margin set at the width of the window. Although not elegant, this is how the TEK4010 terminal works and there may be cases where users are dependent on its inherent mode of operation. The visible implications of this in Interlisp are: the screen is not cleared or scrolled when a linefeed is received on the last line. Graphics and text are overlayed (OR'd) using the PAINT mode in BITBLT, since selective areas on a storage tube cannot be erased. Graphics are scaled to the window size and so is the position of the second margin, but the characters in the font (GACHA 10) are not scaled. Scaling is changed when the Chat window is reshaped. In order to get accurate positioning of both the text and graphics, the Interlisp window size should match the TEK4010 screen resolution, which is 1024 horizontally by 768 vertically. To use TEK4010 Chat, you must load TEK4010CHAT.DCOM, and add entries to CHAT.DISPLAYTYPES in the form: ( TEK4010). TEdit Chat 1 TEdit Chat supplies a ©©glass tty¹¹ terminal emulator with a TEdit stream storing all characters received during the Chat session. As a result, you can scroll back and forth through a transcript of your session, and you can use the standard TEdit copy-source command to copy blocks of characters from the Chat window to another TEdit window, a Lisp Executive, a DEdit typein buffer, etc. To use TEdit Chat, load TEDITCHAT.DCOM, and add entries to CHAT.DISPLAYTYPES in the form: ( TEDIT).(LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC ) STARTINGPAGE# 193) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC )) (270 12 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGR) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE RECTOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 618) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC)) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC)) (54 12 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGV) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE VERSOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 684) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC)) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC)) (270 12 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGR) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE RECTOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 684) NIL))))).ÌÌø.ÌÌøØ.ÌÌø ø/øÈT.ÌÌøø/ø2ÈT/øÈT.ÌÌøÈ.ÌÌø È/ÌÌøÈT/ÌÌøÈTBøø PAGEHEADING VERSOHEADBøø PAGEHEADING RECTOHEADAøø PAGEHEADINGFOOTINGVAøø PAGEHEADINGFOOTINGR TIMESROMAN MODERNMODERNMODERN MODERN MODERN MODERN  HRULE.GETFNMODERN  HRULE.GETFNMODERN    HRULE.GETFNMODERN    HRULE.GETFNMODERN    HRULE.GETFNMODERN Cx45 HRULE.GETFNMODERN  HRULE.GETFNMODERN ϽU  *p "Ú- ¨b³z[& HRULE.GETFNMODERN  ™º>sûvâïB HRULE.GETFNMODERN HRULE.GETFNMODERNˆ3™T›/x)ÔxJ‘|÷¤ HRULE.GETFNMODERN+ HRULE.GETFNMODERN ù  HRULE.GETFNMODERN  F HRULE.GETFNMODERN  6zMFaLÔ  HRULE.GETFNMODERN  G  HRULE.GETFNMODERN    HRULE.GETFNMODERN, HRULE.GETFNMODERN ~  HRULE.GETFNMODERN  ‘)  HRULE.GETFNMODERN  (l,@ HRULE.GETFNMODERN  œg+  HRULE.GETFNMODERN  ‡Z(;zº