home *** CD-ROM | disk | FTP | other *** search
/ Otherware / Otherware_1_SB_Development.iso / amiga / comms / misc / wlmt4714.lha / man / WelmatReference.Man next >
Encoding:
Text File  |  1992-02-26  |  91.9 KB  |  2,377 lines

  1.  
  2.      WELMAT                     Reference Manual               Version 0.47
  3.  
  4.  
  5.  
  6.  
  7.                                      ¢1mWelmat 
  8.  
  9.                        ¢0mThe Session Handler for the Amiga 
  10.                      Origionally by Michael C. Richardson.  
  11.                  Current Keeper of Sources: Russell W. McOrmond 
  12.                       No warrantee expressed or implied.  
  13.                        See section COPYING for license.  
  14.                   Free Software Foundation Copyleft applies.  
  15.                               All rights reserved 
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.                                       -1-
  66.  
  67.  
  68.      WELMAT                     Reference Manual               Version 0.47
  69.  
  70.  
  71.      ¢1mIntroduction to Welmat 
  72.  
  73.  
  74.                ¢0mWelmat's  basic job is to be a Fidonet session handler.
  75.           A session  handler  is  the  program  that  transfers  files
  76.           between  two  fidonet  sites, the most common exchange being
  77.           between a point and it's bossnode.  As well as handling  the
  78.           job  for  a point, Welmat is designed around being used in a
  79.           Multi-line host mode, and  has  the  ability  to  deal  with
  80.           networks other than just fidonet itself.  
  81.  
  82.                In  order to allow for the most configurability, Welmat
  83.           makes use of external programs rather than built in routines
  84.           to handle a lot of it's advanced features.  This allows  one
  85.           to  decide whether they wish to use the feature (And if they
  86.           don't, no memory is wasted), and  also  allows  third  party
  87.           developers  to  write  modules  that  will  just 'Plug Into'
  88.           Welmat. This idea will  be  expanded  upon  further  in  the
  89.           future  to allow users to chose which protocals they wish to
  90.           support, and allow third party developers to write protocals
  91.           that will  be  Welmat  compatable  without  having  to  deal
  92.           directly with Welmat itself.  
  93.  
  94.                Welmat  is  a  Freely  Distributable  program  that  is
  95.           licenced under the GNU public licence.  This  allows  people
  96.           to  use the program, distribute the program, and even obtain
  97.           and modify  the  source.    Hopefully  in  the  future  more
  98.           developers  will  join  the current team in writing software
  99.           that will  be  freely  available  to  the  Amiga  Networking
  100.           community.  
  101.  
  102.                Welmat  will  hopefully  be  made  available with a few
  103.           different manuals for different types of users.   The  three
  104.           main types of users are your average POINT users, a standard
  105.           NODE  operator  (Who  may  run  a BBS under Welmat) and then
  106.           there are your power users (Who want to get into  the  nitty
  107.           gritty details of everything).  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.                                       -2-
  132.  
  133.  
  134.      WELMAT                     Reference Manual               Version 0.47
  135.  
  136.  
  137.      ¢1mWelmat Philosophies 
  138.  
  139.           ¢0mThere  are quite a few concepts that the authors believe are
  140.           important  to  the  understanding  of  Welmat,  why  certain
  141.           features exist, and why certain others might not.  
  142.  
  143.             I will first include some comments from Michael Richardson
  144.           from the origional manual.  
  145.  
  146.  
  147.                     This   document   represents  an  attempt  to
  148.                provide an overview of how Welmat works, in  order
  149.                that  the  user  can  better  figure  out  what is
  150.                possible with Welmat, what features and facilities
  151.                have  been  forseen,  and  whether  something  not
  152.                forseen by  the author can be made to work.  It is
  153.                the author's belief that programs are  tools,  and
  154.                while  the  end  of  screwdriver  was not made for
  155.                hammering in a nail, lacking a hammer, it  can  be
  156.                used to push the nail in.  
  157.  
  158.                     However,  it also the author's belief that no
  159.                one  binary  can  provide  all  the  features  and
  160.                functions that every user requires, and Welmat has
  161.                been  designed  to provide general features rather
  162.                than specific functions.  Examples that the author
  163.                feels are key to understanding Welmat include 
  164.  
  165.  
  166.             ¢1mflow¢0m.¢1mlibrary ¢0mthe queue manager.  Concepts of ¢1mHold ¢0mand
  167.                ¢1mCrash ¢0mhave  been  replaced  with  a  more  general
  168.                ¢3mpriority ¢0mscheme where both the maximum and minimum
  169.                priorities to  be  sent  can  be  specified.  This
  170.                manager, while  not  active  (it  has  no  process
  171.                context)  attempts  to  synchronize  access to the
  172.                outbound queue so that files added  to  the  queue
  173.                while  other files are in transit will get sent if
  174.                possible.  
  175.  
  176.  
  177.             ¢1mWelmat  Programs   ¢0mare   instructions   that   Welmat
  178.                interprets (they are compiled to a low level code)
  179.                in order to set up the information required for it
  180.                to run.    A  great  number  of  policy  decisions
  181.                can/will be settable via  Welmat  programs.    The
  182.                alternative  is to set a great deal of policy in C
  183.                code,   something   that    the    author    finds
  184.                unacceptable.  
  185.  
  186.                     Unfortunately,   the   real   power  of  this
  187.                interpretation  lies  in  the  ability   to   make
  188.                decisions  --  and this implies being able to form
  189.                complex expressions.  This later facility is still
  190.                being mulled over, awaiting an evaluation  of  the
  191.                possibilities of using TCL [Tool Command Language]
  192.                for this.  
  193.  
  194.  
  195.  
  196.  
  197.                                       -3-
  198.  
  199.  
  200.      WELMAT                     Reference Manual               Version 0.47
  201.  
  202.  
  203.                     In  the  meantime, an effort has been made so
  204.                that any decisions that need to be made base their
  205.                decisions on data provided by the user.   In  this
  206.                way  the  "right" choice depends on the parameters
  207.                given.  
  208.  
  209.  
  210.           ¢1mSUB¢0m-¢1mPROCESSES 
  211.                ¢0mWelmat is made up of a number of processes.  There
  212.                is  a  single  MCP  process   that   attempts   to
  213.                coordinate  what  each  of,  perhaps,  many  slave
  214.                processes are doing.  The actual protocol code  is
  215.                run by the slave process.  
  216.  
  217.  
  218.                The  Licence  that Welmat is distributed under seems to
  219.           have caused a bit of confusion.    The  current  version  of
  220.           Welmat  is  distributed under the GNU General Public License
  221.           version 2. The intent of the  use  of  this  licence  it  to
  222.           ensure   that  Welmat  and  all  derivatives  remain  freely
  223.           accessable to the public.  
  224.  
  225.                The concept of  'Free'  has  been  confused  with  some
  226.           indication   of  the  cost  rather  than  an  indication  of
  227.           freedom.  Most software packages that are available  have  a
  228.           'Customer'  and  a 'Producer'. The Customer is the person or
  229.           persons who are paying for the development of  the  software
  230.           and  the  Producer is the person who is actually writing the
  231.           software.  With the current  developement  of  Welmat  I  am
  232.           actually  acting as both one of the Customers and one of the
  233.           Producers in that I am technically 'Paying Myself' to  write
  234.           Welmat.  All  development, once completed, is made available
  235.           to everyone regardless of who paid.  
  236.  
  237.                Some users will then ask why they would want to pay  at
  238.           all  if they are going to get the same product regardless of
  239.           whether they pay or not.  This is  not  actually  the  case.
  240.           Users  who  contribute  in  one  way  or another towards the
  241.           development of freely available  software  will  have  their
  242.           needs  met  at  a  higher  priority  than  users  who do not
  243.           contribute.   As  well,  if  no  contributions   are   made,
  244.           development  resources  become  low, and development ends up
  245.           slowing.  Allowing the contributions to  be  voluntary  also
  246.           allows  the people who HAVE the money to help out the people
  247.           who may not be all that well off financially at the  moment,
  248.           or who are contributing in other non-financial ways.  
  249.  
  250.                As  should  be  understood  from above, time is just as
  251.           much a contribution to the development of software as  money
  252.           is.  A user that spends time helping others set up, provides
  253.           usefull  bug reports and helps convince other authors to get
  254.           involved in development is as much (And in some ways more) a
  255.           contributor than someone who sends in money.  While  I  very
  256.           much  thank the people who do spend the time to help support
  257.           freely available software, the simple fact  is  that  it  is
  258.           often easier for a user to send in money.  
  259.  
  260.  
  261.  
  262.  
  263.                                       -4-
  264.  
  265.  
  266.      WELMAT                     Reference Manual               Version 0.47
  267.  
  268.  
  269.                Why send  in  money?    The  people who actually do the
  270.           writing of the software have day jobs in order to keep  food
  271.           on the table.  Often the time that they spend on development
  272.           of  one  thing  takes  them  away  from  the  development of
  273.           something that is actually making them money.  For myself, I
  274.           ended up putting in quite a few hours last summer  in  order
  275.           to try to pay for this term in University.  
  276.  
  277.                Who benifits  from  donations?    Obviously,  everyone.
  278.           When you send in  the  'registration'  for  a  ShareWare  or
  279.           Commercial  package  you  often  do not directly receive the
  280.           benifits that that money can  give  you.    If  there  is  a
  281.           certain  feature that you wish to have added, it makes sence
  282.           to pay someone  for  the  time  required  to  add  that  new
  283.           feature.  
  284.  
  285.                As  an  example,  I have found it almost frustrating to
  286.           watch the number of users sending in money for  one  of  the
  287.           other  Network  session  handlers  for the Amiga. One of the
  288.           main reasons I was told that people were  not  using  Welmat
  289.           was  because  of  the  fact  that  ZedZap  had  not yet been
  290.           implemented in Welmat. ZedZap is a feature that does take  a
  291.           bit  of time to write, and unfortunately I did not have that
  292.           time last summer because I needed to be working  full  time.
  293.           Unfortunately nobody made the connection between the missing
  294.           feature  and  time, and rather than getting a group together
  295.           to pay for the development of  a  freely  available  ZedZap,
  296.           they  sent  their  money to pay for a program where the only
  297.           person really benefiting is the Author of the program.    It
  298.           is even more frustrating to watch developers who are capable
  299.           of adding a feature to a freely available program to instead
  300.           pay  money towards a package that they then cannot modify to
  301.           suit  their  own  needs,  or  to  develop  freely  available
  302.           software  that  only  supports the 'Share'ware or Commercial
  303.           packages.  
  304.  
  305.  
  306.  
  307.                If you wish to get involved in the development of truly
  308.           freely available  software,  please  get  ahold  of  myself.
  309.           There  is always work to be done, and never enough resources
  310.           to actually get everything done.  Lets work together towards
  311.           building software tools that will benifit EVERYONE.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.                                       -5-
  330.  
  331.  
  332.      WELMAT                     Reference Manual               Version 0.47
  333.  
  334.  
  335.  
  336.  
  337.      ¢1mTHE CONFIG FILE 
  338.  
  339.                ¢0mThe text configuration file is  made  of  a  series  of
  340.           keywords,  one  per  line,  most  followed  by  zero  or one
  341.           arguments,  each  argument  seperated  by  a  space  or  tab
  342.           character.  
  343.  
  344.                Characters  preceeded  by a backslash loose any special
  345.           meaning given below, and in addition, the sequence  '\n'  is
  346.           turned  into a newline, '\r' is a carriage return and '\XYZ'
  347.           is the character represented by the octal number XYZ.  
  348.  
  349.                Any  characters   enclosed   in   double   quotes   are
  350.           interpreted,  except  that backslash interpretation is still
  351.           done.  Arguments that have spaces in them should be quoted.  
  352.  
  353.                All keywords are case-insensitive.  
  354.  
  355.                The configuration file  is  processed  by  ¢1mwcompile  ¢0mto
  356.           produce a  data  file.    ¢1mwcompile ¢0mtakes one option: -¢1mConfig
  357.           ¢0m<¢1mfile¢0m> which  tells  it  to  compile  the  given  file  into
  358.           ¢1mwelmat¢0m.¢1mdata ¢0min the current directory.  
  359.  
  360.                If  given two other arguments, it takes the first to be
  361.           the name of configuration file, and the  second  to  be  the
  362.           name of data file to produce.  
  363.  
  364.                If  the  datafile is ommited, then the file ¢1mwelmat¢0m.¢1mdata
  365.           ¢0mis used.   If  not  given  any  argument,  it  looks  for  a
  366.           ¢1mwelmat¢0m.¢1mcfg ¢0min the current directory.  
  367.  
  368.                If the argument '?' is given, then a listing of all the
  369.           commands that  are  currently supported are listed.  This is
  370.           very usefull for updates to keep up-to-date on all  the  new
  371.           command options.  
  372.  
  373.  
  374.           There are four different types of verb types: 
  375.  
  376.             ¢1mNUMBER¢0m_¢1mARG  ¢0mThe argument is a number and should be in base
  377.                10, suitable for 32 bit signed  interpretation.    Some
  378.                structures,  however,  use  8 or 16 bit representation.
  379.                The configuration compiler uses 32 bits everywhere.  
  380.  
  381.             ¢1mSTRING¢0m_¢1mARG ¢0mThe argument is a string.  This may be  a  file
  382.                name, or  a dial string or other relevant string.  Some
  383.                strings are limited in their size, such system name  or
  384.                sysop   name,   due   to  constraints  of  the  FidoNet
  385.                protocols.   The  configuration  compiler  can  produce
  386.                strings  of an arbitrary size, but currently a line may
  387.                not exceed 256 bytes.  
  388.  
  389.             ¢1mDIR¢0m_¢1mARG ¢0mA  special  case  of  a  string  argument,  but  a
  390.                trailing slash will be added if the directory name does
  391.                not end in a colon (:) or a slash (/).  
  392.  
  393.  
  394.  
  395.                                       -6-
  396.  
  397.  
  398.      WELMAT                     Reference Manual               Version 0.47
  399.  
  400.  
  401.             ¢1mNO¢0m_¢1mARG  ¢0mThe  keyword  is a binary or other enumerated type
  402.                option.  It takes no option.   No  sanity  checking  is
  403.                currently done  in  the case of exclusive options.  The
  404.                last option processed is the one that will take  effect
  405.                (see WELMAT PROGRAMS) 
  406.  
  407.        GLOBAL CONFIGURATION PARAMETERS 
  408.  
  409.                The  configuration  file consists of a number of global
  410.           definitions and some number  of  modem  definitions.    Each
  411.           modem  definition  in theory defines a seperate modem/serial
  412.           port/slave combination referred to as a  ¢1mline  ¢0mHowever,  not
  413.           all lines need be active all the time.  Several ¢1mlines ¢0mmay be
  414.           defined  for a single device, each with differing parameters
  415.           (perhaps for different modems).  This is not the only way to
  416.           change parameters (see WELMAT PROGRAMS).  
  417.  
  418.  
  419.           Stack <Number> 
  420.  
  421.  
  422.  
  423.             ¢1mCodeList ¢0m(STRING_ARG) Points to a file of  product  names,
  424.                used  to  decode  product  codes  found  in  the  WaZOO
  425.                header.  This  file  is  an  ordered  list  of  product
  426.                numbers names  pairs  one  per  line.  Each line should
  427.                contain  the  product  number  (in  hex,  two   digits,
  428.                possibly  followed  by the letter 'h'), a space or tab,
  429.                and the product name.  Note that the product number  is
  430.                actually  ignored and the relative position in the file
  431.                is used to find the product name.  The  whole  file  is
  432.                loaded  in  to  an  appropriately  sized  buffer during
  433.                initialisation, after which the file is not  referenced
  434.                again.    Any  unknown  product  codes  found  will  be
  435.                displayed in as two hex digits.  
  436.  
  437.             ¢1mComment ¢0m(STRING_ARG) Displays a comment to the launch  CLI
  438.                when this part of the Welmat program is reached.  
  439.  
  440.             ¢1mDisplayLogLevel  ¢0m(NUMBER_ARG)  Sets  the  highest  message
  441.                level that should be posted to the log  window.    This
  442.                value   affects   messages   from   the  MCP  and  from
  443.                un-occupied slaves.  
  444.  
  445.             ¢1mExitEveryCall ¢0m(NUMBER_ARG) Causes  Welmat  to  exit  after
  446.                placing  a  single successfull call or one that results
  447.                in  a  diagnositic  code  greater  than  the  specified
  448.                number.   The  default  is that this is disabled, which
  449.                corresponds to the value, 127.  
  450.  
  451.             ¢1mFidoListI ¢0m(STRING_ARG) Tells Welmat to  use  a  version  6
  452.                nodelist that has the words in intel order (as produced
  453.                by parselst  -i or an IBM parselst).  Just the path and
  454.                basename should be specified, ".DAT" and ".IDX" will be
  455.                appended.   Note  that  version  6  nodelist  is  a   3
  456.                dimension (zone,  net,  node)  only  nodelist.    Point
  457.                numbers different from zero will fail to be found.  
  458.  
  459.  
  460.  
  461.                                       -7-
  462.  
  463.  
  464.      WELMAT                     Reference Manual               Version 0.47
  465.  
  466.  
  467.             ¢1mFidoListM ¢0m(STRING_ARG) Tells Welmat to  use  a  version  6
  468.                nodelist  with  the  words  in  native  68000  order as
  469.                produced by  Amiga  Parselst.  Otherwise  identical  to
  470.                ¢1mFidoListI¢0m.  
  471.  
  472.             ¢1mHost  ¢0m(special)  The  argument  is  the  Fully Qualified 5
  473.                dimension address  of  this  system.    The   form   is
  474.                Domain#Zone:Net/Node.Point.  
  475.  
  476.             ¢1mInbound  ¢0m(DIR_ARG)  Specify  the default inbound directory
  477.                for all slaves and sessions.  
  478.  
  479.             ¢1mLogFile ¢0m(STRING_ARG) Specifies the  filename  of  the  MCP
  480.                logfile and default logfile for slaves and sessions.  
  481.  
  482.             ¢1mLogFileLevel  ¢0m(NUMBER_ARG) Specifies the maximum log level
  483.                that should be written to the MCP log file.  
  484.  
  485.             ¢1mLogLevel ¢0mSynonym for ¢1mLogFileLevel¢0m.  
  486.  
  487.             ¢1mLogWindow ¢0m(STRING_ARG) Defines a filehandle that is  where
  488.                Log  entries are written directly to, and is similar to
  489.                the use of StatusWindow described elsewhere.  
  490.  
  491.             ¢1mMaxRetryCode ¢0m(NUMBER_ARG)  Specifies  the  largest  return
  492.                result  that  will  cause Welmat to requeue an outbound
  493.                request if it fails.  The default is EXIT_BADCONF (35),
  494.                which  is  returned  when  Welmat  believes  that   the
  495.                configuration is faulty.  
  496.  
  497.             ¢1mNoList ¢0mSynonym for ¢1mNoNodeList¢0m.  
  498.  
  499.             ¢1mNoNodeList ¢0m(NO_ARG) Specifies that no nodelist exists.  To
  500.                answer a call, Welmat needs to have a nodelist.  
  501.  
  502.             ¢1mNoCode ¢0mSynonym for ¢1mNoCodeList 
  503.  
  504.             NoCodeList ¢0m(NO_ARG) Specified that no product list exists,
  505.                do  not search for one and display all product codes in
  506.                hex format.  
  507.  
  508.             ¢1mNoProduct ¢0mAnother synonym for ¢1mNoCodeList¢0m.  
  509.  
  510.             ¢1mNodeList ¢0m(STRING_ARG) Tells Welmat to use Nodelist.library
  511.                for nodelist   accessing.      An    example    of    a
  512.                Nodelist.Library  compatable nodelist processor is IGEN
  513.                by Todd Kover.  
  514.  
  515.             ¢1mOutbound ¢0m(DIR_ARG) Specify the default outbound  directory
  516.                for all  slaves  and  sessions.    Any  scanning of the
  517.                outbound  queue  will  be  done  with   this   outbound
  518.                directory.  
  519.  
  520.             ¢1mProductList ¢0mSynonym for ¢1mCodeList¢0m.  
  521.  
  522.             ¢1mQuantum  ¢0m(NUMBER_ARG)  Specifies the time between outbound
  523.                scheduler events in seconds.  This is used  for  'Poll'
  524.                (Call  NoWait)  events  as  well  as scheduling between
  525.  
  526.  
  527.                                       -8-
  528.  
  529.  
  530.      WELMAT                     Reference Manual               Version 0.47
  531.  
  532.  
  533.                multiple events submitted to welmat  all  at  the  same
  534.                time.  
  535.  
  536.             ¢1mQueueDir    ¢0m(DIR_ARG)    Specify   the   directory   where
  537.                Flow.Library will keep all it's #?.FLOW files 
  538.  
  539.             ¢1mSysop ¢0m(STRING_ARG) Specifies the name of the operator that
  540.                will  be  placed  into  incoming  and  outgoing  YooHoo
  541.                packets.  This field is limited to 19 characters in the
  542.                YooHoo packet.  
  543.  
  544.             ¢1mSystem  ¢0m(STRING_ARG) Specifies the name of the system that
  545.                will  be  placed  into  incoming  and  outgoing  YooHoo
  546.                packets.  This field is limited to 59 characters in the
  547.                YooHoo packet.  
  548.  
  549.             ¢1mStatusLevel  ¢0m(NUMBER_ARG)  Specifies  the  default  status
  550.                level that will be used for un-occupied slaves in their
  551.                status windows (files.) 
  552.  
  553.             ¢1mWelcome ¢0m(STRING_ARG) Specifies the default welcome message
  554.                for all slaves.  
  555.  
  556.        LINE CONFIGURATION 
  557.  
  558.                The line configuration sections are  bracketed  by  the
  559.           keywords ¢1mModem  ¢0mand  ¢1mEndModem  ¢0mkeywords.   The ¢1mModem ¢0mkeyword
  560.           takes a single argument:  a  number  representing  the  line
  561.           number.  The modem configuration section continues until the
  562.           ¢1mEndModem ¢0mkeyword is reached.  The keywords between these two
  563.           define  the parameters for a particular modem connected to a
  564.           particular communications device.  Furthermore, this section
  565.           describes if and how a seperate process will be  spawned  to
  566.           deal  with that communication device (there is no reason why
  567.           a slave to recieve mail via a TCP  or  DNet  channel,  or  a
  568.           bridgeboard exchange  could  not  written).    This addition
  569.           process is known as a ¢1mSlave¢0m.  Welmat Slaves currently  share
  570.           the  same  loaded  binary  with  the  MCP, may change in the
  571.           future.  In particular an  external  program,  and  a  slave
  572.           tailored   to  do  a  specific  subset  of  protocols  might
  573.           eventually exist.  
  574.  
  575.                Several of the parameters which welmat  wants  to  know
  576.           about  to  send  to  the  modem interpret certain characters
  577.           specially in order to allow carriage returns and DTR control
  578.           to be done inline.  Any of these  characters  may  have  its
  579.           special  meaning  removed by preceeding it with a backslash.
  580.           (Note that the configuration file compiler also puts special
  581.           meaning on the backslash, so the the backslash  will  itself
  582.           need  to  be escaped.) Parameters to which this applies will
  583.           be noted with an asterisk (*) The following  characters  are
  584.           interpreted: 
  585.  
  586.               ^ raise DTR 
  587.               v drop DTR (see notes under UseDTR) 
  588.               ~ 1/4 second pause 
  589.               ` 1/16 second pause 
  590.               | carriage return 
  591.  
  592.  
  593.                                       -9-
  594.  
  595.  
  596.      WELMAT                     Reference Manual               Version 0.47
  597.  
  598.  
  599.  
  600.  
  601.        MODEM KEYWORDS 
  602.  
  603.             ¢1mAnswer  ¢0m(STRING_ARG)*  The  string to send to the modem to
  604.                cause it to  answer  when  the  slave  detects  a  ring
  605.                string.  (Usually "ATA|") 
  606.  
  607.             ¢1mAtten  ¢0m(STRING_ARG)*  The  string  to send to the modem to
  608.                make sure that it is there.  This should cause a string
  609.                recognised as a ¢1mPrompt ¢0mto  be  returned.    Default  is
  610.                "AT|" 
  611.  
  612.             ¢1mBaud ¢0mSynonym for ¢1mBaudRate¢0m.  
  613.  
  614.             ¢1mBaudRate  ¢0m(NUMBER_ARG)  Specifies  a  baud rate which this
  615.                slave will use to talk to the  modem.    Specifies  the
  616.                baud  rate  at  which  this slave will remain at if the
  617.                baud rate is "locked."  
  618.  
  619.             ¢1mBBSBanner ¢0m(STRING_ARG) This is a string that  is  sent  to
  620.                the  user after they hit escape twice in order to enter
  621.                the BBS. This is to let them know that they hit  escape
  622.                in case the BBS loading takes a while.  
  623.  
  624.             ¢1mBBSTimeout  ¢0m(NUMBER_ARG)  This is the number of seconds to
  625.                wait before 'assuming' that the caller is a BBS caller,
  626.                and to drop to the BBS. The default is '0' which  means
  627.                that it will never make such an assumption.  
  628.  
  629.             ¢1mBBSExecute  ¢0m(STRING_ARG)  Specifies  a  program  that this
  630.                slave will Execute() to spawn a BBS program.   As  with
  631.                Login,  many  '%s'  style  substitutions  are possible.
  632.                Please see the section in the manual for 'SmartRun'.  
  633.  
  634.             ¢1mBufferSize ¢0m(NUMBER_ARG) Size  of  the  recieve  buffer  to
  635.                use.  Default is 1k.  
  636.  
  637.             ¢1mConnectPause  ¢0m(NUMBER_ARG) Specifies the number of seconds
  638.                the slave will wait after receiving the connect message
  639.                before it will proceed.  This  setting  is  usefull  if
  640.                your  modem  does  not  assert  DCD  immediately  after
  641.                connecting.  (e.g. the 1680) 
  642.  
  643.             ¢1mConnectWait ¢0m(NUMBER_ARG) The number of seconds to wait for
  644.                the connect message.  This value should be greater than
  645.                the  timeout  of  the  modem  (value  of  S7  on  hayes
  646.                compatible)  so  that  the  modem  will  return  a  "NO
  647.                CARRIER"-like  message  before  the  slave  times  out.
  648.                Failure  to configure this properly previously resulted
  649.                in the message "Strange Problem".  The error message is
  650.                now more meaningfull.  
  651.  
  652.             ¢1mDevice ¢0m(STRING_ARG) The name of the exec  device  to  use.
  653.                (default "serial.device") 
  654.  
  655.             ¢1mDeviceUnit ¢0m(NUMBER_ARG) The unit of the device to use.  
  656.  
  657.  
  658.  
  659.                                       -10-
  660.  
  661.  
  662.      WELMAT                     Reference Manual               Version 0.47
  663.  
  664.  
  665.             ¢1mDial  ¢0m(STRING_ARG)* The string which should be prefixed to
  666.                a number to dial it.  
  667.  
  668.             ¢1mEndSessionInit ¢0m(Special Case) Not  really  a  modem  verb.
  669.                See ¢1mSessionInit¢0m" below.  
  670.  
  671.             ¢1mHangup  ¢0m(STRING_ARG)* The string which the slave will send
  672.                to the modem to get it to hangup.  
  673.  
  674.             ¢1mInit ¢0m(STRING_ARG)* The string which the slave will send to
  675.                the modem to initialise it and  before  every  outgoing
  676.                call.   The  string  recognized  as the prompt (Usually
  677.                "OK") should result.  modem from this command.  
  678.  
  679.             ¢1mInitLoop ¢0m(NUMBER_ARG) This is the number of times the init
  680.                string will be attempted.  This keyword in  conjunction
  681.                with  InitWait will allow the initialization to be more
  682.                robust.  
  683.  
  684.             ¢1mInitWait ¢0m(NUMBER_ARG) This is the  number  of  seconds  to
  685.                wait before trying to send the init string again.  
  686.  
  687.             ¢1mLaunch ¢0m(NO_ARG) Specifies that this slave should be active
  688.                and able to dial out.  
  689.  
  690.             ¢1mLockBaud  ¢0m(NO_ARG)  Specifies  that  the  slave should not
  691.                physically change the baud rate when  it  receives  the
  692.                connect message.   The computer - modem interface speed
  693.                is "locked" at the default baud rate.  
  694.  
  695.             ¢1mLogin ¢0m(STRING_ARG) Specifies  a  program  that  the  slave
  696.                should  run  the  to authenticate the login and preform
  697.                appropriate action.  Special  '%'  style  substitutions
  698.                are  available  within  the  string that are documented
  699.                later in the manual under "SmartRun".  
  700.  
  701.             ¢1mLogWindow ¢0mSame as for the  global  configuration  section,
  702.                only  this  specifies  the window for any slave started
  703.                for this modem.  Sessions started on this modem may  or
  704.                may  not  inherit this value from their slave --- if it
  705.                is wished that they do, it must be set explicitely with
  706.                a ¢1mSessionInit¢0m" script.  
  707.  
  708.             ¢1mModemName ¢0m(STRING_ARG) Just  a  comment  that  is  printed
  709.                whenever this welmat program is run.  
  710.  
  711.             ¢1mNo7Wire  ¢0m(NO_ARG)  Specifies  that  7 wire (hard ware flow
  712.                control mode) should not be set.  (default) 
  713.  
  714.             ¢1mNoBBS ¢0m(NO_ARG) Specifies that callers may not  drop  to  a
  715.                BBS. (default) 
  716.  
  717.             ¢1mNoCalls  ¢0m(NO_ARG) Specifies that the telephone will not be
  718.                answered.  
  719.  
  720.             ¢1mNoDTR ¢0m(NO_ARG) Specifies that no attempt to change the DTR
  721.                line should be done.    This  option  is  required  for
  722.                devices  such  as  the  Commodore 7-Port board, and the
  723.  
  724.  
  725.                                       -11-
  726.  
  727.  
  728.      WELMAT                     Reference Manual               Version 0.47
  729.  
  730.  
  731.                Supra serial device which do not support any method  of
  732.                controlling the  DTR  line.    Usage of the translation
  733.                character that control the DTR line  will  cause  error
  734.                message.  
  735.  
  736.             ¢1mNoLaunch  ¢0m(NO_ARG)  Specifies that this slave is NOT to be
  737.                active.  
  738.  
  739.             ¢1mNoLockBaud ¢0m(NO_ARG) Specifies that the  baud  rate  should
  740.                change  to  reflect the actual connect speed (default).
  741.                The manner in which it changes  is  determined  by  the
  742.                'Response' keywords.  
  743.  
  744.             ¢1mNoLogin  ¢0m(NO_ARG)  Specifies  that  this  slave  will  not
  745.                collect characters from the caller to pass to  a  login
  746.                program.  
  747.  
  748.             ¢1mNoSlow ¢0mSynonym for ¢1mNoSlowModem 
  749.  
  750.             NoSlowModem  ¢0m(NO_ARG)  Specifies  that  a 1/6 second pause
  751.                between command characters should not be done.  
  752.  
  753.             ¢1mNoWaZoo ¢0m(NO_ARG) Specifies  that  this  slave  should  not
  754.                attempt,   nor  respond  to  the  WaZoo  identification
  755.                protocol.  
  756.  
  757.             ¢1mOffHook ¢0m(STRING_ARG)* The string  to  send  to  cause  the
  758.                telephone to go off hook.  Welmat currently never wants
  759.                to do this.  
  760.  
  761.             ¢1mPostDial  ¢0m(STRING_ARG)* The string that should be appended
  762.                to the number to dial it.    Default  is  just  "|"  (a
  763.                carriage return) 
  764.  
  765.             ¢1mPrompt ¢0m(STRING_ARG) The string to expect from the modem to
  766.                indicate  that  the  previous command execute properly.
  767.                Default is "OK".  
  768.  
  769.             ¢1mReceiveCalls ¢0m(NO_ARG) Allows  this  slave  to  answer  the
  770.                telephone.  This will also launch the slave.  
  771.  
  772.             ¢1mResponseWait  ¢0m(NUMBER_ARG)  The  number of seconds to wait
  773.                for non-connect type responses.  
  774.  
  775.             ¢1mSessionInit ¢0m(Special case) This introduces  a  section  of
  776.                modem   specific   session   initialization   commands.
  777.                Commands  between  this  statement  and  the  following
  778.                ¢1mEndSessionInit  ¢0mcommand  will  be  run  for any session
  779.                structure initialised for this modem.    Most  commands
  780.                that  are valid in the global configuration section are
  781.                valid here,  only  they  apply  to  only  this  session
  782.                structure being    initialised.        As   well,   any
  783.                configuration option available within call  events  are
  784.                enabled.   Please  also see the description for 'WCTL'.
  785.                All commands are the same as for WCTL only they do  not
  786.                have a  '-'  character  in front of the arguments.  For
  787.                sample, one would use the option ¢1mYesFREQ¢0m" to  turn  the
  788.                request  bit  on  to  tell  the remote that you support
  789.  
  790.  
  791.                                       -12-
  792.  
  793.  
  794.      WELMAT                     Reference Manual               Version 0.47
  795.  
  796.  
  797.                inbound file requests.    Setting  up  a  seperate  log
  798.                window  for the slave and associated sessions is easily
  799.                done here, as is changing the inbound directory.  
  800.  
  801.             ¢1mSlow ¢0mSynonym for ¢1mSlowModem¢0m.  
  802.  
  803.             ¢1mSlowModem ¢0m(NO_ARG) Specifies that  the  modem  can't  deal
  804.                with commands  at  the  specified baud rate.  The slave
  805.                will insert a 1/16 second pause  between  each  command
  806.                character sent.  
  807.  
  808.             ¢1mStatusWindow  ¢0m(STRING_ARG) A file name to which this slave
  809.                should send its verbose output.  This is usually a CON:
  810.                window.   The  default   is   "CON:20/150/600/40/Welmat
  811.                Status"  A  ConMan  CND: device that doesn't block when
  812.                the user types into the window might  also  be  a  good
  813.                idea.  
  814.  
  815.             ¢1mUnit ¢0mSynonym for ¢1mDeviceUnit¢0m.  
  816.  
  817.             ¢1mUse7Wire  ¢0m(NO_ARG)  Set  the  SERF_7WIRE  bit  on  in  the
  818.                OpenDevice call to cause RTS/CTS hardware flow  control
  819.                to be enabled.  
  820.  
  821.             ¢1mUseDSB  ¢0m(NO_ARG)  The  device is an ASDG Dual Serial Board
  822.                driver (or compatible).   An  SIOCMD_SETCTRLLINES  (hex
  823.                0x10)  command  will be used to chnage the state of the
  824.                DTR wire.  This method is supported by the PDIO  serial
  825.                device,  the  cmiser.device for the CMI MultiPort Board
  826.                (the company is now defunct, but there are still  quite
  827.                a  few boards out there), and the csaser.device for the
  828.                CSA 40/4 Magnum.  
  829.  
  830.             ¢1mUseDTR ¢0m(NO_ARG) The slave will diddle  with  the  hardware
  831.                directly  to  change  the  state of the DTR line on the
  832.                internal serial port.  Sending characters to the  modem
  833.                while  the DTR line is down has been known to crash the
  834.                serial.device.  Hopefully, Commodore will update  their
  835.                serial.device  in  the  future  to use the SETCTRLLINES
  836.                method as used by the ASDG board, and many other serial
  837.                devices.  
  838.  
  839.             ¢1mWaZoo ¢0m(NO_ARG) This slave will attempt and respond to  the
  840.                WaZoo identification protocol.  Default.  
  841.  
  842.             ¢1mWelcomeMessage  ¢0m(STRING_ARG) Overides the default (global)
  843.                welcome message for this line only.  
  844.  
  845.             ¢1mYesBBS ¢0m(NO_ARG) Allows this slave to spawn the BBS.  
  846.  
  847.             ¢1mYesLogin ¢0m(NO_ARG) This slave will collect  characters  and
  848.                invoke a login program.  
  849.  
  850.        RESPONSE KEYWORDS 
  851.  
  852.                The response keywords control how Welmat interprets the
  853.           results coming  back to from the modem.  There are currently
  854.           six response types: 
  855.  
  856.  
  857.                                       -13-
  858.  
  859.  
  860.      WELMAT                     Reference Manual               Version 0.47
  861.  
  862.  
  863.             #### A number, a  response  that  matches  the  string  is
  864.                considered to be a connect message and the baud rate is
  865.                assumed to be  given  by  the  number.   i.e.  ¢1mResponse
  866.                19200 ¢0m"¢1mCONNECT FAST¢0m" would set the baud rate  to  19.2k
  867.                in response to a Telebit modem connecting in PEP mode.  
  868.  
  869.             ¢1mfind  ¢0mThis  response is the second form of connect message
  870.                -- rather than having to specify the baud rate for each
  871.                possible connect message, if the connect message itself
  872.                contains the baud, this allows one to collect the  baud
  873.                rate from the response string itself.  The baud rate is
  874.                extracted  with  a  C  library function, sscanf(3), and
  875.                most formats that it understands are  possible  in  all
  876.                response strings.  i.e.  ¢1mResponse find ¢0m"¢1mCONNECT ¢0m%¢1md¢0m" 
  877.  
  878.             ¢1mbusy ¢0mWhile dialing, if Welmat receives this response, then
  879.                it  assumes that the number was busy, and it will retry
  880.                later.  
  881.  
  882.             ¢1mring ¢0mIf this string is  received  while  in  answer  mode,
  883.                Welmat will send the answer string (defined above), and
  884.                wait  for  another  response  (hopefully a connect type
  885.                response) 
  886.  
  887.             ¢1mline  ¢0mThe  detection  of  this  response  from  the  modem
  888.                indicates  that  something  is  probably wrong with the
  889.                telephone line and/or modem.  Further  dialing  is  not
  890.                likely to be terribly productive.  
  891.  
  892.             ¢1mmaid  ¢0mThis  response  verb  is named due to a former NC of
  893.                fidonet 1:163/ -- he had his maid trained to reset  his
  894.                PC for  him if it went awry.  Other sysops may not have
  895.                such talented help, and one would might expect a nearby
  896.                maid to pickup a ringing  data  line  if  the  computer
  897.                doesn't respond.  
  898.  
  899.                     The short of this, is that receipt of this type of
  900.                response  means  that while everything is probably okay
  901.                here, the other end may not be quite alive.  This  fact
  902.                is  usually related back to the (external) scheduler so
  903.                that it can mark a node as un-dialable after a  certain
  904.                number of tries.  
  905.  
  906.  
  907.                The  format  of the Reponse strings is one of the above
  908.           keywords followed by a single argument string to be  matched
  909.           with sscanf(3).    sscanf() is used on all the responses, so
  910.           it is possible to do  various  kinds  of  wildcard  and  the
  911.           like.  Welmat provides the sscanf() call with three pointers
  912.           to integers, the first of which becomes the baud rate in the
  913.           case of  ¢1mfind¢0m."  Assignment suppression (e.g. "%*s" ) should
  914.           be used in most cases.  The author has not yet found a  case
  915.           where this type of thing was needed.  
  916.  
  917.  
  918.        SMARTRUN % SUBSTITUTIONS 
  919.  
  920.  
  921.  
  922.  
  923.                                       -14-
  924.  
  925.  
  926.      WELMAT                     Reference Manual               Version 0.47
  927.  
  928.  
  929.                In  all of the places where an external command is ran,
  930.           there are special % style substitutions that are  available.
  931.           These will be expaned as the need for them come up.  
  932.  
  933.  
  934.             %¢1ma ¢0mThis returns the address of the remote system.  
  935.  
  936.  
  937.             %¢1mb  ¢0mThis  is  replaced  by  the  Modem  to Modem speed (As
  938.                returned   by   the   Response   keywords    in    your
  939.                configuration).   If  you  are  running a locked serial
  940.                port it is very usefull to pass this to a BBS  so  that
  941.                it  can  use  it  to calculate download times and other
  942.                things based on the real baud rate rather than the baud
  943.                rate your serial port is locked at.  
  944.  
  945.  
  946.             %¢1mB ¢0mThis returns the Modem to Computer baud  rate,  and  is
  947.                the  rate  that a BBS would actually change it's serial
  948.                options to.  
  949.  
  950.  
  951.             %¢1md ¢0mThis is replaced  by  the  active  serial  device  name
  952.                (Example 'Serial.device').  
  953.  
  954.  
  955.             %¢1mf  ¢0mThis  is  replaced  by  the serial flags of the active
  956.                device.  
  957.  
  958.  
  959.             %¢1ml ¢0mThis is the Welmat Line Number of the  slave  that  ran
  960.                the command.    This  is  usefull  if  you wish to send
  961.                commands to Welmat that would affect a certain line  as
  962.                Welmat commands are always on a 'per line' basis.  
  963.  
  964.  
  965.             %¢1mr  ¢0mThis  is replaced by the filename (As indicated by the
  966.                remote end) when  used  by  the  WFNotify  keyword  for
  967.                inbound file notification.  
  968.  
  969.  
  970.             %¢1mR  ¢0mThis  is  replaced  by the full pathname of a received
  971.                file when used by the WFNotify keyword for inbound file
  972.                notification.  Note that because of possible  duplicate
  973.                names  on inbound, that the 'FilePart' of this pathname
  974.                may *NOT* be the same as is indicated by %r.  
  975.  
  976.  
  977.             %¢1ms ¢0mThis is replaced by the line of text that was typed  in
  978.                from the user in the LOGIN command.  
  979.  
  980.  
  981.             %¢1mu  ¢0mThis  is  replaced  by  the  unit number of the active
  982.                serial device.  
  983.  
  984.  
  985.             %% This is replaced by a single percent character.  
  986.  
  987.  
  988.  
  989.                                       -15-
  990.  
  991.  
  992.      WELMAT                     Reference Manual               Version 0.47
  993.  
  994.  
  995.           ¢1mWelmat Tools 
  996.  
  997.  
  998.                     ¢0mThere are many different external tools  that  are
  999.                available  for  Welmat  now,  and  more  will  be  made
  1000.                available in the futre.  These tools all have something
  1001.                in common, and that is that they send  messages  to  an
  1002.                already running Welmat program, and interact with it in
  1003.                some way.  
  1004.  
  1005.                     If  you  are  a  simple  point  user, you will not
  1006.                likely have a use for any of these programs.  They  are
  1007.                not required for the use of Welmat, but instead enhance
  1008.                the  control that you have over the program if you wish
  1009.                to take advantage of this control.  
  1010.  
  1011.                     These tools, for the most part, make an assumption
  1012.                that you already have a copy of Welmat  running.    The
  1013.                exception  to  this is Wcompile which is used to set up
  1014.                the data file that Welmat will use when invoked.  
  1015.  
  1016.  
  1017.             ¢1mWABORT 
  1018.  
  1019.                     ¢0mThis command has the function of  requesting  that
  1020.                an already  running Welmat to abort.  In some ways this
  1021.                has a similar function to typing a  ^c  (Control-C)  in
  1022.                the  consol  window  (The  window  you  started  Welmat
  1023.                from).  The command takes two basic forms.   The  first
  1024.                form  is  to  just  run  Wabort  with  no  command line
  1025.                options.  
  1026.                     9.Work:welmat> wabort 
  1027.                This command will signal for Welmat to abort, and  then
  1028.                it  will  exit  with  an  errorlevel  of 0. It does not
  1029.                actually wait for Welmat to fishish aborting before  it
  1030.                continues.  
  1031.                     Waiting for reply 
  1032.                     Result 0 
  1033.  
  1034.                     Welmat, after receiving the command to abort, will
  1035.                exit with an error code of 40 (Abort Requested).  
  1036.  
  1037.                     The  second  form of the Wabort command is to give
  1038.                it a single command line argument.   This  argument  is
  1039.                taken  to  be  the  Error level that you wish Welmat to
  1040.                exit with.  
  1041.                     9.Work:welmat> wabort 5 
  1042.                Wabort will then wait for Welmat to signal that  it  is
  1043.                going  to  Exit.  This  time,  though, rather than just
  1044.                exiting with an error code of 0, Wabort will exit  with
  1045.                the error code that Welmat would have exited with.  
  1046.  
  1047.                     Requesting exit code (5) 5 
  1048.                     Waiting for reply 
  1049.                     Result 40 
  1050.  
  1051.                     As you would expect, if Welmat was just awaiting a
  1052.                command,  the  error code will be 40 (Abort Requested).
  1053.  
  1054.  
  1055.                                       -16-
  1056.  
  1057.  
  1058.      WELMAT                     Reference Manual               Version 0.47
  1059.  
  1060.  
  1061.                If,  however,  you  sent  an  abort  command  juring  a
  1062.                session,  the  result of that session will be returned.
  1063.                This  information  could  prove  usefull  to  an  Abort
  1064.                command that was requested within a Scheduler.  
  1065.  
  1066.                     Welmat, again being given a request to Abort, will
  1067.                now abort  with  the  given error code.  In my example,
  1068.                Welmat would exit with an error code of 5.  
  1069.  
  1070.                     This exchanging of Error levels can  become  quite
  1071.                usefull within  scripts.  If one treats the error codes
  1072.                as Events, rather than errors, one could easily write a
  1073.                script that can easily use this information.   Here  is
  1074.                an  example  (I  myself  use  REXX,  but  any scripting
  1075.                language that lets you branch on error returns will  do
  1076.                the same job) 
  1077.  
  1078.                     /* Welmat V0.43+ Consol Script */ 
  1079.  
  1080.                     options results 
  1081.  
  1082.                     DO FOREVER 
  1083.                       address command 'welmat' 
  1084.                       welerr = RC 
  1085.                       say "Welmat returned with Error Code " welerr 
  1086.                       if welerr = 15 then leave 
  1087.  
  1088.                       if welerr = 55 then do 
  1089.                                address command 'azcomm' 
  1090.                                end 
  1091.  
  1092.                       if welerr = 69 then do 
  1093.                                 address command 'uucico -r1' 
  1094.                                 end end 
  1095.  
  1096.                     Say "That's all for now folks " 
  1097.  
  1098.                     /* End of REXX Example */ 
  1099.  
  1100.                     In  my  example,  I  check  for  3 different error
  1101.                returns, and do three  different  things  depending  on
  1102.                that error code.  
  1103.  
  1104.                     Error  code  15 is the error code that Welmat will
  1105.                return with if you hit a Control-C (^c) in  the  consol
  1106.                window.   If  I  eithor  do  a  'Wabort  15',  or hit a
  1107.                control-C, I want to exit the  script  (leave  in  REXX
  1108.                will  cause  the  script  to  exit  outside of the main
  1109.                loop).  
  1110.  
  1111.                     Error Code 55 is the return that I use if  I  want
  1112.                to run  my Terminal package.  So, if I want to log onto
  1113.                a Local BBS, I just type 'Wabort 55' in a  CLI  window,
  1114.                and my terminal package comes up.  
  1115.  
  1116.                     Error  Code 69 is used in order to do a UUCP call.
  1117.                In a CRON script, someone could run  'Wabort  69',  and
  1118.                this would cause Welmat to exit, Run UUCICO to send any
  1119.  
  1120.  
  1121.                                       -17-
  1122.  
  1123.  
  1124.      WELMAT                     Reference Manual               Version 0.47
  1125.  
  1126.  
  1127.                out-standing  UUCP  mail,  and then automatically bring
  1128.                Welmat back up.  
  1129.  
  1130.  
  1131.  
  1132.             ¢1mWCOMPILE 
  1133.  
  1134.                ¢0mWcompile takes four different forms: 
  1135.  
  1136.                   1) wcompile ?  
  1137.                   2) wcompile 
  1138.                   3) wcompile <config file> <data File> 
  1139.                   4) wcompile -C <config file> 
  1140.  
  1141.                     Wcompile will basically take a text  config  file,
  1142.                and  transform it into a data file that Welmat will use
  1143.                directly.  By default, wcompile will use  the  filename
  1144.                'Welmat.cfg'  as  it's  config file, and Welmat.data as
  1145.                it's Data file.   If  the  config  file  is  not  given
  1146.                directly,  the  file  'Welmat.cfg' will first be looked
  1147.                for in the current directory.  If it is not  there,  it
  1148.                will tell  you  it  could  not find the file.  The data
  1149.                file is put in the current directory, or into  whatever
  1150.                filename  is  pointed to by <data file> if you give the
  1151.                command both arguments.  
  1152.  
  1153.                     The '?' option will list out all the commands that
  1154.                may be placed within a configuration file.  
  1155.  
  1156.                     A config file is basically a TEXT file that can be
  1157.                created with any text editor.  The  Keywords  contained
  1158.                within  this  config file are explained in another part
  1159.                of the manual.  One thing to make sure is that the last
  1160.                line of the file actually has a 'LineFeed' on it.  Some
  1161.                text editors don't properly terminate the file, and you
  1162.                must leave a Blank or Comment line at the  end  of  the
  1163.                file.  
  1164.  
  1165.                     The  Data  file  is a binary representation of the
  1166.                config file, and is actually a 'Welmat Program'. Making
  1167.                this  file  a  program,  rather  than  just  a   simple
  1168.                structure,  allows for quite a bit more configurability
  1169.                than what would traditionally be able to be found in  a
  1170.                configuration file.  An example would be for a point to
  1171.                put  a  'Call'  event  into the Config file so that one
  1172.                would be able  to  just  type  'Welmat'  and  it  would
  1173.                automatically  call the Bossnode, and pick up the mail.
  1174.                The Current Wcompile program does not generate code for
  1175.                such an event , but this type of thing could easily  be
  1176.                done eithor in the future, or by a third party author.  
  1177.  
  1178.  
  1179.  
  1180.             ¢1mWCTL 
  1181.  
  1182.  
  1183.                     ¢0mWhile previous (And versions after) will allow for
  1184.                line  parameters  and  global parameters to be changed,
  1185.  
  1186.  
  1187.                                       -18-
  1188.  
  1189.  
  1190.      WELMAT                     Reference Manual               Version 0.47
  1191.  
  1192.  
  1193.                there are problems with this and this version  of  WCTL
  1194.                does not allow for this.  
  1195.  
  1196.  
  1197.  
  1198.                  -¢1mcall  1¢0m:¢1m1¢0m/¢1m1¢0m.¢1m1  ¢0mA call statement will cause welmat to
  1199.                     dial the node given.  Welmat will first attempt to
  1200.                     look up the node in the  nodelist  (If  provided),
  1201.                     and will then use any additional information given
  1202.                     in the call statement.  Any of the call parameters
  1203.                     can  be used in association with a CALL statement.
  1204.                     Here is a simple example: 
  1205.  
  1206.                          1>    Wctl    -call    1:163/115     -inbound
  1207.                          work:andrew/inbound      -number     867-5309
  1208.                          -password babe 
  1209.  
  1210.  
  1211.                          This statement would set up  CALL  where  the
  1212.                     inbound  directory,  the  phone  number,  and  the
  1213.                     session password are defined.  Welmat  would  dial
  1214.                     the  number  867-5309,  and  if a session occured,
  1215.                     would use the password 'babe', and  send  all  the
  1216.                     files  destined for noed 1:163/115. If any inbound
  1217.                     files were received, these would  be  placed  into
  1218.                     'Work:andrew/inbound'.    Please    note:    These
  1219.                     parameters are  call  specific.    You  can   have
  1220.                     several  calls, and have a different Phone number,
  1221.                     password, inbound directory, etc for EACH separate
  1222.                     call.  
  1223.  
  1224.  
  1225.                  -¢1mnoWait ¢0mThis keyword sets up a flag to say that  WCTL
  1226.                     will  not  wait for the result of the command, and
  1227.                     will instead return a 'Welmat Program ID'.  
  1228.  
  1229.  
  1230.                  -¢1mpoll 1¢0m:¢1m1¢0m/¢1m1¢0m.¢1m1 ¢0mA POLL is essentially the same as CALL,
  1231.                     but unlike with a call, wctl will not wait for the
  1232.                     result of the command it sent to Welmat.  This  is
  1233.                     very  usefull  if  you  want to set Welmat to do a
  1234.                     task, but don't care about the outcome.  When  you
  1235.                     send a POLL to welmat, it will continue to execute
  1236.                     the  POLL  until  it  has completed without errors
  1237.                     (Result 0 from the session).  Here is an example" 
  1238.  
  1239.                          1> Wctl -poll 1:163/109 -poll 1:163/138 -poll
  1240.                          1:163/99 
  1241.  
  1242.                          This  would  send   three   individual   call
  1243.                     commands  to  Welmat.  It  would  then  one by one
  1244.                     attempt to call these three sites.  If  it  dialed
  1245.                     1:163/109  and it was BUSY, the call command would
  1246.                     not be complete, and it would try again later.  If
  1247.                     it called 1:163/138 and did a complete session, it
  1248.                     would no longer call that node, but would continue
  1249.                     with the remaining 2 nodes until each of them  had
  1250.                     completed a successfull session.  
  1251.  
  1252.  
  1253.                                       -19-
  1254.  
  1255.  
  1256.      WELMAT                     Reference Manual               Version 0.47
  1257.  
  1258.  
  1259.  
  1260.  
  1261.                  -¢1mthere  ¢0mThis  keyword  tests  if Welmat is there, and
  1262.                     returns 0 if Welmat is already running, or a non-0
  1263.                     value if it is not running.  
  1264.  
  1265.  
  1266.                  -¢1museline ¢0mThis keyword sets up the  default  line  for
  1267.                     call events.   The default of line -1 means to try
  1268.                     the first available line.  
  1269.  
  1270.  
  1271.                  -¢1mWait ¢0mSynonym for -YesWait 
  1272.  
  1273.  
  1274.                  -¢1myesWait ¢0mThis keyword sets up a flag to say that WCTL
  1275.                     will wait for  the  result  of  the  command,  and
  1276.                     return this as the result code for WCTL.  
  1277.  
  1278.  
  1279.  
  1280.  
  1281.                  Call Parameters 
  1282.  
  1283.  
  1284.                  -¢1mComment ¢0m<¢1mstring¢0m> A comment which is displayed on the
  1285.                     CLI  window  that  welmat  was  ran from when this
  1286.                     welmat program is ran.  
  1287.  
  1288.  
  1289.                  -¢1mWFNotify ¢0m<¢1mstring¢0m> Sets the program to run after  the
  1290.                     receipt of  an  inbound  file.    As  well  as the
  1291.                     standard '%'  style  substitutions,  '%r'  is  the
  1292.                     filename as it was identified from the remote end,
  1293.                     and  '%R'  is the actual full pathname to the file
  1294.                     on the disk.  
  1295.  
  1296.  
  1297.                  -¢1mSysop ¢0m<¢1mstring¢0m> Sets the 'Sysop' name to be  used  in
  1298.                     the YooHoo handshake.  
  1299.  
  1300.  
  1301.                  -¢1mSystem  ¢0m<¢1mstring¢0m> Sets the name the system identifies
  1302.                     itself as in the YooHoo handshake.  
  1303.  
  1304.  
  1305.                  -¢1mMaxSendPri ¢0mSynonym for MaxPri.  
  1306.  
  1307.  
  1308.                  -¢1mMinSendPri ¢0m<¢1mNumber¢0m> Synonym for MinPri.  
  1309.  
  1310.  
  1311.                  -¢1mLogWindow ¢0m<¢1mstring¢0m> Sets the  filehandle  for  a  log
  1312.                     window.  
  1313.  
  1314.  
  1315.                  -¢1mPreRun  ¢0m<¢1mstring¢0m>  This  is  the program to run after
  1316.                     getting connected but before the optional  Fidonet
  1317.  
  1318.  
  1319.                                       -20-
  1320.  
  1321.  
  1322.      WELMAT                     Reference Manual               Version 0.47
  1323.  
  1324.  
  1325.                     session.   All  the  standard  SmartRun  '%' style
  1326.                     substitutions apply.  
  1327.  
  1328.  
  1329.                  -¢1mPostRun ¢0m<¢1mstring¢0m> ¢1mThis ¢0msession.    All  the  standard
  1330.                     SmartRun '%' substitutions apply.  
  1331.  
  1332.  
  1333.                  -¢1mMaxPri  ¢0m<¢1mNumber¢0m>  ¢1msets  ¢0ma  priority higher than this
  1334.                     number will not actually be sent.  This is usually
  1335.                     set to +128 to allow all files to be sent.  
  1336.  
  1337.  
  1338.                  -¢1mMinPri ¢0m<¢1mNumber¢0m> Minimum priority  to  send  a  file.
  1339.                     Files below  this  number will not be sent.  Valid
  1340.                     values are -128 to +127.  One  would  usually  set
  1341.                     this  to  -127  as  the default in the config, and
  1342.                     then set it to some higher value (I personally use
  1343.                     0) when dialing out.    If  0  is  used,  positive
  1344.                     numbers  become  similar to the concept of 'Crash'
  1345.                     and negative numbers are similar to the concept of
  1346.                     HOLD.  
  1347.  
  1348.  
  1349.                  -¢1mNoFreq¢0m|-¢1mYesFreq ¢0mSets  up  whether  the  bit  in  the
  1350.                     YooHoo   header  will  show  that  we  allow  File
  1351.                     requests or not.  
  1352.  
  1353.  
  1354.                  -¢1mNoFido¢0m|-¢1mYesFido ¢0mSets whether a fidonet session  will
  1355.                     actually occur.   This is usefull when you wish to
  1356.                     just use the PreRun or PostRun keywords  and  have
  1357.                     welmat  dial on behalf of another program (Such as
  1358.                     is done with UUCP outbound calls currently).  
  1359.  
  1360.  
  1361.                  -¢1mNozedzap¢0m|-¢1mYeszedzap ¢0mSets whether we  wish  to  allow
  1362.                     ZedZap  transfers under the YooHoo header (doesn't
  1363.                     currently do anything).  
  1364.  
  1365.  
  1366.                  -¢1mNoFTS7¢0m|-¢1mYesFTS7 ¢0msets whether we wish to use FTS-0007
  1367.                     (SeaLink) style transfers.  
  1368.  
  1369.  
  1370.                  -¢1mnumber ¢0m<¢1mnumber¢0m>  Sets  the  phone  number  for  this
  1371.                     call.  
  1372.  
  1373.  
  1374.                  -¢1mpasswd ¢0m<¢1mPASSWD¢0m> Synonym for -password 
  1375.  
  1376.  
  1377.                  -¢1mpassword ¢0m<¢1mPASSWD¢0m> Sets the password for this call.  
  1378.  
  1379.  
  1380.                  -¢1mnopickup¢0m|-¢1myespickup  ¢0mSets  whether we want to pickup
  1381.                     files, or whether we just want to  send  and  then
  1382.                     hang up.  
  1383.  
  1384.  
  1385.                                       -21-
  1386.  
  1387.  
  1388.      WELMAT                     Reference Manual               Version 0.47
  1389.  
  1390.  
  1391.  
  1392.  
  1393.                  -¢1mnoreq¢0m|-¢1myesreq  ¢0mSets  whether we will attempt to send
  1394.                     any file requests we have pending for the site  we
  1395.                     are calling.  
  1396.  
  1397.  
  1398.                  -¢1mnoWaZoo¢0m|-¢1myesWaZoo  ¢0mSets whether we should try to use
  1399.                     the WaZoo handshake (YooHoo) when calling.  
  1400.  
  1401.  
  1402.                  -¢1mhost  1¢0m:¢1m1¢0m/¢1m1¢0m.¢1m1  ¢0mChanges  the  address   we   identify
  1403.                     ourselves as.  
  1404.  
  1405.  
  1406.                  -¢1minbound ¢0m<¢1mdir¢0m> Changes the inbound directory.  
  1407.  
  1408.  
  1409.                  -¢1moutbound  ¢0m<¢1mdir¢0m>  Changes the Outbound directory (Use
  1410.                     this one with Caution. It is often best to  always
  1411.                     use   the   same   outbound   directory   for  all
  1412.                     sessions).  
  1413.  
  1414.  
  1415.                  -¢1mDisplayLogLevel ¢0m<¢1mlevel¢0m> Synonym for displaylevel.  
  1416.  
  1417.  
  1418.                  -¢1mLogFileLevel ¢0m<¢1mlevel¢0m> Synonym for -loglevel 
  1419.  
  1420.  
  1421.                  -¢1mloglevel ¢0m<¢1mlevel¢0m> Change the output file log level.  
  1422.  
  1423.  
  1424.                  -¢1mdisplaylevel ¢0m<¢1mlevel¢0m> Change the level of  output  on
  1425.                     our screen.  
  1426.  
  1427.  
  1428.                  -¢1mstatuslevel  ¢0m<¢1mlevel¢0m>  Change the level of output for
  1429.                     the slave window.  
  1430.  
  1431.  
  1432.                  -¢1mlogfile ¢0m<¢1mfile¢0m> Change the LogFile name.  
  1433.  
  1434.  
  1435.                  -¢1mlogfile ¢0m<¢1mlevel¢0m> Change the level of output  for  the
  1436.                     log window.  
  1437.  
  1438.                  ERROR CODES 
  1439.  
  1440.                     The  various  tools return error codes to indicate
  1441.                     their relative   success.      These    will    be
  1442.                     standardized more in the future, but a preliminary
  1443.                     list is as follows: 
  1444.  
  1445.                      0 - OK 
  1446.                      1 - No Call 
  1447.                      2 - Human 
  1448.                      3 - Login 
  1449.  
  1450.  
  1451.                                       -22-
  1452.  
  1453.  
  1454.      WELMAT                     Reference Manual               Version 0.47
  1455.  
  1456.  
  1457.                      5 - Busy Signal Detected on Call.  
  1458.                      10 - Bad Session 
  1459.                      15 - Bad Line.  
  1460.                      20 - Not There 
  1461.                      35 - Bad Configuration.  
  1462.                      40 - Aborted 
  1463.  
  1464.  
  1465.             ¢1mWNotify 
  1466.  
  1467.                   ¢0mWNotify  <Config>  <Filename>  <FullPath> <NodeName>
  1468.                   <Line> 
  1469.  
  1470.  
  1471.                     As well as the above, WNotify will output a bit of
  1472.                logging to the standard output that is best to redirect
  1473.                to a logfile.  As an example of how to set  it  up  for
  1474.                use within Welmat, the following command is used inside
  1475.                of  a  'SessionInit/EndSessionInit' block in the config
  1476.                file: 
  1477.  
  1478.                ¢1mWFNotify   ¢0m"¢1mrun   welmat¢0m:¢1mbin¢0m/¢1mwnotify   ¢0m>>¢1mwelmat¢0m:¢1mreq¢0m.¢1mlog
  1479.                welmat¢0m:¢1mwnotify¢0m.¢1mcfg ¢0m%¢1mr ¢0m%¢1mR ¢0m\"%¢1ma¢0m\" %¢1ml¢0m" 
  1480.  
  1481.  
  1482.                     WNotify  is  a  very simple program that will take
  1483.                the filename given to it on the command line  and  will
  1484.                run  other  programs  depending on a series of patterns
  1485.                given to if in the config file.   Here  is  an  example
  1486.                config file: 
  1487.  
  1488.                #?.¢1mreq ¢0m#¢1mwelmat¢0m:¢1mlist¢0m/¢1mokfile¢0m.¢1mls welmat¢0m:¢1mlist¢0m/¢1mFailREQ¢0m.¢1mTxt 
  1489.                ¢0m#?  ¢1mfilenote ¢0m%¢1mR ¢0m"¢1mFile¢0m:%¢1mr From¢0m:%¢1ma Line¢0m:%¢1ml¢0m" 
  1490.                ;#?.¢1mpkt  run  sys¢0m:¢1mrexxc¢0m/¢1mrx ¢0m"¢1maddress ¢0m'¢1mConfMail¢0m' '¢1mTOSSPKT
  1491.                ¢0m%¢1mR¢0m'" 
  1492.                ;#?.(¢1mMO¢0m?|¢1mTU¢0m?|¢1mWE¢0m?|¢1mTH¢0m?|   ¢1mrun    sys¢0m:¢1mrexxc¢0m/¢1mrx
  1493.                ¢0m"¢1maddress ¢0m'¢1mConfMail¢0m' '¢1mTOSSARC ¢0m%¢1mR¢0m'" 
  1494.                ; ¢1mThis is a comment 
  1495.  
  1496.  
  1497.                     ¢0mThe   patterns  are  any  that  are  allowable  in
  1498.                AmigaDos 2.04 (1.3 users cannot use patterns  and  must
  1499.                use hard-coded names).  The second argument on the line
  1500.                is the command to run.  
  1501.  
  1502.                     If  the  command  starts  with  a '#' symbol, this
  1503.                instead of running the command does the  internal  file
  1504.                request handling.    In  this  mode  the first argument
  1505.                given is the name of a text file that will  have  lines
  1506.                of  the  form  "<Filename>  <Pathname>", and the second
  1507.                argument is the  name  of  the  file  to  send  if  the
  1508.                requested file could not be found.  
  1509.  
  1510.                     Special  '%'  style substitutions are available on
  1511.                the command line for commands to be ran: 
  1512.  
  1513.                %r - Filename 
  1514.                %R - Pathname 
  1515.  
  1516.  
  1517.                                       -23-
  1518.  
  1519.  
  1520.      WELMAT                     Reference Manual               Version 0.47
  1521.  
  1522.  
  1523.                %a - Address 
  1524.                %l - Line Number 
  1525.  
  1526.  
  1527.  
  1528.  
  1529.  
  1530.  
  1531.  
  1532.  
  1533.  
  1534.  
  1535.  
  1536.  
  1537.  
  1538.  
  1539.  
  1540.  
  1541.  
  1542.  
  1543.  
  1544.  
  1545.  
  1546.  
  1547.  
  1548.  
  1549.  
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.  
  1560.  
  1561.  
  1562.  
  1563.  
  1564.  
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570.  
  1571.  
  1572.  
  1573.  
  1574.  
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581.  
  1582.  
  1583.                                       -24-
  1584.  
  1585.  
  1586.      WELMAT                     Reference Manual               Version 0.47
  1587.  
  1588.  
  1589.           ¢1mFlow Tools 
  1590.  
  1591.                  ¢0mFlow.library will soon be replaced by a  more  easily
  1592.                used  library called XferQ.library. The next release of
  1593.                Welmat will likely include  replacements  for  all  the
  1594.                Flow  tools  that  access  the new XferQ.libary. As has
  1595.                been   mentioned   elsewhere,   though,   XferQ.library
  1596.                requires  the  AmigaDos System software version 2.04 or
  1597.                greater, so the old FlowToys version  2.3  will  likely
  1598.                still need to be used by AmigaDos 1.3 users.  
  1599.  
  1600.  
  1601.             ¢1mFLOADD ¢0m- Usage: [-absolute] [-Ooutbound] [file ...] 
  1602.  
  1603.  
  1604.             ¢1mFLOEDIT ¢0m- Usage: floedit [-Ooutbound] [-Zzone] node 
  1605.  
  1606.  
  1607.             ¢1mFLOLIST ¢0m- Usage: flolist [-verbose] [-terse] [-Ooutbound] 
  1608.  
  1609.  
  1610.             ¢1mOUTADD  ¢0m-  Usage:  outadd  [-Ooutbound]  [-Z1] [-Dscandir]
  1611.                [-Pnet=node] [file ...] 
  1612.  
  1613.  
  1614.                The previous versions of Welmat included version 4.2 of
  1615.           Flow.library which included the ability to use two  programs
  1616.           called UnFlow and ReFlow which were specific to that version
  1617.           of the  library.    The  version of Flow.Library distributed
  1618.           with this release of Welmat is version 4.3 and contains some
  1619.           significant changes: 
  1620.  
  1621.                a) Unlike the old version, Version 4.3 does  not  allow
  1622.           the  use  of UnFlow and ReFlow, and does not attempt to read
  1623.           the old 2 dimensional  '.FLO'  files  itself.    Instead,  a
  1624.           library  called  RexxFlow.library,  and many example scripts
  1625.           have  been  made  available  that  will  do  this  type   of
  1626.           conversion.   If you need this type of conversion to be done
  1627.           inside of the library,  please  keep  your  OLD  version  of
  1628.           Flow.Library as was distributed with Welmat version 0.44.  
  1629.  
  1630.                b)  Within  the  old Flow.library there was a confusion
  1631.           between the concept of 'cost' (Where the  lowest  cost  file
  1632.           would  be sent first) and the concept of priority (where the
  1633.           highest priority file would be sent first).  This  has  been
  1634.           cleaned  up  in  that  the  entire  library makes use of the
  1635.           concept of priority.  Priority are numbers between -127  and
  1636.           +128  where the higher the number, the more likely a file is
  1637.           to be sent.  I have set up my own system so that files  that
  1638.           positive  priorities  are  similar to the concept of 'Crash'
  1639.           within fidonet, and the negative priorities are  similar  to
  1640.           the  concept  of 'HOLD'. Examples are given elsewhere in the
  1641.           manual, and in the sample config files.  
  1642.  
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.  
  1649.                                       -25-
  1650.  
  1651.  
  1652.      WELMAT                     Reference Manual               Version 0.47
  1653.  
  1654.  
  1655.      ¢1mWelmat Scripts 
  1656.  
  1657.  
  1658.                ¢0mWith the advent of  the  newest  version  of  AmigaDos,
  1659.           version   2.0,  REXX  will  become  the  standard  scripting
  1660.           language on the Amiga. One of the basic functions of REXX is
  1661.           to provide a command line to a running  program,  and  allow
  1662.           you to interact with this program.  
  1663.  
  1664.                This  just  happens to be one of the basic design ideas
  1665.           of Welmat as well.  With Welmat, though, it's author did not
  1666.           want to Require REXX in order to send commands to  the  main
  1667.           program.   Also,  since  there  is  no real way to know what
  1668.           every user will wish to send to Welmat, a  complete  command
  1669.           line  interface  was not implemented within Welmat. Instead,
  1670.           the ability to send a ¢1mWelmat Program ¢0mto Welmat was  adopted.
  1671.           In  this  way  you could very easily interact with Welmat no
  1672.           matter what scripting language you choose to use.  
  1673.  
  1674.                Most of the basic functions that one would want to have
  1675.           Welmat do are still accessable through a command  line  with
  1676.           the  use  of  some  of  the  external programs supplied with
  1677.           welmat.  With the basic two programs, Wabort  and  Wctl  you
  1678.           can  construct scripts that do exactly the same functions as
  1679.           scripts generated for any other mailer.Basically,  set  your
  1680.           host to 'COMMAND' (EG: ¢1mAddress ¢0m'¢1mCOMMAND¢0m' ) and then make use
  1681.           of the  various  Welmat tools.  The result of these programs
  1682.           are then returned to you in the special REXX variable  'RC'.
  1683.           Various  examples  have  been  given  throughout this manual
  1684.           showing different ways to access Welmat through REXX.  
  1685.  
  1686.  
  1687.                One does not have  to  know  REXX  in  order  to  write
  1688.           scripts  that  would  be  able  to  control  Welmat. All the
  1689.           current Welmat tools all take a  normal  command  line,  and
  1690.           return an error code using the normal AmigaDos methods.  One
  1691.           could  very  easily  write  their  scripts using AmigaShell,
  1692.           ArpShell, or if they need more complicated scripts, they can
  1693.           use CShell (Such as Robert  Williamson  has  done  with  the
  1694.           series  of scripts that he calles 'ROOF' - You might want to
  1695.           file request these as an example of some shell scripts).  
  1696.  
  1697.  
  1698.  
  1699.  
  1700.  
  1701.  
  1702.  
  1703.  
  1704.  
  1705.  
  1706.  
  1707.  
  1708.  
  1709.  
  1710.  
  1711.  
  1712.  
  1713.  
  1714.  
  1715.                                       -26-
  1716.  
  1717.  
  1718.      WELMAT                     Reference Manual               Version 0.47
  1719.  
  1720.  
  1721.  
  1722.  
  1723.      ¢1mBBS and other Logins 
  1724.  
  1725.  
  1726.  
  1727.                ¢0mWelmat currently uses two different  ways  to  allow  a
  1728.           Bulletin Board  to be ran when Welmat answers the phone.  In
  1729.           this mode, Welmat would be considered a  Front  End  mailer,
  1730.           and  acts  as  a  negotiater  to determin whether the caller
  1731.           wishes to use Fidonet, or whether it is a caller that wishes
  1732.           to use the BBS. Each method requires two  keywords:  One  to
  1733.           turn   the   function   on,  and  another  to  set  up  it's
  1734.           parameters.  These  keywords  are  all  part  of  the  modem
  1735.           configuration  section  (IE:  They  are  placed  between the
  1736.           Modem/ModemEnd keywords) and  are  specific  to  a  specific
  1737.           line.   Please also note that one could very easily use both
  1738.           methods at the same time, ulthough if you have the LOGIN set
  1739.           up, it would be easiest to just have the BBS set up  as  one
  1740.           of the accounts for the LOGIN.  
  1741.  
  1742.  
  1743.                The first  method  is the most familiar method.  When a
  1744.           user calls, he can be instructed to  hit  his  <ESCAPE>  key
  1745.           twice  to enter the BBS. If this is the method that you wish
  1746.           to use, you would enter the following keywords: 
  1747.  
  1748.                  YesBBS 
  1749.                  BBSExecute <Command to run> 
  1750.  
  1751.  
  1752.                  YesBBS is a flag that lets welmat know that you  wish
  1753.             to  use  the  BBSExecute command, and wish welmat to check
  1754.             for the ¢3mescape ¢0mkey to be pressed.  The escape key must  be
  1755.             hit twice consecutively (IE: No other keys in between) for
  1756.             this action  to  be  taken.  This avoids possible problems
  1757.             with line noise.   The  BBSExecute  keyword  sets  up  the
  1758.             command that will be run when the user types in the escape
  1759.             key.  Many different '%' style substitutions are possible,
  1760.             and  these  are  all outlines in the section 'SmartRun' as
  1761.             they are common  to  the  entire  of  Welmat.    With  the
  1762.             BBSExecute,  Welmat  will  automatically  hang  up  on the
  1763.             caller and wait for the next call.  Here is an example: 
  1764.  
  1765.                  YesBBS 
  1766.                  BBSExecute "bbs -B%B -b%b -d%d -u%u" 
  1767.             This   would    execute    "BBS    -B<Modem-Modem    Baud>
  1768.             -b<computer-Modem baud> -d<device> -u<unit>" when the user
  1769.             hits the  escape  key.  This is the method used by quite a
  1770.             few BBS's.  
  1771.  
  1772.                  Remember that this is line  specific.    If  you  are
  1773.             running  your  BBS  on  more than one phone line, you will
  1774.             want to specify eithor the line number, or the device  and
  1775.             unit for  the  particular  line.   If you run a multi-line
  1776.             Welmat system, but run a single-line BBS it  is  your  own
  1777.             responsibility  to  make  sure  that  things only run on a
  1778.             single line.  
  1779.  
  1780.  
  1781.                                       -27-
  1782.  
  1783.  
  1784.      WELMAT                     Reference Manual               Version 0.47
  1785.  
  1786.  
  1787.  
  1788.  
  1789.                  The second way to deal with callers would be  to  use
  1790.             the  Unix-Like GETTY function of Welmat. Under unix, there
  1791.             is a command called 'Getty' (Get TTY) which will basically
  1792.             answer an incoming call, send them a  simple  banner,  and
  1793.             collect a  single  line of input.  This line of text would
  1794.             then be sent  to  a  program  called  'Login'.  The  login
  1795.             command  would  then  ask for a password (If required) and
  1796.             eithor allow the user access to the system, or return back
  1797.             to the GETTY to have the user  type  in  their  user  name
  1798.             again.  Since the Login program can return more than once,
  1799.             the  existance  of a carrier, or a return result code of 0
  1800.             is used to determin whether Welmat should wait for another
  1801.             call, or should present the caller with the banner.  It is
  1802.             then partly the responsibility of  the  Login  program  to
  1803.             hang up after a successful call.  
  1804.  
  1805.                  Welmat  has  a  function  that  does exactly the same
  1806.             thing, and I myself have implemented a login program  that
  1807.             is  a  derivative of the 'GETTY' program that was supplied
  1808.             with Matt Dillon's UUCP  package.    After  answering  the
  1809.             call,  Welmat  will  be  listening  for  characters  to be
  1810.             received from the Modem. If a YoHoo  (Fidonet)  or  TSYNCH
  1811.             (FTS-0001  session) is received, it will do a session with
  1812.             the mailer.  If an  Escape  is  received,  and  YesBBS  is
  1813.             active, the   BBS  will  be  ran.    All  other  printable
  1814.             characters are accepted, and put into a Line buffer.  When
  1815.             the user then hits return, Welmat will then run the  Login
  1816.             command,  and  one  of  the arguments will be this line of
  1817.             input that the user had  typed  in.    Here  would  be  an
  1818.             example of the commands required: 
  1819.  
  1820.                  WelcomeMessage "\r\nAmigaTronix Line 1\r\nTHERE IS NO
  1821.                  BBS HERE!\r\nDo not Login:" 
  1822.                  Login "uucp:c/login -asdg -D%d -U%u \"%s\"" 
  1823.                  YesLogin 
  1824.  
  1825.           As you can see, the WelcomeMessage includes the text 'ogin:'
  1826.           which  is  the  standard  text  that  any UUCP site would be
  1827.           looking for (Please read the  documentation  on  Send-Expect
  1828.           scripts in the UUCP documentation).  After the line has been
  1829.           accepted  (The  user  hit return) the Login command would be
  1830.           run.  The login command currently takes 1 required  argument
  1831.           (The user name) and also has a few optional keywords.  
  1832.  
  1833.  
  1834.                -¢1mA¢0m[¢1msdg¢0m]  is  used  if you are using an ASDG duel serial
  1835.           board.  This keyword is required as the Login  program  must
  1836.           be able  to  hang  up  after  a caller is finished.  If this
  1837.           keyword is not included, it is assumes that  the  system  is
  1838.           using  the  serial.device  and  will handle the internal DTR
  1839.           directly.  
  1840.  
  1841.                -¢1mb¢0m[¢1maud¢0m] is used if you wish to pass the  Modem<-->Modem
  1842.           baud rate  to login.  This is used for the '%B' substitution
  1843.           within command lines in the password file.  
  1844.  
  1845.  
  1846.  
  1847.                                       -28-
  1848.  
  1849.  
  1850.      WELMAT                     Reference Manual               Version 0.47
  1851.  
  1852.  
  1853.                -¢1mL¢0m[¢1mower¢0m] is used to force all the login names typed  to
  1854.           lower case.   This is required if you wish to have the login
  1855.           names case-insensitive.  One would then have all  the  login
  1856.           names in  lower case in the password file.  Please note that
  1857.           the passwords themselves are still case sensitive.  
  1858.  
  1859.                -¢1mD¢0m<¢1mdevice¢0m> is used to specify the device.  The  default
  1860.           is "serial.device".  
  1861.  
  1862.                -¢1mU¢0m<¢1munit¢0m> is  used  to  specify  the  unit  number.  The
  1863.           default is unit 0.  
  1864.  
  1865.                -¢1mO¢0m<¢1mlog path¢0m> is used  to  specify  the  output  LogFile
  1866.           name.     Under    AmigaUUCP    this   would   normally   be
  1867.           UUSPOOL:LOGFILE.  The  default  is  unit  login.log  in  the
  1868.           current directory.  
  1869.  
  1870.                -¢1mP¢0m<¢1mpasswd  path¢0m> is used to specify the pathname of the
  1871.           password file.   Under  AmigaUUCP  this  would  normally  be
  1872.           UULIB:PASSWD.   The   default   is  PASSWD  in  the  current
  1873.           directory.  
  1874.  
  1875.  
  1876.  
  1877.                The only required parameter is the single line of  text
  1878.           that  the  user typed in as it was accepted by Welmat. In my
  1879.           example, I use quotation marks since  the  user  might  have
  1880.           typed a  space  in  his user name.  As you will also notice,
  1881.           the quotation marks have to be  preceeded  by  a  Slash  '\'
  1882.           character.   This  is  because a quotation within the config
  1883.           file would normally end the string.  Since we want  ¢1mWcompile
  1884.           ¢0mto  actually  include the quotation mark, we must escape the
  1885.           special meaning of those quotes.  
  1886.  
  1887.                As mentioned, the Login program is a direct  derivative
  1888.           of the Getty program supplied with the Amiga UUCP. There are
  1889.           some  very  small  differences in the ¢1muulib¢0m:¢1mpasswd ¢0mfile from
  1890.           the released information.  The file has the following form: 
  1891.  
  1892.           User  ,Password  ,Uid  ,GroupId   ,(Finger-Info)   ,Home-Dir
  1893.           ,Command-To-Run 
  1894.  
  1895.  
  1896.             ¢1mUser ¢0muser  name,  up  to  8  characters.  With the current
  1897.                version of Login, if you are running AmigaDos 2.0,  the
  1898.                User  field  may contain an AmigaDos pattern (Just like
  1899.                with Filenames).  
  1900.  
  1901.             ¢1mPassword ¢0mpassword,  up  to  8  characters  (uncrypted  for
  1902.                now).  A password of '*' means that no password will be
  1903.                prompted for.    A  password  of  '**'  would cause the
  1904.                password to be asked for, but not actually checked (For
  1905.                use for things like Anonymous Logins/etc).  
  1906.  
  1907.             ¢1mUid ¢0munique numerical id (don't use 0 please), this WILL be
  1908.                used by some programs to find password entries.    Give
  1909.                each entry a different UID.  
  1910.  
  1911.  
  1912.  
  1913.                                       -29-
  1914.  
  1915.  
  1916.      WELMAT                     Reference Manual               Version 0.47
  1917.  
  1918.  
  1919.             ¢1mGroupId ¢0mnot currently used, set to 2 (don't use 0).  
  1920.  
  1921.             ¢1mFinger ¢0mFinger  information (your name).  Future sub fields
  1922.                within the finger  information  will  be  separated  by
  1923.                colons (:).  
  1924.  
  1925.             ¢1mHome¢0m-¢1mDir ¢0mDirectory from which to run the command 
  1926.  
  1927.             ¢1mCommand ¢0mCommand to run.  Command is run with arguments you
  1928.                specify plus: 
  1929.  
  1930.                -GETTY -DEVICE devicename -UNIT unitname 
  1931.  
  1932.                Where  the  devicename  and unitname together make up a
  1933.                serial port which the command should  use  for  further
  1934.                communications.   stdin and stdout are set to NULL:, as
  1935.                is the console handler.  
  1936.  
  1937.                     If you place a few special characters in front  of
  1938.                the Command-To-Run, special things will happen.  
  1939.  
  1940.                     If  command-to-run  is  prefaced  with a '*' Login
  1941.                will open the UUSER: device for stdin and stdout and  a
  1942.                read-timeout of  1  second.    The  UUSER:  handler  is
  1943.                supplied with Amiga UUCP.  
  1944.  
  1945.                      If you preface the command with a '$' , the Login
  1946.                will not hang  up  on  the  caller  after  the  command
  1947.                returns.  
  1948.  
  1949.                     If  a  '<' is used, the command is taken to be the
  1950.                filename of a text file to display to the user.  
  1951.  
  1952.                      If you preface the command with  a  '#'  ,  Login
  1953.                will  NOT  do  any re-direction, and will just send the
  1954.                command line exactly as it is  given  in  the  Password
  1955.                file.   This  mode  is  included  to allow BBS users to
  1956.                create  their  own   command   line   that   might   be
  1957.                in-compatable with ones automatically created.  
  1958.  
  1959.                      Please  note  that  any  combination of the above
  1960.                special characters can be used.  
  1961.  
  1962.  
  1963.             ¢1mSpecial Command¢0m-¢1mLine Substitutions¢0m.  
  1964.  
  1965.                  Login  supports  substituting   various   information
  1966.                anywhere  in  the command string to allow one to create
  1967.                their own command lines.   All  the  substitutions  are
  1968.                specified by  using a '%' followed by a character.  The
  1969.                following subsitutions are currently supported: 
  1970.  
  1971.                %b - Baudrate of connection (Modem<-->Computer).  
  1972.                %B - Baudrate of caller (Modem<-->Modem).  
  1973.                %l - Login Name (What the user typed).  
  1974.                %f - Serial Flags.  
  1975.                %p - Password typed in by user.  
  1976.                %s - Serial Device (EG: serial.device).  
  1977.  
  1978.  
  1979.                                       -30-
  1980.  
  1981.  
  1982.      WELMAT                     Reference Manual               Version 0.47
  1983.  
  1984.  
  1985.                %u - Unit number.  
  1986.  
  1987.  
  1988.                     Here are a few example entries: 
  1989.             # Put any comment here 
  1990.             # 
  1991.             #          User,Password,Uid,GroupId,Finger-Info,Home-Dir,
  1992.             ommand-To-Run 
  1993.             info,*,100,3,Display Info File,ram:,<uulib:Info-Text 
  1994.             ; This will display a text file to the user.  
  1995.             user,*,105,3,USER  Login,uucp:pub/,$*uucp:c/rshell Unknown
  1996.             0 
  1997.             ; this would allow the user to  log  into  the  Restricted
  1998.             Shell.  
  1999.             bye,*,106,3,exit,ram:,*uucp:empty 
  2000.             ;  This would just hang up on the caller (uucp:empty is an
  2001.             empty script) 
  2002.             bbs,*,1,3,BBS,bbs:,#bbs:c/MyFancyBBS %b -DEVICE  %d  -UNIT
  2003.             %u 
  2004.             TransAmiga,*,69,69,(TransAmiga    BBS),SYS:,#TA:TransAmiga
  2005.             Trans.Config %b 
  2006.             TransFast,*,69,69,(TransAmiga w/ LOCK),SYS:,#TA:TransAmiga
  2007.             Trans.Config %B %b 
  2008.             ; 
  2009.             ; TA:TransAmiga Trans.Config 38400 2400 
  2010.             ; ^^^^^ ^^^^ 
  2011.             ; serial real 
  2012.             uujulie,mikepass,204,3,UUCP-JULIE,ram:,uucp:c/u cico 
  2013.             ; this would allow Julie to log in to do a uucp session.  
  2014.             #?  #?,*,2,3,Firstname Lastname,uulib:,<SpaceInName 
  2015.             ; *AmigaDos 2.0 Only* this would  display  the  text  file
  2016.             "uulib:spaceinname"  if a username with at least one space
  2017.             character was typed.  
  2018.             test,*,100,100,(test),c:,#echo  >t:a  "baud=%b  %B  ser=%s
  2019.             unit=%u flag=%f Name=%l Pas=%p" 
  2020.             test1,**,100,100,(test),c:,#echo  >t:a  "baud=%b %B ser=%s
  2021.             unit=%u flag=%f Name=%l Pas=%p" 
  2022.  
  2023.  
  2024.  
  2025.                     Again, for full documentation on  the  Amiga  UUCP
  2026.                package, please consult the documentation supplied with
  2027.                these packages.    The  use of the Login command is not
  2028.                limited to just UUCP itself.  One could very easily set
  2029.                up an 'account' called BBS that would run the  BBS.  It
  2030.                could also very easily set up more than one BBS package
  2031.                at  the  same time, and allow the users to choose which
  2032.                BBS they wish to log into.  
  2033.  
  2034.                     Notes: Login uses a few handlers  that  should  be
  2035.                mentioned.   A  handler  called 'NULL:' (Different from
  2036.                NIL:) must be mounted (This handler is  available  from
  2037.                1:163/109  as  'NULL.ZOO'),  and if you wish to use the
  2038.                '*' special character for the command,  you  must  have
  2039.                the  'UUSER:'  handler mounted.(In the future this will
  2040.                make use of the FIFO: and fifo.library instead.) 
  2041.  
  2042.  
  2043.  
  2044.  
  2045.                                       -31-
  2046.  
  2047.  
  2048.      WELMAT                     Reference Manual               Version 0.47
  2049.  
  2050.  
  2051.      ¢1mFuture 
  2052.  
  2053.  
  2054.                     ¢0mWhile Welmat started out as a simple solution to a
  2055.           simple problem (The port of BinkleyTerm for the  Amiga),  it
  2056.           has  grown  to  be one of the best mailers available for any
  2057.           computer.  Welmat has also become an example  of  a  program
  2058.           that takes advantage of the operating system that it is used
  2059.           within.  
  2060.  
  2061.                Since  networks are an ever expanding area of study, as
  2062.           well as the Amiga operating system  itself  being  expanded,
  2063.           Welmat  will  be  a  program  that will follow the trends of
  2064.           these two expanding fields.  The future will hold some  very
  2065.           interesting enhancements.  
  2066.  
  2067.                Most  of  the  shared  libraries  used  by  the various
  2068.           network software will have REXX support added to them.    As
  2069.           an  example,  a simple RexxFlow.library was written by David
  2070.           Jones to facilitate  the  use  of  REXX  to  work  with  the
  2071.           outbound queue.    The  future  library,  XferQ.library, has
  2072.           direct REXX support  within  it  and  will  make  this  even
  2073.           easier.  
  2074.  
  2075.                There  are  many  other  ideas  that are being shuffled
  2076.           around, and things will be very drastically changing in  the
  2077.           near future  (Which  is why this release has been made).  If
  2078.           you wish to have input on these changes,  or  just  want  to
  2079.           watch  what  is  going  on,  please  read  the  message echo
  2080.           'WELMAT'.  
  2081.  
  2082.  
  2083.      ¢1mOther Related Files 
  2084.  
  2085.  
  2086.                ¢0mSince Welmat is a program that allows other authors  to
  2087.           write  tools  for  it,  there  will  always  be software and
  2088.           information available for use with Welmat that is  not  sent
  2089.           out with  the  distribution  itself.    Also, as software is
  2090.           always being updated,  even  some  of  the  tools  that  are
  2091.           supplied  with  welmat  may  have  been  updated  since  you
  2092.           received the welmat binary itself.  
  2093.  
  2094.                Also, as  Welmat  is  licensed  under  the  GNU  public
  2095.           licence, Source  code is available.  The source to Welmat is
  2096.           quite large, so  it  will  not  likely  ever  be  made  file
  2097.           requestable from  any  site.  Instead, the author wishes any
  2098.           interested parties to send off a SASE with a  Disk,  and  it
  2099.           will be returned with the current source code.  
  2100.  
  2101.  
  2102.                Here  is  a  current  list  of  files that are directly
  2103.           related to  welmat.    All   are   file   requestable   from
  2104.           1:1/109(V.32Bis) and 163/109(2400bps) as well as quite a few
  2105.           other sites.  
  2106.  
  2107.           WELMAT  List  of Welmat related files available for request.
  2108.           WELMAT.REL Latest release of  WelMat.    WELMAT.TEST  Latest
  2109.  
  2110.  
  2111.                                       -32-
  2112.  
  2113.  
  2114.      WELMAT                     Reference Manual               Version 0.47
  2115.  
  2116.  
  2117.           test version of Welmat.  
  2118.  
  2119.           Documentation: 
  2120.  
  2121.           FTS-0001.A15 Basic FidoNet Technical Standard (v014), R Bush 
  2122.           FTS-0006.A02   YooHoo   session   negotiation   Protocol,  V
  2123.           Perriello 
  2124.           FSC-0011.ZOO Experiences/corrections to FSC-0001, B Hartman 
  2125.           GNULIC2.LZH GNU Public License V2.0 
  2126.           Programs: 
  2127.  
  2128.           PLST160.ZOO Amiga Parselist V 1.60 
  2129.           LOGIN Magic filename that returns the latest version of  the
  2130.           LOGIN program 
  2131.                         for use with Welmat.  
  2132.           FLOTOY23.LZH Release 2.3 of flow library toys 
  2133.           FLOSRC23.ZOO Source release 2.3 of flow library 
  2134.  
  2135.  
  2136.  
  2137.  
  2138.  
  2139.  
  2140.  
  2141.  
  2142.  
  2143.  
  2144.  
  2145.  
  2146.  
  2147.  
  2148.  
  2149.  
  2150.  
  2151.  
  2152.  
  2153.  
  2154.  
  2155.  
  2156.  
  2157.  
  2158.  
  2159.  
  2160.  
  2161.  
  2162.  
  2163.  
  2164.  
  2165.  
  2166.  
  2167.  
  2168.  
  2169.  
  2170.  
  2171.  
  2172.  
  2173.  
  2174.  
  2175.  
  2176.  
  2177.                                       -33-
  2178.  
  2179.  
  2180.      WELMAT                     Reference Manual               Version 0.47
  2181.  
  2182.  
  2183.      ¢1mAcknowledgements 
  2184.  
  2185.           ¢0mAmiga and AmigaDOS are trademarks of Commodore-Amiga, Inc.  
  2186.           Amiga  Parselist  ported  by  Jon  Radof  -  Updates by Todd
  2187.           Kover.  
  2188.           Amiga UUCP 0.40 by William Loftas.  
  2189.           ARexx by William S. Hawes.  
  2190.           BinkleyTerm  by  Alan  Applegate,  Bob  Hartman  and   Vince
  2191.           Perriello.  
  2192.           BinkleyTerm Amiga ported by Juergen Herman.  
  2193.           Confmail  origionally  ported  by Juergen Herman. Updates by
  2194.           Steve Palm, Greg Block and Russell McOrmond.  
  2195.           Fido and FidoNet are trademarks of Tom Jennings.  
  2196.           Igen is a Nodelist processor by Todd Kover.  
  2197.           JBund.REXX is a script by James McOrmond.  
  2198.           Juliet is a Point package by Gregory Kritsch 
  2199.           Login by Russell McOrmond, adapted from sources within  UUCP
  2200.           1.03D 
  2201.           SoundTrack by RUSH, the Greatest band ever.  
  2202.           SEAlink  and  SEAdog  are  trademarks  of System Enhancement
  2203.           Associates.  
  2204.           Spiritual support by James Sutton.  
  2205.           TransAmiga is a BBS package by Tim Aston á1:247/117.5 
  2206.           TrapDoor is by Maximilian Hantsch and Martin Laubach.  
  2207.           UUCP 1.03D,1.06D by Matthew Dillon.  
  2208.           XferQ (xferq.library) is a shared  library  by  David  Jones
  2209.           á1:163/109.8 
  2210.           WaZoo handshake by Wynn Wagner.  
  2211.           4-D BBS is a Bulletin Board by Dale E. Reed Jr. á1:346/24.0 
  2212.  
  2213.  
  2214.        Alpha Test Team 
  2215.  
  2216.                While   versions   of  Welmat  have  always  been  made
  2217.           available to anyone that wanted to get ahold of them,  there
  2218.           has  always  been  a group of people that have been involved
  2219.           with testing new releases of Welmat that are sent  into  the
  2220.           WELMAT file echo.  This group of people are : 
  2221.  
  2222.              Robert Williamson @ 1:167/104 
  2223.              James Atwill @ 1:163/109.36 
  2224.              James McOrmond @ 1:224/140.0 
  2225.  
  2226.  
  2227.      ¢1mAUTHOR 
  2228.  
  2229.           ¢0mMichael  Richardson  is  the  original Author of Welmat, and
  2230.           continuing work on this CopyLeft  project  done  by  Russell
  2231.           McOrmond.  This  documentation  has  been  put  together  by
  2232.           Russell McOrmond.  
  2233.  
  2234.  
  2235.      ¢1mAmigaTronix Authors 
  2236.  
  2237.           ¢0mThere is a group of Authors that  are  involved  in  writing
  2238.           Networking software  for the Amiga comminity.  Various group
  2239.           efforts,  as  well  as  personal  developments   have   been
  2240.           accomplished.   I  wish to thank all these authors for their
  2241.  
  2242.  
  2243.                                       -34-
  2244.  
  2245.  
  2246.      WELMAT                     Reference Manual               Version 0.47
  2247.  
  2248.  
  2249.           continuing efforts: 
  2250.  
  2251.            David Jones 
  2252.            6730 Tooney Drive 
  2253.            Orleans, Ont.  
  2254.            K1C 6R4 
  2255.  
  2256.            FIDO: David Jones@ 1:163/109.8 
  2257.            NET: dej@qpoint.Amiga.OCUnix.On.Ca 
  2258.  
  2259.           ++++++++++++++++++++++++++ 
  2260.            Todd Kover 
  2261.  
  2262.            Fido: Todd Kover @ 1:261/5016.0 
  2263.            Net: kovertwam.umd.edu 
  2264.  
  2265.           ++++++++++++++++++++++++++ 
  2266.            Gregory Kritsch 
  2267.  
  2268.            NET: ggk@tirith.OCUnix.On.Ca 
  2269.  
  2270.           ++++++++++++++++++++++++++ 
  2271.  
  2272.            Russell McOrmond 
  2273.            646 O'connor St 
  2274.            Ottawa ON 
  2275.            K1S 3R8 
  2276.            (613) 235-3287 
  2277.  
  2278.            FIDO: Russell McOrmond@ 1:163/109 
  2279.            NET: rwm@atronx.OCUnix.On.Ca 
  2280.  
  2281.           ++++++++++++++++++++++++++ 
  2282.            Rick Morrow 
  2283.  
  2284.            FIDO: Rick Morrow@ 1:163/109.31 
  2285.            NET: rsm@delfax.Amiga.OCUnix.On.Ca 
  2286.  
  2287.           ++++++++++++++++++++++++++ 
  2288.            Michael Richardson 
  2289.            303 Bell Street South 
  2290.            Ottawa, ON 
  2291.            K1S 2J9 
  2292.            data: (613) 237-0792 
  2293.  
  2294.           or 
  2295.  
  2296.            148 Fourth Avenue 
  2297.            Ottawa ON 
  2298.            K1S 2L4 
  2299.            (This is his Mothers  Residence,  and  is  less  likely  to
  2300.           change than Michael's own address) 
  2301.  
  2302.            NET: mcr@sandelman.OCUnix.on.ca 
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308.  
  2309.                                       -35-
  2310.  
  2311.  
  2312.      WELMAT                     Reference Manual               Version 0.47
  2313.  
  2314.  
  2315.                The  reason for all these addresses: If you get this we
  2316.           would really like you to let us  know  that  you  are  using
  2317.           Welmat.  There is no official 'Registration Fee' for Welmat,
  2318.           but any donations that would go towards paying for the  time
  2319.           to write  improvements are always greatly appreciated.  None
  2320.           of this would be possible without  the  help  of  all  these
  2321.           authors  so  please  support them in any way you can so that
  2322.           development will always continue.  Whether you are  able  to
  2323.           donate or not, please let us know you are using the software
  2324.           so  that  we can work towards meeting the needs of the users
  2325.           of the software.  
  2326.  
  2327.  
  2328.      ¢1mWelmat Support 
  2329.  
  2330.           ¢0mA  support  echo  `WELMAT'  is  available  on  the   Fidonet
  2331.           backbone,  and  a  file  echo exists for the distribution of
  2332.           pre-release documentation or binaries that is sent currently
  2333.           via 1:232/301 and will likely be made available on other ADS
  2334.           sites as well.  Announcement of new versions will be made in
  2335.           WELMAT and AMY_POINT, and will be  made  available  via  the
  2336.           ADS.  (ADSFIDO).  The  official support site for WELMAT, and
  2337.           where any pre-release versions, or special versions will  be
  2338.           made   available  is  Fidonet  node  1:1/109(V.32Bis)  (AKA:
  2339.           1:163/109 (2400bps currently)).  If you  have  any  specific
  2340.           questions,  please  address mail to myself, as I have become
  2341.           the primary support person for Welmat.  
  2342.  
  2343.  
  2344.  
  2345.  
  2346.  
  2347.  
  2348.  
  2349.  
  2350.  
  2351.  
  2352.  
  2353.  
  2354.  
  2355.  
  2356.  
  2357.  
  2358.  
  2359.  
  2360.  
  2361.  
  2362.  
  2363.  
  2364.  
  2365.  
  2366.  
  2367.  
  2368.  
  2369.  
  2370.  
  2371.  
  2372.  
  2373.  
  2374.  
  2375.                                       -36-
  2376.  
  2377.