XEROX ANSICHAT 2 4 1 ANSICHAT 1 4 By: Roger L. Beeman (beeman@boeing.com) Uses: ANSICHATCOPY, ANSICHATFONT, ANSIKEYPAD, ANSIKEYPADDATA, CHAT This document last edited on September 26, 1987. INTRODUCTION ANSIChat is a terminal emulator for the Chat remote terminal facility. It is a similar to VTChat, with several enhancements. Dual-width and dual-height characters and the Graphics character set are supported. Text which is visible on the screen is copy-selectable. The window may be repainted, and if reshaped, the upper left (instead of the lower left) corner of the window is preserved and the scrolling regions are adusted. A NEWREGIONFN restricts adjustmensts of the window size to be steps related to line height and character width, for a more attractive result. Origin mode is supported and defered wraparound is implemented. The ANSI keypad does not block other processes while a selection is in progess, and the user interaction is select-confirm, release to effect. The ANSIChat icon is distinctive. The ANSI emulator is contained in ANSICHAT.LCOM. To use it, load ANSICHAT.LCOM and add entries to CHAT.DISPLAYTYPES in the form: ( ANSI) The ANSITERMINAL display fonts should be put with the other display fonts available to your system. SELECTING THE ANSICHAT DISPLAY FONT ANSI-Chat-Font [Variable] If bound and non-NIL, the font that ANSIChat windows are created with. If ANSI-Chat-Font is unbound or NIL , ANSIChat windows are created with (FONTCREATE (QUOTE (ANSITERMINAL 10))). Chat fonts must be fixed-width fonts (e.g., Gacha or Terminal) to work well with the ANSIChat terminal emulator. ANSITERMINAL is provided with ANSIChat for 10 point display. ANSITERMINAL is a slightly modified version of TERMINAL. ASCIITONSTRANSLATIONS and MISSINGDISPLAYFONTCOERCIONS are modified so that ANSITERMINAL if used in TEDIT, for example, will print as TERMINAL, and if not locatable will be loaded from TERMINAL. LIMITATIONS Copy-Selection is not locked against screen update, so if the screen changes during a selection, the display will become quite confused. Click outside the ANSIChat window, release the copy key and use the window Redisplay to recover. Smooth scrolling, assumes that Xon/Xoff flow control should be used to prevent loss of data. If this is not tolerable, do not use smooth scrolling. Neither Xon/Xoff nor any other flow control is used other than when smooth scrolling, in some circumstances the slow responce of the emulator may cause flow control problems. There is no work around. The printing of characters with the Revese Video Character Attribute is incompatible with the current display font implementation. To deal with this, fontdescriptors which are compatible, are built for use by the emulator. The building of these fontdescriptors takes a considerable length of time. Some of this time is spent in forcing in the NS character sets which are used to support the Graphics character set. When ANSIChat is loaded these fontdescriptors are built and cached. If ANSI-Chat-Font is changed before an ANSIChat window is activated, the initialization routine will notice and new fontdescriptors will be constructed and become the currently cached fontdescriptors. It is possible for timeouts to occur while the fontdescriptors are being built. If this occurs, close the ANSIChat window and reactivate. The newly cached fontdescriptors will then be retrieved from the cache. ANSIChat uses a column 0 and a column "width+1" as part of the copy-selection implementation. This makes the width of the window two characters less to the ANSIChat emulator. The Chat routine which setup the emulator updates the title of the ANSIChat window with what it believes is the height and width, in a different process than the process in which the emulator runs. There is a race between the title update there, and a title update done in the ANSIChat window initialization. If the ANSIChat window initialization's update occurs first, the later update by the Chat core routine will show the window as two characters wider. To get the correct display, reshape the window to a new size to cause the title to be updated, then reshape the window to the desired size. The PUP Chat protocol contains provisions for automatically setting your terminal width and height whenever you establish a connection or reshape your Chat window. The protocol limits the reportable metrics to a maximum of 127. Windows metrics are reported as (IMIN 127 metric). If this results in incorrect settings, use host dependent means to correct the error, e.g. on VAX/VMS type "Set Terminal /Width=132". Currently, the ANSIChat emulator does not emulate the following features of the actual Digital VT100 (with AVO) terminal: Blink Character Attribute (rendered as Underscore), LED Indicators, Line feed/new line Mode, VT52 Mode, Remotely initiated switching between 80- and 132-column mode(Column Mode), Auto repeating Mode, Interlace Mode, Invoked Confidence Tests, Set-Up Mode and the features Auto Xon Xoff, Cursor,Keyclick,Margin Bell, Break and Noscroll Keys. (LIST ((PAGE NIL (PAPERSIZE LETTER STARTINGPAGE# 16) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) 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 NIL) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL (PAPERSIZE NIL . LETTER) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) 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 NIL) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL (PAPERSIZE NIL . LETTER) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) 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 NIL) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL)))))1(. ((8(8D PAGEHEADING RUNNINGHEAD HELVETICA MODERN MODERN MODERN MODERNMODERN LOGO  HRULE.GETFNMODERN  HRULE.GETFNMODERN  HRULE.GETFNMODERN   HRULE.GETFNMODERN  HRULE.GETFNMODERN )D0 4'd$   z6 MK![z