Overview                About Command Helper
Overview                About Command Helper

    This on-line database provides quick and easy access to information 
    about the menu commands.

    The selecting window allows:

        $arrows$/$+$/$-$     to move up/down one line.
        $<pgup>$/$<pgdn>$  to move up/down one page.
        $<home>$         to go to top of window.
        $<home><home>$   to go to first entry.
        $<end>$          to go to bottom of window.
        $<end><end>$     to go to last entry.
        $[Enter]$        to select an item for more information.
        $S$              to search.  Hit "S" then [Enter] to continue a search
                       from the entry following the cursor line.
        $<esc>$          to exit.

    The viewing window allows:

        $arrows$/$<pgup>$/$<pgdn>$  to move up/down one page.
        $+$/$-$                   to move up/down one line.
        $<home>$                to go to start.
        $<end>$                 to go to end.
        $[Enter]$/$<esc>$         to exit.

    In lieu of the arrow/etc. keypad, you may use the numeric keypad.

    With each of the non-sysop commands below is a "Difficulty" value.  
    This value ranges from $1$ (easiest) to $9$ (expert).  It has nothing to 
    do with users.  It is provided as a rough estimate of how much trouble 
    it is for the sysop to use and/or understand.  As you become more 
    experienced using computers and this software, the better you'll be 
    able to understand the more difficult stuff.  I recommend you simply 
    ignore any commands which you cannot figure out--save them for the 
    future.

    The sysop and event commands have no Difficulty rating.  The sysop 
    commands are all in the sysop menus.  The events are mostly net mail 
    related, and I'd say a difficulty of 4 or 5 for all of them.

    Here is a rough breakdown of each of the Difficulty rating values:

        $1$  Easy.  Nothing complicated in command or knowledge required.
        $2$  Easy.  More knowledge needed.
        $3$  Easy.  Parameter use.  A minimum menu system concept needed.
        $4$  Medium.  Multiple parameter menu commands.
        $5$  Medium/hard.  Net Mail.  Full understanding of menu system.
        $6$  Medium/hard.  Easy building stuff (Questionaires).
        $7$  Hard.  More complicated building stuff (DataBaser).
        $8$  Hard/Very hard.  Not used right now.
        $9$  Very hard.  Programmers stuff.

    When it comes to commands there are only things that matter: that "_" 
    designates a parameter, and that anything without "_" is a command.

Menus                   Command Functionality
Menus                   Command Functionality

    Some notes on menu command functionality.

    To create/edit a menu command's functionality, hit $<ins>$ on that
    command.

    To create/edit a whole new menu (or category) hit $<ins>$ type the
    Menu ID of the new menu (or old menu if doing stuff like swapping)
    and then select what you want to do from the list of things to
    do.  This list includes:

        create a new menu     creates an empty menu with that Menu ID
        duplicate a new menu  creates a menu with new ID but same as current
        swap menus            finds the ID you specify and swaps positions
        jump-to               jumps to the menu with the ID you specified
        rename                assigns the ID you typed to the current menu

    All active commands for that menu must have a unique hot-key.  Even
    those you want to use up/down cursor movement to control.

    SL's of 0 mean to ignore the SL field and allow anyone to use the
    command.  If you only specify a MinSL (and use 0 for MaxSL) the user
    must still meet the MinSL value.

Internal Commands       System-Level Commands
Internal Commands       System-Level Commands

    The $|xxx$ and $>xxx$ are the lowest possible level for the menu
    commands.

    $|xxx$ tells the software to execute command number $xxx$.

    $>xxx$ tells the software to go to the menu with ID $xxx$.

|xxx                    Lowest Functional Command
|xxx         Lowest Functional Command

    These should not be used by you.  I mention them only to show from 
    where all commands come from. 

    I could have just used these numbers to reference each command, but I 
    think using a four-letter keyword makes them easier to understand and 
    work with.  Internally, however, the software see's "menu command 
    #300" and $DOOR$ as the exact same thing (run a door program).  
    Similarly, I could have used "#300", but decided that the "#" might be 
    something you would like to define for your own commands, so I choose 
    the lesser-used "|" character. 

    If you are used to certain other BBS programs, you will recognize the 
    familar "use menu type 15 for a door".  I say "use menu command $DOOR$ 
    for a door". 

    Some people get confused and think the menu commands' words actually 
    mean something.  They don't.  They are just pointers to numbers.

>xxx                    Go to Menu
>xxx         Go to Menu                                         Difficulty: 2

    Jump to another menu index.

    Where $xxx$ is any valid Menu ID.

        Examples:   $>001$
                    $>002$
                    $>017$
                    $>XYZ$
                    $>*@!$

    This command is a "goto menu $xxx$" order.

    You may use the $>xxx$ itself in menu commands, or reference it to a
    category command.  How you use it is your personal preference, but if 
    you have lots of, say, $>001$'s, you might want to define a command 
    $Main$ = $>001$ if you think in the future you might give Menu ID $001$ 
    a new Menu ID name. 

User Cmds: File         User File Commands
User Cmds: File         User File Commands

    These are commands that you would normally place on user-accessible 
    menus for them to use for file-related stuff. 

    See also: FILE AREAS, FILE AREA CONTENTS LISTING, UPLOADING,
              DOWNLOADING, TOGGLES, SETTINGS

AddB                    Add to Download Batch
AddB         Add to Download Batch                              Difficulty: 1
    
    The software maintains a global download batch.  It is the download 
    option with the $P&S File System$, it can also be accessed in the
    $Paged File System$, and with the $AddB$, $CntB$, and $Z dn$
    commands. 

    The download batch can hold up to 100 file names. 

    This command just asks the user for a file name, checks that the user 
    has enough minutes and bytes to download it, and adds it to the 
    download batch. 

    See also:  $Z dn$, $P&Sx$, $CntB$, $PagF$

Arch                    Work With Archive
Arch         Work With Archive                                  Difficulty: 3

    View the contents of a ZIP/LZH/ARJ archive.  Extract/test the members 
    of a ZIP/LZH/ARJ archive. 

    A file must have a ZIP/LZH/ARJ extension to be accepted, self-
    extracting .EXE archives do not qualify. 

    <incomplete> files are not allowed--since by their very nature there 
    will be problems working with them. 

    Recursive archives, those members with full pathname specification, 
    are handled correctly. 

    Many users mistakingly think the [T]est Archive means [T]ype Archive 
    Member--which I do plan to add eventually. 

    Archives are viewed using JDR_BBS's own internal routines. 

    The software does checks to make sure there is enough drive space and 
    that the user has enough download bytes for each extraction they want. 
    The exception is when the file is free, then the extractions are also
    considered to be free.

    Files are extracted by shelling to DOS and having the archivers 
    themselves do the extraction. 

    Technical note:  Extracted files are put into a temporary file with 
    the name EXTRACT.  We use a trick to speed up the process: the file to 
    extract from is duplicated into the temporary directory, then we 
    delete all members that the user does not want.  Faster than the 
    extract-then-re-ZIP method. 

    After extraction, the user is asked whether they wish to download the 
    file.  If they do not, the file is deleted. 

    When testing, the software shell's to DOS and executes the appropriate 
    test command to the archiver program.  The output from these programs 
    is redirected out the comm port.  LHA has a bug, and only the file 
    names are seen remotely when testing is done with .LZH files. 

    Technical note:  Some testing can take a while.  Users may get 
    impatient and hang up.  If this occurs, be assured that no other user 
    will be able to log on until the testing is completed and the user's 
    session is properly terminated.  Until then, the phone will not be 
    picked up for the next user.  This means another user cannot log on 
    during a "hung up on" archive testing and then be "given into" the 
    original caller's account. 

AReq                    Add a Request
AReq         Add a Request                                      Difficulty: 3

    Add a request to the requests file (REQUESTS.TXT).

    The requests file is a standard text file containing 38 character 
    requests from you or your users to your other users.  These requests 
    may take any form, but it was designed with the names of desperately-
    sought software in mind. 

    The purpose of the file is to give you, and your users, a way of 
    telling each other what they are trying to find. 

    There are 3 "levels" of requests type: requests, unprotects, and SL 
    based targeted requests.  But the user only sees two levels here, 
    simple requests, and SL based targeted requests. 

    Technical note:  The requests file has the following structure:  First 
    10 characters: the "HiFilePtr" value of that entry.  The remaining 
    characters: the request itself.  The "HiFilePtr" is used by "New 
    Stuff" to show new requests since a users last call. 

    For the first level, general requests, only 38 characters are used.  
    For the second level, unprotects, 77 characters are used.  For the 
    third level, target requests, 12 characters (that of a file name) are 
    used. 

    The second level is actually just those entries containing the word 
    "unprotect". 

    The third level was done with the following situation in mind: users 
    wanting a file they see in my off-line lists, so they enter the file 
    name here in hopes that another user will "Target Upload" them that 
    file.  Because Target Upload requires BiModem, and the uploader is not 
    given credit for the upload, there is no sacrifice of resources for 
    the BBS--allowing a system to upload duplicates without wasting 
    valuable BBS time. 

    In practice, however, the third level seems to get software titles as 
    well (although very truncated). 

    You may use a menu-based security level restriction to stop users of a 
    certain SL from using this command.  To farther stop them from doing 
    third level requests, the software relies on your "minimum SL to do 
    Targeted Uploads" in $Alter Settings$. 

    See also: $DReq$, SETTINGS, $TgtU$

ARvw                    Add a File Review
ARvw         Add a File Review                                  Difficulty: 3

    Add a file review to the reviews files.  Reviews are just that.  For 
    the uploader: a place to stick extra info.  For other users, a place 
    to praise or chastise the program.  For the sysop, an alternative to 
    messages about the file. 

    These files are stored as REVIEWS.xxx, where $xxx$ is the file area 
    (eg. $001$ for your file area 1). 

    There are a variety of different ways to display the reviews.  With 
    $LstF$ commands they are displayed automatically at the end of the 
    list.  With $PagF$ commands you have a command line option to show 
    them all, for for individual files.  With both $LstF$ and $PagF$ you 
    can also define your "listing format" (TXT_BLKS.TXT block 15) to show 
    the reviews immediately following the file name. 

    Technical note:  The lines of the files are formatted to 78 
    characters.  The first character is a "3", followed by either a 12 
    character file name or 12 spaces, followed by a 65 character 
    description segment. 

    Along with the review, the user's name will be added. 

    If the user was the uploader of the file, then "(uploader)" will also 
    be added.  This is done to warn other users that the reviewer may be 
    biased toward the file, and that the review should be taken with a 
    grain of salt. 

    If the user's Show SL is the lowest of your SL's, then "(Level x)" is 
    added (where "x" is the Show SL value).  This is done to warn other 
    users that this review was probably made by an inexperienced user 
    (they have your lowest SL after all), and should be taken with yet 
    another grain of salt. 

    If the user uploaded the file, this command will allow them the chance 
    to either add a review or change the description. 

    If the file is an <incomplete>, no review will be allowed. 

    File reviews can be deleted from the file by you with a text editor.  
    They are automatically deleted when the file to which they pertain is 
    deleted.  You may also use $RemL$--$Remove A Line$--to delete reviews. 

    There is a toggle: which allows automatic insertion of FILE_ID.DIZ 
    description files from uploads into reviews. 

    See also: $RemL$, TOGGLES

BiMd                    BiModem
BiMd         BiModem                                            Difficulty: 3

    $BiModem$ handling.  Use this if you want $BiModem$ protocol support. 

    It relies on the menu's Security Level to stop access--unlike auto-
    detect of $BiModem$ which has a Setting for its minimum SL value. 

    Files uploaded with this command are placed in file area 001. 

    If you do not maintain a $BiModem$ password file for your invisible 
    files, callers will be able to download them (if they can somehow 
    figure out the file name) using $BiModem$. 

CntB                    List Contents of Download Batch
CntB         List Contents of Download Batch                    Difficulty: 1

    This command will list the file names and their sizes that are in the 
    download batch. 

    After listing, it will offer the user a chance to delete any entries 
    if they want. 

    See also:  $AddB$

DirV                    View a Directry Database
DirV         View a Directry Database                           Difficulty: 4

        Format:    $DirV _Dxx$

    Where $xx$ is a number from 01 to 99 corresponding with a DIRECTRY.Dxx 
    file. 

    See also:  DIRECTRY'S

DReq                    Display Requests List
DReq         Display Requests List                              Difficulty: 3

    This will display the contents of your requests list file 
    (REQUESTS.TXT).

    I like to put this command after the various file area contents 
    listing commands ($LstF$, $PagQ$, $P&Sx$, etc.) which then forces 
    users to always see the requests list. 

    A BBS is give and take.  Too many users just take.  This list evens 
    the playing field by allowing you to emphasize the give.  Forcing them 
    to see it after they do a $LstF$/etc. is a good way to remind them 
    about the give part. 

    See also:  $AReq$

FREE                    Download a Free File 
FREE         Download a Free File                               Difficulty: 3

        Format:    $FREE _pathname$

        Example:   $FREE _C:\FREEBIES\CD-LIST.ZIP$
    
    Where $pathname$ is any valid, and complete, DOS pathname to a file.  
    If you use wildcards, then all matching files will be sent. 

    The file will be downloaded to the user.  The user will not lose any 
    bytes or minutes for the download, and it will not be recorded in 
    their download stats. 

    The Security Level of the File Area which contains the file does not 
    matter and is not taken into account. 

    The pathname does not need to be one of your BBS's download File 
    Areas. 

GetP                    Select Protocol
GetP         Select Protocol                                    Difficulty: 3

    This command lets users select a new protocol. 

    All the protocols in your Protocol Database, which the user has a high 
    and low enough security level value, are offered to them as a menu. 

    "B" and "H" protocols will not show up.  These represent $BiModem$ and 
    $HS/Link$, for which there are special commands. 

    See also:  PROTOCOLS

HSLk                    HS/Link
HSLk         HS/Link                                            Difficulty: 3

    This command allows users to do uploading and downloading at the same 
    time using the $HS/Link$ protocol. 

    The reason it (and $BiModem$) has its own command is because the regular 
    Protocol system can only handle either uploading or downloading.  This 
    is because of time management.  Bidirectional protocols require even 
    more sophisticated time management (since the user is both giving up 
    and getting bytes/minutes) that it needs to be done separately. 

    $HS/Link$'s main advantage is that it allows full bidirectional file 
    transfers at 14.4k.  However, it is weaker than $BiModem$ at time-
    handling/limiting.  Also, I haven't played with it much so haven't 
    looked into how it handles protection of individually passworded 
    files. 

    See also:  $BiMd$

L&Dx                    Alter a L&D Value
L&Dx         Alter a L&D Value                                  Difficulty: 4

    Allows users to alter the Life and Death Count values of the files on-
    line available for download.  They can only alter one file per day by 
    a single point. 

    Users cannot modify files for which they uploaded.  This is because 
    they may try to keep it up by increasing the L&D count.  They also may 
    upload bad stuff knowing that they can help speed its removal. 

    A user may only delete a file when all of the below are true:
    
        They have high enough SL.
        There is less than a defined number of bytes on the drive.
        It is toggled ON.
        The L&D count is currently at zero.

    A user may not increase the count if it is 9, +9, or blank. Since this 
    is like stopping daily auto-reduction. 

    See also:  SETTINGS, TOGGLES, $Asst$

LstF                    Continuous File Listing
LstF         Continuous File Listing                            Difficulty: 4

        Alternate forms:    $LstF$
                            $LstF _xxx$
                            $LstF _Bxx$
                            $LstF _all$

    This will list files in a file area in a continuous (no paging) 
    display.  The user may hit [Space] to pause the display, or [Enter] to 
    stop it. 

    $LstF$ will list the files in the current file area. 

    $LstF _xxx$, where $xxx$ is a file area (001 to 999), will list the 
    files in that file area. 

    $LstF _Bxx$, where $xx$ is a block number in TXT_BLKS.TXT, will 
    generate a menu of all the accessible file areas specified, and ask 
    the user to select one.  It will then list the files in this file 
    area. 

    $LstF _all$ will generate a menu of all the accessible file areas, and 
    ask the user to select one.  It will then list the files in this file 
    area. 

    Whatever the command, the new "current file area" will be the file 
    area specified. 

    No area will be accessed, or displayed in the menus, unless the user 
    has Scan-SL enough for that particular area. 

    With the $_Bxx$: the text block should be made up of 3-character file 
    areas, of the form "xxxyyyzzz...".  You may create many lines of these 
    3 letter message areas.  Example: "001002003004005" for all areas 1 
    through 5.  "001004006" for areas 1, 4, and 6.  Do not include the 
    quotes.  The order you list them are the order they are listed in the 
    selection menu. 

    For the menus: the currently active area is highlighted with a "*" and 
    areas with new files are colored white.  If you find an area entry 
    always white--when there are no new files--then go to "File Areas" and 
    fix that area's HiFilePtr value--it must have some how gotten too 
    large. 

    With the $LstF$ and $LstF _xxx$ commands, the user will be given a 
    message; "Sorry, security too low for this area", and the contents 
    will not be listed if their security level is too low.  This allows 
    you to show them that an area exists, but that they just cannot (yet) 
    access it. 

    See also:  FILE AREA CONTENTS LISTING

MLDL                    Download Master List
MLDL         Download Master List                               Difficulty: 3

    This command will begin sending the appropriate MASTER.ZIP file for 
    that user's security level. 

    Technical note:  Do not have this command available if you have the 
    master list creation command create the master lists directly into 
    your file areas, as this command will delete the file after transfer--
    since a temporary MASTER.ZIP is created from MASTER.ZIx. 

    The download will be free to the user (no bytes/time off). 

    See also:  $MLsC$

NewD                    Set "New Stuff" Date
NewD         Set "New Stuff" Date                               Difficulty: 1

    This command allows a user to change their "what's new" date. 

    Mainly used to set a "new files" pointer date to something. 

    Technical note:  It asks for a date, and attempts to come up with a 
    HiFilePtr from FILELIST that is on the day before that date.  Since it 
    is the user's HiFilePtr value that is really being changed (so it 
    affects Ramblings and Requests also). 

NxtF                    Next File Area
NxtF         Next File Area                                     Difficulty: 2

    This command will attempt to move the user to the next file area to 
    which they have access.  When we reach area N, where N is your highest 
    file area, we start again at 001.  It will try to find the next area 
    until an area to which the user has a valid Scan-SL is found, or we 
    return to the current area. 

    When using the command, it is recommended you have a "show current 
    file area" smart code in your ANSI. 

P&Sx                    Point & Shoot File System
P&Sx         Point & Shoot File System                          Difficulty: 2

    Jump into the $Point & Shoot File System$.  This is the menu version of 
    "hitting "." while listing files available for download." 

    The files you tag ON/OFF for download are part of the download batch. 

    See also:  FILE AREA CONTENTS LISTING, $AddB$

PagA                    Paged File Listing: All Areas
PagA         Paged File Listing: All Areas                      Difficulty: 1

    This command will cycle through all file areas, from 001 to your last 
    one, and list the contents in that area. 

    It is like doing a $PagF _xxx$ for each area.

    See also:  $PagF$

