
Part 2

  =======================================================================
  [ F ] - File Listings:
          ~~~~~~~~~~~~~
    This command allows a user to get Full directory listings of the
    catalogs maintained by the BBS. As mentioned before, this is
    specified in the Tooltype NDIRS=<numb> in the CONF ICON.

    1. If the number of directories in the conference is zero
       or NDIRS is zero, 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 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 flagging files.
  =======================================================================

  =======================================================================
  [ FS ] - Full Status View:
           ~~~~~~~~~~~~~~~~
    This option is used to allow the user to have a full view over his
    access status in each conference. It will display Bytes Down/Uploaded
    in each conference the user has access to and will display the RATIO
    too.
  =======================================================================

  =======================================================================
  [ 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 ZoomMail 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
       particular 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.

    4. Now the BBS will try to open a Module called "LOGOFF" or
       "LOGOFF<node>". If the BBS will find such a module, it will
       be started.
  =======================================================================

  =======================================================================
  [ 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 and if not found will say that No help is
    currently available.
  =======================================================================

  =======================================================================
  [ 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 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 CONF.DEF
    ICON the BBS will only display the Conferences which the User has
    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 extension by default. The normal plain
    (.TXT) files are reverted to if extension files are not
    found.
  =======================================================================

  =======================================================================
  [ RZ ] - Zmodem Upload Command:
           ~~~~~~~~~~~~~~~~~~~~~
    This command executes an immediate Zmodem upload.
  =======================================================================

  =======================================================================
  [ ^ ] - Extended Help Command:
          ~~~~~~~~~~~~~~~~~~~~~
    This command allows a user to read the help files that yu have put in the
    BBS:help directory. The help commands may include MCI commands,
    like displaying UserNames to personalize the help commands or some other
    data over MCI.
  =======================================================================

  =======================================================================
  [ N ] - New Files Since Date:
          ~~~~~~~~~~~~~~~~~~~~
    This command allows the user to list files from a 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. First of all Express will check the SysopPageCounter to see if
       the user already paged the sysop. If the user paged the sysop
       more then the given maximum number, express will automatically go to
       comment writing instead of paging the sysop.

    2. If the User is calling up the system operator for the first time
       on the current session, the users name field will 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.

    3. 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."

    4. 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.

    5. 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, 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. During chat, if ANSI mode is
       selected, your text will be a different color than the user ones.
  =======================================================================

  =======================================================================
  [ Q ] - Quiet Node:
          ~~~~~~~~~~
    This command will change the Quiet Node option you choose for a node.
    With this command a user can prevent other users from  seeing them on
    a node and can make him/herself like invisible.
  =======================================================================

  =======================================================================
  [ 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

    MSG. Options: A,D,F,R,Q,?,<CR> ( QUIT )>:

     (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, allows 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 separated 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). <?>, this will display the full description of the packed
              Mail Reading line and will help you.

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

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

    (8). "U"  - This will let the sysop go automatically to account
                editing for the account the message is from. With this way
                you can fast validate a NEWUSER by reading the message and
                go to account editing.
  =======================================================================

  =======================================================================
  [ RL ] - RELOGON:
           ~~~~~~~
    This command will make a RELOGON at the Node you start it. This will
    drop the user back to the Normal LOGON and will start a Module called
    "RELOGON" or "RELOGON<node>" in SYSCMD Directory. If this Module
    is available it will be started and if it is finished the user will
    be dropped back to the LogonString.
  =======================================================================

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

       Caller Num.: 2049
       Lst Date On: 05-14-93
       Security Lv: 30
       # Times On : 579
       Ratio DL/UL: Disabled
       Online Baud: 16800
       Rate CPS UP: 0
       Rate CPS DN: 0
       Screen  Clr: NO
       Protocol   : /X Zmodem
       Sysop Pages Remaining: 3


                     Uploads            Downloads
            Conf  Files    Bytes     Files    Bytes     Bytes Avail  Ratio
            ----  -------  --------- -------  --------- -----------  -----
               2>       0          0       0          0           0  DSBLD
  =======================================================================

  =======================================================================
  [ 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 NDIRS=<numb> tooltype. If this type 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 exists
       the BBS displays that to the user.

    3. The BBS now calculates free disk space, the first number
       displayed, is the amount of free space on all the drives
       listed in DRIVES.DEF.INFO in BBS: directory.

       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 maintenance.

       Currently the BBS is content to allow uploads until the
       free space in BBS:CONF/UPLOAD is less than 2,000,000 bytes.

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

    5. 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.  Specifying an 'A' will
       abort out of an upload altogether and drop the user back to the
       main prompt.

    6. 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.
       Entering a blank line will end the description.

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

       At this point the Sysop is able to press "L" for start a
       local upload routine, which will pop up a Requester for
       selecting files to upload LOCAL into the BBS without starting
       the ZMODEM Transfer over the Serial In/Output.

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

    9. If the Upload is now to be started the BBS will check in the file
       you specified for the FILESNOTALLOWED=<pathname> option in the NODE
       ICON. If this file is not allowed to be uploaded it will skip
       the upload.

   10. The BBS then displays the STATS from the transfer for all the
       files.

   11. The users time is then credited for the uploads.

   12. 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.

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

   14. If the user has not already given the description for the file the BBS
       asks for the description of the file. Again giving 8 lines
       for the description.

   15. 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 Comment in the <usernumber>.lc 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 LOGON with the PartUploads routine.

   16. Once the description has been entered, the BBS checks if there
       is a door called "FILECHECK" in the SYSCMD directory, if so it will
       be executed and this internal "FCHECK" will be used. This is
       where you can use a multiple type of file checker for all formats.
       If the door doesn`t exists express will check if there is a
       file extension. (a file extension is usually on 3 characters
       preceded by a '.'. (IE:.DMS,.LHA.)).

          Express now compares the extension with any ICON
          of the same extension name in the BBS:FCHECK directory.

          ICONS in the FCHECK directory specify that you are using
          external file checkers. The format for each ICON has been
          mentioned below.

          If no external checker exists for the file then it
          will be posted with a comment "N" for non checked.

   17. If the archive is checked and it passes the BBS puts
       a 'P' between the filename and filesize in the listing.

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

   19. 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.

   20. Now the BBS will post the file in the 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).

   21. 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 be renamed.

   22. 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 then 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
    Access to SYSOP_VIEW in Access ICONS, 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 in the tooltype NDIRS=<numb>. If this type 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 user has ACCESS to the SYSOP_VIEW Option and he specified
       'VS' instead of just 'V' then the BBS will 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. LOGIN NAME..............ByteMaster
            2. REAL NAME...............Joseph Hodge
            3. INTERNET NAME...........jhodge
            4. LOCATION................Radford, Va.
            5. PHONE NUMBER............603-555-1212
            6. PASSWORD................ENCRYPTED
            7. LINES PER SCREEN........23
            8. COMPUTER................Amiga 2000/GVP030
            9. SCREEN TYPE.............Amiga Ansi
           10. SCREEN CLEAR............Yes
           11. TRANSFER PROTOCOL......./X Zmodem
           12. EDITOR TYPE.............Prompt
           13. ZOOM TYPE...............QWK
           14. AVAILABLE FOR CHAT/OLM..Yes


           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 without the necessary security cannot change their
     Name, Location, 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 you choose QUIETNODE for a
    specified node, this node will be skipped in displaying 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 Text 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 NDIRS=<numb> tooltype 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, (in LHA format if requested) from ALL accessible conferences
       into a freely downloadable file that will be automatically added
       to the flaglist for downloading.
  =======================================================================

  =======================================================================
  [ CF ] - Set Conference Configuration:
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       This command will allow your users to set the way express handles
       conferences. From here they can set the 'NEW FILE SCAN',
       'NEW MESSAGE SCAN', and turn 'OFF' and 'ON' what conferences they
       want to ZOOM mail from.

       In the Conference Maintenance option in the Account editor you can
       also Globally set these options (F5).
  =======================================================================

  =======================================================================
  [ VO ] - Voting Booth:
           ~~~~~~~~~~~~
       This Command requires ACS.MODIFY_VOTE for SYSOPS and ACS.VOTE
       for the users in the access icon.

       NOTE: with the VOTING BOOTH a directory called VOTE will automatically
       be created in the conference directory when you initialize a voting
       booth for a conference.

       The voting booth can have up to 25 topics per conference, each
       topic can have up to 99 multiple choice questions to it.

       Also there is a new option to the Conference Maintenance screen called
       RESET VOTING BOOTH, when this is run it will zero out the bits in the
       CONF.DB that keeps track of which voting topics a user has already
       voted on. You should do this for each conference that you plan on
       having a voting booth in.

       The Voting booth is conference based, meaning that one conference
       cannot share the voting booth of another conference.

       To setup a Voting Booth for a conference simply reset the voted
       flags in the CONF.DB via conference maintenance then:

        1. type 'VO' from the menu prompt.
        2. Select the 'CREATE VOTE TOPIC' menu option.
           (REMEMBER you must have ACS.MODIFY_VOTE access for this to work)
        3. You will be prompted to enter a TOPIC NUMBER this number can
           range from 1 - 25, you will probably want to start with '1'.
        4. You will now be prompted for a ONE LINE DESCRIPTION of the
           TOPIC. Then you can save, edit, abort, list, delete etc.
        5. Next you will be asked for the QUESTIONS OF THE TOPIC. YOU CAN
           have up to 99 questions per TOPIC.
        6. After you are finished entering a question then enter 'S' for
           save in order for it to ask you for the multiple choice options.
           You can have up to 25 multiple choice options per question.
        7. When you are finished entering 1 choice, then press return and
           save to submit it and go onto the next choice.
        8. When you are finished entering choices the when prompted for the
           next choice , simply press save, this will prompt you for the
           next question.
        9. If you have no more questions, then press ABORT at the QUESTION
           prompt.
       10. This should bring you back to the VOTE MAINTENANCE MENU.
       11. At the VOTE MAINTENANCE MENU, you can also edit a vote, topic,
           etc. In case you made a mistake.

        NOTE:

        Concerning the voting booth. After you setup a TOPIC you cannot add
        questions to that topic once it is created, when a user votes on a
        topic they must vote on all questions in the topic for it to be
        considered a valid vote. This is handled automatically in that once
        they are in the TOPIC voting process, they cannot get out of it until
        they answer all the questions for that topic, if they loose carrier
        while answering the questions, then the answers for that topic will
        be discarded and the user will have to re-vote on the topic when they
        log back on. In other words, the questions for a topic are not
        updated until the user answers all questions in that topic.
  =======================================================================

  =======================================================================
                         AmiExpress HOST Addresses
                         ~~~~~~~~~~~~~~~~~~~~~~~~~
  AmiExpress allows the use of external HOST Addresses to start Modules,
  which can be executed by the user by a specified key. These host
  addresses can be used by programmers to code Modules working with
  AmiExpress. These HOST Addresses can be used in many programming languages
  (AREXX,C,ASSEMBLER Aso.). To give the programmer more abilities,
  AmiExpress provides many COMMANDS via the HOST Address to get and put
  Information to the running AmiExpress nodes. These commands are
  shared in different areas.

     STANDARD HOST COMMANDS            SPECIAL AREXX HOST CMDS (AIM)
     TRADITIONAL HOST CMDS   (TIM)     AMIEXPRESS INTERFACE    (XIM)
     AMIEXPRESS SCRIPT HOST  (SIM)     AMIEXPRESS CLI INTERFACE(XIM)

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

  =======================================================================
  The Arexx door interface requires a file called REXXDOOR, It must be
  located in your UTILS: path. This will also require an icon to run the
  door(s) in your BBSCmd or CONF{x} and to be located in the BBS:Commands
  directory. REXXDOOR will be launched each time an Arexx door is
  requested. Arexx must also be set up on your amiga system correctly to
  work with /X. First you must have all the necessary Arexx files installed,
  EXAMPLE in your DH0:Rexxc dir. Then in your startup-sequence make sure
  this line exists:

                    Assign >NIL: REXX: SYS:REXXC

  Next, (I put mine in the user-startup) add these lines:

                    Rpstart >Nil:

  Your system is now Arexx ready.

  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 discuss all the Arexx Commands which can be used to
  read & write information of the User & the BBS. These Arexx commands
  are only useful if you want to program 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.

  To register an AREXX Module to AmiExpress you must have the following
  lines at first at your AREXX Modules:

  ------ cut here ------
  /* Arexx Module TEST */

  parse arg NODE
  options results
  address value "AERexxControl"NODE
  ------ cut here ------

  Without this Command at the first lines in your modules, the modules
  will not work together with AmiExpress, so be sure you have these
  Command at the beginning of each AIM Module.

  The following Commands are AmiExpress Arexx HOST Commands which are
  used to give the ability to the programmer to design his modules.
  To use this Command the Initializing of AmiExpress Module must be
  made as listed above.

COMMAND NAME   FUNCTION
=========================================================================
GETUSER <x>    This command will read DATA from the FUNCTION <x> of the
               decimal HOST Commands. This DATA will be transferred to
               the normal RESULT function of AREXX. With this command
               you are able to get the BBSNAME or other things.
               For more Information about the FUNCTION numbers, please
               look at the 'Standard HOST Commands' of Express.
=========================================================================
PUTUSER <x>    This command is exactly the same as the GETUSER command
               with the difference that it will store DATA and not read
               it from the FUNCTION <x>. To store the DATA to a
               FUNCTION <x> you also need the PUTUSTR together with
               PUTUSER because PUTUSER must know what to store into the
               FUNCTION <x>.
=========================================================================
PUTUSTR <x>    This Arexx command will define the DATA depending to the
               PUTUSER command for the HOST commands of AmiExpress
               Use these TWO Arexx HOST Commands together to execute
               Commands which belongs to Express.
               example:

               PUTUSTR "g" <- the variable you want to put into the
               PUTUSER 136 <- FUNCTION 136.

               These two commands together will execute the internal
               GOOD-BYE Main Menu Command and will leave the BBS.
               The '136' depending on the other HOST COMMANDS programmed
               with decimal Codes.
=========================================================================
TRANSMIT ""    This command is the most important HOST Command of
               the AREXX HOST Commands of AmiExpress. This command
               will send text over the serial depending in "" to
               the NODE Window the module was executed.
               example:
               TRANSMIT "HELLO"

               Now HELLO should appear in the NODE Window the Module
               was executed.
=========================================================================
SENDMESSAGE    This Command is exactly the same as the TRANSMIT command
               with the only difference that it will not send an carriage
               return after executing the command, so you can store
               text behind other text.
=========================================================================
GETCHAR        This Command will wait for input from the User to insert
               and this input will be later transferred to the RESULT
               Command of normal AREXX. With this command you are able
               to ask the user questions and transfer the answer to
               different variables.
=========================================================================
PROMPT ""      This Command is the mix of the TRANSMIT & GETCHAR
               commands. After displaying the TEXT in the "" it will
               PROMPT the user to insert something until he pressed
               return. Then the DATA will go to the normal RESULT
               routine of AREXX.
=========================================================================

=========================================================================
                    Standard AmiExpress HOST Commands
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  The following list is a list of all AmiExpress HOST Commands which
  can be used in every program language to get/store information to the
  AmiExpress Host Port. With this Command you can get Information
  like BBSNAME, USERNAME etc. Click on the Buttons for more Information.

     JH_LI            <FUNC: 000>      JH_REGISTER      <FUNC: 001> 
     JH_SHUTDOWN      <FUNC: 002>      JH_WRITE         <FUNC: 003> 
     JH_SM            <FUNC: 004>      JH_PM            <FUNC: 005> 
     JH_HK            <FUNC: 006>      JH_SG            <FUNC: 007> 
     JH_SF            <FUNC: 008>      JH_EF            <FUNC: 009> 
     JH_CO            <FUNC: 010>      JH_BBSNAME       <FUNC: 011> 
     JH_SYSOP         <FUNC: 012>      JH_FLAGFILE      <FUNC: 013> 
     DT_NAME          <FUNC: 100>      DT_PASSWORD      <FUNC: 101> 
     DT_LOCATION      <FUNC: 102>      DT_PHONENUMBER   <FUNC: 103> 
     DT_SLOTNUMBER    <FUNC: 104>      DT_ACCESSLEVEL   <FUNC: 105> 
     DT_RATIOTYPE     <FUNC: 106>      DT_RATIO         <FUNC: 107> 
     DT_COMPTYPE      <FUNC: 108>      DT_MESSAGESPOSTED<FUNC: 109> 
     DT_UPLOADS       <FUNC: 110>      DT_DOWNLOADS     <FUNC: 111> 
     DT_TIMESCALLED   <FUNC: 112>      DT_TIMELASTON    <FUNC: 113> 
     DT_TIMEUSED      <FUNC: 114>      DT_TIMELIMIT     <FUNC: 115> 
     DT_TIMETOTAL     <FUNC: 116>      DT_BYTESUPLOAD   <FUNC: 117> 
     DT_BYTEDOWNLOAD  <FUNC: 118>      DT_DAILYBYTELIMIT<FUNC: 119> 
     DT_DAILYBYTEDLD  <FUNC: 120>      DT_EXPERT        <FUNC: 121> 
     DT_LINELENGTH    <FUNC: 122>      ACTIVE_NODES     <FUNC: 123> 
     DT_DUMP          <FUNC: 124>      DT_TIMEOUT       <FUNC: 125> 
     BB_CONFNAME      <FUNC: 126>      BB_CONFLOCAL     <FUNC: 127> 
     BB_LOCAL         <FUNC: 128>      BB_STATUS        <FUNC: 129> 
     BB_MAINLINE      <FUNC: 131>      RETURNCOMMAND    <FUNC: 136> 
     ZMODEMSEND       <FUNC: 137>      ZMODEMRECEIVE    <FUNC: 138> 
     SCREEN_ADDRESS   <FUNC: 139>      BB_TASKPRI       <FUNC: 140> 
     RAWSCREEN_ADDRESS<FUNC: 141>      BB_CHATFLAG      <FUNC: 142> 
     DT_STAMP_LASTON  <FUNC: 143>      DT_STAMP_CTIME   <FUNC: 144> 
     DT_CURR_TIME     <FUNC: 145>      DT_CONFACCESS    <FUNC: 146> 
     BB_NODEID        <FUNC: 149>      BB_CALLERSLOG    <FUNC: 150> 
     BB_UDLOG         <FUNC: 151>      EXPRESS_VERSION  <FUNC: 152> 
     BB_CHATSET       <FUNC: 162>      ENVSTAT          <FUNC: 163> 
     NODE_DEVICE      <FUNC: 503>      NODE_UNIT        <FUNC: 504> 
     NODE_BAUD        <FUNC: 505>      JH_MCI           <FUNC: 507> 
     PRV_COMMAND      <FUNC: 508>      BB_CONFNUM       <FUNC: 510> 
     BB_DROPDTR       <FUNC: 511>      BB_GETTASK       <FUNC: 512> 
     NODE_BAUDRATE    <FUNC: 516>      BB_LOGONTYPE     <FUNC: 517> 
     BB_SCRLEFT       <FUNC: 518>      BB_SCRTOP        <FUNC: 519> 
     BB_SCRWIDTH      <FUNC: 520>      BB_SCRHEIGHT     <FUNC: 521> 
     BB_PURGELIN      <FUNC: 522>      BB_PURGELINESTART<FUNC: 523> 
     BB_PURGELINEEND  <FUNC: 524>      BB_NONSTOPTEXT   <FUNC: 525> 
     BB_LINECOUNT     <FUNC: 526>      DT_LANGUAGE      <FUNC: 527> 
     DT_QUICKFLAG     <FUNC: 528>      DT_GOODFILE      <FUNC: 529> 

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

=========================================================================
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 indicator , 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 occurred or a
                TIMEOUT condition has occurred, otherwise msg->Data = 1.

                msg->String will be the user response.
(FUNCTION #: 5 )
=========================================================================

=========================================================================
JH_HK           Allows you to get a 1 character response from the user.

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

                if msg->Data = -1, then a loss carrier has occurred or a
                TIMEOUT condition has occurred, 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
                also takes into account language specifications.

                This also searches for the access level patterns, ie:

                Bull10.TXT, Bull100.TXT
(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 occurred or a
               TIMEOUT has occurred, 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 )
=========================================================================

=========================================================================
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 ComputerTypes code

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

                if msg->Data = 1, then msg->String will be ComputerTypes.
                if msg->Data = 0, then ComputerTypes 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 retrieve 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_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 )
=========================================================================

=========================================================================
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 AREANAME.
                  if msg->Data = 0, then AREANAME will be msg->String.

(FUNCTION #: 146 )
=========================================================================

=========================================================================
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 )
=========================================================================

=========================================================================
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 )
=========================================================================

=========================================================================
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 retrieve the initialized baud rate of the node.

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

             msg->String will be the INIT baud rate.
(FUNCTION #: 505 )
=========================================================================

=========================================================================
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 )
=========================================================================

=========================================================================
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 )
=========================================================================

=========================================================================
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_PURGELIN   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
                      guidelines.

                ie:  Default language .TXT
                     English          .ENG
                     German           .GER

                     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 SYSCmd door
                  called FILECHECK.
(FUNCTION #: 529 )
=========================================================================

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

  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.

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

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

  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 separate 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.


        ___________ 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
=========================================================================

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

  This new interface can be used to run CLI doors. Not all doors will
  work correctly. You will have to experiment.

  Setup procedure:

        1st: You must have Fifo-Handler in your L: directory, and also
             you must have a Fifo.Library in your Libs: directory. You must
             have at least version 0.4 of the Fifo.Library.

        2nd: You must add these lines to your user-startup,

             -------> assign AXCLI: DOORS:CliConFigs
             -------> run >NIL: <NIL: L:Fifo-Handler

        3rd: You must create a directory in your doors: called cliconfigs.
             This directory will store the config files for each door run.
             They must have the door name and a .cfg behind it. These cfg
             files control the paths to the doors, and the commands allowed
             and not allowed with your keys.

    THIS IS AN EXAMPLE CFG FILE:

            doors:contris/contris! ~N
            BREAK_C

        The first line is the execution line. Any following line is the
        filter options, which are as follows:

            BREAK_C -----> Allows Ctrl C
            BREAK_D -----> Allows Ctrl D
            BREAK_E -----> Allows Ctrl E
            BREAK_F -----> Allows Ctrl F
            RAWMODE -----> Allows Unfiltered IO

                  ~~~~~~~~~~~~ WARNING ~~~~~~~~~~~~~~

        As you can see, the CLI Doors are VERY DANGEROUS. If
        you have a wrong option in the cfg file, you could be
        opening your whole bbs up for the taking. I really mean
        taking. A use might be able to Break the CLI and get into
        your system And you know what that means.

        We suggest you research the use of the multi-user file system for
        security. WE WILL NOT BE HELD RESPONSIBLE IF SOMEONE BREAKS INTO
        YOUR SYSTEM. YOU HAVE BEEN WARNED.

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

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

  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 in order for Express to switch to the MCI
    interpreter for displaying the text file.

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

  ~N       User Name
  ~IN      User Internet Name
  ~RN      User Realname
  ~UL      User Location
  ~P       User Password
  ~#       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 Initial Time Limit at logon in Minutes
  ~TR      User Number of Mins Remaining 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 '.'


  ~OD      Online Since Date
  ~OT      Online Since Time
  ~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 appear, 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.

  ~<xx>SR_<screens>
              This allows you to have random textfiles by using this
              MCI Command. <xx> represents the maximal number of
              random file you want to change. and <screens> is the full
              path to the textfiles you want to be random displayed.
              (without .TXT)

  ~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, indicates that only those over or equal to
                               access level of 50 are allowed to view the
                               file.

  ~SR  - Show Random Files

  SYNTAX: ~<numb>SR_<fileid>

           ^    ^  ^
           |    |  |
           |    |  ---------- pathname without security level and file
           |    |             extension
           |    ------------- Command to show random file
           ------------------ Number of Random files

  IE: ~10SR_BBS:Logon

  This will look for a random file between 1-10, the syntax for the file
  to display is:

  SYNTAX: PathName<seq>.FileName[security level]<extension>

  IE: BBS:001.Logon200.TXT


  This would be the first of ten files to create to be displayed
  by the random function, the '200' is the security level which is
  optional.


  ~SX  - Show Sequentual Files

  SYNTAX: ~SX_<fileid>

           ^  ^
           |  |
           |  ---------- pathname without security level and file
           |             extension
           ------------- Command to show sequentual file

  IE: ~SX_BBS:Logon

  1. This will look for a file called BBS:Logon which will store the last
     sequence of the <fileid> that was displayed. If this file does not
     exist, the 'SX' command will create it.
  2. Then it will construct a display file name based on the next sequence
     number as follows:

     SYNTAX: PathName<seq>.FileName

  3. It will then look for the appropriate file to display. The actual
     ASCII file should contain the following information for the filename:

     SYNTAX: PathName<seq>.FileName[security level]<extension>

     IE: BBS:001.Logon200.TXT --v
         BBS:001.Logon100.TXT ----- notice the different security levels
                                    keeping in mind that they are optional.
         BBS:002.Logon200.TXT


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

  ~CC_WHO

  NOTE: It is important to realize that most MENU COMMANDS should only
        be run from the MENU PROMPT. For Instance , forcing the READING
        of mail at the FRONTEND of express would not be wise because the
        BBS does not know who is logging onto the system. So use your
        own judgement on these matters.

  ~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.

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

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

 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, kind 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 flexibility.

 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 until 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 Program should be like this that the
               BBS will suspend:

            ------------- cut here ------------------
               /* The Suspend Command for AmiExpress V4.0 */
               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 ability 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.

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

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

  I would personally like to thank Joseph Hodge, who has painstakingly,
  and endlessly programmed, and put up with us. It is not easy to try and
  make a program do what everyone wants. I still do not know to this day
  why he choose to carry on with AmiExpress but I sure am appreciative,
  It has been a wonderful learning experience in both the programming world
  and friendships. We have become like brothers, and like brothers will be
  together through the good times and bad times.

  I would also 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 enthusiasm in making express the best BBS program around.

  I would also like to thank all the distributors and users who have helped
  the development of express. It is heart warming to see the devotion that
  comes from the registered users, more devotion then we ever expected.

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

        Please report any errors in this file, or any other file to:

               -------------------------------------------
               LightSpeed Technologies Inc. (305) 964-4263
               -------------------------------------------

                          Or Mail to:

                          LightSpeed Technologies Inc.
                          P.O. Box 4435
                          Hollywood, Fl. 33083-4435

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

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

  In the 'W' option for users, is now the ability for the user to pick
  what kind of Zoom they want. They can pick QWK, or the old ascii
  zoom option.

     NOTE: You must first install some new Icons in the ZOOM dir, otherwise
           it wont work. You must have 3 Icons called:

           QWKCFG  --> In this icon are the following tooltypes:

                       BBS.NUMBER=<YOUR PHONE NUMBER> IE: 1-305-964-4263

                       BBS.ADDRESS=<ONE LINE ADDRESS> IE: FLORIDA

           QWPACK  --> In this icon are the following tooltypes:

                       LHA=c:LHA a
                       ZIP=c:ZIP -0

           ASCPACK --> In this icon are the following tooltypes:

                       LHA=c:LHA a
                       ZIP=c:ZIP -0

           Edit them to fit your needs !


  Now to be able to upload your replied messages from the QWK interface
         You need to do this.

         To install:


   First: Make an icon called SQWK and put it in the bbs:cmds dir. It is a
          XIM door.

  Second: Put the sqwk file in the doors: dir.

   Third: Put the sqwkmerge file in the BBS:utils dir. It is now installed.



         Now as the user, all you would have to do is hit SQWK at a
         menu prompt. The bbs will then be awaiting for your replied
         QWK mail.  REMEMBER only send your reply packet in the upload.
         It should have the extension of .REP on the file. The user can
         go on and do other things while the QWK is unpacking the mail.



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

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

       In this new 4.0 release, acp has the new option of setting up all the
       directories and icons from scratch. So anyone even if they do not
       know  how to get a bbs going can have a default script file,
       (that we have provided in the s:dir of the main support disk), get
       there bbs up from just hitting the Setup Button on the ACP.
       What is so nice about this is that you guys who write doors or
       utilities for express, can create script files that will
       automatically create the directories, icons, and put your default
       commands in the icon automaticlly by the acp custom installer,
       just the way you want them, without wondering if the end user is
       installing your program correctly.  Now let me explain
       how this works:

       The script file provided will set up a default express. You can add
       or delete to your liking. We have it now so it will create a bbs
       in RAM: so be CAREFUL it will delete what you have already set up
       if you change the script to BBS:

       When you start the acp and it does not find any configured BBS ready
       to go, the acp will pop up a requestor asking you what file (script)
       you want to use. If you have the aeicon.config in your dh0:s dir,
       it will automatically configure a new bbs. The only thing you will
       need are the default icons that you found originaly in your storage
       dir. The setup procedure uses those icons to copy over, and then
       uses the information you (us) gave in the script file. Now you can
       change the icons the way you want, and the options you want in the
       icons. In the script file (aeicon.config) you will see an explanation
       of the options. I will not go into any more right now, but it is
       pretty much self explanatory, especially for you guys that program
       in C.

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

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

  Problem                            Solution
  --------------------------------   -----------------------------------
  ACP will not start.                1. Make sure ACP is being run
                                        from the startup-sequence or WB
                                     2. Goto an AmigaDos shell, go to the
                                        directory where the command is
                                        located and type ACP, this
                                        should give you an error message
                                        indicating that perhaps a file is
                                        missing.
                                     3. Be sure that you have the ICON in
                                        the same directory as the Main
                                        Program
  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
  gurus every time someone enters         not getting set. You must have
  the msgbase scan.                       a stacksize of 50000 for this
                                          to work.

  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 UNIT statements
                                          reflect the correct UNIT
                                          number.

                                       2. Make sure the DEVICE_NAME is
                                          correct.

                                       3. Make sure you have a
                                          MODEM_INIT string in the MODEM
                                          ICON.

  In the CALLERSLOG:                   1. Make sure you started the
    Error Reading MsgBase Pointer         CONFDB Utility the Right way:
  is listed                           1> CONFDB BBS:CONF/ <max.Usernumber>

                                       2. Make sure CONF.DB is in each
                                          conference you have.

                                       3. Make sure that the Usernumber
                                          you choose in the creating of
                                          CONF.DB is not lower than the
                                          actual one.

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

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

We are experimenting with various ideas with express to allow more
diversity, some of the items coming up AS UPDATES in the 4.0 version of
Express are:


    Full Internet access ability. You will be able to upload/download
    to the internet, Also read/write in a pre-defined conference message
    bases to the internet.


    So people, hang in there, you will see a lot of enchancements in the
    next couple of months.


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