\documentstyle[dina4]{article}

\begin{document}
\newcounter{bean}

\newenvironment{defit}[1]{\begin{list}%
{$\bullet$}{\usecounter{bean}
	\settowidth{\labelwidth}{#1}
	\setlength{\leftmargin}{\labelwidth}
	\addtolength{\leftmargin}{\labelsep}
}}{\end{list}}

\title{TERM}
\author{0laf Barthel}

\maketitle

\centerline{A Gift-Ware telecommunications program written by}
\centerline{Olaf Barthel, © copyright 1990-92 by Olaf Barthel \& MXM,}
\centerline{All rights reserved.}

   No  guarantee of any kind is given that the program(s) described in this
document are 100\% reliable.  You are using this material on your own risk.

\newpage\tableofcontents

\newpage\section{Important information}

\subsection{New names for configuration files}

   For   compliance   with   existing   design  guidelines,  the  names  of
configuration  files  and  the  preferred  storage  directory have changed.
`term'  will  now  store  and read configuration files in the `TERM:config'
drawer  (well,  unless  there  is  a  `TERMPATH'  variable  which lead to a
different  path...   see below).  If no `TERM:' device is available, `term'
will  assign  `TERM:'  to  the  directory  it  was  started  from.   If  no
`TERM:config' drawer is available, it will be created.

\centerline{The new file names are:}

\begin{center}
\begin{tabular}{|lcl|}
\hline
Preferences.term & \verb+->+ & term\_preferences.iff  \\
Phonebook.term   & \verb+->+ & term\_phonebook.iff    \\
Hotkeys.term     & \verb+->+ & term\_hotkeys.iff      \\
Speech.term      & \verb+->+ & term\_speech.iff       \\
Macros.term      & \verb+->+ & term\_macros.iff       \\
Fast!Macros.term & \verb+->+ & term\_fastmacros.iff   \\ \hline
\end{tabular}
\end{center}

\section{Background}

This  program  is  a  product of anger and despair;  I was unable to find a
telecommunications  program  to  suit  my  personal needs -- neither in the
commercial area, nor in the public-domain.

   Most  programs  had  a  lot  of  extras but lacked other more important,
perhaps more sensible features (just to take an example:  in revision 2.20c
and after four years of constant development `HandShake' still fails to use
the  current  keymap  settings  and  also  strips  bit  7  when  displaying
characters - sorry Eric, that's why I never registered!).

   I  have  hesitated  for  a long time before starting my first attempt at
writing  my  very  own  telecommunications program.  When Kickstart 2.x was
about  to  become  widely available I took the opportunity to create `term'
always  trying  to  use  the new OS routines wherever possible.  While this
started  to  be  quite  a  difficult task it also was a lot of fun (imagine
Columbus  wrecking  his  fleat four times on his journey to the West Indies
due  to unexpected leakages in all vessels and sudden changes in the ships'
sailing manuals -- that's how I felt!).

   As  far as computer-telecommunications are concerned, Germany appears to
be  a  developing  country.  This is partly due to the Deutsche Bundespost,
the federal mail / phone company whose telecommunications monopoly used to be
protected  by  federal  law.   Until 1989 you would risk a heavy penalty if
using    a    non-registered    modem   or   telephone   instead   of   the
Bundespost-supplied  hardware.   So,  if you have any complaints, or miss a
few extremely important features in `term', don't boo and hiss, I am not as
long in the telecomm business as you are (I have yet seen only a single DEC
VT-101  from afar!).  Tell me what you need and I will try to add it in the
next revision.

   This project was started at December 24 1990 and completed by January 25
1991.   I  used the following tools to create `term':  SAS / C 5.10b, WShell,
CygnusEd Professional Release 2 \& ARexx.

   My  thanks  go  to  the  following  people for their invaluable help and
assistance:    Holger   Lubitz,  Peter  Fischer,  Christoph  Teuber,  Garry
Glendown,  Oliver  Wagner, Jürgen Otte, Germar Morgenthaler, Matthias Zepf,
Markus   Stoll,   Ralf   Thanner,   Martin  Berndt,  Ueli  Kaufmann,  Veith
Schörgenhummer,  Michael  Vaeth, Roby Leemann \& AUGS, Thorsten Seidel, Till
`Dill-Prince' Prinzler, Volker Ulle \& the Aquila Sysop Team, Marc-Christian
Schröer, Udo Wolt, Michael Hohmann, Henning Hucke, Stefan Becker and to all
those who supplied libraries \& control sequence tables.
   Special  thanks  go  to  John Burton of Papua New Guinea who revised and
rewrote  certain parts of the program, in particular the terminal emulation
routines.

   The  xpr-libraries  were  created by Andreas Schildbach (ascii), Kenneth
Osterberg  \&  Markus  Pietz  (jmodem),  Stephen Walton (kermit), Jack Rouse
(quickb),  Marc  Boucher  (xmodem),  Ueli  Kaufmann (ymodem \& vms) and Rick
Huebner \& William M.  Perkins (zmodem).

   The xpr-standard was created by Willy Langeveld, the Res.asm source code
was  provided  by  Edward  Carrol, I borrowed a single routine (ahtoi) from
Matthew  Dillon's  `DMouse'  program, the quicksort routine (QuickSort.asm)
was  written  by  David Jones, the touch-tone dialing routines are based on
the  article  `DTMF  - A Program for Generating Touch-Tone Signals' by Adam
Levin,  the  touch  tone  period  and  cycle values are © Copyright 1989 by
Commodore-Amiga, Inc.

   The  current  implementation  of  the external terminal emulation module
interface  was  developed  by  Ueli  Kaufmann,  who also wrote the external
terminal  emulation libraries supplied with `term'.  Without the invaluable
help  of  Martin Berndt the library interface would probably not be working
at all.

   Christopher  Wichura  suggested  that  `term'  should  make  use  of his
OwnDevUnit.library.

   Special  thanks go to Leo Schwab who discovered means to use interleaved
bitmaps in a system-integrated manner.

   Since  time  did  not  permit  me  to translate the full original German
documentation into English, I had asked the Z-Net Amiga community for help.
As  a  result  this  document was translated by three different authors (in
order of translation):  me, Marc Schröer and Henning Hucke.  Garry Glendown
took care of the termRexx documentation -- thanks to all of you!


\section{The source code}

Since  there  are  still only very few well-documented examples (or general
programming  examples) for Kickstart 2.x I have decided to include the full
`C' source code with the `term' distribution.
   The  source code is \_not\_ intended for commercial use.  If you are about
to  include  portions  in  commercial  programs you will need to ask me for
permission.   Still you may use parts of the source code for non-commercial
software development without my consent.
   I  sincerely  hope  that the release of the full `term' source code will
give  Kickstart 2.x a better start (I've overcome quite a lot of obstacles)
so that more programs to use the new OS features will be available soon.


\section{The distribution}

`term' may be included with commercial programs as long as no money is made
by  including  it  in  the  distribution (this also applies to inclusion in
AmigaDOS  Enhancer  kits,  on  Workbench / Extras  disks  or  A3x00 hard disk
drives).
   You  \_must\_not\_ make any money by distributing `term'.  A small copy fee
for  data media (5\$ US maximum) or the inclusion of `term' in Public-Domain
collections  such  as  Fred  Fish's  Amiga  Library of Freely Distributable
Software is permitted though.


\section{Using `term'}

The  program  `term'  and the data received / sent by it must not be used for
the following purposes:

\begin{enumerate}

\item The  construction,  development,  production  or  testing  of weapons or weapon
systems of any kind.

\item The construction, development, production or use of plants / installations which
include the processing of radioactive / fissionable material.

\item The training of persons to deal with the abovesaid actions.

\end{enumerate}

\section{Updates \& new program revision}

Whenever  a  new  release of `term' becomes available I will try to make it
known  in  the  telecommunications  networks.   To order a copy send a self
addressed  envelope,  an  international  mail  reply coupon (coupon-réponse
international) and a 3½" disk to the author.
   The  most  current  `term'  release  will  be available through ftp from
ftp.informatik.uni-oldenburg.de     (134.106.1.9),     look     into    the
`\-/pub\-/amiga\-/term'  directory.   I  will also try to make sure that the most
current    `term'    release    will   be   available   trough   ftp   from
ab20\-.larc\-.nasa\-.gov.


\section{Operating `term'}

`term'  can  be  controlled  both  by  mouse  and keyboard.  With two minor
exceptions  each  operation  requiring  mouse  control can also be executed
using keyboard shortcuts.
   The  program  can  be  started  both  from  Workbench  and  from  Shell.
Kickstart  2.x  is required to run `term'.  The program will refuse to work
if executed under control of Kickstart 1.3 and below!
   At  least  Kickstart 2.04 (revision 37.175) and Workbench 2.04 (revision
37.67)  are  required  to  execute  `term' successfully.  Earlier developer
Kickstart  revisions  or the Kickstart release installed on the older A3000
models will probably not work (try it if you want -- but don't complain!).
   If  called from Shell `term' will detach itself immediately allowing the
Shell  window  to  be  closed  afterwards.   This  effect can be avoided if
`KEEPIO' is entered in the command line (`term keepio').
   Usually, running `term' twice will cause the screen of the other program
to  be popped to the front instead of creating a second `term' process.  To
avoid  this  effect,  enter  `DONTPOP'  as a calling parameter (e.g.  `term
dontpop').   If  called from Workbench, each program will run as a separate
process.


\section{The display}

The  `term'  main screen always opens to the full text-overscan size (which
can be set using the `Overscan' tool in the `Prefs' drawer).
   At  the  bottom  of  the  screen  a  small  window  displays a few basic
parameters.  These are:

\begin{defit}{\bf Parameters~~~}

\item[\bf Status \hfill]  The   current  program  operating  status.   This  includes
                `Ready',  `Holding' (Control+S was pressed), `Dialing' (the
                dialing  function  is  at  work),  `Upload'  (data is being
                sent),  `Download'  (data is being received), `Breaking' (a
                break  signal  is  transmitted  across the serial line) and
                `Hanging up' (connection is being cancelled).

\item[\bf Font \hspace*{\fill}]  The  currently  active  screen  font used for text\-/graphics
                rendering.

\item[\bf Protocol \hspace*{\fill}] The currently set data transfer protocol.

\item[\bf Emulation \hspace*{\fill}] The currently active terminal emulation mode.

\item[\bf Baud Rate \hspace*{\fill}] The data transfer rate in bits per second.

\item[\bf Parameters \hspace*{\fill}] The current serial parameters (Data bits-Parity-Stop bits).

\item[\bf Time \hspace*{\fill}] The current time of day.

\item[\bf Online \hspace*{\fill}] The  time  elapsed  after  a  connection  was  successfully
                established.   This  counter will be stopped as soon as the
                connection  is cancelled (e.g.  by hanging up) and is reset
                to 00:00:00 as soon as a new connection is made.
                   Every  five  seconds  the  time display will change to a
                calling fee display and the other way round.

\end{defit}

   The  screen itself is opened as a public screen (called `TERM') which is
available  to  other  programs for their purposes.  If more than one `term'
process  is  running,  the  public screen name will change according to the
number  of  the program (i.e.  the first `term' to be started will call the
scren  `TERM',  the second one will call it `TERM1', the third one `TERM2',
etc.).   The  screen  title  bar  will  also display the name of the public
screen.


\section{The menus}

For  each  requester  and  input window there exists a set of menu items to
execute  the  commands associated with the buttons, dials and gauges in the
requester\-/window.   Press  to  right  mouse  button  to  have a look at the
commands and their shortcuts.
   The following text is to describe the menu items available in the `term'
main menu.

\subsection{Project}

This menu contains functions to load and to save program configurations and
to quit the program.

\begin{defit}{\bf Save Preferences As~~}

\item[\bf Open Preferences\hfill] Loads the program configuration from a file to be selected.

\item[\bf Save Preferences\hfill] Saves  the  current  program configuration  under  the
configuration  file  name  last entered.

\item[\bf Save Preferences As\hfill]  Saves  the current program configuration to a file to be
selected.

\item[\bf Print Screen\hfill]  Sends  the  current  contents of the `term' screen  to  the
printer. This  is  not a graphics    hardcopy,    only the   ASCII  characters are
printed.

\item[\bf Iconify\hfill] Closes  all  screens and windows `term' has currently  open,  resets
and releases the serial  driver  and  puts  an icon into the Workbench   window.
Double-clicking  this icon  will  cause  `term' to wake up and to return   the   state
is   was  in  before iconification took place.

Note:   while  `term'  is icon\-ified, all incoming syn\-chron\-ous ARexx-\-com\-mands will be
queued and the corresponding ARexx programs will  appear  to `hang'.  As soon as `term'
is  `awake'  again pending commands will be processed again.

\item[\bf About\hfill] Shows some information on the program.

\item[\bf Quit\hfill] Terminates the program, hold down a `shift' key to quit immediately,
otherwise you will be prompted to confirm your decision.

After  selecting the `Quit' menu item the program may take a few seconds to exit since
the contents of the `log book' are freed first.

\end{defit}



\subsection{Utilities}

This  menu  contains  functions  which  are to make your life a bit easier.
AmigaDOS  commands  as well as ARexx script files may be started from here.
As  a  special  gift for `Snap' users, the contents of the clipboard may be
fed into the input stream.

\begin{defit}{\bf Execute AmigaD0S Command~~}

\item[\bf Set Console Window\hfill] Whenever   an   Amiga\-DOS\-/ARexx  command  is
                                executed  an output window is opened.  This
                                menu   item   will  bring  up  a  requester
                                allowing  you to edit the size and position
                                of  the  window  to be opened (consult your
                                Amiga\-DOS  manual  for  a description of the
                                window  position  string).   If  you do not
                                want  the  window  to  appear, simply enter
                                `NIL:'.

\item[\bf Execute Amiga\-DOS Command\hfill] Enter  the  command you want to execute and
                                its command line arguments here.

\item[\bf Execute ARexx Command\hfill] This  function  calls  the  ARexx server to
                                execute  a script file.  If the first input
                                character  is  a  `  or " the input will be
                                considered  as  a  small program in a line.
                                Note   that   this  function  will  not  be
                                available   if   the   ARexx  server  isn't
                                running.
                                   The   ARexx  command  set  supported  by
                                `term'    is    described   in   the   file
                                `termRexx.doc'.

\item[\bf Paste Clipboard Contents\hfill]  The  current contents of the clipboard will
                                be  fed  into  the  input stream (max.  255
                                characters).   Use the `log book' screen to
                                cut strings and characters to the clipboard
                                (`Snap' may also be used for this purpose).

\item[\bf Packet Window\hfill] Opens\-/closes  an  input  window  in which a
                                single line of characters to be transferred
                                across  the  serial  line  can  be entered.
                                More  on  this  feature  is explained under
                                `The packet window' below.

\item[\bf Toggle Fast! Macro Panel\hfill]  Opens  or closes the so-called fast!  macro
                                panel.   The role of the fast!  macros will
                                be discussed later in this text.

\end{defit}

   The  menu  functions  `Execute  AmigaDOS  Command'  and  `Execute  ARexx
Command'  allow  you  to  select  the  name  of  the file to be executed by
clicking on the `Load File' gadget.

\subsection{Capture \& Buffer}

The menu items in this menu offer functions to load\-/save, to display and to
capture incoming text\-/graphics data.

\begin{defit}{\bf Capture To Printer~~}

\item[\bf Clear Buffer\hfill] Clears the contents of the `log book'.  Any
                                text  will  be  discarded  and  \_cannot\_ be
                                recovered.   Capture files are not affected
                                by this command.

\item[\bf Display Buffer\hfill]  Opens the `log book' screen.

\item[\bf Close Buffer\hfill]  Closes  the  `log book' screen but does not
                                free the contents.

\item[\bf Freeze Buffer\hfill]  This  menu entry will, if enabled, stop the
                                `log book' from filling up with new text.

\item[\bf Load Buffer\hfill]  Loads the contents of the `log book' from a
                                file.  If there are still text lines in the
                                `log  book'  a requester will appear giving
                                you  the  choice  to  discard the old data,
                                append  the  new  data,  or  to  cancel the
                                action.

\item[\bf Save Buffer\hfill]  Saves  the  contents of the `log book' to a
                                file.   You will be notified if the file to
                                save to exists already (you may discard the
                                old file, append the new data or cancel the
                                action).

\item[\bf Capture To Disk\hfill]  Toggles  file capture, options are the same
                                as with `Save Buffer'.

\item[\bf Capture To Printer\hfill]  Toggles printer capture.

\end{defit}

   More  detailed information on the `log book' will be given later in this
document.

\subsection{Transfer}

Since  data  transfer cannot always be done by keyboard and console, `term' supports  a
number of transfer protocols implemented as xpr-\-lib\-raries.  The `term' distribution
includes   xpr\-ascii.lib\-rary,   xpr\-jmodem.lib\-rary, xpr\-ker\-mit.lib\-rary,
xpr\-quickb.lib\-rary,  xpr\-vms.lib\-rary, xpr\-xmodem.lib\-rary,
xpr\-ymodem.lib\-rary and xpr\-zmodem.lib\-rary.

\begin{defit}{\bf Edit \& Transfer File~~}

\item[\bf Upload Text\hfill] Sends a file\-/files to the  remote  receiver
                                using  the  current  transfer protocol.  If
                                possible   this   command  will  `ask'  the
                                transfer  protocol  to transmit the file(s)
                                in  text  mode  (whatever that means) which
                                may  include  CR\-/LF  substitution and other
                                gimmicks.       Consult     the     library
                                documentation to find out if your favourite
                                transfer library supports text mode.

\item[\bf Download Text\hfill] Request  a  file\-/files  using  the  current
                                transfer  protocol.  Refer to `Upload Text'
                                for features\-/options of this mode.

\item[\bf Upload ASCII\hfill] This    is   a   pure   ASCII-file   upload
                                implemented  through  xprascii.library.  It
                                was  added  to  allow  poor BBS programs to
                                receive   text  files  (especially  Paragon
                                doesn't  seem  to  like  ZModem  text  file
                                upload).

\item[\bf Download ASCII\hfill] This   is   a   pure   ASCII-\-file  download
                                implemented    through    xpr\-ascii.lib\-rary.
                                Refer     to     `Upload     ASCII'     for
                                features\-/options of this mode.

\item[\bf Upload File(s)\hfill] Send  a  file\-/files  to the remote receiver
                                using  the current transfer protocol.  True
                                batch  upload  is  supported  both  through
                                wildcard  expressions  ("\#?.txt"  will send
                                all  files  whose names end with `.txt') or
                                through  multiple  selection (hold down the
                                shift  key and click the names of the files
                                you   wish  to  transmit).   Refer  to  the
                                documentation  of  your  favourite transfer
                                library  to find out if batch file transfer
                                is supported.

\item[\bf Download File(s)\hfill] Receive  a  file\-/files  using  the  current
                                transfer  protocol.   If  the protocol does
                                not support batch download you are required
                                to  enter  the  name  of  the  file  to  be
                                received.   Files  which remain empty after
                                the transfer are deleted automatically.

\item[\bf Edit \& Transfer File\hfill] Invokes the currently selected (see `Paths'
                                preferences  menu  below)  text editor on a
                                file to be selected using a file requester.
                                   `term'  will  block  and  wait until the
                                editor has returned.
                                   After  the editor has returned, the user
                                will be asked whether the file edited is to
                                be  transferred  as plain ASCII or via text
                                upload.

\item[\bf Transfer Options\hfill] The  transfer  options  can be changed with
                                this  command.  If possible a control panel
                                will  pop up which allows you to change the
                                current  parameters  by mouse\-/keyboard.  If
                                the  selected  transfer  protocol  does not
                                provide these option hooks, a simple string
                                requester  will  prompt for input.  Consult
                                the   documentation   of   your   favourite
                                transfer protocol for legal options and the
                                values to which they can be set.

\item[\bf Transfer Protocol\hfill] This  command  allows  you  to  specify the
                                transfer  protocol  library  to be employed
                                for up\-/downloads.


\end{defit}

   The  transfer  routines  open an information window in which a number of
transfer  parameters are displayed.  Additionally, the file transfer can be
aborted  by  clicking  either  of  two buttons (`Abort Entire Transfer' and
`Skip  Current  File').   Note:   for  most transfer protocols both buttons
(abort  and  skip)  have  the  same  effect.   Consult the documentation if
different  levels  of  abort  are  supported  by  your  favourite  transfer
protocol.
   The following information is displayed in the transfer window:

\begin{defit}{\bf Number 0f Timeouts~~}

\item[\bf Protocol\hfill] The   name   of  the  transfer  protocol  currently
                        running.

\item[\bf File\hfill]  The name of the file being transferred.
\item[\bf Size\hfill]  If available, the size of the file.
\item[\bf Space Left\hfill]  The  space  left on the destination device.  `term'
                        will try to calculate the number of blocks the file
                        being  received will take on the destination device
                        and  display  a  warning  the  file  in question is
                        probably not going to fit.
                           Caution:   `term'  only  makes  a  very propable
                        guess  which  may  or may not come true.  The guess
                        may  be  wrong if the destination device happens to
                        be  a kind of ram-disk which shrinks and expands as
                        memory  requirements come and go.  Such devices are
                        usually  100%  full.   In most other cases you will
                        probably  be  able  to make room for the file being
                        received before any space problem turns up.

\item[\bf Bytes Transferred\hfill]  Number of bytes transferred yet.
\item[\bf Blocks Transferred\hfill]  Number of data blocks transferred yet.
\item[\bf Block Check Type\hfill]  The  method employed to verify the integrity of the
                        data  blocks  being  transferred (this usually is a
                        form of cyclic redundancy checking).

\item[\bf Block Size\hfill]  Size of a data block in bytes.

\item[\bf Estimated Time\hfill]  The time the transfer protocol expects the transfer
                        will take.
\item[\bf Elapsed Time\hfill]  The time elapsed during transfer.

\item[\bf Message\hfill]  A message of the transfer protocol addressed to the
                        user.
\item[\bf Last Error\hfill]  A short description of the last error which occured
                        during file transfer.

\item[\bf Number Of Errors\hfill]  The number of errors occured during file transfer.

\item[\bf Number Of Timeouts\hfill]  The   number   of   timeouts  occured  during  file
                        transfer.

\item[\bf Packet Type\hfill]  A short description of the data block type employed
                        for data transfer.
\item[\bf Packet Delay\hfill]  The delay between two packets being sent.
\item[\bf Characters\-/Second\hfill]  The  effective  transfer  speed  in  characters per
                        second.
\item[\bf Character Delay\hfill]  The delay between two character being sent.

\end{defit}

   If  the  currently  active  transfer  protocol  provides  the  necessary
information,  two  bars  will  be  displayed  at the bottom of the transfer
window  indicating  the amount of transferred data and of time to go before
the transfer is finished.
   `term'  knows about the ZModem data-inquire sequence the remote receiver
issues  when  expecting  files.   If  recognized,  this sequence will cause
`term'  to display a requester asking for the type of data upload:  text or
binary.   One  could  call  this  feature `auto upload'.  You also have the
opportunity to select `Abort' which will transfer the ZModem abort sequence
or  to click on the `Ignore' gadget which will plainly ignore the fact that
the  ZModem  inquiry  sequence  has  been recognized.  Note that the ZModem
abort  sequence  will also be transferred if you select the `Cancel' button
in the file requester to appear after selecting text- or binary-upload.
   NOTE:  some transfer protocols will allow you to enter a default receive
path  the  library  is supposed to create files it receives in.  On request
(see   the  `Preferences\-/Miscellaneous'  menu)  `term'  will  ignore  these
settings and use the settings to be changed in the `Preferences\-/Paths' menu
instead.
   Each  file  that is received and which does not remain empty is examined
briefly  to  find  out  about the file type.  If recognized successfully, a
small  comment  indicating  the  file  type  will  be attached to the file.
`term' currently knows about the following 72 different file types:

\begin{center}
\small
\begin{tabular}{|l|l|}\hline
           Workbench icon file      &         Windows bitmap image file  \\ \hline
             ASCII text file        &              JFIF image file       \\ \hline
          `C' source code file      &            IFF-ILBM image file     \\ \hline
             `C' header file         &         IFF-ANIM animation file   \\ \hline
   Assembly language source code file  &         IFF-8SVX sound file     \\ \hline
     Assembly language include file     &        IFF-SMUS score file     \\ \hline
    Modula-2/Oberon source code file    &        IFF-FTXT text file      \\ \hline
            ARexx script file           &     IFF-PREF preferences file  \\ \hline
            Basic source code    &       IFF-TERM `term' configuration file \\ \hline
        AmigaGuide document file  &                   IFF file             \\ \hline
            TeX document file      &            AmigaVision flow file     \\ \hline
           Metafont font file       &         Imploder data output file   \\ \hline
            Generic font file        &      PowerPacker data output file  \\ \hline
          Packed TeX font file        &     LhPak self extracting archive** \\ \hline
   TeX device independent output file  &          Arc archive file       \\ \hline
        PasTeX font library file        &         ARJ archive file       \\ \hline
        Manx 3.x object code file        &         Compressed file*      \\ \hline
        Manx 5.x object code file         &      Freeze output file*     \\ \hline
          Manx 3.x library file            &      CPIO archive file*     \\ \hline
          Manx 5.x library file    &          $\mbox{MacCompress archive file}^2$   \\ \hline
        AmigaDOS object code file   &           $\mbox{Compact archive file}^2$     \\ \hline
    AmigaDOS object code library file &         $\mbox{Diamond archive file}^2$     \\ \hline
        AmigaDOS executable file       &         LhArc archive file       \\ \hline
           System library file          &         LHA archive file       \\ \hline
           System device file            &        Zoo archive file       \\ \hline
   AmigaDOS filing system handler file    &      PKZip archive file      \\ \hline
          AmigaDOS handler file       &        $\mbox{Stuff It! archive file}^2$   \\ \hline
             GIF image file            &       $\mbox{Pack It! archive file}^2$   \\ \hline
            $\mbox{Degas image file}^1$  &       DMS disk archive file    \\ \hline
           $\mbox{MacPaint image file}^2$  &     Warp disk archive file    \\ \hline
          $\mbox{SuperPaint image file}^2$          &    Zoom disk archive file    \\ \hline
        $\mbox{Macintosh PICT image file}^2$         &      SPARC object code      \\ \hline
          $\mbox{Sun raster image file}^3$            &     SPARC executable       \\ \hline
             Postscript file                 &    MS-DOS executable      \\ \hline
             PCX image file           &        Atari-ST/TT executable    \\ \hline
            TIFF image file            &        Macintosh executable     \\ \hline
\end{tabular}
\begin{tabular}{cl}
   1 & Atari-ST/TT-specific (Degas Elite) \\
   2 & Macintosh-specific                 \\
   3 & SunOS-specific                     \\
   ** & Unix-specific                      \\
   *** & Not yet ready for release         \\
\end{tabular}
\end{center}
\normalsize
\newpage

\subsection{Phone}

The  commands  in  this  menu deal with controlling the serial line and the
modem.

\begin{defit}{\bf Release Serial Device~~}

\item[\bf Phonebook\hfill]   The  phonebook  is one of the most powerful
                                and complex functions of `term' and will be
                                described later in this document.

\item[\bf Dial\hfill]  To  dial  a single phone number select this
                          menu  item.   The phone number entered will
                          be passed to the dialing routine.

\item[\bf Redial\hfill]  Dialing  list  entries  the dialing routine
                          was unable to establish a connection to are
                          again passed to the dialer.

\item[\bf Play Number\hfill]  Outputs a telephone number using touch-tone
                          dial coding on the Amiga audio hardware.

\item[\bf Send Break\hfill]  Sends  a  `break'  signal across the serial
                          line.

\item[\bf Hang Up\hfill]  Tells the modem to hang up the serial line.

\item[\bf Release Serial Device\hfill]  The  serial  driver  is  released for other
                          programs  to  use  it.   A  requester  will
                          appear  which  allows  you  to  reopen  the
                          serial driver or to quit `term'.
                             If  the  serial driver has been released
                          by  the  ARexx  interface  and has not been
                          reopened yet, this menu item will do it.

\end{defit}

\subsection{Display}

The  items  in  this menu deal with the `term' main screen and the terminal
emulation.

\begin{defit}{\bf Save Screen (IFF-ILBM)~~}

\item[\bf Clear Screen\hfill]  Clears  the  whole  `term' screen and moves
                          the cursor to the top left home position.

\item[\bf Reset Styles\hfill]  Resets   all   character  style  attributes
                          (bold, blinking, inverse video, underlined,
                          etc.)  and  sets  the  text  colour  to the
                          default pen.

\item[\bf Reset Font\hfill]  Will  change  the  screen  font back to the
                          default screen font (IBM\-/topaz).

\item[\bf Reset Terminal\hfill]  Use  this  menu  item to reset the state of
                          the entire terminal emulation.

\item[\bf Save Screen (IFF-ILBM)\hfill]  Saves  the  contents  of  the  `term'  main
                          screen to a file.  The resulting image file
                          can  be  read  by  any  program  to support
                          IFF-ILBM images.

\item[\bf Save Screen (ASCII)\hfill]  Saves the current contents of the screen to
                          a file; this does not include any graphics,
                          only the ASCII characters are saved.

\end{defit}

\subsection{Preferences}

`term' is configured using the `Preferences' menu.  The following text will
describe the functions associated with each menu item:

\subsubsection{Serial Preferences}

This is where the serial parameters may be changed.

\begin{defit}{\bf Device Unit Number}

\item[\bf Baud Rate\hfill] Transfer speed in bits per second.

\item[\bf Bits/Char\hfill] Number of bits per transferred character (7 / 8).

\item[\bf Parity\hfill] Serial parity (none, odd, even, mark, space).

\item[\bf Stop Bits\hfill] Number of stop bits (1 / 2).

\item[\bf Handshaking\hfill] Serial handshaking mode (XON\-/XOFF, RTS\-/CTS, none).

\item[\bf Duplex\hfill] Determines  whether  characters  are echoed back to
                  the  terminal  screen  or  not  (full, half = local
                  echo).

\item[\bf Buffer Size\hfill]  The  number  to be specified here allows to set the
                  serial  driver  I/O  buffer  size.  Note that every
                  number you enter here will result in `term' and the
                  serial  driver  allocating  twice  the  buffer size
                  (this  is only a word of warning for those among us
                  who prefer buffer sizes of 256K and up).

\item[\bf Shared Access\hfill] Requested  by many (two to be accurate) users, this
                  switch  allows  you  to  run  the  serial driver in
                  shared  access  mode.   Not  all  driver types will
                  allow this to happen.

\item[\bf High-Speed Mode\hfill]  Activates a special mode of the serial driver which
                  is  to  skip  a  couple of internal parity and stop
                  bits  checks  resulting  in  higher data throughput
                  rate.   Note  that  enabling this feature will only
                  make  sense  if  used  on  two  directly  connected
                  computers.

\item[\bf Break Length\hfill]  Length of the break signal given in microseconds.

\item[\bf Serial Device\hfill] The name of the serial driver to be used by `term'.
                  This  is  usually  `serial.device' (`modem?.device'
                  for  the  internal Supra modem, `sxbios.device' for
                  ASDG's serial IO card).

\item[\bf Device Unit Number\hfill]  The   device  unit  number  of  the  serial  driver
                  selected  above.   This usually left 0 but can also
                  be used to address multiple serial IO ports.

\item[\bf Use\hfill]  Accept the current settings.

\item[\bf Cancel\hfill]  Don't use the current settings.

\end{defit}

   Most  modems  will not recognize a sudden change in the baud rate.  Type `AT
\verb+<+RETURN\verb+>+' to make the change known.
   If  `RTS\-/CTS (DSR)' handshaking is selected, `term' will check to see if the  `Data
set  ready'  line  happens  to be high active.  If not, it will default back to
software handshaking (xON\-/xOFF).  The `RTS\-/CTS' handshaking mode will ignore the
presence or absence of the `DSR' signal.
   `term'  will take advantage of Christopher Whichura's OwnDevUnit.library if
installed  in  your  system,  allowing  controlled access to the serial driver's
resources.

\subsubsection{Modem Preferences}

This  is  where  modem  control  strings  and  other related parameters are
configured.

\begin{defit}{\bf Number Of Dial Retries~~}

\item[\bf Modem Init String\hfill] The  string  to  send to the modem after successful
                  program  initialization.   This  string is optional
                  and does not need to be entered.
                     The  dialing routine will use the initialization
                  string entered here before dialing a phone number.

\item[\bf Modem Exit String\hfill]  The  string  to be sent to the modem shortly before
                  the  program  terminates.  Just like the modem init
                  string this string is optional and does not need to
                  be entered.
                     The  dialing routine will use the initialization
                  string   entered   here  before  dialing  the  next
                  telephone number.

\item[\bf Modem Hangup String\hfill]  The  string  to  be sent to the modem when asked to
                  hang  up the line.  This string is not optional, it
                  has to be present for the program to work properly.

\item[\bf Dial Prefix\hfill]  The  string  to  be  used  to  prefix  each dialing
                  command.   This  is  usually a variant of `ATDP' or
                  `ATDT'.

\item[\bf Redial Delay\hfill]  The  time  to  wait after walking through the whole
                  dialing   list   without   making   any  successful
                  connection before another attempt is started.

\item[\bf Number Of Dial Retries\hfill]  The  number  of  times the dialer walks through the
                  dialing list trying to make a successful connection
                  before giving up.

\item[\bf Dial Timeout\hfill]  The time to wait for a successful connection during
                  dialing.   After  this time has elapsed, the dialer
                  will skip to the next entry in the list.

\item[\bf Connect Auto-Capture\hfill]  If  enabled  will automatically open a capture file
                  after  successfully making a connection.  Any other
                  already  open  capture  file  will be closed before
                  proceeding.

\item[\bf Connect Auto-Baud\hfill]  Most  modems  echo  the  baud  rate upon successful
                  connection.  If enabled  the baud rate will be read
                  and set for the serial driver.

\item[\bf Log Actions\hfill]  If  enabled  will  write a protocol of each program
                  action (uploads, downloads, dial attempts, etc.) to
                  a  file.  Each action is listed along with time and
                  date.    Carrier-lost-events  will  also  note  the
                  approximate cost of the call.

\item[\bf Check Carrier\hfill] `term'  will  recognize  the `NO CARRIER' message a
                  modem emits when the carrier line signal drops back
                  to low.  For maximum safety, `term' will also check
                  the  carrier  signal  line  after receiving the `NO
                  CARRIER'  message  if this switch is enabled.  This
                  is  to  make  sure  that  no accidentally appearing
                  string causes confusion.

\item[\bf Drop DTR On Hangup\hfill]  Some  modems  will  track the `data terminal ready'
                  line  order  to make sure that the terminal program
                  is  listening,  once  the  line  goes  back  to low
                  potential, these modems will drop the line and hang
                  up.   Use  this  button  to  enable  this  feature.
                  Caution:  this feature is potentially dangerous and
                  should only be used with custom serial drivers.

\item[\bf No Carrier String\hfill]  The  string  the modem emits if the data carrier is
                  lost.   The  program  uses  this  to  determine the
                  length  of  the connection and to calculate the how
                  much the user is to pay for it.

\item[\bf Connect String\hfill]  The  string  the  modem  emits  after  detecting  a
                  carrier   signal.    `term'   uses  this  input  to
                  determine   successful   telephone  connection,  to
                  reconfigure itself and to start the online timer.

\item[\bf No Dialtone String\hfill]  The  string  to be returned by the modem in case it
                  does  not  encounter  any dialing tone on the phone
                  line.

\item[\bf Voice String\hfill]  The  string  `term'  is  expected to receive if the
                  modem  detects  a  voice call.  If in dialing mode,
                  `term'  will  abort  the process.  The user will in
                  any case be notified of the event.

\item[\bf Ring String\hfill]  The  string  the modem emits if it receives a call,
                  same effects as with the `Voice String'.

\item[\bf Busy String\hfill] The  string  the  modem returns if the number which
                  has just been dialed is busy.

\item[\bf Use\hfill]  Use the current settings.

\item[\bf Cancel\hfill]  Keep original settings.

\end{defit}

\subsubsection{Screen Preferences}

This  menu-item will bring up a window to change all parameters of the main
screen.

\begin{defit}{\bf Edit Screen Palette~~~}

\item[\bf Display Modes\hfill] All graphic-modes available for the main screen are
                   displayed  here.   If  you  wish  to use the `Super
                   Hires', the `Productivity' mode or the A2024-modes,
                   you  will  have  to  put up with some restrictions:
                   there  are  only screens with a depth of two (Amiga
                   colourmodes) and  if   in   A2024-mode,   different
                   resolutions  cannot  be  mixed  with each other any
                   longer.
                     Annotation:   the A2024-modes should only be used
                   in   connection   with   an   A2024\-/Hedley-monitor.
                   Otherwise  the  screen may `crash' and working with
                   `term' will not be possible any longer.

\item[\bf Edit Screen Palette\hfill] These  gadgets  are  used to select a colour of the
                   screen palette that is to to be changed.

\item[\bf Red\-/Green\-/Blue\hfill] These  proportional-gadgets  are used to modify the
                   portions of red, green or blue.

\item[\bf Make Screen Public\hfill] As  dealt  with  before,  the  `term' mainscreen is
                   opened  as `public'.  With this gadget the user may
                   define if other applications are allowed to open up
                   their windows on the `term' screen.

\item[\bf `Shanghai' Windows\hfill] This  item,  that is only displayed if `Make Screen
                   Public'  has  been  selected, is closely related to
                   the  function  before.  If active, all windows that
                   will  normally be displayed on the Workbench screen
                   will open on the `term' main screen.

\item[\bf Use\hfill]  Use the current preferences.

\item[\bf Cancel\hfill] Keep the old preferences.

\end{defit}

  It  has  to  be  remarked  that all the `new' display-modes (Super-Hires,
Productivity,  etc.)  restrict  the  number  of colours.  Instead of 16-bit
portions for red, green and blue, only 2-bit portions are used, which leads
to  a  maximum width of the palette of at all 64 (4 × 4 × 4) colours.  This
is no `feature' of `term' but a hardware restriction.

\subsubsection{Terminal Preferences}

All  settings that may be done here determine the behaviour of the terminal
itself, i.e.  how command sequences are interpreted and displayed.

\begin{defit}{\bf Screen Title \& Status Line~~}

\item[\bf Capture Filter\hfill] If  selected,  command  sequences  are filtered out
                  before the incoming characters are captured to disk
                  or printer.

\item[\bf Destructive BS\hfill] Determines  if  the  `Backspace'  code,  which will
                  delete  the  character  left  from the cursor, only
                  moves  the  cursor  to  the  left  or  removes  the
                  character from the screen.

\item[\bf Swap DEL \verb+<->+ BS\hfill] For  the  hard  core VT100 user:  if this switch is
                  enabled  the  roles  of  the  backspace key and the
                  delete  key are reversed.  Note:  this also applies
                  to sequences such as Control+H which will produce a
                  delete character instead of a backspace character.

\item[\bf Strip Bit 8\hfill] For  those guys \& gals who need it:  if this switch
                  is effect each character received or transmitted by
                  `term' will have its upmost bit cleared.

\item[\bf Stop Blinking\hfill] If  selected  the VT100-\-blink option is sup\-pressed.
                  If  running  in eight colour mode, `term' will open
                  its  screen  only  three  bitplanes deep instead of
                  four bitplanes deep.

\item[\bf Screen Title \& Status Line\hfill] Requested  by  american  users  who  obviously were
 		unable  to  produce satisfying results when playing
                  with  the  Overscan  preferences  tool,  these  two
                  switches  allow  you  to  disable  screen title and
                  status line information, thus increasing the number
                  of lines available on the terminal screen.

\item[\bf Faster Layout\hfill] Activating  this  switch  will  slow  down  display
                  updates   and  window  management.   Oh  well,  not
                  always,  there  may  be  a speed increase with some
                  configurations,  such  as  with external emulations
                  activated  or  when using more than four colours on
                  the screen.
                     I  suggest to experiment with this button before
                  actually using it.

\item[\bf Send CR\hfill] This gadget determines the sequence that is sent to
                  the remote if a carriage-return is issued.

                  As CR    = without any change.
                  As CR+LF = carriage-return and linefeed
		Ignore   = suppress any carriage-return

\item[\bf Send LF\hfill] This gadget determines the sequence that is sent to
                  the remote if a linefeed is issued.

		As LF    = without any change.
		As LF+CR = linefeed and carriage-return.
		Ignore   = suppress any linefeed.

\item[\bf Receive CR \& Receive LF\hfill] These  two  buttons have largely the same effect as
		  the  `Send  xx' buttons, they are different in that
                  they  affect the incoming data rather than the data
                  transmitted.

\item[\bf Bell\hfill] This is where you select the action(s) `term' is to
                  take  whenever  a  `bell' character turns up in the
                  data stream:

\begin{defit}{\bf Visual \& Audible~~}
\item[\bf Visual\hfill] The screen will flash.
\item[\bf Audible\hfill] An audible signal will be generated.
\item[\bf Visual \& Audible\hfill]  A combination of both effects.
\item[\bf Ignore\hfill] Nothing will happen.
\end{defit}

\item[\bf Display Size\hfill] Usually,  the  number of characters to be displayed
                  on  screen is determined by the physical dimensions
                  of  the  main  screen.   But  now  and  then  a BBS
                  requires  the screen to be of a fixed size, here is
                  what this switch allows you to set it to:

\begin{defit}{\bf 80 × 24 (VT100)~~}
\item[\bf Screen Size\hfill] Will fit as many characters on the screen  as the
                    physical screen size allows.
\item[\bf 80 × 24 (VT100)\hfill]  As required by VT100, this will limit the  number
                    of characters to be displayed on  screen  to  the
                    typical 80 × 24 rectangle.
\item[\bf 80 × 25 (ANSI)\hfill]  Similar to VT100, ANSI uses a fixed screen  width
                    but supports one more display line than VT100.
\end{defit}

                  In each case, using this switch will not change the
                  physical  dimensions  of  the  main  screen but the
                  limits in which the cursor can be moved.

\item[\bf Colour\hfill] This gadget determines the colour-mode the terminal
                  emulation  is going to use.  Until now, three modes
                  have been implemented:

\begin{defit}{\bf 8 Colours (Blink)~~}
\item[\bf Amiga\hfill]  Four colours and blinking
\item[\bf 8 Colours (Blink)\hfill]  Eight colours and blinking
\item[\bf 16 Colours\hfill] Sixteen colours, as the EGA-palette
\item[\bf Mono\hfill] Mono\-chrome, two colors
\end{defit}

\item[\bf Emulation\hfill] At  this  point  the  user  may select the terminal
                  emulation. First there is a solid  VT100\-/VT220\-/ANSI
                  emulation   which   supports  all  common  command-
                  sequences,  then  there  is  a  so  called `Atomic'
                  emulation  which  does  only support the very basic
                  command-sequences  (CR,  LF,  Backspace, etc.), all
                  VT100-  and  ANSI-\-command-\-sequences are suppressed,
                  and,  last  but  not least, a `TTY'-\-emulation which
                  does   not   suppress   all  command-sequences,  as
                  `Atomic'  does,  but  rather  echoes  them  to  the
                  screen.
                     In  addition  to the builtin terminal emulation,
                  `term'  also supports external terminal emulations.
                  To  select  one, set the terminal emulation type to
                  `External'  and  enter the name of the emulation in
                  the string gadget below (the file may alternatively
                  selected  by  hitting  the  `Select  New Emulation'
                  button).   In  case  anything goes wrong loading or
                  initializing  the terminal emulation module, `term'
                  will   switch   back   to   the  builtin  `ANSI\-/VT'
                  emulation.

\item[\bf Emu. Name\hfill] The  name of an external terminal emulation library
                  to  be  used  by  `term'  instead  of  the  builtin
                  emulation code.

\item[\bf Select New Emulation\hfill] Press  this  button  to  invoke  a  file  requester
                  allowing   you  to  select  the  external  terminal
                  emulation  file  to  be used by term instead of the
                  builtin terminal emulation.

\item[\bf Font\hfill] `term'  makes  use of two fonts to display text and
                  graphics.    `Topaz'   is   the   system-integrated
                  standard  font,  `IBM'  is  a  font  similar to the
                  Standard   IBM   PC   font   which   also  contains
                  graphics-symbols.   If `IBM' is selected input from
                  the  console  is  automatically translated into the
                  corresponding `IBM' characters.
                     Note  that  the settings affected by this switch
                  will  be  ignored  if  an  external emulation is in
                  effect.

\item[\bf KeyMap Name\hfill] If your installation requires that `term' is to use
                  a  custom keymap layout, enter the keymap file name
                  here.
                     Note  that  at  the  time  of  this  writing the
                  program will not support custom keymap layouts with
                  the   `Packet   Window'  due  to  operating  system
                  limitations.

\item[\bf Use\hfill] Use the current preferences.

\item[\bf Cancel\hfill] Keep the old preferences.

\end{defit}

   The  built-in  VT100-emulation  supports  all commands that have any use
with  `term'.   Not implemented are commands that control the printer (this
should  be  left to the user), initiate internal terminal-tests, change the
LEDs or were very complicated to implement.

   The  VT100-emulation  also  supports  all commands of the VT220-terminal
(thanks  to  Germar  Morgenthaler  who was able to get hold of the original
documentation of the DEC VT220 console!), although there were only a few to
be added.  Acctually I had built in a lot commands that were supported only
by VT220.  Commands to swap between national keymaps (the DEC Multinational
Character  Set  is  accessed  at \_all\_ times) and commands that control the
printer are not supported.  These commands are skipped.

\subsubsection{Commands}

Here  you  will  find entries for three command sequences which serve three
functions:

\begin{defit}{\bf Startup\-/Login Macro~~}

\item[\bf Startup\-/Login Macro\hfill] At  the  beginning of every session with `term' and
                        after  a  connection  has  been  established by the
                        dialing  routine  a  command-sequence  is  executed
                        which   may  execute  command-files  or  perform  a
                        automatical  `login'.

\item[\bf Upload Macro\hfill] `term'  will  execute this macro after a successful
                        upload has been made.

\item[\bf Download Macro\hfill] `term'  will  execute this macro after a successful
                        download has been made.
\end{defit}

\subsubsection{Miscellaneous}

This  is  the place where options can be set which would not fit into other
control panels

\begin{defit}{\bf 0verride Transfer Path~~}

\item[\bf Program Priority\hfill] Use  this  slider  to  determine the priority under
                        which   the   `term'  main  process  is  operating.
                        Adjusting  this  value can make `term' perform more
                        reliably  in  a system which experiences heavy task
                        loading.  It is recommended to play with this value
                        until  a  satisfactory  state is found, setting the
                        program  priority to high or too low may affect the
                        performance  of  coprocess  services  such  as  the
                        double-buffered file I\-/O routines.

\item[\bf Override Transfer Path\hfill] Each  batch  file  transfer  protocol allows you to
                        specify the name of the directory to send the files
                        it  receives  to.   By default `term' will redirect
                        the  files  to  a  directory to be specified in the
                        `Path'  control panel.  If this switch is disabled,
                        the  internal  settings  of  the  current  transfer
                        protocol will be used.

\item[\bf Backup Configuration\hfill] By  default  the  local program configuration saved
                        along  with  a  phonebook  entry  will  replace the
                        global   configuration  as  soon  as  a  successful
                        connection  is  made.   If  this switch is enabled,
                        `term'  will  remember  the global configuration in
                        effect before the configuration data of a phonebook
                        entry  is  adopted.   As  soon as the serial driver
                        loses  track  of  the  carrier  signal  or the user
                        chooses  to  hang  up  the line, `term' will switch
                        back to the previous global configuration.

\item[\bf Use Auto Upload Panel\hfill] Some  users found the so-called `ZModem auto-upload
                        panel' to be invoked whenever `term' encounters the
                        ZModem  inquiry  sequence  rather  disturbing, this
                        switch will allow them to disable this feature.

\item[\bf Set `archived' bit\hfill] If  enabled,  this  switch will cause `term' to set
                        the  `archived'  bit on files transferred using the
                        XPR-interface.

\item[\bf Maximum Buffer Size\hfill] To  save  memory,  a high-water mark concerning the
                        maximum  amount  of  memory  the  `log  book'  will
                        allocate  for  text  may be specified.  The minimum
                        value  to  be  entered here is 2000 bytes which are
                        roughly equivalent to two `log book' pages of text.
                        A value  of  0  will cause the `log book' to always
                        allocate  as  much memory as required to buffer all
                        the incoming text.

\item[\bf Buffer Enabled\hfill] This  switch  works in conjunction with the `Freeze
                        Buffer'   menu   entry  (freezing  the  `log  book'
                        contents).   In  fact,  the  menu entry is adjusted
                        according  to the configuration settings whenever a
                        new  configuration  is invoked (that is, whenever a
                        new connection is made through the dialing panel or
                        at  program startup time).  Please note that `term'
                        will  only freeze the buffer if this switch is set,
                        it  will  leave  the  buffer  state (frozen or not)
                        untouched if this switch is not enabled.

\item[\bf Show Fast! Macros\hfill] If  this  switch is enabled, the fast!  macro panel
                        will  be  opened whenever the current configuration
                        becomes active (e.g.  at startup time).

\end{defit}

\subsubsection{Paths}

In this part of the preferences all paths, which `term' uses to save or load
any data, can be determined.

\begin{defit}{\bf Terminal `Beep' Sound~~}

\item[\bf Config. Storage Dir\hfill] The  directory  that will contain all configuration
                        files  (Phonebook,  Makrokeys,  etc.).  The default
                        configuration file is called `Preferences.term' and
                        will  be  searched  in  the  path  defined  by  the
                        enviroment   variable   `TERMPATH'   (see   end  of
                        document).

\item[\bf ??? Up\-/Downloadpath\hfill] The directories in which the functions contained in
                        the `Transfer' menu will search and create files.

\item[\bf Capture Path\hfill] This  gadgets  contain  the  path  in which the the
                        capture   files   will   be   created  if  `Connect
                        Auto-\-Capture' is enabled.

\item[\bf Log File\hfill] The  name  of  the file in which the information on
                        the  actions  executed  by `term' will be logged if
                        `Log Actions' is enabled.

\item[\bf Text Editor\hfill] Contains  the  name  and  search path of the editor
                        used by `Edit File' in the Utilities menu.

\item[\bf Terminal `Beep' Sound\hfill] The  name of the IFF-sound-file that will be played
                        if  a  BEL-signal  is  detected.  This file may for
                        technical reasons not be larger than 102400 bytes.

\item[\bf Use\hfill] Use the current preferences.

\item[\bf Cancel\hfill] Keep the old preferences.

\end{defit}

   If  any  `Select'  button is pressed, the path or filename beside can be
selected by the file-requester.

\subsubsection{Emulation}

The  gadgets  found here allow you to change the internal parameters of the
selected emulation.
   The  following  text  only describes the parameters to change when using
the  builtin  terminal  emulation;  if an external terminal emulation is in
effect,  this  menu  will  conjure  up  the  corresponding  parameters menu
supported by the external terminal emulation module.

\begin{defit}{\bf Smooth Scrolling~~}

\item[\bf Smooth Scrolling\hfill] If active, the each carriage-return code will cause
                        the contents of the screen to scroll up smoothly.

\item[\bf Wrap Characters\hfill] This  function  activates  the automatical carriage
                        return  function  which is triggered as soon as the
                        cursor  crosses  the right screen margin.  To avoid
                        unpleasant  side-effects,  this  gadget  should  be
                        activated all the time.

\item[\bf Wrap Cursor\hfill] According  to  the  VT100-specification  the cursor
                        movements  have to stop at the edges of the screen.
                        In  spite  of  this  the  cursor  may  leave  these
                        borders, especially in ANSI-mode, and may appear at
                        the   other   side  of  the  screen.   This  gadget
                        activates a more `tolerant' mode.

\item[\bf Insert Mode\hfill] Normally,  `term'  is in overwrite-mode (characters
                        entered  overwrite the contents of the screen).  If
                        this  gadget  is  activated,  typed  characters are
                        inserted by pushing all the characters right of the
                        cursor towards the right margin.
                          Note:   the insert-mode does only work for lines.
                        If  characters  are  pushed  out of the screen they
                        cannot be restored.

\item[\bf New Line Mode\hfill] This  gadget activates a special mode in which some
                        VT100-control-sequences  cause  `term' to perform a
                        linefeed  instead  of  clearing the screen or other
                        serious changes of the contents of the screen.

\item[\bf Numeric Keypad\hfill] If  this  mode is activated the keys of the numeric
                        keypad  transmit  a  command-sequence  instead of a
                        number.    If   the  remote  computer  needs  these
                        sequences,  this  mode - applications mode - can be
                        activated with this gadget.

\item[\bf Cursor Keys\hfill] If  this  mode is active the cursor-keys transmit a
                        command-sequence  instead of a cursor-move.  If the
                        remote  computer needs these sequences, this mode -
                        applications  mode  -  can  be  activated with this
                        gadget.

\item[\bf Font Scale\hfill] VT-100  offers four different sizes of fonts.  They
                        can be selected with this gadget:

\begin{defit}{\bf Double Height (Bottom)~~}
\item[\bf Normal\hfill] The normal height of the font.
\item[\bf Double Height (Top)\hfill] Double height of font, only the upper part
                          of the character is displayed.
\item[\bf Double Height (Bottom)\hfill] Double height of font, only the lower part
                          of the character is displayed.
\item[\bf Double Width\hfill] Double width of font.
\item[\bf Half Width\hfill] Half width of font.
\end{defit}

\item[\bf Use\hfill] Use the current preferences.

\item[\bf Cancel\hfill] Keep the old preferences.


\end{defit}


\subsubsection{Global Preferences: Macro Preferences}

This  menu is used to set user definable strings for all ten function keys.
All strings are considered command sequences, a topic which will be covered
later in this document.

\begin{defit}{\bf Modifier~~}

\item[\bf Modifier\hfill] All  in all 40 Keys may be covered with user defined
                       command  sequences.   As the Amiga keyboard only has
                       ten  function-keys  this gadget switches between the
                       modifier   keys  (shift,  control,  alt)  which,  if
                       pressed  in  addition  which  a  function  key, will
                       execute one of the 40 command sequences.

\item[\bf Load\hfill] Load the macro-keys from a file.

\item[\bf Save\hfill] Save the macro-keys to a file.

\item[\bf Use\hfill] Use the current preferences.

\item[\bf Cancel\hfill] Keep the old preferences.

\end{defit}

   As   the   definition  of  the  function  keys  with  command  sequences
contradicts  the  standard  definition  of  the  four  functions  keys of a
VT-100-terminal,  the  keys  F1-F4,  which  may be executed by pressing the
shift key and the approriate function-key simultaneously, are mapped to the
standard  sequences  for  function-keys.  The user may - of course - change
these settings.
   If  an  external terminal emulation happens to be active, those function
keys  the emulation has allocated for itself will be disabled and cannot be
edited.

\subsubsection{Fast! Macro Preferences}

The design and implementation of the settings to be configured in this menu
are closely related to the menu entry `Macro Preferences' discussed before,
the  only  difference  to  be  seen  in the fact that the fast!  macros are
mapped  to  buttons  rather than function keys (more on this topic later in
this document).

\begin{defit}{\bf Macro List~~}

\item[\bf Macro List\hfill] The  list  of  macros entered yet, to edit one of
                          these,  select  it  by  clicking the mouse button
                          with the mouse pointer on it.

\item[\bf Macro\hfill] The  name of a macro by which it is listed in the
                          fast!  macro list.

\item[\bf Macro Code\hfill] The  command  sequenz  associated  with  a  fast!
                          macro.   Command sequences are discussed later in
                          this document.

\item[\bf New\hfill] Appends  a  new  macro to the list.  The user may
                          then select and customize it.

\item[\bf Delete\hfill] Removes  the  currently  selected  macro from the
                          list.

\item[\bf Load\hfill] Loads the macro list from a file.

\item[\bf Save\hfill] Saves the macro list to a file.

\end{defit}

\subsubsection{Hotkeys}

This  is  where  the  key  sequences used to arrange screens and to execute
special functions are to be configured.

\begin{defit}{\bf Buffer Screen To Front~~}

\item[\bf term Screen To Front\hfill] The keys to press to bring the `term' screen to the
                       front.

\item[\bf Buffer Screen To Front\hfill] The  keys  to  press to bring the screen of the log
                       book  process to the front (note:  if the screen is
                       not   already   open,   pressing  these  keys  will
                       accomplish nothing).

\item[\bf Skip Dial Entry\hfill] As  an  alternative  to the `Skip' gadget, pressing
                       these keys will skip a dialing entry if the dialing
                       function is currently active.

\item[\bf Commodity Priority\hfill] The commodity priority to assign this task to.  You
                       may want to change this value if you have more than
                       one   program  running  which  uses  the  same  key
                       sequences  as  `term'.  The program with the higher
                       commodity  priority  will  receive  the  key\-strokes
                       first.

\item[\bf Hotkeys enabled\hfill] Whether  the  hotkeys  are  enabled  or  not can be
                       toggled by clicking on this gadget, or by using the
                       `Exchange'    program    to   be   found   in   the
                       `Tools\-/Commodities' drawer.

\item[\bf Load\hfill] Loads the hotkey settings from a file.

\item[\bf Save\hfill] Saves the hotkey settings to a file.

\item[\bf Use\hfill] Use the current settings.

\item[\bf Cancel\hfill] Keep the original settings.

\end{defit}

   If  any  changes  made  here do not seem to take effect immediately, the
user has probably typed a keyword wrong (causing the entire hotkey setup to
fail).   I'm  sorry  about  this,  but the current implementation of hotkey
support does not sport error checking.

\subsubsection{Speech}

If  enabled, the Amiga speech synthesizer will be used to alert the user of
certain  actions, such as carrier lost, connection made, etc.  This feature
makes  sense  if  `term' is running in the background where the user cannot
see what is actually happening on the main screen.  By default this feature
is disabled.

\begin{defit}{\bf Speech enabled~~}

\item[\bf Rate\hfill] Speaking speed in words per minute.

\item[\bf Pitch\hfill] The  greater  this  value,  the  higher  the  voice
                       appears to speak.

\item[\bf Frequency\hfill] Voice frequency in Hertz.

\item[\bf Volume\hfill] The volume of the voice.

\item[\bf Sex\hfill] Enabled female or male voice.

\item[\bf Speech enabled\hfill] Toggles the activity of the speech synthesizer.

\item[\bf Speak!\hfill] Speaks  a  small sample text, note that speech must
                       be enabled for this function to work.

\item[\bf Load\hfill] Loads the speech settings from a file.

\item[\bf Save\hfill] Saves the speech settings to a file.

\item[\bf Use\hfill] Use the current settings.

\item[\bf Cancel\hfill] Keep the original settings.

\end{defit}


\section{Telephone book \& Dial function}

The  functions  described in the following can be found in the `Modem' menu
and relate to the menu entries `Phonebook', `Dial' and `Redial'.
   `term'  is  equipped  with  a  user friendly telephone number management
system,  the  `telephone book', which is operated via a Control field.  The
Control field is described in the following lines.

\subsection{The main control panel}

\begin{defit}{\bf Set Password~~~}

\item[\bf Name List\hfill] The  list  of  all  telephone  numbers  with  names
                        against  them  (name of the corresponding mailbox).
                        If  one  of these entries is selected with a double
                        click,  it will be placed at the end of the dialing
                        list (More on this later).

\item[\bf BBS Name\hfill] Name of the last selected telephone book entry.

\item[\bf Phone Number\hfill] Telephone  number  of  the  last selected telephone
                        book entry.
                           If  a  BBS  supports  multiple  lines, the phone
                        number  of each line may be entered, each separated
                        by   a   vertical   bar   `|'  character  (example:
                        "123456|654321"  would cause the dialing routine to
                        dial  the  numbers  `123456'  and  `654321').   The
                        dialing   routine  will  process  all  these  phone
                        numbers  before  proceeding  to  the next phonebook
                        entry.
                           The `|' character also works for the modem init,
                        modem exit and dial prefix sequences.  Whenever the
                        dialing  routine  dials another phone number from a
                        list  separated  by  bars,  it  will  try to find a
                        matching  init\-/exit\-/dial  prefix sequence.  If more
                        phone  numbers  are  specified  than  sequences are
                        available,  it will use the last sequence given (an
                        example:    a   phone   number   may  be  given  as
                        "123456|654321|12345",  the  dial prefix string may
                        be  "ATDP|ATDT";  the dialing routine will call the
                        first  number using "ATDP123456", the second number
                        using  "ATDT654321"  and the third number, since no
                        special  dial  prefix  is  available,  again  using
                        "ATDT12345").

\item[\bf New Entry\hfill] Generates  a new telephone book entry with standard
                        settings  and places it at the end of the telephone
                        book.

\item[\bf Clone Entry\hfill] Will  duplicate  the  currently  selected phonebook
                        entry and place it at the end of the list.

\item[\bf Remove Entry\hfill] Removes the last selected telephone book entry from
                        the  telephone  book and frees the memory allocated
                        for this entry.

\item[\bf Dial List\hfill] Will  pass  the  list of currently marked phonebook
                        entries to the dialing routine.

\item[\bf Clear List\hfill] Will  clear  the marks set for each telephone entry
                        in the dialing list.

\item[\bf Play Number\hfill] Plays the currently selected telephone number using
                        Touch-Tone® signal coding.

\item[\bf Load List\hfill] Loads the contents of a telephone book from a file.

\item[\bf Sort List\hfill] Sorts  the contents of the telephone book in ascen-
                        ding alphabetical order.

\item[\bf Save List\hfill] Saves the contents of a telephone book to a file.

\item[\bf Set Password\hfill] Press  this  button  if  you wish to save a special
                        access password with the currently active telephone
                        book  file.   You  will  then be asked to enter the
                        password  (note:   what you type will appear on the
                        screen!),  only  the  first  20  characters will be
                        used.
                           To  clear  an  existant password and to save the
                        phonebook   file  without  encryption,  just  press
                        return when asked to enter the new password.
                           The  next  time you save the phonebook data, the
                        password  will  be encrypted and saved with it, the
                        phonebook  data  itself will be encrypted using the
                        password.
                           Whenever  an  encrypted phonebook file is loaded
                        and  the  password saved with it does not match the
                        last  password  you  entered,  you will be asked to
                        enter  the access password.  What you type will not
                        appear  on  the screen, press the $<$Return$>$ key when
                        done,  the $<$Backspace$>$ key will delete a character,
                        the  $<$Escape$>$  key  will abort the process, as will
                        closing  the  window.   The  input  process will be
                        terminated  automatically  when  20 characters have
                        been entered.
                           Note:   whenever  an encrypted phonebook file is
                        loaded,  it  will  take  longer  to  load  than  an
                        ordinary phonebook file, the same applies to saving
                        phonebook data.

\end{defit}

   Another  list  is  located  at  the right hand side of the window.  Each
entry  refers  to  a  control panel to be invoked on the currently selected
telephone entry.

\begin{defit}{\bf Serial, Modem, \ldots~~}

\item[\bf Serial, Modem, \ldots\hfill] These  entries  refer  directly  to the preferences
       main menu entries of the same name.

\item[\bf Password\-/User\hfill] This  entry  will open a control panel in which the
                        password  and  user name to be used for the current
                        phonebook  entry can be entered.  Both password and
                        name  are  made  available  from  within the `term'
                        ARexx interface to allow auto login script files to
                        set up a connection.

\item[\bf Copy Config\hfill] A  lot  of  time  can  be saved by copying selected
                        parts  of  the  global  configuration  to  a  local
                        configuration  which  part  of  a  phonebook entry.
                        This entry will invoke a control panel which allows
                        to  select  which parts of the global configuration
                        should be copied.  The control panel also remembers
                        which  parts  were  copied when it was invoked last
                        time.
                           If  the  `Copy  To  All' button is selected, the
                        configuration  data  to be copied will be copied to
                        all phonebook entries.
\end{defit}


\subsection{Rates - support for call fee calculation}

`term' will count the minutes you are online and connected to a BBS as soon
as  a  connection  is  made  through  the  dialing routine.  As soon as the
connection  is  lost  or you hang up, `term' will use the information to be
specified in this control panel to calculate the amount of money to be paid
for the call.
   Although  the  design of this control panel refers largely to the german
telephone  system  I  hope  that  it will be applicable to other countries'
telephone systems as well.  Please tell me if this is not the case.

\begin{defit}{\bf Days And Dates~~}

\item[\bf Pay\-/Unit\hfill] The amount of money to be paid for each single time
                        unit  when  online.   This fee must be given in the
                        smallest  currency  unit  available  (pence, cents,
                        centimes, etc.).

\item[\bf Seconds\-/Unit\hfill] This  is where you enter how many seconds each time
                        unit lasts.

\item[\bf Start Time\hfill] Here  you  can  adjust  the time at which telephone
                        company  will  switch to the current pay\-/unit rate.
                        In  Germany, the Deutsche Bundespost will switch to
                        a  cheaper  rate  after  6:00  pm and return to the
                        original  rate at 8:00 am in the morning.  The main
                        purpose of this field is to offer support for these
                        periodic  changes.   If your telephone company does
                        not  change  its  rates  in  such  manner, set both
                        settings  (Starting  time  and  ending time) to the
                        same values.

\item[\bf Days And Dates\hfill] This  list  contains  the default rate settings and
                        exceptions  for certain dates and days of the week.
                        Each  line  displays  the  type  of the entry and a
                        comment  (separated  by  the  `»'  character).  The
                        following types are available:

\begin{defit}{\bf 12. Jan (example)~~}
\item[\bf Day(s)\hfill] Settings for certain days of the week
\item[\bf 12. Jan (example)\hfill] Settings for a specific date
\end{defit}

                        If there is no special type available for an entry,
                        it's  probably the default settings you are dealing
                        with.   These  settings  are  used  whenever `term'
                        cannot find an entry for the current day.

\item[\bf Add Date\hfill] Will  invoke  a  control panel to create a new rate
                        entry  to  be  used  on  a  specific date.  Use the
                        sliders  and  button to select the day the settings
                        will be valid for.
                           Caution:   the  control  panel will allow you to
                        enter  nonexistant  dates,  such as 31.  Feb so you
                        will  have  to  make sure that the date in question
                        really exists.

\item[\bf Add Day(s)\hfill] Will  create  a  new rate entry referring to one or
                        more  days  of  the  week.   Use the buttons of the
                        control  panel  to  select  the  days  the  current
                        settings will be valid for.

\item[\bf Import\hfill] Much work can be saved if the rate settings for the
                        current  phonebook  entry  are imported (or copied)
                        from a different phonebook entry.  To do so, select
                        this  button.   The control panel to be opened will
                        display the list of phonebook entries available and
                        three buttons:

\begin{defit}{\bf Replace Units~~}
\item[\bf Replace Units\hfill] The  rate settings of the current phonebook entry
                          will  be replaced by the settings of the selected
                          entry.

\item[\bf Append Units\hfill] The  rate  settings of the selected entry will be
                          appended to the current phonebook entry.

\item[\bf Cancel\hfill] Will abort the selection.
\end{defit}

\end{defit}

   Whenever   a  rate  entry  is  selected,  the  corresponding  parameters
(Pay\-/Unit, Seconds\-/Unit, Start Time) can be edited.  If the entry refers to
a  certain date or a specific day of week three additional buttons are made
available:

\begin{defit}{\bf Remove~~}

\item[\bf Edit\hfill] Just  as the labels says will allow you to modify
                        an entry after it has been created.

\item[\bf Clone\hfill] Will  duplicate the current rate entry and append
                        it to the list.

\item[\bf Remove\hfill] Removes an entry from the list.

\end{defit}

\subsection{Dialing and selecting a phonebook entry}

To  put  a phonebook entry into the dialing list, double-click the mouse on
its  name.   The  number  appearing  to  the left of its name indicates the
precedence  of  entries  in  the dialing list.  To remove an entry from the
list, double-click it again.
   To  dial  the  list  of  selected entries, press the `Dial List' button,
control will be passed over to the dialing panel.
   As  I have been asked several times:  For dialing a telephone number the
dialing  prefix  specified  for  this  telephone  number  is  used.  If the
MNP-error  correction for a certain mailbox has to be specifically switched
on  via the dial string, this has to be done in the modem settings for this
mailbox  and not in the global settings of `term'.  The `Modem Init-String'
and  `Modem Exit-String' entries of the telephone book can also be used for
initialisation.

      The following information about the dialing process is displayed:

\begin{defit}{\bf Timeout~~}

\item[\bf Calling\hfill] The  name  of the telephone book entry belonging to
                        the   number  being  dialled.   If  it  is  just  a
                        telephone     number     the     string    constant
                        `-- Unknown --'  is shown, meaning that the name of
                        the mailbox is unknown.

\item[\bf Number\hfill] The telephone number being dialed or \_just\_ dialed.

\item[\bf Next\hfill] The  name of the telephone book entry which will be
                        processed next if no connection is established.  If
                        no  further  entry  exists,  `--  None  --' will be
                        displayed.

\item[\bf Timeout\hfill] A counter which is decreased every second and which
                        reflects   the   time   remaining  to  establish  a
                        connection  or  to  cycle  through  the  dial queue
                        again.

\item[\bf Attempt\hfill] This  field shows the number of unsuccessful cycles
                        made  through  the  dialing  queue to  establish  a
                        connection.

\item[\bf Message\hfill] A message to the user. This can be:

\begin{defit}{\parbox{2in}{\bf Maximum Number 0f Dial Retries Reached!}~}
\item[\bf Dialing \ldots\hfill] A dial is in process.

\item[\bf Line Is Busy\hfill] The dialed number is engaged.

\item[\bf Incoming Call!\hfill] The Modem has been called from another Modem.

\item[\bf Incoming Voice Call!\hfill] The  Modem  is  receiving  a  call  which was not
                          originated by another Modem.

\item[\bf No dialtone detected!\hfill] The modem was unable to detect any  dialing  tone
                          on the line, it may possibly be not connected.

\item[\bf Connection Established.\hfill] Nomen est omen!

\item[{\parbox[t]{2in}{\bf Maximum Number Of Dial Retries Reached!}}\hfill] Also nomen est omen.

\item[\bf Dial Attempt Timeout.\hfill] The  time available to establish a connection has
                          been reach\-ed or exceed\-ed.

\item[\bf Redial Delay \ldots\hfill] Pause  until  the  next cycle through the dialing
                          queue.

\end{defit}
\normalsize

   Additionally  three  buttons  can  be  found  in  the input field, which
initiate the following functions.

\begin{defit}{\bf Abort Dialing~~}

\item[\bf Skip Call\hfill] With  this function the current dialing attempt is
                         cancelled and the next number is processed.  If no
                         succeeding  telephone  number  exists `term' waits
                         for the next cycle through the dial queue or until
                         `Skip Call' is `pressed' again.
                            There also is a hotkey combination available to
                         accomplish the same effect.

\item[\bf Remove\hfill] This  button  works  in part similar to the `Skip
                         Call'   button.   Additionally,  it  removes  the
                         current phonebook entry from the dialing list.

\item[\bf Go To Online\hfill] If  the  line  is  very noisy, the connection to a
                         mailbox has been made but the `CONNECT' signal has
                         been  lost,  you  can  use  this  button to switch
                         directly  to  the  online mode of the Modem.  This
                         will  also start the pay unit counter and the dial
                         queue will be exited.

\item[\bf Abort Dialing\hfill] Operation  of  this  button  exits  the dial queue
                         (leaving  the  the dial queue intact) and ends the
                         dialing process.
\end{defit}
\end{defit}

   If a connection is successfully made the corresponding entry in the dial
queue will be removed.


\section{The Log book}

The  `Log  book'  is  a function which continually stores text displayed on
`term's  mainscreen, so that the user can inform himself about the received
text at any time .

\subsection{General characteristics}

The  "size"  of the `log book' is managed dynamically so that for every new
line which is read new memory must be allocated.  So the "size" of the `log
book'  is  limited  only  by  the  amount  of  the available memory.  It is
recommended  that the `log book' is emptied periodically to avoid using the
entire free memory.
   If  there  is  insufficient  memory  to `write' a new line into the `log
book', the first line will be deleted to make room for the new line.

\subsection{Operation}

The  contents  of  the  `log  book' can be paged through using the keys for
moving of the cursor (`Cursor keys') (cursor keys + shift key moves page by
page,  cursor  keys  + control key jumps to the beginning or end of the log
book).   Additionally,  the  numpad keys  are overlaid with jump and paging
functions  (corresponding  to the inscriptions\-/graphics on the front of the
keys).
   Additionally there is a further menu whose functions should be explained
briefly:

\begin{defit}{\bf Close Buffer, Quit~~}

\item[\bf Search\hfill] A search function is called which searches from the
                        topmost line ON THE SCREEN downwards for an entered
                        search string.  Upper-  and  lowercase  are ignored
                        with  this  function.
                        If  the  search string is found it is displayed and
                        marked\-/highlighted.

\item[\bf Repeat Search\hfill] Continues the search process started with `Search'.
                        The  previously  entered  search  string is carried
                        over.

\item[\bf Go To Main Screen\hfill] Switches to the main screen of `term'.

\item[\bf Clear Buffer\hfill] Clears the contents of the `log book'.

\item[\bf Close Buffer, Quit\hfill] Closes  the  `log  book'  screen  but  leaves  the
                        contents unchanged.

\end{defit}


\section{Using the clipboard and the mouse}

Cut  \&  paste functions are available on the main screen.  Use the mouse to
point  to  the first character you wish to send to the clipboard, hold down
the  (left) select button, move the mouse to the last character you wish to
cut  and release the button.  The characters you have just marked will have
been transferred to the clipboard, use the key combination Amiga+V to paste
the  contents of the clipboard and to feed them back into the input stream.
Holding  down  the  control key while clicking on a character will feed the
single  character  into  the  input  stream, it will not be buffered in the
clipboard.   Hold  down any shift key to have the contents of the clipboard
fed  into  the  input  stream  right  after the mouse button is released, a
$<$return$>$ will follow the data (this also works on the `log book' screen).

   With  the  aid  of the mouse you can mark blocks in the `log book' which
are  to  be copied into the `clipboard' and which can later be fed into the
input stream with the function `Paste Clipboard Contents'.

   Hold  down one of the `Alt' keys and press the left mouse button to make
`term'  emit  a  number  of  cursor  move sequences which will position the
on-screen cursor at the spot where you clicked the mouse.

   In standard string editing fields a solution had to be found to preserve
the  line editing functions while still supporting menu shortcuts.  To undo
any  changes  made  press  Amiga+Q, to clear the string editing field press
Amiga+X.   Menus  associated  with  the  shortcuts  Amiga+Q\-/X are called by
holding  down  any shift key along with the Amiga keys (i.e.  Shift+Amiga+Q
will select the `Quit' menu item if available).
   Clipboard  functions  are  also  available within string gadgets:  press
Amiga+C  to  copy  the  contents  of  the gadget to the clipboard and press
Amiga+V  to  insert  the  current  clipboard contents at the current cursor
position.


\section{Command sequences}

Each  character  string  sent  directly to the modem is a command sequence.
This includes telephone numbers, modem initialisation strings, function key
assignments,  etc.   In  addition  to  the  normal  ASCII character strings
various  other  commands  are  supported  which  will  be  described in the
following.

\subsection{The backslash {\tt \char'134}}

The following sequences are introduced with the `{\tt\char'134}':

\begin{defit}{\bf ddd~~}

\item[\bf \tt \char'134\char'134\hfill] Generates a single backslash.

\item[\bf \tt \char'134a\hfill] Executes an ARexx command (all text to follow this character).

\item[\bf \tt \char'134b\hfill] Generates  a  backspace  (deletes  the character to the left of the
        cursor).

\item[\bf \tt \char'134c\hfill] Calls  a main menu entry, the menu entry to be called is determined
        by  the  argument  to  follow;  this  is  either a six digit number
        (example:  "\verb+\+c 010203" would call subitem 1, item 2, menu 3) or the
        name  of the menu entry enclosed in single quotes to call (example:
        "\verb+\+c  'about'"  would  call the `About...' menu entry, the search is
        case-insensitive and only compares the characters given).

\item[\bf \tt \char'134d\hfill] Executes an AmigaDOS command (all text to follow this character).

\item[\bf \tt \char'134e\hfill] Generates the escape character (ASCII code 27).

\item[\bf \tt \char'134f\hfill] Generates  a  form feed  (skip  to  beginning of the next  page  or
        clear the screen).

\item[\bf \tt \char'134g\hfill] Places the string to follow this character in the clipboard.

\item[\bf \tt \char'134i\hfill] Feeds the contents of the clipboard into the input stream.

\item[\bf \tt \char'134n\hfill] Generates a line feed.

\item[\bf \tt \char'134p\hfill] Feeds  the  password  of  the  telephone  book entry into the input
        stream  of  the  last  made  connection.   Note:   The  password is
        automaticly  cleared  for  security  reasons when the connection is
        broken.

\item[\bf \tt \char'134r\hfill] Generates a carriage return.

\item[\bf \tt \char'134t\hfill] Generates a tab jump.

\item[\bf \tt \char'134u\hfill] Similar  to  the  \verb+\p+  command, the \verb+\u+ command will feed
the current user name into the input stream.

\item[\bf \tt \char'134x\hfill] Generates a break signal (as with the `Send Break' menu entry).

\item[\bf \tt \char'134\char'136\hfill] Generates a caret character.

\end{defit}

   If  none of the mentioned combinations is recognized the character which
follows the `\verb+\+' will be fed into the input stream without any changes.

\subsection{The caret {\tt\char'136}}

This  character  is  used  to  change the following character to a `control
character'.   So the sequence `\verb+^J+' will become a Line feed and `\verb+^H+'
becomes a  tab jump.  The character which follows the `\verb+^+' has to be located
between `\verb+@+' and `\verb+[+', otherwise it is fed into the input stream without
changes.

\subsection{The tilde {\tt\char'176}}

This character causes the program to pause for exactly half a second before
it continues to process the following commands.


\section{Fast! Macros}

In  implementation  and design the fast!  macros are closely related to the
function key macros.  If invoked by selecting the corresponding menu entry,
a  window  will  open  on  the  right  hand  side  of the screen sporting a
scrollable  list  of  macros (the contents of this list can be edited using
the  `Fast  Macros' preferences menu item).  When a list entry is selected,
the associated command sequence (discussed above) will be executed.
   By using the fast!  macros it is theoretically possible to control a BBS
just  by  mouse, provided that you have the approriate macros in your fast!
macro list.
   The fast!  macro panel can be resized and acts just like the main `term'
window:   menu items can be selected and characters entered are sent to the
serial driver.


\section{The `Packet Window'}

In  this  window  a  line  can  be edited before it is sent.  All the usual
editing  functions  known from standard input fields are available (shift +
left\-/right jumps to the start\-/end of the line).
   Additionally  some  extended  functions  exist  which  are  performed by
pressing a cursor key together with the Shift or Control key:

\begin{defit}{\bf Right + Control~~}

\item[\bf Left + Control\hfill] Jumps to the next word.
\item[\bf Right + Control\hfill] Jumps to the previous word.

\item[\bf Up\hfill] Shows the last entered command in the input line.

\item[\bf Up + Shift\hfill] Shows the very first command entered so far.

\item[\bf Down\hfill] Shows  the  next entered command (if you moved back
                        for some commands before).

\item[\bf Down + Shift\hfill] Shows the very last command entered so far.

\end{defit}

   This  input field has a buffer where all previously entered commands are
stored  (`Command  History').   You  can page through this buffer, load and
save  it  and  individual  lines  can be called up again.  As with the `log
book'  this  buffer  is  managed dynamically.  The same memory restrictions
that apply to the `log book' are valid for this buffer.
   The input line also has a menu which offers the following functions:

\begin{defit}{\bf Clear History~~}

\item[\bf Load History\hfill] Loads the  contents of the input line buffer from a
                        file.   Each stored line in this file can be called
                        up and sent.

\item[\bf Save History\hfill] Saves  the  contents  of the input line buffer to a
                        file.

\item[\bf Clear History\hfill] Simply  releases all previously stored commands and
                        the used memory.

\item[\bf Other Window\hfill] Switches to the main screen of `term'.

\item[\bf Quit\hfill] Closes  the  window  (corresponds  to  clicking the
                        close gadget of the window).
\end{defit}

   It  must  be  mentioned that every character entered into this window is
shown immediately  so that those things where it is better that they should
not  appear  on the screen (like passwords for a mailbox) should be entered
in another way.
   The content of every input line is interpreted as a command sequence and
therefore can also contain control characters.
   If a line taken from the input buffer is sent without change it is \_not\_
stored in the buffer again (`true history' as known from `ConMan').
   The  contents  of  the  input buffer are cleared automatically after the
window is closed.  Under no circumstances are the contents maintained until
the next call!


\section{System variables}

Information  which  is  to be available the next time the program is run is
placed  as  AmigaDOS  variables  in  the  directory `ENV:' and `ENVARC:' by
`term'.
   The  variables  used  by  `term'  can  be  used and manipulated by other
programs transparently. In detail these variables are:

\begin{defit}{\bf TERMWIND0W~~}

\item[\bf TERMPATH\hfill] The  name of the directory in which all information
                        used  by  `term' is placed (Standard configuration,
                        telephone  book,  etc.).   The  default  setting is
                        `ENVARC:term'.

\item[\bf TERMWINDOW\hfill] The  window definition which can also be entered in
                        the  program  via  the  menu function  `Set Console
                        Window'.

\item[\bf xpr\hfill] The  standard  settings  used for the corresponding
                        transfer protocol (xprzmodem, xprkermit, etc.).

\end{defit}


\section{An author's request \& gift-\-ware-\-re\-num\-er\-a\-tion}

The  development  of  `term'  required conciderable expense.  The effort to
find  out  by  trial and error and with a little help from the DevCon-Disks
and the Includes \& Autodocs the operating principles of some routines would
alone  be  worth  a remuneration to the author (it's simply bad luck if the
Atlanta-DevCon records arrive with considerable delay).
   The  author is susceptible to all kinds of donation and gifts so long as
it  is  assured  that  they are useful to him (these nice little sacks with
elephant  food  are  better  sent  to  the Hannover zoo).  Therefore anyone
pleased  by  `term'  or  who  works  with  the  source  code  is welcome to
remunerate  my  programming  efforts  as  he\-/she  thinks that it matches my
efforts (If you've got no ideas yet:  I am looking for old Infocom games --
with  the  exception  of  `Zork Zero,I,II \& III' `Journey', `A mind forever
voyaging', `Hollywood Hijinx', `Wishbringer' and `The lurking horror' which
I already own -- old CinemaWare games -- with the exception of `Defender of
the Crown' and `Sinbad' -- the source code to `ARJ' or a Modula-2 compiler)
- a lot of thanks!

\begin{center}
                                My address:

                               Olaf Barthel
                             Brabeckstrasse 35
                            D-3000 Hannover 71

                        Federal Republic of Germany

                   Z-Net: O.BARTHEL\verb+@+A-Link-H
                  Usenet: o.barthel\verb+@+a-link-h.zer.sub.org
                          cbmvax.commodore.com!cbmehq!sourcery!olsen

\end{center}

   Would  those  people  looking at the source code to extend it or do some
modifications  here  and there please contact me before publication so that
our efforts can be coordinated.
   If  someone  should  have  a  brilliant  idea  to  improve or extend the
structure and contents of this manual, he\-/she may do it with my blessing (I
haven't had the enthusiasm up to now to \TeX ify the text).


\section{Revision History}

\begin{defit}{\bf V1.9c~~}

\item[\bf V2.0\hfill]    Alas, too much has changed to fit into a short description...

\item[\bf V1.9c\hfill]   As you can see by the revision number, I didn't have the courage to
        dub  this program revision `2.0'.  Due to lack of time I was unable
        to  introduce  most of the useful features suggested by users after
        releasing the previous program revision (don't worry, the suggested
        features will be remembered and added as soon as time permits).
           I  fixed a couple of hidden and potential  bugs.  Especially the
        gadget  creation  routines  based  on  gadtools.library  should now
        finally be rock solid and conform to the programming guidelines.
           Some  nasty  and  persistent bugs in the terminal emulation code
        were  finally  fixed,  most  notably  the  famous `screen would not
        scroll when fed with new data' bug.  The insert\-/clear line commands
        will finally work.
           I  also  brushed  up  the  look \& feel of the user interface, in
        particular the transfer options control panel.
           The  program  will no longer crash when an xpr.library cannot be
        opened.
           The  dialing routine will no longer run one dial retry more than
        specified in the prefs.
           The  clipboard  functions  copy  \& paste now also work in string
        gadgets (use Amiga+C to copy and Amiga+V to insert text).
           The  xpr.libraries  will  no  longer  create downloaded files in
        their  separately  set  download  directories  but  will follow the
        settings specified in `Preferences\-/Paths'.
           The  previous  revision  had  accidentally  enabled  the capture
        filter  by default, forbidding to capture the incoming data without
        filtering control sequences.
           Those  who  never  use the cut \& paste text features on the main
        screen  or  just  wish  to save displaying time can now disable the
        buffering of on-screen text.
           Due  to  small  changes  the data throughput rate when using the
        data transfer functions should have increased notably.
           In addition to the standard twelve baud rates I have added three
        new ones which may confuse the XPR transfer libraries.
           The  biggest  change  is  introduced  by  the  external terminal
        emulation routines as designed by Ueli Kaufmann.  `term' is able to
        use  the same terminal emulation modules as Ueli's terminal program
        `LR-Comm'.

\item[\bf V1.9b\hfill]   I  had  hoped  that  it  would  not be necessary, but it was:  this
        release  fixes  a  couple  of Enforcer hits and bugs in the dialing
        routine and the terminal emulation.  Thanks to John Burton a couple
        of  bugs  were  fixed and the terminal emulation should now be much
        more DEC compatible than it used to be.

\item[\bf V1.9a\hfill]   Compared to its predecessor this version of `term' does not include
        any  new  features,  I  merely  fixed a number of quite substancial
        bugs,  cleaned  up the visual appearance a bit and removed a couple
        of  inconsistencies.  In particular I fixed the dialing routine and
        the  double buffering routines employed by the XPR-transfer process
        (there  was  more  of course, but nothing to worry about).  One big
        change  will  probably  go  unnoticed:   `term'  no longer uses the
        gadtools.library  routines to create string gadgets but a couple of
        home   brewn   ones.   This  was  absolutely  necessary  since  the
        previously  used  technique  of  adding extra editing functions was
        clearly  offending  official  programming guidelines.  Last but not
        least  I  improved  the behaviour of the program when running under
        low-memory  conditions.   Only  a few hours before I had originally
        intended  to  release  the  final  program  I  discovered an almost
        historical  bug:   if  printer capture was enabled the data was not
        sent  to  the printer but - open or not - to the capture file.  The
        bug  was  fixed  and  the  file  capture  was  rewritten to use the
        doubly-buffered  I\-/O  routines  also  employed  by the XPR-transfer
        module.   Another  last minute bug fix concerns the telephone book:
        in  revision  `term' 1.9  it  was impossible to change the call fee
        settings, this has been fixed.

\item[\bf V1.9\hfill]    Starting   with   this  release  AmigaOS  2.04  (Kickstart  37.175,
        Workbench  37.67)  becomes  a must (by the time this `term' release
        becomes widely available Commodore should be shipping Kickstart 2.0
        enhancer  kits  -- it was a tough job, and it has been nicely done,
        congratulations!).   On  machines equipped with a Super-Agnus chip,
        but  without  an  ECS-Denise  chip  the screen mode selection would
        occasionally  select  the wrong resolution, this has been fixed.  I
        have  increased  the read buffer of the serial device driver, it is
        now  about sixteen times as large as it used to be.  Read and write
        accesses  during  up-  and  downloads are now doubly buffered (i.e.
        while  one buffer is transferred the other buffer is asynchronously
        filled with new data) which is to permit data transfers without the
        usual  delay  times  caused  by  buffer  flushing and filling.  The
        filetype  identification  now recognizes `some' more file types (23
        additional  types  to  be  accurate).  The auto-upload function has
        been  fixed  and  enhanced  in  this  release.   You  now  have the
        opportunity  to  cancel an upload (by sending the approriate ZModem
        abort  sequence) or to ignore the inquiry sequence.  Cancelling the
        file  requester  to  appear  after  the  inquiry  sequence has been
        recognized will also transmit a ZModem abort sequence.  The calling
        fees  corresponding to phonebook entries can now be edited as plain
        numbers  instead  of  adjusting  a slider gadget which would always
        only  allow  numbers  ranging  from  0 to 10.00 to be entered.  The
        touch-tone-dialing routine now plays numbers half as fast as in the
        previous  release.   The  log  book  screen  now  opens in the same
        resolution   as   the  main  screen  (which  may  look  strange  in
        resolutions  such  as  `SuperHires Interlaced').  Transfer protocol
        library  and  serial  device  driver  can now be selected using the
        asl.library  file  requester  instead of typing the names manually.
        The  `VOICE'  and  `RING'  recognition did not work in the previous
        release,  this  has been fixed.  I also fixed a problem encountered
        with  the path panel:  it was impossible to select a path using the
        file requester without having to select a file in the corresponding
        directory.  The transfer panel has been reworked and now sports two
        bar  displays which graphically show the amount of data transferred
        and  the  time  to  wait  until  the transfer is finished.  The old
        transfer panel would crash or generate Enforcer hits when selecting
        an  menu  item,  this  has  been  fixed.   The  save\-/restore cursor
        attributes  function in the VT100 terminal emulation would save and
        restore  values  it should not do, namely the scroll region borders
        (fixed).   The dialing function now also recognizes `NO CARRIER' as
        a  synonym  for `BUSY'.  I must have caused unrecoverable damage to
        the  dialing function when trying to fix a particular bug, so I had
        to rewrite the whole routine (not a bad thing actually, the routine
        is  now  much  less complex than in the previous releases and works
        like  new!).   The  blinking  display could cause problems when the
        packet  window was active (the window borders would flash just like
        the  screen  cursor  did), this has been fixed.  Every five seconds
        the  online  time display will change to a call fee display and the
        other  way  round.  `term' now sports an iconify function (requires
        Workbench  to  be running).  I also added the `Fast!  macros' and a
        couple  of  ARexx  commands  which  were  missing  in  the previous
        release.   Well...   it's  all in a day's work for a bicycle repair
        man!
           While  some  errors seem to show their hand and to wave shouting
        `I am here, get me out quick!' I am still deeply indebted to Martin
        Berndt,  Ralf  Thanner and Holger Lubitz who discovered most errors
        and bugs in the previous `term' release.

\item[\bf V1.8a\hfill]   First international release.

\item[\bf V1.0-\hfill]   See german documentation (that's why its about 40K bytes longer).

\end{defit}

\begin{quote}
...you can't get what you want till you know what you want...
\flushright{Joe Jackson}
\end{quote}

\end{document}