PagF                    Paged File Listing
PagF         Paged File Listing                                 Difficulty: 4

        Alternate forms:    $PagF$
                            $PagF _xxx$
                            $PagF _Bxx$
                            $PagF _all$

    This will list the files in a file area with a paged (not continuous) 
    display.  At the end of each screenful an extensive command set is 
    available to the user. 

    $PagF$ will list the contents of the current file area.

    $PagF _xxx$, where $xxx$ is a file area (001 to 999), will list the 
    contents of that File Area. 

    $PagF _Bxx$, where $xx$ is a block number in TXT_BLKS.TXT, will 
    generate a menu of all the accessible file areas specified, and ask 
    the user to select one.  It will then list the files in this file 
    area. 

    $PagF _all$ will generate a menu of all the accessible file areas, and 
    ask the user to select one.  It will then list the files in this file 
    area. 

    The user will not be able to access, or know about, any areas to which 
    his Scan-SL is too low. 

    The selected File Area will become the current File Area.

    With the $_Bxx$: the text block should be made up of 3-character file 
    areas, of the form "xxxyyyzzz...".  You may create many lines of these 
    3 letter message areas.  Example: "001002003004005" for all areas 1 
    through 5.  "001004006" for areas 1, 4, and 6.  Do not include the 
    quotes.  The order you list them are the order they are listed in the 
    selection menu. 

    For the menus: the currently active area is highlighted with a "*" and 
    areas with new files are colored white. 

    See also:  FILE AREA CONTENTS LISTING

PagN                    Paged File Listing: New Files
PagN         Paged File Listing: New Files                      Difficulty: 1

    This command will cycle through all file areas, from 001 to your last 
    one, and list all new files since the user's last call. 

    See also:  $PagF$

PagQ                    Paged File Listing: Ask
PagQ         Paged File Listing: Ask                            Difficulty: 1

    This command combines $PagA$, $PagF$, $PagN$, and $PagS$ into a single 
    command. 

    It asks a question about what to do, and then executes one of the 
    above commands. 

    See also:  $PagA$, $PagF$, $PagN$, $PagS$

PagS                    Paged File Listing: Search
PagS         Paged File Listing: Search                         Difficulty: 1

    This command will cycle through all file areas, from 001 to your last 
    one, and list all files that match a specified search string. 

    Unlike the "search off-line lists" search which chops down the search
    string, this searches for an exact match of what they type.

    See also:  $PagF$

PrvF                    Previous File Area
PrvF         Previous File Area                                 Difficulty: 2

    This command will attempt to move the user to the previous file area 
    to which they have access.  That is, the active file area number is 
    reduced until it finds an area to which the user has Scan-SL access, 
    or we return back to the same file area. 

    When at area 001, it then goes to area N--where N is your highest file 
    area. 

    When using the command, it is recommended you have a "show current 
    file area" smart code in your ANSI. 

SelF                    Select File Area
SelF         Select File Area                                   Difficulty: 4

        Alternate forms:    $SelF _xxx$
                            $SelF _Bxx$
                            $SelF _all$

    This command will switch to another file area, making that file area 
    the current file area. 

    $SelF _xxx$, where $xxx$ is a file area (001 to 999), will switch to 
    that file area.  No SL checking is done. 

    $SelF _Bxx$, where $xx$ is a block number in TXT_BLKS.TXT, will 
    generate a menu of all the accessible file areas specified, and ask 
    the user to select one.  It will then switch to the selected file 
    area. 

    $SelF _all$ will generate a menu of all the accessible file areas, and 
    ask the user to select one.  It will then switch to the selected file 
    area. 

    The user will not be able to access, or know about, any areas to which 
    his Scan-SL is too low with the menu commands. 

    With the $_Bxx$: the text block should be made up of 3-character file 
    areas, of the form "xxxyyyzzz...".  You may create many lines of these 
    3 letter message areas.  Example: "001002003004005" for all areas 1 
    through 5.  "001004006" for areas 1, 4, and 6.  Do not include the 
    quotes.  The order you list them are the order they are listed in the 
    selection menu. 

    For the menus: the currently active area is highlighted with a "*" and 
    areas with new files are colored white. 

    Technical note:  If the user cannot access any of the selected areas, 
    the command will simply not do anything.  No file-area-specific 
    commands will be executed until a proper file area is once again 
    defined. 

Srch                    Search File Lists: On-Line and Off-Line
Srch         Search File Lists: On-Line and Off-Line            Difficulty: 3

    This command searches your (text/off-line/old) file lists. 

    Searches are done according to the order you have placed the files in 
    the Search Files database.  These are known as off-line lists. 

    The Master List is what it searches for on-line files.  It searches 
    this list last.  The Master List search is considerably faster than 
    searching each individual file record, and usually represents 
    accurately what is on-line. 

    There is a Toggle: to control whether this search should be forced on 
    the user before the upload (so they have no excuses about uploading 
    duplicate files). 

    Technical note:  For lines greater than 80 characters, it wraps it, 
    beginning the new line at column 40 on the next line. 

    See also:  TOGGLES, $VFil$

Src1                    Search File Lists: Off-Line
Src1         Search File Lists: Off-Line                        Difficulty: 3

    This command is a partial $Srch$, it will only search the off-line 
    list files. 

    The off-line list files are those you defined in your Search Files 
    database.  That is, not the Master List. 

    Even though I say "off-line file lists"--you can search any text file 
    with this.  I use it to search the off-line lists I have created (such 
    as ALSO_GOT.LST which the BBS adds to when you delete files).  But you 
    could, for example, have it search a product list, a BBS list, or 
    anything else. 

    See also:  $Srch$

Src2                    Search On-Line Descriptions
Src2         Search On-Line descriptions                        Difficulty: 3

    This command is a partial $Srch$, it will only search through the on-
    line (active) files descriptions.  It does not search the Master List, 
    and so is slower. 

    Also, this command (and not $Srch$) will exclude searching those file 
    areas to which the user does not have access (because of low SL). 

    To search only the on-line areas without the SL restriction, use 
    $Srch$ but with an empty Search Files database (that is, do not define 
    any off-line file lists to search). 

    If you use $Srch$ without any entries in the Search Files database, 
    you will have a faster version of this command.  That is, you're only 
    searching the Master List then. 

    See also:  $Srch$, $PagS$

TgtU                    Targeted Upload
TgtU         Targeted Upload                                    Difficulty: 3

    This does an uncredited upload with $BiModem$. Any downloading done is 
    credited.  A chance for your users to be altruistic--while at the same 
    time saving yourself from putting up some old file from your off-line 
    storage. 

    Files uploaded with this command are placed in File Area 001. 

    Users can get around making the files public by using file attaches 
    with a message.  But I recommend you discourage this for large files--
    the drain on your resources is too great, and they could just as well 
    phone each other and do the transfer. 

    Target Upload is similar to a file attach to a public message--but by 
    putting the file in the uploads area, more people get a chance to 
    notice, and grab, it.  It is an option between message file attaches 
    and normal uploading. 

    Before transfer, the destinee's name must be given.  If they give ALL,
    then they are told to use the upload command, not this. 

    After the transfer a short message is sent to that name, and told the 
    file was put up for them. 

    You may specify a setting as to what is the minimum drive space 
    available to allow a user to execute this command.  Since this command 
    is for users convenience, it is not appropriate for them to eat up all 
    your drive space with specific (duplicate to you) uploads. 

    See also:  SETTINGS

Type                    Display Text in Any File
Type         Display Text in Any File                           Difficulty: 2

    This command will display all the "text" in a file.  The file need not 
    be a text file (indeed, it is designed to read non-text files). 

    It asks the user for a file name to display.  Users may only type 
    files in the on-line directories, but the sysop can display files that 
    are anywhere. 

    It does an acceptable job of reading any text file, and a very good 
    job of reading any non-text file.  This is because the text first has 
    all its non-text characters converted to spaces, and then all its 
    spaces reduced to a single space before being displayed.  Text files 
    get a little scrunched up, and non-text files get a lot cleaned up. 

Upld                    Upload
Upld         Upload                                             Difficulty: 4

        Alternate forms:    $Upld$
                            $Upld _xxx$
                            $Upld _Bxx$
                            $Upld _all$

    This command handles file uploading to a file area. 

    $Upld$ will upload to the current file area. 

    $Upld _xxx$, where $xxx$ is a file area (001 to 999), will upload to 
    that file area. 

    $Upld _Bxx$, where $xx$ is a block number in TXT_BLKS.TXT, will 
    generate a menu of all the accessible file areas specified, and ask 
    the user to select one.  It will then upload to this file area. 

    $Upld _all$ will generate a menu of all the accessible file areas, and 
    ask the user to select one.  It will then upload to this file area. 

    The user will not be able to access, or know about, any areas to which 
    his Upload-SL is too low, or which do not have the "UPLD" file area 
    attribute. 

    The selected file area will become the current file area. 

    With the $_Bxx$: the text block should be made up of 3-character file 
    areas, of the form "xxxyyyzzz...".  You may create many lines of these 
    3 letter message areas.  Example: "001002003004005" for all areas 1 
    through 5.  "001004006" for areas 1, 4, and 6.  Do not include the 
    quotes.  The order you list them are the order they are listed in the 
    selection menu. 

    For the menus: the currently active area is highlighted with a "*" and 
    areas with new files are colored white. 

    If the user is not allowed to upload to the current area, an attempt 
    is made to upload to area 001 instead. 

    The protocol used is whatever the user has previously selected. 

Xchg                    Exchange Bytes and Minutes
Xchg         Exchange Bytes and Minutes                         Difficulty: 3

    Trade Download Minute-Credits for Download Megabytes. 

    Provides a system by which users can alter their download limits 
    depending on their need.  Sometimes they need time, sometimes bytes. 

    The software does exchanges on its own in many situations to help the 
    user, this just allows them to do it themselves also. 

    If the user is unable to do one or the other type of exchange (does 
    not have the minimum exchange rate) then it will say so. 

    There are Settings: for defining how many bytes equal how many 
    minutes. 

    See also:  SETTINGS

Z dn                    Download Files
Z dn         Download Files                                     Difficulty: 2

    This command allows users to download of any files in the download 
    directories that they are able to. 

    If the download batch is not empty, they are first asked if they wish 
    to download that. 

    The user can only enter file names until the end of the line, just 
    before the end the software might do an automatic [Enter] for them and 
    start the download process. 

    The display for downloading shows a variety of information: total size 
    of uploads, total size of downloads, UL/DL current ratio, UL/DL ratio 
    for their level, bytes remaining till upload required, minutes left 
    for downloading, and number of files, size, and time for their chosen 
    downloads.  None of these numbers take into account what is in the 
    download batch. 

    If you are using a File Point system, then the File Points are 
    displayed instead of Bytes. 

    Technical note:  A user cannot "trick" this software by first putting 
    a bunch of files in the download batch, then downloading here, then 
    downloading the batch.  Any files in the batch that the user does not 
    have enough time/bytes left to download will be removed from the batch 
    when they choose to download the batch. 

    Usually, "bytes uploaded" * ratio = "bytes downloaded" + "bytes 
    available to download".  Some discrepancies appear as more minute/byte 
    exchanges are done. 

    The file names implement auto-detect, but no wildcards are allowed.  
    The lack of wildcard support, and a longer filename entry field will 
    be added eventually. 

    See also:  $AddB$

User Cmds: Messages     User Message Commands
User Cmds: Messages     User Message Commands

    These are commands that you would normally place on user-accessible 
    menus for them to use for message-related stuff. 

    See also:  MESSAGE AREAS, READING MESSAGES, ENTERING MESSAGES

Aset                    Toggle Message Areas
Aset         Toggle Message Areas                               Difficulty: 3

    This command handles the toggling ON/OFF (active/inactive) of message 
    areas for a user. 

    The sysop has the power to toggle ON/OFF any message area for all the 
    users with this command. 

    If a message area says "RESTRICTED", then the user is locked out of 
    it.  Only the message-op of that message area may unlock them. 

    Sysops: to change all entries: first change your toggle to what you do 
    not want it to be.  Then select to toggle all, and then all users 
    (including you) will get the opposite of what you have. 

    Last-message-read pointers and locked/unlocked status are maintained 
    properly. 

    To actually "turn off" a message area from everything, just give it an 
    extremely high access SL. 

Chat                    Request to Chat
Chat         Request to Chat                                    Difficulty: 3

    This command asks the caller for a reason, then beeps the sysop a 
    couple of times, and will display the reason at the bottom of menus 
    until the user logs off or the sysop breaks in for a chat. 

    Should the caller try this command again, they get a polite "we know, 
    stop bugging us" type of message.  But it does not re-beep the sysop.  
    This means users get only one attempt at chatting per session--I have 
    found this to be a perfect balance. 

    The reason for the chat is stored and displayed in the "who's on" 
    status line.  It will be visible whenever a menu is displayed or DSZ 
    file transferring is done.  For $GSZ$ or $BiModem$, messages, listing
    of directories, etc. it will not show up.  Usually, after an attempt at 
    chat, the first command a caller types is the $List Files$ command--
    can be frustrating if you were turned around when they entered their 
    reason and looked over in response to the beeping. 

    In SHORT.TXT line 3, you may create a list.  For now this list 
    contains; "ACCESS ELITE".  You may add, or eliminate, as many words as 
    you like.  They must be separated by a space.  Case does not matter.  
    When a word in this list is found in the chat reason, then you will 
    not be beeped, and the caller will get a note saying that they should 
    look around for the information rather than try chatting.  Non-
    alphabetic characters are removed before the comparison, so 
    "!!ACCESS!!" will be properly stopped.  "HELP" would probably be a 
    good word to add to the list. 

    There is a Setting: minimum words for chat.  If the user enters a 
    reason that contains less words that what you specify, then you will 
    not be beeped, and the user will get a note saying that they should 
    try to form a more complete reason.  I found that requiring a minimum 
    of 3 words in a chat reason to be a good balance. 

    When a user wants to chat, the reason given is also stored in the 
    callers log.  Further, if the user is undergoing Peer Review, the 
    reason is stored in their MESSAGE.Pxx file--so voting users may use it 
    to help evaluate the user. 

    You (the sysop at the console) enter chat mode by typing <alt>c.  To 
    reduce the risk of crashing the system, I recommend you only do this 
    at menus.  

    You can hit <esc> then "1" while in chat mode to turn on "kwazy 
    colors".  Whenever a character is typed by you or the caller, it will 
    get a different color. 

    To exit chat, hit <esc> then "c" (not at the same time). 

    You enter split-screen (2-way) chat mode by hitting <esc> then "2" 
    when in normal chat. 

    In split-screen chat, the person on the opposite end is displayed at 
    the top of the screen.  All received text is displayed in the upper 
    window, and all typed text is displayed in the lower window.  This 
    format is the same for either end.  In other words, both sides type 
    text into their respective lower window, and both see the other 
    persons text in their respective upper window. 

    In split-screen: you can type <esc> then "c" to exit chat completely, 
    <esc> then "1" to toggle kwazy chat ON/OFF,  or <esc> then "2" to 
    return to normal chat. 

    See also: SHORT.TXT, LOGGING, CONSOLE KEYS, SETTINGS

Eall                    Leave Message to ALL
Eall         Leave Message to ALL                               Difficulty: 3

        Alternate forms:    $Eall$
                            $Eall _xxx$

    $Eall$ to leave the message in the current area. 

    $Eall _xxx$, where $xxx$ is the message area (001 to 999) in which to 
    put the message.  $xxx$ will become the current area. 

    Send a message TO: ALL in a message area. 

    This is useful for message areas in which you want all messages to be 
    sent to "all" (like Fellow Sentient Beings). 

    This differs from giving a message area the ALL attribute in that with 
    this users may change the "all" default to an actual name, and replies 
    are not labeled "TO: ALL" but instead, also, given an actual name. 

Eany                    Leave A Message
Eany         Leave A Message                                    Difficulty: 3

        Alternate forms:    $Eany$
                            $Eany _xxx$

    $Eany$ to leave the message in the current area. 

    $Eany _xxx$, where $xxx$ is the message area (001 to 999) in which to 
    put the message.  $xxx$ will become the current area. 

    Messages can be sent to any current user, or ALL. 

    Note: if the message area has the TO:ALL forced Attribute ON, then that
    overrides any attempt to enter a TO:name.

Esys                    Private Message to Message-Op
Esys         Private Message to Message-Op                      Difficulty: 3

        Alternate forms:    $Esys$
                            $Esys _xxx$

    $Esys$ to leave the message to the message-op of the current area. 

    $Esys _xxx$, where $xxx$ is the message area (001 to 999) of the 
    message-op to send the message to.  $xxx$ will become the current 
    area. 

    This will send a private message (E-Mail) in area 001 to the message-
    op of an area. 

    Usually just used in area 001 as $Feedback to the Sysop$. 

HSet                    Set All Last-Read's High
HSet         Set All Last-Read's High                           Difficulty: 2

    This command will set the current caller's last-message-read values to 
    that of the last message in each area.  This is done for all the 
    message areas the caller is not locked out of and does not have 
    toggled OFF.  Once done, all messages will be considered read, and 
    there will be no messages currently considered new. 

    You could use message area toggling to protect one or more areas, and 
    then do this--but it is much easier to just read the areas you want, 
    then do this for whatever areas you do not want to read. 

ICht                    Internode Chat
ICht         Internode Chat                                     Difficulty: 4

    This is a multi-node command. 

    It handles inter-node chat with other nodes. 

    Not terribly exciting, but it does the job. 

Ipvt                    Internode Note
Ipvt         Internode Note                                     Difficulty: 4

    This is a multi-node command.

    It is used to send a private inter-node note (5 lines of text) to 
    someone on another node.  Usually to say Hi! or ask them to go into 
    inter-node chat. 

MsgD                    Message Downloading
MsgD         Message Downloading                                Difficulty: 3

    This will allow users to download messages using three methods: .QWK, 
    ASCII, and ANSI. 

    They are presented with a menu, from which they can: alter the 
    transfer list, download the transfer list, upload a .REP packet, and 
    move among the message areas. 

    To download messages, you first create a transfer list of the messages 
    you want.  This can be as general as "NEW" (all new messages in that 
    area), or broken down into inclusion and exclusion parameters. 

    Once a transfer list is made, the user may download the messages as a 
    .QWK packet, or as an ASCII or ANSI file.  All three methods compress 
    the messages. 

    .QWK packets can be read by off-line mail readers.  There are quite a 
    lot of these. 

    ASCII and ANSI are similar.  They differ only in that ASCII is the 
    messages without any ANSI codes, and ANSI contains the same ANSI codes 
    as messages when displayed on-line.  ASCII can be viewed by any text 
    listing program, but ANSI either requires a more sophisticated lister, 
    or use DOS's TYPE command. 

    .QWK readers allow users to reply to those messages.  These reply's 
    are stored in .REP packets, which the user again uploads to the BBS.  
    Hence the $Upload .REP Packet$ command.  Which unpacks the file are 
    puts its messages into the message areas. 

    Once a user downloads the messages successfully, they are considered 
    to be read by the user and no longer new to the user.  The download 
    will be free (no bytes/time off). 

    Technical note:  The software can handle a user uploading multiple 
    .REP files, with multiple .MSG files, with multiple messages. 

    .QWK can be an alternative to net mail as a method of updating one or 
    more message areas common among one or more BBS's.  It is easier to 
    use than net mail, but does require the sysops to personally upload or 
    download the .QWK and .REP files. 

    Sysop:  You can import .QWK packets that you got from other BBS's:  To 
    import a .QWK packet into the BBS, pull out its MESSAGES.DAT file, 
    rename it to MESSAGES.MSG, and then re-ZIP it into a new file, giving 
    it the extension ".REP".  Then choose to upload the message from the 
    entering messages options. 

    There is are Settings: for the maximum number of messages users are 
    allowed to pack at once, and the maximum bytes they may pack at one 
    time for downloading. 

    The maximum allowed size of a packet is 1/3 the size of your available 
    drive space, or the Settings value, whichever is smaller. 

    Technical note: If you do: include ALL and then exclude like 100-900 
    (and there are 1-1000 messages) (and max DL = 500) then you will run 
    into the max wall--even though what you really want is only 200 
    messages.  But the exclude will be done, so you will at least get the 
    1-99 messages in this case).  Similarly if you have like 490 messages 
    already packed and the next area has lots of messages. 

    See also:  .QWK Stuff, ENTERING MESSAGES, SETTINGS

