
                ------------------------------------------
                Complete run-thru Doc for AmiExpress v2.30
                ------------------------------------------

               This doc does a complete run thru of the bbs
             and how its routines work for the September 1992
                    release version of AmiExpress v2.30

        ..........................................................      
       .: C O N T E N T S  O F  T H E  D O C U M E N T A T I O N :.
        ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

                                 Chapters:
                                 ~~~~~~~~

             (1)................................. Introduction
             (2)....................... Copyrights Information
             (3)................................. Requirements
             (4)................... Installation of AmiExpress
             (5)............ The Way to install the ConfigFile
             (6)........ How to install the Express in Startup
             (7)............ All commands for your ACP.STARTUP
             (8)..................... The normal Documentation
             (9).............. The programmlogic of AmiExpress
             (10)......... The MainMenu Commands of AmiExpress
             (11)..... How to use the extended config in AmiEX
             (12)............ How the BBSInfo Conference works
             (13)................ AREXX Interface Module (AIM)
             (14).......... Traditional Interface Module (TIM)
             (15)........... AmiExpress Interface Module (XIM)
             (16)................. Custom Commands File Format
             (17)............ The MCI imbedded ControlSequence
             (18)... Complete List of all ACP.STARTUP Commands
             (19)........................... Noteable Features
             (20)...................... Note worthy of Mention
             (21)............................ Trouble Shooting


:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
============================= 1. Introduction ===============================
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  
    Ami-Express is a host Bulletin Board software program, allowing
    the transfer of data, between host and remote terminals via a
    telephone link. ( Obvious to some!! ). This data can be files
    uploaded or downloaded from remote (user end) from the BBS
    databases. Most Bulletin boards also contain message bases where
    you can read and leave electronic mail to other users. It is
    possible via some BBS`s to play online games, although these are
    of a simple nature, they can still be quite entertaining. For 
    those of you that have been a user, either host or remote, for
    some time, will have noticed the major changes that Ami-Express
    has undergone. With the future proposed implementations Ami-Express
    will soon become comparable to other Major BBS programs found on
    Amiga and PC  computers.

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
======================== 2. Copyrights Information  =========================
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    If you own a an Illegal (Cracked copy) and you use it, then
    consider buying the original. This will not only provide you with
    support etc, but will encourage the further development of 
    Ami-Express.

                    ------------------------------------

                     AmiExpress and its source code are
                copyright 1992 by Light Speed Technologies

             AmiExpress is a comercial product, NOT shareware
                      If you used it, please buy it!

                    ------------------------------------

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
============================ 3. Requirements ================================
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    To install AmiExpress V2.30 you must have the following things:

       Program    Location     Description
      ---------   --------     -----------

        Express     BBS/Utils    Bulletin Board System
      ACP.ctrl    BBS/Utils    Bulletin Board controller
      AE.Library  LIBS/        AmiExpress Library
         ^^ has been removed from Express, but Doors should use the LIB ^^

      optional:
      CONFIG      BBS          Configuration Program

      - a stack of at least 50000 bytes
      - a Amiga Model (500/600/1000/2000/2500/3000)
      - the installed Version of Kickstart V2.0 (Soft or Hardware Version)
      - at least 2 MB free Space to be able to get uploads
      It is recommend to install AmiExpress on a Harddrive to increase
      the Speed of AmiExpress and to have enough space for Uploading 
      software on the BBS. If you only want to test the AmiExpress Version
      than you can install the BBS also on a Diskdrive.  

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
======================= 4. Installation of AmiExpress  ======================
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

      To install AmiExpress V2.30 you must have at least all the
      Requirement which were mentioned below. Now lets going on with the
      normal installation of AmiExpress.
    
      Now take your registered LZH file which you downloaded from your 
      favourite Distribution Board of AmiExpress and decrunched it please
      on a Disk or take your Disk on which AmiExpress is allready installed.
      Now you must know where you want to install AmiExpress on your hard-
      drive. To explain the installation of AmiExpress much better it is
      recommend that you install the whole AmiExpress into the BBS: 
      Directory on your Harddrive. If this Directory doesn`t exists you
      have to make it on your Harddisk. 
      Now take your AmiExpress disk and take a look an it and you will 
      see the following things:

      -------------------------
         S (dir)
         libs (dir)
         Trashcan (dir)
         BBS (dir)
      BBS.DOX
      REVISE.DAT
      Trashcan.info
    -------------------------
    
    Now you must know how many Conferences do you want to install in your
    bbs and the way you want to install AmiExpress. You have two ways to 
    install the Conferences in a Configfile. 

    1.The first way to install a Config is to use the little Config program
    which is included in the Directory "BBS" under the name "Config" at the
    disk were AmiExpress is located. With this programm you have all the 
    ability to install your BBS correctly. You can use the Configfiles which
    are allready at the BBS called "Config1" & "Config2". Each number at the
    end of the Config(x) replaceses the Node on which this Config shoudl be
    used. So you can use a other Config for every Node you are using as a
    normal Modemnode or as your Localsysopnode. If you want to use a Node
    as a Localnode (that means that only Local Logins are allowed at this
    node), then you only have to replace the serial.device defination with
    a empty line at the config of the node which will be your local one.
    If you are ready with the entries in the Configprogramm you have a
    menu called "Generate Conferences". If you use this Menu the
    Configprgramm will automatically create the directories and Files which
    are needed that the conferences are working perfectly. All the other
    Informations about the configprogramm you can see later when the
    ACP.STARTUP will be described.

    2.The second way to install a config you can use the internal ACP.STARTUP
    which is located in the S: directory. In this Config you can do the
    same as in the Configprogramm. But this way is much better because
    the ACP.STARTUP is much saver against Viruses which changes the entries
    in the Config(x) file. All the Infos about how to install the
    ACP.STARTUP will be described later when the ACP.CTRL will be described.

      Then you have to copy the AE.LIBRARY which is located in the LIBS dir
    at the disk to your normal LIBS: directory at the Harddisk.
      The rest of the Installation will be described later in the
    normal Documentation.
    Now here comes some Directories you can copy directly from the Disk
    to the BBS directory at your Harddisk that the BBS will run correctly.

    --------------------------
       S (dir)      << install the whole 
         BBS/Node1 (dir)    << Files in this
         BBS/Node0 (dir)    << directories
         AMI_DRIVES
         User.Data
         User.Keys
    --------------------------

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
=============== 5. The Way to install the Configuration Files ===============
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

      ACP.Startup is the controller for the entire BBS, it defines who is
      allowed to do what. The ACP.STARTUP needs to know the following
      information:

      1> The number of nodes you wish to run.
      2> The way you wish the nodes to be started. 
      3> An instruction to load pre-made configuration files.

      Here is an example of S:ACP.STARTUP:

------cut here---------------------------------------------------
NUMBER_OF_NODES 3 

STARTNODE0: RUNBACK >NIL: -S50000 BBS:UTILS/EXPRESS 0
STARTNODE1: RUNBACK >NIL: -S50000 BBS:UTILS/EXPRESS 1
STARTNODE2: RUNBACK >NIL: -S50000 BBS:UTILS/EXPRESS 2

LOADCONFIG
------cut here---------------------------------------------------


    NUMBER_OF_NODES x = This tells the ACP.CTRL program how many
    nodes you will be running, the maximum is 9 nodes.

    STARTNODEx: This tells the ACP.CTRL how to start a particular
    node.. Prior users of AmiExpress probably had several script files
    to start the different nodes, but now with the ACP.STARTUP
    you do not need them.

    LOADCONFIG: This tells the ACP.CTRL that it should load all
    configuration files associated with the BBS. The configuration
    files are created with a program called CONFIG. Which should be
    in the BBS directory of the archive. 

    We highly suggest that you store AmiExpress and all associated
    programs in a volume called BBS: this simplifies finding
    any probs you may have. Installing AmiExpress is fairly complicated
    so please be patient, even those who have run earlier version of
    AmiExpress should notice a lot of setup changes, Therefore there
    will not be any quick setup instructions. 

    CONFIG - Prior to running AmiExpress you should create a CONFIG
    file for each node you are going to run, Use the program config
    which is located in the BBS directory of the archive, you will 
    also notice in this directory that there is 3 pre-configured
    CONFIG files: Config0, Config1 & Config2 we created these so you
    would have an example to go by. 

      Here is a list of steps involved in creating a Config(x) file:

        1> Copy the config program to BBS:
        2> Type BBS:Config from a command line or shell.
        3> Answer all of the questions to the best of your ability.
           we suggest reading the complete docs to AmiExpress prior
           to doing this.

           a> you will need to know which node you are configuring.
        
        4> After you have filled everything out, choose the generate
           conferences option from the CONFIG menu.

        5> Choose the Save File option of the CONFIG program and save
           the file as BBS:ConfigX, where X indicates the node number.

           Node numbers can range from 0 to 8.

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
================ 6. How to install the Express in your Startup ==============
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    In order to get AmiExpress work perfectly you have to add the following
    things at your User-StartUp or Startup-Sequence file in the S:
    directory: 

        -----cut here-----------------------------------------------------

        ASSIGN BBS: SYS:BBS
        PATH BBS:UTILS ADD
        RUNBACK >NIL: BBS:UTILS/ACP.CTRL

        -----cut here-----------------------------------------------------

      The above mentioned ASSIGN statement indicates that you have your
      BBS installed in a directory called BBS on the system drive.

      Once all of this is complete you should be able to reset your system.

  NOTE: You should have a BBS:Utils directory. Use this directory to
        put all amiexpress required utils, actually the only one we
        have that is required in the BBS:Utils directory is the 
        Master Control Panel by Bryce! We are waiting an update to 
        MCP, the example archive shows how to set it up. Keep in mind
        that BBS:Utils/MCP.script needs a S protection bit. If it does
        not have one then type the following once the MCP.script is in
        your BBS:Utils directory:

        protect BBS:Utils/MCP.Script +s

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
=================== 7. All Commands for your ACP.STARTUP ====================
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    The ACP.CTRL program is the central hub to all bbs activity. You
    may wish to customize the way it works. Here are a few additional
    commands that you may put in your S:ACP.STARTUP file:

definition of NODE commands:

NODE* LEFTEDGE 0
 ^  ^ ^        ^
 |  | |         ----- Specifies LEFTEDGE should = 0
 |  |  -------------- Specifies that you wish to set the LEFTEDGE variable
 |   ---------------- Specifies that this command should effect all nodes
 |                    1> * = all nodes.
 |                    2> 0 = node 0 only
 |                    3> 1 = node 1 only etc. upto 9.
 |
  ------------------- This is ACP.CTRL that you are executing a NODE
                      COMMAND.

ADVANCED COMMANDS INCLUDE: (x) & (y) indicates a value you put in.

NODE* LEFTEDGE  x  = This specifies the LEFTEDGE of the specified
                     NODE screen.
NODE* TOPEDGE   x  = This specifies the TOPEDGE of the specified
                     NODE screen.
NODE* WIDTH     x  = This specifies the WIDTH of the specified 
                     NODE screen.
NODE* HEIGHT    x  = This specifies the HEIGHT of the specified
                     NODE screen.
NODE* BITPLANES x  = This specifies the number of BITPLANES of the
                     specified node.
NODE* INTERLACE    = This specifies that you wish the specified node
                     screen to come up in INTERLACE mode

    A complete List of all ACP.STARTUP Commands can you see at the end
    of this Documentation of AmiExpress. The above commands are only the
    main Commands which are needed to start the Express.

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
======================== 8. The normal Documentation ========================
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    The following documentation is designed to let the System Operator
    know exactly what is taking place in each step of the BBS operations.
    Apart from being a descriptive account of how Ami-Express works, this
    documentation also tries to help sysop's optimise their systems for
    maximum efficiency.

    Well, the real update of the V2.30 DOCS have been needed for a long
    time... Well here they are. This time done by The Bird with the help
    from Andy of X-Trade. The AmiExpress Logo was done by ENFORCER.
    The most difficult process in any software commericial release is the
    developement of the Documentation. After my first release of a update
    from the normal Documentation to a big V2.30 Doc found a very big
    response on my bbs and so Bomber decided to let me write a real 
    update of the AmiExpress Doc which wil be included in every future
    version of AmiExpress. Any if you like this Documentation or you
    have a problem with AmiExpress you can call my BBS and i will help
    you with AmiEx as much as i can. And if a newer Version of AMiEx
    will be developed i will be very happy to do another update of the
    Documentation for this great BBS System. It`s very hard to write
    docs and i hope you like this new styling of the AmiExpress Docs.
    Everyone wants you to understand how the program works.
    But now lets go on with the normal Documentation of AmiExpress.

    Now open a shell and type BBS:UTILS/ACP.CTRL, You should notice a
    ICONIFIED window appear on the WorkBench screen.
    if ACP.CTRL did not appear on the Workbench Screen, ACP.CTRL
    should have left you an error message. If the ACP.CTRL doesn`t
    return a Error Message contact your local AMiEX Developer or me
    (The Bird) for more help. If there appear a Errormessage, please
    correct the error that is displayed. Now you should click on the
    ZOOM gadget to the ACP.CTRL window, This will expand the ACP
    window to reflect a series of buttons. To the left of the window
    you should see a NODE (x) button for each NODE you want to run. You
    should also notice at the upper portion of the window, 3 catagories:

        'User', 'Location', 'Action'. Under 'Action' you should see a message
    pertaining to each node saying 'Awaiting Connect'. 
    If you do not see the 'Awaiting Connect' message please open a shell
    and type Express x (where x is the node number), this should display an
    error message, most common problems is that you did not setup the 
    configuration file correctly, could mean that you mispelled the device
    driver for the serial port, or it could be that you are missing some
    files. Whatever it is, it should tell you.. Refer to later sections in
    this documentation for corrective actions.

    Below the node buttons you should see a series of 18 buttons. There
    is 15 buttons in 3 columns on the left bottom of the window., These 
    buttons control AmiExpress, the way to implement one of these buttons is
    to click on 1 of the 15 and then select a NODE button for action.

    Now if all nodes are showing 'Awaiting Connect' do the following:

    1> Press the Accounts button
    2> Press the NODE 0 button

    This will take you into account editing, you should see the following:
    -------------------------------------
    S>earch by name  N>ew account editing I>nfo
    Edit which account?
    -------------------------------------

    1> Type 1 then press <RETURN>

    This will take you into account number one, which is yours.
    You should see the following information:

--------------------------------------------------------------------------------
  ACTIVE [1]   BAUD: 14400                                                                
A> Name: User Name-------------------30  B> Location ......: Location                              
C> Pass ..........: Pass---8                                                   
D> Phone Number ..: 800-555-1212                      (123456789)              
E> Ratio .........: 0              F> Conf Access ...: X________               
G> Ratio Type ....: 0     <-Byte)  H> Sec_Level .....: 255                     
I> Uploads .......: 0              J> AutoReJoin ....: 1                       
K> Downloads .....: 0              L> Messages_Posted: 0                       
M> Bytes Uled ....: 1              N> New_User ......: No  #Calls: 0           
O> Bytes Dled ....: 0                 Last Called ...: Tue May 26 22:00:17 1992
Q> Byte Limit ....: 0                 Computer Type  : Amiga 1000              
                                   Y> Cps Up: 0         Z> Cps DN: 0                          
R> Time_Limit: [9600    ] secs    S> Time_Used: [0       ] secs  T> UUCP: 0    
                                                                               
X=EXIT-NOSAVE TAB=Cont  ~=SAVE  1-6=Presets  9=RE-ACTIVATE  DEL=DELETE

--------------------------------------------------------------------------------

    2> Press the letter A, this will let you put your name on your account.
      
    3> Press the letter B, this will let you setup a address, group name
         or whatever you like.

    4> Press the letter C, this will let you assign yourself a password.

    5> Press the letter D, this will let you out your phone number in.

    6> Now you can press a number between 1 and 6 for account defaults.

    7> Make sure that your Time_Limit is not 0.

    8> Press the tilde '~' to save the account,.

    Here is a sample of a completed sysop account:

--------------------------------------------------------------------------------
  ACTIVE [1]   BAUD: 14400                                                                
A> Name: ByteMaster                      B> Location ......: ByteMaster's BBS
C> Pass ..........: London                                                   
D> Phone Number ..: 318-793-4101                      (123456789)              
E> Ratio .........: 0              F> Conf Access ...: XXXXXXXXX
G> Ratio Type ....: 0     <-Byte)  H> Sec_Level .....: 255                    
I> Uploads .......: 0              J> AutoReJoin ....: 1                       
K> Downloads .....: 0              L> Messages_Posted: 0                       
M> Bytes Uled ....: 1              N> New_User ......: No  #Calls: 1           
O> Bytes Dled ....: 0                 Last Called ...: Tue May 26 22:00:17 1992
Q> Byte Limit ....: 0                 Computer Type  : Amiga 1000              
                                   Y> Cps Up: 0         Z> Cps DN: 0                          
R> Time_Limit: [9600    ] secs    S> Time_Used: [0       ] secs  T> UUCP: 0    
                                                                               
X=EXIT-NOSAVE TAB=Cont  ~=SAVE  1-6=Presets  9=RE-ACTIVATE  DEL=DELETE

