Control Codes for Televideo Character-Cell Video Terminals and Their Emulations

 //////////////////////////////////////////////////////////////////////////////

The Televideo 955 (also known as TVI955) was a popular character-cell
video-display terminal during the early 1980s.  However, its control
codes were a proprietary set (that is, not following the ANSI X3.64
standard), and the terminal does not have the ability to properly
interpret and act upon ANSIX3.64-type control codes.  A consequence
of this lack is that an actual TVI955 cannot emulate a DEC VT100.

 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Stratus Computer used Televideo-style terminals with its fault-tolerant
VOS systems for many years.  The programming manual for the Stratus V103
terminal, mostly compatible with a Televideo 955, is available here:

    http://www.cs.utk.edu/~shuford/terminal/r242-00_v103_prog.pdf.gz

 //////////////////////////////////////////////////////////////////////////////

Newsgroups: comp.terminals
Path: utkcs2!darwin.sura.net!europa.asd.contel.com!uunet!comp.vuw.ac.nz
      !canterbury.ac.nz!phys169
Message-ID: <1992Apr23.112004.4789@csc.canterbury.ac.nz>
References: <1992Apr18.060736.29498@noose.ecn.purdue.edu>
            <1992Apr22.174647.4783@csc.canterbury.ac.nz>
Summary: Control codes/Escape sequences for TVI905 to TVI950
Expires: 22 May 1992 11:23:06 +1200
Organization: University of Canterbury, Christchurch, New Zealand
Keywords: Programming TVI950, TVI910, TVI912, TVI920, TVI914, TVI924, TVI925
Date: 23 Apr 1992 11:20:03 +1200
From: phys169@csc.canterbury.ac.nz
Subject: Televideo control code table (was Re: TVI950)


In article <1992Apr22.174647.4783@csc.canterbury.ac.nz>, 
 phys169@csc.canterbury.ac.nz writes:
>
> Hope the following is useful... NOTE that the 914/924 columns are NOT
> complete, they take a heck of a lot of typing, but there's probably enough
> there to get the magnitude of the difference.  I might follow up with a
> more complete table some day.


Well, there were a few mistakes in it (like ESC B), as well as the 914 & 924
columns not being finished.  Here's an updated version, but I don't have good
references for the TVI925 & 905, so if anyone can post corrections that would
be very nice.  The only Televideo source for the 925 I had was a little glossy
titled "The Value Leaders", which seems *very* wrong in places.

I still might follow with tables for other popular terminals, like the Wyse and
Qume and DG series.  The VT series has already been done by others, of course, 
but I might post my collection (including differences betweem other ANSI
implementations, such as Heath/Zenith, TVI970 and Data General).

If anyone wants to cut out the following and stick it on some anonymous ftp
site, that is fine with me, but please keep my e-mail address on it so I can
be told of any errors or omissions.  

*** CONTROL CODES FOR:  	TVI950  910  912  920  914  924  925  905

^E     	 ENQ (Send ID msg)                                   y
^G     	 Beep                       y    y    y    y    y    y    y    y    
^H     	 Cursor Left                y    y    y    y    y    y    y    y
^I     	 Tab                        y    y    y    y    y    y    y    y
^J     	 Line Feed                  y    y    y    y    y    y    y    y
^K     	 Cursor Up                  y    y    y    y    y    y    y    y
^L     	 Cursor Right               y    y    y    y    y    y    y    y
^M     	 Carriage Return            y    y    y    y    y    y    y    y
^N     	 Disable ^S/^Q              y         y    y    y    y
^O     	 Enable ^S/^Q               y         y    y    y    y
^R     	 Enable P3<->P4             y    y              y    y     
^T     	 Disable P3<->P4            y    y              y    y    
^V     	 Cursor Down                y                   y    y    y      
^X     	 Clear unprot field                             y    y
^Z     	 Clear Unprot.              y    y    y    y    y    y    y    y 
^^     	 Home                       y    y    y    y    y    y    y    y 
^_     	 NewLine                    y    y    y    y    y    y    y    y