Note                    Change Login Note
Note         Change Login Note                                  Difficulty: 1

    This allows users to enter a short note to themselves.  The text is 
    stored in their user record, and upon login is shown back to them. 

    Example, if a user was not able to chat with the sysop, then he can 
    leave a reminder to himself, "Chat with sysop about new modem".  Then 
    when they next logon, they will get their note: "Note: Chat with sysop 
    about new modem" just before they are informed of any new mail, thus 
    reminding them. 

    Notes are shown for every logon until the user again clears the note 
    field. 

    It really is quite useful, saves on users having to keep notes by 
    their computer about what they were last doing on each BBS they call. 

Nsys                    Message to Message-Op
Nsys         Message to Message-Op                              Difficulty: 3

        Alternate forms:    $Nsys$
                            $Nsys _xxx$

    $Nsys$ to leave a message to the message-op of the current area. 

    $Nsys _xxx$, where $xxx$ is the message area (001 to 999) of the 
    message-op to send the message to.  $xxx$ will become the current 
    area. 

    The message is left in the same area.  If it is a public area, the 
    message will also be public. 

    Can also be useful for letting all message area members evaluate an 
    applicant's request for access to the message area.  You lock them out 
    initially, they apply for access, all see the application, and all can 
    give their opinion. 

NxtM                    Next Message Area
NxtM         Next Message Area                                  Difficulty: 2

    This command will rotate forward through your message areas looking 
    for the next area a user has Scan-SL access to--or until we come back 
    to the current area. 

    When using the command, it is recommended you have a "show current 
    message area" smart code in your ANSI. 
                
    When at area N, where N is your highest message area, we then rotate 
    to area 001 and continue looking. 

PrvM                    Previous Message Area
PrvM         Previous Message Area                              Difficulty: 2

    This command will rotate backward through your message areas looking 
    for the previous area a user has Scan-SL access to--or until we come 
    back to the current area. 

    When using the command, it is recommended you have a "show current 
    message area" smart code in your ANSI. 

    When at area 001, we then rotate to area N, where N is your highest 
    message area, and continue looking. 

Ramb                    Ramblings System
Ramb         Ramblings System                                   Difficulty: 2

    This command sends you into the Ramblings message-file system. 

    See also: RAMBLINGS

Rany                    Read Messages
Rany         Read Messages                                      Difficulty: 3

        Alternate forms:    $Rany$
                            $Rany _xxx$

    $Rany$ to read the messages in the current message area. 

    $Rany _xxx$, where $xxx$ is a message area (001 to 999), to read the 
    messages in a specific area.  $xxx$ will become the current area. 

    The user is first presented with an opportunity to select a specific 
    message or start at the first new message. 

    For private message areas; only the message-op will get the "message 
    number or New" question. 

Rnew                    Read All New Messages
Rnew         Read All New Messages                              Difficulty: 2

    Read all messages that are considered as new.

    When at the last message of an area, you are automatically moved to 
    the next area. 

    This function ignores any message areas the user has toggled OFF. 

    The user is not given an opportunity to select specific messages 
    before displaying of messages is begun. 

Ryou                    Read All Your Private Messages
Ryou         Read All Your Private Messages                     Difficulty: 1

    This command is for reading all private messages sent to or from you 
    (the caller). 

    Goes through and checks all private mail areas.

    Only the message-op will get the "message number or New" question. 

    To just read just the messages in Private Mail (area 001), use
    $Rany _001$. 

Sany                    List Messages
Sany         List Messages                                      Difficulty: 3

        Alternate forms:    $Sany$
                            $Sany _xxx$

    $Sany$ to scan/list the messages in the current message area. 

    $Sany _xxx$, where $xxx$ is a message area (001 to 999), to scan/list 
    the messages in a specific area.  $xxx$ will become the current area. 

    Scanning will produce a single line for each message.  Listing: 
    number, who from who to, and subject. 

    Messages are listed from newest to oldest, with any new messages 
    highlighted. 

    Hitting "-" will restart the listing, in the opposite alphabetical 
    order (A-Z or Z-A, depending on what it was doing.) 

SelM                    Select Message Area
SelM         Select Message Area                                Difficulty: 4

        Alternate forms:    $SelM$
                            $SelM _xxx$
                            $SelM _Bxx$

    $SelM$ to produce a menu of all accessible message areas, and ask the 
    user to select one. 

    $SelM _xxx$, where $xxx$ is a message area (001 to 999), to simply 
    switch to that message area (if the user has access). 

    $SelM _Bxx$, where $xx$ is a block number from TXT_BLKS.TXT, to 
    produce a menu of all accessible message areas in the block, and ask 
    the user to select one. 

    The message area selected will become the current area. 

    With the $_Bxx$: the text block should be made up of 3-character 
    message areas, of the form "xxxyyyzzz...".  You may create many lines 
    of these 3 letter message areas.  Example: "001002003004005" for all 
    areas 1 through 5.  "001004006" for areas 1, 4, and 6.  Do not include 
    the quotes.  The order you list them are the order they are listed in 
    the selection menu. 

    By "accessible message areas" this means that user has Scan SL access 
    to it, and has it toggled ON, and is not locked out. 

    On the menu's: the currently active area is highlighted with a "*" and 
    areas with new files are colored white. 

    Technical note:  If no areas can be shown, the command will not do 
    anything.   No message-area-specific commands will be executed until a 
    valid message area is once again defined.  So, even though toggling 
    everything off will get them past the "select area" question and onto 
    a "read/post/scan/quit" menu--they will not be able to do 
    "read/post/scan"--since they did not select an area. 

Zmsg                    Undelete Messages
Zmsg         Undelete Messages                                  Difficulty: 2

    There are three different levels: user, message-op, and sysop.  Anyone 
    may use the command, without accessing messages outside their level. 

    Users are allowed to undelete messages to/from them in an area. 

    Message-op's are allowed to undelete any messages in an area in which 
    they are message-op. 

    Sysops are allowed to undelete any message in any area. 

    You will be given a listing of both the deleted and active messages.  
    You can tell the difference by whether the "abc"'s are flashing 
    (active) or not (deleted/dead). 

    Choosing the message will display it.  If the message is deleted, you 
    will then be given the opportunity to undelete it. 

    The message-op or sysop will also be allowed to enter a message number 
    to start listing from at the option command line. 

    Technical note:  This command will dredge up messages from "replaced" 
    message areas as well.  That is, if you deleted a message area, and 
    created a new one, any deleted messages from the first message area 
    would still appear (only Packing will eliminate them for good). 

    For the already-purged messages:  use a text editor to break a message 
    out of DEL_MSGS.TXT and Import it as a new message. 

    If you undelete a message, the software will rebuild the messages 
    index for that area when you are done with all the undeleting you want 
    to do. 

User Cmds: Display      User Display Stuff Commands
User Cmds: Display      User Display Stuff Commands

    These are commands that you would normally place on user-accessible 
    menus for them to use for displaying of stuff. 

dANS                    Display File: ANSI's
dANS         Display File: ANSI's                               Difficulty: 3

        Format:    $dANS _pathname$

    Where $pathname$ is any valid pathname.  It may contain wildcards. 

    This is the same command used to display the menu ANSI's.  The 
    difference being that the menu ANSI's are checked for valid menu keys 
    while displaying, this command only checks for [Enter] and [Space]. 

    [Space] will pause the display of the file, [Enter] will stop the rest 
    of it from displaying. 

    Besides the menu ANSI's themselves, this is only other way to display 
    files with "x<<y" smart text. 

    Files may be of any size. 

    If you include wildcards, then a random one of those that match will 
    be displayed.  Remember, though, that "???" is replaced by the node 
    number, and "***" is replaced by the current language (example: 
    "ENG"). 

    Do not use any SendTT\LINES.TXT "" codes. 

    See also:  ANSI'S

dBLK                    Display Text Block
dBLK         Display Text Block                                 Difficulty: 3

        Format:    $dBLK _Bxx$

    Where $xx$ is a block number from TXT_BLKS.TXT. 

    This command will just output the contents of the block.  Each line is 
    assumed to be one line and will be given a CR/LF after it.  The 
    leading two block identifier characters are removed first. 

    For blank lines, either use a block number with no text after it or a 
    ">".  You can use any of the other SendTT conventions as well. 

    Only [Enter] is checked to stop the text, no [Space]-to-pause is done.  
    However, you can add [Space]-to-pause by using the SendTT "+" at the 
    start of the text. 

dLIN                    Display Line of Text
dLIN         Display Line of Text                               Difficulty: 3

        Format:    $dLIN _number$

    Where $number$ is any number from 1 to the last line number in 
    LINES.TXT. 

    This will display a single line of text from LINES.TXT.  That line of 
    text may include any valid SendTT\LINES.TXT "" codes, including "\\\" 
    to "continue to next line". 

dTXT                    Display File: Text
dTXT         Display File: Text.                                Difficulty: 3

        Format:    $dTXT _pathname$

    Where $pathname$ is any valid pathname.

    The file must be a standard text file, with lines ending in CR/LF's. 

    This command displays a single standard text file.  [Space] will pause 
    the text, and [Enter] will cancel it. 

    A screen clearing code is sent before displaying the file. The text is 
    displayed in dark white unless it has some internal ANSI color codes. 

    SendTT\LINES.TXT "" can be used.

    The file can be any size.

dTX2                    Display File: Text with BBS Name
dTX2         Display File: Text with BBS Name                   Difficulty: 3

        Format:    $dTX2 _pathname$

    This command is exactly like $dTXT$, except your LINES.TXT line 1 (BBS 
    header line) is shown first, then the text file itself is displayed.  
    No screen clearing is done beyond that which is in the header line. 

    See also:  $dTXT$

dTX3                    Display File: Text with File's Date
dTX3         Display File: Text with File's Date                Difficulty: 3

        Format:    $dTX3 _pathname$

    This command is exactly like dTX2, except the file's date is shown at 
    the top of display, after the heading, and before the text file 
    itself. 

    Also just before the date is a "[Space] to pause, [Enter] to stop" 
    line. 

    This allows you to have a file, such as a bulletin, that you 
    occasionally update.  With the date, those reading the file 
    immediately know if they are reading an unchanged file, as it will 
    have the same date as they had previously read. 

    See also:  $dTX2$

dTX4                    Display File: Text in Continuous Box
dTX4         Display File: Text in Continuous Box               Difficulty: 3

        Format:    $dTX4 _pathname$

    Where $pathname$ is any valid pathname.

    This command displays a single standard text file within a box.  It 
    will "box" the top, and do the sides for as long as there is text, and 
    then finally do the bottom. 

    Lines in the file must be between 0 and 76 characters in length, and 
    end with a CR/LF.  This is because there is a border line and a border 
    space on each side of the text. 

    [Space] will pause the text, and [Enter] will cancel it. 

    The first line of the file is the heading line, and will be centered 
    at the top of the screen.  The remaining lines in the file are all 
    treated as boxed text. 

    SendTT\LINES.TXT "" can be used.

    The file can be any size.

    EXAMPLE
    Ŀ
    Hi HoHo's                                                  
    Yes folks!  It's Hi HoHo time.                             
    Can you say "HoHoHo".                                      
                                                               
                                                               
    Will display as:                                           
                                                               
     Hi HoHo's ۳
    ͻ
     Yes folks!  It's Hi HoHo time.                          
     Can you say "HoHoHo".                                   
    ͼ
    

dTX5                    Display File: Text in Screen-Sized Boxes
dTX5         Display File: Text in Screen-Sized Boxes           Difficulty: 3

        Format:    $dTX5 _pathname$

    Where $pathname$ is any valid pathname.

    This command takes a standard text file and displays it as individual 
    screens.  Basically I got tired of editing ANSI text screens, and made 
    this to handle it.  So now I can have one long text file--but the user 
    will see it as many ANSI text screens.  It "boxes" 19 lines at a time 
    until the file is complete. 

    If there are less than 19 lines left to do--they will not be done.  
    So, if your last screen is not being displayed, you probably need to 
    add a blank line or three. 

    The file must be a standard text file ending in CR/LF's.  Each line 
    can be from 0 to 76 characters in length.  This is because there is a 
    border line and a border space on each side of the text. 

    The first line of the file is centered at the top of the screen as the 
    header line, and given an "x/y" paging reference. 

    A "Paused" is done between each page.

    SendTT\LINES.TXT "" can be used.

    The file can be any size.

    EXAMPLE
    Ŀ
    Hi HoHo's                                                  
    Yes folks!  It's Hi HoHo time.                             
    Can you say "HoHoHo".                                      
    <lines 3 thru 19 are blank>                                
    This is page two of Hi HoHo's                              
    <lines 2 thru 19 of page 2 are blank>                      
                                                               
                                                               
    Will display as:                                           
                                                               
     Hi HoHo's [1/2] ۳
    ͻ
     Yes folks!  It's Hi HoHo time.                          
     Can you say "HoHoHo".                                   
     <17 blank lines>                                        
    ͼ
    **[Paused]**                                               
    <screen cleared>                                           
     Hi HoHo's [2/2] ۳
    ͻ
     This is page two of Hi HoHo's                           
     <18 blank lines>                                        
    ͼ
    **[Paused]**                                               
    

Hour                    Hourly Usage Graph
Hour         Hourly Usage Graph                                 Difficulty: 1

    Display the hourly usage graph for the last week.

    This "graph" provides a wealth of system usage information for the 
    current day, and 7 days previous. 

    Each hour, of each day, is given a "box", which is color-coded 
    according to how active that hour was.  This is hourly utilization, 
    the number of minutes of that 60 that the BBS was being used. 

    The colors are as follows:
    
         0 of 60 used    no box
         1 to 15 used    brown box
        16 to 30 used    red box
        31 to 45 used    orange box
        46 to 60 used    violet box

    This allows users to determine the best and worst times to call, and 
    to see any trends over the week in calling activity. 

    Hitting "T" while the "graph" is being displayed causes the actual 
    numbers to be displayed rather than representative boxes.  This does 
    not work if you wait till you are at the [Paused]. 

    If you are running a multi-node BBS: the hourly usage numbers are 
    maintained for each node. 

LLog                    Display the Callers Log
LLog         Display the Callers Log                            Difficulty: 2

    Displays the callers log (CALLERS.LOG), for that particular node, in 
    reverse; from most recent (last entry) to the oldest (first entry). 

    The callers log can contain lots of information.  Always displayed are 
    the user-called and file-tranfer lines. 

    The rest of the lines are only shown if the callers is the sysop. 

    There is a Toggle: which allows the Console to show the full callers 
    log while the user only see's the non-sysop lines. 

    See also: TOGGLES, LOGGING

LstU                    List Users
LstU         List Users                                         Difficulty: 2

    This command lists all the active (not deleted) users on the system.  
    The user may choose to show all users, or those whose name contains a 
    search string. 

    It includes some other minor information like City and State, number 
    of logons, and their UL's and DL's. 

    Hitting "-" will restart the listing, in the opposite alphabetical 
    order (A-Z or Z-A, depending on what it was doing.) 

    The #NEWUSER record is not shown.

Ninf                    Higher Access Screens
Ninf         Higher Access Screens                              Difficulty: 3

    This command displays ANSI screens relating to what the user has to do 
    to obtain the next level of access.  That was its original intent, but 
    actually it can be used to display ANSI's based on the users SL (which 
    can also be done by combining the $ifSL$ and $dANS$ commands). 

    The screens to be displayed are ANSI files. 

    The filename's must have the name: filename.xxx, where $xxx$ is the 
    Security Level database record number.  Not the security level value, 
    nor the security level show value (since these values can range from 
    negative to 32767). 

    Example: If record 1 is SL 5, record 2 is SL 10, and record 3 is SL 
    20.  You would want three files: filename.001, filename.002, and 
    filename.003. 

    Filename.001, Filename.01, and Filename.1 will all be considered Level 
    1--but Filename.010 and Filename.100 are not (they are 10 and 100, 
    respectively). 

    If a level does not have an access screen/file, then the highest 
    available one is used (at a level lower than theirs)--example: if SL 
    95 does not have an access screen, but SL 90 does, then SL 90's screen 
    will be displayed. 

    For multiple access screens for a single level, they should have 
    filename's such that, when sorted, they appear in the order you want 
    them displayed.  Example: ACCESS1.001 and ACCESS2.001 will first show 
    ACCESS1.001 to your level 5 users, and then show ACCESS2.001 after 
    that to those same users. 

    If the user is undergoing Peer Review, or has failed Peer Review, then 
    Filename.000 is displayed rather than the file name corresponding to 
    their security level. 

Pro0                    Profile A user
Pro0         Profile A User                                     Difficulty: 4

    The command will ask the caller for a user to examine. 

    This command provides the user with detailed information about another 
    user. 

    First PROFILE3.ANS is displayed, then PROFILE4.ANS, then a $ProA$ and 
    $ProB$ commands are done. 

    The two ANSI's can have the "xx<<y" smart codes, but instead of giving 
    information about the current user, they will insert information about 
    the requested user. 

    See also:  ANSI's, PATHNAMES, $ProA$, $ProB$

ProA                    Show Profile Screen 3
ProA         Show Profile Screen 3                              Difficulty: 2

    This is a third profile informational screen.

    It summarizing how the user compares with the averages of the users in 
    the other SL tiers. 

    The average of the SL tier to which the user belongs has the user's 
    own stats subtracted from the totals before displaying. 

    Technical note:  The totals are distorted slightly: as the totals 
    represent the last time "Update Stats" was run, and the user's record 
    represents current values--this is only really noticeable when the SL 
    tier has only one user (such as that of the sysop). 

    The individual security level breakdowns are done by Security Level 
    Show values--that is, they represent the totals of all the security 
    levels with that same show level value.  Except when the user is the 
    sysop, then the individual values for each real Security Level are 
    shown. 

    It is called "profile screen 3" because that is when it appears with 
    $Pro0$, but you can mix and match it into anywhere. 

ProB                    Show Profile Screen 4
ProB         Show Profile Screen 4                              Difficulty: 2

    This is the fourth profile information screen available.

    It summarizes how many messages the user has read in all the message 
    areas except Private Mail (E-Mail)(area 001). 

    The Private Mail area is shown, however, for the sysop.  This allows 
    you to get an idea of the distribution of your messages, which you can 
    use to concentrate your deletion efforts. 

    It is called "profile screen 4" because that is when it appears with 
    $Pro0$, but you can mix and match it into anywhere. 

