Command Center -- Release Notes

  Actcodes are available by submitting your information to us by email to
  bladerunner@colis.com, by telephone at (876) 922-5201 or (876) 922-5173,
  or by FAX to (876) 922-9036.  Ensure that you provide us with your email
  address so that we can transmit the activation code to you when generated.

  You can also contact us by dialing in directly to our BBS, creating an
  account and leaving email to Sysop or Support, but we do not recommend
  this because of the long distance charges you will incur.

  We do not upgrade non-SFA modules, and in particular, Command Center by
  Soft Arts cannot be obtained at upgrade pricing on the basis of ownership
  of a Prostar, Logicom, or Cyberware version of the same named module.


Version 1.08.2B-MBBS 6.25/WG 1/2/WG 3 DOS/WG 3 NT (14 Nov 1998)
---------------------------------------------------------------

A.  BUG FIXES/REPORTS
=====================

o   This is a beta release and may therefore have a higher incident count
    than a full release candidate.

o   An inconsistency between the display modes for the Command Center Logon
    Message and the new telegram notification was introduced by the Online
    Configuration system.  This caused Command Center to stop displaying the
    new telegram messages in terminal mode whenever the system was
    configured with a Command Center Logon Message although C/S users
    continued to get their logon telegram notifications as usual.  This has
    been corrected.  Terminal mode users now once again receive the message
    in Level 6 Text Block TGMWTG2 for new telegrams immediately after the
    display of the Command Center logon message when there is one.

o   A very obscure bug resulted in a small percentage of NT systems GP'ing
    after immediate deletion of a bad signup when signup control was
    engaged.  The bug was the result of an interaction between CC and the
    Worldgroup baseline.  This has been corrected.

o   A typographical code error resulted in a possible GP being generated if
    any list command was used immediately after the =TYPE command with the
    REVERSE option.  This has been corrected.

o   There has been a general cleanup of the command handling routines.
    Previously, a command syntax of the form:

        COMMAND=OBJECT

        or

        COMMAND=ACTION

    would fail if it were entered with any intervening spaces surrounding
    the "=" character.  Command Center will now ignore all white space
    surrounding reserved command words, allowing for more readability in
    entering command strings.

o   We discovered the strangest condition concerning the use of classes in
    MBBS/Worldgroup which explained the oddity that the list of classes
    produced by Command Center's class record listing (=LU SEARCH=17) always
    indicated several classes which could not be accessed from the Remote
    Sysop Menu.  Apparently when the BBSSETCL.EXE or WGSSETCL.EXE program is
    run during installation or at any time thereafter, a standard list of
    class records are created or replaced.  However, based upon the
    selection of class mode, the program then proceeds to enter an illegal
    combination of flags in the class records which are not to be used.

    While the server is up, the baseline code discriminates between the
    illegal records by testing for a condition which ordinarily could not be
    set when a class is created online.  This condition is a combination of
    user account expiry when the account has less than 1 credit, and expiry
    when the account has greater than 0 credits.  As these attributes are
    logically mutually exclusive, this combination is clearly illegal.  In
    fact, any attempt to use one of these illegal classes in the Remote
    Sysop menu results in the class record being instantly deleted, a
    situation which gave us a great headache until we finally understood
    what was going on!

    Unfortunately however, as we were not aware of this behaviour, our code
    did not attempt to discriminate between these illegal class records and
    consequently listed these classes as available for user activity.  Even
    worse, if an attempt was made to switch a user to one of these classes,
    Command Center would obligingly hand the request on to the
    MBBS/Worldgroup executive which as a result of the behaviour of the
    algorithm handling class switches would always switch the user to the
    class to which the illegal class was defined as expiring to for lack of
    or overage of credits!

    To correct this condition and synchronize our operation with baseline
    code, Command Center now disallows class references where this illegal
    condition exists, and will also ignore these records when displaying a
    class record listing.

o   Systems which do not prompt new users for entry of their birth date end
    up with the default birth date string of "01/01/00" in the birth date
    field of the user records (up to WG 3.0).  This resulted in an age
    display of the current calendar year when the U2 user list was displayed
    to any MASTER key holder.  We have corrected this by comparing for this
    birth date string directly whenever the age calculation is performed for
    the user list display, and the display will now be correctly "N/A".

    With regards to WG 3.1, the change in internal date format from MM/DD/YY
    to YYYYMMDD suggests that the empty birth date comparison string should
    be "00000101" and for the time being we have assumed this value until
    otherwise notified.  If you are running WG 3.1 and notice any problem in
    the age display for empty birth date user records, please contact us
    with the information so we can resolve the problem quickly.

o   The C/S Tool bar has always allowed a choice of 2 button sizes, Large and
    Small buttons.  Unfortunately the Small button size has always resulted
    in a button which is so small as to be actually unreadable, while some
    users would also prefer a button size which is smaller than the Large
    button size.

    The sizing of the tool bar buttons has now been completely overhauled,
    allowing you to choose both button sizes.

o   The EDIT command in the WG 3.X NT/95 version was causing an exception
    due to differences in how a baseline function was handled.  This has
    been corrected.

o   Terminal mode logons where the user's logon list setting was NO was
    causing a double prompt of the main menu if either of the logon busy or
    low credits warnings were displayed.  This has been corrected.

o   Pages which were intercepted by Command Center's profanity handler when
    level 4 CNF option PROFPAGE was set to YES, would be correctly rejected,
    but were not triggering the display of the profanity error message
    defined in Level 6 CNF option PFNMSG to display and would also sometimes
    trigger a spurious character injection at the main menu.  This has been
    corrected.

o   Another blow has been struck in the Y2K fight!  The Recent Users and
    Recent New Users terminal mode lists are now fully Y2K compliant in
    their display.

o   Pseudo keys added for BUSY users and SYSOP class users.

o   The MAIL command now uses a background task handler for queuing email.
    This means that large numbers of messages using this command will not
    affect system response but will simply slow down the delivery of the
    messages.  (This feature does not apply to MBBS versions).

o   The User Listing for C/S mode has been altered so as to ensure that this
    displays only occur once during a C/S session at initial logon.
    Previously this display would re-occur after every return from Terminal
    mode if the Logon List setting was enabled.

o   The Level 4 CNF option EMALXCLD which contains the key to exclude users
    from receiving email warnings when their available credits drop below
    the threshold value set in option CREDSEML is now available for On-Line
    Configuration in using the =CONFIG KEYS2 option.

o   A user requested the facility to disallow the name "SYSOP" as any part
    of a new User-ID.  Apparently an id of "Master_Sysop" was created and
    used to fool unsuspecting users into giving out information about their
    accounts.  This facility can easily be implemented by adding the word
    "sysop" to the Level 4 CNF option GARBAGE, and ensuring that options
    NWACCTRL and NWUSRUID are both set to YES.

o   Procedures for automatic registry record deletion added.

o   C/S command keys.  Keys added, deleted, or toggled from a button or
    menu selection in  C/S mode.


B.  NEW/REVISED COMMANDS
========================

Key: [] = required parameter
     <> = optional parameter
     {} = parameter values

