home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 25 / nopv25.iso / 040A / PBL30DOC.ZIP / SYSOP.DOC < prev   
Encoding:
Text File  |  1997-02-28  |  48.0 KB  |  743 lines

  1.  ____________________________________________________________________________
  2.  @@@@@@@@@@@@@@@@@@@@@**^^""~~~"^@@^*@*@@**@@@@@@@@@
  3.  @@@@@@@@@@@@@*^^'"~   , - ' '; ,@@b. '  -e@@@@@@@@@ A Comprehensive Guide to
  4.  @@@@@@@@*^"~      . '     . ' ,@@@@(  e@*@@@@@@@@@@ Color Systems, Text File
  5.  @@@@@^~         .       .   ' @@@@@@, ~^@@@@@@@@@@@ Control Codes and String
  6.  @@@~ ,e**@@*e,  ,e**e, .    ' '@@@@@@e,  "*@@@@@'^@ Macros for Programs that
  7.  @',e@@@@@@@@@@ e@@@@@@       ' '*@@@@@@    @@@'   @ are Compiled with PB-Lib
  8.  @@@@@@@@@@@@@@@@@@@@@',e,     ;  ~^*^'    ;^~   ' @
  9.  @@@@@@@@@@@@@@@^""^@@e@@@   .'           ,'   .'  @
  10.  @@@@@@@@@@@@@@'    '@@@@@ '         ,  ,e'  .    ;@         ,  /(/(
  11.  @@@@@@@@@@@@@' ,&&,  ^@*'     ,  .  i^"@e, ,e@e  @@     ** }=\,\(,!,
  12.  @@@@@@@@@@@@' ,@@@@,          ;  ,& !,,@@@e@@@@ e@@           {___(_\
  13.  @@@@@,~*@@*' ,@@@@@@e,   ',   e^~^@,   ~'@@@@@@,@@@           ,)  ,/ `-->
  14.  @@@@@@, ~" ,e@@@@@@@@@*e*@*  ,@e  @@""@e,,@@@@@@@@@
  15.  @@@@@@@@ee@@@@@@@@@@@@@@@" ,e@' ,e@' e@@@@@@@@@@@@@
  16.  @@@@@@@@@@@@@@@@@@@@@@@@" ,@" ,e@@e,,@@@@@@@@@@@@@@ Copyright (c) 1995-1997
  17.  @@@@@@@@@@@@@@@@@@@@@@@~ ,@@@,,0@@@@@@@@@@@@@@@@@@@  Branislav L.Slantchev
  18.  @@@@@@@@@@@@@@@@@@@@@@@@,,@@@@@@@@@@@@@@@@@@@@@@@@@        /Gargoyle
  19.  """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  20.  
  21.               "I am a dinosaur... Somebody is digging my bones!"
  22.                                             King Crimson, Thrak
  23.  
  24.  
  25.        [Topic]                                              [Keyword]
  26.  
  27.        Overview and Scope ................................. /OVERVIEW
  28.        Text Control Codes ................................. /TEXTCODES
  29.        String Macros Reference ............................ /MACROS
  30.        Options for Action Macros .......................... /OPTIONS
  31.        Various Examples ................................... /EXAMPLES
  32.        Hex Colors Reference ............................... /COLORS
  33.        Differences with ProBoard .......................... /PROBOARD
  34.  
  35.  
  36.   o v e r v i e w   a n d   s c o p e                               /OVERVIEW
  37.   ───────────────────────────────────────────────────────────────────────────
  38.  
  39.   The text display system built in all programs compiled with PB-Lib is very
  40.   extensive and versatile. This document is provided as a general reference
  41.   for any program compiled with this library. Even though there may be other
  42.   restrictions, generally every text file displayed by the program can make
  43.   use of text control codes, and any text prompt that may be edited in the
  44.   language editor can contain string macros.
  45.  
  46.   A brief explanation of macros follows. This is generalised to refer to
  47.   control codes too. A "macro" for our purposes is a sequence of characters
  48.   with special formatting which, when encountered during output operations
  49.   is replaced by the program with text it represents. Note that some macros
  50.   can specify actions to be taken instead of text substitution. For macros
  51.   which generate text strings, special formatting can be performed in order
  52.   to restrict and/or justify the text within specified limits. Macros may
  53.   not be nested.
  54.  
  55.   For people familiar with ProBoard (and any RemoteAccess-compatible) system,
  56.   most codes will not be anything new. There are however some subtle diffe-
  57.   rences as well as some new codes, so it is recommended that you at least
  58.   look over the following sections. It is surprising what functionality can
  59.   be accomplished with a seemingly restricted set of macros.
  60.  
  61.   Also, reference sections are provided for the supported color code systems.
  62.   These are enabled by default (but this can be changed by the program; make
  63.   sure you read the manuals that come with it) and can be used anywhere in
  64.   text files or user-definable strings. The supported color systems include
  65.   ANSi and Avatar/0 sequences, PCBoard @Xnn codes, Wildcat! @nn@ codes, the
  66.   hexpipe color |nn code specification, ProBoard's \nn, \Lc, and \Hc language
  67.   prompt color system, and the RemoteAccess' ^K[nn color codes. This enables
  68.   you, as the Sysop, to choose what color system to use to best suit your
  69.   need as well as use existing text display files in almost any common format
  70.   known to the BBS scene.
  71.  
  72.  
  73.   t e x t   c o n t r o l   c o d e s   r e f e r e n c e          /TEXTCODES
  74.   ───────────────────────────────────────────────────────────────────────────
  75.  
  76.   "Text control codes" are special characters embedded in text files which
  77.   cause certain information to be displayed or action to be performed. All
  78.   of them consist of a leading character (either ^F or ^K) and code character
  79.   which specifies the type of the code.    In the examples below, '^' means
  80.   Ctrl (that is, ^K means Ctrl+K, which has the ASCii code of 11). These
  81.   values can usually be entered with TheDraw or AcidDraw directly or in any
  82.   text editor by holding down the Alt key and typing the ASCii code for the
  83.   letter. For example, ^F can be entered as Alt+6 (on the numeric keypad).
  84.   You should see the '' character when you do this. The table below lists
  85.   the codes, the ASCii values for both characters and their meaning. Note
  86.   that these codes ARE case-sensitive (i.e. ^FA is NOT the same as ^Fa), so
  87.   you should be careful when entering them.
  88.  
  89.   ╒═══════╤═════╤══════╤════════════════════════════════════════════════════╕
  90.   │ ASCii │ Ctl │ Type │ Description and Notes                              │
  91.   ╞═══════╪═════╪══════╪════════════════════════════════════════════════════╡
  92.   │   1   │ ^A  │ exec │ Waits for the user to press Enter, no prompt shown │
  93.   │   2   │ ^B  │ exec │ Disables interruption by pressing 'S'              │
  94.   │   3   │ ^C  │ exec │ Enables interruption by pressing 'S' (default)     │
  95.   │   4   │ ^D  │ exec │ Enables 'More'-prompt when screen is full          │
  96.   │   5   │ ^E  │ exec │ Disables 'More'-prompts                            │
  97.   │   7   │ ^G  │ exec │ Rings a bell (both local and remote)               │
  98.   │  12   │ ^L  │ exec │ Clears the screen                                  │
  99.   │  23   │ ^W  │ exec │ Pauses for 1 second                                │
  100.   ├───────┴─────┴──────┴────────────────────────────────────────────────────┤
  101.   │ codes dealing with the current user information record                  │
  102.   ├───────┬─────┬──────┬────────────────────────────────────────────────────┤
  103.   │ 06-65 │ ^FA │ text │ Current user's full name                           │
  104.   │ 06-87 │ ^FW │ text │ Current user's first name                          │
  105.   │ 06-49 │ ^F1 │ text │ Current user's handle (fixed alias)                │
  106.   │ 06-67 │ ^FC │ text │ Current user's password                            │
  107.   │ 06-36 │ ^F$ │ text │ Current user's address (line 1)                    │
  108.   │ 06-39 │ ^F' │ text │ Current user's address (line 2)                    │
  109.   │ 06-38 │ ^F& │ text │ Current user's address (line 3)                    │
  110.   │ 06-66 │ ^FB │ text │ Current user's city                                │
  111.   │ 06-52 │ ^F4 │ text │ Current user's state                               │
  112.   │ 06-34 │ ^F" │ text │ Current user's country                             │
  113.   │ 06-68 │ ^FD │ text │ Current user's data phone number                   │
  114.   │ 06-69 │ ^FE │ text │ Current user's voice phone number                  │
  115.   │ 06-61 │ ^F= │ text │ Current user's fax number                          │
  116.   │ 06-53 │ ^F5 │ text │ Current user's birth date (xx-xxx-xxxx)            │
  117.   │ 06-93 │ ^F] │ text │ Current user's comment in the user record          │
  118.   │ 06-96 │ ^F` │ text │ Current user's sex (male/female/unknown)           │
  119.   ├───────┴─────┴──────┴────────────────────────────────────────────────────┤
  120.   │ codes dealing with the current user system settings                     │
  121.   ├───────┬─────┬──────┬────────────────────────────────────────────────────┤
  122.   │ 06-86 │ ^FV │ text │ User's screen length (number of rows)              │
  123.   │ 06-58 │ ^F: │ text │ Date of user's first call (if known)               │
  124.   │ 06-70 │ ^FF │ text │ Date of last login (xx-xxx-xxxx)                   │
  125.   │ 06-71 │ ^FG │ text │ Time of last login (xx:xx:xx)                      │
  126.   │ 11-51 │ ^K3 │ text │ Date of the last password change                   │
  127.   │ 11-52 │ ^K4 │ text │ Date of the last new files check                   │
  128.   │ 06-54 │ ^F6 │ text │ Current user's expiration date, if any             │
  129.   │ 06-55 │ ^F7 │ text │ Number of days to the expiration date, if any      │
  130.   │ 06-79 │ ^FO │ text │ Current user's access level                        │
  131.   │ 06-72 │ ^FH │ text │ A flags setting (flags A through H)                │
  132.   │ 06-73 │ ^FI │ text │ B flags setting (flags I through P)                │
  133.   │ 06-74 │ ^FJ │ text │ C flags setting (flags Q through X)                │
  134.   │ 06-75 │ ^FK │ text │ D flags setting (flags Y through 6)                │
  135.   │ 11-47 │ ^K/ │ text │ Current user's flags setting (all 32 flags)        │
  136.   │ 06-78 │ ^FN │ text │ Number of message last read in current area        │
  137.   │ 06-81 │ ^FQ │ text │ Total number of files uploaded by the user         │
  138.   │ 06-82 │ ^FR │ text │ Total KBytes uploaded by the user                  │
  139.   │ 06-83 │ ^FS │ text │ Total number of files downloaded by the user       │
  140.   │ 06-84 │ ^FT │ text │ Total KBytes downloaded by the user                │
  141.   │ 06-77 │ ^FM │ text │ Total number of messages written by this user      │
  142.   │ 06-80 │ ^FP │ text │ Total number of calls by the user to the system    │
  143.   │ 06-85 │ ^FU │ text │ Total minutes online ever for this user            │
  144.   │ 06-88 │ ^FX │ text │ ANSi emulation status (on/off)                     │
  145.   │ 06-89 │ ^FY │ text │ Screen pausing enable (on/off)                     │
  146.   │ 06-90 │ ^FZ │ text │ ClearScreen codes enable (on/off)                  │
  147.   │ 06-48 │ ^F0 │ text │ Full-screen editor enable (on/off)                 │
  148.   │ 06-50 │ ^F2 │ text │ Command stacking enable (on/off)                   │
  149.   │ 06-56 │ ^F8 │ text │ Avatar/0 emulation status (on/off)                 │
  150.   │ 06-57 │ ^F9 │ text │ Avatar/0+ emulation status (on/off)                │
  151.   │ 06-51 │ ^F3 │ text │ Extended ASCii characters enable (on/off)          │
  152.   │ 11-53 │ ^K5 │ text │ Check for new mail enable (on/off)                 │
  153.   │ 11-54 │ ^K6 │ text │ Check for new files enable (on/off)                │
  154.   │ 11-89 │ ^KY │ text │ Current message area name                          │
  155.   │ 11-49 │ ^K1 │ text │ Current message area number                        │
  156.   │ 06-41 │ ^F) │ text │ Current message group name                         │
  157.   │ 06-43 │ ^F+ │ text │ Current message group number                       │
  158.   │ 11-90 │ ^KZ │ text │ Current file area name                             │
  159.   │ 11-50 │ ^K2 │ text │ Current file area number                           │
  160.   │ 06-40 │ ^F( │ text │ Current file group name                            │
  161.   │ 06-42 │ ^F* │ text │ Current file group number                          │
  162.   │ 06-91 │ ^F[ │ text │ Download KBytes left today                         │
  163.   │ 11-79 │ ^KO │ text │ Minutes online left today                          │
  164.   │ 11-84 │ ^KT │ text │ Daily download limit, in kilobytes                 │
  165.   │ 11-81 │ ^KQ │ text │ Daily online time limit, in minutes                │
  166.   │ 11-75 │ ^KK │ text │ Minutes online during this session only            │
  167.   │ 11-76 │ ^KL │ text │ Seconds connected (always returns 0)               │
  168.   │ 11-77 │ ^KM │ text │ Minutes online today (all sessions)                │
  169.   │ 11-78 │ ^KN │ text │ Seconds used today (always returns 0)              │
  170.   │ 06-126│ ^F~ │ text │ Download delay in minutes                          │
  171.   │ 06-33 │ ^F! │ text │ Minutes remaining until user allowed to download   │
  172.   │ 06-76 │ ^FL │ text │ Netmail credit left to the user                    │
  173.   │ 11-86 │ ^KV │ text │ Name of the recipient of forwarded messages        │
  174.   ├───────┴─────┴──────┴────────────────────────────────────────────────────┤
  175.   │ codes dealing with various system information                           │
  176.   ├───────┬─────┬──────┬────────────────────────────────────────────────────┤
  177.   │ 11-87 │ ^KW │ text │ Current node number                                │
  178.   │ 06-94 │ ^F^ │ text │ Total number of days the system has been active    │
  179.   │ 11-65 │ ^KA │ text │ Total number of calls to the system                │
  180.   │ 11-72 │ ^KH │ text │ Total number of users on the system                │
  181.   │ 11-66 │ ^KB │ text │ Name of the last user on the system                │
  182.   │ 11-67 │ ^KC │ text │ Number of messages in the Hudson messagebase       │
  183.   │ 11-68 │ ^KD │ text │ Number of the first message in the Hudson base     │
  184.   │ 11-69 │ ^KE │ text │ Number of the last message in the current base     │
  185.   │ 11-48 │ ^K0 │ text │ Total number of messages in the active base        │
  186.   │ 11-70 │ ^KF │ text │ Number of times the user has paged the Sysop       │
  187.   │ 11-40 │ ^K( │ text │ Name of currently selected language (eg: ENGLISH)  │
  188.   │ 11-71 │ ^KG │ text │ Day of the week (full name)                        │
  189.   │ 11-83 │ ^KS │ text │ Day of the week (abbreviated version)              │
  190.   │ 11-73 │ ^KI │ text │ Current time (xx:xx:xx)                            │
  191.   │ 11-74 │ ^KJ │ text │ Current date (xx-xxx-xxxx)                         │
  192.   │ 11-80 │ ^KP │ text │ Version number of PB-Lib (x.xx)                    │
  193.   │ 11-82 │ ^KR │ text │ Baud rate (0 if the call is local)                 │
  194.   │ 11-85 │ ^KU │ text │ Minutes until the next system event                │
  195.   ├───────┴─────┴──────┴────────────────────────────────────────────────────┤
  196.   │ codes dealing with various actions to be performed                      │
  197.   ├───────┬─────┬──────┬────────────────────────────────────────────────────┤
  198.   │ 11-42 │ ^K* │ exec │ Wait for Enter from user, with prompt displayed    │
  199.   │ 11-88 │ ^KX │ exec │ Hang up the phone (regular programs terminate)     │
  200.   │ 11-33 │ ^K! │ exec │ Display a text file: ^K!filename|, where the name  │
  201.   │       │     │      │ of the file may not include a path or extension as │
  202.   │       │     │      │ the file is expected to be in the textfiles direc- │
  203.   │       │     │      │ tory and have an extension .AVT/.ANS/.ASC (in that │
  204.   │       │     │      │ order. Note the '|' at the end of the name).       │
  205.   │ 11-36 │ ^K$ │ exec │ Execute another program: ^K$filename|, where the   │
  206.   │       │     │      │ <filename> string can include path and extension.  │
  207.   │       │     │      │ You can also pass parameters to the program; they  │
  208.   │       │     │      │ must be separated with a space from the filename.  │
  209.   │       │     │      │ You can use the *-codes in the options, if any.    │
  210.   │ 11-93 │ ^K] │ exec │ Display language prompt: ^K]nn|, where "nn" is the │
  211.   │       │     │      │ number of the prompt to display (starting from 1)  │
  212.   │ 11-126│ ^K~ │ exec │ Execute a pex program: ^K~filename|, where the     │
  213.   │       │     │      │ filename may not contain a path or extension as it │
  214.   │       │     │      │ is expected to specify a file in the pex directory │
  215.   │       │     │      │ (and as such cannot have path specifications). You │
  216.   │       │     │      │ can use options, which should be separated from    │
  217.   │       │     │      │ the filename by a space. Note the use of the '|'   │
  218.   │       │     │      │ character to mark the end of the sequence.         │
  219.   │ 11-91 │ ^K[ │ colr │ see the RemoteAccess colors reference /COLORS      │
  220.   ├───────┴─────┴──────┴────────────────────────────────────────────────────┤
  221.   │ codes dealing with time bank balance and data                           │
  222.   ├───────┬─────┬──────┬────────────────────────────────────────────────────┤
  223.   │ 11-55 │ ^K7 │ text │ Time Bank time balance, in minutes                 │
  224.   │ 11-56 │ ^K8 │ text │ Time Bank KBytes balance                           │
  225.   │ 11-57 │ ^K9 │ text │ Time Bank time withdrawn (in minutes)              │
  226.   │ 11-34 │ ^K" │ text │ Time Bank KBytes withdrawn                         │
  227.   │ 11-38 │ ^K& │ text │ Time Bank time loaned                              │
  228.   │ 11-39 │ ^K' │ text │ Time Bank KBytes deposited                         │
  229.   │ 11-41 │ ^K) │ text │ Time Bank date last used (xx-xxx-xxxx)             │
  230.   │ 11-43 │ ^K+ │ text │ Time Bank time payback date (xx-xxx-xxxx)          │
  231.   │ 11-58 │ ^K: │ text │ Time Bank time deposited, in minutes               │
  232.   │ 11-61 │ ^K= │ text │ Time Bank KBytes payback date (xx-xxx-xxxx)        │
  233.   │ 11-96 │ ^K` │ text │ Time Bank KBytes loaned                            │
  234.   ╘═══════╧═════╧══════╧════════════════════════════════════════════════════╛
  235.  
  236.   Note that all "text" type codes can also justify their text within certain
  237.   limits. To do this, place '@', '#' or '%' between the first and the last
  238.   characters of the control code. The number of characters (including the
  239.   two control code symbols) determine the maximum length of the field to
  240.   display. If you use the '@' symbol, the text will be left-justified. To
  241.   right-justify the string, use the '#' character. The '%' symbol causes the
  242.   resulting text to be centered within the field. Note that if the text is
  243.   longer than the field width requested, it will be truncated. Since you
  244.   cannot have any special characters between the two control symbols except
  245.   for the optional width symbols, you may need to place TheDraw (or similar
  246.   drawing programs) in animation mode when you save the screen, rescan it
  247.   and finally enter the control code. This will ensure that the codes do not
  248.   have any ANSi escape sequences in-between.
  249.  
  250.   Now you can easily create complex ANSi screens with boxes and other neat
  251.   things without worrying that the text, when replaced, will corrupt the
  252.   display or "bleed over" into another field.
  253.  
  254.  
  255.   s t r i n g   m a c r o s   r e f e r e n c e                       /MACROS
  256.   ───────────────────────────────────────────────────────────────────────────
  257.  
  258.   "String macros" are specially bound keywords which can be embedded in text
  259.   prompts. Note that these are not usually used for display files (but they
  260.   can be). Rather, these are used in any definable text string as specified
  261.   by the program's language file.
  262.  
  263.   The string macros are    formatted with a keyword (KEYWORD) bound between the
  264.   delimeters ("@<" and ">@"). Note that the keywords are NOT case sensitive
  265.   (that is, 'NAME' is the same as 'Name' or 'NaMe' as far as the program is
  266.   concerned). Use this to your advantage in order to make your prompts more
  267.   readable. You can also specify justification and length limiting values.
  268.   The general macro looks like this:
  269.  
  270.                   @<KEYWORD>@
  271.                   ├┘├─────┘├┘
  272.                   │ │      └─── last bounding characters
  273.                   │ └────────── the keyword (see the list below)
  274.                   └──────────── first bounding characters
  275.  
  276.   The 'KEYWORD' string in the example above will be replaced by the runtime
  277.   information that it specifies. You can only use pre-determined keywords from
  278.   the list below. Note that macros are divided into four groups: text substi-
  279.   tution, action, environment access and color manipulation. There are some
  280.   restrictions that apply to the different groups. Only "text" macros can
  281.   use the justification and field width specification. Any of the "exec"
  282.   macros that involve file names can specify the full file name and some of
  283.   them allow command-line options to be passed to the program.
  284.  
  285.   ╒════════════════╤══════╤═════════════════════════════════════════════════╕
  286.   │ Keyword        │ Type │ Explanation and notes                           │
  287.   ╞════════════════╪══════╪═════════════════════════════════════════════════╡
  288.   │ BAUD           │ text │ Current baud rate (0 if local)                  │
  289.   │ CITY           │ text │ Current user's city                             │
  290.   │ COUNTRY        │ text │ Current user's country                          │
  291.   │ CURFILEAREA    │ text │ Name of the active file area                    │
  292.   │ CURFILEAREA#   │ text │ Number of the active file area, starting from 1 │
  293.   │ CURFILEAREADIR │ text │ Directory for the active file area              │
  294.   │ CURFILEGROUP   │ text │ Name of the current file group                  │
  295.   │ CURFILEGROUP#  │ text │ Number of the current file group                │
  296.   │ CURMENU        │ text │ Name of the current menu (name only: GLOBAL)    │
  297.   │ CURMSGAREA     │ text │ Name of the active message area                 │
  298.   │ CURMSGAREA#    │ text │ Number of the active message area (1..)         │
  299.   │ CURMSGGROUP    │ text │ Name of the active message group                │
  300.   │ CURMSGGROUP#   │ text │ Number of the current message group             │
  301.   │ DATAPHONE      │ text │ User's data phone                               │
  302.   │ DATE           │ text │ Today's date (xx-xxx-xxxx)                      │
  303.   │ FIRSTNAME      │ text │ User's first name                               │
  304.   │ HANDLE         │ text │ User's handle (fixed alias)                     │
  305.   │ HIGHMSG        │ text │ Highest message number in the current base      │
  306.   │ ID             │ text │ The level ID for this user (from the limits)    │
  307.   │ LANGUAGE       │ text │ Current language (root name only: ENGLISH)      │
  308.   │ LASTDATE       │ text │ Date of the last login (xx-xxx-xxxx)            │
  309.   │ LASTTIME       │ text │ Time of the last login (xx:xx:xx)               │
  310.   │ LEVEL          │ text │ User's access level                             │
  311.   │ LOWMSG         │ text │ Lowest message number in the Hudson messagebase │
  312.   │ MNUDIR         │ text │ Menu files directory                            │
  313.   │ MSGDIR         │ text │ Hudson messagebase directory                    │
  314.   │ NAME           │ text │ Full name of the current user                   │
  315.   │ NLDIR          │ text │ Nodelist directory                              │
  316.   │ NODE           │ text │ Current node number                             │
  317.   │ NUMMSG         │ text │ Number of messages in the active messagebase    │
  318.   │ NUMUSERS       │ text │ Total number of users on the system             │
  319.   │ NUMYELLS       │ text │ Times the user has paged the sysop              │
  320.   │ PASSWORD       │ text │ Current user's password                         │
  321.   │ PEXDIR         │ text │ Pex programs directory                          │
  322.   │ PVTDIR         │ text │ Private uploads directory                       │
  323.   │ STARTDIR       │ text │ Startup directory                               │
  324.   │ SYSDIR         │ text │ ProBoard system directory                       │
  325.   │ SYSOPNAME      │ text │ Name of the Sysop                               │
  326.   │ TIME           │ text │ Current time (xx:xx:xx)                         │
  327.   │ TMLEFT         │ text │ Number of minutes left online                   │
  328.   │ TMONLINE       │ text │ Minutes spent online this session               │
  329.   │ TOTALCALLS     │ text │ Number of total calls to the system             │
  330.   │ TOTALMSG       │ text │ Total number of messages in the Hudson base     │
  331.   │ TXTDIR         │ text │ Text files directory                            │
  332.   │ UPDIR          │ text │ Uploads directory                               │
  333.   │ USERREC        │ text │ User record number in the base (starts from 0)  │
  334.   │ VERSION        │ text │ Version of the library (x.xx)                   │
  335.   │ VOICEPHONE     │ text │ Current user's voice phone number               │
  336.   │ PAUSE          │ exec │ Wait for Enter (no prompt is displayed)         │
  337.   │ CLS            │ exec │ Clear the entire screen                         │
  338.   │ CLREOL         │ exec │ Clear to the end of the current line            │
  339.   │ BEEP           │ exec │ Beep (both local and remote)                    │
  340.   │ WAIT           │ exec │ Wait for 1 second                               │
  341.   │ HANGUP         │ exec │ Hangup the phone (local programs will exit)     │
  342.   │ %NAME          │ env. │ Replaced by the contents of the MS-DOS environ- │
  343.   │                │      │ ment variable "NAME". Note the '%' symbol used  │
  344.   │                │      │ in the macro. If the variable does not exist,   │
  345.   │                │      │ the macro will NOT be parsed at all!            │
  346.   │ !FILENAME      │ exec │ Display a text file "FILENAME". Note that the   │
  347.   │                │      │ file must be in ProBoard's textfiles directory  │
  348.   │                │      │ and you should not specify an extension (.AVT,  │
  349.   │                │      │ .ANS or .ASC will be used, as needed).          │
  350.   │ ~FILENAME      │ exec │ Run a PEX program "FILENAME". You cannot use a  │
  351.   │                │      │ directory or extension. The pex file must be in │
  352.   │                │      │ the ProBoard's pex directory. You can specify   │
  353.   │                │      │ command-line options to be passed to the pex,   │
  354.   │                │      │ in which case you must separate them from the   │
  355.   │                │      │ pex name with a space (they must be within the  │
  356.   │                │      │ macro bounds, though). You can also use any of  │
  357.   │                │      │ the *-code text substitution macros in the list │
  358.   │                │      │ of options. Refer to /OPTIONS section.          │
  359.   │ $FILENAME      │ exec │ Run a regular executable "FILENAME". Unlike the │
  360.   │                │      │ pex, you can specify the full path to the file  │
  361.   │                │      │ to be run. If the extension is omitted, .COM,   │
  362.   │                │      │ .EXE and .BAT will be tried, in that order. If  │
  363.   │                │      │ no path is specified, a standard MS-DOS search  │
  364.   │                │      │ will be performed: current directory first and  │
  365.   │                │      │ then the directories in the PATH statement.     │
  366.   │ ]nnn           │ exec │ Display language prompt "nnn", where "nnn" is   │
  367.   │                │      │ number of the prompt, starting from 1. This     │
  368.   │                │      │ uses the currently ative ProBoard language file │
  369.   │ #n             │ colr │ Change color. Refer to the /COLORS section for  │
  370.   │                │      │ the acceptable color codes. Note that you can   │
  371.   │                │      │ specify the foregroun color only (one digit),   │
  372.   │                │      │ with the background defaulting to black in this │
  373.   │                │      │ case, or both background and foreground, in     │
  374.   │                │      │ which case, the background must be specified    │
  375.   │                │      │ first, and the foregroun - second after the '#' │
  376.   │                │      │ special character. This is the same as others.  │
  377.   ╘════════════════╧══════╧═════════════════════════════════════════════════╛
  378.  
  379.   There are also several special ways to justify the macro. The default is
  380.   to display it left-justified. To specify the maximum length that the macro
  381.   can occupy, you would specify the number after a colon, like this:
  382.  
  383.             @<KEYWORD:-nn>@
  384.             ├┘├─────┘││├┘├┘
  385.             │ │      │││ └───── last bounding characters (required)
  386.             │ │      ││└─────── maximum field width (required, 1..80)
  387.             │ │      │└──────── justification code (optional)
  388.             │ │      └───────── colon separator (required)
  389.             │ └──────────────── the keyword (see the list above)
  390.             └────────────────── first bounding characters (required)
  391.  
  392.   Note that whenever you use a width specifier, the text replacement will
  393.   be exactly that width characters long. If the text is shorter, it will be
  394.   padded as necessary (depending on the justification mode). If it is longer,
  395.   it will be truncated (also depending on the justification). If you only
  396.   specify the keyword (and no colon with parameters), the macro will be
  397.   replaced with the text it represents and the result will occupy exactly as
  398.   many spaces as needed by the text, left-justified. If you want to limit
  399.   the width of the field, you would use the maximum number of characters in
  400.   the place where "nn" is show in the example above. Note that the character
  401.   preceding it is optional and will change the text justification within the
  402.   specified limit. You must use the limit number if you want justification
  403.   any other than the default left (this makes sense as the program must know
  404.   where the right boundary is in order to center the text, for example). To
  405.   right-justify the text, you would use a dash ("-") for the justification
  406.   code. To center the string, you would use the percent symbol ("%") there.
  407.   Note that justification and width specification is only available for text
  408.   substitution macros and cannot be used with any of the action macros, the
  409.   special environment replacement macro, or the color change macros.
  410.  
  411.  
  412.   o p t i o n s   f o r   a c t i o n   c o d e s                    /OPTIONS
  413.   ───────────────────────────────────────────────────────────────────────────
  414.  
  415.   All action macros and control codes that run external programs (both pexen
  416.   and exe's) can use any of the following *-code options in the parameter
  417.   list to pass to the programs. These are compatible with ProBoard's Function
  418.   No. 7 - Shell optional data arguments. Note, however, that only some will
  419.   be available in .exe files (marked below). All of these can be used in
  420.   pexen coded with PB-Lib as ProBoard will then perform the actual expansion.
  421.  
  422.   ╒══════╤═════════╤════════════════════════════════════════════════════════╕
  423.   │ code │ pex/exe │ description                                            │
  424.   ╞══════╪═════════╪════════════════════════════════════════════════════════╡
  425.   │  **  │ pex/exe │ replaced by an asterisk ('*')                          │
  426.   │  *#  │ pex/exe │ replaced by the node number                            │
  427.   │  *\  │   pex   │ sends the message "Sysop is shelling..." to the user   │
  428.   │  *!  │   pex   │ freezes proboard's system timer when shelling          │
  429.   │  *=  │   pex   │ do not call any fossil functions when shelling         │
  430.   │  *A  │   pex   │ writes user's handle to DORINFOx.DEF instead of name   │
  431.   │  *B  │ pex/exe │ current baud rate                                      │
  432.   │  *C  │ pex/exe │ full name & path of the command interpreter (COMSPEC)  │
  433.   │  *D  │   pex   │ write 52-line DOOR.SYS file to the current directory   │
  434.   │  *E  │   pex   │ writes RA 1.1x EXITINFO.BBS to the current directory   │
  435.   │  *F  │ pex/exe │ user's first name                                      │
  436.   │  *G  │   pex   │ indicates whether user has ANSI (1) or ASCII (0) set   │
  437.   │  *H  │   pex   │ do not disable the fossil driver when shelling         │
  438.   │  *I  │   pex   │ maximum user-inactivity (seconds)                      │
  439.   │  *L  │ pex/exe │ user's last name                                       │
  440.   │  *M  │ pex/exe │ proboard's start-up directory (including trailing '\') │
  441.   │  *N  │   pex   │ shell will NOT be logged in PROBOARD.LOG               │
  442.   │  *O  │ pex/exe │ (not zero!) the path of the current file area          │
  443.   │  *P  │ pex/exe │ com-port used by proboard (1-8).                       │
  444.   │  *Q  │   pex   │ don't let user know that proboard is shelling (!)      │
  445.   │  *R  │ pex/exe │ user's record number in USERS.BBS                      │
  446.   │  *S  │ pex/exe │ proboard's system directory (incl. trailing '\')       │
  447.   │  *T  │ pex/exe │ time left for the user today (minutes).                │
  448.   │  *V  │   pex   │ don't add 2 to graphic line in DORINFOx.DEF for Avatar │
  449.   │  *W  │   pex   │ runs the shell in a window, status line not cleared    │
  450.   │  *X  │   pex   │ always swap to disk/ems, even if swapping is disabled  │
  451.   │  *Y  │   pex   │ do not swap to disk/ems                                │
  452.   │  *Z  │ pex/exe │ same as entering "*C /C <command>" (for batch files)   │
  453.   │  *_  │   pex   │ don't use underscores in user's last name, DORINFO.DEF │
  454.   │  *0  │   pex   │ (zero) write DORINFO1.DEF instead of DORINFO<node>.DEF │
  455.   │  *1  │   pex   │ redisplay the status line of first line of the screen  │
  456.   │  *2  │   pex   │ same as *1, but uses the bottom line of the screen     │
  457.   ╘══════╧═════════╧════════════════════════════════════════════════════════╛
  458.  
  459.   Also note that you can use the options anywhere in the data specification
  460.   line (for example, to specify the program PBUTIL.EXE located in the system
  461.   directory, you would use *MPBUTIL.EXE). For batch files (or when you want
  462.   the PATH searched for the program specified on the command line), you need
  463.   to use the *Z code instead if the *C code. For example, to run the batch
  464.   file D:\SBIN\ROTATE.BAT, you would use "*Z D:\SBIN\ROTATE.BAT" as the data.
  465.  
  466.  
  467.   v a r i o u s   e x a m p l e s                                   /EXAMPLES
  468.   ───────────────────────────────────────────────────────────────────────────
  469.  
  470.   Here are string macro examples for the text substitution keywords. We will
  471.   use the keyword "NAME" in all examples. This keyword will be replaced by
  472.   the user's full name at runtime by the program.
  473.  
  474.       @<NAME>@     - display name, left-justified, unbound length
  475.       @<NAME:35>@  - display name, left-justified in a 35-character field
  476.       @<NAME:-35>@ - display name, right-justified in a 35-character field
  477.       @<NAME:%35>@ - display name, centered in a 35-character field
  478.  
  479.   Here are string macro examples for the action keywords. We will use the
  480.   filename "hello" for an example filename (it may or may not include
  481.   the directory specification and file extension, refer to the notes that
  482.   came with your programs for relevant exceptions to this or some other
  483.   restrictions or requirements the application may have). Note that you
  484.   cannot use the formatting codes as in the text substitution macros. You
  485.   can, however, use the *-codes (*P. *S, etc.) as parameters to the macros
  486.   that run pex and exe programs.
  487.  
  488.       @<PAUSE>@         - stop until Enter is pressed, no prompt issued
  489.       @<HANGUP>@        - hangs up the phone (or aborts local programs)
  490.       @<!hello>@        - display HELLO.A?? file from the textfiles directory
  491.       @<]159>@          - display prompt 159 from the current language file
  492.       @<~hello>@        - run the HELLO.PEX program from the pex directory
  493.       @<$hello>@        - run a HELLO.COM, HELLO.EXE or HELLO.BAT (must be
  494.                           in the PATH or in the current directory)
  495.       @<~hello -y /35>@    - run HELLO.PEX with "-y /35" as commandline options
  496.       @<$hello.exe *S>@ - run the HELLO program with *S expanded
  497.  
  498.   Here are string macro examples for the environment substitution keyword.
  499.   Note that you cannot use justification or field with codes with this macro.
  500.  
  501.       @<%PROBOARD>@     - expands to the content of the environment variable
  502.                           PROBOARD. If none is defined, will not expand at
  503.                           all (i.e. @<%PROBOARD>@ will be displayed). While
  504.                           this may seem odd, it certainly makes easier to
  505.                           track down mistakes, which are common anyway.
  506.  
  507.   Here are string macro examples for the color change keyword. Note that
  508.   these cannot contain any text justification or field width codes and that
  509.   they are executed immediately when encountered.
  510.  
  511.       @<#7>@   - change attribute to grey on black
  512.       @<#13>@  - change attribute to dark cyan on blue
  513.       @<#F>@   - change attribute to bright white on black
  514.       @<#8F>@  - change attribute to blinking white on black
  515.  
  516.   Note that these are absolutely the same as the other hex color systems
  517.   except that it allows for the foreground color to be specified only, in
  518.   which case the background is set to black. Also note that the handling
  519.   differs slightly with the way ProBoard handles the color change macros.
  520.  
  521.   Here are text code examples that show the use of text substitution codes.
  522.   We will use the user's name code (^FA) for simplicity.
  523.  
  524.       A                - left justified, no maximum width specified
  525.       @@@@@@@@@@@@@@@A    - left justified, in a 17-character field (15+2)
  526.       ###############A - right justified, in a 17-character field
  527.       %%%%%%%%%%%%%%%A - centered, in a 17-character field
  528.  
  529.   Here are some examples that show the use of action codes. Note that you
  530.   cannot use the special formatting and justification characters here.
  531.   We will use the 'HELLO' string as a sample for a filename. Special notes
  532.   are provided where necessary as to the expected whereabouts of the file.
  533.  
  534.        !HELLO| - displays text file HELLO.A?? in the textfiles directory
  535.        $HELLO| - run the HELLO program. You can use full path for the name:
  536.                   $C:\BIN\HELLO.EXE|. If you do not provide an extension,
  537.                  the following will be matched (in this order): COM/EXE/BAT.
  538.                  If you do not provide a path, the current directory will be
  539.                  searched, and then the PATH environment will be used in an
  540.                  attempt to locate the file. It is advisable that you always
  541.                  use the full file name and extension to avoid costly errors.
  542.                  You can pass parameters:  $HELLO /N*#|, where '*#' will be
  543.                  expanded to the current node number.
  544.        ]129|     Display language prompt 129 from the current language file.
  545.        ~HELLO|   Run the pex HELLO.PEX in the pexfiles directory. You cannot
  546.                  use directory or extension in the filename specification.
  547.                  You can pass options to the program, separated with a space
  548.                  from the name. You can use any of teh *-codes which will be
  549.                  expanded by the program:  ~HELLO *S|
  550.  
  551.  
  552.  
  553.   h e x a d e c i m a l   c o l o r   r e f e r e n c e               /COLORS
  554.   ───────────────────────────────────────────────────────────────────────────
  555.  
  556.   The hexadecimal color specification has gained a lot of popularity on the
  557.   BBS scene. Most systems support slight variations of the same basic hex
  558.   format. "Hexadecimal" is a number system which is based on 16 instead of
  559.   10 (which is the familiar decimal system we commonly use). The reason for
  560.   using the hexadecimal system is simple - there are 16 possible colors in
  561.   text mode applications today. There are a couple of rules which most of
  562.   the supported formats follow:
  563.  
  564.         o the allowable characters are 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
  565.         o the hex value always uses two characters
  566.         o the first character is the background color
  567.         o the second character is the foreground color
  568.         o there are only 8 colors that vary in intensity and blink
  569.         o to make the foreground blink, add 8 to the background
  570.         o to make the foreground high intensity, add 8 to the foreground
  571.  
  572.   In the examples and notes that follow, "**" denotes the background/fore-
  573.   ground color combination that forms the color attribute.
  574.  
  575.   The Hexpipe Color System uses |** to specify the color attribute (note
  576.   that this is not the same as Renegade or IceEdit's color codes). PCBoard
  577.   uses @X** to specify the color. Wildcat! uses @**@ for the attribute.
  578.   RemoteAccess uses ^K[**, and ProBoard uses \**. There are slight variations
  579.   with the ProBoard color system which are supported and are explained below.
  580.   Note that while the PB-Lib interpreter is not generally case-sensitive, you
  581.   should not assume that other applications are not as well. Therefore, you
  582.   should always use the capital case letters for the hex colors.
  583.  
  584.    ╒═════╤═══════════════╤═══════════════════╤════════════╤════════════════╕
  585.    │ Hex │ Foreground    │ Notes             │ Background │ Notes          │
  586.    ╞═════╪═══════════════╪═══════════════════╪════════════╪════════════════╡
  587.    │  0  │ black         │ low  int. black   │ black      │                │
  588.    │  1  │ blue          │ low  int. blue    │ blue       │                │
  589.    │  2  │ green         │ low  int. green   │ green      │                │
  590.    │  3  │ cyan          │ low  int. cyan    │ cyan       │                │
  591.    │  4  │ red           │ low  int. red     │ red        │                │
  592.    │  5  │ magenta       │ low  int. magenta │ magenta    │                │
  593.    │  6  │ brown         │ low  int. yellow  │ brown      │                │
  594.    │  7  │ light gray    │ low  int. white   │ light gray │                │
  595.    │  8  │ dark gray     │ high int. black   │ black      │ fore. blinking │
  596.    │  9  │ light blue    │ high int. blue    │ blue       │ fore. blinking │
  597.    │  A  │ light green   │ high int. green   │ green      │ fore. blinking │
  598.    │  B  │ light cyan    │ high int. cyan    │ cyan       │ fore. blinking │
  599.    │  C  │ light red     │ high int. red     │ red        │ fore. blinking │
  600.    │  D  │ light magenta │ high int. magenta │ magenta    │ fore. blinking │
  601.    │  E  │ light yellow  │ high int. yellow  │ brown      │ fore. blinking │
  602.    │  F  │ light white   │ high int. white   │ light gray │ fore. blinking │
  603.    ╘═════╧═══════════════╧═══════════════════╧════════════╧════════════════╛
  604.  
  605.   This chart allows you to easily see the effect on each hex digit when
  606.   used either as a foreground or as background character. The notes that
  607.   specify the intensity are provided for your convenience so you can discern
  608.   the relationship between the 8 basic colors and their variations. It's
  609.   all actually rather simple. Just don't forget that the first color code
  610.   in the specification is the background character. Some examples follow.
  611.  
  612.   Hexpipe Color Examples. These are quite common within FILE_ID.DIZ file
  613.   descriptions and the such. Very easy to use:
  614.  
  615.       |01 - dark blue on black         |81 - blinking blue on black
  616.       |10 - black on dark blue         |90 - blinking black on blue
  617.  
  618.   PCBoard-style color codes. These are common on the underground BBS scene
  619.   where some people prefer to use this format to ANSi (as the files that use
  620.   it are still somewhat readable for humans... or so they claim).
  621.  
  622.       @X1E - bright yellow on blue     @XFF - blinking white on light gray
  623.       @X00 - black on black (hidden)   @X80 - blinking black on black
  624.  
  625.   The Wildcat! color system is also very similar to PCBoard, except it uses
  626.   a terminator character instead of the 'X' in the color string:
  627.  
  628.      @4C@  - bright red on red         @5E@ - bright yellow on magenta
  629.      @CLS@ - not color (clear screen)  @6F@ - bright white on brown
  630.  
  631.   Because of the similarity of PCBoard and Wildcat! codes, if you choose
  632.   to support one of them, the other is automatically supported too. Note
  633.   that the special @CLS@ code is also used and will cause the screen to
  634.   be cleared using the current color attribute.
  635.  
  636.   RemoteAccess supports special color codes in strings and text files. These
  637.   can be used with PB-Lib programs too. The general format is somewhat close
  638.   to the text control characters described earlier. You have a start of
  639.   sequence character (^K), the '[' character, followed by the two digit color
  640.   attribute (note that ^K is one character with ASCii value of 11)
  641.  
  642.      ^K[0F - bright white on black     ^K[8F - blinking white on black
  643.      ^K[CE - blinking yellow on red    ^K[35 - magenta on cyan (yuick!)
  644.  
  645.   The ProBoard color code system (as used in the language files) is a little
  646.   more involved as it allows for simplifications in the color specification.
  647.   There are two distinct formats (the one is actually a string macro) and
  648.   both of them have two variations each (talk about confusion!). To simplify
  649.   things, I will list all the additional variations below. The first format
  650.   uses \** for the color attribute. This is consistent with the previously
  651.   discussed formats (most similar to the hexpipes):
  652.  
  653.      \01 - dark blue on black           \09 - light blue on black
  654.      \81 - blinking dark blue on black  \89 - blinking light blue on black
  655.  
  656.   There is a simplified notation which allows you to specify the foreground
  657.   color and its intensity only instead of the whole attribute. Note that
  658.   this causes the background to be set to black regardless of the current
  659.   value. You would use either 'L' (low) or 'H' (high) as the first letter
  660.   to specify the intensity of the second (the foreground). You can no longer
  661.   use the hexadecimal values for the foreground either. Here's the complete
  662.   list of allowable codes (note that the second letter is a color mnemonic):
  663.  
  664.      \HB - bright blue                  \LB - dark blue
  665.      \HG - bright green                 \LG - dark green
  666.      \HC - bright cyan                  \LC - dark cyan
  667.      \HR - bright red                   \LR - dark red
  668.      \HP - bright purple (magenta)      \LP - dark purple (magenta)
  669.      \HY - bright yellow                \LY - dark yellow (brown)
  670.      \HW - bright white                 \LW - dark white (light gray)
  671.  
  672.   The other format actually uses the color change macro. It also allows for
  673.   tow-character background/foreground specification, but also allows for a
  674.   one character foreground-only attribute (in which case the background will
  675.   be set to black regardless of the current value). Note the use of the '#'
  676.   (pound sign) character to denote the macro type:
  677.  
  678.      @<#7>@  - black background, color is light grey
  679.      @<#1F>@ - bright white on dark blue background (first character)
  680.      @<#CC>@ - blinking bright red on dark red
  681.      @<#F>@  - bright white on black background
  682.  
  683.   Now that you know you can use at least 6 different ways to change the
  684.   colors, a question probably arises which one to choose. Well, it all
  685.   depends. Most likely, the PB-Lib programs will have them all enabled
  686.   unless otherwise noted in the application manuals. It is all a matter of
  687.   personal preference. My choice would be either the hexpipe color system
  688.   or the ProBoard \** colors. These produce a least cluttered string and
  689.   are easy to follow. Note that you are not stuck with your choice, you
  690.   can freely mix different codes in any strings (even though I fail to see
  691.   how this can work to your advantage). Generally, do whatever you want!
  692.  
  693.  
  694.   d i f f e r e n c e s   w i t h   p r o b o a r d                 /PROBOARD
  695.   ───────────────────────────────────────────────────────────────────────────
  696.  
  697.   This section outlines some major differences between the way that ProBoard
  698.   handles text macros and control codes and the implementation in PB-Lib.
  699.  
  700.   While we strove to maintain compatibility with ProBoard, there are some
  701.   nuances worth mentioning here. Invariably, all changes were forced by the
  702.   need to improve on the current design. For example, ProBoard does not
  703.   support any color system other than its native and the standard ANSi and
  704.   Avatar/0 terminals. Also, it does not support any of the program execution
  705.   macros and control codes.
  706.  
  707.   All text codes dealing with the time bank information have been added for
  708.   PB-Lib and are not available in ProBoard. The flag formatting codes (for
  709.   flags A, B, C, and D) do the same in ProBoard as the full 32-character
  710.   string. We have a different implementation which allows you to split the
  711.   flags into 4 chunks with 8 flags in each.
  712.  
  713.   ProBoard does not support macros or codes to display prompts from language
  714.   files. This is a unique feature of PB-Lib and programs using it.
  715.  
  716.   The width specifiers for text control codes do not truncate longer strings
  717.   in ProBoard. This sometimes messes up the display. PB-Lib will cut off all
  718.   excess characters.
  719.  
  720.   The @<VERSION>@ macro and the ^KP text code return the version of PB-Lib
  721.   and not the version of ProBoard. This makes a lot of sense in my dim-wit
  722.   mind :-)
  723.  
  724.   A couple of new toggle reports have been added (check for mail/files).
  725.   Also note that all strings for the on/off status display in lowercase (my
  726.   personal preference as I always find capital letters harder to read).
  727.  
  728.   The sex reporting control code does not display the text from the language
  729.   file. This is done on purpose. Now you can actually know how long the text
  730.   is (it displays "male", "female" or "uknown").
  731.  
  732.   The @<#n>@ color change macro behaves differently. When a single color is
  733.   specified, it is the same as in ProBoard. The two-digit version is totally
  734.   different (and offers more flexibility).
  735.  
  736.   The @<>@ macros let you center the text too (with the '%' justification
  737.   code). ProBoard only lets you justify it to the left or right.
  738.  
  739.   There are probably other things that I can't recall right now.
  740.  
  741.   [eof]
  742.   ───────────────────────────────────────────────────────────────────────────
  743.