Quot                    Display a Quote
Quot         Display a Quote                                    Difficulty: 2

    This command clears the screen and displays a quote from the 
    GOODBYE.TXT file. 

    GOODBYE.TXT is a standard text file.  Each quote is separated by a 
    single blank line.  Each line should not exceed 79 characters.  For 
    the quote's reference, put a "--" in front of the reference--this 
    tells the software to change the color appropriately. 

    You can add new quotes into the file as you like. 

    Technical Note:  When you add new quotes into the middle of the file, 
    the software may require that one caller/quote goes by before it is 
    properly readjusted.  This one quote, the first one after you alter 
    the file, may be chopped in half.  After this one occurrence, the 
    quotes will display properly.  The reason for this is that the quote 
    command keeps track of where it is in the quote file so when you "pull 
    out the rug" on this pointer by altering the file, it needs a single 
    quote request to readjust. 

    Technical Note:  It seems that when it reaches the last quote in the 
    file, before returning to the beginning of the file and startng over, 
    it displays a quote consisting of a single period.  I think this is 
    due to one or more extra CR/LF's being at the end of the file.  It is 
    nothing to be concerned with however. 

    Quotes are read in, from the file, one after the other, so they are 
    not random.  However, users are random.  Which effectively randomizes 
    the appearances of the quotes for any single user. 

    Unlike every quote file I have seen, I did not include the "inane" 
    quotes.  All the quotes here either have a truth: about the human 
    condition, about life, or is just ironic.  For most, there are 
    multiple levels of meaning--they use a "literary" writing style. 

    To save trouble re-searching quote files for quotes, below is a list 
    of files that I have already examined: 

        Auntie 5.11               Fortune Cookie 1.3
        Idealist                  Lynx II
        Maximus 2.00              Sage v1.2
        Wisdom of the Ages

    Perhaps 20 of the quotes I wrote myself.

Sts1                    Display Internal Statistics Screen 1
Sts1         Display Internal Statistics Screen 1               Difficulty: 2

    This displays a rankings list of the top downloaders in terms of bytes 
    downloaded. 

Sts2                    Display Internal Statistics Screen 2
Sts2         Display Internal Statistics Screen 2               Difficulty: 2

    This displays a rankings list of the top downloaders in terms of files 
    downloaded. 

Sts3                    Display Internal Statistics Screen 3
Sts3         Display Internal Statistics Screen 3               Difficulty: 2

    This displays a rankings list of the top uploaders in terms of bytes 
    uploaded. 

Sts4                    Display Internal Statistics Screen 4
Sts4         Display Internal Statistics Screen 4               Difficulty: 2

    This displays a rankings list of the top uploaders in terms of files 
    uploaded. 

Sts5                    Display Internal Statistics Screen 5
Sts5         Display Internal Statistics Screen 5               Difficulty: 2

    This displays a ranking list of those with the most logons.

Sts6                    Display Internal Statistics Screen 6
Sts6         Display Internal Statistics Screen 6               Difficulty: 2

    This displays a ranking list of those with the most messages posted.  
    The totals represent all types of message (public, private, feedback, 
    and net mail). 

Sts7                    Display Internal Statistics Screen 7
Sts7         Display Internal Statistics Screen 7               Difficulty: 2

    This displays a rankings list of the worst downloaders in terms of 
    bytes downloaded. 

    Users below a sysop defined minimum number of logons or security level 
    value, or have a zero value, are ignored. 

    See also: SETTINGS

Sts8                    Display Internal Statistics Screen 8
Sts8         Display Internal Statistics Screen 8               Difficulty: 2

    This displays a rankings list of the worst downloaders in terms of 
    files downloaded. 

    Users below a sysop defined minimum number of logons or security level 
    value, or have a zero value, are ignored. 

    See also: SETTINGS

Sts9                    Display Internal Statistics Screen 9
Sts9         Display Internal Statistics Screen 9               Difficulty: 2

    This displays a rankings list of the worst uploaders in terms of bytes 
    uploaded. 

    Users below a sysop defined minimum number of logons or security level 
    value, or have a zero value, are ignored. 

    See also: SETTINGS

Stsz                    Display Internal Statistics Screen 10
Stsz         Display Internal Statistics Screen 10              Difficulty: 2

    This displays a rankings list of the worst uploaders in terms of files 
    uploaded. 

    Users below a sysop defined minimum number of logons or security level 
    value, or have a zero value, are ignored. 

    See also: SETTINGS

Stsy                    Display Internal Statistics Screen 11
Stsy         Display Internal Statistics Screen 11              Difficulty: 2

    This displays a ranking list of those with the least logons. 

    Users below a sysop defined minimum number of logons or security level 
    value, or have a zero value, are ignored. 

    See also: SETTINGS

Stsx                    Display Internal Statistics Screen 12
Stsx         Display Internal Statistics Screen 12              Difficulty: 2

    This displays a ranking list of those with the least number of 
    messages posted.  The totals represent all types of message (public, 
    private, feedback, and net mail). 

    Users below a sysop defined minimum number of logons or security level 
    value, or have a zero value, are ignored. 

    See also: SETTINGS

StsT                    Display System Total Statistics
StsT         Display System Total Statistics                    Difficulty: 3
    
    This displays the system totals per security level.

    The numbers are generated when you do a $Stat$ command. Because of 
    this, they do not represent current totals, but the values at the time 
    the command was run.  This is most notably true of the Users field, 
    the total users represents the current system tally, but the breakdown 
    is the breakdown of the users when you last updated the stats. 

    The individual security level breakdowns are done by Security Level 
    Show values--that is, they represent the totals of all the Security 
    Levels with that same Show level value.  Except when the user is the 
    sysop, then the individual values for each Real Security Level are 
    shown. 

    Technical note:  Because of rounding, the percentage totals may not 
    actually add up to 100.00%--usually 99.99%. 

    See also:  STATISTICS

UHs1                    User's History
UHs1         User's History                                     Difficulty: 2

    This command displays the history of the current user. 

    It displays one line of statistics for each of the users last calls.  
    The data for this command is stored in SUMMARY.DAT and depends on how 
    old (how big) this file is. 

    Registration will allow you control how many days to maintain the 
    SUMMARY.DAT file at, otherwise it keeps growing, and growing, and 
    growing... 

    See also:  $UHs2$

UHs2                    History of Any User
UHs2         History of Any User                                Difficulty: 2

    This command works exactly like $UHs1$ except we ask for a user name.  
    It is on the sysop menu, but there is no reason you couldn't put it on 
    a user menu. 

    See also:  $UHs1$

Vers                    Version Information
Vers         Version Information                                Difficulty: 1

    This displays the current version of the BBS software. 

VFil                    Display File: Text Lines With Pattern
VFil         Display File: Text Lines With Pattern              Difficulty: 3

        Format:    $VFil _pathname _pattern$

    This command allows you to display parts of a file. 

    $pathname$ is the full drive:path\filename.ext of the file you wish 
    to display. 

    $pattern$ is a pattern of characters (with no spaces, so it's usually 
    a keyword) to match.  Case does matter. 

    Each line of the file is read in, if the line of text contains an 
    exact match, then that line is displayed. 

    Normally the text file is displayed sequentially from front to end.
    However, if you use $_-pattern$, the file will be displayed
    sequentially from end to front.  For instance, a door log that is
    updated by appending lines to its end, has its most recent entries
    at the end--using this -'ve sign, the file will be properly displayed
    in newest->oldest order.

    It is useful for displaying some door file logs.

What                    Who's Doing What
What         Who's Doing What.                                  Difficulty: 4

    This is a multi-node command. 

    It displays a listing of who is doing what on the various nodes. 

    See also:  MULTIPLE NODES

User Cmds: Misc.        Miscellaneous User Commands
User Cmds: Misc.        Miscellaneous User Commands

    These are commands that you would normally place on user-accessible 
    menus for them.  These are commands that do not fit in the limited 
    "File", "Messages", or "Display" categories. 

    For some of these, you have to stretch the command (for instance, 
    $DBEd$ would need a for-user acessible database) or include the 
    message-op as a user (the $Lock$ and $UnLk$ commands). 

AnsQ                    Answer a Questionnaire
AnsQ         Answer a Questionnaire                             Difficulty: 6

        Format:    $AnsQ _xxx$

    Where $xxx$ is any valid SURVEY.xxx file.  $xxx$ can be any 
    alphanumeric character. 

    This command will ask the user questions and get answers.  A simple 
    "fill in the form" type system. 

    Answers are stored in ANSWERS.xxx and can be viewed using the menu 
    command $ShwQ$. 

    There are only two types of lines in the SURVEY files: input and 
    output. 

    If a line contains only a number, it is assumed to be an input line.  
    When the form, is used and reaches one of these lines, the software 
    will wait for the user to enter information at this point.  The user 
    will not be allowed to enter information more than this number of 
    characters long.  You may specify any number under 8192. 

    Lines that do not contain just a number, are output lines.  These 
    lines are merely displayed.  These lines may use the SendTT/LINES.TXT 
    "" codes.  The lines should not exceed 126 characters in length.  To 
    do other stuff, like color, remember that you can also include ANSI 
    codes. 

    EXAMPLE
    Ŀ
    Hi! Please answer a question:>                            
                                                               
    Do you like JDR_BBS [Y/N]?                                 
    1                                                          
                                                               
                                                               
    Thank you for answering.*                                 
    

    The following occurs when this example text is executed from a 
    SURVEY.xxx file: 

        1. Displays "Hi! Please answer a question:" followed by a CR/LF 
           (the ">"). 
        2. Displays a blank line. 
        3. Displays "Do you like JDR_BBS [Y/N? " without a CR/LF. 
        4. Waits for the user to input an answer not exceeding 1 character 
           in length. 
        5. Displays a blank line (to get off the question line). 
        6. Displays another blank line.
        7. Displays "Thank you for answering." with a 1 second pause (the 
           ">"). 

    The first ">" could have been just another blank line, and each of the 
    blank lines could have been replaced with ">"'s. 

    In minimalist form (either form will work) the example can be reduced 
    to: 

    EXAMPLE
    Ŀ
    Hi! Please answer a question:>>Do you like JDR_BBS [Y/N]? 
    1                                                          
    >>Thank you for answering.*                             
    

    The example's three lines can be read simply as: line 1 displays text, 
    line 2 gets a 1 character answer, line 3 displays text. 

    See also: SENDTT, ANSI, $ShwQ$

DBEd                    Work with a DataBaser Database
DBEd         Work with a DataBaser Database                     Difficulty: 7

        Format:    $DBEd _Dxx$

    Where $xx$ is a number from 01 to 99.  This command calls up DataBaser 
    database $xx$--where $xx$ is the DB_BLKS.TXT block number that defines 
    the database. 

    From this, you can Add to the database, List the contents of the 
    database, Modify the contents of the database, Insert into the 
    database, and Delete the contents of the database. 

    You can also just type a record number and you will be given a normal 
    contents listing from that record on. 

    I use this same command to manipulate nearly all of the databases the 
    software uses.  The following are DataBaser databases I use and their 
    equivalent menu access command.  They all appear on the various sysop 
    menus. 

  
    $Command$    $Is used to call up what database$

    $DBEd _B01$  FREQ'able files definitions
    $DBEd _B02$  Zone information database
    $DBEd _B03$  Password and Attributes for net addresses
    $DBEd _B04$  Executable/shell/cmd lines the software uses
               **WARNING**
               Never change the order of the commands in this database. 
    $DBEd _B05$  Languages/Styles
               This database can have entries which you don't really have 
               available (such as the French language).  This defines 
               which languages/styles to present to a user for the "Select 
               New Language" menu command.  If they select one you don't 
               have available, then ENGlish will be used--however it is 
               bad practice to make languages/styles available in this 
               menu and not actually have them. 
    $DBEd _B06$  .Name expansion definitions 
    $DBEd _B07$  which stores whom at what net address should be given 
               non-net mail when they do a net mail poll of you. 
    $DBEd _B08$  User Linkages
    $DBEd _B09$  Sysops
    $DBEd _B10$  Message Area definitions 
               **WARNING**
               If using multiple nodes: Do not add/delete message areas 
               when there are users on other nodes. Restart all the other 
               nodes when done (so the other nodes know you've 
               added/removed an area). 
    $DBEd _B12$  Net Mail destination forwarding
    $DBEd _B36$  Search Files definitions
    $DBEd _B38$  Door program definitions
    $DBEd _B39$  Events definitions
               If using multiple node: restart the other nodes so they 
               know you've changed this 
    $DBEd _B41$  File Areas definitions
               If using multiple node: restart the other nodes so they 
               know you've changed this 
    $DBEd _B42$  Security Levels definitions
               If using multiple node: restart the other nodes so they 
               know you've changed this 
    $DBEd _B43$  News Items (example)
    $DBEd _B47$  Protocols definitions
    $DBEd _B55$  CONNECT strings
    $DBEd _B66$  Node Lists
    $DBEd _B70$  EchoMail AREA: Re-Mapping
    $DBEd _B71$  EchoMail Routing
  

    The above databases are used internally, and assume you won't be 
    changing them.  So don't. 

    See also:  DATABASER, MESSAGE AREAS, FILE AREAS, DOORS,
               SECURITY LEVELS, EVENTS, NET MAIL

DBVw                    List a DataBaser Database
DBVw         List a DataBaser Database                          Difficulty: 7

        Format:   $DBVw _Bxx$

    List the contents of a DataBaser database.

    Where $xx$ is a number from 01 to 99.  This command calls up DataBaser 
    database $xx$--where $xx$ is the DB_BLKS.TXT block number that defines 
    the database. 

    This lists the contents of a DataBaser database.  Producing the same 
    output you get when Listing the database from $DBEd$. 

    This is useful when you just wish to show the contents alone. 

    See also:  $DBEd$, DATABASER

GBye                    Disconnect
GBye         Disconnect                                         Difficulty: 1

    Logoff/hangup/goodbye.  Command to log off the user. 

    This is not needed.  If you want, you can just have your callers drop 
    carrier to log off (to just hang up on their end rather than selecting 
    a menu command).  But this would probably mean you get a lot of "sorry 
    about dropping carrier, but I could not find logoff command" messages. 

    There is a Toggle: which tells the software whether to display a quote 
    (or not) before hanging up.  If you were to turn this Toggle OFF, you 
    could also get a logoff quote by creating a new command: "Quot GBye". 

    If you wish to display an ANSI before hanging up.  You should create a 
    new menu command: $dANS _C:\BBS\THEANSI.ANS GBye$ and use it when the 
    caller hits "G" to logoff. 

    See also:  TOGGLES

Jobx                    Skills Database
Jobx         Skills Database                                    Difficulty: 1

    Access the skills database.

    Add/Update/List of user fields of expertise. 

    Helps keep everybody informed on each others skills--to know who to 
    direct specific questions to, etc. 

    It just contains a user name and a text field.  If not jobs, you can 
    use it for just about anything. 

    Each user is only able to do one entry--but they can update it if they 
    want. 

Lock                    Disallow Message Area Access
Lock         Disallow Message Area Access                       Difficulty: 3

        Format:    $Lock _xxx$
    
    Limit user(s) to a Message Area.

    Where $xxx$ is the Message Area (001 to 999) in which to work with. 

    This command will let the Message-Op lock out access to message area 
    $xxx$ to a single user, or all users.  Even though normally it will be 
    the sysop using it, because it is meant for Message-Op's as well, it 
    is put here with the user commands. 

    Remember that a Message Area must have "LOCK" in its Attributes for 
    this to work. 

    $Lock _001$ is the sysop version of this command--it will ask which 
    message area to work with.  $001$ because this is the Private Mail (E-
    Mail) message area--which cannot be locked. 

    Locking a user out of an area will re-set their last-message-read 
    pointer. 

    The message-op cannot lock themselves out of the area. 

    This is the non-user $Join Conference$ command.  Users can toggle 
    messages areas ON/OFF, this allows sysops to toggle users ON/OFF in a 
    message area. 

Locx                    Change Location
Locx         Change Location                                    Difficulty: 2

    For updating/changing the user's City and State (location) data. 

    The statistics that produce the "50 states" counts are based on this 
    field. 

    There is a Toggle: to turn ON/OFF whether you ask new users at login 
    to enter this data. 

    See also:  TOGGLES

LngS                    Select a Language/Style
LngS         Select a Language/Style                            Difficulty: 3

    This command will bring up a menu of all the languages/styles you 
    defined in your Languages/Styles database. 

    The user selects one, and it will be switched to.  Then, each time the 
    user logs in, the language is automatically loaded and switched to. 

    The software will present each of languages/styles you have in the 
    Language/Style database, regardless of whether you actually have the 
    files on disk to support them.  Usually, unless it's only temporary, 
    you should simply remove the entries from the Languages/Styles 
    database that you do not wish to support. 

    If the language/style has the "is a GIP language" Attribute ON, then 
    the user is first asked a question: "Are you using a GIP capable 
    communications program?".  If they answer No, then we do not switch to 
    this VGA/graphics language/style. 

    The languages/styles are presented in the order in which they exist in 
    the Language/Style database. 

    See also:  LANGUAGES

LsLk                    List Members of Area
LsLk         List Members of Area                               Difficulty: 3

        Format:    $LsLk _xxx$

    Where $xxx$ is the message area (001 to 999) in which to work with. 

    List users allowed in a message area.

    It is a simple list of names.

    If $xxx$ is a message area without the LOCK attribute, then all the 
    active users will be listed (since they all have access to the area). 

    See also:  $Lock$

NewS                    List New Stuff
NewS         List New Stuff                                     Difficulty: 3

    Show new stuff since last call.

    This command will list any new public messages, new uploads, and new 
    requests. 

    Messages are listed from newest to oldest for each message area 
    (starting at number 1).  Private mail is not shown. 

    Message areas for which users do not have access, or have toggled OFF, 
    are not shown.  No distinction is made as to which area the message is 
    in (one can usually tell), but all new messages for a particular area 
    are grouped together. 

    New files are listed in order of newest file to oldest.  All file 
    areas to which the user has access are examined--note, there is no 
    distinction made between the file areas. 

    Any descriptions with "}x" codes will not have those codes expanded, 
    showing the "}x" and allowing others to learn which code was used. 

    Invisible or <incomplete> files will not be listed. 

    New requests are listed from newest to oldest.  The requests will 
    include targeted requests, even though the user may not have SL enough 
    to do a target upload. 

    Keep in mind that messages are considered new until read, files, 
    requests, and ramblings are new since the callers last logon.  Which 
    means, that unless the user takes care of the new messages (by reading 
    them, re-setting the last-read pointers, or toggling OFF the areas) 
    they will continually get the new messages listed when they do New 
    Stuff. 

Pass                    Change Password
Pass         Change Password                                    Difficulty: 2

    This command is for changing a user's current verification. 

    When a password is changed, the callers "force password change" 
    counter is reset.  The reset value comes from #NEWUSER's "logins until 
    force password change" field.  A zero disables this, otherwise when it 
    gets to 1 (it is reduced by one for the caller after each login) the 
    user must enter a new password before logging in. 

    Word games: Password, Verification, Authentication, Security Code, 
    Authorization Code. 

    See also:  $User$, $LogN$

Revw                    BBS Reviews
Revw         BBS Reviews                                        Difficulty: 1

    Add/Update or List reviews of other BBS systems. 

    The reviews are similar to file reviews; multi-line, same look.  All 
    the reviews for one phone number are clustered together under that 
    phone number. 

    The BBS Reviews list contains four objects of interest: the BBS's 
    name, the BBS's phone number, the review itself, and the name of the 
    reviewer. 

    It is not meant as a general one-liner database of BBS numbers, but 
    rather a serious review or remark system about BBS's in your area, or 
    you field, etc.  Probably as few as 50 phone numbers will make it so 
    large as to be useless--since it will usually be about 10 lines of 
    review for each phone number. 

    It is pretty much equivalent to a message area dedicated to reviews 
    and information about other BBS's--only a lot more organized and 
    readable. 