Save
--------------------------------------------------------------------------------

    9> Press the TAB key to complete the editing.

             Now you should see the following:
         -------------------------------------
         S>earch by name  N>ew account editing I>nfo
         Edit which account?
         -------------------------------------

    10> With "I" you can get into the BBSInfo Conference witch will be
          described later..

    11> Press return to exit account editing.

    12> Select the close gadget to return to the WorkBench screen. This
          will also of course close the BBS Window.

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
==================== 9. The programmlogic of AmiExpress =====================
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    We will now describe the program logic of the Express so you can
    learn how to operate AmiExpress to it's maximum potential.

    The ACP window has 15 major buttons at the bottom of the window.
    Here is a list of there names and function:

   
   [ Sysop Login ].....Logs you into a node as the sysop
   [ Local Login ].....Enters the initial long on phase of the Node
                       This will require you to specify your name
                       and password.
   [ Instant Login ]...This will give a carrier detect command to the
                       modem, this is good for re-establishing a
                       connection to a user after talking to them voice
                       on the same line.
   [ Reserve Node ]....This allows you to tell the Node to only let a
                       certain user on the BBS. After the user has called
                       the node will no longer be reserved.
   [ AEShell ].........This will open a shell on the Node screen.
   [ Accounts ]........This takes you into account editing on a node.
   [ Toggle Chat ].....This toggles the Node's chat request flag, if a 
                       Nodes Chat request flag is off, then only user of
                       a high enough security level be able to request a
                       chat.
   [ Init Modem ]......This re-initializes a modem of a particular node.
   [ Exit Node  ]......This will shutdown the node in question.
   [ Node(offhook) ]...This will shutdown the node in question and also
                       make the line busy.
   [ Node Config ].....This will bring up our config program for a 
                       particular node.
   [ Node Chat ].......This button will take you into chat mode with a 
                       particular node.
   [ Save Win ]........This button does not require a NODE(x) complement.
                       This simply saves the window coordinates of ACP to
                       a file called S:ACP.Config
   [ Reserved ]........This button is reserved for future use.

   NOTE: All of the above mentioned buttons unless said otherwise, require
   you to press the Appropriate node button for them to take effect.


    Once all of the NODES are started the following actions take place for
    each node:

    At this point the bbs will load up the computer types from a file
    called:

    BBS:NODE(x)/COMPUTERLIST  (x) indicates 1 of 9 nodes

       EXAMPLE:
       -----------(cut here)------------
       5           <- This entry describes how many computer types follow
       Amiga 500   <- 1st entry
       Amiga 1000  <- 2nd entry
       Amiga 2000  <- 3rd entry
       Amiga 3000  <- 4th entry
       Other       <- 5th entry
       -----------(cut here)------------
       ^
       |_
         |
       NOTE: The bbs and ACP require this file to exist in order to operate

      Ami-Express then checks if the node is already running as another task,
      and if it is, then the program halts and exits with an error message.

      Next, Ami-Express will try to access the LIBS:REXXSYSLIB.LIBRARY for
      it's Arexx port routines, and if not found, will disable the Arexx port
      and inform the user that the Rexx port is disabled.

    Now the Node will check to see if you have any logon and logoff screens.
    There is an auto randomization routine for displaying screens. If you
    wish to take advantage of this then you need to decide if the logon &
    logoff screens are to be node specific or BBS specific, once you decide,
    you need to place all Node Specific logon & logoff texts in the:

    BBS:Node(x)/Screens directory.

    If you wish the screens to be the same for all nodes then you them
    in BBS:Screens.

    NOTE that if a logon screen appears in the BBS:Node(x)/Screens directory
    then the Node will use it and not bother to check if you have any in the
    BBS:Screens directory.. You can say this is kind of a priority system.

    If there is no logon screens in neither the BBS:Screens or
    BBS:Node(x)/Screens then Express will look in the BBS:Node(x) directory.

    If you plan on using the randomization screens then you will need to
    put them in either the BBS:Node(x)/Screens directory or in the
    BBS:Screens/ directory under the following filename syntax:

      LOGON1.TXT
      LOGON2.TXT
      LOGON3.TXT etc... 
      LOGOFF1.TXT
      LOGOFF2.TXT
      LOGOFF3.TXT

      Ami-Express will run thru it's initialisation process where it will take
      the modem off-hook, and configure it for BBS operation.  This is done so
      that an incoming call does not alter the configuration process.

    While someone is online you have the following function keys available
    to you:

      F1  - Chat in/out
      F2  - Increase Online time limit +10 mins
      F3  - Decrease Online time limit -10 mins
      F4  - Asks for a path/filename for a capture file (only on the sysops
              side) or if one is already open then it closes the capture and
              lets you know it did so. when you press F4 again the capture
              will be stopped.
  SHIFT+F4  - Asks for a path/filename to ASCII send a file (only on the sysops
            side)
      F5  - Local Shell
      F6  - Account Editing
  SHIFT+F6  - This will let you change the Account of a User only for that call
            he is online. When he locks off the BBS will reset his Account
            to the old one. Press Shift+F6 a second time and the changes will
              be reseted to the old ones.
      F7  - Chat Flag toggle (whether you are to be paged or not)
      F8  - Serial in on/off (User can`t write until you press F8 again)
      F9  - Serial out on/off (User can`t see what you are typing)
      F10 - Keyboard out on/off (Disconnect OnLine User *KICK*)

      Now follows the normal reactions of AmiExpress when something happens
      if the bbs is in the standby mode and the nodes are standing at
      "Awaiting Connect".

       (1). The bbs checks for F key input from the local keyboard.

       (2). Or data coming in the serial port.

       (3). Or data coming in the internal commnunication AmiExpress_Node(x)
            msgport for commands either suspend, resume, or shutdown.

       (4). Or data coming in from the AmiExpress window itself (Gadgets etc..)

       (5). Or data coming in from AmiExpress Control.(ACP)

           Once the modem picks up a RING DETECT, the bbs sends an Answer
           string specified in the config file to the modem, and waits
           for a response from the remote modem. If the resultant string
           is a valid connect string, the bbs continues with normal
           operations, if not, it resets the modem and the ACP screen will
           return to "Awaiting Connect" state.

           If the connect string was a valid one, AmiExpress firstly checks
           a couple of things before performing the login routine:

            (1). System checks for a file called:
                 BBS:NODE{x}/NOCALLERSAT{BAUD} where x is node number and
                 BAUD is the baud rate that is unaccepted. If this file
                 exists, and the current baud rate matches the BAUD, then
                 the BBS displays the file and disconnects.

      (2). Displays the connect string received from the modem.

      (3). Now, the BBS displays the standard welcome message,
           and starts to perform the actual login procedure.

      (4). Check to see if you have a door called FRONTEND , if so it 
           executes it. see section regarding doors for more info.
           Explanation: 
            To Install the frontend door you have to add the following
            Line to the 'BBS:COMMANDS/SYS.CMD' File:

         -------Cut here----------
         FRONTEND  XM005DOORS:FRONTEND/DOORBEFORELOGON <<< That`s the Door !!
         -------Cut here----------

           Where DOORBEFORELOGON is the door that will be executed right after
           the welcome message. This is a very flexible option in that it can
           be used with a door that checks who is online on the other nodes
           and their activities, and dumps this to one of the first BUllBatch
           bulls files that are displayed upon login. This is just an example,
           but it`s there to be explored. For more information on doors,
           please refer to the docs on advanced Door-Protocols and
           Implementation.

      (5). BBS checks if there is a door called "ANSI" in the SYS.CMD, if so
           it will start the door you insert and will skip the selecting
           of ANSI or ASCII Colors. Look at Point (4) above for more infos
           about installing these doors.
           If the BBS can`t find such a door it will asks if the user wants
           ANSI graphics or not.  If a 'Q' is specified at the end of the line
           like: "YES Q" or "Y Q" etc. Then the BBS checks if the Option
           SUPPRESS_QLOGON is on or not if the option is on the BBS will
           display the Logon.txt because you want to have the users seen it.
           If the Option is off and the user answers "Y Q" or "YES Q" the BBS
           will not display the logon or logoff screens.

      (6). Then if the sysop has specified a SYSTEM PASSWORD it
           displays a file called: BBS:NODEx/PRIVATE.txt(.gr) then
           asks for the SYSTEM PASSWORD.  The system gives the user
           three tries and if by then he hasn't gotten it the bbs
           hangs up, and displays in the callerslog that someone
           attempted to get the SYSTEM PASSWORD.

      (7). The bbs displays the file: BBS:NODE{x}/BBSTITLE.txt(.gr)

      (8). It now asks for the user to enter his FULL NAME, again wildcards
           are usable and will expand and ask if correct.  A user gets
           five tries at his user name, then the bbs hangs up.

      (9). Now the BBS checks for a File called BBS:NODE{x}/NOTTHISNODE.TXT
           and if the BBS finds such a file it will look in it and if there
           is the name of the User who is online, the BBS will display
         the Textfile BBS:NODE{x}/NOTTHISNODE.MSG and logs the user off...

     (10). If the bbs can't find the name supplied it will tell the user
           and ask him if he would like to 'C'ontinue to join or 'R'etry
           entering his name again.

      [C]ontinue as a New User Selected:
      ----------------------------------

          (1). If the bbs has been reserved it will notify the user that
               the bbs has been reserved for a specific member and will
               then hangup.

          (2). If the bbs hasn't been reserved then the bbs checks to see if
               the user's baud rate is allowed during the time he has called.
               If so, then the bbs allows the user to continue, otherwise it
               displays the file: BBS:NODE{x}/NOTTIME{BAUD}.txt(.gr)
                     {x} = Node number, {BAUD} = Current Baud rate.

          (3). If the sysop has specified a new user password in the config
               file then the bbs displays the file:
               BBS:NODE{x}/NEWUSERPW.txt(.gr)
               Then it asks for the new user password and if the user gets
               the password wrong it goes back and asks for his FULL NAME
               again, after 5 tries the bbs hangs up.

          (4). If the System-Operator wishes to have no more NEW users the bbs
               would look for the file BBS:NODE{x}/NONEWUSERS then displays it
               and disconnect the User. And if you wishes to have no more NEW
               users at a SPECIFIC BAUD RATES, the BBS would look for a file
               called BBS:NODE{x}/NONEWAT{BAUD}, displays it and then
               disconnecting the User.
                      {x} = Node number, {BAUD} = Current Baud rate.

          (5). Now it enters the New Account routines.

                1. Search displays BBS:NODE{x}/JOIN.txt(.gr)

                2. Asks for full name.  At this point wildcards are NOT
                   ALLOWED.  The user only has 5 chances to enter it then
                   the bbs says "Too Many Errors, Goodbye!"

                3. The bbs checks for use of a name that already exists.
                   If the name already exists it asks again.

                4. The bbs checks the name given to see if not in the list
                   of names supplied in the file BBS:NODE{x}/NAMESNOTALLOWED
                   This is a file that contains names that the sysop does
                   not want to allow on the bbs.  If the file does not
                   exists the bbs will not allow any new users to log on
                   util the file has been added.  This is to prevent
                   someone getting on as ALL or EALL etc.  A notice will
                   be placed at the end of the BBS:NODE{x}/CALLERSLOG file.  

        WARNING: You should specify in that list SYSOP, ALL, and EALL

                5. Next it asks for the City, State.

                6. The it asks for Phone Number (xxx-xxx-xxxx)

                7. Next, it asks for the Users personal Password

                8. Number of lines on screen (1-255)
              
              9. Clear Screen between Messages ?

               10. Display back all info and asks if it is correct if
                   the user needs to change something he just says no
                   its not correct and the process starts again at 2..

               11. At this point the bbs checks to see if there is a
                   script questionaire to ask the user to fill out, it
                   checks for BBS:NODE{x}/SCRIPT{BAUD}
                      {x} = Node number, {BAUD} = Current Baud rate.

                NOTE: The {BAUD} should be specified as 1200,2400,4800,
                      9600, 12000, 14400 and 16800 to allow for proper
                      connect handling by USR HST modems.

                   Now the user is asked to fill out the script if existent.
                   A sample script may look like:

                        -------------Cut Here--------------------

                        What is your Real Name: ~ 
                        What is your Real #   : ~
                        What is your Sex,Age  : ~
      
                        -------------Cut here--------------------

                   Here, the ~ character is used when a prompt for input
                   by the user is expected.  The answers are saved to
                   BBS:NODE{x}/TEMPANS before being validated by the sysop.
                   Once the Sysop validates the User, the answers are copied
                   over to BBS:NODE{x}/Answers.

             12. The bbs then displays the file BBS:NODE{x}/JOINED.txt(.gr)

         (10). Once the system has loaded the users account, it checks to see
               if the system has been reserved, if so and the user who just
               logged in is not the reserved user the bbs displays that the
               system has been reserved for that specific user, and then hangs
               up.

         (11). Then the BBS will display the BBS:NODE{x}/LOGON{y}.txt(.gr) texts
               where x stands for the Node and y for the number of the Logon
               texts. if there are random Logontexts installed in the BBS:SCREENS
               Directory this one will be displayed.

         (12). If the bbs hasn't been reserved then the bbs checks to see if
               the user's baud rate is allowed during the time he has called.
               If so, then the bbs allows the user to continue, otherwise it
               displays the file: BBS:NODE{x}/NOTTIME{BAUD}.txt(.gr)

         (13). If the users Security level is 0 then the bbs displays the
               file: BBS:NODE{x}/LOCKOUT-0.txt(.gr) and then hangs up.

         (14). If the users Security level is 1 then the bbs displays the
               file: BBS:NODE{x}/LOCKOUT-1.txt(.gr) and then hangs up.

        NOTE: These two files allow a sysop to be either polite about not
              allowing a user on the system, or if the user is an abuser,
              the sysop can have a full blown rude as hell Lockout text for
              those types of users.

         (15). At this point the system adds to the end of
               BBS:NODE{x}/CALLERSLOG that a user just logged in.

         (16). Now the bbs asks the user for his password, every time the user
               gets the password wrong the bbs adds what he tried to the end
               of BBS:NODE{x}/CALLERSLOG. After 3 tries the bbs hangs up and
               adds this to the Callerslog.

         (17). The bbs checks to see if the beginning of the username starts
               with "UUCP." if it does and the user has access to do UUCP,
               it drops to UUCICO on the serial port. For more information on
               how to implement UUCP for the Amiga, and with AmiExpress, refer
               to the section on NETMAIL with Express.

         (18). Then the standard logon sequence takes place and puts the user
               at the main command prompt

      LOGON SEQUENCE FOR A PREVIOUS USER:
      -----------------------------------

      When a user with an existing account logs into the BBS, the login
      procedure is a lot more simplified. The standard login procedure is
      listed below:

       (1). The bbs checks to see if the user has any time for the day
            if not it displays BBS:NODE{x}/LOGON24HRS.txt(.gr) file to the
            user and hangs up.

       (2). If no BULLBATCH files are specified, the BBS looks dor any
            Bulletin files in BBS:NODE{x}/BULL{SEC}.txt(.gr) where 
            {x} = NODE NUMBER and {SEC} = USERS CURRENT SECURITY LEVEL.
            If a file is found that matches the user`s security level,
            it is displayed. For example, a last callers bulletin for
            standard user security of 20 would be saved in the BBS:NODE{x}
            directory as follows: BBS:NODE{x}/BULL20.TXT and
            BBS:NODE{x}/BULL20.TXT.GR. This routine has also been simplified
            from the sysop's end so that the appropriate bulletins are
            searched for in a rounded off method.
            ie: If a user level with security level of 20 has logged in, and
                the bbs can NOT find an entry for BBS:NODE{x}/BULL20.TXT but
                finds a file called BBS:NODE{x}/BULL15.TXT, then this file
                will be displayed. If there is also a file called
                BBS:NODE{x}/BULL30.TXT, this file will be displayed to users
                with security level of at least 30 or more. Once the BBS finds
                the nearest file, it displays that file only.

          NOTE: Routines have been added to AmiExpress to make sysop setup
                a little easier and less annoying to the user.  The bbs will
                scan for a peticular file in this method:

          Say a user with access level 30 just logged in, with ansi color,
          now the BBS will check first if there is a BULL30.txt and if not
          the bbs will go on with searching for bulls lower than 30.

          Look here:

          BBS:NODE{x}/BULL30.txt.gr
          BBS:NODE{x}/BULL30.txt
          BBS:NODE{x}/BULL25.txt.gr
          BBS:NODE{x}/BULL25.txt
          BBS:NODE{x}/BULL20.txt.gr
          BBS:NODE{x}/BULL20.txt
          BBS:NODE{x}/BULL15.txt.gr
          BBS:NODE{x}/BULL15.txt
          BBS:NODE{x}/BULL10.txt.gr
          BBS:NODE{x}/BULL10.txt
          BBS:NODE{x}/BULL5.txt.gr
          BBS:NODE{x}/BULL5.txt
          BBS:NODE{x}/BULL.txt.gr
          BBS:NODE{x}/BULL.txt

       NOTE: because of this method of searching, all files to be
             searched for must end in either 0 or 5 (as above), the
             user access level will be rounded down to the nearest
             multiple of 5 and the search will start there.

           Thats an example of a search for a file to be displayed, once
           a file is found that exists it displays ONLY that file.
           This method is used on the following:

           BBS:NODE{x}/BULL
           BBS:NODE{x}/JOINCONF
           BBS:CONF/MENU
           BBS:CONF/BULL

           In some cases it works a little different, in this case
           the user security is not used, like:

           BBS:CONF/Bulletins/BULLHELP.txt.gr
           BBS:CONF/Bulletins/BULLHELP.TXT

           Thats how that one works and the following are like that:

           BBS:NODE{x}/JOINED
           BBS:NODE{x}/LOGON24HRS
           BBS:NODE{x}/GUESTLOGON
           BBS:NODE{x}/LOGON
           BBS:NODE{x}/LOGOFF
           BBS:NODE{x}/JOIN
           BBS:NODE{x}/NOTTIMEbaud
           BBS:NODE{x}/PRIVATE
           BBS:CONF/FILEHELP

        NOTE: For multiple bulletins upon login, a BULLBATCH script is used
              to display the necessary bulletins in the correct order.  For
              more information on this, please refer to the section under
              BULLBATCH implementation.


       (3). Initial User specific checks are made:

         a> The bbs now scans thru all the conferences that the user has
            access privilege to for any waiting mail. If mail is found, it
            informs the user about it and asks the user if they want to view
            it.

         b> The bbs checks to see if there are any unfinished uploads.
            If someone looses carrier uploading a file and calls back
            he will be allowed to resume his/her upload.

       (4). Then the bbs rejoins the conference the user was in the last time
            he called.

       (5). It then checks the file BBS:CONF/NDIRS to see how many, if any,
            directories of files that specific conference has.
            This file would look something like this:
 
                  ---------------CUT HERE------------
                  2
                  ---------------CUT HERE------------

            This would specify that there are two file directories where files
            are kept. A carriage return is necessary after the number.

            If this file is unavailable, the conference will have NO files
            available in it, meaning no uploads or downloads will be possible
            from it.

       (6). If the number of directories is greater than zero, the bbs looks
            to see if a file exists called BBS:CONF/FREEDOWNLOADS, if so then
            all files in this peticular conference are free to download.

       (7). Now, the BBS scans for any BBS:CONF/BULL{SEC}.TXT(.GR) files in
            the same method as described earlier on.

          NOTE: This works exactly like the BBS:NODEx/BULL files.

       (8). After displaying the available bulletins, if the user is not in
            EXPERT mode, the bbs displays the available
            BBS:CONF/MENU{SEC}.TXT(.GR) and reaches the MAIN MENU PROMPT.

          a> Any command entered at the MAIN MENU PROMPT will be looked up
             in a BBS:Commands/BBS.CMD file. If the command is found as
             a module name in that list then the module will be executed.
             If the command cannot be found, then the command will be compared
             to BBS:Commands/CONF{x}.CMD and like wise be executed if found.
             otherwise the command will be considered an internal command and
             maybe any of the commands listed below. 

           NOTE: Customcommands are totally optional, If you do not have them
                 then don't worry.

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
================== 10. The Main Menu Commands of AmiExpress =================
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

          This is a list of commands accessable from the main menu prompt:
          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      AmiExpress has many functions that are part of the program code that
      assist users in what they want out of the system.  These commands are
      mostly single letter commands that the user types and hits return for
      the execution. AmiExpress does not work with a HOT-KEY type of user
      input.  This means that the user will be saved from having to look at
      a screen load of data when they accidentally hit a wrong key.
      A carriage return always indicates an intended execution.

      This section is divided into two parts, The SYSOP ONLY COMMANDS, and The
      Standard User Commands.  First we'll have a look at the Sysop commands.


 SYSOP ONLY COMMANDS:
 ~~~~~~~~~~~~~~~~~~~
      These commands are the only commands that are called up by single digit
      number codes.  They are available only to users with SYSOP SECURITY
      LEVELS as defined in the config file by AmiConfig under ACCOUNT EDITING.

[ 1 ] - Account Editing:
        ~~~~~~~~~~~~~~~
        This is used to either review existing accounts and modify them, or
        scan for any new user logins that wish to be validated.  The account
        editing module is very easy to use in that it is basically menu
        driven. You can also get into the BBSInfo Conf. from here.

        The Accountediting will look like this:

-----------------------------------------------------------------------------
  ACTIVE [1]   BAUD: 14400                                                                
A> Name: ByteMaster                      B> Location ......: ByteMaster's BBS
C> Pass ..........: London                                                   
D> Phone Number ..: 318-793-4101                      (123456789)              
E> Ratio .........: 0              F> Conf Access ...: XXXXXXXXX
G> Ratio Type ....: 0     <-Byte)  H> Sec_Level .....: 255                    
I> Uploads .......: 0              J> AutoReJoin ....: 1                       
K> Downloads .....: 0              L> Messages_Posted: 0                       
M> Bytes Uled ....: 1              N> New_User ......: No  #Calls: 1           
O> Bytes Dled ....: 0                 Last Called ...: Tue May 26 22:00:17 1992
Q> Byte Limit ....: 0                 Computer Type  : Amiga 1000              
                                   Y> Cps Up: 0         Z> Cps DN: 0                          
R> Time_Limit: [9600    ] secs    S> Time_Used: [0       ] secs  T> UUCP: 0    
                                                                               
