diff --git a/doc/html/man/tset.1.html b/doc/html/man/tset.1.html
new file mode 100644
index 0000000..951fd0c
--- /dev/null
+++ b/doc/html/man/tset.1.html
@@ -0,0 +1,333 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
+<!-- 
+  ****************************************************************************
+  * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.              *
+  *                                                                          *
+  * Permission is hereby granted, free of charge, to any person obtaining a  *
+  * copy of this software and associated documentation files (the            *
+  * "Software"), to deal in the Software without restriction, including      *
+  * without limitation the rights to use, copy, modify, merge, publish,      *
+  * distribute, distribute with modifications, sublicense, and/or sell       *
+  * copies of the Software, and to permit persons to whom the Software is    *
+  * furnished to do so, subject to the following conditions:                 *
+  *                                                                          *
+  * The above copyright notice and this permission notice shall be included  *
+  * in all copies or substantial portions of the Software.                   *
+  *                                                                          *
+  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+  *                                                                          *
+  * Except as contained in this notice, the name(s) of the above copyright   *
+  * holders shall not be used in advertising or otherwise to promote the     *
+  * sale, use or other dealings in this Software without prior written       *
+  * authorization.                                                           *
+  ****************************************************************************
+  * @Id: tset.1,v 1.19 2006/12/24 15:00:30 tom Exp @
+-->
+<HTML>
+<HEAD>
+<TITLE>tset 1</TITLE>
+<link rev=made href="mailto:bug-ncurses@gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</HEAD>
+<BODY>
+<H1>tset 1</H1>
+<HR>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+<STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>                                                         <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>
+
+
+
+
+</PRE>
+<H2>NAME</H2><PRE>
+       <STRONG>tset</STRONG>, <STRONG>reset</STRONG> - terminal initialization
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <STRONG>tset</STRONG>  [<STRONG>-IQVcqrsw</STRONG>] [<STRONG>-</STRONG>] [<STRONG>-e</STRONG> <EM>ch</EM>] [<STRONG>-i</STRONG> <EM>ch</EM>] [<STRONG>-k</STRONG> <EM>ch</EM>] [<STRONG>-m</STRONG> <EM>mapping</EM>]
+       [<EM>terminal</EM>]
+       <STRONG>reset</STRONG> [<STRONG>-IQVcqrsw</STRONG>] [<STRONG>-</STRONG>] [<STRONG>-e</STRONG> <EM>ch</EM>] [<STRONG>-i</STRONG> <EM>ch</EM>] [<STRONG>-k</STRONG> <EM>ch</EM>] [<STRONG>-m</STRONG> <EM>mapping</EM>]
+       [<EM>terminal</EM>]
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       <STRONG>Tset</STRONG>  initializes  terminals.   <STRONG>Tset</STRONG>  first determines the
+       type of terminal that you are using.   This  determination
+       is done as follows, using the first terminal type found.
+
+       1. The <STRONG>terminal</STRONG> argument specified on the command line.
+
+       2. The value of the <STRONG>TERM</STRONG> environmental variable.
+
+       3.  (BSD  systems only.) The terminal type associated with
+       the standard error output device in  the  <EM>/etc/ttys</EM>  file.
+       (On Linux and System-V-like UNIXes, <EM>getty</EM> does this job by
+       setting <STRONG>TERM</STRONG>  according  to  the  type  passed  to  it  by
+       <EM>/etc/inittab</EM>.)
+
+       4. The default terminal type, ``unknown''.
+
+       If  the  terminal  type  was not specified on the command-
+       line, the <STRONG>-m</STRONG> option mappings are  then  applied  (see  the
+       section  <STRONG>TERMINAL</STRONG>  <STRONG>TYPE</STRONG>  <STRONG>MAPPING</STRONG>  for  more  information).
+       Then, if the terminal type begins  with  a  question  mark
+       (``?''), the user is prompted for confirmation of the ter-
+       minal type.  An empty  response  confirms  the  type,  or,
+       another  type  can be entered to specify a new type.  Once
+       the terminal type has been determined, the terminfo  entry
+       for  the  terminal  is retrieved.  If no terminfo entry is
+       found for the type, the user is prompted for another  ter-
+       minal type.
+
+       Once  the  terminfo  entry  is retrieved, the window size,
+       backspace, interrupt and line kill characters (among  many
+       other things) are set and the terminal and tab initializa-
+       tion strings  are  sent  to  the  standard  error  output.
+       Finally,  if the erase, interrupt and line kill characters
+       have changed, or are not  set  to  their  default  values,
+       their  values  are displayed to the standard error output.
+       Use the <STRONG>-c</STRONG> or <STRONG>-w</STRONG> option to select only the  window  sizing
+       versus  the  other  initialization.   If neither option is
+       given, both are assumed.
+
+       When invoked as <STRONG>reset</STRONG>, <STRONG>tset</STRONG> sets cooked  and  echo  modes,
+       turns  off cbreak and raw modes, turns on newline transla-
+       tion and resets any  unset  special  characters  to  their
+       default  values  before  doing the terminal initialization
+       described above.  This is  useful  after  a  program  dies
+       leaving  a  terminal  in an abnormal state.  Note, you may
+       have to type
+
+           <STRONG>&lt;LF&gt;reset&lt;LF&gt;</STRONG>
+
+       (the line-feed character is normally control-J) to get the
+       terminal to work, as carriage-return may no longer work in
+       the abnormal state.  Also, the  terminal  will  often  not
+       echo the command.
+
+       The options are as follows:
+
+       <STRONG>-c</STRONG>   Set  control  characters and modes.  <STRONG>-e</STRONG> Set the erase
+            character to <EM>ch</EM>.
+
+       <STRONG>-I</STRONG>   Do  not  send  the  terminal  or  tab  initialization
+            strings to the terminal.
+
+       <STRONG>-i</STRONG>   Set the interrupt character to <EM>ch</EM>.
+
+       <STRONG>-k</STRONG>   Set the line kill character to <EM>ch</EM>.
+
+       <STRONG>-m</STRONG>   Specify  a  mapping  from  a port type to a terminal.
+            See the section <STRONG>TERMINAL</STRONG> <STRONG>TYPE</STRONG> <STRONG>MAPPING</STRONG> for more infor-
+            mation.
+
+       <STRONG>-Q</STRONG>   Do  not  display  any values for the erase, interrupt
+            and line kill characters.  Normally <STRONG>tset</STRONG> displays the
+            values  for  control characters which differ from the
+            system's default values.
+
+       <STRONG>-q</STRONG>   The terminal type is displayed to the  standard  out-
+            put,  and the terminal is not initialized in any way.
+            The option `-' by itself is equivalent but archaic.
+
+       <STRONG>-r</STRONG>   Print the terminal type to the standard error output.
+
+       <STRONG>-s</STRONG>   Print  the  sequence  of shell commands to initialize
+            the environment variable <STRONG>TERM</STRONG> to the standard output.
+            See  the section <STRONG>SETTING</STRONG> <STRONG>THE</STRONG> <STRONG>ENVIRONMENT</STRONG> for details.
+
+       <STRONG>-V</STRONG>   reports the version of ncurses which was used in this
+            program, and exits.
+
+       <STRONG>-w</STRONG>   Resize  the  window  to  match  the  size deduced via
+            <STRONG>setupterm</STRONG>.   Normally  this  has  no  effect,  unless
+            <STRONG>setupterm</STRONG> is not able to detect the window size.
+
+       The arguments for the <STRONG>-e</STRONG>, <STRONG>-i</STRONG>, and <STRONG>-k</STRONG> options may either be
+       entered as actual characters or by using the  `hat'  nota-
+       tion, i.e. control-h may be specified as ``^H'' or ``^h''.
+
+
+</PRE>
+<H2>SETTING THE ENVIRONMENT</H2><PRE>
+       It is often desirable  to  enter  the  terminal  type  and
+       information  about  the  terminal's  capabilities into the
+       shell's environment.  This is done using the <STRONG>-s</STRONG> option.
+
+       When the <STRONG>-s</STRONG> option is specified, the commands to enter the
+       information  into  the  shell's environment are written to
+       the standard output.  If the <STRONG>SHELL</STRONG> environmental  variable
+       ends in ``csh'', the commands are for <STRONG>csh</STRONG>, otherwise, they
+       are for <STRONG>sh</STRONG>.  Note, the <STRONG>csh</STRONG>  commands  set  and  unset  the
+       shell  variable  <STRONG>noglob</STRONG>,  leaving it unset.  The following
+       line in the <STRONG>.login</STRONG> or <STRONG>.profile</STRONG> files will  initialize  the
+       environment correctly:
+
+           eval `tset -s options ... `
+
+
+</PRE>
+<H2>TERMINAL TYPE MAPPING</H2><PRE>
+       When the terminal is not hardwired into the system (or the
+       current system information is incorrect) the terminal type
+       derived  from the <EM>/etc/ttys</EM> file or the <STRONG>TERM</STRONG> environmental
+       variable is often something generic like <STRONG>network</STRONG>,  <STRONG>dialup</STRONG>,
+       or  <STRONG>unknown</STRONG>.   When <STRONG>tset</STRONG> is used in a startup script it is
+       often desirable to provide information about the  type  of
+       terminal used on such ports.
+
+       The  purpose  of  the <STRONG>-m</STRONG> option is to map from some set of
+       conditions to a terminal type, that is, to tell <STRONG>tset</STRONG>  ``If
+       I'm  on this port at a particular speed, guess that I'm on
+       that kind of terminal''.
+
+       The argument to the <STRONG>-m</STRONG> option consists of an optional port
+       type, an optional operator, an optional baud rate specifi-
+       cation, an optional colon (``:'') character and a terminal
+       type.   The port type is a string (delimited by either the
+       operator or the colon character).  The operator may be any
+       combination of ``&gt;'', ``&lt;'', ``@'', and ``!''; ``&gt;'' means
+       greater than, ``&lt;'' means less than, ``@'' means equal  to
+       and ``!'' inverts the sense of the test.  The baud rate is
+       specified as a number and is compared with  the  speed  of
+       the  standard  error  output  (which should be the control
+       terminal).  The terminal type is a string.
+
+       If the terminal type is not specified on the command line,
+       the  <STRONG>-m</STRONG> mappings are applied to the terminal type.  If the
+       port type and baud rate match the  mapping,  the  terminal
+       type  specified  in the mapping replaces the current type.
+       If more than one mapping is specified, the first  applica-
+       ble mapping is used.
+
+       For    example,    consider    the    following   mapping:
+       <STRONG>dialup&gt;9600:vt100</STRONG>.  The port type is dialup , the operator
+       is  &gt;, the baud rate specification is 9600, and the termi-
+       nal type is vt100.  The result of this mapping is to spec-
+       ify that if the terminal type is <STRONG>dialup</STRONG>, and the baud rate
+       is greater than 9600 baud, a terminal type of  <STRONG>vt100</STRONG>  will
+       be used.
+
+       If no baud rate is specified, the terminal type will match
+       any baud rate.  If no port type is specified, the terminal
+       type   will   match   any  port  type.   For  example,  <STRONG>-m</STRONG>
+       <STRONG>dialup:vt100</STRONG>  <STRONG>-m</STRONG>  <STRONG>:?xterm</STRONG>  will  cause  any  dialup  port,
+       regardless of baud rate, to match the terminal type vt100,
+       and any non-dialup port type to match  the  terminal  type
+       ?xterm.   Note,  because of the leading question mark, the
+       user will be queried on a default port as to whether  they
+       are actually using an xterm terminal.
+
+       No  whitespace  characters  are permitted in the <STRONG>-m</STRONG> option
+       argument.  Also, to avoid problems  with  meta-characters,
+       it  is  suggested  that  the  entire <STRONG>-m</STRONG> option argument be
+       placed within single quote characters, and that <STRONG>csh</STRONG>  users
+       insert  a  backslash character (``\'') before any exclama-
+       tion marks (``!'').
+
+
+</PRE>
+<H2>HISTORY</H2><PRE>
+       The <STRONG>tset</STRONG> command appeared in BSD 3.0.  The <STRONG>ncurses</STRONG>  imple-
+       mentation  was lightly adapted from the 4.4BSD sources for
+       a terminfo environment by Eric S. Raymond &lt;esr@snark.thyr-
+       sus.com&gt;.
+
+
+</PRE>
+<H2>COMPATIBILITY</H2><PRE>
+       The  <STRONG>tset</STRONG>  utility has been provided for backward-compati-
+       bility with BSD environments (under  most  modern  UNIXes,
+       <STRONG>/etc/inittab</STRONG>  and  <STRONG><A HREF="getty.1.html">getty(1)</A></STRONG> can set <STRONG>TERM</STRONG> appropriately for
+       each dial-up line; this  obviates  what  was  <STRONG>tset</STRONG>'s  most
+       important  use).   This implementation behaves like 4.4BSD
+       tset, with a few exceptions specified here.
+
+       The <STRONG>-S</STRONG> option of BSD tset no longer works;  it  prints  an
+       error message to stderr and dies.  The <STRONG>-s</STRONG> option only sets
+       <STRONG>TERM</STRONG>, not <STRONG>TERMCAP</STRONG>.  Both these  changes  are  because  the
+       <STRONG>TERMCAP</STRONG>  variable  is  no longer supported under terminfo-
+       based <STRONG>ncurses</STRONG>, which makes <STRONG>tset</STRONG> <STRONG>-S</STRONG> useless (we made it die
+       noisily rather than silently induce lossage).
+
+       There  was  an  undocumented  4.4BSD feature that invoking
+       tset via a link named `TSET` (or via any other name begin-
+       ning  with  an  upper-case letter) set the terminal to use
+       upper-case only.  This feature has been omitted.
+
+       The <STRONG>-A</STRONG>, <STRONG>-E</STRONG>, <STRONG>-h</STRONG>, <STRONG>-u</STRONG> and <STRONG>-v</STRONG> options were  deleted  from  the
+       <STRONG>tset</STRONG>  utility  in 4.4BSD.  None of them were documented in
+       4.3BSD and all are of limited utility at  best.   The  <STRONG>-a</STRONG>,
+       <STRONG>-d</STRONG>, and <STRONG>-p</STRONG> options are similarly not documented or useful,
+       but were retained as they appear to be in widespread  use.
+       It  is  strongly recommended that any usage of these three
+       options be changed to use the <STRONG>-m</STRONG> option instead.   The  -n
+       option  remains, but has no effect.  The <STRONG>-adnp</STRONG> options are
+       therefore omitted from the usage summary above.
+
+       It is still permissible to specify  the  <STRONG>-e</STRONG>,  <STRONG>-i</STRONG>,  and  <STRONG>-k</STRONG>
+       options  without arguments, although it is strongly recom-
+       mended that such usage be fixed to explicitly specify  the
+       character.
+
+       As  of  4.4BSD,  executing <STRONG>tset</STRONG> as <STRONG>reset</STRONG> no longer implies
+       the <STRONG>-Q</STRONG> option.  Also, the interaction between the - option
+       and the <EM>terminal</EM> argument in some historic implementations
+       of <STRONG>tset</STRONG> has been removed.
+
+
+</PRE>
+<H2>ENVIRONMENT</H2><PRE>
+       The <STRONG>tset</STRONG> command uses these environment variables:
+
+       SHELL
+            tells <STRONG>tset</STRONG> whether to initialize <STRONG>TERM</STRONG> using <STRONG>sh</STRONG> or <STRONG>csh</STRONG>
+            syntax.
+
+       TERM Denotes  your  terminal  type.  Each terminal type is
+            distinct, though many are similar.
+
+       TERMCAP
+            may denote the location of a termcap database.  If it
+            is not an absolute pathname, e.g., begins with a `/',
+            <STRONG>tset</STRONG> removes the variable from the environment before
+            looking for the terminal description.
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+       /etc/ttys
+            system  port  name  to terminal type mapping database
+            (BSD versions only).
+
+       /usr/share/terminfo
+            terminal capability database
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <STRONG><A HREF="csh.1.html">csh(1)</A></STRONG>, <STRONG><A HREF="sh.1.html">sh(1)</A></STRONG>, <STRONG><A HREF="stty.1.html">stty(1)</A></STRONG>,  <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>,  <STRONG><A HREF="tty.4.html">tty(4)</A></STRONG>,  ter-
+       <STRONG><A HREF="minfo.5.html">minfo(5)</A></STRONG>, <STRONG><A HREF="ttys.5.html">ttys(5)</A></STRONG>, <STRONG><A HREF="environ.7.html">environ(7)</A></STRONG>
+
+       This describes <STRONG>ncurses</STRONG> version 5.6 (patch 20081011).
+
+
+
+                                                                <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
