
                   "The Army Knife for ProBoard BBS Software"

     - - - ڿ-Ŀ Ŀ - - - 
                                Ŀٳ 
                             ٳٳĳ
     - - -  - -- - - - 

                             CURSORY, version 2.50

                           AmBOS CURSORY for ProBoard
              Copyright (C) 1995, 1996 WSA Software & J. Rathmann

                            - ALL RIGHTS RESERVED -

ͻ
  0. CONTENTS   
ͼ 
  
           Ŀ
            CONTENTS .........................................  0 
                                                                  
            Introduction .....................................  1 
            Archive ..........................................  2 
            Important note ...................................  3 
                                                                  
            Installation .....................................  4 
            Structure of CSI-files ...........................  5 
            Basic information ................................  6 
            Animations .......................................  7 
                                                                  
            Calling CURSORY in language files ................  8 
            Running multitask/multinode ......................  9 
            How to use control characters .................... 10 
            General information about "returnkeys" & "hotkeys" 11 
            RIP/ASCII-menus .................................. 12 
            Changing the time left ........................... 13 
                                                                  
            Registration ..................................... 14 
                                                                  
            Thanks ........................................... 15 
            BBS list ......................................... 16 
                                                                  
            Trademarks ....................................... 17 
                                                                  
            CURSORY F.A.Q. / Frequently asked questions ...... 18 
            Reference ........................................ 19 
           ͼ

ͻ
  1. Introduction   
ͼ 
  
 The ProBoard BBS software provides many features. Unfortunately a cursor key
 control is not implemented. CURSORY allows you to replace all BBS-menus and
 almost all other parts of the BBS (e. g. login, logoff) with such a type of
 control. Furthermore the direct selection of each menu option via hotkey is
 possible, too.

 You can freely define the position of each menu option and the look of your
 BBS. "Pulldown-menus", "windowed BBS'es" including cursor key control or
 something similar - use your fantasy and get the best ideas.

 CURSORY provides many features, so it is not a pure "cursor key control".
 The program allows you to display FREELY definable animations SIMULTANEOUS
 to the cursor key control. A man running over the screen, scrolltexts or
 fadings... nothing is impossible.

 In addition to this you can show some online help to the user while menu
 selection. You can define individual help messages which are shown to the
 user if he is on a specific menu option.

 The program provides many additional features, so almost everything is
 possible.

 The goal of developing this program was to provide you a powerful AND
 reliable cursor key control for ProBoard.

 Please do not think the usage of CURSORY is hard to understand. Almost ALL
 features the program provides are additional features. Nobody needs ALL
 features. The main concept is very easy to understand.

ͻ
  2. Archive   
ͼ 
  
 The CURSORY archive should contain the following files:

 ADVANCED.CSI   A CSI-file containing all keywords/control codes
 CURSORY .PEX   The program
 CURSORY .TXT   This documentation
 FILE_ID .DIZ   Short description of the program
 HOOMER  .ANS   Background for HOOMER.CSI
 HOOMER  .CSI   "HOOMER-Logoff" - YOU REALLY MUST SEE THIS
 INSTALL .!!!   Installing the example configurations
 LOGIN   .ANS   Background for LOGIN.CSI
 LOGIN   .CSI   Example for a login with cursor key control
 MAIN    .ANS   Background for MAIN.CSI
 MAIN    .CSI   A "main menu" with cursor key control
 PROMPT-7.CSI   Replaces ProBoard's "Enter-Prompt" with an animation
 REGISTER.FRM   Registration form
 REGISTER.USA   USA registration form
 SIMPLE  .CSI   Very simple example for a CURSORY-menu
 STRETCH .CSI   Another "Enter-Prompt" - looks very nice
 WHATSNEW.250   New features and changes in this version

ͻ
  3. Important note   
ͼ 
  
 The program has been tested on a few hundred systems. Nevertheless bugs are
 not impossible. The author will try hard to solve problems, but there is no
 warranty that the program is perfect. In no case the author is responsible
 for any damage caused by this program (I think this is nearly impossible
 :-) ).

 {+} = AVAILABLE IN REGISTERED VERSION ONLY

ͻ
  4. Installation   
ͼ 
  
 Please copy the file "CURSORY.PEX" into your ProBoard PEX-directory.

 CURSORY is called in the ProBoard menu editor like this:

 [ TOP ]
  0        1         2         3         4         5         6         7
  1234567890123456789012345678901234567890123456789012345678901234567890
  ;
 
  Color    : White on Black             Example Text
 
  Hotkey   : 
  Function : 60 - Run ProBoard SDK File
  Data     : CURSORY PEX\ADVANCED

 The character "" (behind "Hotkey") defines an "Autoexec"-menu option which
 is executed automatically by ProBoard. You can get this character by pressing
 CTRL-A.

 For testing purposes you should use a "normal" hotkey (e. g. "X") instead
 of this "Autoexec"-hotkey. Add a new menu option (for example in menu "TOP")
 to call CURSORY.

 CURSORY expects a "CSI-file" for each menu. These files contain all
 information about a menu, for example the "menu text", the "help text"
 (online help), color and position of each menu option and information
 about hotkeys.

 The name of a CSI-file must be specified behind "CURSORY" in the "Data"-
 field. The extension ".CSI" is not necessary. If no path is specified,
 CURSORY will assume that the file is located in the ProBoard system-
 directory (in the example above the file should be in the "PEX"-directory,
 which must be a sub-directory of the system-directory).

 You can also set the DOS-environment variable "CSI". If CURSORY detects this
 variable, ALL CSI-files are assumed to be in the specified directory. It is
 very useful to create a special directory for CSI-files.

ͻ
  5. Structure of CSI-files   
ͼ 
  
 CSI-files are similar to the widespread "INI"-files. They can be created
 or changed with a normal ASCII-editor.

 A CSI-file contains information about ONE menu. Each CSI-file contains
 "keywords" at the beginning of a line. There are two different types of
 keywords: LOCAL and GLOBAL keywords.

 GLOBAL keywords define GENERAL information about the specific menu. If for
 example the global keyword "numeric" is defined, the lightbar may be
 controlled additionally with the keys 2, 4, 6 and 8 on the numeric block.
 This possibility is GLOBAL, means, it is valid at any time in this menu.
 Global keywords may be defined EVERYWHERE in a CSI-file!

 LOCAL keywords are combined in BLOCKS. The keyword "menu" defines a start
 marking of such a block (this keyword defines a new menu option). All
 LOCAL keywords used BELOW belong to the LAST defined "menu". An example for
 a local keyword is "hotkey" (defines a hotkey for the LAST menu option
 defined with "menu").

 Behind some keywords so called "parameters" are necessary. This means,
 BEHIND the keywords there must follow further information. If several
 parameters are necessary, they must be seperated by commas. Strings have to
 be specified in " (inverted commas).

 CSI-files are SHAPELESS, spaces in front of or behind keywords and within
 control codes are valid. Comments must start with a ";" and may also be used
 BEHIND a keyword.

ͻ
  6. Basic information   