ESC ^B 	 insert Ctrl-B (STX)                            y    y
ESC ^C 	 insert Ctrl-C (ETX)                            y    y
ESC ESC	 Display "EC" symbol        y
ESC ! 1	 Linelock this line         y
ESC ! 2	 Clear all locks            y
ESC "  	 Unlock keyboard            y    y    y    y    y    y    y    y
ESC #  	 Lock keyboard              y    y    y    y    y    y    y    y
ESC $  	 Graphics mode on           y                   y    y
ESC %  	 Graphics mode off          y                   y    y
ESC &  	 Protect mode on            y         y    y    y    y    y    y
ESC '  	 Protect mode off           y         y    y    y    y    y    y
ESC (  	 W-Prot off & dim           y    dim  y    y    y    y    y    y
ESC )  	 W-Prot on & bold           y    bold y    y    y    y    y    y
ESC *  	 Clear all to nulls         y    y    y    y              y    ?
ESC * 0	 Clear all to nulls                             y    y
ESC * 1	 Clear all to spaces                            y    y
ESC * 2	 Clear unprot to nulls                          y    y
ESC * 3	 Clear unprot to spaces                         y    y
ESC +  	 Clear unprot to ic*        y    y    y    y
ESC ,  	 Clear all to dim sp        y         y    y
ESC -  	 Move to page/row/col       y                        y    y
ESC .  	 Toggle cursor on/off            y    y    y
ESC . 0	 Invisible cursor           y                   y    y
ESC . 1	 Blinking block cursor      y                   y    y
ESC . 2  Steady block cursor        y         y    y    y    y
ESC . 3	 Blinking underline         y         y    y    y    y
ESC . 4	 Steady underline           y         y    y    y    y
ESC /  	 Report Cursor p/r/c        y                        y    y
ESC 0 0	 Program Shift-Send key     y  
ESC 0 1	 Program Send key           y   
ESC 0 @	 Program Home key                                    y
ESC 0 P	 Program Send key                               y    y
ESC 0 p  Program shift-Send key                         y    y
ESC 0 s	 Program shift-ENTER key                             y
ESC 1  	 Set tab stop               y    y    y    y
ESC 2  	 Clear tab stop             y    y    y    y
ESC 3  	 Clear all tab stops        y    y    y    y
ESC 4  	 Send unprot from BOL       y         y    y
ESC 5  	 Send unprot from BOP       y         y    y
ESC 6  	 Send all from BOL          y         y    y
ESC 7  	 Send all from BOP          y         y    y
ESC 8  	 Smooth scroll mode on      y
ESC 8 0	 Jump scroll mode on                                 y
ESC 8 1	 Smooth scroll mode on                               y
ESC 9  	 Jump scroll mode on        y
ESC :  	 Clear unprot to null       y                             ?    ?
ESC ;  	 Clear unprot to ic*        y         y    y              ?    ?
ESC <  	 Keyclick off               y                             y
ESC < 0	 Keyclick off                                   y    y
ESC < 1	 Keyclick on                                    y    y
ESC >  	 Keyclick on                y                             y
ESC =  	 Move to row/column         y    y    y    y    y    y    y    y
ESC ?  	 Report row/column          y    y    y    y    y    y    y    y
ESC @  	 Copy-print mode on         y    y              y    y    y
ESC A  	 Copy-print mode off        y    y              y    y    y    
ESC B  	 Block mode on/conv off     y                   y    y    y    
ESC C  	 Conversation mode on       y                   y    y    y        
ESC D H	 Half duplex, Block off     y                   y    y    
ESC D F	 Full duplex, Block off     y                   y    y
ESC E  	 Insert a line              y        y     y    y    y    y    y
ESC F  	 Display control char            y
ESC F  	 Define block of attr.                               y
ESC F  	 Load status msg            ?
ESC G 0	 Reset video attributes     y    y              y    y    y    y
ESC G 1	 Blank video attribute      y    y              y    y    y    y
ESC G 2	 Blank video attribute      y    y              y    y    y    y
ESC G 4	 Blank video attribute      y    y              y    y    y    y
ESC G 8	 Blank video attribute      y    y              y    y    y    y
ESC H  	 Auto scroll on/off              y
ESC H  	 Define block graph. area                            y
ESC I  	 Back tab                   y    y              ?    ?    y    y
ESC J  	 Back page                  y                        y    y
ESC K  	 Next page                  y                        y    y
ESC L  	 Unformatted Print Page     y    
ESC L  	 Send data to hidden cursor                          y
ESC M  	 Transmit terminal ID       y                   y    y
ESC N  	 PageEdit mode on           y    
ESC N 0	 PageEdit mode off                                   y
ESC N 1  PageEdit mode on                                    y
ESC O  	 PageEdit mode off          y     
ESC P  	 Print page, show next      y                             y
ESC P 0	 Print formatted page                           y    y
ESC P 1	 Print form. unprot. page                       y    y
ESC P 3	 Print formatted page                           y    y
ESC P 4	 Print unformatted page                         y    y
ESC P 5	 Print unform. unprot. page                     y    y
ESC P 7	 Print unformatted page                         y    y
ESC Q  	 Insert a character         y         y    y    y    y    y    y
ESC R  	 Delete the line            y         y    y    y    y    y    y
ESC S  	 Send unprot message        y         y    y              y    y
ESC S 1	 Send unprot from BOL                           y    y
ESC S 3	 Send all from BOL                              y    y
ESC S 5	 Send unprot from BOP                           y    y
ESC S 7	 Send all from BOP                              y    y
ESC S 9	 Send unprot text STX->ETX                      y    y
ESC S ;	 Send text from STX to ETX                      y    y
ESC S ?	 Send form                                      y    y
ESC T  	 Erase to EOL with ic*      y    y              y    y    y    y
ESC U  	 Monitor mode on            y    y    y    y    y    y    y    y
ESC V  	 Start self test                 y    y    y    y    y
ESC W  	 Delete a character         y         y    y    y    y    y    y
ESC X  	 Monitor mode off           y    y    y    y    y    y    y    y
ESC Y  	 Clear to EOP with ic*      y    y    y    y    y    y    ?
ESC Z 0	 Report User line           y                   y    y    y
ESC Z 1	 Report Status line         y                   y    y    y
ESC Z 2	 Report Setup lines                                  y
ESC [  	 Move to row                     y
ESC ]  	 Move to column                  y
ESC ] 0	 Program unshift. edit keys                          y
ESC ] 1	 Program shifted edit keys                           y
ESC \ 1	 24 lines/logical page      y                        y
ESC \ 2	 48 lines/logical page      y                        y
ESC \ 3	 96 lines/logical page      y                        y
ESC ^  	 Program answerback msg                              y
ESC ^  	 Start blink attribute                y    y
ESC _  	 Define scrolling region                             y
ESC _  	 Start blank attribute                y    y
ESC `  	 Buffered print mode on     y         y    y    y    y    ?
ESC a  	 Buffered print off         y         y    y    y    y    ?
ESC b  	 Screen black on white      y                   y    y
ESC d  	 Screen white on black      y                   y    y
ESC e  	 Load insert character      y
ESC f  	 Load user line             y                        y
ESC g  	 25th line is User line     y	          
ESC g  	 Assign log. attr. to field                          y
ESC h  	 25th line is Status        y 
ESC i  	 Field tab                  y         y    y    y    y    ?
ESC j  	 Reverse linefeed           y
ESC j  	 Reverse video attr.                  y    y
ESC k  	 Normal background attr.              y    y
ESC k  	 Local edit mode            y         y    y
ESC k 0	 Duplex edit mode                               y    y
ESC k 1	 Local edit mode                                y    y
ESC l  	 Duplex Edit mode           y         y    y
ESC l  	 Start underline attr.                y    y
ESC m  	 End underline attr.                  y    y
ESC n 0	 Screen On                                      y    y
ESC n 1	 Screen Off                                     y    y
ESC o 0	 Logical attribute mode on                           y
ESC o 1	 Logical attribute mode on                           y
ESC p  	 Report NVRAM contents                               y
ESC q  	 End blink/blank                      y    y
ESC q  	 Insert mode on             y
ESC r  	 Insert mode off            y
ESC s  	 Send message all           y         y    y              y    y
ESC s  	 Define 25th line                                    y
ESC t  	 Erase to EOL, nulls        y         y    y    y    y    y    ?
ESC u  	 Monitor mode off           y         y    y              y    ?
ESC v  	 Autopage on                y                             y
ESC v 0	 Autopage off                                        y
ESC v 1	 Autopage on                                         y
ESC w  	 Autopage off               y                             y
ESC x 0	 Set field delimiter        y                        y    ?
ESC x 1	 Set line delimiter         y         y    y         y    ?
ESC x 2	 Set start prot delim.      y                        y    ?
ESC x 3	 Set end prot delimiter     y                        y    ?
ESC x 4	 Set screen delimiter       y         y    y         y    ?
ESC y  	 Erase to EOP, nulls        y         y    y    y    y    ?    ?
ESC z  	 Call User PROM             y 
ESC {  	 Set main (P3) port         y                             ?
ESC { 0	 Set main (comp) port                                y
ESC { 1	 Set printer port baud etc                           y
ESC |  	 Program function keys      y                   y    y
ESC }  	 Set printer (P4) port      y                        ?    ?
ESC ~ 0	 Reset terminal                                 y    y
ESC ~ 1	 Reset to factory def.                          y    y

Notes:
The TVI925 and 905 columns probably have a lot of mistakes, the other columns
      might have a few too! (hopefully not too many)
ESC G sets video attributes based on flags, so ESC G 6 would be reverse blink;
      on most oldish ADM/Wyse/TVI/QVT terminals this attribute takes up one
      character position on the screen; this is optional on some (e.g. ADM 12)
      On the TVI914/924 they never take a space. The 914/924 allows dim to be
      set (e.g. ESC G space is DIM, ESC G " is blink dim).
BOL = Beginning of line
BOP = Beginning of page
EOL = End of line
ic* = whatever insert character is set to, space by default. A TVI950 lets you
      define what the space charecter is, on most other terminals it is always
      a space (ASCII 32). 

Mark Aitchison, University of Canterbury, New Zealand.
(usual disclaimers apply, plus a big E & O E).

 //////////////////////////////////////////////////////////////////////////////


Newsgroups: comp.terminals
Path: utkcs2!stc06.ctd.ornl.gov!fnnews.fnal.gov!uwm.edu!newsfeeds.sol.net
      !feed1.news.erols.com!howland.erols.net!sol.ctr.columbia.edu
      !news.columbia.edu!watsun.cc.columbia.edu!jaltman
Date: 4 Mar 1997 20:38:19 GMT
Organization: Columbia University
Message-ID: <5fi17r$86h$1@apakabar.cc.columbia.edu>
References: <5fhpp2$sfk@felix.seas.gwu.edu>
From: jaltman@watsun.cc.columbia.edu (Jeffrey Altman)
Subject: Re: Televideo 955

In article <5fhpp2$sfk@felix.seas.gwu.edu>,
Robert Graves <bgraves@seas.gwu.edu> wrote:
:
: Can anyone on this newsgroup tell me if a Televideo 955 can be used in
: place of a Televideo 950?  Is a 955 just a 950 with additional control
: characters?  Thanks for the help.


The answer is 'no'.  While the 955 has a "950 mode", it does NOT make it
compatible with a 950.  It only makes the command structure similar.


    Jeffrey Altman * Sr.Software Designer * Kermit-95 for Win32 and OS/2
                 The Kermit Project * Columbia University
       612 West 115th St #716 * New York, NY * 10025 * (212) 854-1344
    http://www.columbia.edu/kermit/k95.html * kermit-support@columbia.edu

 //////////////////////////////////////////////////////////////////////////////

Newsgroups: comp.terminals
Message-ID: <6g075r$98c$1@apakabar.cc.columbia.edu>
References: <891338185.237.0.nnrp-06.c2de32c9@news.demon.co.uk> 
            <01bd5db2$5f596d60$dbb95bc0@bernie.turbosoft.com.au>
Date: 2 Apr 1998 14:26:03 GMT
From: Jeffrey Altman <jaltman@watsun.cc.columbia.edu>
Subject: Re: TVI 950 Emulation

First, Dave Rowland <daver@westbase.demon.co.uk> wrote:
>
> Can anyone help me find a terminal that has TVI 950 emulation installed
> as standard?

Then, in article <01bd5db2$5f596d60$dbb95bc0@bernie.turbosoft.com.au>,
Bernie Snoek <bernie@turbosoft.com.au> wrote:
:
: Hello Dave,
: Try looking at www.turbosoft.com.au, there is a very good implementation of
: this emulator there.  The download is large, but the product is very
: complete, you will find the 950 as a personality of the 955.


But the 950 personality of the 955 is a very different creature than
a 950.  The 950 personality really only means that the escape sequences
used are *parsed* the same way as the 950.  The *functionality* of the 
sequences are different.

-- 
    Jeffrey Altman * Sr.Software Designer * Kermit-95 for Win32 and OS/2
                 The Kermit Project * Columbia University
              612 West 115th St #716 * New York, NY * 10025
  http://www.kermit-project.org/k95.html * kermit-support@kermit-project.org


 //////////////////////////////////////////////////////////////////////////////

Newsgroups: comp.sys.stratus
Path: utkcs2!stc06.ctd.ornl.gov!fnnews.fnal.gov!uwm.edu!vixen.cso.uiuc.edu
      !howland.erols.net!news.mathworks.com!newsgate.duke.edu
      !news-relay.ncren.net!relay.ga.unc.edu!lrc!info-stratus-gate!list
Message-ID: <199708011835.OAA16555@mailhub.stratus.com>
Date: Fri, 1 Aug 1997 13:06 edt
From: Paul_Green@vos.stratus.com
Subject: RE: Stratus V103 Terminal


This is a rather subtle point, but as long as people are discussing
the differences between the Stratus V102 and V103 terminals, I
realized that I had not updated

     ftp://ftp.stratus.com/pub/vos/doc/reference/tvi955.txt

to describe a known difference between the real V102 (which is a
TeleVideo 955) terminal and the TVI955 emulation running on the V103
(which is a Link MC-5):

    Relative cursor positioning on the V103 doesn't reset non-embedded
    (no-space) attributes.

I have updated the file to acknowledge this.

I ran into this while creating the ttp and vid files for the new V105
terminal.  JYACC 5.03 (in VOS 13 and up) sends relative cursor-positioning
sequences if they are defined; previous versions did not.

The workaround, which you can see in the VOS ttp and JYACC vid files for
the V103, is not to use relative cursor positioning at all.

Bottom line:  You are not going crazy if you think there are differences
between the V102 and V103.  But they are minor and easy to avoid.

Thanks.
PG
-- 
Paul Green                  | Mail: Paul_Green@stratus.com
Senior Technical Consultant | Voice: +1 508-460-2557   FAX: +1 508-460-0397
Stratus Computer, Inc.      | Video: PictureTel/AT&T by request.
Marlboro, MA  01752         | Disclaimer: I speak for myself, not Stratus.


 //////////////////////////////////////////////////////////////////////////////

Newsgroups: comp.terminals
NNTP-Posting-Host: saltmine.radix.net
User-Agent: tin/1.4.4-20000803 ("Vet for the Insane") (UNIX) (SunOS/5.8 (sun4u))
Message-ID: <agnpu3$6d0$1@news1.Radix.Net>
References: <agnc6d$qni@dispatch.concentric.net>
Date: 12 Jul 2002 23:49:23 GMT
From: Thomas Dickey <dickey@saltmine.radix.net>
Subject: Re: Question about tvi955 cursor coordinates

Shangwu Qi <swqi@strongholdtech.com> wrote:
> Hello,
> I am working on an automation interactive program with a tvi955 terminal.
> The tvi955 reference says that ESC sequence "ESC = row col" sets cursor to
> the position (row, col) on screen. But I got different row and column
> numbers from the server to set cursor. For instance, "ESC=#7" sets cursor on
> (3, 23) coordinate of screen. It seems there is a mapping (35,55) => (3,23),
> i.e. host_xy - 32 = screen_xy.
> Could someone help me to explain this?  Any response is appreciated.


The 32 is an ASCII space.  Characters from space through tilde (~) are
printable, so the mapped cursor string (except for the ESC) consists
of printable characters as well.  That avoids conflict with other
control characters such as ESC.

-- 
Thomas E. Dickey <dickey@radix.net> <dickey@herndon4.his.com>
http://dickey.his.com/
 ftp://dickey.his.com/

 //////////////////////////////////////////////////////////////////////////////

Newsgroups: comp.terminals
References: <AcOvf.42833$dO2.28474@newssvr29.news.prodigy.net>
    <11s033v8sjg4f57@corp.supernews.com>
    <Pine.LNX.4.64.0601091956430.6600@smous.dyndns.tv>
Message-ID: <11s8mqhjnl2nibb@corp.supernews.com>
Date: Wed, 11 Jan 2006 01:11:45 -0000
From: Thomas Dickey <dickey@saltmine.radix.net>
Subject: Re: Help needed with Televideo terminal...

Dustin L. Smous <dsmous@smous.dyndns.tv> wrote:
>
> Right now, I'm using the termcap/terminfo entry for the 955, it seems to 
> be the most compatable - and that isn't saying much.  I'll reply and 
> attach the entry I modified, if I can find it...


ok.  What I got from the url I mentioned is that the 905 is a small subset
of the 955 - so many of the features should be discarded.  You can test
features using ncurses' tack program (but that does require some practice
to see problems).  Just to get an idea, try running tack on a terminal that
is working properly.

>> http://www.cs.utk.edu/~shuford/terminal/televideo_codes_news.txt
  [this file!]

-- 
Thomas E. Dickey
http://invisible-island.net/
 ftp://invisible-island.net/

 //////////////////////////////////////////////////////////////////////////////

