[VT100.DOC] -- Documentation for VTKermit's VT100 emulation mode -- 6 Feb 86 VTKermit provides a very complete VT100 emulation feature. "Very complete" isn't "complete" and VTKermit isn't a VT100, but for most standard uses VTKermit does everything anyone would ever need it to. Among the VT100 features that are supported are: o All cursor positioning o All screen and line clears o All feasible display attributes, limited by hardware o Region scrolling (absolute origin only) o All feasible line drawing graphic characters, limited by hardware o Device attributes ("what are you?") o Numeric keypad, numeric and application modes o LEDs L1-L4 o Save and restore cursor o Printer support (most Media Copy functions, Control-PrtSc) VT100 features *NOT* supported are: o 132 column mode (no horizontal scrolling either) o Black-on-white (white on black only) o Smooth scrolling o Split speeds (different transmit and receive baud rates) o Keyclick o Cursor shape control o Double high and wide characters o Autowrap is done wrong (wraps after 80th character instead of before 81st) o VT52 mode (sorry) Also, 5 new VT100-style escape sequences are defined. All of these are variations on the VT100 screen clear, which we hope DEC and ANSI do not extend significantly in the future. Standard: ESC [ 0 J -- Standard VT100 clear-to-end-of-screen ESC [ 1 J -- Standard VT100 clear-to-beginning-of-screen ESC [ 2 J -- Standard VT100 clear-entire screen New: ESC [ 1 7 J -- Enter SERVER mode ESC [ 1 8 J -- Identify self as VTKermit -- VTKermit will send ESC [ 9 9 c in response to this, a VT100 will do nothing ESC [ 1 9 J -- Enter COMMAND-MODE ESC [ 2 0 J -- Exit directly to DOS ESC [ 2 1 J -- Preload a command for later execution ESC[17J throws VTKermit into server mode. This can be very useful in a case where a file uploading or downloading application is to be driven by the remote host computer. In this application, the user tells the remote host what he wants done in some way, and the remote host throws the user's computer into server mode and SENDs or GETs whatever files it wants, sending a FINISH packet when done. When the ESC[17J is received, the current screen will be saved and the normal file transfer screen displayed. When the FINISH is received, the saved terminal mode screen will be redisplayed, providing visual continuity to the user. This is a nice feature. ESC[18J is like a Device Attributes ("what are you?") VT100 sequence, but is intended to determine whether the user is running VTKermit. Since VTKermit claims to be a VT100 when queried with DA (ESC [ c), this is required if you want to use any of the additional features described here. ESC[19J throws the user into command mode. This is sometimes used in conjunction with ESC[21J, described below. ESC[20J exits the program immediately. ESC[21J begins a "preload mode" in which received text is saved in a "preload buffer" for later execution. The "received text" should be 94 or fewer characters in length, and must be terminated with another ESCape. This terminating escape must not be part of any ESCape sequence -- it is "eaten". When terminal mode is exited, either by the user pressing F5 or closing the session with {escape character} C or with the ESC[19J sequence (or the script command COMMAND-MODE ...), then the "preloaded text" will be set up as an "instant macro". Commas in the text will be converted to CRs, but double commas (",,") will be converted to single commas. This is an extremely powerful feature that can permit some very fancy tricks. For example, if VTKermit receives the sequence ESC [ 2 1 J s t a t u s , p u s h ESC ESC [ 1 9 J it will preload the string "status,push", convert that into a "status {CR} push" macro and then execute it. The user will see a STATUS display go by, followed by a PUSH. Note that these escape sequences may be recognized in any text that flows through the VT100 emulation channel, so a PRINT command in a script file could be used to invoke them. This enables a script file to execute VTKermit commands, which would not be possible otherwise. For example, the script command PRINT /^[[21Jpush^[^[[19J/ will execute a PUSH from within a script. Ugly perhaps, but functional. Ordinarily, VTKermit will use color attributes on a color display adapter. If you have a monochrome screen connected to a color adapter, the SET DISPLAY MONOCHROME command will change some attributes to be more readable on the monochrome screen. This is the default on the IBM Portable PC. If you have a color display connected to your Portable PC, give the SET DISPLAY COLOR command to get color attributes. VTKermit's VT100 mode uses any of three different methods to display text on the screen. (In command mode, and for the pop-up status display, normal DOS display calls are used.) On a standard monochrome display, VTKermit updates its screen image in a local buffer then "blasts" the image out to B000:0000, the address of the monochrome card's display buffer. This is effectively instantaneous. If you are running in color mode and VTKermit thinks you are running on an Enhanced Graphics Adapter, it will use a method similar to the monochrome method, but will blast the image to B800:0000, the normal address of the color card's display buffer. This is also effectively instantaneous, though the EGA hardware slows things down a little with wait states. If, on the other hand, you are running on IBM's abysmal Color/Graphics Monitor Adapter (CGA), you will endure what is probably the slowest screen update imaginable. The method used involves use of two pages of CGA display memory and a double-update retrace-synchronized display algorithm that is slow even on an 8 MHz AT. *BUT*, the method has *NO SNOW* and *NO FLICKER* which are the dual failings of the CGA. This seems to work perfectly on true IBM PCs with true CGAs, but all bets are off on other hardware. It works on some, not on others. Strangely, there is a BIOS bug (I guess) which occurs on some Compaqs and Morrow/Zenith Pivot IIs in which a "cancer" seems to eat the screen, slowly obscuring the displayed information. Pressing F5 twice fixes the problem for a second, but then it starts again. If you see this problem on your machine, try the hidden SET CARD EGA command, which forces the display update to use the EGA code. This is much better for liquid crystal displays anyway, since it is much faster. In any case, if your hardware is other than the CGA and the display update seems slow, try the SET CARD EGA command. If you get snow, you are stuck with SET CARD COLOR. There is also a SET CARD DEFAULT to let VTKermit decide what method to use. Naturally, this is the default. In checking for an EGA, VTKermit looks for the system board equipment flags saying "no monitor", which is how an EGA machine should be set. A BIOS call to check might be better, maybe next version. Sadly, none of these work properly on some otherwise workable clones, such as the AT&T 6300. From what I am told, the AT&T in color mode has both snow and "cancer", so it is mostly unusable. I don't know why, but would be interested in the answer if anyone else knows or finds out. [End of VT100.DOC]