(Usage shown with default commands - uppercase means literal key words)

  C/S Menu Selection
  ==================
             ** All platforms except MBBS **
             Command Center can now be optionally added to your C/S menu
             tree and restarted at will using the button (icon) to which
             you have linked it in using the Menu Tree Editor.

             Previously Command Center could not be selected with the Menu
             Tree Editor and internal built in controls prevented it from
             being restarted after selecting the Close option from the
             Command Center menu.  These restrictions have been removed.

             Note the following details which fully describe the behaviour
             of Command Center as a C/S module:

             o  Command Center is a C/S Startup module meaning that in its
                default state, it will automatically start up as soon as a
                C/S user connects to the system.  If you do not wish this
                behaviour and would rather that users deliberately load
                Command Center from a button icon on the C/S Main Menu,
                edit the SFACC.MDF file and either remove or comment out
                (place a semi-colon as the first character of the line) the
                line which reads:

                     C/S STARTUP

                ***********************************************************
                !!!!!! DO NOT CHANGE ANY OTHER LINES IN THE MDF FILE !!!!!!
                ***********************************************************

             o  Command Center can be manually closed at any time using the
                Close option found on the Command Center menu, and can be
                restarted at any time using the button icon you have
                selected and linked using the Menu Tree Editor.  If you do
                not place a button to load Command Center, then users who
                close Command Center will not be able reload it without
                re-logging their connection to the server except by dropping
                to terminal mode.

             o  Dropping to terminal mode from C/S and returning will always
                reload Command Center whether or not it can be manually
                reloaded via a button.

  New C/S Options
  ===============

             *Utility Toolbar button*
             *Utility commands menu option*

             Several utility commands previously only available in terminal
             mode can now be accessed from C/S mode using the new "Utility"
             button or the "Utility commands" menu selection now available
             on the Command Center C/S Menu.

             These new controls become available to any user who has at
             least one of the commands which comprise the Utility menu
             available to them.  For MASTER key holders (Sysop class users),
             all of the new commands will be available in this release as
             follows:

                    Instant email
                    Give/take class keys
                    Set/show system variables
                    Show statistics
                    Reset channel
                    Lock channel
                    Metakeys
                    Login controls

             When either the Toolbar Utility button or the Utility commands
             menu option is selected, a pop up sub-menu will be displayed
             which contain the above command selections, or so many of them
             as are authorized by the user's access rights.  The sub-menu
             will always attempt to display itself immediately below the
             location of the Command Center button, however it will adjust
             its position to ensure that the entire menu is always
             displayed.

             The menu commands will display a dialog box appropriate to the
             command being executed.  You can cancel the menu by pressing
             the Esc key while the menu is active or by clicking in any
             other screen region (including clicking on another Command
             Center control).

             *Toolbar Button Sizes*
             The C/S Toolbar allows a choice of 2 button sizes, Large and
             Small buttons.  These button sizes are now configurable.

             Level 4 CNF options SMCYSIZE and LGCYSIZE contain a scaling
             factor from 1.0 to 4.0 which is used to size the small and
             large button sizes respectively.  Command Center displays the
             tool bar buttons by obtaining the design time size of the
             buttons and scaling them by these factors.

             The default values of 1.5 and 2.0 have been established to
             work well with all known Windows screen resolutions.  Do not
             change these values without first testing the resulting
             displays on all possible client resolutions that your users
             will use.

  Command Keys
  ============

           Command Center can now process a list of authorized keys from
           C/S mode by responding to a button or object which calls the
           Command Center client program with a command string in one of
           several forms.

           The list of keys authorized to be processed is contained in the
           Level 4 CNF option CSCMDKYS.  If a key cannot be verified as
           being contained in this list, this function will take no action
           at all.

           To utilize this feature, you must create a button, hot spot or
           menu object and select Command Center as the module to be
           activated by the object and also enter an appropriate command
           string for the object.

           Here are the allowed command strings and their actions:

              Add a key to user's keyring        :    /KEYADD keyname
              Delete a key from user's keyring   :    /KEYDEL keyname
              Toggle ownership in user's keyring :    /KEYTGL keyname

           The keys are added and deleted from users' personal key rings,
           however if a user does not have a key in their key ring but the
           key is present in the user's class key ring, they will be
           considered as possessing the key.  This may interfere with the
           key testing process and also invalidate the results.  For example
           if a key is owned by a user's class keyring and the /KEYDEL
           command string is processed, the function will silently fail,
           since although the user is considered to possess the key, it
           cannot be deleted from their personal key ring.  For this reason,
           you will probably want to be sure that the keys assigned and
           manipulated using these functions are not contained in any class
           key rings.

           To test MASTER key holders (SYSOP class users) for actual
           ownership of a key, prefix the defined key in the CSCMDKYS option
           with a "*" character.  To invert the key test (test for NOT
           ownership of a key), prefix the key with the "!" character (note:
           these 2 prefixes may be combined in any order as long as they
           occupy the first 2 characters of the key string).

           Remember that legal keys are limited in length to 15 characters.
           You are allowed to utilize the full key length in addition to the
           special Command Center key prefixes.

  =CONFIG  : Online Configuration

             Screen changes
             ==============

             The Pseudo Keys screen has acquired the following new fields:

                o    [New email] (not MBBS)
                o    [Always TRUE]
                o    [Always FALSE]

             Renamed Config Options
             ======================

             Option CSMODE => CSLIST

             The CSMODE option has been renamed to CSLIST as this option
             handles only items relating to the display of the C/S mode
             user listing.

             New Config Option
             =================

             Option : CSMISC

             This is a new config option for handling Miscellaneous C/S
             items.  Initially this option will display only the Toolbar
             button scaling factors, the C/S System fixed pitch font name,
             and the option to enable the Graffiti wall in C/S mode.

             Missing settings
             ================
             Online Config has been upgraded to include several options
             which were previously missing.  Please notify us if you
             discover any settings which have been omitted.

  =LK      : List users with key

             New Usage
             =========

             Usage   =LK <LIST=SYSOP>

             This new command line option generates a list of ONLY those
             users who currently have MASTER key access other than the Sysop
             account.  This can be a useful facility in the event that you
             suspect that unauthorized users have obtained MASTER key
             access.

             Note that this is *not* the same thing as executing a key list
             for a key named "MASTER", i.e. the command

                 =LK MASTER

             searches for an actual assigned key by the name of MASTER,
             which is not the same thing as the Sysop's MASTER key and which
             is why we use the syntax "=SYSOP" and *not* ="MASTER".  All
             MASTER key (Sysop class) users are automatically excluded from
             the standard key lists since they are assumed to possess every
             key so the command above would actually ignore MASTER key
             holders (unless of course they have actually been assigned a
             key named "MASTER").

  =LOGIN   : Login user and class control

             Usage   =LOGIN [User-ID|CLASS=classname] <<LOW=##> <HIGH=##>>
                     =LOGIN [User-ID|CLASS=classname] <CLEAR>
                     =LOGIN LIST=USERS|CLASSES
                     =LOGIN RESET=CLASSES

             Where   User-Id   = a valid User-ID on the system
                     classname = a valid class on the system
                     LOW       = option to set low login control
                     HIGH      = option to set high login control
                     CLEAR     = option to remove login control from user or
                                 class
                     LIST      = list users or classes with login controls
                     ##        = a valid hour expressed in military time
                                 (1..24).  0 is not an allowed entry

             LOGIN is used to create login time controls on a per user or
             class basis.  The controls operate to deny login access to
             users who are affected by the controls, either because they
             have been assigned a control directly or because they are
             members of a class to which a control has been assigned.

             The low and high controls can be entered on the same command
             line or they can be entered separately for any user or class.
             In either case, the values are checked for validity against
             either the other entered control value or the pre-existing
             other control value.  For example, setting the high control to
             16 (4:00 p.m.) will be rejected if the low control for the
             user or class has already been set to 18 (6:00 p.m.)

             Entries of 0 are not allowed.  You can clear any user or class
             controls by using the CLEAR syntax, however the low or high
             control cannot be cleared individually.  In this case, clear
             the entire setting and re-instate the desired one.

             Login time controls are entered on the hour, however the actual
             time comparison is performed on a minute basis.  The hour value
             of the low control must be less or equal to the current time
             and the current time must also be less than the value of the
             high control during the attempted login, e.g. if the low
             control is set to 8 (8:00 a.m.), the user must login in at a
             clock time of 8:00 a.m. or later, and if the high control is
             set to 20 (8:00 p.m.) the user must login at a clock time of
             7:59 p.m. or earlier in order to pass the login control
             validation.  If you set the control values for low and high the
             same, the user will be able to login only during the 60 minutes
             from 00 to 59 for that hour.

             Login class controls are checked before login user controls.
             The controls affect all users regardless of MASTER key status
             with the exception of the "Sysop" account which is always
             exempted from the controls.

             Once defined, login controls become operational when 2 other
             conditions are satisfied.  Firstly, the Level 4 CNF option
             LOGINCTL must be set to YES.  This option can also be set in
             Online Configuration with the USERS screen selection.
             Secondly, the user or class intended to be affected by the
             login control must be given the key composed of the string
             "_PSKCC_" suffixed by the value of Level 4 CNF option PSKLOGIN.

             The default key value is "_PSKCC_LOGIN".  The key must be given
             to a user on his/her key ring in order for their control to
             operate, or in the case of a class control, the key must be
             added to the class key ring.

             Because the login controls require the presence of this key to
             become operational, controls can be defined and remain dormant
             until a user or class is handed the appropriate key, or a
             control can be disabled without removal simply by removing the
             key from the user's or class key ring.  Also, irrespective of
             other settings, all login controls can be disabled by setting
             Level 4 CNF option LOGINCTL to NO.

             When a user is denied login, either of the Level 6 Text Blocks
             LGNCLSNO or LGNUSRNO is displayed for class or user controls
             respectively.  These text blocks display the current time as
             well as suggesting the time period(s) before/after/between the
             user may attempt a login based on their user control or class
             control.  If for some reason, the specific control cannot be
             accessed when the message is to be displayed, a more general
             message found in Level 6 Text Block LGNALLNO which displays
             only the current time is displayed.

             Use the RESET=CLASSES syntax to clear all class login controls
             simultaneously.  You will be prompted for confirmation before
             the reset proceeds.

  =MK      : Metakeys

             Usage   =MK ADD [metakey] <MASTER=M|F|N> <LOW=##> <HIGH=##>
                                       <EXPIRES=YYYYMMDD|MM/DD/YY> [expr.]
                     =MK CHANGE [metakey] <MASTER=P|F|N> <LOW=##> <HIGH=##>
                                       <EXPIRES=YYYYMMDD|MM/DD/YY> [expr.]
                     =MK DELETE [metakey|RESET=YES]
                     =MK LIST

             Where   metakey  = the name assigned to a metakey (3..15
                                characters)
                     expr.    = the expression assigned to the metakey.
                     M        = MASTER key holders always pass (the default)
                     F        = MASTER key holders always fail
                     N        = MASTER key holders get no special handling
                     LOW      = option to set low time control
                     HIGH     = option to set high time control
                     EXPIRES  = option to set expiry control
                     RESET    = option to delete all metakeys
                     LIST     = list metakeys option
                     YYYYMMDD = date entry (e.g. March 30, 1998 = 19980330)
                     MM/DD/YY = date entry (e.g. March 30, 1998 = 03/30/98)
                     ##       = a valid hour expressed in military time
                                 (1..24).  0 is not an allowed entry

             This command allows the creation of complex key expressions
             built on smaller tests of key ownership.  The system of keys
             and locks provided by the baseline lacks the flexibility to
             combine multiple key tests in all cases (MBBS has no AND and OR
             tests) as well as NOT key tests, i.e. the test for
             non-ownership of a particular key.

             The keys created using this system are actually pseudo-keys,
             and are used by declaring them as required prefixed by the
             concatenated literal "_" character (an MBBS/Worldgroup
             convention for pseudo-keys) and the string defined in Level 4
             CNF option METAKEY.  The default string in this option is "#",
             therefore the default metakey lead string is "_#".  To use a
             metakey named GAMES therefore, you would actually enter in it
             the menu tree as "_#GAMES".

             Pseudo-keys have the valuable property of being checked before
             standard keys, and also being checked explicitly for all users
             including MASTER key holders.  This has important implications
             in relation to the issue of NOT key tests, which will be dealt
             with later.

             A metakey expression is simply a series of 1 or more keys,
             separated by a legal operator or operator combination.  The
             format of the expression is:

                  key <op> <key <op> ...>

             where:

                  key is any keyname

                  op is any legal operator or operator combination

                  any key or key combination can be enclosed in brackets

             The keys and operators may be combined multiple times up to the
             limit of the expression length, which is 76 characters.
             White space is permitted as desired during entry of the
             expression but is automatically stripped and the expression
             converted to uppercase before being stored.

             When an expression is entered using the ADD or CHANGE syntax
             options, it is immediately checked for validity, and if the
             metakey parser deems the key invalid, it is rejected with an
             appropriate error message.

             Keys in this context means any key which is located on either
             the class or personal key ring of a user, and also a metakey.

             From the statement above, it follows that metakey definitions
             can be recursive, i.e. a metakey can contain a metakey as part
             of the key expression.  While this will normally cause no
             problems as long as the keys contained in the key expression
             are not themselves defined in terms of the metakey being
             evaluated, the moment this rule is violated there will be an
             almost instantaneous GP resulting from the stack overrun
             which will follow as several hundred thousand metakey calls
             nest inside each other vainly searching for an end to the
             expression!  Here is an example of this situation:

                  KEYA = KEYB | KEYC

                  KEYB = KEYA & KEYC

             The problem here is that KEYA will attempt to evaluate KEYB,
             which will attempt to evaluate KEYA, which will attempt to
             evaluate KEYB, which will attempt to evaluate ...  You get the
             idea!  While Command Center can sense this condition when the
             key being defined is itself a part of the definition, such as
             the definition:

                  KEYA = KEYA | KEYB

             it is impossible for it to determine the bona fides of the
             expression in the earlier example, and in these cases, it is
             simply your responsibility to ensure that this sort of
             recursion does not occur.

             The legal operators are the following:

                  &  = logical AND, meaning that the user *MUST* hold the
                       key specified in the next argument in order for the
                       key expression to return true.

                  |  = logical OR, meaning that *IF* the user holds the key
                       specified in the next argument, the expression will
                       return true.

                  !  = logical NOT, meaning that the user must *NOT* hold
                       the key specified in the next argument in order for
                       the key expression to return true.

             In general, combinations of operators are illegal and cannot be
             allowed since they cannot be validly evaluated.  A combination
             of operators occurs where 2 operators are placed side by side
             without any intervening key name.  The exception to this is the
             combinations below:

                  & ! meaning AND NOT

                  | ! meaning OR NOT

             No other combination is permitted as evaluation would be
             impossible (and meaningless).  Furthermore, the NOT operator
             if it is not the first character of an expression, must
             logically follow one of the other two operators, therefore the
             following expression is both meaningless and illegal:

                  TELNET & PAYING ! COMPLIMENTARY

             The expression is evaluated from left to right.  Whenever an
             open bracket is encountered, the current evaluation is saved,
             and a new one is commenced using the contents inside the
             brackets.  When this evaluation is completed, evaluation
             resumes with the next term "outside" the closing bracket.  This
             allows for highly complex and readable expressions built on
             multiple keys such as:

                  NORMAL & (TWIT | FOOL) & ! DEMENTED

             which when translated means return true if the user has the
             NORMAL key, either of the TWIT or FOOL keys and also does NOT
             have the DEMENTED key.  Multiple redundant brackets do not
             affect the evaluation (although they do waste execution time
             and memory) however brackets are required to match, and the
             expression will be rejected if they do not.

             Note that the syntax "<>" in the metakey definition means
             "optional", therefore it is perfectly legal (although probably
             pointless) to define a metakey as a single keyname such as:

                   GAMEPLAYER

             which means return true if the user has the key GAMEPLAYER,
             however it might be quite useful to define a metakey in terms
             of the NOT of a single key, such as:

                   ! PAYING

             Note carefully that the expressions must be viewed absolutely
             and not logically.  While this distinction may be difficult to
             grasp sometimes, it is best appreciated by recognizing that the
             metakey implementation is not intended to be as complex or
             complete as for example a language parser, which must be able
             to handle all possible logical combinations.  Expressions are
             intended to be evaluated by testing individual keys, not
             logical expressions.

             For the reason given above, the following expression will be
             rejected by the metakey parser:

                   ! (ONE | TWO)

             and in fact the parser will simply disallow any expression
             which begins with the combination of NOT and an open bracket.
             Of course the result desired from the above expression can be
             obtained by rewriting the expression in terms of the individual
             keys, i.e:

                   ! ONE | ! TWO

             Of course the same expression becomes legal when it is not the
             first term of an expression and the expression:

                   !NUMBER | ! (ONE | TWO)

             is perfectly acceptable.

             The purpose of the MASTER option is to handle MASTER key
             holders who by definition are treated by MBBS/Worldgroup as if
             they possess every key issued regardless of whether the key is
             actually possessed by the user or on their class key ring.
             Normally this does not cause problems except when it is desired
             for a MASTER key holder to be evaluated on a NOT key test.
             Since these users are treated as possessing all keys, they must
             inevitably fail any test which enquires whether the user does
             NOT possess a key.

             The solution to this situation is to define the key as MASTER=F
             (always fail) or MASTER=N (no special handling).  When always
             fail is selected, the individual key ownership test will always
             return false for a MASTER key holder (which therefore means
             that the NOT key test will return true).  When it is set to no
             special handling, the user is evaluated for the key exactly as
             an ordinary user, i.e. the key expressions returns true or
             false based on the keys which the user actually possesses or
             can be found in their class key ring.

             For example, given the definition:

                   ! DEMO

             all MASTER key holders would fail this metakey test if the
             metakey were defined with the default MASTER=P attribute since
             by definition, the user would possess the DEMO key although
             they were not actually a member of the class containing the key
             or had the key on their personal key ring, and hence the test
             for NOT DEMO would return false.  By declaring the metakey
             with the MASTER=F attribute, the sense of the test would be
             reversed and MASTER key holders would automatically return true
             for this key.  By declaring the metakey with the MASTER=N
             attribute, the result of the test would depend on whether the
             user actually possessed the DEMO key in either their class or
             personal key rings.

             The more useful attribute is the MASTER=N handling since by
             definition, the Fail attribute will exhibit the same problem
             as the Pass attribute when handling a multi-part key composed
             of both key ownership and NOT key ownership tests.  For
             example, the following key:

                   THISKEY & ! THATKEY

             declared as MASTER=F will always fail for MASTER key holders
             who hold THISKEY but do not hold THATKEY since even though the
             NOT THATKEY test succeeds, the THISKEY test is bound to fail.
             This behaviour is probably undesirable since what is likely to
             be required is that MASTER key holders who actually hold
             THISKEY and do NOT hold THATKEY should pass the key expression
             test.  In this situation, the correct attribute setting is that
             of MASTER=N.

             The optional LOW and HIGH options set the time period during
             which the metakey is valid.  If no entry is made, the metakey
             is valid throughout the entire day, and can return true subject
             to the actual metakey expression test.  Similarly the EXPIRES
             option determines the maximum date range of the metakey.  If a
             valid entry is made, the metakey will cease functioning after
             midnight on the expiry date.  Note that the date may be entered
             in either of 2 formats, and must conform strictly to the masks
             shown in the examples.   When a metakey fails the time validity
             tests or has expired, it will always return false.

             The LOW, HIGH, and EXPIRES options can be entered on the same
             command line or they can be entered separately for any metakey.
             When a metakey is edited, it retains any previous attributes
             which are not changed except that the key expression must
             always be re-entered.  In all cases, the LOW and HIGH values
             are checked for validity against either the other time control
             value entered or the other pre-existing control value.  For
             example, setting the high control to 18 (6:00 p.m.) will be
             rejected if the low control for the metakey has already been
             set to 20 (8:00 p.m.)

             Entries of 0 are not allowed.  To clear the controls in a
             metakey, delete the key and re-enter it without controls.

             Metakey time controls operate similarly to login time controls,
             i.e. they are entered on the hour, however the actual time
             comparison is performed on a minute basis.  The hour value of
             the low control must be less or equal to the current time and
             the current time must also be less than the value of the
             high control at the time the key is being resolved, e.g. if the
             low control is set to 10 (10:00 a.m.), the key will return
             false always between 10:00 a.m. and midnight, and if the high
             control is set to 22 (10:00 p.m.) the key will return false
             after 9:59 p.m. until midnight.  If you set the control values
             for low and high the same, the key will return true only during
             the 60 minutes from 00 to 59 for that hour.

             When a metakey expires, it may optionally be deleted during
             cleanup by setting the Level 4 CNF option MTKEXPDL (also
             accessible via Online Configuration using the KEYS2 screen
             selection) to YES (default = NO).  In this case, an entry will
             be made in the Audit Trail for every deleted metakey.

             The timed facility of the metakeys raises several useful
             possibilities.  You can for example, create a time controlled
             metakey to replace any standard key.  Assign the standard key
             to the user or class as desired, and the metakey to the menu
             or other option requiring a lock.  The user or class key ring
             will still be checked in the normal manner for ownership of the
             key, but additionally, the metakey time and date class control
             will cause the key test to fail if the current time and date
             are not within the prescribed limits.  You could use this
             scheme for instance to give staff members certain keys only
             during working hours.

             Users in C/S mode who access the Metakeys facility should note
             that unlike terminal mode where the command to add a metakey is
             explicitly different from that used to edit an existing key, in
             C/S mode there is a single SAVE button which is used to
             transmit the request either to add a metakey which does not
             already exist, or to update one which is found to exist.  In
             C/S mode therefore its is impossible to get the error messages
             found in Level 6 CNF options MTKDUPKY (duplicate key name) and
             MTKYNXST (non-existent key name).  In lieu of the MRKDUPKY
             message, the existing metakey will be updated with the new
             details, and in lieu of the MTKYNXST message, the key will be
             added as a new metakey.

  =MST     : MASTER key handling

             Usage   =MST [User-ID] <ON|OFF>

             This command allows toggling of the permanent MASTER key flag
             in a user's account.  The permanent MASTER key refers to the
             status which confers full SYSOP class powers on users, and is
             recorded in their account record thereby renewing their MASTER
             key status on each logon.

             Entering this command with the User-ID only displays the status
             of the MASTER key flag for the user, otherwise the user's
             MASTER key status is changed as per the second parameter.

             The command ignores requests to set or clear the MASTER key
             status for the Sysop account, and also ignores requests to
             remove the MASTER key from the user invoking the command.

  =TYPE    : Type a file

             New usage
             =========

             Usage   =UK [filename] ... <USER=[User-ID]> ...

             Where   User-ID  = any online User-ID.

             The new syntax allows users to type the contents of an ASCII
             text file to other users.  The user receiving the file must be
             online and not BUSY and not in C/S mode.

             Because there is no provision to refuse to accept files
             transmitted with this command, it is now very important that
             access to this command be controlled, as it could be
             potentially used to abuse other users, and we suggest ensuring
             that the command is protected by the MASTER key or a Sysop
             class only accessible key.  Additionally, unless some other
             form of protection is in place, the TYPE command allows access
             to all files within the scope of the server, which can contain
             among other things accounting information, etc., the output of
             which can be captured and saved with most communication
             programs.

             At a later date, the C/S mode restriction may be relaxed and a
             facility may be added to restrict the reception of typed files.

  =U       : Online user list

             New usage
             =========

             Online user list #2 now has 2 different templates which display
             and suppress respectively the user's age display field.  CNF
             Level 4 option LISTAGE controls the display of this field.
             Individual users can still control their age display setting
             when the age display is enabled (except from MASTER key holders
             who cannot be prevented from viewing the user's correct age if
             the field is displayed).

  =UK      : Give/Take keys

             New usage
             =========

             Usage   =UK [CLASS=class] <+|- [keyname]>

             Where   class    = any valid existing class name.

             This new syntax extends the function of the UK command to
             encompasses class key rings.  You can now list, or add or
             delete keys from class key rings in a similar manner to user
             key rings.

             In addition the base logic underlying the use of this command
             has changed to allow non-MASTER key holders to use this
             command to add or remove keys from other users key rings.
             Previously, even though a non-MASTER holder was given the key
             for this command, the user would still be prevented from
             granting or removing keys from other users except via the use
             of the Staff Keys command.

             Since in all cases it is not necessarily desirable to utilize
             the Staff key system but nevertheless certain users need to be
             authorized to add or remove keys from users' key rings, this
             command has now been altered to allow this facility provided
             that the following conditions are met:

                  a.  The user activating the command must not be the same
                      user who is being granted or denied the key.

                  b.  The user being granted or denied the key must NOT be
                      a MASTER key holder (Sysop class user).

             As a further precaution however, it is now possible to create
             a list of denied keys which a non-MASTER key user is prohibited
             from carrying out any operation on unless the denial is
             overridden by the key being specifically included in the Staff
             Keys list.  The list of denied keys is entered in Level 4 CNF
             option DENYKEYS.

             Note carefully that this new facility only applies to users'
             key rings.  Non-MASTER key holders cannot use this command to
             add or remove keys from class key rings unless the key is
             authorized by the Staff keys command.