ͼ 
  
 This chapter contains basic information about how to create CSI-files. You
 can find a detailed description of ALL keywords and control codes in the
 chapter "Reference".

 Let us assume you want to display three menu options in the left, upper
 corner of the screen, and you want to be able to choose between these
 menu options using the cursor keys. Create a CSI-file like following:

 -----------------------------------------------------------------------------
 menu "%1,1%@8,27@  This is menu option 1  "
 menu "%1,2%@8,27@  This is menu option 2  "
 menu "%1,3%@8,27@  This is menu option 3  "
 -----------------------------------------------------------------------------

 Now execute the CSI-file. You see, it is very easy :-).

 The strange characters at the beginning of each line are so called "control
 codes". A control code is a sequence of characters which is not displayed
 but for example interpreted to change the color or position.

 In the example above the "%1,1%" causes that the cursor is set to screen
 position 1,1. The following text is displayed FROM this position. "@8,27@"
 defines the color. The value 8 means DARKGRAY, 27 is LIGHTCYAN on a BLUE
 background. CURSORY allows you to use so called "color macros". Instead of

 @8,27@

 you may also write

 @darkgray,lightcyan-blue@

 You can find detailed information about "color codes" and "color macros" in
 the chapter "Reference".

 You will wonder why there are TWO color values in the example above. The
 first one (8) is the color used to display the menu option if it is NOT
 active. If it is active, the menu option is displayed with color 27.
 Let us go on:

 -----------------------------------------------------------------------------
 menu "%1,1%@8,27@  This is menu option 1  "
 help "%1,5%@11@This is help for menu option 1"
 menu "%1,2%@8,27@  This is menu option 2  "
 help "%1,5%@12@This is help for menu option 2"
 menu "%1,3%@8,27@  This is menu option 3  "
 help "%1,5%@13@This is help for menu option 3"
 -----------------------------------------------------------------------------

 Execute the CSI-file again. You cannot miss this effect :-).

 It is of course not just the point to be able to jump between the menu
 options. For example it would be useful to go to another menu or call the
 chatter if the user selects a menu option. CURSORY provides two ways to
 define what should happen if a menu option is selected:

 1. A character can be returned (sent) to ProBoard. For example you can
    define that when the user selects menu option 2 a "F" is sent to ProBoard.
    Then, after CURSORY is left, the same thing will happen as if you pressed
    "F" WITHOUT CURSORY. For this purpose there is the CSI-keyword "returnkey"

 2. A ProBoard-compatible "function" can be executed. You can find a list
    of all functions in the ProBoard documentation. In the following this
    possibility is not described more closely (you can find detailed
    information about how to use this in the chapter "Reference")

 BOTH keywords may be defined at the same time for a menu option. In this
 case the function would be executed first, then the character is sent to
 ProBoard.

 Let us assume you called CURSORY in the main menu. In the ProBoard menu
 editor you defined the character "F" as hotkey to jump into the file menu.
 Change your CSI-file like this:

 -----------------------------------------------------------------------------
 menu "%1,1%@8,27@  This is menu option 1  "
 help "%1,5%@11@This is help for menu option 1"
 menu "%1,2%@8,27@  This is menu option0 2  "
 help "%1,5%@12@This is help for menu option 2"
 returnkey f
 menu "%1,3%@8,27@  This is menu option 3  "
 help "%1,5%@13@This is help for menu option 3"
 -----------------------------------------------------------------------------

 After starting the CSI-file and selecting the second menu option you should
 be in the file menu.

 Of course there could be menus which contain more than three menu options.
 In this case it would be useful if each menu option could be selected via
 hotkey additionally. For this purpose there is the CSI-keyword "hotkey".
 
 PLEASE DISTINGUISH BETWEEN THIS KEYWORD AND THE "HOTKEY" IN THE PROBOARD
 MENU EDITOR! THESE TWO THINGS ARE COMPLETELY DIFFERENT.

 A "hotkey" is the key which must be PRESSED to select a specific menu
 option. On the other hand a "returnkey" is the character which is actually
 sent to ProBoard (must be identical with a "HOTKEY" in the ProBoard menu
 editor).

 Change your CSI-file again:

 -----------------------------------------------------------------------------
 menu "%1,1%@8,27@  This is menu option 1  "
 help "%1,5%@11@This is help for menu option 1"
 menu "%1,2%@8,27@  This is menu option 2  "
 help "%1,5%@12@This is help for menu option 2"
 hotkey x
 returnkey f
 menu "%1,3%@8,27@  This is menu option 3  "
 help "%1,5%@13@This is help for menu option 3"
 -----------------------------------------------------------------------------

 Execute the CSI-file again. Now you have two possibilities to jump into the
 file menu:

 1. You can choose the 2. menu option with the cursor keys and press "RETURN"
 2. You can press the key "X"

 Possibly you already noticed that only the control keys and the "X" have
 an effect. If you press any other key, nothing will happen. ProBoard allows
 you to define GLOBAL hotkeys. Often used are for example the characters
 "!" (log off) or "?" (help). You have to add the line

 globalhotkeys "!?"

 to your CSI-file, then you may further use these keys EVERYWHERE.

 Probably your example menu will not look very nice. To change this, a
 BACKGROUND would be useful. You can create such a background with an ANSI-
 editor.

 Let us assume you have an ANSI-file called "MAIN.ANS". First of all copy
 this file into your ProBoard TXTFILES-directory.

 If you want that this file appears as background for your menu, add

 show "MAIN"

 to your CSI-file. You see, it looks much better :-).

ͻ
  7. Animations   
ͼ 
  
 CURSORY provides to show an animation simultaneous to the menu selection.

 Create the following CSI-file:
 -----------------------------------------------------------------------------
 menu "%1,1%@8,27@  This is menu option 1  "
 menu "%1,2%@8,27@  This is menu option 2  "
 menu "%1,3%@8,27@  This is menu option 3  "

 task "%78,24%@7@\"
 wait 10000
 task "%78,24%@7@|"
 wait 10000
 task "%78,24%@7@/"
 wait 10000
 task "%78,24%@7@-"
 wait 10000
 -----------------------------------------------------------------------------

 NOTE: Please decrease the values behind "wait" if you run a multitasker!

 Execute this CSI-file. In the lower-right corner you will see an animation.

 The "tasks" are shown top down. When the last "task" is reached, the
 animation is restarted (this can be disabled by using the CSI-keyword
 "noloop"). The keyword "wait" defines the delay AFTER a "task". This keyword
 belongs to the LAST defined "task". It is OPTIONAL, means, it does not have
 to be defined behind every "task". Default is 0.

 Note: A CSI-file must contain at least ONE menu option defined with "menu",
       also if it just contains an animation, otherwise the error message
       "No menu defined" is shown.

ͻ
  8. Calling CURSORY in language files   
ͼ 
  
 CURSORY may be started in any "prompt" of the language editor. So it is
 possible to carry out complete "windowed BBS'es". Another possibility is
 for example the usage as LOGIN-PEX, optionally in connection with other
 programs, e. g. "U!LOGIN" (as "Frontrun"-PEX).

 The call in the language editor looks like this:

 @pCURSORY CSIFILE@

 You can find two examples within the files PROMPT-7.CSI and STRETCH.CSI.

 IMPORTANT: To call CURSORY in the language editor, the CSI keyword "nocheck"
            MUST be defined!

ͻ
  9. Running multitask/multinode   
ͼ 
  
 The program automatically detects the following multitaskers:

 - Windows
 - OS/2
 - DesqView
 - TopView

 If CURSORY is run under a multitasker, "timeslices" are released at runtime.
 This means the program releases system resources for other tasks.

 If you run multinode, it is useful to use different (but possibly identical)
 CSI-files in SEPERATED directories. This way allows you to define special
 behaviour for each node.

 Please read the comments for the CSI-keyword "timeslice" in the reference
 if you want to use animations in connection with a multitasker.

ͻ
  10. How to use control characters   