X=EXIT-NOSAVE TAB=Cont  ~=SAVE  1-6=Presets  9=RE-ACTIVATE  DEL=DELETE
------------------------------------------------------------------------------

      Press the following keys to change the datas of the User:
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      A> Let you change the name of the User you are looking at
      B> Let you change the location where the user is living
      C> Let you change the password of the user you are looking at
      D> Let you change the phonenumber of the current user
      E> Let you change the Ratio of the user you are looking at
      F> Here you can change the Conf.Access of the User
      G> Let you change the Ratio Type of the User. From here you have 3
         different Ratio Types:
                                - Ratio Type 0 = Bytes only
                                - Ratio Type 1 = Bytes & Files
                                - Ratio Type 2 = Files only

         This ratio type are for choosing in which way the Ratio will be
         calculated.
      H> Let you change the Security Level of the user you are looking at
      I> Let you change the number of Upload the user has done.
      J> Let you change the Conference at which the User logged in the last
         time he called the system.
      K> Let you change the number of downloads the user has done.
      L> Let you change the number of Messages the user posted in the bbs.
      M> Let you change the number of Bytes the user uploaded.
      N> Let you change if the user is a NEW USER or not. this is a flag 
         function. if it is in the "YES" modus the user will be found if
         ya search for new users. After you edit the Userdatas with a present
         the flag will be changed automatically to "NO".
      O> Let you change the number of Bytes the user downloaded.
      Q> Let you change the number Bytes which the can download at a day.
      R> Let you change the Time Limit for a day.
      S> Let you change the Time the user has allready used today.
      T> Let you change if the User is a User of UUCP or not.
      Y> Let you change the Top Upload CPS the User ever had.
      Z> Let you change the Top Download CPS the User ever had.

      Now followes the normal commands in the Account Editing:
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      [ X ]   - Exit the Account editing without saving the current changes
      [ TAB ] - Let you go to the next user who matches to the username
                you entered before.
      [ ~ ]   - Will save the current changes of the Userdatas.
      [ 1-6 ] - Will set the Userdatas to a Present of ACP.STARTUP
      [ 9 ]   - This command will re-activate a deleted user.
      [ DEL ] - This command will delete the user you are looking at.
                you can re-activate a user by typing "9" at the Accountediting
      [ + ]   - Will go on the next user in the Userdatas.
      [ - ]   - Will go on the previews user in the Userdatas.

[ 2 ] - View CallersLog:
        ~~~~~~~~~~~~~~~
        This lets the sysop view the BBS:NODE{x}/CALLERSLOG file backwards.
        The last line written to the callerslog will be displayed first
        and the first line of the callerslog will be displayed last.
        On system running more than one node, this command will ask which
        NODE's CALLERSLOG to view.


[ 3 ] - Edit File Directories (EDITOR/EMACS):
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        If you started this Command, the bbs will check if the one who started
        the command is a remote or a local one. If the one who started it is 
        a local one it will search for a Door called "EDITOR" in the SYS.CMD
        and if it exists it will be executed and the normal starting of the
        EMACS will be skipped. 

        If the one who started the command is in REMOTE_LOGON then the command
        will be executed as follows:
        This command uses the command line version of MicroEmacs for on-line
        directory editing.  For more information on how to use Emacs, you
        should refer to the section on COMMON EMACS COMMANDS.
        This command asks the user which directory to edit before it opens
        up the appropriate AUX: or CNN: channel and executing EMACS.
        NOTE: AUX{x}: is used only on remote connections and if active
              a watchdog task that checks for carrier loss is also invoked.
              If carrier is lost while editing directories, the computer
              will be reset withing two seconds.
              A special note to MULTI NODE systems: The watchdog resets the
              computer if a carrier is lost regardless of what the other
              nodes are doing.  If users are logged in on other nodes, they
              will be disconnected when the computer resets.  A later version
              of AmiExpress will send a notification to the other nodes and 
              a time-out requestor locally will inform the sysop and users 
              that express wants to reset the computer and that everyone
              should finish up what they're doing.
        
        Exiting from EMACS with CTRL-X CTRL-C key combination will return the
        user to the MAIN MENU PROMPT.  While a user is in EMACS, the BBS will
        notify the sysop by placing a line like:
        User in Emacs........

        WARNING! for those of you using the A2232 multi serial card
                 you may run into problems using the editor. We
                 are currently working on a fullscreen editor to 
                 take it's place.

[ 4 ] - Edit any Text File on System (EDITOR/EMACS):
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        This command is basically the same as the previous with the option
        to specify full path and file name to edit. This commands prompts
        the user for the necessary information.


[ 5 ] - List System Directories:
        ~~~~~~~~~~~~~~~~~~~~~~~
        This command works just like the AMIGADOS List command and displays
        the directory and sub-directories available for the specified path.
        The command can also display any comments (FILENOTES), attached to
        the files themselves.  When selected, AmiExpress will ask for the 
        full path name and whether to include comments or not.


[ 0 ] - Remote Shell:
        ~~~~~~~~~~~~
        This Command has been removed currently in this version of express.
        There are some great door with the same capabilities soon to replace
        this command. if you choose one of the great doors who are out. 
        Personallity I recommend the version of MALTESE FALCON. then install
        it as a normal door in your "BBS.CMD" commands and choose the 0
        button for that.

      This sums up the SYSOP ONLY FUNCTIONS of AmiExpress. The Next section
      deals with the standard commands available to all users.  Of course,
      certain command options can be disabled for specific security levels
      from the AmiConfig for the config file.

 REGULAR USER COMMANDS:
 ~~~~~~~~~~~~~~~~~~~~~

      The following are the regular user commands.  These commands are
      explained in detail, and any neccesary pre-requisite for the particular
      command to work is also outlined. All the commands here can be choosen
      in the ACP.STARTUP or the normal Config{x}.

[ A ] - Alter File Flags:
        ~~~~~~~~~~~~~~~~
        This command allows the user to change the flagged file list
        without having to do a file listings and get a PAUSE...MORE
        prompt to change the flags.
        Chaining data is allowed, or the routine will prompt the user
        for the information.

        First it will show the current list of flags.

        No file flags
        Filename(s) to flag: (C)lear, (Enter)=none?

        At this prompt the user can:
         1. Enter new files to add to the flag list
         2. Enter 'C' to goto the clear flag prompt

        Filename(s) to Clear: (*)All, (Enter)=none?

        At this prompt the user can:
         1. Enter filenames to remove from the flag list,
            wildcards are valid, however they will only
            remove the first entry.
         2. Use '*' to remove all entries in the list.
         3. Hit Return to exit.

        Once a user exits the Clear prompt, it will once
        again show the list of flagged files and drop back
        to the MAIN MENU PROMPT.

[ B ] - Bulletins:
        ~~~~~~~~~
        This command allows the user to view bulletins that the sysop
        has made available.
        - Firstly, the BBS checks to see if the file
          BBS:CONFNAME/BULLETINS/BULLHELP.TXT is available; if not, it tells
          the user that no bulletins are available in that conference.
        - If the BBS:CONFNAME/BULLETINS/BULLHELP.TXT is found, it is displayed
          and the user is prompted to enter the bulletin # to view or '?' to
          redisplay the BULLHELP.TXT which is the bulletins menu.
        - If a user selects a valid bulletin #, it is displayed and the bbs
          returns back to the bulletin prompt.
        - If a user selects an invalid bulletin #, the bbs informs the user
          that there is no bulletin #{x} where {x} = the specified bulletin.


[ C ] - Comment to Sysop:
        ~~~~~~~~~~~~~~~~
        This command is exactly the same as the regular ENTER MESSAGE command
        except that the message is addressed privately to the System-Operator.
        The TO: field is automatically filled with the User name on SLOT 1,
        which is the Sysop.
        If the BBS located a file called BBS:ForwardSysopMail then this file
        will be readed and the first line will be the name of the user the
        comment will be forwarded.

        for example:

        ----- cut here for BBS:ForwardSysopMail -----
        CoSysOp
        ---------------------------------------------

        Now the bbs will forward the mail also to that user you typed in
        there. This is very usefull if you go to holiday and want your cosys
        to read the messages to yeah without typing "R" for read messages.


[ D ] - Download File(s):
        ~~~~~~~~~~~~~~~~
        This command accesses the file transfer procedure for sending files
        from the system to the remote user.  The flow-chart for this command
        is quite complex and is outlined below:

        1. If the BBS:CONFNAME/NDIRS is unavailable, or it contains zero, the
           bbs informs the user that there are no files to download from
           that conference.

        2. The bbs displays the File BBS:CONF/DOWNLOADMSG.TXT

        3. The bbs displays the users Download/Upload stats.

        4. The bbs calculates the ratio limits the user has before uploading
           files to the system.

        5. Next, it displays the transfer protocol to use.  AmiZmodem is
           the only available transfer protocol at the moment.  Cotile is
           working on implementing XPR transfer protocols so, a later revision
           will have full XPR support.

        6. Now the bbs displays the TOP CPS Downloader in your System

        7. If the user had specified 'DS' instead of just 'D' the download
           is considered a sysop download and if the user's security level
           is over 200, the download can be made from any valid AmigaDos 
           path on the system.  If this is the case, the BBS asks for the
           full path and filename. NO WILDCARDS ARE ALLOWED with a Sysop
           Download.

        8. The BBS asks the user to enter the filename(s).

        9. Checks for special characters in the filename like ":/" etc.
           If found, tells the users that special symbols may not be included
           when downloading.

       10. Full Wildcards are allowed when doing a regular download, but just
           the * wildcard character alone is not allowed.

       11. Now, the bbs scans the specified paths from BBS:CONFNAME/PATHS and
           when it finds the file that the user requested, it displays the 
           file length in Kbytes, time required to download it at current baud
           rate, and checks if the user has enough credits to download the 
           file.  If so, AmiExpress checks the filename against what is in
           existing File Flag list and if it isn't already there, it adds it.
           So, if the download sequence is aborted for any reason, just hitting
           "D" again will download the flagged file.  To remove from flaglist,
           the user would use the 'A' command.

       12. Now the BBS checks if there is an Comment at the File like 
           "RESTRICTED" or "FREE DOWNLOAD" ... if there is a Comment like this
           then the BBS will display some messages when the File has a comment
           like "RESTRICTED" it is not not allowed to download this file and
           the bbs will write a comment into the BBS:NODE{x}/CALLERSLOG that a
           user tried to download this File... and with this comment you can`t 
           download this file with a level of 255 and sysop download too.. so
           the file is 100% save for downloading... if there is the comment
           "FREE DOWNLOAD" the bbs will make this file free download and it
           will costs no crediz to download it...

       13. After hitting return alone on a filespec prompt, the bbs re-checks
           the totals to see if the batch is within the user's limits.

       14. If so, AmiExpress asks either to start, abort, or automatically
           logoff at the end of the transfer.  The 'G'oodbye after transfer
           gives the user 10 seconds to change his mind after the transfer
           before performing an automatic disconnect sequence.

       15. At this point the download sequence is about to begin and so the
           necessary information is written to the BBS:NODE{x}/UDLOG.

       16. At the end of the download, if the users' security level is below
           255, then the user's number of downloads and number of bytes
           downloaded get updated with the new download stats. Look at the
           ACP.STARTUP Command "KEEP_UPLOAD_CREDIT" too.

       17. Now the bbs checks if the DownloadCps was higher than the last
           record. if the CPS is higher than the record it will display a
           little text that the user is now the fastest Downloader.

       18. At this point, the download sequence is completed, and the bbs tells
           the user his new stats before returning back to the MAIN MENU 
           PROMPT.

[ E ] - Enter a Message:
        ~~~~~~~~~~~~~~~
        This command allows the user to leave private or public mail to other
        users on the system.  There are several options with this command and
        they are outlined below.

        1. Asks for who to send it to.  If a wildcard is used the search
           will find the first user that fits the wildcard and will display
           it and then ask if its correct, if the user says no then it
           will search forward.  If it doesn't find the user it will
           exit back to the mainmenu prompt.

        2. If the user just hits return on the TO: prompt it will send
           the message to ALL.

        3. A feature added in is to be able to leave a message to
           "EALL" this means to EMAIL ALL people, this is only usable
           by users with an access level that you specified in the
           ACP.STARTUP "EALL_LEVEL". What this does is to
           leave ONE message to ALL USERS , when a person calls
           the system it searchs for mail in that conference to that
           user it will say they have mail, from the user that left the
           "EALL" message.  The TO: will show the user who is receiving
           the message with "(ALL)" after their name.  The message can
           only be deleted by the sender or a user with SYSOP access

        4. Another name that is valid in the TO: prompt is SYSOP, this
            will be replaced by the Name of the SYSOP, in user slot 1

        5. Next prompt is the Subject of the message, if the user just
           hits return it will exit out of the enter message

        6. The bbs will now ask if the message is to be readable only
           by the receiver of the message or it will be public.

        7. Now the user has entered the message editor.

        8. Tabs now work in the editor, they are indicated by a '|' in
           the header.

        9. Ctrl-X in the message editor will delete the current line.

       10. If you hit a return on a blank line you will exit the edit
           to the edit command prompt.

       11. The options are:

            1. A)bort    - Abort entering the message

            2. C)ont     - Continue entering the message, this option will
                           print the last line with text and put the cursor
                           at the end of the line.

            3. D)elete   - Allows a user to delete a specific line.

            4. E)dit     - Allows the user to change text within a line.

            5. F)ile     - Allows a user with access 240+ to attach a file
                           to download to the message.  This option will
                           ask for the filename to attach to the message
                           and if you wanted the file deleted with the
                           message as its deleted.

            6. M)ci List - If you have a MCI Header in yar Message you are
                           able to use this function. This function will 
                           display you the whole text with all MCI comment
                           in it.
            7. L)ist     - List the message to the screen.

            8. S)ave     - Saves the message.

[ F ] - File Listings:
        ~~~~~~~~~~~~~
        This command allows the user get Full directory listings of the
        catalogs maintained by the BBS.  As mentioned before, this is
        specified in the BBS:CONFNAME/NDIRS file.

        1. If the number of directories in the conference is zero
           or NDIRS is unavailable, then the bbs will display
           "No files available in this conference." and drop the user
           back to the main prompt.

        2. Displays the file BBS:CONF/FILEHELP.txt(.gr) only if
           all the options were not specified on the command line

        3. It will then ask for the directory to list including the
           'H'old directory.  The hold directory can only be used
           by a user with access greater than 200.

        4. The specified directory will be displayed and will pause
           if the NS hasn't already been specified, at the users
           lines per screen point.

        5. On the pause prompt, you can select 'F' for flaging files

[ G ] - Goodbye (LOGOFF):
        ~~~~~~~~~~~~~~~~
        This option is used to end the current session with the host
        system by the remote user.  When the user hits 'G', the bbs
        performs several clean-up functions.

        1. First checks to see if there was a ZooMail that hasn't
           been downloaded, if there was it would ask if the user
           wanted to leave anyway.

        2. The system then checks to see if there were any partial
           uploads that the user hasn't finished sending yet.  If
           so then it would let the user know and ask if he wanted
           to leave anyway.  If the user didn't want to leave, then
           the bbs would ask if the user wanted to view the files.
           If the user did want to view them, then the bbs would go
           into the resume routine showing the user the filename
           and filesize, then ask if he wanted to resume on that
           peticular file.  If not then the bbs would ask if the user
           wanted to delete the file.  If the user didn't want to
           delete the file then the bbs would go to the next file
           that was to be resumed.

        3. If the user hadn't specified the 'Q' at the ANSI color
           prompt, or the SUPPRESS_QLOGON is given the bbs would
           display the file: BBS:NODE{x}/LOGOFF.txt(.gr)

[ H ] - Help:
        ~~~~
        This command displays the on-line help text file for the user to
        refer to.
        At this command, the bbs looks for and displays the file :
        BBS:BBSHELP.TXT(.GR) and if not found will say that No help is
        currently available.

[ I ] - Information Conference:
        ~~~~~~~~~~~~~~~~~~~~~~
        This Command lets you get into a BBSInfo Conference where the user
        can see some bulletins like Top Uploader/Downloader/Caller etc.
        To enable this function for a specificed Level for User you must
        change the Accessnumber in the DEF.BBS Extended Config for AmiExpress

        1. First this Command the bbs displays the Top CPS Downloader
           and the Top CPS Uploader...

        2. Then the bbs checks if the user who locked in has the same or
           higher Security Level as in the DEF.BBS Extended Config which
           will be decribed later on.

[ J ] - Join Conference:
        ~~~~~~~~~~~~~~~
        This command is used to switch from the current conference to
        another conference that the user has access privilege to.
        The BBS looks for the file BBS:NODE{x}/JOINCONF{SEC}.TXT(.GR) and
        tries to display it.  If not found, it will print a message 
        informing the user that the file is missing.
        Then, prompts the user to enter the number of the conference they
        wish to join.  If the user does not have access to the requested
        conference, then the bbs will tell the user that they don't have 
        access to that conference.
        If the user has access to the requested conference, AmiExpress 
        switches to that conference and checks for mail for the user, and
        then display any appropriate bulletin files if they exist.
        If the Option "RELATIVE_CONFERENCES" is turned on in the ACP.STARTUP
        this will only display the Conferences on which the User have access
        to.

[ M ] - Mode Select:
        ~~~~~~~~~~~
        This command switches between ANSI color output or Plain Monochrome
        output on the users end.  When ansi is on, the bbs tries to display
        files that have the (.GR) extension by default. The normal plain
        (.TXT) files are reverted to if (.GR) extensioned files are not 
        found.

[ MC] - Enter MCI Comment:
        ~~~~~~~~~~~~~~~~~
        This command is the same as the normal "E"nter Message command in
        AMiEX. ThE only difference is that with that command you can enter
        the comment to the Sysop MCI commands like displying UserNames or some
        other datas over MCI. This command will implement the MCI header so
        you don`t have to insert the MCI header by hand.