Ring                    Menu-Based Call-Back
Ring         Menu-Based Call-Back                               Difficulty: 3

    Menu-based call-back verification.

    This is the menu version of the $Call$ command. 

    It does a call-back phone verification. 

    Unlike $Call$ it does not require that User Attribute C be ON. 

    Technical note:  If this command were stuck in the "logon loop" of 
    commands, every user would have to do phone verification at each 
    logon. 

    The real purpose of this command to provide a menu alternative to 
    $Call$--in which users can do call-back at their leisure.  This is 
    where the Setting that gives the user a higher SL value is useful. 

    Passing call-back verify changes the user's home-phone number.  This 
    command is a practical alternative to $UsrP$--as it guarantee's that 
    the information in the user's home-phone number is indeed correct. 

    See also: $Call$, $User$

ShwQ                    Show Results of a Questionnaire
ShwQ         Show Results of a Questionnaire                    Difficulty: 6

        Format:    $ShwQ _xxx$

    Where $xxx$ is any valid SURVEY.xxx file.  $xxx$ can be any 
    alphanumeric character. 

    A simply answer display system.  It just pages through the answers by 
    plugging them back into the questionnaire and displaying the two 
    combined. 

    If you have a question and want its tally, then use the voting system 
    to ask the question. 

    See also:  $AnsQ$

SysP                    Change Data Phone Number
SysP         Change Data Phone Number                           Difficulty: 1

    This command changes/updates the user's BBS/data/work/second phone
    number field. 

UnLk                    Allow Message Area Access
UnLk         Allow Message Area Access                          Difficulty: 3

        Format:    $UnLk _xxx$
    
    Unlock (allow) user(s) to a message area.
    
    Where $xxx$ is the message area (001 to 999) in which to work with. 

    This command will let the message-op unlock access to message area 
    $xxx$ to a single user, or all users. 

    $UnLk _001$ is the sysop version of this command--it will ask which 
    message area to work with.  $001$ because this is the Private Mail (E-
    Mail) message area--which cannot be locked. 

    See also:  $Lock$

UsrP                    Change Home Phone Number
UsrP         Change Home Phone Number                           Difficulty: 2

    This command changes/updates the user's home phone number field. 

    If you are using forced call-back verification, it might be better to 
    not make this command available.  Then the phone number the user 
    passed call-back with will always be stored here (that is, the user 
    will not be able to change it). 

UsrT                    User Toggles
UsrT         User Toggles                                       Difficulty: 2

    This command toggles ON/OFF various user preferences. 

    The docs for this section have been put on-line as part of the Toggle 
    system. 

Utg2                    User toggles 2
Utg2         User toggles 2                                     Difficulty: 2

    This command toggles ON/OFF various user preferences.

    The docs for this section have been put on-line as part of the Toggle 
    system. 