ͼ 
  
 Some characters cannot be displayed using the specific CSI-keywords, because
 they are used as start marking or end marking of control codes.

 Control characters are:   @ % ^   & * ~ 

 All these characters are used in the parameters of the CSI-keywords "menu",
 "help", "task", "printstart" and "printend" as control characters . If you
 want to DISPLAY one of these characters, you have to define it TWICE.

 There are two other special characters:   , and "

 While reading a CSI-file CURSORY will assume that a comma seperates two
 parameters (exeption: WITHIN a string commas may be used normally). The
 character " is used to define the start or end of a string. Normally you can
 display control characters by defining them twice. For these two special
 characters there is an exeption: For example if you want to use a comma
 behind the CSI-keyword "hotkey" or an inverted comma WITHIN a string, just
 put a  (ASCII 248) in front of these characters.

 If you use a comma as hotkey but forgot the , the error message

 "Too many parameters in line x"

 is shown, because CURSORY expects one more parameter.

 The special character  itself can be displayed by defining it twice.

ͻ
  11. General information about "returnkeys" & "hotkeys"   
ͼ 
  
 If the CSI-keyword "returnkey" is used, CURSORY will return a character to
 ProBoard when a menu option is selected. This character must be defined as
 HOTKEY in the specific menu in the menu editor (please distinguish between
 the HOTKEY in the ProBoard menu editor and the CSI-keyword "hotkey", these
 two things are completely different).

 There are two cases CURSORY will NOT send any character to ProBoard when
 a menu option is selected:

 1. The user is not allowed to select this menu option, because it is locked
    in the ProBoard menu editor (you may disable the checking via "nocheck"
    or "noglobalcheck")

 2. The CSI-keyword "returnkey" is defined, but there is no HOTKEY found
    neither in the current nor in the global menu

 It is possible to define a local "returnkey" which have an affiliated hotkey
 in the global menu. The other way around a hotkey defined with
 "globalhotkeys" (or "globalkey" {+}) may be in a local menu.

 If a hotkey is defined twice, the last one is valid (this is also valid for
 some other CSI-keywords).

 If the same hotkey is defined LOCALLY and GLOBALLY, the local one has higher
 priority. There are the following priorities:

 1. Local hotkeys (defined with "hotkey")
 2. Redefined cursor keys (with "leftkey" {+}, "rightkey" {+}, "upkey" {+} or
    "downkey" {+})
 3. Global hotkeys (defined with "globalhotkeys" or "globalkey" {+})
 4. - The pre-defined control keys (cursor keys, HOME, END and SPACE)
    - The keys 2, 4, 6 and 8 for alternative control (if the CSI-keyword
      "numeric" is defined)

ͻ
  12. RIP/ASCII-menus   
ͼ 
  
 CURSORY supports both ANSI- and AVATAR-emulation. In ASCII-mode a cursor
 key control is not possible. If a user does not use ANSI or AVATAR, CURSORY
 provides an alternative.

 If CURSORY is started in ASCII-mode, the ANSI/AVATAR-cursor key control is
 NOT started. Instead of this an ASCII-file is sent. This file must be
 located in the TXTFILES-directory, the filename (WITHOUT extension) is the
 second parameter in the DATA-line of the menu editor (behind the name of the
 CSI-file).

 If CURSORY detects the RIP-emulation, the ANSI/AVATAR-cursor key control
 is NOT started as well. Instead of this a RIP-file is sent. This file must
 be located in the RIP-directory, the filename (also without extension) is
 the second parameter in the DATA-line of the menu editor (behind the name
 of the CSI-file).

 This parameter is OPTIONAL.

 Example for a call in the "Data"-line: "CURSORY PEX\CSIDATEI ABC"

 If CURSORY does not detect an ANSI-/AVATAR-emulation, the file ABC.ASC in
 the TXTFILES-directory is sent. If the RIP-emulation is enabled, CURSORY
 will send the file ABC.RIP in the RIP-directory.

 Note: CURSORY can be forced to use the ANSI- and AVATAR-mode by using the
       CSI-keywords "forceansi" {+} and "forceavatar" {+}.

ͻ
  13. Changing the time left   
ͼ 
  
 While a user is online usually the time left can be changed using the keys
 cursor-up and cursor-down. CURSORY redefines these keys, therefore this is
 not possible any longer. For this reason the program provides two alternative
 keys combinations for this purpose:

 CTRL - PAGE-UP    ->  Time left + 1 minute
 CTRL - PAGE-DOWN  ->  Time left - 1 minute

ͻ
  14. Registration   
ͼ 
  
 Please use the file "REGISTER.FRM" (or "REGISTER.USA" if you live in the
 United States) for registration.

 CURSORY is "Mindware". This means, the program may be copied freely if
 the archive is spread COMPLETELY and UNCHANGED.

 The usage of an unregistered version for testing purposes is granted 60
 days. If you want to use CURSORY after the evaluation period, a registration
 is required. You can find further information about how to register in
 the file "REGISTER.FRM" (or "REGISTER.USA").

 If you register you will get a personal "keyfile". Then all CSI-keywords and
 text macros are available for you, additionally all registration notes will
 disappear.

 A big thanks to all the guys who already registered CURSORY. The motivation
 to keep on developing this program was low, but each registration motivated.

 THANK YOU ALL !!!

 Please note that old gamma-versions may not be used freely any longer. A
 registration is needed for ALL CURSORY-versions.

ͻ
  15. Thanks   
ͼ 
  
 Thanks to all the guys who helped developing CURSORY, especially to...

 Guido Mattar
 Christian Schulz
 Lutz Vollring
 Carsten Lindner
 Ingo Kretschmann
 Mirek Hellwig
 Klaus Fritzsch
 Joost Greve

 Mega-special thanks to Guido, who has a big contribution to the
 developement of this program.

 THANKS, Guido !!!

ͻ
  16. BBS list   
ͼ 
 
 Following a little list of very nice BBS'es. All without warranty.

 BBS Highlander, Heuerstorf         +49 - 5874 - 9637
                                    +49 - 5874 - 9638 (ISDN)

 KIMBO - KIeler Minimal BOx, Kiel   +49 -  431 - 642957
                                    +49 -  431 - 642970
                                    +49 -  431 - 642970 (ISDN)

 Kandis-Box, Braunschweig           +49 -  531 - 2611041
                                    +49 -  531 - 2611042
                                    +49 -  531 - 2611043 (ISDN)

 OWL - United Hotel, Detmold        +49 - 5231 - 31084
                                    +49 - 5231 - 390731 (ISDN)

 X-Treme, Vechta                    +49 - 4441 - 851887

 Mac's Box, Wegberg                 +49 - 2434 - 928042
                                    +49 - 2434 - 928041 (ISDN)

 Enterprise BBS, Krefeld            +49 - 2151 - 597510
                                    +49 - 2151 - 538631 (ISDN)

ͻ
  17. Trademarks   
ͼ 
  
 The following names/products are copyrighted material, trademarks or
 registered trademarks of their respective holders:

 DesqView             Quarterdeck Office Systems
 OS/2                 International Business Machines
 ProBoard             Philippe Leybaert
 RIPscrip             Telegrafix Communications
 The Army Knife :-)   Gerard van Essen
 U!LOGIN              Christian Schulz
 Windows              Microsoft

ͻ
  18. CURSORY F.A.Q. / Frequently asked questions   