[ ME] - Enter MCI Message:
        ~~~~~~~~~~~~~~~~~
        This command is the same as the normal "E"nter Message command in 
        AmiEX. The only difference is that with that command you can enter
        messages with MCI commands like displaying UserNames or some other
        datas over MCI. This command will implement the MCI header so you
        don`t have to insert the MCI header by hand.
  
[ N ] - New Files Since Date:
        ~~~~~~~~~~~~~~~~~~~~
        This command allows the user to list files from specified date onwards
        or from the last time they called the system. In other words, with
        this command, users can see what the system has to offer in terms of
        files since their last call.

        1. If the number of directories in the conference is zero
           then the bbs will display "No files available in this
           conference." and drop the user back to the main prompt.

        2. It will then ask for the date they want to list from.
           The last date they were on will be the default, this is
           selected by just hitting return alone.  Entering the date
           to list from must be done as MM-DD-YY.

        3. Next the bbs asks for the directory to search thru.  An 'A'
           can be used to list all directories, also 'U' can be
           specified for the upload directory.  And H for the hold
           directory. The hold directory can only be used by a user
           with access greater than 200.

        4. The Pause prompt works the same as described in the file
           listing section.

[ O ] - Operator Page:
        ~~~~~~~~~~~~~
        This command is used by the remote user to call the system operator
        for on-line chat.

        1. if the User is calling up the system operator for the first time
           on the current session, the users name field be changed to a red
           color when 3 bitplanes are active, and will have star preceding
           his name if the bbs was booted in 1 bitplane. Also, if the
           iconfied window is active, the name filed there will also be
           highlighted a different color. In this way, a sysop can see if
           the user on-line has requested to chat.

        2. If the F7 Chat toggle flag is not set to allow paging
           then the bbs says:

              "Sorry, The SYSOP, is not around right now
               You can use 'C' to leave a comment."

        3. If the chat toggle flag is set to allow paging, then the
           bbs adds to BBS:NODE{x}/CALLERSLOG that the user paged
           Then displays "Paging SYSOP (CTRL-C to Abort). ." followed
           by bells and more dots.

        4. If you, the SYSOP, wanted to chat with the user you would
           Hit F1 to enter chat, then AmiExpress looks for the file
           BBS:NODE{x}/STARTCHAT.TXT(.GR), and if found displays
           it to the user. This can be a simple greeting to the user.
           If this file is not found, then the standard sysop chat
           active message is sent to the screen. The same F1 will exit
           chat when you are finished and the bbs will display the File
           BBS:NODE{x}/ENDCHAT.TXT(.GR). During chat, if ANSI mode is
           selected, your text will be a different color than the user ones.

[ R ] - Read Mail:
        ~~~~~~~~~
        This command is used to access the on-line mailing system to read
        mail either to the user or for all users.  It is also used when a
        certain message will be replied to.

        1. First the bbs shows the read prompt

           A>gain D>elete F>ile R>eply S>earch Q>uit <CR>=Next ( a+b )?

             (1). A>gain, displays the message currently on again.
                          (specified by the 'a' in the above line)

             (2). D>elete, allows the user to delete a message only
                           if he left the message or the message is to him.
                           Also a user with access of 210+ can delete any
                           mail.

             (3). F>ile, will test if there is any Attached File to
                         download.

             (4). R>eply, allowes the user to reply to the current message.
                          The bbs will place the user on the SUBJECT: field
                          with the previous subject and place the cursor on
                          the end of the line. If the user wants to change
                          the subject he can delete over the existing subject
                          and enter a new one, or hitting return will keep the
                          old subject.
                          After this, the bbs will ask if the reply should
                          be private, and by default this is set to No.
                          Next, the bbs will ask whether to quote the current
                          message in the reply, again the default is No.
                          if the user selected Yes to quote the message, the
                          entire message will be re-displayed and the bbs will
                          prompt the user with the following:

                          Enter Startline,Endline or (*=ALL, A=Abort):

                          Where the user would have to type either a '*' to
                          quote the whole message specify start and end 
                          lines seperated by a comma.
                          Then the user would be put in the on-line message
                          editor to enter his message. Commands for the editor
                          work in much the same way as the Enter Message
                          command. For more information, please re-read the
                          ENTER MESSAGE Command.

             (5). <CR=Next>, let you continue search for new messages 

             (6). "EH" - This allows the sysop to edit a messages
                         Header. You can change who the msg is to,
                         from, the subject and whether it is to be
                         a private message.

[ S ] - Status of On-Line User:
        ~~~~~~~~~~~~~~~~~~~~~~
        This command simply reports the users' current information pertaining
        to his account. This is in the form of:

                            (123456789)
                Conf Access: XXXXXXXXX
                Caller Num.: 2049
                Lst Date On: 05-14-91
                Security Lv: 30
                # Times On : 579
                Ratio DL/UL: Disabled
                # Downloads: 0
                # Uploads  : 0
                Bytes DL'd : 0
                Bytes UL'd : 1
                Online Baud: 16800
                Rate CPS UP: 0
                Rate CPS DN: 0
                Screen  Clr: NO
                Bytes Avail: 0

                If the option "RELATIVE_CONFERENCE" is turned on in the
                ACP.STARTUP the Conference Access Information is turned off.

[ T ] - Time, at the system site:
        ~~~~~~~~~~~~~~~~~~~~~~~~
        This command reports back to the user what the internal battery backed
        up clock at the bbs site is set at.  Local time/date stamp function.

[ U ] - Upload File(s):
        ~~~~~~~~~~~~~~
        This command puts the bbs in the file receive mode, where the remote
        user can send files to the system.

        1. The bbs first checks to see if there are file directories to be
           uploaded to, by looking at BBS:CONF/NDIRS. If this file is
           unavailable or reports zero, the user is returned back to the
           MAIN MENU PROMPT after a message stating "No files available in this
           conference."

        2. If a file called BBS:CONF/UPLOADMSG.txt(.gr) exists
           the bbs displays that to the user.

      3. The bbs now displays the Top Upload Speeders of the System....

        4. The bbs now calculates free disk space, the first number
           displayed, is the amount of free space on all the drives
           listed in BBS:AMI_DRIVES

              DH0:
              DH1:
              DH2:
              DH4:   <-- DH3: is not used for the bbs at all therefore
                              it is not in the list.

           Only drives that contain download files for the bbs
           should be included, this way the user knows how much
           free space is left on the total system.

           The second number displayed is the amount of free space
           only in the BBS:CONF/UPLOAD directory.  This is so the
           bbs and the user know exactly how much space is available
           to receive uploads until the sysop does some maintance.

           Currently the bbs is content to allow uploads until the
           free space in BBS:CONF/UPLOAD is less than 2000000 bytes

        5. At this point the bbs calls the resume routine to check
           if there are any files to resume on, this works the same
           as explained under the 'G'oodbye command.

        6. The bbs will then ask the user to enter the filenames of the
           files he will be uploading, or he can press return alone to
           have zmodem tell the bbs the names.  Specifing an 'A' will
           abort out of upload altogether and drop the user back to the
           main prompt.

        7. If the user enters the filenames, the bbs will check to make
           sure they don't already exist in the conference, if not the
           bbs will ask him to enter the description for each file.
           You can choose in your Extended Config how many lines the User
           can use for his discription. Entering a blank line to end the
           description.

        8. Next the bbs will display:
           (Enter) to Start, (G)oodbye after transfer, (A)bort?
           this works the same as specified in the download routines.

        9. At this point if the user has not been added to the end of
           BBS:NODE{x}/UDLOG he will be.

       10. If the Upload will now be started the bbs will check in the file
           you specified for the NODE* FilesNotAllowed option in ACP if this
           file is not allowed to be uploaded and will skip the upload.

     11. If the Upload finished correctly the bbs checks if the User
           uploadcps was higher than the last Top Speeder User... if it
           is higher the bbs will display a little text that the user is
           now the fastest UploadCps User and then write it down..

       12. The bbs displays the stats from the transfer for all the
           files.

       13. The users time is credited for the uploads.

       14. Next the bbs goes thru the files sent and checks to see if
           the name is longer than 12 characters, if so the bbs asks
           the user to rename the file.

       15. The bbs then checks to see if the user has already given
           the descriptions for the file, if so it posts it accordingly.

       16. If the user has not already given the description the bbs
           asks for the description for the file.  Again giving 8 lines
           for the description.

       17. If the user gets disconnected while entering the description
           the bbs will put "LOSS CARRIER" for the description.
           and place the file in the BBS:CONF/LCFILES directory
           along with a <username>.lc file which will contain a list
           of all the files he will need to enter descriptions for
           when he calls back. The Re-Enter description process is
           done at log on with the PartUploads routine.

       18. Once the description has been entered the bbs checks if there
           is a door called "FILECHECK" in the SYS.CMD customcommand file
           and if it exists it will be executed and the normal "FCHECK"
           will be skipped. Here you can use a internal door for checking
           your files.
           If the door doesn`t exists express will check if there is a
           file extension. (a file extension is usually on 3 characters
           preceeded by a '.'.)

              Express now compares the extension if any with files
              of the same extension name in the BBS:FCheck directory.

              Files in the Fcheck directory specify that you are using
              external file checkers. The format for each file is
              as follows

                   ----cut here----
                   <Checker Name>
                   <option>        <---- if no option you must use the space.
                   <error text>
                   <error text>    <---- This text should reflect what
                   ----cut here----      the external checker will display
                                         in the event of a bad file.
                   

                   ie:
                   ----cut here----
                   DMS
                   Test
                   Fatal Error
                   Invalid
                   ----cut here----
                                ^
                                |
                                 ------ Save this as BBS:Fcheck/DMS

              If no external checker exists for the file then it
              proceeds to step B.
 
       19. If the archive is checked and it passes the bbs puts
           a 'P' between the filename and filesize in the listing.

       20. If the archive is checked and if found bad then the bbs
                puts a 'F' between the filename and filesize in the listing.

       21. If the file is not one of the above checkable file types
           then the bbs puts a 'N' between the filename and the
           filesize in the listing.

     22. Then the DUPE_FILECHECK option in the ACP.STARTUP comes on.
           if this option is selected then prior to the file
           being moved anywhere, it is bumped against a list of
           filenames in either the BBS:CONF/Dir(x) or 
           BBS:CONF/Dir(x).Purged. If that file name is found in
           the list then it will be moved to the Sysops private
           hold and flagged as a 'D' duplicate file.

       23. Now the bbs will post the file in a listings area.  If the
           user specified a '/' at the beginning of the description
           for the file, or the file failed archive check, or the
           user got disconnected then the bbs posts the file to the
           end of BBS:CONF/HOLD/HELD  If the archive passed or wasn't
           checkable and the user didn't specify a '/' at the beginning
           of the description then the bbs will post the file to the
           end of BBS:CONF/DIR{u} where u is the upload directory (or
           the highest directory available)

       24. If when the bbs goes to move the file, like to the hold
           directory and there is already a file in the hold with the
           same name, the bbs will add a '_' to the end of the filename
           until it can rename it to there.

       25. Once all the file are exhausted the bbs checks to make sure
           there aren't any free floating files in the BBS:NODEx/PLAYPEN
           directory, if there are the bbs moves the files to
           BBS:CONF/PARTUPLOAD as partially uploaded files from the
           current user online.

[ V ] - View a Text File:
        ~~~~~~~~~~~~~~~~
        This command allows the user to view the contents of a TEXT file
        located in the BBS:CONFNAME/UPLOAD directory.  For Co-Sysop's with
        240+ security, TEXT files can be viewed from any valid system path.

        1. The bbs first checks to see if there are file dirs in that conf.
           by looking at BBS:CONF/NDIRS. if this file is unavailable or
           reports zero, the user is returned back to the MAIN MENU PROMPT
           after a message stating "No files available in this conference."

        2. The bbs then asks the user for the filename to view.

        3. If the users access is greater than 200 and he specified
           'VS' instead of just 'V' then allow the filename to
           include the path.  The sysop view is noted at the end
           of BBS:NODE{x}/CALLERSLOG what file was viewed.

        4. The bbs then displays the file as long as the characters
           in the file are < 128 in value.  If a character is
           greater than 127 then the bbs says "This file is not a
           text file." and drops back to the main prompt.

             NOTE: If a file has a comment of RESTRICTED then the user
                   will not be able to view the file. If an attempt was
                   made then the users name will be annotated in the
                   BBS:NODE{x}/CallersLog

[ W ] - Write User Parameters:
        ~~~~~~~~~~~~~~~~~~~~~
        This command allows the user to change some personal items pertaining
        to his account on the system.
        When called, this command brings up the following:

                1. Name     : Mike Thomas
                2. From     : Dover, NH
                3. Phone    : 603-555-1212
                4. Password : ??????
                5. NumLines : 23
                6. Computer : Amiga 2000/GVP030
                7. Scrn Clr : N

                Which to change <CR>= QUIT ?

         At this prompt, the user can select which item to change, or hit
         return alone to exit from this routine.
         The first four items can be security set by the config program so
         that users with out the necessary security can not change their
         Name, From, Phone or Password. For more information, refer to the
         documentation for the AmiConfig program.

[WHO] - Node Information:
        ~~~~~~~~~~~~~~~~
        This command shows the user which users are online on the other nodes
        and what they are doing actually. If ya choose QUIETNODE for a 
        specified node, this node will be skipped in displaying it at this
        information.

[ X ] - Expert Mode Toggle:
        ~~~~~~~~~~~~~~~~~~
        This command allows the user to switch between eXpert and Novice mode
        where expert mode will not display the menu unless a '?' is specified
        at the command line and Novice will redisplay the menu after every
        command issued and completed.

[ Z ] - Zippy Search:
        ~~~~~~~~~~~~
        This command allows the user to scan thru all the BBS:CONFNAME/DIR{x}
        files for a match for a specified string.
        When it finds a match, it displays the whole filespec including the
        description.
        If the BBS:CONFNAME/NDIRS file reports zero or does not exist, then
        zippy search will not be functional.