Vot0                    Voting System
Vot0         Voting System                                      Difficulty: 3

    This command cycles through all the voting questions, allowing users 
    to enter/change their answers and display the totals. 

    The allowed commands are: "N", "[Enter]", option letter, or question 
    number. 

    "N" moves to the next question.

    "[Enter]" quits the reading of the questions.

    An option letter changes the user's selection for that question.  Then 
    moves on to the next question. 

    A question number will jump to that question.

    If you do not have any kind of forced voting, then "No Opinion" can be 
    a valid answer (with forced voting, it is equivalent to "not 
    answered"). 

    See also:  VOTING

Login Loop (usually)    Commands Used at Login
Login Loop (usually)    Commands Used at Login

    These are commands that you would normally put in as part of your 
    login-loop of commands. 

    The login loop of commands is usually the very first command; $STRT$
    or maybe $SHUT$, through to the command to go to the main menu; 
    $>001$. 

Asst                    AI Ask to Delete
Asst         AI Ask to Delete                                   Difficulty: 4

    If there is very little drive space, this command, acting as the AI, 
    will ask users of proper Security Levels to use their Life & Death 
    delete ability to remove a file. 

    Files with L&D values greater than zero are not shown. 

    Invisible files do not show up. 

    Files in areas to which the caller does not have access are also not 
    shown. 

    No files are actually deleted with this command.  It is just a plea 
    for help to make space. 

    You should use an $ifSL$ to stop users you do not from seeing this in 
    your login loop. 

    See also: SETTINGS, TOGGLES 

Call                    Forced Call-Back
Call         Forced Call-Back                                   Difficulty: 3

    This is a call-back phone verification command.  It will hang up on 
    the user, and dial a phone number they specified.  They are then 
    quized for their password. 

    The command is meant to be a "logon loop" command, stuck somewhere in 
    your logon list of commands. 

    When the command is executed, it first checks to see if the caller has 
    their Attribute C set to ON.  If so, it forces call-back verification-
    -in which case the user cannot get past this forced call-back. 

    There is a Setting: the Security Level value to give the user after 
    successfully passing call-back. 

    There are a couple of Toggles: disallow long-distance numbers, allow 
    the user to continue their session after the software has called them 
    (and they pass the quiz). 

    The software will not allow a phone number that matches the BBS's 
    phone number. 

    It records in the log all passed and failed attempts. 

    It does no duplicate number checking right now, but it may in the 
    future.  I do not think I will set it to disallow duplicate phone 
    numbers, just to flag them in the log when they occur. 

    If User Attribute D is set ON, then the user goes through a forced 
    password change after successfully passing call-back. 

    There is one real problem with call-back verification:  Long distance 
    number handling.  If you stop LD calls, then you cannot have users 
    outside your area.  If you allow LD testing, then you have the 
    potential for high LD bills--as well as users running up your bill by 
    giving LD numbers as harassment. 

    In the future I'll have a toggle to "pass on through" long distance 
    numbers (if you do not want to either stop them or test them).  
    However, this will not eliminate the problems, as users who want to 
    keep their number secret will merely give long distance numbers to 
    gain access. 

    Perhaps the proper way to use call-back is for higher access (after 
    already having general access), when you want to give a user a higher 
    level.  Then you can decide when the calls to LD numbers are made. 

    What this is really useful for is to re-check a user.  For instance, 
    when you suspect someone else has cracked their account. 

    See also: SETTINGS, TOGGLES, $User$

Dnws                    Display News
Dnws         Display News                                       Difficulty: 2

    Display the news file(s) if it exists.

    It also displays personal news: the number of times the user had their 
    verification hacked at since their last call. 

    This will display all of your NEWS.xxx (where $xxx$ is 001 to 999) 
    files.  They are displayed in order from newest (highest number) to 
    oldest. 

    Usually this command will be part of your "logon loop" of commands the 
    caller must go through before getting to a menu. 

    See also:  $News$, PATHNAMES

Fpwd                    Show Shuttle Password
Fpwd         Show Shuttle Password                              Difficulty: 1

    Display the shuttle logon verification/password. 

    The shuttle logon password is stored as a Setting. 

    See also:  SETTINGS 

Last                    List Last Few Callers
Last         List Last Few Callers                              Difficulty: 2

    Show the last few callers to the BBS.

    This is usually standard as a "login loop" command.  In which you put 
    it in your group of commands to execute before reaching the main menu. 

    Included with their names are: location, connect rate, minutes on-
    line, date and time of call, and the node they were on. 

    If a user calls twice, or more, in a row at the same node, then the 
    oldest entry is used, but the minutes on-line is the total of all the 
    entries.  In other words, the display is condensed to show the "last 
    few callers"--not the "last few logons". 

    There is a Setting: for how many users to show. 

    There are Toggles: stop the showing of the current user, stop the 
    showing of all local (console) logons, and to limit those shown to 
    those that have called the current node. 

    See also:  SETTINGS, TOGGLES

LngO                    Select a Language/Style with Check
LngO         Select a Language/Style with Check                 Difficulty: 3

    User's current language invalid?  Bring up language menu.

    This command is exactly the same as $LngS$ in function, except that it 
    will only bring up the menu of languages/styles if the users current 
    language/style is not available. 

    By default, the software starts each user out with "   " as their 
    language/style.  Since this is not available, the software uses the 
    first defined language/style, usually "ENG". 

    By using "   ", however, you are able to put this $LngO$ command in 
    your login loop of commands, confident that it will only execute for: 
    new users, or for those users who have a language you supported 
    previously but dropped. 

    See also:  LANGUAGES, $LngS$

LogN                    Login the Caller
LogN         Login the Caller                                   Difficulty: 4

    Initially it will use auto-name-detect to to get the users name.  
    However, if they just hit [Enter] alone, enter a name less than 3 
    characters, "new", "guest", or "sysop" then auto-name-detect is turned 
    off immediately. Otherwise it is turned off after the specified number 
    of failed verification attempts (currently 2). 

    Getting past a wrong auto-name-detect means to just hit [Enter] at the 
    verification question.  If they type anything else, then it is 
    considered a hack attempt at that users name--and is recorded as such 
    for the user to see.  It is also recorded in the log. 

    New users are given a copy of the #NEWUSER record. 

    The console is beeped 3 times if the sysop calls on remotely, or a 
    user with Attribute 9 ON calls remotely.  Because of the way it is 
    implemented, it will also beep when a user makes a mistake of entering 
    the sysop's name or the name of a user you want to know about.  The 
    beeps are not heard at the remote end of the call. 

    Users of scripts should set their scripts to send $=name$ for their 
    name.  Putting a "=" in front of whatever you enter for a name causes 
    auto-name-detect to be turned off.  Example: $=John Doe$

    The "force password change" counter is reduced here with each login.  
    When it gets to 1, the user must change their password or they will 
    not be allowed past here into your BBS.  If the value is zero, this 
    feature is disabled.  Even if you do not want this as a scheduled 
    forced-change, it is useful when you suspect someone else is using 
    their account (just use "User Maintenance" to set this value to 1). 

    If you allow handles, names must be at least 3 characters in size.  If 
    you do not allow handles, then the first name can be one character, 
    but the last name must be at least two characters. 

    The file NOTNAMES.TXT can be used to stop names.  It is checked for an 
    exact match when the user enters either a first name and/or full name.  
    Example: NEW stops the name if the user typed NEW<ret> but not if they 
    typed NEW NEW<ret>.  To stop NEW NEW<ret> you need a NEW NEW entry.  
    Case does not matter, leading and trailing spaces are ignored. 

    If there is less than 2K of drive space, then no users will be allowed 
    to log in. 

    Besides the main "user name" question, you may set a Toggle to ask for 
    a "second name".  The main name question is stored as the user name, 
    but this question has its data stored as part of their SysopNote 
    field.  Useful if you want both an Alias and a Real name (although 
    usually asking for one or the other is the norm). 

    There are Settings: for number of name and password attempts, and for 
    maximum number of users allowed. 

    There are Toggles: for asking for location, for "second name", for 
    sysop name protection, and for sternly warning them about hack 
    attempts. 

    There are User Toggles for password help. 

    There are User Attributes for beeping and locking out. 

    See also: LOGIN, SETTINGS, TOGGLES, $UsrT$, $User$

PRvw                    Peer Review Voter
PRvw         Peer Review Voter                                  Difficulty: 4

    Vote on a Peer Review application.

    This command is usually placed in your logon loop of commands. 

    If the caller has the proper Security Level, and has the can-do-peer-
    reviewing Attribute ON, and there is a user's peer-review to vote on, 
    then they are given a chance to vote. 

    This command may be a normal menu command if you would like users to 
    vote on more than one review per logon. 

    If the number of reviews at any one time is about 1/2 of the number of 
    users who can do the review, then once per logon is probably best.  
    But for when you have a lot of reviews and few qualified reviewers, 
    then a menu command to do as many as they want is probably best. 

    See also:  PEER REVIEW, $User$, SETTINGS

Rpnw                    Read All Private Messages TO: You
Rpnw         Read All Private Messages TO: You                  Difficulty: 1

    Read all private to-you messages.

    Read new private mail TO: a user. 

    Goes through and checks all private mail areas. 

    Useful as a shuttle menu command. 

    This command does not offer the user an opportunity to select specific 
    messages before displaying the first message. 

Spwd                    Ask for the Shuttle Password
Spwd         Ask for the Shuttle Password                       Difficulty: 2

    Query the user for the shuttle password.

    If they get it wrong the system hangs up on them. 

    The shuttle password is stored as a Setting. 

    See also:  SETTINGS, $Fpwd$

Vot1                    Forced Voting Question
Vot1         Forced Voting Question                             Difficulty: 3

    If they have not answered a voting question, this command will ask 
    them one, and only one. 

    If used just after a user logs in, then it is essentially mandatory 
    voting, they either answer the question, or next logon they get the 
    same question again.  It is not really mandatory, although it is 
    highly suggestible. 

    Although commands are listed, anything the user types will exit the 
    voting system--since only one question was to be answered. 

    Selecting "No Opinion" is like not voting, and does not count as a 
    valid forced vote. 

    See also:  VOTING 

Welc                    Welcome the Caller
Welc         Welcome the Caller                                 Difficulty: 2

    Welcome the user and find their mail.

    This command also handles displaying of the user note, the Peer Review 
    voting, and the scanning of waiting mail. 

    Technical note:  If a user chooses to not read their new mail, then 
    when they again log on, they will get (at least) that same report of 
    the number of new messages--since only reading the messages from this 
    point does their "new messages waiting" data get cleared.  Example: if 
    they answered "no" to "read new mail now?" and went to Private Mail 
    and read and deleted their mail, then when they again log on they will 
    get "new messages" again--except when they try to read it they will 
    get "no messages found." 

    See also:  LOGIN

Events/Net Mail cmds    Event and Net Mail Commands
Events/Net Mail cmds    Event and Net Mail Commands

    These are commands that you would normally use as events. 
      
    The Net Mail commands, however, are also particularly useful as 
    <ctrl>Fx commands. 

-NET                    Stop Inbound Net Mail
-NET         Stop Inbound Net Mail

    If for some reason you don't want to accept inbound net mail 
    continously, you can turn if OFF/ON using $-NET$/$+NET$ as events. 

    These commands just stop inbound net mail, not outbound net mail nor 
    users. 

    Useful if you have a multi-node system and are having troubles with 
    people sending you net mail to a node when you want them to be sending 
    to another node. 

    You do not lose any net mail during an off period, a BBS sending you 
    net mail will just keep trying at another time/date until it succeeds. 

+NET                    Allow Inbound Net Mail
+NET         Allow Inbound Net Mail

    This command turns off the effects of $-NET$ and once again allows 
    your system to accept inbound net mail. 

-Usr                    Stop People
-Usr         Stop People

    Stop human callers from logging in.

    If you want to have a net-mail-only time period, you can use $-Usr$ as 
    an event to stop people from logging in, and you can use $+Usr$ to 
    once again allow them to log in. 

    The sysop is not prevented from logging in. 

    The software is always in continuous mail mode (unless you define it 
    otherwise), so creating a "mail only hour" to receive your net mail is 
    usually not needed. 

+Usr                    Allow People
+Usr         Allow People

    Allow human callers to login.

    If you want to have a net-mail-only time period, you can use $-Usr$ as 
    an event to stop people from logging in, and you can use $+Usr$ to 
    once again allow them to log in. 

DecC                    Decrement L&D Values
DecC         Decrement L&D Values

    Decrease DeathCount (L&D) values by one.

    While it can be a regular menu command, it is mainly used as an event-
    -to execute each night or every other night. 

    When used, DeathCount values for each file will be reduced by one. 

    It does not reduce DeathCount values greater than 9, since these are 
    Life & DeathCounts or File Points. 

    Deleted files are similarly effected (no escaping the AI even in 
    death). 

DFRQ                    Create a FREQ
DFRQ         Create a FREQ

        Format:    $DFRQ _netaddress _magicname$

    This provides an automatic method of creating a FREQ (File REQuest) of 
    another BBS for a file. 

    $_netaddress$ is the net address of the BBS to make the request. 

    $_magicname$ is the file's magic name.  You can specify multiple magic 
    names at the same time by separating them with a $||$.  For example: 
    $NODEDIFF||FNEWS$. 

    Remember that file requests only take effect during direct calls--they 
    are ignored (but not deleted) for routing via Host/Hub's. 

    What this command is really useful for is regularly scheduled 
    requests.  Such as for your weekly nodediff's. 

    It doesn't do any dialing.  It merely creates the file-request file 
    and waits until you (or the software) gets around to actually calling 
    up the BBS. 

    This is functionally equivalent to the "Do A Freq" message header 
    entry command. 

    See also:  NET_MAIL.DOC

ECHr                    Direct EchoMail Processing
ECHr         Direct EchoMail Processing

        Format:    $ECHr _msgarea$

    Where $_msgarea$ is the message area (001 to 999) in which to work 
    with. 

    This command will go through the EchoMail Routing database looking for 
    addresses which are to receive this EchoMail area's mail. 

    We then look into the Passwords & Attributes database.  For only those 
    addresses who are to receive the EchoMail directly (have don't-route-
    via-hub ON) and are not up-to-date with the latest message in the 
    area; we call and attempt to exchange net mail with them. 

    This is usually used as an event command, but can be a <ctrl>Fx 
    command.  It cannot be a menu command because it calls out. 

    See also:  NET_MAIL.DOC

ITUe                    Integrity Test: Users (Event)
ITUe         Integrity Test: Users (Event)
    
    Integrity test the user files (event version).

    This is the event version of $IT:U$.  It does not pause or ask the 
    sysop questions. 

    See also:  $IT:U$

MLsC                    Create Master Lists
MLsC         Create Master Lists

    This creates Master List(s) of your file areas so that your users may 
    download it. 

    It looks at the Security Level values you have in your file areas, and 
    will create up to 9 individual Master List archives (one for each file 
    area access Security Level tier). 

    You may use either $MLDL$ to allow a user to download the appropriate 
    list or you may have this command put the resulting archive directly 
    into a file area. 

    Technical note:  If a file area has no files in it, or has the TRANS 
    attribute ON, then it will not be included in the lists.  The TRANS 
    restriction is because the area contents will probably change before 
    the user can make use of them.  Where this theory breaks down, 
    however, is if you have a transient area that changes like once a 
    month.  In that case, I would recommend you turn OFF TRANS, and just 
    set the SL to like 32000 for the not-in-use file area(s) (that is, 
    only give the areas to which the current CD-ROM use low enough SL). 

    See also:  $MLDL$

NETr                    Direct NetMail Processing
NETr         Direct NetMail Processing

        Format:    $NETr _msgarea$

    Where $_msgarea$ is the message area (001 to 999) in which to work 
    with. 

    This command will go through the NetMail message areas looking for 
    un[Sent] mail. 

    We then look into the Passwords & Attributes database.  For only those 
    addresses who are to receive NetMail directly (have don't-route-via-
    hub ON); we call and attempt to exchange net mail with them. 

    This is usually used as an event command, but can be a <ctrl>Fx 
    command.  It cannot be a menu command because it calls out. 

    See also:  NET_MAIL.DOC

NODb                    Do Net Mail: Pre-Build
NODb         Do Net Mail: Pre-Build
    
        Format:    $NODb _phonenumber _netaddress$

        Example:   $NODb _1-414-643-1576 _1000:1/1$

    Pre-build packet, then call & exchange net mail.

    This command will first check to see if ther is any mail to be sent to 
    a net address.  If there is, we build our outbound mail bundle, and 
    then call them. 

    $_phonenumber$ is the phone number we call.  We send it out to the
    modem directly, not trying to add "1-" etc. 

    $_netaddress$ is the net address (eg. 1000:1/1) that we are to check
    to see if we have any mail to send them. 

    This command is useful if you have lots of mail to send someone long 
    distance, or your computer is too slow to build the bundle after 
    establishing connection.  For instance, on a 10 mhz XT, 100 messages 
    (store to .pkt and compress) is about the maximum that can be done 
    before a time-out occurs.  But this number improves with a faster CPU 
    or using a RAM drive for TEMPAREA.  This mainly concerns those who 
    wish to be Host/Hub's--and they usually have fast CPU's anyways. 

    Because we specify the net address here, we are forced to ignore any 
    Alias net address's the BBS we call present us. 

    This is usually used as an event command, but can be a <ctrl>Fx 
    command.  It cannot be a menu command because it calls out. 

    See also:  NET_MAIL.DOC

NODd                    Do Net Mail: Always
NODd         Do Net Mail: Always

        Format:    $NODd _phonenumber _zonenumber$

        Example:   $NODd _1-414-643-1576 _1000$

    This command will call the phone number and try to exchange mail with 
    the BBS at the other end. 

    $_phonenumber$ is the phone number we call.  We send it out to the 
    modem directly, not trying to add "1-" etc. 

    $_zonenumber$ is the Zone (as in Zone:Net/Node) for YOU.  It tells the 
    software which of your addresses (Alias's) to present first (primary 
    address).  This matters when you both are using session-level 
    passwords, or the other BBS cannot handle the EMSI protocol. 

    This is usually used as an event command, but can be a <ctrl>Fx 
    command.  It cannot be a menu command because it calls out. 

    This command is functionally equivalent to doing <end> in the <alt>d 
    terminal program. 

    See also:  NET_MAIL.DOC

NODm                    Do Net Mail: If Mail For
NODm         Do Net Mail: If Mail For

        Format:    $NODm _phonenumber _netaddress$

        Example:   $NODm _1-414-643-1576 _1000:1/1$

    This command will first check for outbound mail to an address.  If 
    there is mail to send, then we call them and exchange mail. 

    $_phonenumber$ is the phone number we call.  We send it out to the
    modem directly, not trying to add "1-" etc. 

    Where $_netaddress$ is their net address to which we should check
    for outgoing mail.  Once we call them, we use whatever net addresses 
    (Alias's) they present us with as well. 

    This is usually used as an event command, but can be a <ctrl>Fx 
    command.  It cannot be a menu command because it calls out. 

    See also:  NET_MAIL.DOC

Other/Misc. cmds        Various Miscellanous System Commands
Other/Misc. cmds        Various Miscellanous System Commands

    These are commands that are used for "flow control". 

    Mainly menu system control: skipping commands, menu systems, post-
    command stuff.  But also some user controls as well: dooring, forcing 
    language. 

BMxx                    Execute Your Module
BMxx         Execute Your Module                                Difficulty: 9

        Alternate forms:    $BM01$
                            $BM02$
                            . . .
                            $BM10$
    
    Execute a module you created.

    This is for you programmers out there.  I have included my .OBJ 
    compilation modules.  You can add your own.  BM stands for "Bus 
    Modules"--because that is what your are doing, plugging modules into a 
    software bus. 

    Let us say you do not like my Voting routine.  You can write your own 
    (in any language that produces Microsoft compatible .OBJ modules) or 
    modify mine to your liking.  Just give it the same name as my voting 
    routine.  Then re-LINK the code. 

    That is good if you do not like one of my modules, or the whole .OBJ 
    is contained in one file.  But if you want to add something completely 
    new.  You use BMxx. Just name your routine BM01, BM02, BM03, etc. 

    The BM routine you design cannot have parameters or make use of global 
    variables (unless it is in Basic). 

    Example: 1. write a GIF viewer routine, name it $BM01$ (eg. FUNCTION 
    BM01), 2. compile it into an .OBJ module, 3. re-LINK the whole program 
    (use LINK.DAT), 4. modify menu $007$: if user hits "G" the command is 
    $BM01$.  Now, whenever you hit "G" at menu 007, it will call YOUR GIF 
    viewer routine (which is named BM01). 

    While this means you will not have to re-compile the Basic portion of 
    the program, you will still need Basic PDS's .LIBs to link it. 

    Otherwise, the BMxx commands do nothing. 

CMDS                    Get Commands From File
CMDS         Get Commands From File                             Difficulty: 4

        Format:    $CMDS _pathname$
    
    Import a text file in lieu of commands.

    This command provides an altervative to creating lots of commands to 
    do something tricky/complex/long. It provides a way to utilize lots of 
    commands without having to create lots of intermediary commands. 

    $_pathname$ refers to a standard text file.  In this file you have 
    menu commands (and their parameters).  When $CMDS$ is executed, it 
    merely inserts this file into the "do next" menu command logic. 

    To fully understand how this command works, you need to understand 
    exactly how the building-block construction theory of how menu 
    commands work.  This was explained earlier, and the knowledge is not 
    needed to use this command. 

    EXAMPLE
    Ŀ
    Each Tuesday you want to FREQ your Hub at 1:154/0 for the  
    latest Nodediff and Fido News.                             
                                                               
    So each Tuesday you login, go to Private Netmail, and do a 
    FREQ entry to 1:154/0 (whatever your Hub/Host is) with     
    NODEDIFF and FNEWS as the magic names.                     
                                                               
    This can be automated with an event set to execute each    
    Tuesday.  Which involves the following three commands:     
      $DFRQ _1:154/0 _NODEDIFF$                                  
      $DFRQ _1:154/0 _FNEWS$                                     
      $NODm _<1:154/0's phone number> _1:154/0$                  
                                                               
    But events only allows a single 4 letter command.          
                                                               
    We could define $Tfrq$ to be:                                
      $DFRQ _1:154/0 _NODEDIFF DFRQ _1:154/0 _FNEWS NODm _etc.$  
    But that's difficult to read.                              
                                                               
    We could define 4 different commands:                      
      $Tfr1: DFRQ _1:154/0 _NODEDIFF$                            
      $Tfr2: DFRQ _1:154/0 _FNEWS$                               
      $Tfr3: NODm _<1:154/0's phone number> _1:154/0$            
      $Tfrq: Tfr1 Tfr2 Tfr3$                                     
                                                               
    A bit easier, but easiest of all is to use $CMDS$.  To do    
    that, we just put:                                         
      $DFRQ _1:154/0 _NODEDIFF$                                  
      $DFRQ _1:154/0 _FNEWS$                                     
      $NODm _<1:154/0's phone number> _1:154/0$                  
    into the file C:\BBS\FREQ1.TXT, and then define $Tfrq$       
    to be:                                                     
      $CMDS _C:\BBS\FREQ1.TXT$                                   
    

    The example shows the positive and negative of this command.  It makes 
    your Categories easier to read, but it hides commands in text files.  
    It reduces the number of commands you need to do something, but it 
    increases the number of files on your disk. 

    $STRT$ and $SHUT$ are good examples for the type of commands which 
    would benefit (in readability) by using a text file.  Rather than 
    having all those $st_1$, $st_2$, $st_A$, etc. commands. 

DOOR                    Execute A Door
DOOR         Execute A Door                                     Difficulty: 4

        Format:    $DOOR _exittype _filetype _xxx$

    Execute (run) a door program.

    Where $xxx$ is a number from 001 to 999 corresponding to the record 
    number in your Doors database. 

    Where $exittype$ is the type of exit from the BBS you wish to do.  
    This field is optional.  Valid entries include: $shell$, $shrink$, and 
    $full$. 

    Where $filetype$ is the type of door-exit information file you wish to 
    produce for the door program.  This field is also optional.  Valid 
    entries include: $doorinfo$, $doorsys$, etc. 

    The software uses both the users Download Minutes, and the Doors'
    maximum minutes allowed.  Using whichever is smaller.  If the users
    used up is Download Minutes for the day, he will not be able to
    access any of the Doors.

    See TECHDOCS.DOC if you want detailed information about the door-exit 
    files. 

    See also:  DOORS

Door                    Execute a Program
Door         Execute a Program                                  Difficulty: 2

        Format:    $Door _pathname$

        Example:   $Door _C:\BBS\LIST.COM_SAMPLE.TXT$

    Execute (run) a program.

    Where $pathname$ is the full drive:path\filename of the program to
    run.  You may pass parameters after the pathname: the software will
    convert any "_" to spaces.

    This is an easier $DOOR$.  It runs a program, but does not create
    door-exit files, or any of the other complex $DOOR$ stuff that one
    finds in the Doors Database.

    This routine will change to the directory in $pathname$ then shell
    to DOS and execute $pathname$.  You may shell (fast) or shrink
    (swap 400k to disk--warning, no drive space checking is done
    first).  To shrink, just specify the filename in SHROOM.YES.

    This option will rarely be used for doors--as they usually require
    information in a door-exit file (such as name, comm port, etc.)
    This command is mainly useful for the sysop to have the software
    execute a program using the menu command system.

    While this may seem like an easy way to execute user doors, it
    must be emphasized that that is not the purpose of this command.
    This command creates no door exit types for doors to read, nor
    does it keep track of Download Minutes and other door limitations.

    EXAMPLE
    Ŀ
    We want to execute some door daily maintenance programs.   
                                                               
    First for Robot Gladiators, and then for NetRunner.        
                                                               
    There are three ways to do it.                             
                                                               
    The first method is to create two separate entries in the  
    Doors Database, then create two $DOOR$ commands to execute   
    these, and finally to make the two new commnads events.    
    This is very tiresome with lots of doors.                  
                                                               
    The second method is to put the executable commands into   
    DAILY.BAT as so:                                           
        cd c:\bbs\doors\robot                                  
        robo.exe -m                                            
        cd c:\bbs\doors\netrun                                 
        maint.exe                                              
    With one Doors Database entry with DAILY.BAT as its        
    executable line, and a new $DOOR$-based command that we can  
    put as an event.
                                                               
    The third way is to take the Doors Database out of the     
    equation.  We just define two commands to contain:         
        Door _c:\bbs\doors\robot\robo.exe_-m                   
        Door c:\bbs\doors\netrun\maint.exe                     
    But this still means creating two commands.  The easiest   
    way is to create DAILY.TXT with the above commands, and a  
    single new command as:  $CMDS _daily.txt$                    
    Thus, when you want to add more doors to this nightly loop,
    you just have to change DAILY.TXT and not worry about the  
    commands.                                                  
    

ENTR                    Wait for [Enter]
ENTR         Wait for [Enter]                                   Difficulty: 2

    This command simply waits for the user to hit [Enter], [Space], 
    timeout, or hang up. 

    It displays absolutely nothing. 

    It's useful for the text displaying commands in which the "hit [enter] 
    to continue" type of thing is already displayed as part of the file. 

    With some commands it is "smart".  Such as the $dANS$, $dTXT$, and stats 
    commands.  When a user hits [Enter] midway through the display, and 
    you have $ENTR$ as the next command to execute, the $ENTR$ will also 
    be skipped. 

ifGP                    User in Group?
ifGP         User in Group?                                     Difficulty: 3

        Format:    $ifGP _group$
    
    If user in group, then skip the next four-letter command.

    With the Group Editor (Sysop's menu) you can create groups of users. 

    With this $ifGP$ command, you can control access to commands according 
    to whether or not the user is in a specific group. 

    $_group$ is usually the number of the group, but can also specify a 
    single word that is unique to the group's name and it will be found 
    correctly. 

    The command itself is pretty simple: if the current caller is in the 
    specified group, then skip a command.  If the current caller is not in 
    the specified group, then we do the next command. 

    The normal way to use this command: $ifGP _group >xxx yyyy$  That is: 
    if the user is not in the specified group, then they get exited to 
    menu $xxx$, otherwise they go ahead and do command $yyyy$. 

    See also:  $GrpE$

ifNU                    Is User New?
ifNU         Is User New?                                       Difficulty: 3

    If user is new then do next 4 letter cmd, else jump it.

    This is another control command.

    If the user is a new user (their first call) then do the next 4 letter 
    command.  If the user is not a new user, then we skip the command. 

    There are lots of things sysop's like to do with new users. Including: 
    displaying additional help, forcing them to post a message, etc.  This 
    command allows you to do whatever you want. 

    Technical note:  Because it relies on their first call, if you use 
    call-back verifcation, remember that the act of calling you back will 
    make it their second call. 

ifSL                    Is SL Less?
ifSL         Is SL Less?                                        Difficulty: 3

        Format:    $ifSL _number _xxx$
    
    If SL is less, then exit to menu.

    Where $number$ is any number from 0 to 32767. 

    Where $xxx$ is any valid 3 letter Menu ID.  This parameter is 
    optional.  It is usally not used, since the menu you usually want to 
    return to is usally the menu you just came from (which is what happens 
    if this field is not specified).

    This is a menu control command.  It will check the current callers 
    Security Level value, and if below $number$ it will execute a $>xxx$ 
    and go to that menu. 

    If the callers Security Level is greater than, or equal to this value, 
    then the $_xxx$ is skipped. 

    The $_xxx$ is optional.  If it is not there, then if the callers SL is 
    below $number$ then we just exit back to the previous menu. 

    EXAMPLE
    Ŀ
    If user's security level value is less than 10 then goto   
    menu "abc", otherwise display the ANSI file "hiho.ans" and 
    goto menu "abc".                                           
                                                               
    First, define the command $hiho$ as:                         
                                                               
                 $dANS c:\hiho.ans Paus$                         
                                                               
    Then, define the command $if01$ as:                          
                                                               
                 $ifSL _10 _abc$                                 
                                                               
    Together, they do the job:  $if01 hiho$                      
                                                               
    Of course, the following will also do the job:             
                                                               
                 $ifSL _10 _abc hiho$                            
         or      $ifSL _10 _abc dANS c:\hiho.ans Paus$           
                                                               
    Just a question of how complex you want to make the        
    command.                                                   
    
    EXAMPLE
    Ŀ
    Show nothing to level 5 users, show "ansi1.ans" to level   
    6 through 19 users, show "ansi2.ans" to level 20 to 99     
    users and show "ansi3.ans" to users of level 100 and         
    above.                                                     
                                                               
    We don't include $_xxx$ because we just return to our last   
    menu.                                                      
                                                               
    In long form:                                              
                                                               
       $ifSL _6 dANS c:\ansi1.ans Paus$                          
       $ifSL _20 dANS c:\ansi2.ans Paus$                         
       $ifSL _100 dANS c:\ansi3.ans Paus$                        
                                                               
    Or if you define $ans1$, $ans2$, and $ans3$ to do the            
    $dANS$ part:                                                 
                                                               
                $ans1:  dANS c:\ansi1.ans Paus$                  
                $ans2:  dANS c:\ansi2.ans Paus$                  
                $ans3:  dANS c:\ansi3.ans Paus$                  
                                                               
                $ifSL _6 ans1 ifSL _20 ans2 ifSL _100 ans3$      
                                                               
    What occurs?  Users with SL's less than six are exited     
    back to the menu.  Those remaining see "ansi1.ans".  Then  
    those users with SL's less than 20 are exited back to the  
    menu.  Those remaining see "ansi2.ans".  Then those users  
    with SL's less than 100 are exited back to the menu.       
    Finally those remaining see "ansi3.ans".                   
                                                               
    In other words.  Not only doesn't it do what we wanted,    
    but it does something nearly useless.                      
                                                               
    This example was done to remind you of the power of        
    "Min SL" and "Max SL" in the menu commands themselves.     
                                                               
    Instead of using $ifSL$.  You should make 3 menu commands    
    with the same hot-key.  Using $ans1$, $ans2$, and              
    $ans3$ from above, you would create the menu commands as     
    such:                                                      
                                                               
              $Command   Min SL   Max SL$                        
               $ans1$       6       19                           
               $ans2$      20       99                           
               $ans3$     100     32767                          
    

ifSP                    User call speed checker
ifSP         User call speed checker                            Difficulty: 3

        Format:    $ifSP _number$

        Example:   $ifSP _800 >001 DorX$
    
    If user's CPS rate is greater $number$ then skip the next four-letter
    command.

    The CPS rate comes from the CONNECT strings database.  "800" is a good
    number for a 9600 baud limiting command, for example.

    In the above example: if callers CPS rate is greater than 800 we skip
    the $>001$ and jump to the $DorX$, if the callers CPS rate is less than
    or equal to 800, we execute the $>001$.  Or more simply: if the caller
    is at least 9600 baud, we let them run door X, otherwise we return them
    to the main menu.

ifYN                    Ask [y/N]
ifYN         Ask [y/N]                                          Difficulty: 3
    
    Ask Y/N, if Yes then skip the next command.

    This is another control command.

    This command displays "? [y/N]", then waits for the caller to type 
    "Y", "N", "[Enter]", hang up, or time-out. 

    If "Y" is typed, we skip ahead past the next 4 letter command.  
    Anything else, and we execute the very next command. 

    Usually you do a dLIN or dANS before a $ifYN$ to display the question. 

    EXAMPLE
    Ŀ
    The Goodbye menu command could be rewritten:               
                                                               
      in LINES.TXT, define line #251:                          
                             "Are you sure you want to leave"  
                                                               
      then define $GBy2$ as: $dLIN _251 ifYN >001 GBye$            
                                                               
      Then replace the $GBye$ in the Main Menu with $GBy2$.        
                                                               
    When "G" is hit: "Are you sure you want to leave"          
                and: "? [y/N"                                  
    are displayed.  And it waits for an answer.                
    If "Y" is typed it jumps and does $GBye$.  Anything else     
    and it doesn't jump, but instead executes $>001$ which       
    returns back to the main menu.                             
    

KILL                    Kill a File Anywhere
KILL         Kill a File Anywhere

        Format:    $KILL _pathname$

    This command will allow you to delete a pre-known file.  The file
    need not already exist for this to make the attempt.

    This is mainly useful for cleanup work after some other command
    (example: when exited to run another program) created something.

LANG                    Change Language/Style
LANG         Change Language/Style                              Difficulty: 5

        Format:    $LANG _xxx$

    This command lets you change the language/style a user uses. 

    $_xxx$ is any of the language/styles you have on-line.  $ENG$ being 
    the normal, but it could be any of the others in your Language/Styles 
    database. 

    It's useful for two things: creating your own "select a 
    language/style" menu.  Or for changing to a different style based on 
    something like the user's SL, or a question you asked, etc. 

    It changes their record, so if the log out and log in, this will be 
    still in use. 

    See also:  LANGUAGES

MENU                    Switch Menu System
MENU         Switch Menu System                                 Difficulty: 7
    
        Format:    $MENU _path$
    
    To change to that menu (sub) system.

    This is a control command that lets you move between different "menu 
    systems". 

    A menu system (also known as a menu sub system) is just a bunch of 
    menus put together in their own directory.  For example, the sysop 
    menus are stored separately from the other menus because it makes 
    things more orderly. 

    A menu (sub) system directory consists of three things: a MENUS.DAT, a 
    BBSCMDS.DAT, and a bunch of .ANS files.  The .ANS files are the ANSI's 
    that the defined menus display. 

    In McEditor, you switch between menu systems using the "L" command. 

    To create a new menu system, make a directory someplace, and then copy 
    the MENUS.DAT, BBSCMDS.DAT, and maybe .ANS files from another menu 
    system.  Then go into McEditor, do an "L" and change/arrange the new 
    menu system to do what you want. 

    This $MENU$ command is what you use to move between menu systems. 

    The $_path$ is just the path to the menu systems' files. 

    When you move from one menu system to another, to get back to where 
    you left you have to do another $MENU$ command.  For example: to 
    access the sysop menu system it's $MENU _c:\bbs\global\sysop$ but to 
    return back to our main/primary menu system we have to do a $MENU 
    _c:\bbs\global\system$. 

    Within each menu system, the menu's are distinct from other menu 
    systems.  You can have the same menu names for example.  For $>xxx$ 
    goto menu orders, the $xxx$ must be available in the currently running 
    menu system, otherwise it's declared not found. 

    This is a very powerful command, but it works a lot like menus: 
    instead of moving between menu's, however, we're moving between groups 
    of menus. 

    The category commands are common to all menus in all menu systems.  
    This provides us with the power and flexibility of multiple 
    languages/styles--since for each new language/style we only have to 
    change the .ANS for each menu and the SpecialFX text--we don't need to 
    change each command, or even the $>xxx$ commands (because we use the 
    same Menu ID's for each language/style menu sub system). 

    Technical note:  There is, however, one difference between the 
    main/normal menu system and other menu systems (that's why they're 
    called menu sub systems).  When changing to a different language/style 
    (via $LANG$, $LngS$, etc.) the software will reset you back into the 
    top/main/normal menu system if you were in a menu sub system.  For the 
    way the software is set up now, you would have to put a language/style 
    change command in the sysop menu system for this to be invoked.  That 
    is, the sysop menu system begins a "second tier" of commands: you were 
    in the main ones, then did a $MENU _c:\bbs\global\sysop$.  Which is 
    different than, say, simply switching languages at the main level--
    where it just switches to another main level but in a different 
    language.  Sub-menu's are maintained even when doing full-exit 
    dooring, however. 

Paus                    Paused
Paus         Paused                                             Difficulty: 2

    This command displays "**[Paused]**" and waits for the user to hit 
    [Enter] or [Space]. 

    This command is used internally in a lot of places.  Yet, many 
    commands, particularly those that display information screens, have 
    been designed without internal "Paused" calls, so you can decide 
    whether you want to pause at that point, or display some additional 
    information on that same screen before doing a "Paused".  Example: 
    maybe you want to send an ANSI screen of data to fill up the bottom 
    part of the screen when "Show Last Few Callers" is using up the top 
    part at login. 

    The text for the paused is in LINES.TXT line 3. 

PORT                    Switch to a comm port
PORT         Switch to a comm port                              Difficulty: 3

        Format:    $PORT _commport$
    
        Example:   $PORT _0$
                   $LogN Welc GBye$
                   $PORT _1$

    This command temporarily changes the comm port setting to allow you
    to do commands (such as events or <ctrl>Fx) that normally couldn't
    be done unless someone really was logged in.

    Setting comm port = 0 tells the software to ignore the carrier.
    Otherwise, when executing most commands, if the carrier is lost/not
    detected, the software exits that command.

Wait                    Pause
Wait         Pause                                              Difficulty: 2

    This command will cause a 1 second pause. 

    For menu flow control.  Perhaps after a $dLIN$ call or something. 

    Nothing is displayed. 

Sysop cmds              Commands in the Sysop Menus
Sysop cmds              Commands in the Sysop Menus

    These are all sysop commands.  They are all also in the sysop menus.  
    I recommend you read through them to get an idea of the various sysop 
    commands, but there is no need to pay too close attention to them.  
    They are here in case you run into troubles/questions while using the 
    command. 

    Most of the registered commands are <sysop> commands as well. They 
    have their own documentation as part of the registered package. 

0Vot                    Restart a Voting Question
0Vot         Restart a Voting Question

    This command will, for a selected voting question, reset the answers' 
    field in each user record, to zero.  Zero is the "user has not 
    answered question yet" state. 

    This command is to be used when you; rework a current question, 
    replace a current question, or simply want to hassle your users by 
    having them re-vote on a question. 

    Technical note:  The old totals for this question are not reset, these 
    will be reset to zero automatically the next time you $Update Stats$. 

Desc                    Import Descriptions
Desc         Import Descriptions

    This command will read in a text file containing file names and 
    descriptions, and convert it to FILELIST (JDR_BBS) format. 

    It is useful for converting FILES.BBS type files, or for adding a lot 
    of descriptions at once. 

    The new entries are appended to the end of the current FILELIST file 
    if they do not already exist.  If they do exist, they will be updated 
    with the new description. 

    You will be asked for an area.  This does not matter if the files 
    already exist, but for new files you should specify the area to which 
    most of the descriptions apply (to reduce automatic "file area 
    corrected" corrections). 

    File names in the text file must occupy the first 12 characters.

    All the following are valid:  $filename.ext$ <anything follows>
                                  $filename ext$ <anything follows>
                                  $file.ext    $ <anything follows>
                                  $file ext    $ <anything follows>
                                  $file     ext$ <anything follows>
                                  $file    .ext$ <anything follows>

    The file to be read in is not deleted. 

DOSx                    Shell to DOS
DOSx         Shell to DOS

    Does a simple shell to DOS.  No different from <alt>s except that it 
    is a menu command, exits with redirection orders:
    
        $COMMAND.COM > COMx < COMx$
    
    so that you can operate something in DOS remotely. 

    For additional security beyond a menu command security level 
    restriction, use the $PSWD$ command to ask for a password. 

File                    Edit File Information
File         Edit File Information

    Use to modify the fields of an individual active file's record. 

    The Attributes are: 

        $1$    ON if file is deleted.
        $2$    ON if file is free.
        $3$    ON if file in unvalidated.
        $6$    ON if file is invisible.
        $7$    ON if file is <incomplete>.
        $8$    ON if uploader shouldn't get per-DL UL credit.
        $9$    ON if file is free only to 9600+ baud callers.

    Entering a $1$ for an attribute will delete the file. 

    If you set $3$ OFF, then you will be prompted for whether or not to 
    credit the uploader for the upload (give them minutes and bytes).  You 
    can give a user multiple credit for an upload by first turning this 
    OFF, then ON, then OFF again, etc. 

    $8$ only matters if you generally (in Settings) give a percentage of 
    extra credit in bytes and/or minutes to the uploader of files each 
    time the file is downloaded. 

    Entering a new description clears that file's <incomplete> and 
    invisible attributes. 

    If you give it a different File Area value, the software will attempt 
    to move the file to the new area. 

    You can enter a maximum password of 30 characters.  The password 
    itself is stored as a checksum number--it identifies correct and wrong 
    passwords, but does not use up so much space nor make the password 
    available for anyone to see. 

    If you want to protect your passworded, or invisible, files from 
    BiModem, you must use BiModem's password system also.  This involves 
    running BiConfig and specifying a password file (such as 
    C:\BBS\BIPASS.PTH).  Then using a text editor to edit this file.  This 
    file is made up of individual lines following the format: 
    pathname,password (example: C:\BBS\JDR\TEST.ZIP,MYPASS). 

    Internal password handling allows for multi-word passwords and just 
    about any typable character.  However, BiModem may have some 
    restrictions on size, words, or characters.  If interested in more 
    than a simple password, you should also check BiModem's documentation. 

    See also:  SETTINGS

GHiF                    Change HiFilePtr's
GHiF         Change HiFilePtr's

    This command lets you change all the HiFilePtr values for each file in 
    a file area. 

    Each file has a "HiFilePtr" value.  It is the way the software is able 
    to tell users that something is new.  The software merely compares the 
    HiFilePtr value of the file, with the value of the user's last call. 

    This command also updates the file area's own HiFilePtr value as well.

GrpE                    Group Editor
GrpE         Group Editor

    The $Group Editor$ allows you to add/remove groups, and add/remove
    users to/from groups. 

    When it asks for which group to work with, you may enter a group 
    number, or a string that can be found in the desired group's name. 

    The $ifGP$ menu command uses these groups.  This allows you to limit 
    the access of any menu command by group. 

    You may also limit access to individual files by group. 

    See also:  $ifGP$, $File$

Init                    Re-Initialize #NEWUSER
Init         Re-Initialize #NEWUSER

    Re-Initialize #NEWUSER record to default settings.

    This command zeros out all the fields of the first record in USERS.  
    This is #NEWUSER from which all other new users get their initial 
    record information from.  The values are re-set to that which they 
    were when you installed this software. 

    If you wish to modify the new user record any farther, use $User 
    Maintenance$ (<alt>u).  Example, if you were to put 100,000 into the 
    uploaded bytes field, then all new users would be given an initial 
    100,000 bytes of upload credit. 

    Technical note:  Any message areas that have the LOCK attribute will 
    also be automatically locked out of.  However, all message areas are 
    toggled to ON, so if you wish to start off new users with some message 
    areas toggled to OFF, you will need to re-run $Toggle Message Areas$ 
    ($Aset$) for all users. 

    This is not a general "restart #NEWUSER"--but a "re-set #NEWUSER" to 
    the setting I have hardcoded.  Use this when you really blunder your 
    #NEWUSER set up and want to start fresh. 

ipkt                    Import Fido Packet
ipkt         Import Fido Packet
    
    This command will import a loose Fido-style packet of messages. 

    Normally loose packets don't exist.  If you operate your BBS "close to 
    the ground" (only a couple megs free) then you may get to use this 
    command if, while importing a large net mail packet, the system runs 
    out of drive space (the BBS will shut down telling you what to do). 

    Fido-style packets can be recognized by their ".PKT" extension, or 
    with ".MO0, .TU0, TU1, WE1, etc." type of extensions.  The first eight 
    characters look just like hex codes. 

    See also:  NET_MAIL.DOC

IT:F                    Integrity Test: Files
IT:F         Integrity Test: Files

    This can be an event or a menu command. 

    It will check out your FILELIST file and see if any of the active 
    files on-line have parts of their records bad. 

    Any errors found are displayed on the screen and recorded in 
    ERRORS.LOG. 

IT:M                    Integrity Test: Messages
IT:M         Integrity Test: Messages

    This may be a menu command or an event. 

    It will check out your MESSAGES.HDR file and see if any of the active 
    messages have parts of their records bad. 

    Any errors found are displayed on the screen and recorded in 
    ERRORS.LOG. 

    You may use the reading messages "@" (header edit) command to fix any 
    problems. 

    See also:  READING MESSAGES 

IT:U                    Integrity Test: Users
IT:U         Integrity Test: Users

    This must be a menu command, not an event. 

    It will check out your USERS file and see if any of the active users 
    have parts of their records bad. 

    If a record is particularly bad (such as having a user name that could 
    not be entered by you) it will ask you if you want to delete that 
    user. 

    Any errors found are displayed on the screen and recorded in 
    ERRORS.LOG. 

    You can then use $User Maintenance$ to clean up the bad parts of those 
    records. 

KilE                    Kill Errors Log
KilE         Kill Errors Log

    This is the sysop menu, Global: Logs: Delete Errors Log command.

KilC                    Kill Callers Log
KilC         Kill Callers Log

    This is the sysop menu, Global: Logs: Delete Callers Log command.

LstA                    List Indexes
LstA         List Indexes
    
    List contents of the file and user indexes.

    Useful for finding out if the indexes became corrupt. 

LstE                    List Errors Log
LstE         List Errors Log

    This is the sysop menu, Global: Logs: List Errors Log command.

    It simply displays the contents of the BBS's errors log.

LUSL                    List Users by Security Level
LUSL         List Users by Security Level

    List active users by Security Level, highlighting those who have not
    called within the last x number of days. 

    You can enter either a single SL, or a "x to y" range.  You cannot 
    enter a "-'ve to -'ve" SL range, the nearest allowable equivalent is 
    "-'ve to 0". 

    Users whose sysop note field is not blank will have "n" shown also. 

    Hitting "-" will restart the listing, in the opposite alphabetical 
    order (A-Z or Z-A, depending on what it was doing.) 

    The #NEWUSER record is shown. 

Mass                    Mass Mailer
Mass         Mass Mailer

    Send a message to all users of a certain Security Level value range. 

    You must first create the message and store it in a message file with 
    the entering messages "%" command.  You will be asked for the message 
    file number the message was stored as. 

    The software then sends a message, containing only $%%%xxx$ (where 
    $xxx$ is the message file number) to each user in the Security Level 
    value range you specified.  Because there is so little actual body 
    text, the messages are extremely efficient. 

    You may specify whether the message is to originate from you or the 
    AI.  If from you, then you will be asked for a subject. 

MCEd                    McEditor
MCEd         McEditor

    Menu command editor.

    This is what you use to edit the menu command's and category commands 
    that make up the menu system. 

    See also:  MENU SYSTEM 

MHlp                    McEditor Command Helper--full screen version.
MHlp         McEditor Command Helper--full screen version.

    This is what you are using now.

    $MHlp$ is exactly the same as the "H" command from within McEditor
    except that it uses the whole screen.

    By having it also available as a command, we are able to access it
    using the <ctrl>Fx system (namely, <ctrl>F3).

News                    Make News
News         Make News

    This allows you to add text to the end of the latest news file, or 
    create a new news file. 

    If you put in a news item, then re-run this and tack on another news 
    item.  The additional news item appears on the very next line after 
    that first item.  So, when adding additional items, put a space on the 
    first line (line 1) of the new item to add a separator line in the 
    news file if you want to have the items separated. 

    It is just like messages. 

    Just hitting return at line 1 when there is no news file will abort 
    this, if there is a news file a single blank line will be appended to 
    its end. 

    News files use the file names NEWS.001 to NEWS.999.  When creating a 
    new news file, the new file is given the next higher number of the 
    latest news file (if latest is .002 then new one is .003) or .001 if 
    there are no current news files. 

    See also:  $Dnws$

Pset                    Alter Pathnames
Pset         Alter Pathnames
    
    Display and alter the various system pathnames.

    The docs for this is on-line.

    See also: PATHNAMES

RemF                    Remove a File
RemF         Remove a File

    Deletes the file, updates ALSO_GOT.LST with the filename and 
    description, and removes any reviews the file has.  This is the proper 
    way to remove files formerly available for downloading. 

    Technical note:  Only the first occurrence of the file is deleted.  It 
    checks all directories in the order they were configured (which 
    usually means uploads first--preferable).  Example: if a user uploads 
    a file to the uploads directory that has the same name as something in 
    another downloadable directory, then you can safely delete it without 
    affecting the one in the other directory.  However, any reviews will 
    be deleted, and both descriptions--so you will need to re-do the 
    description. 

    <incomplete> files do not have their entry subsequently put into 
    ALSO_GOT.LST. 

    Entries are removed from all the reviews files--not just the reviews 
    file for that area. 

    Technical note:  Should you accidentally delete a file, and you are at 
    the console, do an immediate <alt>x.  Then run your undelete or 
    unerase program (I keep mine on a utilities floppy).  The longer you 
    wait, the higher the probability that something will overwrite the 
    file. 

    If you type a wildcard character ("*" or "?") then auto-name-completion
    is turned off from that point on.  This command also will act a bit
    differently: it will go through all the file entries and try to find a
    wildcard match for what you typed.  This can be used to delete all
    files like DOOM-1.ZIP DOOM-2.ZIP DOOM-3.ZIP with just DOOM*.*, but what
    it is really useful for is deleteing duplicate entries for CD drives.
    Some CD's have the same files in every dir, and this is the only way to
    get rid of them (deleting one at a time doesn't work).

    See also:  $KilF$, $UPen$

RemL                    Remove Line of Text
RemL         Remove Line of Text

    Remove a line in any text file.

    Used for removing reviews, requests, etc. 

    It initially brings up a menu of all the files in BBS\GLOBAL\TEXT, but 
    you can select any file anywhere. 

    Normal operation has it searching for any line within a file that 
    contains a search string.  With File Reviews and BBS Reviews, however, 
    it returns with the whole review. 

    You are always prompted to confirm the removal of the text. 

    The software itself, will automatically remove file reviews when you 
    delete the file from the on-line file areas. 

SLog                    Search Callers Log
SLog         Search Callers Log

    Searches the callers log (CALLERS.LOG) for a matching string.
    Returning with both the entries found and the caller to whom those
    entries belong. 

    Mainly useful for finding out who has been downloading a file(s). 

    For instance, just before I delete a large program--made up of a few 
    large files--I run this with a common part of the file names.  This 
    allows me to make sure all those who were trying to download the 
    program did indeed get all the files (if they did not then I wait a 
    couple days before deleting the files they have not yet downloaded). 

Sset                    Change Settings
Sset         Change Settings

    Alter and display the various system settings.
    
    The docs for this are on-line.
    
    See also: SETTINGS

Stat                    Update Statistics
Stat         Update Statistics

    Update the system statistics by re-calculating all the stats. 

    This is usually run as an event each night.  Although I myself just 
    have it as a menu command and do it once a month (the rankings and 
    numbers do not change that significantly that fast). 

    This also updates/repairs any voting results.  Since voting tallies 
    are only done for active users, if you deleted a user who had voted, 
    this will remove their vote from the voting question's tallies. 

    When you change (via $Change Settings$) the number of users to appear 
    in the rankings screens, or when you change the number of security 
    levels, you should run this immediately or you will see a lot of 
    nonsense when you display the statistics for security levels or 
    rankings. 

    For the "worst stats" screens, zero entries are ignored--since most 
    users will have these.  You can also define the minimum SL and number 
    of logons that users must have to get onto these lists.  For instance, 
    I have it set up so that a user needs at least 3 logons to make it 
    onto these worst stats screens--anything less and they are probably 
    soon to be off your BBS anyways. 

    Until you get enough users, the worst stats screens might appear odd 
    (in the number fields). 

    See also: SETTINGS

SysD                    Download Any File
SysD         Download Any File

    Download a file that is in any directory.

    You must enter the full drive:path\filename (pathname) of the file you 
    wish to download. 

    The transfer is done by shelling to DOS and executing the user's 
    protocol selection (so do not make it a <ctrl>Fx command). 

    No statistics are affected.

SysU                    Upload a File to Any Directory
SysU         Upload File to Any Directory

    You must enter the full drive:path\filename (pathname) to locate the 
    file(s) you wish to upload.  If uploading to a downloads directory, it 
    will not automatically ask you for a description. 

    The transfer is done by shelling to DOS and executing the user's 
    protocol selection (so do not make it a <ctrl>Fx command). 

    No statistics are affected.

Togs                    System/Sysop Toggles
Togs         System/Sysop Toggles

    Various system toggle-able options.

    The docs for this are on-line.

    See also:  TOGGLES

UPen                    Delete File and Penalize Uploader
UPen         Delete File and Penalize Uploader

    Remove a file and penalize a user with "double bytes off" for the size 
    of the file.  Also sends them a message saying what happened. 

    Uploads are reduced by one.  Minute-credits are reduced by a 
    multiplier based on the amount normally given for the file size (which 
    is based on 2400 baud transfer time--they could lose twice if they 
    forgot to leave a description).  Bytes off are based on a multiplier 
    that you can configure. 

    If you require uploads to be validated before the uploader gets 
    credit, or the file is <incomplete>, then the uploader will lose twice 
    what a user who got credit would lose. 

    There is a Toggle:  to control the sending of the message. 

    There is no single message.  To change the message, change the various 
    LINES.TXT lines that contain the text of the message. 

    See also: $RemF$, SETTINGS, LINES.TXT

User                    Edit User Information
User         Edit User Information

    $User Maintenance$.  Modify the various fields of a user's record 

    This command can be called from anywhere with <alt>u--but you should 
    only do it at the waiting-for-caller screen or a menu.  There is a 
    command to access it from when reading messages as well. 

    Only active users can be modified.  To create a new user, you need to 
    do a login as that user.  To modify a deleted user you need to first 
    undelete that user. 

    If you modify the user's elapsed time field, remember that this is 
    only for today, it becomes zero the next day the user calls. 

    For the upload bytes and download bytes fields, you can enter "-xxxx", 
    "xxxx", and "+xxxx".  Where "xxxx" is any number.  "xxxx" changes what 
    is there.  "+xxxx" adds "xxxx" to what is there, and "-xxxx" subtracts 
    from what is there.  Example: if the user has 250,000 and you type +50 
    they will then have 250,050. 

    For minute-credit and minute-megabyte fields, you may enter positive 
    (eg. 5, 10, 100) or negative (eg. -5, -10, -100) values.  These are 
    the only fields for which negative values are allowed. 

    For dates, you must use the MM/DD/YY format. 
                
    Attributes:
    
        1    ON if user is deleted.
        2    ON if user is locked out.
        5    ON if should trap user's chats.
        6    ON if should trap user's sessions.
        8    ON if user can't change their language/style choice. For 
                instance, if you want a weeks worth of punishment by 
                forcing them to use "AAE". 
        9    ON if should beep the console when this user logs on. 
        0    ON if user has not yet passed Peer Review. This should be set 
                ON in #NEWUSER if you want all new users to go through 
                Peer Review. 
        A    ON if they should not be given per-DL UL credit on the files 
                they uploaded.  This only applies if you credit uploaders 
                a percentage each time the file is downloaded. 
        B    ON if user can, but doesn't want to, review peer's. For those 
                users who do not like the idea, but are good enough to 
                rate that higher SL. 
        C    ON if user has not passed Phone verification. When ON, a user 
                will be asked to go through call-back (phone) verification 
                (at whatever point the command RING is executed in your 
                login loop).  To force all new users to go through call-
                back verification, set ON in #NEWUSER. 
        D    ON if user should be forced to change their password after 
                successfully passing call-back/phone verification. 
        E    ON if user's uploads can skip being validated.  That is, any 
                uploads by this user are immediately validated.  This only 
                matters if you have "all uploads require validation" ON. 
        F    ON if all downloading they do is to be free.  This is useful 
                as a subscription setting. 

    Hit [Enter] alone at any of the fields to not change it. 

    If a user has failed Peer Review, and you wish to make a note in the 
    Sysop Note field, then keep the first 8 positions blank--so the 
    software does not get confused and think the user is still undergoing 
    Peer Review. 

    For "Logons Until Password Change", use 0, 1, or 2-255.  0 turns 
    forcing a password change off.  1 forces a password change at the next 
    logon.  2-255 will force a change after that many logons. 

    When you delete a user, the software will also delete the user's Peer 
    Review if they are undergoing that (it handles it just as if the user 
    passed or failed, moving the text to DEL_MSGS.TXT), and it deletes any 
    remaining Private messages in any private message area TO: the user. 

ValF                    Validate File
ValF         Validate File

    This is a quicky way of validating a file.

    You do the exact same thing by going into File Maintenance and 
    clearing a file's Attribute 3. 

    This simply asks for a file name.  If the file is unvalidated it will 
    validate it (clear Attribute 3) and give the uploader the same credit 
    they would have gotten had the "all uploads are unvalidated" toggle 
    been off. 

    If a file's description is less than three characters, it will not 
    give them minute-credits credit for the upload.  The uploader can get 
    these credits by using $Add A Review$ to give the file a proper 
    description. 

    See also:  $LUnV$, $ARvw$

Zusr                    Undelete Users
Zusr         Undelete Users

    You are presented with a paged listing of all the deleted users, from 
    which you may select to undelete a user. 

Created Commands        Sample Commands
Created Commands        Sample Commands

    These are the commands I pre-created to stuff for the sample menus.

    The menu command system is a building block system.  You pile commands 
    on top of each other forming new commands.  Below is a list of the 
    commands I created for the BBS interface as it is set up now.  They 
    are all in $Created Cmds 1$, $Created Cmds 2$, and $Created Cmds 3$.  
    Feel free to do with these whatever you want. 

    Example:  $+net$                (the new, created, command)
         is:  $SelM _B75 >012$      (commands used to create it)
    
    Like I say, a building-block system.  But not a script language.  
    $SelM _B75$ is one command.  $>012$ is another command.  This example 
    just puts them in a new command--so we can move around and work with 
    $+net$ rather than the bulky $SelM _B75 >012$ (too bulky, I might add, 
    for menu commands--which only allow 4 characters). 

+net
+net

        Created from:    $SelM _B75 >012$

    $SelM _B75$    Ask for which (net) message area to change to,
    $>012$         then goto net menu. 

Ask1
Ask1

        Created from:    $AnsQ _001$

    Ask the questions for questionnaire #1. 

BBSX
BBSX

        Created from:    $ifSL _20 Revw$

    $ifSL _20$    If user's SL is less than 20 then return to the menu,
    $Revw$        else access the BBS review system.

BiMx
BiMx

        Created from:    $ifSL _10 BiMd$

    $ifSL _10$    If user's SL is less than 10 then return to the menu,
    $BiMd$        else do BiModem transfer.

Bsts
Bsts

        Created from:    $Sts1 Paus Sts2 Paus Sts3 Paus Sts4 Paus Sts5$
                         $Paus Sts6 Paus$

    Show each of the internal "best users" screens, followed each by a 
    "Paused". 

Dir1
Dir1

        Created from:    $DirV _D02$

    Show musical quotes Directry (#02).

Dir2
Dir2

        Created from:    $DirV _D03$

    Show ANSI's Directry (#03).

Dir3
Dir3

        Created from:    $DirV _D01$

    Show uprotects Directry (#01).

Dor1
Dor1

        Created from:    $DOOR _shrink _002$

    Shell-to-DOS to execute a door.  But swap to disk first. 
    Then run the .GIF viewer (#002). 

Dor2
Dor2

        Created from:    $DOOR _shell _001$

    Shell-to-DOS to execute a door.

    With SHORT.TXT, LINES.TXT, PRG_BLKS.TXT, TXT_BLKS.TXT, and 
    DB_BLKS.TXT, you must do a full exit to edit these.  Don't use this 
    shell method to edit them. 

Ent1
Ent1

        Created from:    $Eany _001$

    Leave a message [Eany] in the Private Mail area, #001, to another 
    user. 

Ent2
Ent2

        Created from:    $Eany _002$

    Leave a message [Eany] in message area #2.

Ent3
Ent3

        Created from:    $Eany _003$

    Leave a message [Eany] in message area #3.

FdBk
FdBk

        Created from:    $Esys _001$

    Feedback.  Send a private message to sysop of the Private Mail area. 

GSYS
GSYS

        Created from:    $MENU _C:\bbs\global\sysop\ >S02$

    $MENU _etc.$    Go to the sysop menu sub system,
    $>S02$          and in this menu system, we want to begin at Menu
                  ID $S02$. 

JDR@
JDR@

        Created from:    $dBLK _B63 Paus$

    $dBLK _B63$    Show the text in TXT_BLKS.TXT block number 63,
    $Paus$         then do a "Paused". 

Job1
Job1

        Created from:    $ifSL _20 Jobx$

    $ifSL _20$    If user's SL is less than 20 then return to the menu,
    $Jobx$        else access the skills database. 

L&D1
L&D1

        Created from:    $ifSL _10 L&Dx$

    $ifSL _10$    If user's SL is less than 10 then return to the menu,
    $L&Dx$        else modify L&D values. 

Lasx
Lasx

        Created from:    $Last Paus$

    $Last$    Show last few callers,
    $Paus$    then do a "Paused". 

Msts
Msts

        Created from:    $USAs dANS _c:\bbs\node???\***\top5.ans ENTR$
                         $StsT Paus$

    $USAs$          Show the breakdown by states stats screen,
    $dANS _etc.$    then display the top5 stats screen,
    $ENTR$          then wait for the user to hit [Enter],
    $StsT$          then display the internal total stats screen,
    $Paus$          and finally do a "Paused". 

Pro1
Pro1

        Created from:    $dANS _c:\bbs\node???\***\profile1.ans Paus$

    Show profile screen 1.
    
    $dANS _etc.$    Display the ANSI,
    $Paus$          then do a "Paused". 
    
Pro2
Pro2

        Created from:    $dANS _c:\bbs\node???\***\profile2.ans Paus$

    Show profile screen 2.

    $dANS _etc.$    Display the ANSI,
    $Paus$          then do a "Paused". 

Prof
Prof

        Created from:    $Pro1 Pro2 ProA Paus ProB Paus$

    Profile of the current user.

    $Pro1$    Show profile screen 1,
    $Pro2$    then show profile screen 2,
    $ProA$    then show profile averages screen,
    $Paus$    then do a "Paused",
    $ProB$    then show profile message areas screen,
    $Paus$    then do a "Paused". 

ProX
ProX

        Created from:    $Pro0 Paus$

    $Pro0$    Show profile of another user,
    $Paus$    then Paused. 

Rd01
Rd01

        Created from:    $Rany _001$

    Read messages in Private Mail area (#001).

Rd02
Rd02

        Created from:    $Rany _002$

    Read messages in message area #2 (#002).

Rd03
Rd03

        Created from:    $Rany _003$

    Read messages in message area #3 (#003).

RSYS
RSYS

        Created from:    $MENU _C:\bbs\node???\***\ >001$

    $MENU _etc.$    Return to the main/primary menu system,
    $>001#          and goto Menu ID $001$.
    
    Used when returning from the sysop menu system. 

Scn1
Scn1

        Created from:    $Sany _001$

    List the messages in the Private Messages area (#001). 

Scn2
Scn2

        Created from:    $Sany _002$

    List the messages in message area #2 (#002). 

Scn3
Scn3

        Created from:    $Sany _003$

    List the messages in message area #3 (#003).

Sel2
Sel2

        Created from:    $SelM _B75$

    Bring up a quick selection menu for the NetMail areas (which are
    areas 004 and 005, and TXT_BLKS.TXT block #75 = 004005) to switch
    to. 

SHUT
SHUT

        Created from:    $st_1 st_A >sht$

    $st_1$    Display the BBS's logo,
    $st_A$    then login the user,
    $>sht$    and then go to the shuttle menu. 

    If you want a shuttle menu, this would be the command you have in 
    $Change Settings$ for "First Command" rather than $STRT$. 

    I ask for the user's name before the shuttle menu because some of the 
    shuttle commands require that name.  To bring up the shuttle menu 
    first, just adjust the commands that require names by putting a $LogN$ 
    in front of each of them. 

Shut
Shut

        Created from:    $Spwd st_B Call Dnws Lasx st_2 Vot1 st_3 PRvw$
                         $Asst LUnV >001$

    Actually logon from the shuttle menu.
    
    $Spwd$    First we ask for the shuttle password,
    $st_B$    then we display the welcome and show new mail, 
    $Call$    then we do call-back verification if required,
    $Dnws$    then any BBS news is displayed,
    $Lasx$    then the last few callers are shown, 
    $st_2$    then if the user is less than level 10, then are exited
              to the main menu. 

    The rest just follows the same as $STRT$.

Shw1
Shw1

        Created from:    $ShwQ _001$

    Show the answers to questionnaire number 1. 

st_1
st_1

        Created from:    $dANS _c:\bbs\node???\logo.ans ENTR$

    $dANS _etc.$    Display the BBS logo,
    $ENTR$          and wait for the caller to press [Enter]. 

st_2
st_2

        Created from:    $ifSL _10 _001$

    If user's SL is less than 10, then exit to menu id $001$ (main menu). 

st_3
st_3

        Created from:    $ifSL _20 _001$

    If user's SL is less than 20, then exit to menu ID $001$ (main menu). 

st_A
st_A

        Created from:    $dANS _c:\bbs\node???\login.ans LogN$

    $dANS _etc.$    Display the login ANSI,
    $LogN$          then get the user's name and other info. 

st_B
st_B

        Created from:    $dANS _c:\bbs\node???\welcome.ans Welc$

    $dANS _etc.$    Display the welcome ANSI,
    $Welc$          then display the messages waiting for the user. 

STRT
STRT

        Created from:    $st_1 st_A st_B Call Dnws Lasx st_2 Vot1 st_3 PRvw$
                         $Asst >001$

    This is a normal "First Command".  "First Command"'s are set are set 
    in $Change Settings$ and define what command will first be done when a 
    user connects. 

    $st_1$    It displays the BBS's logo,
    $st_A$    logs in the user,
    $st_B$    welcomes the user and does new mail check,
    $Call$    does call-back verification if the user needs to pass,
    $Dnws$    displays the BBS's news files,
    $Lasx$    shows the last few callers,
    $st_2$    then if the user is below level 10 they are exited to the
              main menu (exit controlled in $st_2$). 

    $Vot1$    If the user is level 10 or higher then they continue and
              we see if there are any voting questions for them,
    $st_3$    then if the user is below level 20 they are exited to the
              main menu (exit controlled in $st_3$).

    $PRvw$    If the user is level 20 or higher then they continue and
              we see if there are any peer review voting to be done,
    $Asst$    then the AI will check to see if any L&D deleting can be
              done,
    $>001$    finally we exit to the main menu. 

    The $>001$ is used if it is reached.  Both the $st_1$ and $st_2$ have 
    a $>001$ which is used to start the user off at the main menu (Menu ID 
    $001$) if their SL's do not let them pass theh ifSL questions in $st_1$ 
    and/or $st_2$. 

TgUx
TgUx

        Created from:    $ifSL _20 TgtU$

    $ifSL _20$    If user's SL is less than 20 then exit,
    $TgtU$        else if >= 20, then let them do target uploading. 
    
txt1
txt1

        Created from:    $dTX3 _c:\bbs\text\details.txt Paus$

    $dTX3 _etc.$    Display the DETAILS.TXT file in date-on-top method,
    $Paus$          and then do a "Paused" at the bottom. 

txt2
txt2

        Created from:    $dTX5 _c:\bbs\text\info.txt$

    Display the INFO.TXT file in paged-screens method. 

txt3
txt3

        Created from:    $dTX4 _c:\bbs\text\history.txt Paus$

    $dTX4 _etc.$    Display the HISTORY.TXT file in continuous-box method, 
    $Paus$          with a "Paused" at the end. 

Up01
Up01

        Created from:    $Upld _001$

    Let the user do an upload to area 1 (#001). 

USAs
USAs

        Created from:    $dANS _c:\bbs\node???\***\stats_us.ans ENTR$

    $dANS _etc.$    Display the 50-state breakdown ANSI,
    $ENTR$          and then wait for the user to hit [Enter]. 

Vt10
Vt10

        Created from:    $ifSL _10 Vot0$

    $ifSL _10$    If user's SL is less than 10 then exit,
    $Vot0$        else if >= 10, then let them vote.
    
Wsts
Wsts

        Created from:    $Sts7 Paus Sts8 Paus Sts9 Paus Stsz Paus Stsy Paus$
                         $Stsx Paus$

    Display many statistics screens with "Paused"'s at the end of each 
    one. 

Examples                Created Commands Notes and Examples
Examples                Created Commands Notes and Examples

    The <ctrl>Fx key assignment allows you to define for each key a whole 
    string of commands exactly the same way you create a new command. 

    $BiMx$ for example:  $BiMd$ with MinSL of 10: doesn't let a level 5 
    user even type the key.  By using an $ifSL$ and $BiMx$, then the 
    special effects gets displayed, even though the user still can't 
    access the command. 

    EXAMPLE
    Ŀ
     $STRT$ is: $st_1 st_A st_B Call Dnws Lasx st_2 Vot1 st_3$     
              $PRvw Asst >001$                                   
                                                               
     As a new sysop, you decide that you do not want Peer      
     Reviewing.  So, to reduce clutter in your start up line,  
     you take $PRvw$ out:                                        
                                                               
     $STRT$ is: $st_1 st_A st_B Call Dnws Lasx st_2 Vot1 st_3$     
              $Asst >001$                                        
                                                               
     As a new sysop, you decide that you do not want call-back 
     verification.  So, to reduce clutter in your start up     
     line, you take $Call$ out:                                  
                                                               
     $STRT$ is: $st_1 st_A st_B Dnws Lasx st_2 Vot1 st_3 Asst$     
              $>001$                                             
                                                               
     As a new sysop, you decide that you do want to let all    
     users vote.  So, you remove the SL restriction ($st_2$)     
     before voting ($Vot1$):                                     
                                                               
     $STRT$ is: $st_1 st_A st_B Dnws Lasx Vot1 st_3 Asst >001$     
                                                               
     Then you decide that you want to delete your own files,   
     no AI asking users for help ($Asst$):                       
                                                               
     $STRT$ is: $st_1 st_A st_B Dnws Lasx Vot1 st_3 >001$          
                                                               
     The you realize the SL restriction, $st_3$, is meaningless, 
     so you remove it:                                         
                                                               
     $STRT$ is: $st_1 st_A st_B Dnws Lasx Vot1 >001$               
                                                               
     Now you are left with a start-up command that: displays   
     the BBS logo ($st_1$), displays the login ANSI and gets the 
     user's name ($st_A$), displays the welcome ANSI and new     
     mail ($st_B$), displays any news ($Dnws$), shows the last few 
     callers ($Lasx$), handles any un-voted-on questions ($Vot1$), 
     and exits to the main menu ($>001$).                        
                                                               
     Note: Leaving in, or taking out, $PRvw$, $Call$, and          
     $Asst$ does not matter if you have these turned off         
     already in Toggles/Settings/Attributes.                   
    
    EXAMPLE
    Ŀ
     Lets say your sick of users taking all your good files,   
     and uploading junk.                                       
                                                               
     You know that the software has the ability to let users   
     make requests, so you decide you want to add this         
     capability.                                               
                                                               
     The first step is to add $AReq$--$Add Requests$--to your      
     main menu.  Nothing complex here, just plug it in as a    
     new menu command.                                         
                                                               
     The next step is to put $DReq$--$Display Requests$--after     
     each "list files"--so after seeing your list of things    
     they can DL, they also see your list of things they can   
     UL.                                                       
                                                               
     Assuming you haven't changed the file commands, this just 
     means putting $DReq$ after your $PagQ$ and $P&Sx$               
     commands at the main menu.                                
                                                               
     But because the menu system only allows 4 letter          
     commands, we have to first define two new four letter     
     commands.  So, we define $PgDr$ = $PagQ DReq$ and we define   
     $PSDr$ = $P&Sx DReq$.                                         
                                                               
     We then simply replace the $PagQ$ with $PgDr$ in the          
     main menu, and $P&Sx$ with $PSDr$ in the main menu.           
    

    If you have "files must be validated before credit given" ON, then you 
    might want to set up a "validate files" menu.  This menu could 
    contain: list unvalidated, work on ZIP's, shell to dos, penalize 
    uploader, remove file, etc.  Whatever you deem helpful. 