ͼ 
  
 Q: I use old CSI-files and get many error messages!
 A: CURSORY checks each line of a CSI-file exactly and will show an error
    message if there is something wrong. Old CURSORY-gamma-versions ignored
    many errors. With the error message a line number is shown, so it should
    be easy to solve the problem using the reference at the end of this
    documentation.
 
 Q: When I execute a CSI-file I always get the error message "Too many
    parameters in line x", but there are not too many parameters!
 A: Possibly you used a comma as hotkey or returnkey. Please read the chapter
    "How to use control characters".
 
 Q: The program just shows the error message "Unknown keyword in line x",
    although the CSI-file did work with an old CURSORY-version!
 A: Some CSI-keywords were renamed. Please check if there is one of the
    keywords "endtask", "elite" or "taskelite" in the shown line. If yes,
    please rename these keywords to "printend", "elitemenu" or "elitetask".
    If no, you did not spell the keyword correctly.
 
 Q: The control character "." (change relative cursor position) does not work!
 A: The control character "." was used in old CURSORY-versions to change the
    relative cursor position. Now this can be done by using the character
    "&". This change has been made because the point is used very ofter for
    display.
 
 Q: CURSORY just shows the error message "Could not open CSI-file"!
 A: Either the specified CSI-file does not exist or the filename and/or the
    path are not spelled/defined correctly. Please check the filename AND
    the path again. If you do not get a positive result call the program
    with the COMPLETE path INCLUDING drive name. A correct call could for
    example look like this: "CURSORY C:\PB\PEX\ADVANCED"
    INPORTANT: The DOS-environment variable "CSI" MUST NOT be set if a path
    is defined in the "Data"-line!
    Please note that ProBoard special codes like "*s" (ProBoard system path)
    are NOT allowed in the "Data"-line!
 
 Q: CURSORY does not display the characters @, %, ^, , , &, *, ~ and ,
    although I specified them in the CSI-file!
 A: Please read the chapter "How to use control characters".
 
 Q: After selecting some specific menu options (e. g. "READ" in the message
    menu) the ProBoard prompt will appear WITHIN the ANSI-picture. How can
    I prevent this?
 A: Normally the cursor is automatically located BEHIND the last character of
    a menu option while menu selection. For this reason THIS position is used
    to display the next characters (e. g. like the prompts defined in the
    ProBoard language editor). Please use the CSI-keywords "hide" or
    "printend" to solve this problem.
 
 Q: In a CSI-file I defined a hotkey for a menu option using "hotkey". I
    specified the same hotkey in the ProBoard menu editor. When I select this
    menu option, CURSORY does not send any character to ProBoard!
 A: You mix up "hotkeys" and "returnkeys". "hotkeys" just provide faster
    selection of menu options. They are NOT send to ProBoard. Please use
    the keyword "returnkey".
 
 Q: I defined a big animation. When a user is online, the control is very
    slow!
 A: This problem only occurs with very complex animations.
    The control speed depends on the size of the animation. If you defined
    TOO MANY sequences per time unit within your animation, the transfer
    speed is not sufficient. Use a less complex animation or INCREASE the
    "wait" values behind every "task". The higher these values are, the
    faster the control will be!
 
 Q: Some parts of the menu options/help texts/animation are displayed in a
    wrong color or are located at a wrong position!
 A: Positions and colors are changed by control codes. Each of these control
    codes has a start marking and an end marking (two identical characters,
    e. g. for color changing the character "@"). If you forget the end
    marking, the complete control code is ignored. This could cause wrong
    results. Please check if you set the end marking everywhere.
 
 Q: I call CURSORY in a prompt in the language editor. CURSORY does not run,
    it just shows the error message "Could not open PBM-file"!
 A: Use the keyword "nocheck" in your CSI-file.
 
 Q: At some positions of my menus the user is always logged off!
 A: There is a control character which causes CURSORY to disconnect the line
    (, ASCII 166). Please check if you used this character in your CSI-files.
    If yes, define this character TWICE.
 
 Q: I defined an ANSI- or AVATAR-file in a CSI-file using the keyword "show".
    CURSORY does not display the picture!
 A: Behind "show" there MUST NOT be a path. The file itself must be located
    in the TXTFILES-directory. If the file is not displayed, one of the
    things mentioned above is right OR you did not spell the filename
    correctly.
 
 Q: I use some of the keywords "restart", "leftkey", "rightkey", "upkey",
    "downkey", "globalkey", "log", "forceansi" or "forceavatar" in my CSI-
    file. CURSORY just displays the error message "Unknown keyword in line x"!
 A: These keywords are only available in the registered version. To solve
    this problem use a valid key :-).
 
 Q: When I use some of the text macros "date", "firstname", "fulltime",
    "handle", "name" or "time", CURSORY just displays the message "Unkown
    macro" on the screen!
 A: Some text macros are not available in the unregistered version.
    Solution: Use the registration form... :-)
 
 Q: CURSORY does not display anything in the lower area of the screen
    correctly. The keyword "hide" does not work, too, the cursor is not
    hidden!
 A: The 23. line of the screen cannot be used in the unregistered version for
    display. If you are registered, this line may be used.
 
 Q: How long do I have to wait before I get my keyfile?
 A: The key is send IMMEDIATELY after the registration form AND the
    registration fee arrived. If necessary at night :-).
 
 Q: Does CURSORY have a "Backdoor"?
 A: NO.

ͻ
  19. Reference   