[ ZOOM ] - Zoo Mail:
           ~~~~~~~~
           Zoo mail has been reinstalled into Ami-Express and now relies
           on current compression schemes provided by modem manufacturers
           instead of Zoo, as zoo has a tendency to crash the amiga 
           in certain instances.  ZOOM will compile all the user's unread
           mail from ALL accessable conferences into a freely downloadable
           file that will be auto-matically added to the flaglist for 
           downloading.

      This sums up the REGULAR USER COMMANDS of Ami-Express BBS. The following
      section deals with advanced configuration methods for optimum
      performance from the BBS software.  Included in the next section also
      are example scripts for many different external functions and doors.

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
=============== 11. How to use the extended config in AmiEX ================
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

      In AmiExpress there is an extended Config where you can set the
      following things:

      - At which level the BBSInfo menu can be seen or not
      - How many description lines the user can use for his descriptions
      - which logon text should appear when a user logs into the bbs

      Now you first have to install the extended Config in your ACP.STARTUP
      where you must store the following command:
 
      NODE* EXT_CONFIG BBS:DEF.BBS
 
      with this command you activate the extended config for ALL nodes in the
      file called "BBS:DEF.BBS". Now you must creat this file in your BBS:
      directory where you can set the all the things you want to have.
      The DEF.BBS config should look like this:
 
      LASTCALLERLEVEL [10]        ; Access Level for users to see BBSInfomenu
      DESC_LINES [8]              ; number of lines allowed in description
      COUNTRYNAME U.S.A., Version ; where bbs is located "" if space used
      
      to inactivate some options in the DEF.BBS just put a semicolon on the
      front of the command and it will be disabled.

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
=================== 12. How the BBSinfo Conference works  ===================
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

      The BBSINFO Conference is a special conference in AmiExpress where you
      can see some Datas like: Top Uploaders - Top Downloads - Userlist etc.
      To use this Conference you have to had a File Called
      BBS:BBSinfo.TXT(.gr). This textfile can be the description for the
      BBSInfo Conference. You can get into the BBSInfo Conference in about 2
      ways. The first one is you get into account edit choose an then you can
      choose "I" for Info and then the bbs displays you the BBSINFO.TXT(.gr)
      file and get into the BBSinfo Conference. The second way is to have the
      security level of the LASTCALLERLEVEL [x] or higher in the extended
      config, then you can press "I" in the MainMenu an the bbs first displays
      you the TopCpsSpeeders then the BBSINFO.TXT(.gr) and the let you in the
      BBSinfo Conference. For using this Conference it is better to turn of
      the Screen Clear so that you can scroll slowly over each entry. if you
      don`t remove the Screenclears it will be very hard to read the
      Top Uppers/downers etc. But now i want to explain you the abilities of
      the BBSInfo Conference:

    [1] This displays you the Top Uploaders in the BBS
    [2] This displays you the Top Downloaders in the BBS
    [3] This displays you the Top File Uploaders in your bbs
    [4] This displays you the Top Files Downloader in your bbs
    [5] This displays you all Ratios of your Users. (SYSOP ACCESS NEEDED)
    [6] This displays you Userlevels (High to low)  (SYSOP ACCESS NEEDED)
    [7] This displays you the best CPS rates in Downloading
    [8] This displays you the best CPS rates in Uploading
    [Q] this will exit the BBSInfo Conference....

      With all that option you got a very good view over your bbs.
      The options 5 & 6 are only viewable if you got a access of 255.

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
===================== 13. AREXX INTERFACE MODULE (AIM)  =====================
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

      The Arexx door interface requires a file called RexxDoor, It must be in
      located in your command path. This will also require an ASCII file
      called BBS.CMD or CONF{x}.CMD to be either located in the BBS:Commands
      directory. The format of this file will be discussed in the next
      section. RexxDoor will be launched each time an Arexx door is requested.

      Note: If a CARRIER LOSS is detected or a KeyBoard timeout is detect then
            an error code of 10 will be sent to the Arexx Script and RexxDoor
            will orderly close any ports to the BBS and itself from the Arexx
            Script.

      Now we want to discusse all the Arexx Commands which can be used to
      read & write information of the User & the BBS. These Arexx commands
      are only usefull if you wanna programm some tools for AmiExpress, and
      for that it is very hard to understand for a guy who never programmed
      arexx. But now lets go on:

 NOTE: These are internal and do not pertain to the Module Glue routines for
       designing doors.

 ---------------------------------------------------------------------------

        _____________ message structure for use with the XIMs
       |              NOTE: RexxDoors are translated to the same structure
       v                    via the RexxDoor utility
struct JHMessage
{
  struct Message Msg;   <----- msg structure
  char String[200];     <----- info buffer
  int Data;             <----- Read/Write & result indicator
  int Command;          <----- Command sent from door.
  int NodeID;           <----- reserved
  int LineNum;          <----- reserved
  unsigned long signal; <----- reserved
  struct Process *task; <----- see BB_GETTASK below

} ;

PORTNAME: The portname for the XIMs is 'AEDoorPort(n)' ie: AEDoorPort1

COMMAND NAME      FUNCTION
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
JH_LI             Requests a string of information from the user with a 
                  default string.

                  msg->Command = 0
                  msg->String  = default result string
                  msg->Data    = Maximum length of response.

                  msg->Data will be set to a -1 if a loss carrier or console
                  timeout occurs, otherwise msg->Data will be 1

                  msg->String will be the response string from the user.
(FUNCTION #: 0 )
-----------------------------------------------------------------------------
JH_REGISTER       Registers a door or XIM with the current node.

                  msg->Command = 1

                  This must be the first command issued to the express node.
                  This increments the number of doors active for the current
                  node.
(FUNCTION #: 1 )
-----------------------------------------------------------------------------
JH_SHUTDOWN       Tells the node that a door is shutting down, this decreases
                  the number of active doors inidicator , which once at 0, the
                  AEDoorPort will close.

                  msg->Command = 2
                  msg->Data    = N/A
(FUNCTION #: 2 )
-----------------------------------------------------------------------------
JH_WRITE          Allows you to send a text string to the user.

                  msg->Command = 3
                  msg->String  = text
                  msg->Data    = N/A
(FUNCTION #: 3 )
-----------------------------------------------------------------------------
JH_SM             Allows you to send a text string to the user.

                  msg->Command = 4
                  msg->String  = text
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then a CR/LF combination will be sent.
(FUNCTION #: 4 )
-----------------------------------------------------------------------------
JH_PM             Allows you to prompt the user for a specified number of
                  characters.

                  msg->Command = 5
                  msg->String  = prompt string
                  msg->Data    = maximum response length.

                  if msg->Data = -1, then a loss carrier has occured or a
                  timeout condition has occured, otherwise msg->Data = 1.

                  msg->String will be the user response.
(FUNCTION #: 5 )
-----------------------------------------------------------------------------
JH_HK             Allows you to get a 1 character respinse from the user.

                  msg->Command = 6
                  msg->String  = text
                  msg->Data    = N/A

                  if msg->Data = -1, then a loss carrier has occured or a 
                  timeout condition has occured, otherwise msg->Data = 1.

                  msg->String will be the result string.
(FUNCTION #: 6 )
-----------------------------------------------------------------------------
JH_SG             Allows you to display a text file to the user.

                  msg->Command = 7
                  msg->String  = part file name.
                  msg->Data    = N/A

                  ie:

                  msg->String = "BBS:Node1/Bull

                  This would try to display BBS:Node1/Bull.txt(.gr)
                  also takes into account language specifications.

                  This also searches for the access level patterns, ie:

                  Bull10.txt.gr, Bull100.txt.gr
(FUNCTION #: 7 )
-----------------------------------------------------------------------------
JH_SF             Allows you to display a text file to the user.

                  msg->Command = 8
                  msg->String  = Complete pathname
                  msg->Data    = N/A

                  ie:

                  msg->String  = "BBS:Node1/Bull.txt"

                  This would show the file if it exists.
(FUNCTION #: 8 )
-----------------------------------------------------------------------------
JH_EF             Allows you to use the internal msgbase editor to edit your
                  own files.

                  msg->Command = 9
                  msg->String  = Complete pathname
                  msg->Data    = 0

                  if msg->Data = -1, then a loss carrier has occured or a 
                  timeout has occured, otherwise msg->Data will be 1.
(FUNCTION #: 9 )
-----------------------------------------------------------------------------
JH_CO             Allows you to send text string to the console only.

                  msg->Command = 10
                  msg->String  = text
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then a CR/LF combination will be sent in
                  addition to the text.
(FUNCTION #: 10 )
-----------------------------------------------------------------------------
JH_BBSNAME        Allows you to retrieve the BBS Name.

                  msg->Command = 11
                  msg->Data    = N/A

                  msg->String will be the BBS name.
(FUNCTION #: 11 )
-----------------------------------------------------------------------------
JH_SYSOP          Allows you to retrieve the Sysop's Name.

                  msg->Command = 12
                  msg->Data    = N/A

                  msg->String will be the Sysop name.
(FUNCTION #: 12 )
-----------------------------------------------------------------------------
JH_FLAGFILE       Allows you to add files to the list of flagged files.

                  msg->Command = 13
                  msg->String  = FileName
                  msg->Data    = N/A

                  Adds the msg->String to the list of flagged files for 
                  downloading purposes, 

                  NOTE: The files must be in the download path for this to
                        work.
(FUNCTION #: 13 )
-----------------------------------------------------------------------------
JH_SHOWFLAGS      Obsolete, DO NOT USE.

                  msg->Command = 14
(FUNCTION #: 14 )
-----------------------------------------------------------------------------
JH_ExtHK          Reserved, DO NOT USE.

                  msg->Command = 15
(FUNCTION #: 15 )
-----------------------------------------------------------------------------
JH_SIGBIT         Reserved, DO NOT USE.

                  msg->Command = 16
(FUNCTION #: 16 )
-----------------------------------------------------------------------------
JH_FetchKey       Reserved, DO NOT USE.

                  msg->Command = 17
(FUNCTION #: 17 )
-----------------------------------------------------------------------------
DT_NAME           Allows you to retrieve or change users name/handle

                  msg->Command = 100 
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be the name.
                  if msg->Data = 0, then name will be msg->String
(FUNCTION #: 100 )
-----------------------------------------------------------------------------
DT_PASSWORD       Allows you to retrieve or change users password

                  msg->Command = 101
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be the password.
                  if msg->Data = 0, then the password will be msg->String.
(FUNCTION #: 101 )
-----------------------------------------------------------------------------
DT_LOCATION       Allows you to retrieve or change users location

                  msg->Command = 102
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be the location
                  if msg->Data = 0, then the location will be msg->String
(FUNCTION #: 102 )
-----------------------------------------------------------------------------
DT_PHONENUMBER    Allows you to retrieve or change users phone number.

                  msg->Command = 103
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be the phonenumber
                  if msg->Data = 0, ten phonenumber will be msg->String
(FUNCTION #: 103 )
-----------------------------------------------------------------------------
DT_SLOTNUMBER     Allows you to retrieve users slot number

                  msg->Command = 104
                  msg->Data    = 1

                  if msg->Data = 1, then msg->String will be the slotnumber.
(FUNCTION #: 104 )
-----------------------------------------------------------------------------
DT_ACCESSLEVEL    Allows you to retrieve or change users access level.

                  msg->Command = 105
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be accesslevel.
                  if msg->Data = 0, then accesslevel will be msg->String.
(FUNCTION #: 105 )
-----------------------------------------------------------------------------
DT_RATIOTYPE      Allows you to retrieve or change users ratiotype

                  msg->Command = 106
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be ratiotype.
                  if msg->Data = 0, then ratiotype will be msg->String.
(FUNCTION #: 106 )
-----------------------------------------------------------------------------
DT_RATIO          Allows you to retrieve or change users ratio

                  msg->Command = 107
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be ratio.
                  if msg->Data = 0, then ratio will be msg->String.
(FUNCTION #: 107 )
-----------------------------------------------------------------------------
DT_COMPTYPE       Allows you to retrieve or change users computertype code

                  msg->Command = 108
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be computertype.
                  if msg->Data = 0, then computertype will be msg->String.
(FUNCTION #: 108 )
-----------------------------------------------------------------------------
DT_MESSAGESPOSTED Allows you to retrieve or change users messagesposted

                  msg->Command = 109
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be messagesposted.
                  if msg->Data = 0, then messagesposted will be msg->String.
(FUNCTION #: 109 )
-----------------------------------------------------------------------------
DT_UPLOADS        Allows you to retrieve or change number of useruploads.

                  msg->Command = 110
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be uploads.
                  if msg->Data = 0, then uploads will be msg->String.
(FUNCTION #: 110 )
-----------------------------------------------------------------------------
DT_DOWNLOADS      Allows you to retrieve or change number of userdownloads.

                  msg->Command = 111
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be downloads.
                  if msg->Data = 0, then downloads will be msg->String.
(FUNCTION #: 111 )
-----------------------------------------------------------------------------
DT_TIMESCALLED    Allows you to retrieve or change number of usercalls.

                  msg->Command = 112
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be timescalled.
                  if msg->Data = 0, then timescalled will be msg->String.
(FUNCTION #: 112 )
-----------------------------------------------------------------------------
DT_TIMELASTON     Allows you to retrieve or change time user last called.

                  msg->Command = 113
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be timescalled.
                  if msg->Data = 0, then timescalled will be msg->String.

                  NOTE: This is not a date stamp, this is the number of
                        seconds since January 19something.
(FUNCTION #: 113 )
-----------------------------------------------------------------------------
DT_TIMEUSED       Allows you to retrieve or change timeused today.

                  msg->Command = 114
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be timeused.
                  if msg->Data = 0, then timeused will be msg->String.

                  NOTE: This is in seconds.
(FUNCTION #: 114 )
-----------------------------------------------------------------------------
DT_TIMELIMIT      Allows you to retrieve or change timeallowed for a user.

                  msg->Command = 115
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be timelimit.
                  if msg->Data = 0, then timelimit will be msg->String.

                  NOTE: Time in seconds.
(FUNCTION #: 115 )
-----------------------------------------------------------------------------
DT_TIMETOTAL      Allows you to retrive or change total time remaining.
                  for a user today.

                  msg->Command = 116
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be time remaining.
                  if msg->Data = 0, then time remaining will be msg->String.

                  NOTE: Time in seconds.
(FUNCTION #: 116 )
-----------------------------------------------------------------------------
DT_BYTESUPLOAD    Allows you to retrieve or change bytes uploads per user.

                  msg->Command = 117
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be bytesuploaded.
                  if msg->Data = 0, then bytesuploaded will be msg->String.
(FUNCTION #: 117 )
-----------------------------------------------------------------------------
DT_BYTEDOWNLOAD   Allows you to retrieve or change bytes downloaded per user.

                  msg->Command = 118
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be bytesdownloaded.
                  if msg->Data = 0, then bytesdownloaded will be msg->String.
(FUNCTION #: 118 )
-----------------------------------------------------------------------------
DT_DAILYBYTELIMIT Allows you to retrieve or change a users daily byte 
                  download limit.

                  msg->Command = 119
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be bytelimit.
                  if msg->Data = 0, then bytelimit will be msg->String.
(FUNCTION #: 119 )
-----------------------------------------------------------------------------
DT_DAILYBYTEDLD   Allows you to retrieve or change daily bytes downloaded.

                  msg->Command = 120
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be dailybytes.
                  if msg->Data = 0, then dailybytes will be msg->String.
(FUNCTION #: 120 )
-----------------------------------------------------------------------------
DT_EXPERT         Allows you to retrieve or change expert mode.

                  msg->Command = 121
                  msg->Data    = 1 or 0
(FUNCTION #: 121 )
-----------------------------------------------------------------------------
DT_LINELENGTH     Allows you to retrieve or change user linelength specs.

                  msg->Command = 122
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be linelength.
                  if msg->Data = 0, then linelength will be msg->String.
(FUNCTION #: 122 )
-----------------------------------------------------------------------------
ACTIVE_NODES      Allows you to retrieve a string of active&inactive nodes.

                  msg->Command = 123
                  msg->Data    = N/A

                  msg->String will be a string 10 bytes in length, with
                  'X's marking the active nodes.

                  NOTE: This command will surely be changing, the current
                        limit is 9 nodes.
(FUNCTION #: 123 )
-----------------------------------------------------------------------------
DT_DUMP           Allows you to dump the user's data structure to a 
                  specified file.

                  msg->Command = 124
                  msg->String  = FileName
(FUNCTION #: 124 )
-----------------------------------------------------------------------------
DT_TIMEOUT        Allows you to retrieve or change the door timeout limit.

                  msg->Command = 125
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will equal timeout.
                  if msg->Data = 0, then timeout will equal msg->String.

                  NOTE: This time is in seconds.
(FUNCTION #: 125 )
-----------------------------------------------------------------------------
BB_CONFNAME       Allows you to retrieve or change the conference name.

                  msg->Command = 126
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be name.
                  if msg->Data = 0, then name will be msg->String.
(FUNCTION #: 126 )
-----------------------------------------------------------------------------
BB_CONFLOCAL      Allows you to retrieve or change the conference location.

                  msg->Command = 127
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be location.
                  if msg->Data = 0, then location will be msg->String.
(FUNCTION #: 127 )
-----------------------------------------------------------------------------
BB_LOCAL          Allows you to retrieve the current BBS location.

                  msg->Command = 128
                  msg->Data    = N/A
(FUNCTION #: 128 )
-----------------------------------------------------------------------------
BB_STATUS         Allows you to retrieve the current status of the node.

                  msg->Command = 129
                  msg->Data    = N/A

                  msg->String will be 'OFFLINE' or 'ONLINE' depending on
                  whether a user is logged onto the node.
(FUNCTION #: 129 )
-----------------------------------------------------------------------------
BB_COMMAND        Obsolete, DO NOT USE

                  msg->Command = 130
(FUNCTION #: 130 )
-----------------------------------------------------------------------------
BB_MAINLINE       Allows you to retrieve the menu prompt arguments prior to
                  the door being entered.

                  msg->Command = 131
                  msg->Data    = N/A

                  msg->String will be the menu prompt arguments.
(FUNCTION #: 131 )
-----------------------------------------------------------------------------
NB_LOAD           Obsolete, DO NOT USE

                  msg->Command = 132
(FUNCTION #: 132 )
-----------------------------------------------------------------------------
DT_USERLOAD       Obsolete, DO NOT USE

                  msg->Command = 133
(FUNCTION #: 133 )
-----------------------------------------------------------------------------
BB_CONFIG         Obsolete, DO NOT USE

                  msg->Command = 134
(FUNCTION #: 134 )
-----------------------------------------------------------------------------
CHG_USER          Obsolete, DO NOT USE

                  msg->Command = 135
(FUNCTION #: 135 )
-----------------------------------------------------------------------------
RETURNCOMMAND     Allows you to specify an internal command to be executed
                  when the door is finished.

                  msg->Command = 136
                  msg->Data    = N/A

                  command to be executed will be msg->String.
(FUNCTION #: 136 )
-----------------------------------------------------------------------------
ZMODEMSEND        Allows you to send files to the user via Zmodem protocol.

                  msg->Command = 137
                  msg->String  = filename (complete pathname)
                  msg->Data    = N/A

                  result of transfer will be in msg->Data, where

                  if msg->Data = 1 , then transfer successful.
                  if msg->Data = -2, then user lost carrier.
                  if msg->Data = 0 , then transfer unsuccessful.
(FUNCTION #: 137 )
-----------------------------------------------------------------------------
ZMODEMRECEIVE     Allows you to receive batch uploads via Zmodem protocol.

                  msg->Command = 138
                  msg->String  = receive directory path
                  msg->Data    = N/A

                  result of transfer will be in msg->Data, where

                  if msg->Data = 1 , then transfer successful.
                  if msg->Data = -2, then user lost carrier.
                  if msg->Data = 0,  then transfer unsuccessful.
(FUNCTION #: 138 )
-----------------------------------------------------------------------------
SCREEN_ADDRESS    Allows you to retrieve the screen address.

                  msg->Command = 139
                  msg->Data    = N/A

                  msg->String will be a string containing the hexadecimal
                  address of the Node screen.
(FUNCTION #: 139 )
-----------------------------------------------------------------------------
BB_TASKPRI        Allows you to retrieve the priority the node is running at.

                  msg->Command = 140
                  msg->Data    = N/A

                  msg->String will contain the priority of the node.
(FUNCTION #: 140 )
-----------------------------------------------------------------------------
RAWSCREEN_ADDRESS Allows you to retrieve the screen address of the node.

                  msg->Command = 141
                  msg->Data    = N/A

                  msg->String will be a string containing the decimal address
                  of the express node.
(FUNCTION #: 141 )
-----------------------------------------------------------------------------
BB_CHATFLAG       Allows you to retrieve the current chat setting.

                  msg->Command = 142
                  msg->Data    = N/A

                  msg->String will be "ON" or "OFF".
(FUNCTION #: 142 )
-----------------------------------------------------------------------------
DT_STAMP_LASTON   Allows you to retrieve a date string containing the date of
                  when the user last logged on.

                  msg->Command = 143
                  msg->Data    = N/A

                  msg->String will be the date string.
(FUNCTION #: 143 )
-----------------------------------------------------------------------------
DT_STAMP_CTIME    Allows you to retrieve a current time string.

                  msg->Command = 144
                  msg->Data    = N/A

                  msg->String will be a current time string.
(FUNCTION #: 144 )
-----------------------------------------------------------------------------
DT_CURR_TIME      Allows you to retrieve the current time in seconds since
                  January something.

                  msg->Command = 145
                  msg->Data    = N/A

                  msg->String will be the current time.
(FUNCTION #: 145 )
-----------------------------------------------------------------------------
DT_CONFACCESS     Allows you to retrieve the users conference access.

                  msg->Command = 146
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be access string.
                  if msg->Data = 0, then access string will be msg->String.

                  NOTE: string consists of upto 9 'X' or '_'. ie:

                         123456789
                         ---------
                         X_XXXX_XX   <-- 'X' = access, '_' = no access
(FUNCTION #: 146 )
-----------------------------------------------------------------------------
BB_PCONFLOCAL     Reserved, DO NOT USE

                  msg->Command = 147
(FUNCTION #: 147 )
-----------------------------------------------------------------------------
BB_PCONFNAME      Reserved, DO NOT USE

                  msg->Command = 148
(FUNCTION #: 148 )
-----------------------------------------------------------------------------
BB_NODEID         Allows you to retrieve the Node number for the current 
                  node

                  msg->Command = 149
                  msg->Data    = N/A

                  msg->String will be the node number.
(FUNCTION #: 149 )
-----------------------------------------------------------------------------
BB_CALLERSLOG     Allows you to add a line of text to the callerslog.

                  msg->Command = 150
                  msg->String  = text
                  msg->Data    = N/A
(FUNCTION #: 150 )
-----------------------------------------------------------------------------
BB_UDLOG          Allows you to add a line of text to the udlog.

                  msg->Command = 151
                  msg->String  = text
                  msg->Data    = N/A
(FUNCTION #: 151 )
-----------------------------------------------------------------------------
EXPRESS_VERSION   Allows you to retrieve the current version string of 
                  express.

                  msg->Command = 152
                  msg->Data    = N/A
(FUNCTION #: 152 )
-----------------------------------------------------------------------------
SV_UNICONIFY      Reserved, DO NOT USE without first consulting the author

                  msg->Command = 153
(FUNCTION #: 153 )
-----------------------------------------------------------------------------
BB_CHATSET        Allows you to retrieve or change the chat status.

                  msg->Command = 162
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be current status.
                  if msg->Data = 0, then status will be msg->String.
(FUNCTION #: 162 )
-----------------------------------------------------------------------------
ENVSTAT           Allows you to retrieve or change the current environment
                  stat variable code.

                  msg->Command = 163
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be status.
                  if msg->Data = 0, then status will be msg->String.
(FUNCTION #: 163 )
-----------------------------------------------------------------------------
GETKEY            Reserved, DO NOT USE.

                  msg->Command = 500
(FUNCTION #: 500 )
-----------------------------------------------------------------------------
RAWARROW          Reserved, DO NOT USE.

                  msg->Command = 501
(FUNCTION #: 501 )
-----------------------------------------------------------------------------
CHAIN             Reserved, DO NOT USE.

                  msg->Command = 502
(FUNCTION #: 502 )
-----------------------------------------------------------------------------
NODE_DEVICE       Allows you to retrieve the node device name.

                  msg->Command = 503
                  msg->Data    = N/A

                  msg->String will be the device string.
(FUNCTION #: 503 )
-----------------------------------------------------------------------------
NODE_UNIT         Allows you to retrieve the node unit number.

                  msg->Command = 504
                  msg->Data    = N/A

                  msg->String will be the current node number.
(FUNCTION #: 504 )
-----------------------------------------------------------------------------
NODE_BAUD         Allows you to retieve the initialized baud rate of the node.

                  msg->Command = 505
                  msg->Data    = N/A

                  msg->String will be the init baud rate.
(FUNCTION #: 505 )
-----------------------------------------------------------------------------
NODE_NUMBER       Obsolete, DO NOT USE.

                  msg->Command = 506
(FUNCTION #: 506 )
-----------------------------------------------------------------------------
JH_MCI            Allows you to send mci text to express.

                  msg->Command = 507
                  msg->String  = text
                  msg->Data    = N/A
(FUNCTION #: 507 )
-----------------------------------------------------------------------------
PRV_COMMAND       Allows you to immediately execute an internal express
                  menu command.

                  msg->Command = 508
                  msg->String  = commandstring
                  msg->Data    = N/A
(FUNCTION #: 508 )
-----------------------------------------------------------------------------
PRV_GROUP         Reserved, DO NOT USE.

                  msg->Command = 509
(FUNCTION #: 509 )
-----------------------------------------------------------------------------
BB_CONFNUM        Allows you to retrieve the current conference number.

                  msg->Command = 510
                  msg->Data    = N/A

                  msg->String will be conference number ranging from 0 to 8.
(FUNCTION #: 510 )
-----------------------------------------------------------------------------
BB_DROPDTR        Allows you to drop carrier on a user.

                  msg->Command = 511
                  msg->Data    = N/A
(FUNCTION #: 511 )
-----------------------------------------------------------------------------
BB_GETTASK        Finds the current nodes task address.

                  msg->Command = 512
                  msg->Data    = N/A

                  msg->task will be the express task address.
(FUNCTION #: 512 )
-----------------------------------------------------------------------------
BB_REMOVEPORT     Obsolete, DO NOT USE.

                  msg->Command = 513
(FUNCTION #: 513 )
-----------------------------------------------------------------------------
BB_SOPT           Obsolete, DO NOT USE.

                  msg->Command = 514
(FUNCTION #: 514 )
-----------------------------------------------------------------------------
NODE_BAUDRATE     Allows you to retrieve the current users connect rate

                  msg->Command = 516
                  msg->Data    = N/A

                  msg->String will be the connect rate
(FUNCTION #: 516 )
-----------------------------------------------------------------------------
BB_LOGONTYPE      Allows you to retrieve the LOGONTYPE.

                  msg->Command = 517
                  msg->Data    = N/A

                  msg->Data will be:

                  0 = AWAIT_LOGON
                  1 = SYSOP_LOGON
                  2 = LOCAL_LOGON
                  3 = REMOTE_LOGON
(FUNCTION #: 517 )
-----------------------------------------------------------------------------
BB_SCRLEFT        Allows you to retrieve the screen coordinates.

                  msg->Command = 518
                  msg->Data    = N/A

                  msg->Data will be the Node's Initial leftedge coordinate.
(FUNCTION #: 518 )
-----------------------------------------------------------------------------
BB_SCRTOP         Allows you to retrieve the screen coordinates.

                  msg->Command = 519
                  msg->Data    = N/A

                  msg->Data will be the Node's Initial topedge coordinate.
(FUNCTION #: 519 )
-----------------------------------------------------------------------------
BB_SCRWIDTH       Allows you to retrieve the screen coordinates.

                  msg->Command = 520
                  msg->Data    = N/A

                  msg->Data will be the Node's Initial screen height.
(FUNCTION #: 520 )
-----------------------------------------------------------------------------
BB_SCRHEIGHT      Allows you to retrieve the screen coordinates.

                  msg->Command = 521
                  msg->Data    = N/A

                  msg->Data will be the Node's Initial screen width.
(FUNCTION #: 521 )
-----------------------------------------------------------------------------
BB_PURGELINE      Allows you to abort serial input.

                  msg->Command = 522
                  msg->Data    = N/A

                  aborts serial input and flushes the serial buffer and sends
                  a request for more input.
(FUNCTION #: 522 )
-----------------------------------------------------------------------------
BB_PURGELINESTART Allows you to CLEAR the serial buffer and request more
                  serial input.

                  msg->Command = 523
                  msg->Data    = N/A
(FUNCTION #: 523 )
-----------------------------------------------------------------------------
BB_PURGELINEEND   Allows you to CLEAR the serial buffer.

                  msg->Command = 524
                  msg->Data    = N/A
(FUNCTION #: 524 )
-----------------------------------------------------------------------------
BB_NONSTOPTEXT    Allows you to change the NONSTOP text scrolling flag.

                  msg->Command = 525
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then display text will not pause.
                  if msg->Data = 0, then display text will pause.
(FUNCTION #: 525 )
-----------------------------------------------------------------------------
BB_LINECOUNT      Allows you to retrieve or change the user's current number
                  of lines viewed.

                  msg->Command = 526
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be current line.
                  if msg->Data = 0, then current line will be msg->String.
(FUNCTION #: 526 )
-----------------------------------------------------------------------------
DT_LANGUAGE       Allows you to retrieve or change the current language
                  specifications. 

                  msg->Command = 527
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then msg->String will be language.
                  if msg->Data = 0, then language will be msg->String.

                  NOTE: Languages need to be standardized, please what for
                        guidlines.

                  ie:  Default language .txt , .txt.gr
                       English          .Eng , .Eng.gr
                       German           .Ger , .Ger.gr

                       note that this only effects the menus, bulletins &
                       other screen text files.
(FUNCTION #: 527 )
-----------------------------------------------------------------------------
DT_QUICKFLAG      Allows you to change the QUICKTEXT flag.

                  msg->Command = 528
                  msg->Data    = 1 or 0

                  if msg->Data = 1, then the QuickFlag will be set.
                  if msg->Data = 0, then the QuickFlag will not be set.
(FUNCTION #: 528 )
-----------------------------------------------------------------------------
DT_GOODFILE       Allows you to set the results of a tested file after 
                  upload.

                  msg->Command = 529
                  msg->Data    = 1,0 or -1

                  if msg->Data is 1, then the file was not tested.
                  if msg->Data is 0, then the file passed the filetest.
                  if msg->Data is -1, then the file failed the filetest.

                  NOTE: This command is only useful with the sys.cmd door
                  called FILECHECK.
(FUNCTION #: 529 )
-----------------------------------------------------------------------------
DT_ADDBIT         Reserved, DO NOT USE.

                  msg->Command = 1000
(FUNCTION #: 1000 )
-----------------------------------------------------------------------------
DT_REMBIT         Reserved, DO NOT USE.

                  msg->Command = 1001
(FUNCTION #: 1001 )
-----------------------------------------------------------------------------
DT_QUERYBIT       Reserved, DO NOT USE.

                  msg->Command = 1002
(FUNCTION #: 1002 )
----------------------------------------------------------------------------

                       NOTE!!!!!,, VERY IMPORTANT!!!

  DO NOT USE ANY COMMANDS THAT ARE NOT DOCUMENTED, SERIOUS PROBLEMS COULD
  OCCUR. The commands that are Obsolete or Reserved do not use either. 

      At the moment these are the only commands available for AmiExpress
      Door Interfaces.

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
================== 14. TRADITIONAL INTERFACE MODULE (TIM)  ==================
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

      The Traditional interface provides the capability to run "DOORS"
      designed for other Bulletin  Board Systems. This is not to say that it
      will interpret all "DOORS" but some may work. The traditional interface
      requires a file called PARADOOR, which is supplied with AmiExpress and
      must be located in a path that AmiExpress can find. If a CARRIER LOSS
      is detected or a keyboard timeout is detected, the BBS will notify the
      Module, but it is up to the Module to do an orderly halt.  Most door
      programmers know how to close their doors properly. AmiExpress
      automatically launches the PARADOOR so please do not run it yourself.


:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
================= 15. AMIEXPRESS INTERFACE MODULE (XIM)  ====================
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

      My interface is by far the best of all of these put together, it
      allows you to do a lot of stuff.  The best part about this interface is
      you don't need a seperate program to access it. There will be a lot of
      Modules out for this in the near future, we have several being made
      right now.

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
===================== 16. CUSTOM COMMANDS FILE FORMAT  ======================
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

      Custom Commands is the key to making the new Modules work on AmiExpress
      All you have to do is specify the Module name you would like users to
      use, in a file called BBS.CMD or CONF{x}.CMD, this file can go in the
      BBS:Commands directory. If the Door is listed in the CONF{x}.CMD or
      BBS.CMD file then the door will be executed.

      The format is as follows:
      ~~~~~~~~~~~~~~~~~~~~~~~~
 __________ COMMAND TO ENTER MODULE
|          _______ MODULE TYPE ( SEE BELOW FOR EXPLAINATION OF TYPES ALLOWED)
|         | ________ MULTI or SINGLE NODE MODULE
|         || _________ SECURITY ACCESS LEVEL
|         |||   ________MODULE LOCATION AND FILENAME
|         |||  |
|         |||  |
v         vvv  v
BB        XS020BBS:BulletinBoard
Bulletins XM030BBS:BulletinBoard
CoSysop   XS040WORK:CoSysop/CoSysop
Test      RM050bbs:rexx/test.rexx
spawn     RS001pgdoors:hacker/misc/rxx.maint
hacker    RM100pgdoors:hacker/hacker.strip
motel     RS090pgdoors:motel/motel!

NOTE: That this is a formatted file, The module type must be in position
      11 and the path and filename of the module must be in position 16.

OPTIONAL RETARD COMMANDS FORMAT

 ____________ TRUNCATE COMMAND COMPARISON.
|  __________ COMMAND TO ENTER MODULE
| |         _______ MODULE TYPE ( SEE BELOW FOR EXPLAINATION OF TYPES ALLOWED)
| |        | ________ MULTI or SINGLE NODE MODULE
| |        || _________ SECURITY ACCESS LEVEL
| |        |||   ________MODULE LOCATION AND FILENAME
| |        |||  |
| |        |||  |
v v        vvv  v
*BB       XS020BBS:BulletinBoard
*Test     RM050bbs:rexx/test.rexx

MODULE TYPE  - Module type may be any of the following:

             X,R,P      X = This means the module is an AmiExpress module.
                        R = This means the module is an Arexx module.
                            Which means RexxDoor will be called to
                            execute it. 
                        P = This means the module is a Traditional module, 
                            so the BBS will launch ParaDoor to execute this
                            module.

 NOTE: RETARD COMMANDS- Could not think of a better name for it but the '*'
       at the beginning of the module name indicates that if the first part
       of the command from the menu prompt matches the module name then it
       will assume you made a mistake when typing the command, Otherwise
       it would not find the module name and try to execute an internal
       command in the BBS.

       IE: Looking above at the 'Test' Module if we did not have the '*'
           then a user could accidently type 'Testit'. If this did occur
           then express would not be able to locate the module named TestIt
           and therefore execute the internal 'T' command which would
           result in the user getting the system time instead of the test.

       Using the RETARD command is a good why of overriding internal BBS
       commands with commands of your own.

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
=================== 17. THE MCI IMBEDDED CONTROL SEQUENCE   =================
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

      Any text file may contain imbedded control sequences which will send out
      variable text or cause certain things to happen.

      MCI - Introducer:
      ~~~~~~~~~~~~~~~~
      ~ This is the MCI introducer, this must be at the beginning of
        each text file by itself inorder for Express to switch to the MCI
        interpreter for displaying the text file.

      MCI - User Specification:
      ~~~~~~~~~~~~~~~~~~~~~~~~

      ~N       User Name
      ~UL      User Location
      ~P       User PasswordP
      ~#       User Phone
      ~TC      Total User Calls
      ~LC      User Last Call to the system
      ~M       User Message Posted
      ~A       User Access Level
      ~S       User Slot Number
      ~CA      User Conf. Access    **** NOTE CHANGED FROM X ****
      ~BR      User BaudRate
      ~HW      User Computer Equipment
      ~TL      User Inital Time Limit at logon in Minutes
      ~TR      User Number of Mins Remaning today
      ~UB      User Bytes Uploaded
      ~DB      User Bytes Downloaded
      ~FU      User Files Uploaded
      ~FD      User Files Downloaded
      ~BD      User Byte Download Limit
      ~LG      User Logged On-Node
      ~Dx      Change the MCI command terminator.
                i.e: ~D.| will change the '|' to '.'

      ~cx      Change foreground ansi color to anything from 0-f.
      ~bx      Change background ansi color to anything from 0-f.
      ~h       Back Space
      ~q       Change to default ANSI mode.
      ~f       Clear Screen.
      ~nx      Newlines where x is the number of them you would like
      ~~        This indicates you wish the ~ symbol to apprear, you can
                have as many of them as you like after the first ~ to display
                them (NOTE: no ',' on this command)
      ~xn      Goto X position on screen. ie: ~x10
      ~yn      Goto Y position on screen. ie: ~y10

      NOTE: The above commands allow you to specify a width identifier before
            the action test.. ie:
            ~10N would only display the first 10 letters of the username.

      MCI - System Specification:
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~

      ~SC     System Total calls
      ~CT     Show current Time
      ~DT     Show current Date

      MCI - Extra Specification:
      ~~~~~~~~~~~~~~~~~~~~~~~~~ 

      ~CR         will wait for any key to be pressed.
      ~CR_Prompt  will wait for and prompt the user to press any key.
                  ie: ~CR_PressAnyKey
      ~SP         will do a standard pause, this is useful to put in
                  between each ~SS command.

      ~SS_Name    Show <name> file. This file may also be an MCI file.
                  WARNING: This command could cause a serious loop problem if
                           you tell it to show the same file you are viewing.
                  WARNING: You may need to increase STACK if you nest to many
                           of these files.

                  NOTE: If this command is accessed via the message base or the
                        View or ViewSysop commands, then the file you are going
                        to view has to have a file comment of 
                        'Allowed' or '{xxx}Allowed'

                        {xxx} specifies security level or above ie:

                        {050}Allowed, idicates that only those over or equal to 
                                      access level of 50 are allowed to view the
                                     file.

      ~CC_Name    Launch a door 'Name' is the door's name.
                  ie: ~CC_WHO will look in SYS.CMD, BBS.CMD and CONF.CMD
                      customcommands which must be located in the
                      BBS:Commands directory.

      ~CL         this command will display a list of conferences,
                  commonly used in the JoinConf.txt file

      *******************************************************************
      NOTE: ALL MCI COMMANDS MUST END WITH EITHER A SPACE OR A '|' SYMBOL
                     ALL COMMANDS ARE CASE SENSITIVE!!!!!!!!
      *******************************************************************

      Having a line in a text file that contains:
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      ~N , I hope everything is going well in ~L .

      Might show:
      ~~~~~~~~~~
      Joseph Hodge, I hope everything is going well in Virginia.

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
=============== 18. COMPLETE LIST OF ALL ACP.STARTUP COMMANDS  ==============
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

                    WELCOME TO THE BRAIN OF AMIEXPRESS 
 
       NOTE: The following commands are for ACP.CTRL, these
             are not AmigaDos commands, so please do not try
             and execute it ;)

       NOTE: All commands must begin in the 1st column of each line.
             Any commands that you do not wish to implement should have
             a ';' in front of it, or deleted altogether

       The command NODE has the following syntax:

       NODE('*'|node) - where '*' indicates all nodes and 'node'
                        refers to the specific node number.

       ie: NODE* LEFTEDGE 0
           ^   ^ ^        ^
           |   | |        ----- assign 0 to variable LEFTEDGE
           |   | -------- variable
           |   ----- All nodes
           ------ NODE command

       NOTE: ALL 'NODE' commands may be placed anywhere in the text file after
             the NUMBER_OF_NODES specification. They can be in any order you
             like as long as it is after that specification

------------------------------------------------------------------------------
ACP_PRIORITY x          Will Set the Taskpriority of ACP.CTRL to 'x'
------------------------------------------------------------------------------
ITOP   23               Will Set the Window to the specified Coordinates.
ILEFT 220
------------------------------------------------------------------------------
ICONIFY                 If Set, the BBS will start all nodes Iconfied
------------------------------------------------------------------------------
NUMBER_OF_NODES 3       Will tell ACP.CTRL how many nodes you are running
                        
                        NOTE: 'NODE' commands must not be used before this
                              specification. This is the only restriction in 
                              the order of commands in the script file.
------------------------------------------------------------------------------
PUBLICSCREEN AEBench    Will let you specify a PublicScreen for ACP to run on
                        If the screen cannot be found then it will be created.
                        If this option is not specified then ACP will use the
                        workbench screen.
------------------------------------------------------------------------------
NODE* LEFTEDGE 0        This speficies the left position of the Express window
NODE* TOPEDGE  0        This specifies the top position of the Express window
NODE* WIDTH    640      This specifies the width of the Express window
NODE* HEIGHT   200      This specifies the length of the Express window
NODE* BITPLANES  3      This specifies the number of bitplanes you wish to use
                        This value can range from 0 to 4, this tells express
                        how many colors is allowed for the specified node.

                        BITPLANE 0 = Use WorkBench Screen and colors
                                     associated with it.
                                 1 = 2 colors
                                 2 = 4 colors
                                 3 = 8 colors
                                 4 = 16 colors

------------------------------------------------------------------------------
NODE* A2232_PATCH       This command will tell express to run A2232 Patch
                        routines, if you do not have a A2232 MultiSerial
                        card, please do not choose this option.
 
                        This option will allow express to accept ASCII sends.
------------------------------------------------------------------------------
NODE* BREAK_CHAT

                        This Command will turn on/off the ability for yar
                        users to break out of the chat by pressing CTRL-C or
                        to stop the displaying fo files with CTRL-C in the
                        chat.
------------------------------------------------------------------------------
NODE* LOGOFFBATCH  <pathname>

                        This Command let you choose a LOGOFFBATCH which will
                        be executed every time a user logs off the bbs.
                        The <pathname> should be replaced with a valid pathname
                        ie: BBS:Logoff.bat

                        The logoff batch file may need a script bit placed on it
                        depending on the type of shell interface you are using.

                        If your LOGOFFBATCH scripts do not seem to work then 
                        try doing the following:

                        PROTECT <pathname> +s

                        ie:

                        PROTECT BBS:logoff.bat +s
------------------------------------------------------------------------------
NODE* SHUTDOWN_BATCH  <pathname>
      
                        This Command let you choose a SHUTDOWN BATCH which
                        will be executed every the bbs will be shutdown.
                        This command is very similiar to the LOGOFFBATCH.
------------------------------------------------------------------------------
NODE* STATBAR           If this command is given the Statusbar will be turned
                        on for the specified Node you give to the command.
                     
                        Note: Because of many request and bugs the public
                      screen & right mousebuttonmenu are removed
                      now and the statbar is back in business.
                          Hope ya like it to have the statbar back.
------------------------------------------------------------------------------
NODE* PLAYPEN <unique directory>
                        
                        This Command let you specify where your playpens
                        (where the files fo WHILE uploading and will be moved
                         later to the upload directory) will be located, also
                        will (or should) allow for conferences to be on
                        different partitions if this options is used.

                        NOTE: This command will cause express to creat this
                              directory. There should be a different
                              directory name for each node.
                        NOTE: I do not advise using this in RAM: at the moment
                              This will be implemented later on.
------------------------------------------------------------------------------
NODE* FilesNotAllowed BBS:FilesNotAllowed

                        This command will prevent the uploading of files
                        who are listed in the file BBS:FilesNotAllowed. In
                        this file you can also use wildcards(Joker) for
                        restricting uploading of file with these extensions.

                        ----- cut here for BBS:FilesNotAllowed -----
                        *.c
                        *.Doc
                        *.WRP
                        ----- cut here -----------------------------

                        Now the uploading of file with these extensions is
                        not allowed. The BBS will skip the upload if it found
                        a file like the above.
------------------------------------------------------------------------------
NODE* EALL_LEVEL 220    This command lets you choose the Level at which a User
                        can send a message to EALL (ALL) users.

                        If you wish all 100 ACCESS LEVEL users to have the
                        ability then you would put the following in the
                        startup file:

                        NODE* EALL_LEVEL 100
------------------------------------------------------------------------------
NODE* INTERLACE         If this command is given, the specificed Node will be 
                        started in interlace mode.
------------------------------------------------------------------------------
NODE* RELATIVE_CONFERENCES

                        If this command is given AmiExpress will handle the
                        Conferences much differently. If you press "J" it
                        will only allow a user to join conferences they have
                        access. They will not know how many conferences are
                        unavailable to them. This command works nice if using
                        the MCI command ~CL in the JoinConf.txt file. The 
                        Conference access display at the "S" command will be 
                        disabled.
                        
------------------------------------------------------------------------------
NODE* ACTIVATE_WINDOW   If this command is given, the specified node will
                        be started directly with a opened window.
------------------------------------------------------------------------------
NODE* EXTCONFIG <pathname>

                        With this command you choose the filename for the
                        extended config. 

                        The extended config is totally optional and will be
                        OBSOLETE in upcoming releases as we merge the
                        extended config commands into the ACP standardized
                        commands.

                        ie:

                        NODE* EXTCONFIG BBS:BBS.def
------------------------------------------------------------------------------
NODE* DUPE_FILECHECK    If this command is given, the specified node will
                        check the dir(x) files & dir(x).purged files after
                        an upload, if the file exists in the dir(x) or
                        dir(x).purged, the file will be placed in the sysop
                        hold directory and flagged as a duplicate file.
------------------------------------------------------------------------------
NODE* SUPPRESS_QLOGON   If this command is given the specified node will force
                        a user to see your logon/logoff screens.
------------------------------------------------------------------------------

==============================================================================

        Now follows all the ACCESS LEVEL things for AmiExpress, that means
        at which level a User can do something. The following commands are
        not really needed. You can use the normal Config(x) instead of the
        following commands. But remeber, never put a ZERO (0) at a ACCESS
        LEVEL or this function will be disabled for all levels.

==============================================================================

NODE* ACCOUNT_EDITING      255  This Command specifies the Security Access
                                at which a user can use the Account Editing
                                It is recommend to put there the access level
                                of 255 so that no other users can use this
                                very important command.
------------------------------------------------------------------------------
NODE* BULLETINS            10   This Option lets you choose at which Level a
                                User can view the Bulletins in your bbs.
------------------------------------------------------------------------------
NODE* COMMENT_TO_SYSOP     10   This Option lets you choose at which level a
                                User can leave a private comment to the sysop.
------------------------------------------------------------------------------
NODE* DOWNLOAD             10   This Option lets you choose at which level a
                                User is able to download any File.
------------------------------------------------------------------------------
NODE* UPLOAD               10   This Option lets you choose at which level a 
                                user is able to upload any File.
------------------------------------------------------------------------------
NODE* ENTER_MESSAGE        10   This Option lets you choose at which level a 
                                user is able to leave private & ALL messages.
------------------------------------------------------------------------------
NODE* FILE_LISTINGS        10   This Option lets you choose at which level a 
                                user is able to view the intern Filelistings
------------------------------------------------------------------------------
NODE* JOIN_CONFERENCE      10   This Option lets you choose at which level a 
                                user is able to join other conferences.
------------------------------------------------------------------------------
NODE* NEW_FILES_SINCE      10   This Option lets you choose at which level a 
                                user is able to few the Filelistings since his
                                a specified date.
------------------------------------------------------------------------------
NODE* PAGE_SYSOP           10   This Option lets you choose at which level a 
                                user is able to page the sysop for a Chat.
------------------------------------------------------------------------------
NODE* READ_MSG             10   This Option lets you choose at which level a 
                                user is able to read private & ALL messages.
------------------------------------------------------------------------------
NODE* REMOTE_SHELL         255  This Option lets you choose at which level a 
                                user is able to get into the REMOTE SHELL of
                                the system. This is another function which
^^ The Remoteshell has been ^^  should be only accessed by people with a level
  ^^ removed now so that ^^     of 255.
    ^ Command is removed ^
                                NOTE: This command is not required in the 
                                current release but in upcoming releasing it
                                will serve a purpose.
------------------------------------------------------------------------------
NODE* DISPLAY_USER_STATS   10   This Option lets you choose at which level a 
                                user is able to view his own boardstatistics.
------------------------------------------------------------------------------
NODE* VIEW_A_FILE          10   This Option lets you choose at which level a 
                                user is able to view a Textfile in the system.
------------------------------------------------------------------------------
NODE* EDIT_USER_INFO       10   This Option lets you choose at which level a 
                                user can edit his own UserInformations like:
                                Handle, Password etc.
------------------------------------------------------------------------------
NODE* EDIT_USER_NAME       10   This Option lets you choose at which level a 
                                user is able to change his own username.
------------------------------------------------------------------------------
NODE* EDIT_USER_LOCATION   10   This Option lets you choose at which level a 
                                user is able to change his own location where
                                he/she is living
------------------------------------------------------------------------------
NODE* EDIT_PHONE_NUMBER    10   This Option lets you choose at which level a 
                                user is able to change his own phonenumber.
------------------------------------------------------------------------------
NODE* EDIT_PASSWORD        10   This Option lets you choose at which level a 
                                user can edit his own Password.
------------------------------------------------------------------------------
NODE* ZIPPY_TEXT_SEARCH    10   This Option lets you choose at which level a 
                                user can use the internal Zippy Search to
                                search for strings in the FileDir.
------------------------------------------------------------------------------
NODE* OVERRIDE_CHAT        250  This Option lets you choose at which level a 
                                a user can also page the sysop if he is not
                                available.
------------------------------------------------------------------------------
NODE* CHAT_COLOR_SYSOP     35   This Option let you choose the colors which
NODE* CHAT_COLOR_USER      32   will be used in the SysopChat.
------------------------------------------------------------------------------
NODE* SYSOP_READ           255  This Option let you choose at which level a
                                user can read all the messages in the Confs.
                                The private ones too.. for saver messagebase
                                turn the level to 255.
------------------------------------------------------------------------------
NODE* KEEP_UPLOAD_CREDIT   <opt>

                                This Option lets specify the way upload
                                credits are stored and also how to keep track
                                of additional time awarded for uploads.

                                <opt> maybe any of the following

                                0 - Do not keep upload credits.
                                1 - Keep upload credits and award extra time
                                    for the current logon session.
                                2 - Keep upload credits and award extra time
                                    to account for duration of the current
                                    date.

------------------------------------------------------------------------------
NODE* OVERRIDE_TIMES       255  This Option lets you choose at which level a
                                user can logon at a not allowed baud also
                                without beeing kicked.
------------------------------------------------------------------------------
NODE* TASK_PRIORITY        10   This Oprion lets you choose the Taskpriority
                                for each Node you are running.
                                NOTE: be sure you chosse a lower taskpri
                                      then in the ACP_PRIORITY.
------------------------------------------------------------------------------
NODE* START_0300_TIME      0    This Options lets you choose at which time
NODE* START_1200_TIME      0    the calling at the baudrates is allowed or
NODE* START_2400_TIME      0    not. if you don`t use this options turn the
NODE* START_9600_TIME      0    override_times to "0" and it will be disabled.
NODE* START_19200_TIME     0
NODE* END_0300_TIME        0
NODE* END_1200_TIME        0
NODE* END_2400_TIME        2359
NODE* END_4800_TIME        2359
NODE* END_9600_TIME        2359
NODE* END_19200_TIME       2359
------------------------------------------------------------------------------
NODE* PUBLICSCREEN ScreenName   This command is similiar to PUBLICSCREEN
                                mentioned above, only this command pertains
    ^^ REMOVED ^^               to each node vs ACP. If the specified Public
                                Screen does not exist it will be created.
 Because of many requests
 and bugs this option is        NOTE: If you wish express to open on the 
 removed now. It could be             Workbench screen then use this command:
 that it will be turned back 
 in further AmiEX Versions.     NODE* PUBLICSCREEN Workbench

                                NOTE: If this command is omitted then a custom
                                      screen will be created.

                                NOTE: The screen name is case sensitive.
