Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ TSET(1) — mips UMIPS RISC/os 5.01

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

csh(1)

sh(1)

stty(1)

tty(4)

environ(5)

termcap(5)

ttys(5)



TSET(1)             RISC/os Reference Manual              TSET(1)



NAME
     tset - terminal dependent initialization

SYNOPSIS
     tset [-] [-hursSQIA] [-Ec] [-ec] [-kc] [-m [ident][test
     baudrate]:type ... [type]
     reset [-] [-hursSQIA] [-Ec] [-ec] [-kc] [-m [ident][test
     baudrate]:type ... [type]

DESCRIPTION
     tset sets up your terminal when you first log in to a
     RISC/os system.  It does terminal dependent processing such
     as setting erase and kill characters, setting or resetting
     delays, sending any sequences needed to properly initialized
     the terminal, and the like.  It first determines the type of
     terminal involved, and then does necessary initializations
     and mode settings.  The type of terminal attached to each
     RISC/os port is specified in the /etc/ttytype (see ttys(5))
     database.  Type names for terminals may be found in the
     termcap(5) database.  If a port is not wired permanently to
     a specific terminal (not hardwired) it will be given an
     appropriate generic identifier such as dialup.

     In the case where no arguments are specified, tset simply
     reads the terminal type out of the environment variable TERM
     and re-initializes the terminal.  The rest of this manual
     concerns itself with mode and environment initialization,
     typically done once at login, and options used at initiali-
     zation time to determine the terminal type and set up termi-
     nal modes.

     When used in a startup script (.profile for sh(1) users or
     .login for csh(1) users) it is desirable to give information
     about the type of terminal you will usually use on ports
     which are not hardwired.  These ports are identified in
     /etc/ttytype as dialup or plugboard or arpanet, etc.  To
     specify what terminal type you usually use on these ports,
     the -m (map) option flag is followed by the appropriate port
     type identifier, an optional baud rate specification, and
     the terminal type.  (The effect is to ``map'' from some con-
     ditions to a terminal type, that is, to tell tset ``If I'm
     on this kind of port, guess that I'm on that kind of termi-
     nal''.)  If more than one mapping is specified, the first
     applicable mapping prevails.  A missing port type identifier
     matches all identifiers.  Any of the alternate generic names
     given in termcap may be used for the identifier.

     A baudrate is specified as with stty(1), and is compared
     with the speed of the diagnostic output (which should be the
     control terminal).  The baud rate test may be any combina-
     tion of:  >, @, <, and !; @ means ``at'' and ! inverts the
     sense of the test.  To avoid problems with metacharacters,



                        Printed 11/19/92                   Page 1





TSET(1)             RISC/os Reference Manual              TSET(1)



     it is best to place the entire argument to -m within ``'''
     characters; users of csh(1) must also put a ``\'' before any
     ``!'' used here.

     Thus

     tset -m 'dialup>300:adm3a' -m dialup:dw2 -m
     'plugboard:?adm3a'

     causes the terminal type to be set to an adm3a if the port
     in use is a dialup at a speed greater than 300 baud; to a
     dw2 if the port is (otherwise) a dialup (i.e. at 300 baud or
     less).  (NOTE: the examples given here appear to take up
     more than one line, for text processing reasons.  When you
     type in real tset commands, you must enter them entirely on
     one line.)  If the type finally determined by tset begins
     with a question mark, the user is asked if s/he really wants
     that type.  A null response means to use that type; other-
     wise, another type can be entered which will be used
     instead.  Thus, in the above case, the user will be queried
     on a plugboard port as to whether they are actually using an
     adm3a.

     If no mapping applies and a final type option, not preceded
     by a -m, is given on the command line then that type is
     used; otherwise the type found in the /etc/ttytype database
     will be taken to be the terminal type.  This should always
     be the case for hardwired ports.

     It is usually desirable to return the terminal type, as
     finally determined by tset, and information about the
     terminal's capabilities to a shell's environment.  This can
     be done using the - option; using the Bourne shell, sh(1):

          export TERM; TERM=`tset - options...`

     or using the C shell, csh(1):

          setenv TERM `tset - options...`

     With csh it is preferable to use the following command in
     your .login file to initialize the TERM environment variable
     at the same time.

          eval `tset -s options...`

     It is also convenient to make an alias in your .cshrc:

          alias tset 'eval `tset -s \!*`'

     This allows the command:




 Page 2                 Printed 11/19/92





TSET(1)             RISC/os Reference Manual              TSET(1)



          tset 2621

     to be invoked at any time to set the terminal and environ-
     ment.  Note to Bourne Shell users: It is not possible to get
     this aliasing effect with a shell script, because shell
     scripts cannot set the environment of their parent.  (If a
     process could set its parent's environment, none of this
     nonsense would be necessary in the first place.)

     These commands cause tset to place the name of your terminal
     in the variable TERM in the environment; see environ(5).

     Once the terminal type is known, tset engages in terminal
     driver mode setting.  This normally involves sending an ini-
     tialization sequence to the terminal, setting the single
     character erase (and optionally the line-kill (full line
     erase)) characters, and setting special character delays.
     Tab and newline expansion are turned off during transmission
     of the terminal initialization sequence.

     On terminals that can backspace but not overstrike (such as
     a CRT), and when the erase character is the default erase
     character (`#' on standard systems), the erase character is
     changed to BACKSPACE (Control-H).

     The options are:

     -Ec  set the erase character to the named character c on all
          terminals except those which cannot backspace (e.g., a
          TTY 33).  c defaults to control-H.

     -ec  set the erase character to be the named character c on
          all terminals, the default being the backspace charac-
          ter on the terminal, usually ^H.  The character c can
          either be typed directly, or entered using the hat
          notation used here.

     -kc  is similar to -e but for the line kill character rather
          than the erase character; c defaults to ^X (for purely
          historical reasons).  The kill characters is left alone
          if -k is not specified.  The hat notation can also be
          used for this option.

     -    The name of the terminal finally decided upon is output
          on the standard output.   If no other flags are stated,
          the only affect is to write the terminal type on the
          standard output.  This is intended to be captured by
          the shell and placed in the environment variable TERM.

     -r   The name of the terminal finally decided upon is output
          on the standard output.




                        Printed 11/19/92                   Page 3





TSET(1)             RISC/os Reference Manual              TSET(1)



     -s   Print the sequence of csh commands to initialize the
          environment variable TERM based on the name of the ter-
          minal finally decided upon.

     -S   similar to -s but outputs a string suitable for use in
          csh .login files as follows:
               set noglob
               set term=(`tset -S .....`)
               setenv TERM $term[1]
               unset noglob

     -I   suppresses transmitting terminal initialization
          strings.

     -Q   suppresses printing the ``Erase set to'' and ``Kill set
          to'' messages.

     -A   prompt the user for the terminal type.  If the user
          replies with just a newline, tset will use the default
          type shown in parenthesis.

     If tset is invoked as reset, it will set cooked and echo
     modes, turn off cbreak and raw modes, turn on newline trans-
     lation, and restore special characters to a sensible state
     before any terminal dependent processing is done.  Any spe-
     cial character that is found to be NULL or ``-1'' is reset
     to its default value.  All arguments to tset may be used
     with reset.

     This is most useful after a program dies leaving a terminal
     in a funny state. You may have to type ``<LF>reset<LF>'' to
     get it to work since <CR> may not work in this state. Often
     none of this will echo.

EXAMPLES
     These examples all assume the Bourne shell and use the -
     option.  If you use csh, use one of the variations described
     above.  Note that a typical use of tset in a .profile or
     .login will also use the -e and -k options, and often the -n
     or -Q options as well.  These options have not been included
     here to keep the examples small.  (NOTE: some of the exam-
     ples given here appear to take up more than one line, for
     text processing reasons.  When you type in real tset com-
     mands, you must enter them entirely on one line.)

     At the moment, you are on a 2621.  This is suitable for typ-
     ing by hand but not for a .profile, unless you are always on
     a 2621.

          export TERM; TERM=`tset - 2621`





 Page 4                 Printed 11/19/92





TSET(1)             RISC/os Reference Manual              TSET(1)



     You have an h19 at home which you dial up on, but your
     office terminal is hardwired and known in /etc/ttytype.

          export TERM; TERM=`tset - -m dialup:h19`

     You have a switch which connects everything to everything,
     making it nearly impossible to key on what port you are com-
     ing in on.  You use a vt100 in your office at 9600 baud, and
     dial up to switch ports at 1200 baud from home on a 2621.
     Sometimes you use someone elses terminal at work, so you
     want it to ask you to make sure what terminal type you have
     at high speeds, but at 1200 baud you are always on a 2621.
     Note the placement of the question mark, and the quotes to
     protect the greater than and question mark from interpreta-
     tion by the shell.

     export TERM; TERM=`tset - -m 'switch>1200:?vt100' -m
     'switch<=1200:2621'

     All of the above entries will fall back on the terminal type
     specified  in  /etc/ttytype  if none of the conditions hold.
     The following entry is appropriate if you  always  dial  up,
     always  at  the  same  baud rate, on many different kinds of
     terminals.  Your most  common  terminal  is  an  adm3a.   It
     always asks you what kind of terminal you are on, defaulting
     to adm3a.

          export TERM; TERM=`tset - ?adm3a`

     If the file /etc/ttytype is not properly installed  and  you
     want  to key entirely on the baud rate, the following can be
     used:

          export TERM; TERM=`tset - -m '>1200:vt100' 2621`

     Here is a fancy example to illustrate the power of tset  and
     to  hopelessly confuse anyone who has made it this far.  You
     dial up at 1200 baud or less on a concept100, sometimes over
     switch  ports  and  sometimes over regular dialups.  You use
     various terminals at speeds higher  than  1200  over  switch
     ports,  most  often  the terminal in your office, which is a
     vt100.  However, sometimes you log in  from  the  university
     you used to go to, over the ARPANET; in this case you are on
     an ALTO emulating a dm2500.  You also often log in on  vari-
     ous  hardwired  ports, such as the console, all of which are
     properly entered in /etc/ttytype.  You want your erase char-
     acter  set  to control H, your kill character set to control
     U, and don't want tset to print the  ``Erase  set  to  Back-
     space, Kill set to Control U'' message.

     export TERM; TERM=`tset -e -k^U -Q - -m 'switch<=1200:concept100' \
     -m 'switch:?vt100' -m dialup:concept100 -m arpanet:dm2500`



                        Printed 11/19/92                   Page 5





TSET(1)             RISC/os Reference Manual              TSET(1)



FILES
     /etc/ttytype             port name to terminal type  mapping
                              database
     /etc/termcap             terminal capability database

SEE ALSO
     csh(1), sh(1), stty(1).
     tty(4), environ(5), termcap(5), ttys(5) in the  Programmer's
     Reference Manual.

BUGS
     The tset command is one of the first commands  a  user  must
     master  when  getting  started  on a RISC/os system.  Unfor-
     tunately, it is one of the most complex, largely because  of
     the  extra  effort  the  user  must  go  through  to get the
     environment of the login shell set.  Something needs  to  be
     done  to  make all this simpler, either the login(1) program
     should do this stuff, or a default  shell  alias  should  be
     made,  or  a way to set the environment of the parent should
     exist.

     This program can't intuit personal choices for erase, inter-
     rupt and line kill characters, so it leaves these set to the
     local system standards.































 Page 6                 Printed 11/19/92



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026