ͼ 
  
 This chapter contains a reference of ALL CSI-keywords, control codes, color
 codes, text macros, special codes for "hotkey" and "globalkey" {+} and error
 messages.

 Ŀ
  CSI-keywords 
 

             LOCAL KEYWORDS              GLOBAL KEYWORDS
           Ļ   Ļ
            menu               globalhotkeys   nocheck         
            help               globalkey {+}   noglobalcheck   
            hotkey             startmenu       log {+}         
            returnkey          show            forceansi {+}   
            function           numeric         forceavatar {+} 
            restart {+}        static          hide            
            leftgoto           elitemenu       printstart      
            rightgoto          elitetask       printend        
            upgoto             nofresh         userdoes        
            downgoto           noloop          timeslice       
            leftkey {+}       ļ
            rightkey {+}   
            upkey {+}      
            downkey {+}    
            task           
            wait           
           ļ

 Ļ
  menu              Defines a new menu option
 ļ
 Type ............... LOCAL
 Syntax ............. menu "MENUTEXT"
                      MENUTEXT = Text including control codes (you can find
                                 a description of all control codes in the
                                 section "Control codes")
 Example ............ menu "%1,1%@8,27@ Test menu option "
 Description ........ This keyword defines the text, position(s) and color(s)
                      of ONE menu option. It is the START MARKING of a menu
                      block, ALL LOCAL keywords below belong to this menu
                      option (until the next menu option is defined using
                      "menu").


 Ļ
  help              Defines a help text (online help) for a menu option
 ļ
 Type ............... LOCAL
 Syntax ............. help "HELPTEXT"
                      HELTTEXT = including control codes (you can find a
                                 description of all control codes in the
                                 section "Control codes")
 Example ............ help "%1,20%@14@This is a help text"
 Description ........ This keyword defines text, position(s) and color(s) of
                      ONE help text. This help text belongs to the LAST
                      defined menu option.


 Ļ
  hotkey            Defines a "hotkey" for a menu option
 ļ
 Type ............... LOCAL
 Syntax ............. hotkey HOTKEY
                      HOTKEY = ASCII-character
                               OR
                               ASCII-code with preceding "#"
 Examples ........... hotkey a
                      hotkey #27
 Description ........ This keyword defines a LOCAL hotkey for the LAST defined
                      menu option. If it is defined, the corresponding menu
                      option can be selected directly via the specified
                      character, alternatively to the cursor key control and
                      "RETURN". The character is case insensitive.


 Ļ        Defines a character which is sent after the
  returnkey         corresponding menu option is selected
 ļ
 Type ............... LOCAL
 Syntax ............. returnkey RETURNKEY
                      RETURNKEY = ASCII-character
                                  OR
                                  ASCII-Code with preceding "#"
 Examples ........... returnkey a
                      returnkey #65
 Description ........ This keyword can be used to define a character which
                      is sent to ProBoard after the corresponding menu option
                      is selected. This character MUST be defined as HOTKEY
                      in the ProBoard MENU EDITOR. The character is sent to
                      ProBoard AFTER execution of a function possibly defined
                      with "function". The character is case insensitive.


 Ļ        Defines a function which is executed after the
  function          corresponding menu option is selected
 ļ
 Type ............... LOCAL
 Syntax ............. function FUNCTIONNUMBER
                      OR
                      function FUNCTIONNUMBER, "PARAMETER"
                      FUNCTIONNUMBER = ProBoard function (you can find a
                                       description of all ProBoard functions
                                       in the ProBoard documentation)
                      PARAMETER = Parameter (if necessary)
 Examples ........... function 8
                      function 60, "TEXTSRCH"
 Description ........ This keyword defines a ProBoard function which is
                      executed after the corresponding menu option is
                      selected. After execution the menu is left (you can
                      avoid this by using "restart" {+}). The defined function
                      is executed BEFORE a character possibly defined with
                      "returnkey" is sent.


 Ļ
  restart {+}       Causes CURSORY to restart after a function is executed
 ļ
 Type ............... LOCAL
 Syntax ............. restart
 Description ........ After selection of a SPECIFIC menu option and execution
                      of a function the menu is NOT left. Instead the CSI-file
                      is called again (the file is NOT read again physically).


 Ļ         Defines the menu option which is active after the user
  leftgoto          pressed CURSOR-LEFT on the corresponding menu option
 ļ
 Type ............... LOCAL
 Syntax ............. leftgoto MENUOPTION
                      MENUOPTION = Number of a menu option
                      Note: The menu options are numbered top down
 Default ............ Active menu option - 1
 Example ............ leftgoto 4
 Description ........ If the user presses CURSOR-LEFT on the corresponding
                      menu option, the defined menu option is active. All
                      invalid values are ignored.


 Ļ        Defines the menu option which is active after the user
  rightgoto         pressed CURSOR-RIGHT on the corresponding menu option
 ļ
 Type ............... LOCAL
 Syntax ............. rightgoto MENUOPTION
                      MENUOPTION = Number of a menu option
                      Note: The menu options are numbered top down
 Default ............ Active menu option + 1
 Example ............ rightgoto 4
 Description ........ If the user presses CURSOR-RIGHT on the corresponding
                      menu option, the defined menu option is active. All
                      invalid values are ignored.


 Ļ           Defines the menu option which is active after the user
  upgoto            pressed CURSOR-UP on the corresponding menu option
 ļ
 Type ............... LOCAL
 Syntax ............. upgoto MENUOPTION
                      MENUOPTION = Number of a menu option
                      Note: The menu options are numbered top down
 Default ............ Active menu option - 1
 Example ............ upgoto 4
 Description ........ If the user presses CURSOR-UP on the corresponding
                      menu option, the defined menu option is active. All
                      invalid values are ignored.


 Ļ         Defines the menu option which is active after the user
  downgoto          pressed CURSOR-DOWN on the corresponding menu option
 ļ
 Type ............... LOCAL
 Syntax ............. downgoto MENUOPTION
                      MENUOPTION = Number of a menu option
                      Note: The menu options are numbered top down
 Default ............ Active menu option + 1
 Example ............ downgoto 4
 Description ........ If the user presses CURSOR-DOWN on the corresponding
                      menu option, the defined menu option is active. All
                      invalid values are ignored.


 Ļ      Defines a character which is sent after pressing
  leftkey {+}       CURSOR-LEFT on the corresponding menu option
 ļ
 Type ............... LOCAL
 Syntax ............. leftkey LEFTKEY
                      LEFTKEY = ASCII-character
                                OR
                                ASCII-code with preceding "#"
 Examples ........... leftkey a
                      leftkey #65
 Description ........ If the user pressed CURSOR-LEFT on the corresponding
                      menu option, the defined LEFTKEY is sent to ProBoard.
                      If for a menu option both "leftkey" and "leftgoto" is
                      defined, then "leftkey" has a higher priority.


 Ļ     Defines a character which is sent after pressing
  rightkey {+}      CURSOR-RIGHT on the corresponding menu option
 ļ
 Type ............... LOCAL
 Syntax ............. rightkey RIGHTKEY
                      RIGHTKEY = ASCII-character
                                 OR
                                 ASCII-code with preceding "#"
 Examples ........... rightkey a
                      rightkey #65
 Description ........ If the user pressed CURSOR-RIGHT on the corresponding
                      menu option, the defined RIGHTKEY is sent to ProBoard.
                      If for a menu option both "rightkey" and "rightgoto" is
                      defined, then "rightkey" has a higher priority.


 Ļ        Defines a character which is sent after pressing
  upkey {+}         CURSOR-UP on the corresponding menu option
 ļ
 Type ............... LOCAL
 Syntax ............. upkey UPKEY
                      UPKEY = ASCII-character
                              OR
                              ASCII-code with preceding "#"
 Examples ........... upkey a
                      upkey #65
 Description ........ If the user pressed CURSOR-UP on the corresponding menu
                      option, the defined UPKEY is sent to ProBoard. If for a
                      menu option both "upkey" and "upgoto" is defined, then
                      "upkey" has a higher priority.


 Ļ      Defines a character which is sent after pressing
  downkey {+}       CURSOR-DOWN on the corresponding menu option
 ļ
 Type ............... LOCAL
 Syntax ............. downkey DOWNKEY
                      DOWNKEY = ASCII-character
                                OR
                                ASCII-code with preceding "#"
 Examples ........... downkey a
                      downkey #65
 Description ........ If the user pressed CURSOR-DOWN on the corresponding
                      menu option, the defined DOWNKEY is sent to ProBoard.
                      If for a menu option both "downkey" and "downgoto" is
                      defined, then "downkey" has a higher priority.


 Ļ
  task              Defines an animation sequence
 ļ
 Type ............... LOCAL (TASK)
 Syntax ............. task "SEQUENCE"
                      SEQUENCE = Text including control codes (you can find a
                                 description of all control codes in the
                                 section "Control codes")
 Example ............ task "%1,24%@7@This is part of an animation"
 Description ........ Using this keyword you can define an animation sequence
                      (a "state" of an animation). If several "tasks" are
                      defined, they will be shown top down at runtime. When
                      the last "task" is reached (the end), the animation is
                      shown again (you can disable this via "noloop"). A
                      "task" is local, but it does not belong to a menu
                      option. "Local" just means that it belongs to the
                      keyword "wait".


 Ļ             Defines the delay after the corresponding animation
  wait              sequence is displayed
 ļ
 Type ............... LOCAL (TASK)
 Syntax ............. wait DELAY
                      DELAY = Number of "cycles" to wait after a "task"
 Default ............ 0
 Example ............ wait 500
 Description ........ This keyword defines the delay after the corresponding
                      "task" is displayed. The next "task" is not displayed
                      until the delay ends. This keyword is OPTIONAL, it does
                      not have to be defined behind every "task". 0 is default
                      (no delay). Each value behind "wait" may be different,
                      so you can change the animation speed at runtime! The
                      real length of delay depends on the system used. If you
                      call CURSORY under a multitasker, you should use little
                      values behind "wait".


 Ļ
  globalhotkeys     Defines SEVERAL global hotkeys
 ļ
 Type ............... GLOBAL
 Syntax ............. globalhotkeys "HOTKEYS"
                      HOTKEYS = List of characters
 Example ............ globalhotkeys "!#%?$*-"
 Description ........ Defines global hotkeys or in general characters which
                      are also sent to ProBoard. When a key is pressed while
                      menu selection which is not a control key or a local
                      hotkey, it is normally ignored. By using this keyword
                      you can define ADDITIONAL characters which are also
                      sent to ProBoard. For example this could be hotkeys,
                      which are defined in the GLOBAL menu in the ProBoard
                      menu editor. "globalhotkeys" may be defined several
                      times in a CSI-file.


 Ļ    Defines ONE global hotkey, additionally a seperated
  globalkey {+}     "returnkey" can be specified
 ļ
 Type ............... GLOBAL
 Syntax ............. globalkey HOTKEY
                      OR
                      globalkey HOTKEY, RETURNKEY
                      HOTKEY = ASCII-character
                               OR
                               ASCII-code with preceding "#"
                      RETURNKEY = ASCII-character
                                  OR
                                  ASCII-code with preceding "#"
 Examples ........... globalkey ?
                      globalkey #63
                      globalkey #27, !
 Description ........ This keyword can be used to define ONE global hotkey
                      (see also CSI-keyword "globalhotkeys"), additionally
                      a RETURNKEY can be specified. In this case the
                      RETURNKEY is sent after the user pressed the HOTKEY.
                      You can GLOBALLY seperate hotkeys and returnkeys
                      (equivalent to the local seperation via the CSI-keywords
                      "hotkey" and "returnkey"). If no RETURNKEY is specified,
                      the HOTKEY is sent (identical to "globalhotkeys").
                      For this reason "globalkey a" is exactly the same as
                      "globalkey a, a". This keyword may be defined SEVERAL
                      times in a CSI-file. HOTKEY and RETURNKEY are case
                      insensitive.


 Ļ
  startmenu         Defines the menu option which is active at start
 ļ
 Type ............... GLOBAL
 Syntax ............. startmenu MENUOPTION
                      MENUOPTION = Number of a menu option
                      Note: The menu options are numbered top down
 Default ............ 1
 Example ............ startmenu 4
 Description ........ The value behind this CSI-keyword defines the menu
                      option which is active at start. If this keyword is
                      missing, the first menu option is active by default.
                      All invalid values are ignored. If the keyword "static"
                      is defined additionally, then "startmenu" has only an
                      effect if the menu is displayed the FIRST time.


 Ļ
  show              Displays an ANSI- or AVATAR-file
 ļ
 Type ............... GLOBAL
 Syntax ............. show "FILENAME"
                      FILENAME = Name of an ANSI/AVATAR-file WITHOUT path and
                                 extension
 Example ............ show "MAIN"
 Description ........ Displays an ANSI/AVATAR-file as background for a menu.
                      The file *MUST* be located in the ProBoard TXTFILES-
                      directory. If the specified file is not found, the
                      keyword is ignored.


 Ļ
  numeric           Allows alternative control via 2, 4, 6 and 8
 ļ
 Type ............... GLOBAL
 Syntax ............. numeric
 Description ........ Allows alternative control via the keys 2, 4, 6 and 8
                      (replacement for the cursor keys). If identical hotkeys
                      are defined, the hotkeys have a HIGHER priority!


 Ļ           Causes that the last selected menu option is saved
  static            and active automatically when the menu is called again
 ļ
 Type ............... GLOBAL
 Syntax ............. static
 Description ........ If this keyword is defined in a CSI-file, the last
                      selected menu option is saved when the menu is left. If
                      the same menu is called again, not the first or the
                      menu option defined via "startmenu" is active but the
                      saved one. Therefore this keyword has a higher priority
                      than "startmenu".


 Ļ
  elitemenu         Converts all menu and help texts into "elite-font"
 ļ
 Type ............... GLOBAL
 Syntax ............. elitemenu
 Description ........ If this keyword is defined, ALL menu options and help
                      texts are converted into "elite"-font. The following
                      changes are made:
                      1. All characters are converted into capitals
                      2. 'A' (ASCII-code 065) -> '' (ASCII-code 146)
                      3. 'E' (ASCII-code 069) -> '' (ASCII-code 238)
                      4. 'F' (ASCII-code 070) -> '' (ASCII-code 159)
                      5. 'I' (ASCII-code 073) -> 'i' (ASCII-code 105)
                      6. 'N' (ASCII-code 078) -> '' (ASCII-code 239)


 Ļ        
  elitetask         Converts all animation sequences into "elite-font"
 ļ
 Type ............... GLOBAL
 Syntax ............. elitetask
 Description ........ Converts ALL animation sequences (defined with "task")
                      into "elite"-font. Take a look at "elitemenu" to find
                      detailed information.


 Ļ          Causes that all menu options are NOT displayed at start
  nofresh           (only the active menu option is visible)
 ļ
 Type ............... GLOBAL
 Syntax ............. nofresh
 Description ........ This keyword causes a "nofreshing" of all menu options
                      at start. Normally ALL menu options defined in a CSI-
                      file are displayed once automatically, so the user can
                      see between what he may choose. If the keyword "nofresh"
                      is used, ONLY the active menu option is visible at
                      start. Therefore it is possible to "paint" all menu
                      options in the background picture (see CSI-keyword
                      "show") and CURSORY will not overwrite them at start.
                      In principle this is not disturbing, but it is sometimes
                      visible if the user has a bad connect and there are many
                      menu options. The advantage of defining all menu options
                      (in the "not active" color!) in the background picture
                      is that these menu options are visible IMMEDIATELY for
                      the user. Without "nofresh" the background picture is
                      shown FIRST, THEN the menu options are displayed. You
                      should ONLY use "nofresh" if you do not like the aspect
                      described above, because there are also two
                      disadvantages:
                      1. All menu options defined in the CSI-file must be
                         EXACTLY identical with the menu options in the
                         background picture
                      2. The keyword "elitemenu" only has an effect if the
                         user chooses the menu options at least ONCE. If you
                         want to use this keyword, all menu options must be
                         defined in "elite-font" in the background (see CSI-
                         keyword "elitemenu")


 Ļ           Causes that a defined animation is NOT repeated, it is
  noloop            displayed only ONCE
 ļ
 Type ............... GLOBAL
 Syntax ............. noloop
 Description ........ If this keyword is defined and the last animation
                      sequence is reached, the animation is NOT repeated.
                      This keyword has only an effect if there is really an
                      animation. If not, the keyword is ignored.


 Ļ
  nocheck           Disables checking for all menu options
 ļ
 Type ............... GLOBAL
 Syntax ............. nocheck
 Description ........ After a menu option is selected the programm will NOT
                      check if the user has really access. If a returnkey is
                      defined, it is sent to ProBoard in any case (and there
                      possibly ignored). You should use this keyword if you
                      call CURSORY in a language file, otherwise the error
                      message "Could not open PBM-file" is shown (a PBM-file
                      contains information about limitations for each menu
                      options).


 Ļ
  noglobalcheck     Disables checking for menu options in the GLOBAL menu
 ļ
 Type ............... GLOBAL
 Syntax ............. noglobalcheck
 Description ........ Similar to "nocheck", but ONLY the GLOBAL checking is
                      disabled. Use this keyword if you want checking but
                      no global menu is defined in the ProBoard menu editor
                      (file GLOBAL.PBM).


 Ļ          Enables the "LOG"-function / some runtime information
  log {+}           is written to the file PROBOARD.LOG
 ļ
 Type ............... GLOBAL
 Syntax ............. log
 Description ........ If this keyword is defined, some useful runtime
                      information (e. g. selected menu options, executed
                      functions) is written to the file PROBOARD.LOG.


 Ļ
  forceansi {+}     Forces CURSORY to use the ANSI-emulation
 ļ
 Type ............... GLOBAL
 Syntax ............. forceansi
 Description ........ If this keyword is defined, CURSORY uses the ANSI-mode
                      in any case. For example this is useful for a LOGIN.


 Ļ
  forceavatar {+}   Forces CURSORY to use the AVATAR-emulation
 ļ
 Type ............... GLOBAL
 Syntax ............. forceavatar
 Description ........ If this keyword is defined, CURSORY uses the AVATAR-mode
                      in any case. For example this is useful for a LOGIN.


 Ļ
  hide              The cursor is hidden GLOBALLY
 ļ
 Type ............... GLOBAL
 Syntax ............. hide X, Y
                      X = X-position
                      Y = Y-position
 Example ............ hide 79, 24
 Description ........ The cursor is hidden GLOBALLY. This keyword is a
                      replacement for the control code "*". If this keyword
                      is used, the cursor is set to the defined position after
                      EACH change on the screen. Now it will be invisible
                      (also for the user!). The difference to the control
                      code "*" is that the cursor is set to a fixed position
                      again and again. "*" will always use the CURRENT
                      position.
                      NOTE: "hide 80, 24" will scroll up the screen.


 Ļ
  printstart        Displays a text BEFORE the cursor key control is started
 ļ
 Type ............... GLOBAL
 Syntax ............. printstart "TEXT"
                      TEXT = including control codes (you can find a
                             description of all control codes in the section
                             "Control codes")
 Example ............ printstart "%1,1%@15@Welcome to this menu!"
 Description ........ The text defined behind this keyword is displayed
                      BEFORE the cursor key control (or the animation, if no
                      menu options are defined) is started. If a background
                      picture is defined (see CSI-keyword "show"), this will
                      happen AFTER the picture is shown. For example you can
                      use this keyword to display static text macros (fixed
                      text macros, e. g. the user's name or location).


 Ļ         Displays a text AFTER the cursor key control is left
  printend          and BEFORE the program exits
 ļ
 Type ............... GLOBAL
 Syntax ............. printend "TEXT"
                      TEXT = including control codes (you can find a
                             description of all control codes in the section
                             "Control codes")
 Example ............ printend "~"
 Description ........ Similar to "printstart", but this text is shown AFTER
                      the menu selection is left and BEFORE the program exits.
                      For example this is useful if an animation is defined in
                      a CSI-file but the "hide"-keyword is NOT used. Then the
                      cursor position is not defined any time, so if you leave
                      the menu ProBoard could display something at a wrong
                      position. These "errors" occur for example if you use
                      the internal message reading routine. After the user
                      selected the menu option "Read messages", the prompt
                      which messages should be shown is displayed in the
                      MIDDLE of the background picture. This problem can be
                      solved by using the keywords "printend" OR "hide" (the
                      cursor is hidden additionally). You can also use
                      "printend" e. g. to "log off" the user immediately after
                      a menu is left (e. g. at Login).


 Ļ
  userdoes          Creates a USERDOES-file in the ProBoard system-directory
 ļ
 Type ............... GLOBAL
 Syntax ............. userdoes "TEXT"
 Example ............ userdoes "Just testing CURSORY :-)"
 Description ........ This keyword can be used to create a "USERDOES.*"-file
                      in the ProBoard system-directory BEFORE the program is
                      started ("*" is the current node number). This file may
                      contain information about the user's activity. It can
                      be read using special programs (e. g. USERDOES by DQP).
                      You can assign a USERDOES-text to each CSI-file
                      (therefore also if you call the program in a language
                      file!). E. g. if userdoes "Just testing CURSORY" is
                      defined in a CSI-file and this file is called on node
                      1, all other users can see (if they just use e. g.
                      DQP-USERDOES) that user no. 1 is just testing CURSORY
                      :-).


 Ļ        Defines how many "timeslices" are released per time unit
  timeslice         if a multitasker is used
 ļ
 Type ............... GLOBAL
 Syntax ............. timeslice VALUE
                      VALUE = a decimal value
 Default ............ 1
 Example ............ timeslice 5
 Description ........ The value behind this keyword defines how many
                      "timeslices" are released per time unit if CURSORY runs
                      under a multitasker. Value 1 means that such
                      "timeslices" are released after every cycle (checking
                      the keyboard and modem buffer and displaying the next
                      animation sequence). If 2 is specified, this will only
                      happen every second, if 3 every third cycle. Default is
                      1. If 0 is defined, no "timeslices" are released. Using
                      this keyword you can reserve more time for a CURSORY-
                      task under a multitasker. E. g. this is useful if many
                      other tasks are in the background which "slow down" an
                      animation. The best setting depends on the system used
                      and should be tested. If no multitasker is detected,
                      this keyword has no effect.

 Ŀ
  Control codes 
 

 All control codes may be used in connection with the keywords "menu", "help",
 "task", "printstart" and "printend".

 Many of these control codes need a start and an end marking (two identical
 characters, e. g. for color changing the character "@"). If you forget the
 end marking, the complete control code is ignored. This could cause wrong
 results. If you have problems, check if all end markings are set.

 NOTE: If you want to DISPLAY a control character, you have to define it
       TWICE (see also chapter "How to use control characters")

 

 @a,b@ = Change color (for "menu")
         a = Color code or color macro, if the menu option is NOT active
         b = Color code or color macro, if the menu option is active

 @a@   = Change color (for "help", "task", "printstart" and "printend")
         a = Color code or color macro

         Color code = background color * 16 + foreground color
         
         0 = Black, 1 = Blue, 2 = Green, 3 = Cyan, 4 = Red, 5 = Magenta,
         6 = Brown, 7 = Lightgray, 8 = Darkgray, 9 = Lightblue,
         10 = Lightgreen, 11 = Lightcyan, 12 = Lightred, 13 = Lightmagenta,
         14 = Yellow, 15 = White
         If you add 128 to the color code, the foreground color will blink.
         A value higher than 7 as backround color has no effect.

         Color macros see section "Color macros" below!

 %x,y% = Change absolute cursor position
         x = X-position
         y = Y-position
         If x and/or y are 0, the specific coordinate is not changed

 &Xx&  = Change relative cursor position
         X = L (Left), R (Right), U (Up) or D (Down)
         x = relative change

 ^TEXTMACRO^  = Displays a ProBoard-compatible text macro, which is replaced
                through specific information at runtime (text macros see
                section "Text macros" below!)

 FILENAME   = (ASCII 167) {+} Shows an ASCII-/ANSI-/AVATAR-file (the file
                extension MUST NOT be specified). The file, which must be
                located in the ProBoard TXTFILES-directory, is shown
                immediately when this control code is found (if the file is
                found)

 DELAY      = (ASCII 252) {+} The display is delayed dependent on the value
                specified behind "DELAY". You can use this to create "fadings"

 *     = The cursor is hidden at the current position (on BLACK background
         ONLY!) (see also CSI-keyword "hide")

 ~     = Clear screen, if the user has set the "CLRSCR"-flag

      = (ASCII 166) If CURSORY finds this character, the user is logged off
         IMMEDIATELY :-)

 Ŀ
  Color macros 
 

 Color macros may be used in connection with the control character "@"
 everywhere "normal" color codes are valid, too.
 The syntax is FOREGROUNDCOLOR-BACKGROUNDCOLOR-BLINK, all macros must be
 seperated by a hyphen ("-"). ALL macros are OPTIONAL and SHAPELESS. The
 color BLACK may be left out. Some examples (in brackets the equivalent color
 codes):

 blue-black-blink (129)        blue (1)            blau-black (1)
 BLUE-Black (1)                blue--blink (129)   yellow-red (78)
 blue - black (1)              -blue (16)
 b l u e - b l a c k (1)       blau-schwarz (1)

 Note: English and german color macros and color codes may be mixed. A color
       macro or color code with a background color value higher than 7 has no
       effect.

 All valid color macros (ENGLISH/GERMAN):

 Color macro           Color code   Color macro                 Color code
    
 BLACK, SCHWARZ        0            DARKGRAY, DUNKELGRAU        8
 BLUE, BLAU            1            LIGHTBLUE, HELLBLAU         9
 GREEN, GRUEN          2            LIGHTGREEN, HELLGRUEN       10
 CYAN, TUERKIS         3            LIGHTCYAN, HELLTUERKIS      11
 RED, ROT              4            LIGHTRED, HELLROT           12
 MAGENTA, VIOLETT      5            LIGHTMAGENTA, HELLVIOLETT   13
 BROWN, BRAUN          6            YELLOW, GELB                14
 LIGHTGRAY, HELLGRAU   7            WHITE, WEISS                15
                                    BLINK                       128

 Ŀ
  Text macros 
 

 Text macros can be shown left-aligned, right-aligned or centered.

 Normal:                 ^textmacro^
 Left-aligned:           ^textmacro:20^
 Right-aligned:          ^textmacro:-20^
 Centered:               ^textmacro::20^

 ADDRESS1                User's address, 1. part
 ADDRESS2                User's address, 2. part
 ADDRESS3                User's address, 3. part
 BAUD                    Baudrate
 BBSLOCATION             Location of BBS
 BBSNAME                 Name of BBS
 BBSPHONE                Phone number of BBS
 BIRTHDATE               User's birthday
 CITY                    User's location
 COUNTRY                 User's country
 CURFILEAREA#            Number of current filearea
 CURFILEGROUP#           Number of current filegroup
 CURMENU                 Name of current menu
 CURMSGAREA#             Number of current messagearea
 CURMSGGROUP#            Number of current messagegroup
 DATAPHONE               User's data phone number
 DATE {+}                Current date
 DOWNLOADLIMIT           User's KB download-limit per day
 EXPIRATIONDATE          Expiration-date
 FAXPHONE                User's FAX phone number
 FIRSTLOGIN              Date of user's first login
 FIRSTNAME {+}           User's first name
 FLAGANSI                +/- = Ansi enabled/disabled
 FLAGAVATAR              +/- = Avatar enabled/disabled
 FLAGAVTPLUS             +/- = Avt/0+ enabled/disabled
 FLAGCLEARSCREEN         +/- = Clearscreen enabled/disabled
 FLAGFSED                +/- = Fullscreen-editor enabled/disabled
 FLAGHOTKEYS             +/- = Hotkeys enabled/disabled
 FLAGIBM                 +/- = IBM-chars enabled/disabled
 FLAGMOREPROMPT          +/- = Moreprompt enabled/disabled
 FULLTIME {+}            Current time (including seconds!)
 HANDLE {+}              User's handle (alias)
 ID                      User's "ID" (short description of level)
 INACTIVITYTIME          Inactivity-time
 INFO                    CURSORY version number
 KBDOWNLOADED            User's KB download (total)
 KBUPLOADED              User's KB Upload (total)
 KBUSEDTODAY             User's KB Download (today)
 LANGUAGE                User's language
 LASTDATE                Date of user's last call
 LASTNEWFILESCHECK       Date of user's last newfilecheck
 LASTPASSWORDCHANGE      Date of user's last password change
 LASTTIME                Time of user's last call
 LEVEL                   User's level
 MAXSYSOPPAGES           Number of allowed sysop pages
 MINUSEDTODAY            User's online time today (minutes)
 MNUDIR                  Path to the *.PBM-files
 MSGDIR                  Path to messagebase
 NAME {+}                User's name
 NEWUSERLEVEL            Level for new users
 NLDIR                   Nodelist-directory
 NODE                    Current node number
 NUMCALLS                Number of user's total calls
 NUMDOWNLOADS            Number of user's total downloads
 NUMNODES                Number of nodes
 NUMPOSTED               Number of user's written messages
 NUMUPLOADS              Number of user's total uploads
 NUMUSERS                Number of users
 PASSWORD                User's password
 PEXDIR                  PEX-directory
 PREVUSER                Name of previous user
 PVTDIR                  User's private upload-directory
 SCREENLENGTH            Number of lines
 SCREENWIDTH             Number of columns
 STARTDIR                Startup-path
 STATE                   User's state
 SYSDIR                  ProBoard system-directory
 SYSOPNAME               Sysop's name
 TIME {+}                Current time
 TMLEFT                  User's time left today
 TMLIMIT                 User's daily time limit
 TMONLINE                User's online time today
 TOTALTIMEUSED           User's total online time
 TXTDIR                  Path to the ASCII-/ANSI-/AVATAR-files
 UPDIR                   Upload-directory
 USERREC                 User's number in the file USERS.BBS
 VERSION                 ProBoard version number
 VOICEPHONE              User's voice phone number
 %ENVIRONMENT-VARIABLE   Shows the environment variable defined with
                         "SET VARIABLE="

 Ŀ
  Special codes for "hotkey" and "globalkey" {+} 
 

 By using these special codes you can use the following keys as hotkey.

 SPACE          #32
 RETURN         #13
 ESC            #27
 Cursor-left    #19200
 Cursor-right   #19712
 Cursor-up      #18432
 Cursor-down    #20480
 HOME           #18176
 END            #20224

 Examples:      hotkey #27
                globalkey #19200, <
                globalkey #19712, >

 Ŀ
  Error messages 
 

       SYNTAX -> CURSORY [CSI-file]
                 The program could not find any parameter in the DATA-field
                 of the menu editor

        ERROR -> Out of memory
                 Too few memory to display all menu options / animation
                 sequences defined in the CSI-file

        ERROR -> Could not open PBM-file
                 After selecting a menu option the program checks if it
                 is possibly locked by flags, a minumum level or something
                 else in the menu editor. This information is read from
                 "PBM"-files. When CURSORY is called in a language file, no
                 PBM-file exists. In this case the checking must be
                 deactivated manually to prevent this error message. You can
                 do this by using the global CSI-keyword "nocheck"

        ERROR -> Could not open GLOBAL.PBM
                 The file GLOBAL.PBM could not be found. Create a global menu
                 or use the global CSI-keyword "noglobalcheck"

        ERROR -> Could not open CSI-file
                 The CSI-file was not found. This error occurs if the
                 specified file does not exist or the filename and/or the
                 path are not spelled correctly. If this error occurs again
                 in spite of all checking, then use the filename including
                 COMPLETE path and drive name in the DATA-field (you can find
                 further information in the chapter "CURSORY F.A.Q. /
                 Frequently asked questions")

  ERROR [CSI] -> No "menu" defined
                 The specified CSI-file was found, but it contains too few
                 information. The program can only be stared if at least one
                 menu option is defined with "menu"

  ERROR [CSI] -> Unknown keyword in line x
                 In the given line of the CSI-file there is an unkown
                 keyword. Check if the keyword is spelled correctly. You can
                 find further information in the chapter "CURSORY F.A.Q. /
                 Frequently asked questions"

  ERROR [CSI] -> Too many "menu" defined
                 Too many menu options defined

  ERROR [CSI] -> Too many "task" defined
                 Too many animation sequences defined

  ERROR [CSI] -> " expected in line x
                 In the given line a " is missing

  ERROR [CSI] -> Too few parameters in line x
                 In the given line at least one parameter is missing behind
                 the CSI-keyword

  ERROR [CSI] -> Too many parameters in line x
                 In the given line there are too many parameters behind the
                 CSI-keyword. You can find further information about other
                 reasons for this error message in the chapter "CURSORY
                 F.A.Q. / Frequently asked questions"

  ERROR [CSI] -> Keyword outside block in line x
                 In the given line there is a LOCAL CSI-keyword which does
                 not belong to any menu option or animation sequence. Please
                 check if you possibly forgot to define the keywords "menu"
                 or "task" above this keyword