------------------------------------------------------------------------------
NODE* STANDARD_COLOR       This command tells express to swap the RED/WHITE
                           colors, this option may produce strange visual 
                           results, but nothing harmful. Actually I prefer
                           this option.
-------------------------------------------------------------------------------
NODE* BBS_NAME             [44m[33mBYTEMASTER'S BBS[0m

                           This Command will give AmiExpress your BBS name
                           for the logon screen etc. you can also use ANSI
                           codes in there.
------------------------------------------------------------------------------
NODE* BBS_LOCATION         BBS:

                           This tells amiexpress where all the important files
                           are located for the operations
------------------------------------------------------------------------------
NODE* SYSOP_NAME           BYTEMASTER

                           This will tell AmiExpress the name of the
                           SystemOperator where the bbs belongs to.
------------------------------------------------------------------------------

==============================================================================
 The following commands are togglable, to turn off a feature, place a ';'
 in front of the NODE command.
==============================================================================

------------------------------------------------------------------------------
NODE* QUIETNODE         This Option will turn on/off the ability for users
                        to see you on another node if you are online. This
                        is only interesting for Doors who know to determine
                        the status.
------------------------------------------------------------------------------
NODE* SENTBY_FILES      This Option will turn on/off the SentBy: Comments if
                        a file will be upped.
------------------------------------------------------------------------------
NODE* CLEAR_SCREEN_MSG  This Option will turn on/off the Clearscreens
                        between each message is displayed.

                        NOTE: This command may override the user screen clear
                              options.
------------------------------------------------------------------------------
NODE* CAPITOLS_IN_FILE  This Option will turn on/off UPPERCASE conversion of
                        file names for uploads.
------------------------------------------------------------------------------
NODE* NO_TIMEOUT        This option will disabled the nodes timeout routines.
                        This may be useful for direct line communications. And
                        very useful for local nodes.
------------------------------------------------------------------------------
NODE* ALLOW_FREE_RESUMING
        
                        This Option will turn on/off the ability for users
                        to resume their unfinished uploads
------------------------------------------------------------------------------
NODE* DO_CALLERSLOG     This Option will turn on/off the output to the
                        Callerslog of the specified node.
------------------------------------------------------------------------------
NODE* DO_U/D_LOG        This Option will turn on/off the UDLOG actions of the
                        specified node.
------------------------------------------------------------------------------
NODE* STARTLOG          This Option will turn on/off the StartUpLog actions
                        of the specified node.
------------------------------------------------------------------------------
NODE* DOORLOG           This Option will turn on/off the DoorLog actions
                        which will register all action of all doors.
------------------------------------------------------------------------------
NODE* SCREEN_TO_FRONT   This Option will turn on/off the ScreenToFront
                        command for a specified node. Then the Express screen
                        will come to front if a user loggs on or a BEEP will
                        be sended.
------------------------------------------------------------------------------
NODE* ONE_TIME_BULLETINS

                        This Option will turn on/off the One Time Bulletins
                        for the specified node.
------------------------------------------------------------------------------
NODE* ZOO               These commands are used to turn on the internal
NODE* LHARC             checking system. Put a ";" before each command to
NODE* PKAX              turn it off.
NODE* WARP                 
NODE* ZIP
------------------------------------------------------------------------------
NODE* DEFAULT_CHAT_ON   This Option will turn the ChatFlag automatically to
                        ON for the specified node if the BBS will be started.
------------------------------------------------------------------------------
NODE* VARYING_LINK_RATE

                        This Command is to turn on/off that if a User logged
                        in with a specified baurate this baudrate will be
                        setted to the serial.device too.
------------------------------------------------------------------------------

==============================================================================

                             - P R E S E T S -

      The following command are to allow 6 different presets which can be
      activated by pressing 1-6 at the account editing. So you can make 
      a spec. Userdata to one key.. this is very usefull. This is available
      in the Config(x) too.

==============================================================================

      For example here follows how to set it:

      NODE* PRESET_ACCESS_LVL  01-10
      ^      ^                 ^   ^
      |__    |__ The Command   |_  |_____ the Variable
         |                       |
         |                       |
      The Node specification      identifies the preset 1

------------------------------------------------------------------------------

NODE* PRESET_ACCESS_LVL  01-10          <-- To set the Accesslevel
NODE* PRESET_RATIO_TYPE  01-1           <-- Set the Ratio type for the preset
NODE* PRESET_RATIO       01-3           <-- Set the Ratio for the preset
NODE* PRESET_DAILY_BYTES 01-90000       <-- Set the Daily ByteLimit
NODE* PRESET_CONF_ACCESS 01-X________   <-- Set the Conf. Access for preset
NODE* PRESET_TIME_LIMIT  01-2800        <-- Set the TimeLimit for the preset

NODE* PRESET_ACCESS_LVL  02-50
NODE* PRESET_RATIO_TYPE  02-1
NODE* PRESET_RATIO       02-3
NODE* PRESET_DAILY_BYTES 02-90000
NODE* PRESET_CONF_ACCESS 02-XX_______
NODE* PRESET_TIME_LIMIT  02-3600

NODE* PRESET_ACCESS_LVL  03-100
NODE* PRESET_RATIO_TYPE  03-1
NODE* PRESET_RATIO       03-3
NODE* PRESET_DAILY_BYTES 03-90000
NODE* PRESET_CONF_ACCESS 03-XX_______
NODE* PRESET_TIME_LIMIT  03-4800

NODE* PRESET_ACCESS_LVL  04-150
NODE* PRESET_RATIO_TYPE  04-1
NODE* PRESET_RATIO       04-3
NODE* PRESET_DAILY_BYTES 04-90000
NODE* PRESET_CONF_ACCESS 04-XX_______
NODE* PRESET_TIME_LIMIT  04-9600

NODE* PRESET_ACCESS_LVL  05-200
NODE* PRESET_RATIO_TYPE  05-1
NODE* PRESET_RATIO       05-3
NODE* PRESET_DAILY_BYTES 05-90000
NODE* PRESET_CONF_ACCESS 05-XXX______
NODE* PRESET_TIME_LIMIT  05-9600

NODE* PRESET_ACCESS_LVL  06-255
NODE* PRESET_RATIO_TYPE  06-1
NODE* PRESET_RATIO       06-0
NODE* PRESET_DAILY_BYTES 06-90000
NODE* PRESET_CONF_ACCESS 06-XXX______
NODE* PRESET_TIME_LIMIT  06-9600

==============================================================================

                       - M O D E M  S T R I N G S -

      The following commands are only to set your modem to the correct
      settings to answer AmiExpress. The Settings are you seeing here are
      very good and can be used if you are using a HST Courier modem or a 
      DUAL modem. For other types the settings can be diverent.

==============================================================================

------------------------------------------------------------------------------
;NODE* MODEM_INIT ATE0X1S2=255S7=60S27=0S14=1
NODE* MODEM_INIT ATE0F1M0Q0V1X1S0=0S2=255S7=40S12=255

                        This command let you choose you modemsettings wenn 
                        AmiEx is intitalising itselfs you one of the above
                        ones if you are using a HST modem.
------------------------------------------------------------------------------
NODE* MODEM_RESET   ATM0H0

                        This command sets your Modem reset command if a user
                        logged of and the modem begin to reset itself.
------------------------------------------------------------------------------
NODE* MODEM_RING    RING

                        This commands indicates the String who will be sended
                        by the modem if someones call the bbs and the modem
                        will indicate a RING on the line.
------------------------------------------------------------------------------
NODE* MODEM_ANSWER  ATA

                        This command indicates the Answer string who will
                        be executed if the modem indicates a RING and so
                        the modem will be answer automatically.
------------------------------------------------------------------------------
NODE* MODEM_OFFHOOK ATM0H1

                        This command allows you to specify which modem commands
                        to send to make the modem go offhook.

                        Default is ATM0H1
-------------------------------------------------------------------------------
NODE* MODEM_HARDFLUSH

                        This command helps the ones of you who have problems
                        with hanging up the modem correctly. This will cause to
                        let express do drop DTR 2 times.
-------------------------------------------------------------------------------

NODE* CONNECT_300   CONNECT
NODE* CONNECT_1200  CONNECT 1200
NODE* CONNECT_2400  CONNECT 2400
NODE* CONNECT_4800  CONNECT 4800
NODE* CONNECT_9600  CONNECT 9600
NODE* CONNECT_19200 CONNECT 19200

                        During a modem connect, the connect rate string is
                        sent to express, you must specify with the above
                        above commands the connection rate desired with each
                        connection
------------------------------------------------------------------------------
;NODE* TRUE_RESET       This Command will reset the Modem with a TRUE 
                        DTR hangup and later it will be intialized with
                        the MODEM_INIT. This will costs some seconds.
------------------------------------------------------------------------------

==============================================================================

                 - C O N F E R E N C E S  C O N F I G S -

      The following commands will set the conferences who are available
      in your bbs and at which directory it is located.

==============================================================================

NODE* CONF_NAME  01-VALIDATION      <- This will set the Name of the Conf.1
NODE* CONF_LOCAL 01-BBS:VALIDATE/   <- This will set the Directory of Conf.1

NODE* CONF_NAME  02-PUBLIC DOMAIN   <- This will set the Name of the Conf.2
NODE* CONF_LOCAL 02-BBS:PD/         <- This will set the Directory of Conf.2

NODE* CONF_NAME  03-/X 2.0 SUPPORT
NODE* CONF_LOCAL 03-BBS:AE20/       <- Notice the '/' after the conference
                                       location.

NODE* CONF_NAME  04-/X 2.0 DEVELOPERS
NODE* CONF_LOCAL 04-BBS:DEVELOPE/

NODE* CONF_NAME  05-/X 2.0 BETATESTERS
NODE* CONF_LOCAL 05-BBS:BETA/

NODE* CONF_NAME  06-/X 2.0 DISTRIBUTORS
NODE* CONF_LOCAL 06-BBS:DISTRIBUTE/

NODE* CONF_NAME  07-/X 2.0 ALPHA-BETA
NODE* CONF_LOCAL 07-BBS:ALPHA/

NODE* CONF_NAME  08-/X 2.0 TOP-BRASS
NODE* CONF_LOCAL 08-BBS:BRASS/

NODE* CONF_NAME  09-RESTRICTED
NODE* CONF_LOCAL 09-BBS:RESTRICTED/

------------------------------------------------------------------------------
NODE* TOTAL_CONFERENCES 9       This command will tell AmiExpress the total
                                numbers of AmiExpress which you are using now.
------------------------------------------------------------------------------
NODE1 INIT_BAUD          38400  This command will tell AmiExpress at which
                                node AmiExpress should lock at a specified
                                baud.
------------------------------------------------------------------------------
NODE1 UNIT               0      This command will tell AmiExpress the Unit
                                of the serial.device which you are using on
                                a specifid node.
------------------------------------------------------------------------------
NODE1 DEVICE_DRIVER      serial.device

                                This command will tell AmiExpress the device
                                name you are using actually for your bbs.
------------------------------------------------------------------------------
NODE* SYSTEM_PASSWORD  SYSPASS  This command let you choose a system password
                                which will be asked every time a user logson.
------------------------------------------------------------------------------
NODE* NEW_USER_PASSWORD  YES    This command let you choose a new user
                                password which will be asked every time a 
                                new user loggs on.
------------------------------------------------------------------------------
NODE* REMOTE_PASSWORD  Shell    This command let you choose a remoteshell
                                password which will be asked every time
 ^^ No Effect at the moment ^^  a user wants to go into the shell.

                                NOTE: This command currently does not effect
                                      the BBS, but Modules may use it in the
                                      future.
------------------------------------------------------------------------------
NODE* NO_MCI_MESSAGE            This command will disable MCI capabilities in
                                the BBS.
------------------------------------------------------------------------------

==============================================================================

              - N E W  P R O T E C T I O N  C O M M A N D S -

      The BACKUP Option is very useful.. every time you start up your ACP.CTRL
      it will make a Copy of the File you see above... it will only add a
      {n} at the end of the file (where n is the number of the copy).. and if
      ACP.CTRL has done 5 backups it will start again with No.1

==============================================================================

------------------------------------------------------------------------------
BACKUP BBS:User.Data    This command will let you backup a specified file 
BACKUP BBS:User.Keys    which will be backuped every time ACP.CTRL starts.
BACKUP S:ACP.STARTUP    This command also performs the RESTRICT option
                        mentioned below.
                        The Files you listed here will get backup 5 times then
                        AMiX will start over to overwrite at the first backup.
                        This will prevent you to have millions of backups.
------------------------------------------------------------------------------
RESTRICT BBS:COMMANDS/BBS.CMD

                        With this option you can restrict several files.
                        If someone tries to download one of the files it will
                        be writen down to the callerslog an the download will
                        be canceld.
------------------------------------------------------------------------------
NODE* USERDATA_LOCATION BBS:User.Data

                        With this command you can choose where your User.Data
                        should be located to save it for bad viruses and
                        hackers.
------------------------------------------------------------------------------
NODE* USERKEY_LOCATION  BBS:User.Keys

                        With this command you can choose where your User.keys
                        should be located to save it for bad viruses and
                        hackers.
------------------------------------------------------------------------------
STARTNODE0: runback >nil: s:bbs.startup 0
STARTNODE1: runback >nil: s:bbs.startup 1
STARTNODE2: runback >nil: s:bbs.startup 2

                        With this command you specify how the express nodes 
                        should be started.

                        NOTE: Please note that s:bbs.startup in this case
                              is a file containing amigados commands. The
                              main purpose of that is so you can specify a
                              stack size of at least 50000 for each node. If
                              you use this method for starting the nodes, then
                              you must do the following to the file from 
                              AmigaDos Shell:

                              PROTECT s:bbs.startup +s

------------------------------------------------------------------------------
IDLENODE0: runback >nil: s:bbs.startup 0
IDLENODE1: runback >nil: s:bbs.startup 1
IDLENODE2: runback >nil: s:bbs.startup 2

                        This new command is the same as the STARTNODEx: 
                        command with the execption that this command will
                        wait for your action on pressing the Nodebutton to
                        activate the specified node. This command is very
                        usefull for your local node, because you don`t need
                        your Local Node very often and so you can activate
                        your local node at every time you want.

------------------------------------------------------------------------------

;NODE1 TRAPDOOR         This Command tells ACP that an external programm will
                        take care of starting the node in question. If this
                        option is used then the external program must start
                        express node with the following command:

                        Express <node-number> <baudrate>
      
                        Note: This Option is in the beta stage but if you
                              would like to experiment with it and leave me
                              some feedback it would be appreciated.
------------------------------------------------------------------------------
BUTTON01: AXVal        |run >con:0/0/640/100//CLOSE axval <* BBS: 2 WAIT
BUTTON02: SalvUser     |run >con:0/0/640/100//CLOSE salvuser <* ACP
BUTTON03: AERegCards   |runback dh1:amigadex/amigadex s:AEREG.CARDS
BUTTON04: LaDraw       |runback dh1:ansi/ladraw.101
                    ___^
                   |
column 24 must contain the '|' symbol
                     
                       
                        With this commands you can specify the Buttons on
                        your ACP.CTRL. Here you can install some little
                        Utilities.
-----------------------------------------------------------------------------
NUTTON01: Utility      |runback dh1:ansi/ladraw.101

                        This command is the same as the above "BUTTONxx".
                        There is only one difference. if you click on a
                        NUTTON you have to click on the node the programm
                        should be activated.
                        The the bbs will ad the nodenumber to the execution
------------------------------------------------------------------------------
;LOADCONFIG             With this command you can turn on/off the external
                        Config(x) files. if this command is given Acp.CTRL
                        will try to open the Config(x) files for all inform-
                        ations. If it isn`t given, ACP.CTRL will search in
                        the ACP.STARTUP for all the Configs to work perfectly
                        with the Accounts.
------------------------------------------------------------------------------

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
=========================== 19. NOTEABLE FEATURES ===========================
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

     1. Command history has been added in to allow up to 20 history lines
        to be remembered.  Once the limit of 20 has been released the
        history will cycle thru.  CTRL-B will reset the history pointer
        to zero entries.

     2. The HELP key performs a screen to background command

     3. The bbs checks to make sure the AUXx: or CNN: device can be opened
        and tells the user if there is a problem.

     4. Baud Calling times has been added in, kinda of a throw in and will
        be changed, but for now, specify the time period a baud rate CAN
        call, like to allow a baud to call all the time enter 0 for start
        and 2359 for end.  Start time must be a lower number than end time.
        As I stated this is not perfect and will be removed from the config
        and a file will contain all the times a baud can't call.  It will
        allow more flexiblity.

     5. AREXX port 'AmiExpress_Node.x', supports the following features:

         suspend - causes the bbs to close the serial port and iconify
                   and wait for a resume command.  If someone is online
                   the bbs will wait util they logoff to reply to the
                   suspend message, and then the bbs will suspend.  This
                   allows you to create a batch file that will automatically
                   suspend the bbs and load your terminal program and once
                   your finished with the terminal program put the bbs
                   back up.

                   a example Arexx Programm should be like this that the
                   bbs will suspend:

                ------------- cut here ------------------
                   /* The Suspend Command for AmiExpress V2.30 */
                   address 'AmiExpress_Node.1'
                   'suspend'
                ------------ cut here -------------------


         resume  - this command is only used while the bbs is suspended.

         shutdown - this command will cause the bbs to lower the users
                    time online to 2 mins and tell the user that it has
                    received an emergency shutdown notice.  Once the user
                    is off the bbs exits from memory.

        NOTE: None of these features work without arexx.

        There will be lots of AREXX commands in the future, including
        node to node chatting..

     6. Automatic zmodem upload, if a user starts a zmodem upload on
        the main prompt the bbs will detect this and enter the zmodem
        upload routines.

     7. SYSOP now has the ablity to run a node in the background just
        for his local use.  To do this just remove the device name from
        the config file and the bbs will not use the serial port.  To
        properly remove the serial device, click in the gadget and hit
        RIGHT-AMIGA-X that will empty the gadget.

     8. When the bbs asks for the number of line on the display it now
        displays numbers down the side of the screen and asks the user
        to enter the number he sees at the top of the screen.

     9. The addition of customcommands and the Interface to program
        modules has greatly added to a very flexible BBS, you could
        just about run a BBS within a BBS with the power this offers
        the sysop.

-----------------------------------------------------------------------------

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
======================= 20. NOTE WORTHY OF MENTION  =========================
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    I would personally like to thank Mike Thomas, who originally wrote
    AmiExpress, I still do not know to this day why he choose me to carry
    on with AmiExpress but I sure am appreciative, It has been a wonderful
    learning experience in both the programming world and friendships.

    I would personally like to thank Phil Julias for his hard work on his
    original documentation for AmiExpress 1.(x) series, It has helped
    considerably in the developement of the current documentation. 

    I would personally like to thank all of the wonderful people listed on
    the ACP credits menu. They are great people, and have a lot of patience
    and enthiusiasm in making express the best BBS program around.

    I would also like to thank all the users who have helped guide me in
    the developement of express. It is not to see the devotion that comes
    from the registered users, more devotion then I ever expected. 

    Enjoy the BBS, once setup will assuredly become second nature to run.
    It is a fantastic program, and we all have Mike Thomas to thank for
    it's creation.

          Please report any errors in this file, or any other file 
             in the official August 1992 AmiExpress Update to:

                    -----------------------------------
                    AmiSupport           (703) 639-6114
                    -----------------------------------

             or if you find a bug in this documentation call:

                    ----------------------------------
                    MeTAL DeCADE    +49(0)711-777-5990
                    ----------------------------------

                            Or Mail to:

                            Light Speed Technologies
                            P.O. Box 3016
                            RadFord, Virginia 24143

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
============================ 21. Trouble Shooting ===========================
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    Problem                            Solution
    --------------------------------   ----------------------------------- 
    ACP will not start.                1. Make sure ACP.CTRL is being run 
                                          from the startup-sequence or
                                          user-startup.
                                       2. Goto an AmigaDos shell, goto the
                                          directory where the command is
                                          located and type ACP.CTRL, this
                                          should give you an error message
                                          indicating that perhaps a file is
                                          missing.
    Express will not start, but
    ACP will.                          1. Make sure that if you are using 
                                          a batch file to execute express that
                                          the batch file has a 's' bit assigned
                                          to it, ie:

                                          PROTECT S:BBS.Startup +s
                                                  ^
                                                  |
                                                  batch filename
                                       2. Goto the directory in which express
                                          exists and type from a shell:

                                          Express 0
                                                  ^
                                                  |___ (node number)
                                                   
                                          This should tell you why the program
                                          is not running.

    ACP and EXPRESS run but express    1. The stack size of express is not
    gurus everytime someone enters        getting set. You must have a stack
    the msgbase scan.                     size of 50000 for this to work.

                                       2. Make sure AE.Library is in the LIBS:
                                          directory.


    ACP comes up but there is no       1. Make sure the statement:
    NODE buttons.                         NUMBER_OF_NODES x exists, where x
                                          should be replaced with the number
                                          of nodes you are going to have.
                           
               
    My modems will not initialize      1. Make sure the NODE* UNIT statements
                                          reflect the correct UNIT number.

                                       2. Make sure the NODE* DEVICE_NAME is
                                          correct.

                                       3. Make sure you have a
                                          NODE* MODEM_INIT string in the
                                          ACP.STARTUP file.

------------------------------------------------------------------------------

           This Documentation was updated by The Bird of X-TRADE

                   For further information call my BBS:

==========================[+49-711-777-5990]===============================
               _|____  ______________._________/\    ___
   EqUiPmEnT:   |    \/    |o   _    |        /  \  |   |       EmPeRaToRs;
   ~~~~~~~~~~   |o         ||  |_\___|o  |   //   \ |:  |       ~~~~~~~~~~~
  21øMb OnBoard ||  \  /   |:   _|___||  |__//     \|_  |._/\    ThE BiRD
   384øø/Os2.0  |:  |\/|   |.  |_/   ||  | /.  /\    /  ||   \    S/\/\S
  AmiX 2.3ø Reg |.  |  |___|___|_____|___|/   ___\  /   |____/ AnDY!/MoTiON
                |___|          |          \  /    \/|___|         J.J.F.!
             _______  _________._________. \/\ ._______  _________.
            |       \|    _    |o   _    | /  \|       \|    _    |
============|o  |\_  \_  |_\___||  | \___|//   \o  |\_  \_  |_\___|=========
 CaLL NoW!  ||  | /   /   _|___||  |  ___//     \__| /   /   _|____ ------>>
============|:  |/   /:  |_/   |:  |_/  /.  /\    /|/   /:  |_/   |=========
            |___/___/|.  |_____|_______/   ___\  /_/___/|.  |_____|
                     | __|             \  /    \/       | __|     [eNf]     
                     |/                 \/              |/     
   ø-2 DayZ WaREZ !  |  ...where the warez come from... |  ø-2 Dayz WaREZ !
 
==========================[+49-711-777-5990]===============================

      I hope you like this little documenatation of the newest AmiExpress.
      I think i updated very much. but still some things are missing. so call
      my bbs and we can make a better update of this Docfile.

                                    The Bird.
------------------------------------------------------------------------------
==============================================================================

-                  C H A N G E S  O F  A M I E X P R E S S                   -

==============================================================================

      Because of some request i decided to release a little file where
      all changes of the newest AmiEx Version will be written down. This
      Idea is not new, but it have been lost since the V1.1x version and
      it is very hard to overwork the hole new doc to see the changes of
      the newest AmiEx Version. So i hope you will like this little
      improvement of the new docs. For more Information about AmiEx and
      it functions call Bytemaster BBS or my own bbs called METAL DECADE BBS
      the number is > +49-711-777-5990 <. Hope ya call soon.

                                            The Bird (AmiEx Devel.Team)

==============================================================================
-              CHANGES TO AMIEXPRESS V2.30 (?? ??? ???? ??:??:??)            -
==============================================================================

      - Re-Compiled code prior to release of 2.20 due to the numerous
        probs users were having with 2.20. This removed the Puclicscreens
        and re-installed the statbar.
      - Now The Modem Reset has been changed. The Modem will be reseted only
        one times per logoff. Please report bugs of that if it works.
      - The NODE* STATBAR is now totally put back into ACP
      - The BBS Titlebar is changed so that you can view the last user who
        was online.
      - Now the Playpen checking correctly identify if a file already exits
        in another playpen.
      - There is a new Command installed in the ACP:

        NODE* PLAYPEN <unique directory>

        This Command let you specify where your playpens will be located,
        also will (or should) allow for conferences to be on different
        partitions if this option is used.

        NOTE: This command will cause express to create this directory.
              There should be a different directory name for each node.

        NOTE: I do not advise using this in RAM at the moment.

      - NODE* STANDARD_COLOR will be removed in upcoming releases.
      - The internal FileChecking is totally removed NOW !! It was outdated
        anyhow.
      - There is a new Command in the ACP:

        NODE* FilesNotAllowed BBS:FilesNotAllowed

        ----- cut here for BBS:FilesNotAllowed -----
        *.c
        *.Doc
        *.WRP
        ----- cut here -----------------------------

        This command will prevent the uploads of those files. Notice the
        "*" wildacrd (joker).

      - Added a new CustomCommand called "Sys.CMD". This is the same as
        customcommands except that the doors in it cannot be executed from the
        Menu Prompt or the msgbase.
        In order for the FRONTEND customcommand it must be moved to
        Sys.CMD to be executed.
        
        Reserved SySCommands for the CustomCommand for further releases:
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       *ANSI            - Optional Skipping of the ANSI Question
       *EDITOR          - Custom Msg Editor
        UPDESC          - Upload Descriptions
        MENU            - Optional Menu routines
       *FRONTEND        - Optional Front end to express after ANSI (y/n)
        SHOWFILE        - Optional Show File routines
        SCANMAIL        - Optional MsgBase Scanner
       *FILECHECK       - Optional File Checker door
        MOVEFILE        - Optional Upload Filemover
       *PWFAIL          - Optional Excessive Password Failure

       * indicates that this option is already installed.

      - The Door Protocols have been modified to use the internal Editor vs
        the normal door file editor.
      - The Modem Reset routine at logoff has been modified due to problems
        with AMiX and the A2232 Multiserial Card.
      - The BBS Logoff reset for Sysop&Local logins on nodes have been
        speeded up without serial device.
      - CustomCommand changes:

        Now AMiX not longer search for a file called:
        BBS:Commands/CustomCommands. Now this big Customcommand is swapped
        between the number of your conferences and 2 extra files.
        Instead of CUSTOMCOMMANDS you must use the following file names to
        be run your door:

          bbs.cmd      -  use this if you want to have these door everywhere
                          available in the bbs
          conf{x}.cmd  -  use this if you want these doors only run in the
                          conference {x}
          sys.cmd      -  use this for door you don`t want to run from the
                          menu prompt or message base. this is for doors like
                          FRONTEND. watch out for more like this

          for example:

          bbs.cmd       - the doors in there will executed everywhere
          conf1.cmd     - the doors in there will executed only in Conf.1
          conf2.cmd     - the doors in there will executed only in Conf.2

      - Fixed a bug with the chattoggle which getting not updated when the
        F7 key was used from the node, now Express nodes tell acp when to
        change the chat flag on the acp window.

      Note: Modifications to the modem init sequence may cause probs if you
            do not have an A2232, if this is the case let me know as soon as
            possible, the problem should be obvious if it exists,, I suspect
            that the modem will not answer calls if there is going to be a
            problem at all.

      - Found a new function in AmiExpress which were never been discripted:
        You can have a file called "BBS:ForwardSysopMail". if this file is
        available amiexpress will open it if you want to leave a comment to
        the sysop. AMiX will look into and read the first line. in the first
        line should be a name of a user in your bbs that you want to also
        read the messages to the sysop.

        for example:

        ----- cut here for BBS:ForwardSysopMail -----
        CoSysOp
        ----- cut here ------------------------------

        Now the bbs will forward the mail also to that user you typed here.
        This is very usefull if you go to holiday. Use it.
        
      - when express is searching it searchs now in BBS:UTILS for
        PARADOOR & REXXDOOR. This will help them quicker by knowing exactly
        where they are located.

        NOTE: All References to BBS: is meant to indicate the BBS location, it
              is not really hardcoded references to BBS: , you may have in
              your case MYBBS: or something like that.

      - Obsolete functions are now totally removed. This should reduce the
        size of the code somewhat.
      - A new Door Protocol Command have been added called BB_LOGONTYPE, this
        will allow doors to know if someone logged on locally or remote.
      - Some new SysCommands have been added to Express. This SysCommands
        should be added to SYS.CMD like the "FRONTEND" routine.

            ANSI      - This will replace the AnsiGFX Question after Logon
            EDITOR    - This module must be created for message editing and
                        dir editing with the 3 & 4 menu prompt commands.
 
                        There is a module I created named AUXED version 1.0 
                        which will let you define your own external editor to
                        use for local logins. Remote logins will use the
                        standard emacs interface until some new editors are
                        designed.
            FILECHECK - This Module will bypass the internal FileChecking
                        for uploaded Files. Keep in mind, if this module is
                        created it will cause express to ignore anything in
                        the FCheck directory.
            PWFAIL    - This Module will be executed everytime someone has an
                        excessive Password Failure problem.

      - New Door Command have been installed:         

        DT_LANGUAGE     This allows you to retrive or change the current
                        language specifictaions. You only can execute 
                        this through a door.
      
                        example:
                        Default Language ".TXT" , ".TXT.GR"
                        English Language ".ENG" , ".ENG.GR"
                        German Language  ".GER" , ".GER.GR" a.s.o

      - Installed new ACP command in the acp.startup called:

        NODE* MODEM_HARDFLUSH

                THiS Command will help the guys of you having probs with
                the Modem Resets.

      - Changed the calculation of the downloaded & uploaded bytes if you
        press "U" or "D" and now you seeing the 100% Kilobytes instead of the
        old 1024 Bytes calculation.
      - There have been added a Lost Carrier Zoom Mail routine which will
        check if the user gets a Lost Carrier in the Zoom Mailing routine.
        Then the computer will make a reset.
      - The Filechecking routines have been modified to allow the Filecheck
        door to tell AMiX to check the file with it`s own procedures.
      - The SySoP Account Sequence has been modified to record CallersLog-
        divider.
      - The Logon Sequences has been modified to obtain permission for the
        callerslog prior to any logons.
      - The AE.LIBRARY has been removed to due some problem. But don`t delete
        it.. some Doors could use it in further releases.
      - The Attach File prompt in the msgbase has been modified, so that the
        (y/N/goodbye) now has 'N' as the default.
      - Zoom Mailing has been modified so it will not reset the node during
        local logins.
      - Express has been modified to store important Data in MSG type
        semaphores, that would pertain to info needed in the WHO type Door
        the goal is to provide the means of getting the needed information
        without the doors having to view the callerslogs etc.
      - ACP Menu Colors has been modified, when used on the WB Screen, looks
        a little more professional now.
      - Modified ZModem Stats Window to be centered in the NodeWindo for the
        nodes opening on the WB Screen.
      - New Info added that is set to ACP when a user is loggin on. Before the
        user`s account is verified the ACP will show Accounting Sequence,
        then after that it should show logging on.
      - The User`s Location has been removed from TiTleBars for Express Nodes
      - The "K" Node List Commando has been totally removed from the
        AmiExpress Code because it is not needed in further version because of
        so many Doors much better than that command.
      - TitelBars has been modified to refelct AmiEX version & Node Number
        while the stat bar is on, and while the statbar is off, it will
        display the last accounts or current user account info.
      - New Command has been added to ACP:
 
        NODE* QUIETNODE

                This Command will toggle the ability for others to see
                you are on another node or not, this is only good if the
                utils such as the WHO Doors and MultiNode Chats, know how
                to determine the status.

      - New function implemented in the Enter Message command: Now able
        to view the whole MCI commands in the entered text before saving it.
        M)ci List <--- new function in "E" command.
      - The Search function in the Read command has been tottaly removed
        from amiex because of some problems caused of this.
      - The ACP Server has been modified to show files being downloaded or
        uploaded.
      - a WHO Door has been installed to the internal AmiEX Commands. with
        this Command you can view the other users who are online at the 
        other node and what they are doing.
      - The ACP Server has been modified to show the Baudrate at which a user
        is online at the moment.
      - Installed a New ACP Command:

        NODE* BREAK_CHAT

                This Command will turn on/off the ability for yar users to
                break out of the chat by pressing CTRL-C or to stop the
                displaying fo files with CTRL-C in the chat.

      - Express has been modified to allow the Infinite Conference handling.
        The whole documentation for this will provided later if a new Account
        Editor has been finished.
      - Found a new function in AmiEX Main Menu Commands:

        [ ME] - Enter MCI Message:
                ~~~~~~~~~~~~~~~~~
           This command is the same as the normal "E"nter Message command in 
           AmiEX. The only difference is that with that command you can enter
           messages with MCI commands like displaying UserNames or some other
           datas over MCI. This command will implement the MCI header so you
           don`t have to insert the MCI header by hand.


      - Found a new function in AMiEX Main Menu Commands:

        [ MC] - Enter MCI Comment:
                ~~~~~~~~~~~~~~~~~
        This command is the same as the normal "E"nter Message command in
        AMiEX. ThE only difference is that with that command you can enter
        the comment to the Sysop MCI commands like displying UserNames or some
        other datas over MCI. This command will implement the MCI header so
        you don`t have to insert the MCI header by hand.

==============================================================================
-              CHANGES TO AMIEXPRESS V2.20 (24 AUG 1992 13:30:32)            -
==============================================================================

      - Fixed some bugs in the older version
      - All the Further docs will be written by THE BIRD
      - The Remote Shell has now been totally removed from the system because
        its not very save against hacking and you can now install your own
        door for the remote-shell. so look out for great Door. And so the
        command NODE* REMOTE_SHELL 255 has been removed too.
      - Included a little new things which will show if the ratio of a
        user will be counted as BYTES,FILES or BYTES&FILES only. this
        will be shown in the Account Editing screen.
      - There is a new Textfile "BBS:NODE{x}/NoTThisNode.TXT" and 
        "BBS:NODE{x}/NoTThisNode.MSG". in the first file with the extend
        ".TXT" you can insert people who are not allowed to log into the
        node where this textfile is located. Every Time a user loggs in
        the bbs checks out the file and if it found a user who is not allowed
        to insert the node where this textfile is located it will display
        the "BBS:NODE{x}/NoTThisNode.MSG" file and loggs the user off. This
        function is very usefull for MultiNodeSystems where you want to
        prevent a specified user to log in your PRIVAT ELITE Node.
      - Included some new functions for ACP.STARTUP:
------------------------------------------------------------------------------
        IDLENODE0: runback >nil: s:bbs.startup 0
        IDLENODE1: runback >nil: s:bbs.startup 1
        IDLENODE2: runback >nil: s:bbs.startup 2

          This new command is the same as the STARTNODEx: 
          command with the execption that this command will
          wait for your action on pressing the Nodebutton to
          activate the specified node. This command is very
          usefull for your local node, because you don`t need
          your Local Node very often and so you can activate
          your local node at every time you want.
------------------------------------------------------------------------------
        The ACP Commando NODE* STATBAR is totally removed and replaced 
        with the right mousebutton menu in each node where you can view
        all the userinformation about the user who is online in the node
        you are viewing.
------------------------------------------------------------------------------
        NODE* PUBLICSCREEN ScreenName   

          This command is similiar to PUBLICSCREEN
          mentioned above, only this command pertains
          to each node vs ACP. If the specified Public
          Screen does not exist it will be created.
------------------------------------------------------------------------------
        NODE* STANDARD_COLOR

          This command tells express to swap the RED/WHITE
          colors, this option may produce strange visual 
          results, but nothing harmful. Actually I prefer
          this option.
------------------------------------------------------------------------------
        NODE* NO_TIMEOUT

          This option will disabled the nodes timeout routines.
          This may be useful for direct line communications. And
          very useful for local nodes.
------------------------------------------------------------------------------
        NODE* MODEM_OFFHOOK ATM0H1

          This command allows you to specify which modem commands
          to send to make the modem go offhook.
------------------------------------------------------------------------------
        NODE* NO_MCI_MESSAGE

          This command will disable MCI capabilities in the BBS.
------------------------------------------------------------------------------
        NODE1 TRAPDOOR

          This Command tells ACP that an external programm will
          take care of starting the node in question. If this
          option is used then the external program must start
          express node with the following command:
 
          Express <node-number> <baudrate>
      
          Note: This Option is in the beta stage but if you
                would like to experiment with it and leave me
                some feedback it would be appreciated.
----------------------------------------------------------------------------