C.  CNF OPTION CHANGES
======================

The following CNF options have been added or changed:

Key: {} = option type 
     [] = default
     <> = numeric range
     () = determined by option setting

  ADMINACC : {STRING} [Sysop]  Length=29
             Command Center requires the existence of at least one
             administrative account to receive email for various system
             events.  Normally the Sysop account is used for this purpose,
             however any valid account may be used.

             If this option is left blank, it will default to Sysop, also if
             the account name does not exist at any time, the Sysop account
             will be substituted.

  ALTADMIN : {STRING} []  Length=29
             This is the alternate administrative account.  All events which
             generate email can b configured to send mail to the ADMINACC
             account, this account, or both accounts.

             If this account is not defined and is also selected as the
             single target for email, the main adminstrative account
             ADMINACC will be used instead.

  AUDITCTL : {ENUMERATED} [STANDARD] BOTH STANDARD CC-TEXT
             You can now use either or both of the standard Major BBS/
             Worldgroup Audit Trail or an independent text file to record
             events managed by Command Center.  Enter STANDARD to use only
             the standard Audit Trail handling using the BBSAUDIT.DAT/
             WGSAUDIT.DAT file.  Enter CC-TEXT to use only the text file
             defined in option AUDITFIL.  Enter BOTH to enable both Audit
             Trail recording methods.

  AUDITFIL : {STRING} [SFACCAUD.TXT] (AUDITCTL#STANDARD) Length=12
             If you have enabled Command Center's text file Audit Trail, you
             must enter the name of the text file you will use for the Audit
             Trail entries.  The file will be located in your server
             directory.  Note that if this entry is blank, the file name
             will default to SFACCAUD.TXT.

  AUTOPOST : {BOOLEAN} [NO] YES NO
             When this option is set to YES, users are permitted to post
             short (240 characters maximum) messages to a graffiti posting
             "wall" maintained by Command Center, the last few messages on
             which are automatically displayed to each user during log-on.

             Set to NO to disable the graffiti wall.

  CRDPFREE : {LARGE NUMERIC} [0] 0 999999999
             The number of credits which will be posted by the Text Variable
             PSTCRF as FREE credits.

  CRDFRLOG : {BOOLEAN} [NO] NO YES
             Set to YES to log each instance of PSTCRF credit posts to the
             Audit Trail, NO to disable logging.

  CRDPPAID : {LARGE NUMERIC} [0] 0 999999999
             The number of credits which will be posted by the Text Variable
             PSTCRP as PAID credits.

  CRDPDLOG : {BOOLEAN} [NO] NO YES
             Set to YES to log each instance of PSTCRP credit posts to the
             Audit Trail, NO to disable logging.

  CRDTXVEX : {Boolean} [YES] NO YES
             Set to YES to exclude Sysop class users (MASTER key holders)
             from being posted credits from the Text Variables PSTCRF and
             PSTCRP.  Set to NO to have these users receive credit posts
             from these Text Variable like any other user.

  CSCMDKYS : {Text} []
             Command Center can process authorized keys in C/S mode by
             responding to a button or object which calls the Command Center
             module with one of several command strings.  This option
             contains the list of keys which may be processed separated by
             spaces or new lines.

  DAYSLOW  : {NUMERIC} [7] (DAYSWARN=YES) 1 9999
             This is the amount of days remaining below which the user will
             be warned at logon of a low days condition.

  DAYSMAIL : {BOOLEAN} [NO] YES NO
             You can have non-Sysop class users whose accounts are day based
             warned via email sent during the cleanup process of a low days
             remaining condition.  The warning is found in Text Block
             USRLOWDY.

  DAYSSEML : {NUMERIC} [7] (DAYSMAIL=YES) 1 9999
             This is the amount of days remaining below which the user will
             be warned by email sent during the cleanup process of a low
             days remaining condition.

  DAYSWARN : {BOOLEAN} [YES] YES NO
             You can have non-Sysop class users whose accounts are day based
             warned during logon of a low days remaining condition.  The
             warning is found in Text Block LOWDYSCR and LOWDYSNS (for
             forced Carriage Return and continuous scroll respectively).

  DAYSXCLD : {STRING} [] (DAYSMAIL=YES) Length=15
             Any user holding a key defined in here will be excluded from
             the email notification of a low days remaining condition.

  DYSMSGCR : {BOOLEAN} [YES] (DAYSWARN=YES) YES NO
             If option DAYSWARN is set to YES, you can force users in
             terminal mode to read the warning message by ensuring that they
             have to press the <Enter> key after the message is displayed,
             otherwise it may scroll off too quickly to be read.  (This
             doesn't apply to C/S users since their message is delivered as
             a pop-up announcement window which has to be deliberately
             removed by the user).

             Enter YES to force terminal mode users to press the <Enter> key
             after a low days logon warning, enter NO to allow the message
             to scroll on without stopping.

  DENYKEYS : {TEXT} []
             This option contains a list of keys which non-MASTER key
             holders are denied any operations on.  Any key appearing in
             this list will cause an attempt by a non-MASTER key holder
             using the UK (User Keys) command to issue or remove the key to
             fail.

             Note that keys in the Staff Keys list override the denial
             status of a key in this list, i.e. a user holding the SK
             command key may freely grant or remove any key in the Staff key
             list for which he holds the appropriate command key to all
             non-MASTER key users, including himself or herself.

  EMALCRLG : {ENUMERATED} [AUDIT] (CREDMAIL=YES) NONE AUDIT E-MAIL BOTH
             When an E-Mail low credit warning is sent at cleanup, you can
             record this event in one of several ways.  AUDIT writes a
             message to the Audit Trail, E-MAIL sends the message defined in
             Level 6 Text Block SYSCREML to the account defined in option
             ADMINACC, BOTH will generate the Audit Trail message as well as
             email to the Administrative account, and NONE suppresses all
             recording of this event.

  EMALCRML : {ENUMERATED} [SINGLE] (EMALCRLG#NONE) SINGLE LIST BOTH
             The email messages to the administrative account concerning
             users' low credits warnings may be generated as individual
             messages for each user who is warned, or as a single message
             containing the details of all users who were warned in the
             format of a tabular list, or you can generate both types of
             messages.

             Set to SINGLE to produce a single email for each user who is
             warned, specify LIST to produce a single email containing all
             users' warnings, or set to BOTH to generate both types of
             messages.

             A word of caution:  When the LIST or BOTH option is selected,
             Command Center allocates a buffer which is the same size as
             the variable OUTBSZ defined in the MAJORBBS.MSG or WGSMAJOR.MSG
             message file.  This variable sets among other things, the
             maximum size of an email message.  In the unlikely event that
             the number of items generated in the LIST/BOTH options will
             generate a message which exceeds the number of bytes set by
             this variable, Command Center will simply stop recording at the
             last items which remains within the buffer limits.

  EMALDYLG : {ENUMERATED} [AUDIT] (DAYSMAIL=YES) NONE AUDIT E-MAIL BOTH
             When an email low days warning is sent at cleanup, you can
             record this event in one of several ways.  AUDIT writes a
             message to the Audit Trail, E-MAIL sends the message defined in
             Level 6 Text Block SYSDYEML to the account defined in option
             ADMINACC, BOTH will generate the Audit Trail message as well as
             email to the Administrative account, and NONE suppresses all
             recording of this event.

  EMALDYML : {ENUMERATED} [SINGLE] (EMALDYLG#NONE) SINGLE LIST BOTH
             This option is the equivalent of the EMALCRML option for low
             days warnings.  Note the caution in that option applies with
             equal force in this instance.

  LGCYSIZE : {STRING} [2.0] Length=3
             Client server code displays a main Menu tool bar for Command
             Center with buttons in one of two sizes.  To display a button,
             Command Center obtains its design time size and multiplies this
             by the scaling factor you enter here.  This option is the
             scaling factor for the LARGE buttons.

             The default value of 2.0 works well for almost all screen
             resolutions.  Do not change this value unless you have tested
             the resulting display for all the possible client screen sizes
             your users may encounter.

  LISTAGE  : {BOOLEAN} [YES] YES NO
             Online user list #2 has 2 sets of templates, the A list which
             displays the ages of user's listed and the B list without the
             age display.  When the age is displayed, users always have the
             option to disable their individual age display ("N/A" is shown
             instead, except to Sysop class users, who will always see the
             correct age).

             Enter YES (the default) to display users ages in online user
             list #2, otherwise enter NO to disable this display entirely.

  LOGINCTL : {BOOLEAN} [YES] (NWFAILAC=DELETE) YES NO
             YES enables operation of any defined login controls.  NO
             disables the operation of these controls.  This option can also
             be set from Online Configuration using the =CONFIG USERS
             selection.

  LONCXCLD : {STRING} [] (CREDWARN=YES) Length=15
             Any user holding a key defined here will be excluded from the
             logon notification of a low credit condition.

  LONDXCLD : {STRING} [] (CREDWARN=YES) Length=15
             Any user holding a key defined here will be excluded from the
             logon notification of a low days condition.

  METAKEY  : {STRING} [#] Length=15
             The lead string for metakeys.  Using a metakey requires that
             the key be entered in the menu tree prefixed with the
             concatenation of the "_" character followed by this string.  By
             default therefore, the metakey lead string is "_#", and the
             metakey defined with the name "GAMEPLAYER" would be entered in
             the menu tree as "_#GAMEPLAYER".

             This option can be changed online using Online Configuration
             with the KEYS2 selection.  When you change the metakey lead
             string online, the new lead becomes effective immediately
             however the old lead string also remains effective until the
             server is restarted.

  MTKEXPDL : {BOOLEAN} [NO] YES NO
             Set this option to YES to have expired metakeys deleted at the
             next cleanup.  Set to NO (the default) to allow expired
             metakeys to remain in the database.

  NWSUPDEL : {BOOLEAN} [YES] (NWFAILAC=DELETE)YES NO
             This option now determines whether signup deletions are
             processed immediately or are simply tagged for deletion and
             allowed to remain for the midnight cleanup deletion routine.

             Immediate deletions place a small performance load on the
             running server, while tagged deletions may delay the cleanup
             process while several accounts are deleted.  Note also that
             tagged deletions generate an additional message in the Audit
             Trail for each deleted account.

             This option may also be changed from Online Configuration using
             the =CONFIG SIGNUP selection.

  POSTANON : {BOOLEAN} [YES] (AUTOPOST=YES)YES NO
             Enter YES to display graffiti wall messages anonymously, i.e.
             without displaying the User-ID of the user who posted the
             message.  Enter NO to always display the User-ID of the member
             who posted the message.

             This setting does not affect viewing by users holding the
             POSTSYSK option key who will always have the User-ID displayed
             when they view graffiti posts.

  POSTINCS : {BOOLEAN} [NO] (AUTOPOST=YES) YES NO
             When the graffiti wall is enabled, you can optionally disable
             its operation in C/S mode to reduce the number of windows which
             will greet a user logging on to the system.

             Note that the Graffiti Wall is displayed in C/S mode whenever a
             user starts up Command Center either by first connecting to the
             system when the SFACC.MDF file contains the "C/S Startup"
             setting, or by manually starting Command Center from a C/S
             selection, whether or not Command center was initially
             autostarted or the user manually shut down the module.  The
             Graffiti wall will not however display when a user drops to
             terminal mode and returns to C/S.

             Set this option to YES to enable the graffiti wall in C/S mode,
             otherwise set to NO to disable it.

  POSTNUMS : {NUMERIC} [4] (AUTOPOST=YES) 1 255
             Enter the number of graffiti posts you want stored and
             displayed during logon.  Posts exceeding this number will be
             deleted during cleanup.

  POSTSYSK : {STRING} [SYSOP] (AUTOPOST=YES) Length=15
             This is the Sysop access key for the graffiti wall.  Users
             holding this key will be able to delete posts and will always
             see the userid of the person who posted the message, regardless
             of the setting of the POSTANON option.

  POSTVIEW : {STRING} [NORMAL] (AUTOPOST=YES) Length=15
             This is the key required for users to view and post messages on
             the logon graffiti wall.

             (Note: the *NOT* operator: "!" can be used with this key).

  PSKLOGIN : {STRING} [LOGIN] (LGNTIMES=YES) Length=15
             The suffix of the pseudo-key which must be given to users or a
             class key ring in order for any login controls to be effective
             for the particular user or members of the class.  The full key
             is composed of the prefix "_PSKCC_" suffixed with this string.
             The default value therefore is "_PSKCC_LOGIN".

             This option may be changed from Online Configuration using
             the =CONFIG PSEUDO selection.

  PSKSYSOP : {STRING} [SYSOP] Length=15
             This is the pseudo-key for identifying users on the system who
             are SYSOP class users, that is who have been given the MASTER
             key.  The full key is comprised of the string "_PSKCC_"
             followed by the value in this option.

             This option is not yet available in Online Configuration and
             will be added at a later date.

             (Note: the *NOT* operator: "!" can be used with this key).

  PSKUBUSY : {STRING} [BUSY] Length=15
             This is the pseudo-key for identifying users on the system
             whose BUSY flag is set.  A user's BUSY flag may be set either
             by deliberate action on the user's part, (e.g. using the =B
             command), or automatically by a module or process on the
             server.  The full key is comprised of the string "_PSKCC_"
             followed by the value in this option.

             This option may be changed from Online Configuration using
             the =CONFIG PSEUDO selection.

             (Note: the *NOT* operator: "!" can be used with this key).

  PWCHGLOG : {BOOLEAN} [YES] YES NO
             Whenever the PW command is used to change a user's password an
             entry can be made in the Audit Trail documenting this
             occurrence.  Note that the actual changed password itself is
             is *NOT* shown.

             Enter YES to have an entry made in the Audit Trail indicating
             the use of the Change Password command, enter NO to allow the
             command to be used without any Audit Trail entry.

             This option can also be set in Online Configuration using the
             CONFIG SYSTEM selection.

  REGDLKEY : {BOOLEAN} [NO] YES NO
             You can cause users' registry records to be deleted during
             cleanup if either they do not possess the key specified in
             option REGNODEL, or they do possess the key specified in option
             REGHSDEL.

             Note that either of these conditions succeeding will cause the
             user's registry record to be deleted.

             ** All platforms except MBBS **
  REGDLUSR : {BOOLEAN} [NO] YES NO
             You can force users' Registry records to be automatically
             deleted during cleanup if these records have no current
             matching user account record.  This condition sometimes arises
             because of out of synch file restores or incomplete user
             deletion procedures.

  REGNODEL : {STRING} [] (REGDLKEY=YES) Length=15
             When option REGDLKEY is set to YES, if this key is not empty,
             any non-MASTER key user who does not own this key at cleanup
             will have their Registry record if present deleted.

  REGHSDEL : {STRING} [] (REGDLKEY=YES) Length=15
             When option REGDLKEY is set to YES, if this key is not empty,
             any non-MASTER key user who possesses this key at cleanup will
             have any Registry record present deleted.

  SMCYSIZE : {STRING} [1.5] Length=3
             Client server code displays a main Menu toolbar for Command
             Center with buttons in one of two sizes.  To display a button,
             Command Center obtains its design time size and multiplies this
             by the scaling factor you enter here.  This option is the
             scaling factor for the SMALL buttons.

             The default value of 1.5 works well for almost all screen
             resolutions.  Do not change this value unless you have tested
             the resulting display for all the possible client screen sizes
             your users may encounter.

             ** All platforms except MBBS **
  SYSFIXED : {STRING} [Galacticomm] Length=25
             Client server code needs to know the name of the system "fixed"
             font so that it can display some items in a non-proportional
             font.  Normally this font is the "Galacticomm"  font which is
             installed by Worldgroup, however you may change to any other
             installed fixed pitch font such as Terminal or FixedSys.

             Enter the name of the desired fixed system font for C/S use. If
             you enter a non-existent font name, some C/S report displays
             will be misaligned.

             This option can also be set in Online Configuration using the
             CONFIG CSMISC selection.

  XCLJACKP : {TEXT} []
             Jackpot advertisement messages may cause problems in some
             modules like multi-user games where users may be engaged in
             combat routines or running repetitive scripts which will be
             interfered with by extraneous input.

             Enter the names of any modules which you want excluded from
             receiving jackpot advertisement messages.  Specify each module
             name on a separate line.  If you mis-spell a module name, it
             will not be added to the list.

             You can also enter the modules names via Online Configuration
             using the =CONFIG TXTITEMS XCLJCKPT selection.


D.  TEXT VARIABLES
==================

The following text variables have been added and/or changed:

(Note: the full name of the text variable includes the prefix of "SFACC_").

  LGNUSR   : Returns a string containing the number of minutes the current
             user has spent on the system during the current calendar month.

  OTHSXL   : Returns the long text form of the user's sex, i.e. "Male" or
             "Female".

  OTHUNM   : Returns the User-ID always "unmangled", i.e. stripped of the
             Major TCP/IP or ICO headers which identify PPP/SLIP/CSLIP
             connections made by those modules.  This is in contrast to
             textvar OTHUID which returns the decorated or "mangled" form of
             the User-ID, (e.g P148:Paul Beswick).

  PSTCRF   : A handy utility text variable which posts the amount of credits
             specified in Level 4 CNF option CRDPFREE to the current user as
             FREE credits.

  PSTCRP   : Similar to PSTCRF but posts the value found in CRDPPAID as PAID
             credits.


E.  ADDITIONAL NOTES
====================

o   The Level 6 CNF options CSGARBGS, AGARBGES, MESGLOCK, USERMSG, and
    USRLOWCR all make reference incorrectly to the text variable
    SFACC_VOXPHONE.  The correct name of the text variable being referred to
    is SFACC_VOXPHN.  These variable entries will display as blanks unless
    corrected.  Be careful in correcting these items not to remove any other
    characters from the entries other than the "O" and "E".

o   Please be aware that the Radius User List display function is not
    completed, and we ask that you do *not* set option DSPRADUS to YES at
    this time unless you are a beta tester.

o   Testing on the C/S AutoPost function (Graffiti wall) is not yet
    complete, enabling the Graffiti wall in C/S mode could possibly cause
    Command Center to gnerate a Visual Basic run-time error which will
    require the user's machine to be rebooted.  If you experience this
    problem please set Level 4 CNF option POSTINCS to NO (the default) to
    disable the Graffiti Wall in C/S mode.

    MBBS users of course do not have this problem, which is why we have
    released the Graffiti Wall function although it is technically
    incomplete.

o   We would like to give notice to all of our current users of Command
    Center that we will shortly be upgrading by a major revision number to
    Version 2.XX of the product.

    This major upgrade is based on the complete incorporation of two other
    modules, which will provide Internet IP and Spam filtering abilities to
    Command Center.  At this time, either the price of the module will be
    increased or a maintenance plan will be devised or some combination of
    these packages will instituted.

    We have worked extremely hard to upgrade Command Center to this level
    and feel justly proud of our efforts at this point.  We are quite sure
    that all of our existing users are enjoying the benefits of this effort
    on our part and we would like this to continue for as long as possible.

    At this time, we are endeavoring to cram as many upgrades as possible
    into the existing major revision so that our existing user base who
    decide to remain with this level of the product will have the best
    possible functionality from the module.  We must point out that given
    the rapidly changing nature of this industry and the scarcity of
    resources, it will be impossible for us to provide support for any but
    the current revision therefore users who choose not to upgrade must
    necessarily accept that their current revision will not be upgraded or
    maintained in any way.

o   This revision represents the last revision which will support the MBBS
    6.25.  From the start of our acquisition of Command Center, we pledged
    to do our very best to support all Galacticomm platforms, and indeed we
    have tried very hard to fulfill this objective.

    Regrettably its seems somewhat pointless to continue this exercise
    given that in over 18 months we have sold exactly 1 copy of Command
    Center for MBBS 6.25.  The fact is that this support has a cost, as the
    MBBS platform is sufficiently different to require exception code and
    testing for features being added and debugged.  Unfortunately we can no
    longer justify this cost as it is incapable of providing any returns
    whatsoever and it appears that our original thinking that there was
    still a market for MBBS modules to be serviced was entirely incorrect.

    In addition, it is becoming increasingly difficult to rationalize the
    MBBS code base with the other platforms, particularly those from
    version 2.xx upwards.  The MBBS platform, while a technological feat of
    its time, is missing several important features and facilities in its
    Application Programming Interface (API), and we are now being forced to
    selectively omit new features from this version as they are added to the
    other platforms.  An example of this is the new feature for automatic
    deletion of registry records by reference to user-ids.  This function
    requires iterating through the registry database file, but since in the
    MBBS version, this file is not exposed in the API, we were forced to
    choose between either re-opening the file ourselves or omitting the
    feature from the MBBS version.  We chose the latter simply because we
    felt that it would be incorrect to reduce the resources available to the
    server any further by re-opening an already opened file.

    The platform for Galacticomm products is becoming increasingly
    specialized and tending towards the NT/95 platform only.  We foresee
    that within some future scope, it will also become difficult to continue
    to support any but the NT/95 platforms, and users should therefore guide
    themselves accordingly.


Soft Arts Ltd.
66 & 68 Barry Street
1st Floor
Kingston
Jamaica, W.I.

Tel.#s : (809) 922-5201/5173 (Voice)
         (809) 922-9036      (Fax)
         (809) 922-7990      (BBS)

Email us with comments, suggestions, etc. at-
    bladerunner@colis.com

(end of release notes)

NOTICE
============================================================================
SOFT ARTS Software License Agreement for Command Center

IMPORTANT - READ CAREFULLY:  PROCEEDING WITH INSTALLATION INDICATES YOUR
ACCEPTANCE OF THE TERMS AND CONDITIONS DESCRIBED HEREIN.  IF YOU DO NOT
AGREE WITH THEM, DISCONTINUE THE INSTALLATION RETURN THE ENTIRE PRODUCT
WITHIN 30 DAYS OF THE ORIGINAL DATE OF PURCHASE AND THE PRICE OF THE
PRODUCT WILL BE REFUNDED TO YOU.

COPYRIGHT

SOFT ARTS LTD. provides this Software and licenses its use throughout the
world.  You assume responsibility for the selection of the Software to
achieve your intended results, and for the installation, use, and results
obtained from the Software.

Command Center and accompanying documentation is copyright (c) 1997 by Soft
Arts Ltd., hereinafter referred to as Soft Arts. All rights to Command
Center are reserved by Soft Arts.  You must keep the program in strict
confidence and treat it like any other copyrighted material. You may not
copy any written materials accompanying the software program.


DEFINITIONS

SOFT ARTS shall be taken as referring to SOFT ARTS LTD.

"You" and "your" shall be taken as referring to the person
or business entity who purchased this License to use this
Software or for whom such License was purchased.

"Software" shall be taken as referring to the files on the
supplied media and to any and all copies, updates,
modifications, functionally-equivalent derivatives, or any
parts or portions thereof.

"Run-Time Access" shall be taken as referring to a
connection that allows the exchange of data between two or
more computers.

"Live Computer" shall be taken as referring to a single
computer connected with communications hardware providing
Run-Time Access to this Software.

"Development Computer" shall be taken as referring to a
single computer upon which a copy of this Software may be
installed for configuration and development purposes, not
providing Run-Time Access to this Software.

"Client Software" shall be taken as referring to the
program(s) that can be generated with this Software to give
other computers Run-Time Access to your Live Computer in a
Windows client/server mode.

"License count" shall be taken as referring to the maximum
number of Run-Time connections which are authorized to use
the Software at any one instant, and which has been
purchased by you.


LICENSE

You may:

1.   install and use one copy of this Software on a single
     Live Computer; you may also install and use one copy
     of this Software on a single Development Computer.

2.   copy this Software into machine-readable or printed
     form, for backup or archival purposes in support of
     your use of this Software.

3.   provide Run-Time Access to this Software on your
     single Live Computer to up to the number of machines
     specified in your Licence count at a time; said other
     machines need not, and must not, be provided with
     copies of this Software in order to obtain said
     Run-Time Access.

4.   freely distribute the Client Software either
     electronically or on diskette(s), CD-ROM(s) or
     tape(s).

5.   transfer this Software and license to another party
     if the other party agrees to accept the terms and
     conditions of this Agreement, and only after paying
     any licence transfer fee requested by Soft Arts.
     Please contact Soft Arts to complete a license
     transfer.  Your use of the software deems your
     acceptance of this license and warranty and the terms
     herein.  If the enclosed Software is an update, any
     transfer must include the update and all prior
     versions.  If you transfer the Software, you must at
     the same time either transfer all copies, whether in
     machine-readable form, to the same party, or destroy
     any copies not transferred.

YOU MAY NOT USE, COPY, MODIFY, OR TRANSFER THIS SOFTWARE, OR
ANY COPY, MODIFICATION, OR MERGED PORTION, IN WHOLE OR IN
PART, EXCEPT AS EXPRESSLY PROVIDED FOR IN THIS LICENSE, OR
IN AMENDMENTS SIGNED BY AN OFFICER OF SOFT ARTS LTD. IF YOU
TRANSFER POSSESSION OF ANY COPY OF THIS SOFTWARE, OR ANY
FUNCTIONALLY-EQUIVALENT DERIVATIVE, OR ANY PORTION OR
MODIFICATION THEREOF, TO ANOTHER PARTY, YOUR LICENSE IS
AUTOMATICALLY TERMINATED.


TERM

This license is effective until terminated.  You may
terminate it at any time by destroying all copies of the
Software covered by this Agreement.  It will also terminate
upon conditions set forth elsewhere in this Agreement or if
you fail to comply with any term or condition of this
Agreement.  You agree upon such termination to destroy this
Software, including all copies, functionally-equivalent
derivatives, and all portions and modifications thereof in
any form.


LIMITED WARRANTY

THIS SOFTWARE, INCLUDING CLIENT SOFTWARE, IS PROVIDED "AS IS", WITHOUT
WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF
THE SOFTWARE IS WITH YOU.  SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU (NOT
SOFT ARTS LTD.) ASSUME THE ENTIRE COST OF ALL NECESSARY SERVICING, REPAIR,
OR CORRECTION.

SOFT ARTS does not warrant that the functions contained in this Software
will meet your requirements or that the operation of this Software will be
uninterrupted or error-free.  However, SOFT ARTS does warrant the media on
which the Software is furnished to be free from defects in materials and
workmanship under normal use for a period of thirty (30) days from the date
of delivery to you.

YOU THE USER UNDERSTAND AND ACCEPT THAT COMPUTER PROGRAMS BY THEIR VERY
NATURE CANNOT BE GUARANTEED TO BE 100 PER CENT ACCURATE, OR FREE FROM FLAWS
IN DESIGN OR OPERATION, OR FROM INCOMPATIBILITIES WITH OTHER SOFTWARE,
HARDWARE AND/OR OPERATING SYSTEM PLATFORMS.  SOFT ARTS DOES NOT WARRANT,
REPRESENT, OR GUARANTEE THAT ALL PROBLEMS WILL BE CORRECTED OR THAT ANY
UPDATES WILL BE COMPATIBLE WITH PREVIOUS VERSIONS OF COMMAND CENTER.
EXCEPT AS EXPRESSED ABOVE, SOFT ARTS DISCLAIMS ALL WARRANTIES, EXPRESSED AND
IMPLIED, TO THE PRODUCT, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE, AND SOFT ARTS DISCLAIMS ALL
OBLIGATIONS AND LIABILITY ON SOFT ART'S PART OR ON THE PART OF ANY OF ITS
OWNERS, DIRECTORS, MANAGERS, SERVANTS, AGENTS AND/OR EMPLOYEES FOR DAMAGES,
INCLUDING BUT NOT LIMITED TO SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES IN
CONNECTION WITH USE OF THE PRODUCT, WHETHER OR NOT SOFT ARTS HAS BEEN
ADVISED OF THE POSSIBILITY THEREOF.


LIMITATION OF REMEDIES

The entire and exclusive liability and remedy for breach of this Limited
Warranty shall be limited to replacement of defective diskette(s) or
documentation and shall not include or extend to any claim for or right to
recover any other damages, including but not limited to, loss of profit,
data, or use of the software, or special, incidental, or consequential
damages or other similar claims, even if Soft Arts has been specifically
advised of the possibility of such damages. In no event shall Soft Art's
liability for any damages to you or any other person ever exceed the lower
of suggested list price or actual price paid for the license to use the
software, regardless of any form of the claim.

SOFT ARTS's entire liability and your exclusive remedy shall be:

a.   the replacement of any media not meeting SOFT ARTS's
     "Limited Warranty" and which is returned to SOFT ARTS, or

b.   if SOFT ARTS is unable to deliver replacement media
     which is free of defects in materials or workmanship,
     you may terminate this Agreement by returning this
     Software and your money will be refunded.

IN NO EVENT WILL SOFT ARTS BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING ANY
LOST PROFITS, LOST SAVINGS, DATA, OR USE OF THE SOFTWARE, OR SPECIAL,
INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR OTHER INCIDENTAL OR CONSEQUENTIAL
DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THIS SOFTWARE EVEN IF
SOFT ARTS OR ITS AUTHORIZED REPRESENTATIVE HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY. IN NO
EVENT SHALL SOFT ART's LIABILITY FOR ANY DAMAGES TO YOU OR ANY OTHER PERSON
EVER EXCEED THE LOWER OF SUGGESTED LIST PRICE OR ACTUAL PRICE PAID FOR THE
LICENCE TO USE THE SOFTWARE, REGARDLESS OF ANY FORM OF THE CLAIM.


GENERAL

You may not sub-license, assign, or otherwise transfer this License or
Software except as expressly provided in this Agreement.  Any attempt to
otherwise sublicense, assign, or transfer any of the rights, duties or
obligations hereunder is expressly prohibited and will terminate this
Agreement.

This Agreement will be governed by the laws of Jamaica.

All Agreements covering this Software (including but not limited to any and
all updates, upgrades, and enhancements to this Software or any portion
thereof, bearing the same registration number) shall be deemed to be
counterparts of one and the same License Agreement instrument.

YOU ACKNOWLEDGE THAT YOU HAVE READ THIS AGREEMENT, UNDERSTAND IT, AND AGREE
TO BE BOUND BY ITS TERMS AND CONDITIONS.  YOU FURTHER AGREE THAT IT IS THE
COMPLETE AND EXCLUSIVE STATEMENT OF THE AGREEMENT BETWEEN US, WHICH
SUPERSEDES ANY PROPOSAL OR PRIOR AGREEMENT, ORAL OR WRITTEN, AND ANY OTHER
COMMUNICATIONS BETWEEN US RELATING TO THE SUBJECT MATTER OF THIS AGREEMENT.