
                               rxsh

|                    Pre-Release version 0.0.7


                    User's Guide and Reference


|                          03-Sep-1994


                            *   *   *
                             +--+--+
                              +===+


                A Rexx-aware command shell for the
            Microsoft Windows NT v3.5 Operating System


       Copyright (c) 1994  Wm. Potvin II  All Rights Reserved.


  Preface:
  --------

  This document describes the rxsh command interpreter for Microsoft
  Windows NT and Quercus Systems Personal Rexx for Windows NT.

  Following are Trademarks which appear in this document:

      Personal Rexx is a trademark of Quercus Systems

      Microsoft, MS, Windows, Win32 and Windows NT are trademarks of
          Microsoft Corporation

      IBM and OS/2 are trademarks of International Business Machines
          Corporation

      OS/2 is a registered trademark licenced to Microsoft Corporation

      Unix is a registered trademark of Unix Systems Laboratories

      CompuServe is a registered trademark of CompuServe, Inc.


  Contents:
  ---------

  Preface ......................................................... xxx
  Introduction .................................................... xxx
  Release Notes ................................................... xxx
  Installation/Usage/Notes ........................................ xxx
| Entering Rexx Statements from the Command Line .................. xxx
| Known Bugs/Limitations .......................................... xxx
| rxsh Command Reference .......................................... xxx
|     Summary ..................................................... xxx
|     Detail ...................................................... xxx
  Possible Enhancements ........................................... xxx
| Acknowledgements ................................................ xxx
  Contact Information ............................................. xxx
  Distribution File List .......................................... xxx
  Warranty/Licence ................................................ xxx
  Other Notes/Announcements ....................................... xxx


  Introduction:
  -------------

  rxsh is a command shell much like cmd.exe which includes support for
  the execution of Rexx EXECs via Quercus Systems Personal Rexx for
  Windows NT.  This functionality is *NOT* available via the IBM OS/2
  Rexx implementation; rxsh *requires* Personal Rexx for Windows NT.

  rxsh has been compiled and link-edited under MS Windows NT v3.5 and
| the SDK for that system.  rxsh has been tested with Windows NT v3.1
| and it will *NOT* work properly on that system.  rxsh has been tested
  with the most recent Beta release of Quercus Systems Personal Rexx
  for Windows NT as well as with the most recent Beta release of my
  merxutil function package for Personal Rexx for Windows NT.  rxsh does
  not in and of itself require my merxutil function package, however
  that function package does provide access to many Windows NT system
  services from a Rexx EXEC.  For more information, down load the help
  file for the merxutil function package from the Quercus Library on
  PCVENA in Library 11 on Compuserve.

  rxsh is meant to compliment the rexx.exe program which ships with
  Personal Rexx for Windows NT.  rxsh will *NOT* run an EXEC which is
  specified on the command line, i.e. "c:\>rxsh myexec.rex".  To do
  that, use the rexx.exe program that ships with Personal Rexx.

  Changes to this document are indicated by a "|" in the first column.


  Release Notes:
  --------------

| v0.0.7
|     Note that this open Pre-Release will consist of, at least, two
|     additional release levels, after which the version number will
|     be incremented to 0.1.0, which will be the first open Beta
|     release.  At this time, the decision is for rxsh to progress to
|     Beta status.
|
|     Converted all internal storage allocations from heap to virtual.
|
|     Recoded exit routines to take advantage of virtual memory for
|         buffers larger than 1024 bytes.  This limit will change with
|         a future release since the virtual storage functions deal in
|         4K pages and 1K allocations are, therefore, wasteful.  The
|         motivation behind the 1K buffer size if to make it much more
|         likely that the functionality will be exercised.  Once I am
|         satisfied that the virtual storage functions operate as they
|         are supposed to, then the allocation buffer size will be
|         increased to 4K.
|
|     Bug fix: leading blanks are now being stripped from input lines.
|
|     Bug fix: removed code specific to the "dir" command that was
|         specific to a very early release of rxsh.
|
|     Bug fix: files with a ".bat" extension are no longer passed to
|         the Rexx interpreter for execution.
|
|     Added Personal Rexx Version to all version displays
|
|     Added Rexx implementation information to all version displays.
|
|     Modified execute code to display "spawned" process pid only if
|         the process was created as a "background" process.
|
|     Added virtual storage accounting of number of allocations and
|         bytes requested.  This information is displayed at shutdown
|         time if debug mode is on.
|
|     Modified control-c/break handler to use "printf( "\007" )" as
|         opposed to the more costly "MessageBeep( 0xFFFFFFFF )".
|
|     Added internal commands:
|         bell       - sound the speaker.
|         cp         - copy <source> to <destination>
|         cwd        - display current directory structure
|         prts       - display local printers
|         ps         - display window processes
|         svcs       - display active local services
|         md         - create a directory
|         mkdir      - create a directory
|         rd         - remove a directory
|         rmdir      - remove a directory
|
|     Added the rxsh Subcommand Environment.  rxsh internal commands
|         can be accessed by an EXEC invoked via rxsh by using the
|         ADDRESS keyword.  for example:
|
|             ADDRESS rxsh title "my exec"
|
|         Note that this Subcommand Environment is in its earliest of
|         stages.  No rxsh internal commands are supported except for
|         the rxsh "help", "title", "bell" and "clear" commands with
|         this release.  The Subcommand Environment will be enhanced
|         with future Pre-Releases of rxsh.
|
|     Added many more debug mode messages.
|
|     Bug fix: ".com" files are now properly handled by the execute
|         function.
|
|     Added internal routines to process command-line input in order
|         to prepare for the move away from the CRT functions to the
|         Win32 API functions.
|
|     Increased the size of the input buffer.
|
|     rxsh now allows the input of Rexx statements on the command line
|         for execution by the interpreter.  Up to 1024 bytes of Rexx
|         language statements may be entered.  Each clause must be
|         separated by a semicolon, ";".  Refer to the section below
|         titled "Entering Rexx Statements from the Command Line" for
|         details.
|
|     There are two command line switches available when rxsh is
|         invoked: "-d" and "-?".  The "-d" command line switch causes
|         rxsh to start in debug mode.  Note that quite a few messages
|         are displayed when rxsh is started in this manner.  The "-?"
|         switch simply displays rxsh usage:
|
|                         usage: rxsh [-][d?]
|
|         These switches will not be otherwise documented.  These
|         switches appeared with release 0.0.6, but were mentioned in
|         only a cursory fashion.
|
|     Added version information and icon resources to the rxsh binary.
|         Since the icon is now bound, it will no longer be shipped
|         separately.
|
|     Added code to maintain the current directory structure for each
|         active drive on the system.
|
|     Exceptions are now handled by rxsh; if an exception occurs, then
|         rxsh will report the failing instruction address, the action
|         that was attempted and the contents of all registers.  Note
|         in particular that rxsh is build under the x86 version of
|         Microsoft Windows NT v3.5.  Possible later builds of rxsh
|         for the ALPHA and MIPS platforms will display register data
|         pertinant to those platforms.  For portability reasons, the
|         register displays may be removed in subsequent builds.
|
|     rxsh now records an intialization and a termination event to the
|         system application event log.
|
|     *****************************************************************
|     *NOTE* rxsh has now been tested under Microsoft Windows NT v3.1
|         and it DOES NOT OPERATE CORRECTLY.  The problem is relative
|         to the SearchPath() Win32 API function.  Microsoft has said
|         that any still-existing incompatibilities between NT v3.1
|         and NT v3.5 will *NOT BE RESOLVED*.  They have further said
|         that their plans involve all NT v3.1 systems being upgraded
|         to NT v3.5, when it is released.  As a consequence, I have
|         no plans at this time to modify rxsh such that it will run
|         successfully under NT v3.1, but that may change if there is
|         sufficient demand for rxsh under NT v3.1.  Also note that
|         prior to this release, (v0.0.7), this problem was manifested
|         in rxsh's inability to successfully execute a Rexx EXEC.
|         With the changes incorporated into this release, it is very
|         likely that rxsh will be unable to run *anything* except
|         internal rxsh commands under NT v3.1.
|     *****************************************************************
|

  v0.0.6
      Added internal command:
          title      - set the rxsh console window title

      Added code to the cd command to accept "cd..\somedir".

      rxsh now runs all .exe/.com programs via an internal function
          which invokes CreateProcess().  External programs are run
          in the context of the rxsh console unless an "&" is
          appended to the command line, in which case the program is
          run under a new console window.

      The "chdir" command was added to the help list.  This command
          was always available, just not documented.

      Added debug messages and recoded some messages to conform to
          the established convention for rxsh messages.

      Internally, a series of console functions were added which will,
          when activated in a future release, allow the user to place
          text anywhere on the screen and to retrieve text from any
          position on the screen.

      Added code to the "%" command to require that an EXEC be named
          on the command line.  It basically works, now, just like
          the "!" command.


  v0.0.5

      **** This release was not made generally available ****

      Only internal changes to the rxsh source.  No added features or
      functionality.  Additionally, no release was built from these
      internal modifications.


  v0.0.4
      Added internal commands:
          pushd      - save current directory and change to a new one
          popd       - restore the most recently pushed directory
          %<EXEC>    - force <EXEC> directly to the Rexx interpreter

      The following command names have changed:
          sysinfo    - is now "sys"
          ntmem      - is now "mem"
          setdebug   - is now "debug"

      *** Note that the "native" versions of these commands are
          accessible by using the "!" prefix to force the command to
          be executed via the cmd.exe command shell.

      Major source modifications resulting in a module size reduction
          of almost 45% from v0.0.3.

      Added rxsh command line switches to turn on debug mode and to
          display usage.

      Added initialization messages controlled by the debug command
          line argument

      Added code to disallow running a secondary copy of rxsh from with-
          in rxsh.  Multiple copies may be invoked, just not directly
          from with a running copy of rxsh.


  v0.0.3

      **** This release was not made generally available ****

      Added internal commands:
          ls         - list directory
          sysinfo    - nt systeminfo (via GetSystemInfo(...))
          ntmem      - memory information
          user       - user/computer names
          setdebug   - turn debug messages on/off
          clear      - clear screen
          cls        - clear screen
          bye        - quit
          pwd        - print working directory
          ver        - rxsh/nt version information
          ?          - help
          help       - help
          !          - pass a command to cmd.exe

      Enhanced error messages.
      Added debugging messages.
      Added support for all cmd.exe prompt strings except "$E".

  v0.0.2
      Added error reporting to the internal ChDir command.

  v0.0.1
      Initial public Pre-Release


  Installation/Usage/Notes:
  -------------------------

  rxsh is a *preliminary* shell implementation released to determine
  interest.  There are many features standard in mature shells which
  are not present in rxsh.  For example, rxsh does not read and
  execute a startup file, (ala autoexec.nt).

| rxsh is simple to install.  Just copy the rxsh.exe file into any
| directory identified in the PATH environment variable.  rxsh uses the
| Windows NT Event Log.  The messages that rxsh will report are within
| the rxshmsg.dll file.  In order for these messages to be found, this
| file must be copied into the %SystemRoot%\System32 directory.
|
| In short:
|
|       1. copy rxsh.exe into a PATH directory
|
|       2. copy rxshmsg.dll into %SystemRoot%\System32
|
|       3. optionally copy the remaining files into the same directory
|          as rxsh.exe
|
|
  To run rxsh, simply execute the program either from a cmd.exe command
  line, or by double-clicking the rxsh.exe file via File Manager, or by
  using the File|Run menu option in either the Program Manager or the
  File Manager.  You may optionally create a PIF file for rxsh and
  install it in a Program Manager Group.  A sample PIF file, as well as
  a sample icon file are provided in this distribution.

  To quit rxsh, type either "exit", "quit" or "bye" on the command line.
  Note that, as with cmd.exe, any changes made to the environment via SET
  commands persist only for the life of the current shell.

  *** Caution:  although you may use "!set" to display the environment
  variables, you may *not* use "!set some=thing" to set an environment
  variable.  To set an environment variable, use the rxsh internal "set"
  command.

  External programs, (.exe/.com files), are executed by specifying their
  name and any arguments on the rxsh command line.  For example:

      rxsh c:\> winfile

  This command will run the winfile File Manager application and wait
  for that application to terminate before returning the command prompt.
  Optionally, an "&" may be appended to the command line, in which case
  rxsh will invoke the application and, after a successful start, will
  return a command prompt.  For example:

      rxsh c:\> winfile &

  This is very much like starting a "background" process under most
  Unix shells.  This is an alternative to the explicit "start" command
  supplied with the Windows NT cmd.exe.  Although the start command is
  not currently provided by rxsh, it is likely that it will appear in a
  future Pre-Release.

  One final note about the trailing "&".  You may discover that under
  some circumstances the trailing "&" can be directly concatenated to
  the end of the command string.  Although this may work today, it will
  very likely *NOT* work in future Pre-Releases.  The correct syntax is
  to add the "&" as a separate "token" on the command line.

  With respect to console processes and MS/PC-DOS or OS/2 character mode
  applications, invoking the program without the trailing "&" will cause
  the program to run in the context of the rxsh console window.  Using
  the trailing "&" will cause the program to run in a separate console
  window.

  Note that when a character mode application is run in a separate
  console window, the window closes as soon as the application completes.
  If you want to run a character mode application *and* see its output,
  then run the application in the foreground, i.e. without the trailing
  "&".

  rxsh internal command help can be displayed by issuing the "help"
  command.  The standard Windows NT "help" command is reached by using
  the "!" command, i.e. "!help".  This technique also works for running
  programs external to rxsh which have names that conflict with internal
  rxsh names, i.e. "debug".

  rxsh recognizes all cmd.exe prompt strings except "$E", (x'27'), plus
  adds a couple of it's own:

      $u - prints USERID env var, or username if USERID does not exist
      $m - prints the computer name on which rxsh was started.

  There is a difference with respect to the $V string.  Normally, $V is
  case insensitive.  The rxsh $V *is* case sensitive:

      $V - prints the Windows NT version.
      $v - prints the rxsh version.

  Thus, you might set a prompt such as:

      rxsh c:\>set prompt=$u on $m in $p at $t on $d$_$$

  which would produce the following, (for example):

      rxsh bill on mersoft in C:\ at 19:24:16.202 on Wed 1994/06/15
      $

  The rxsh prompt string is always prefaced with "rxsh ".

| rxsh now offers a direct interface with the Rexx interpreter in
| the sense of being able to enter a command such as:

           rxsh c:\>if date('w')=='Wednesday' then say '"hump" day'
  or
           rxsh c:\>do 5; say 'hello'; end

| on the command line.  You can, however, continue to issue cmd.exe
| batch language commands on the command line, but they must be
| enclosed within quotes:
|
|          rxsh c:\>'if exist myfile.data echo found'
| or
|          rxsh c:\>"if exist myfile.data echo found"

  rxsh does *NOT*, however, support the command "stacking" capability
  that exists in the Windows NT cmd.exe, i.e. "cls&dir".

  Note that, with the addition of the trailing "&" to invoke a program
  in the "background", command stacking via the "&" operator will not
  be introduced into rxsh.  If command stacking is supported, it will
  be supported via an alternate character such as ";".  The logical
  semantics associated with the Windows NT cmd.exe "&" and "&&"
  notation will not be supported by rxsh.

  If it is determined that there is sufficient interest in rxsh, then
| follow-on development will progress.  Other enhancements such as
| documentation and built-in help will also be included, as well as
| more internal commands.
|
|
| Entering Rexx Statements from the Command Line:
| -----------------------------------------------
|
| rxsh allows Rexx language statements to be entered on the command
| line.  Such statements are passed to the Rexx interpreter for
| execution.  In fact, anything entered on the command line that is
| not an internal rxsh command, the name of a .rex or .cmd Rexx EXEC
| file, or an .exe, .com or .bat executable program file located on
| the PATH is passed to the interpreter for execution.
|
| This fact has some immediate implications:  if you have a program
| called "foo.exe" and you, accidentally, enter "fo.exe", then your
| program will not be found and the input line will be passed on to
| the interpreter for execution.  Since the statement "fo.exe" is
| not a Rexx language statement, the line will be passed on by the
| interpreter to the active subcomand environment, ("COMMAND").
| Since the line does not represent a file in the current PATH, the
| "COMMAND" environment will return a "-2", ("file-not-found"), to
| the interpreter.  The interpreter will, then, simply respond with
| the following:
|
|    1 *-* fo.exe
|      >>>   "FO.EXE"
|      +++ RC(-2) +++
|
| Although this is the correct form of error reporting for a Rexx
| EXEC, it is not acceptable as a response to the user from the rxsh
| command interpreter.
|
| This behavior will be corrected in a future Pre-Release of rxsh.
|
| Entering Rexx statements on the command line is very simple, but a
| few rules must be remembered.  First and foremost, all of the Rexx
| statements must fit in a single 1024 byte command line.  All of the
| Rexx statements must be separated by semicolons, ";".  Finally, no
| continuity is maintained between executed command lines.
|
| In short, whatever is entered on the command line in the form of
| Rexx statements MUST comprise a complete and syntactically correct
| Rexx program.
|
| For example, consider the following Rexx EXEC:
|
|    a = 10
|    do i=1 to a
|        say 'a='a
|    end
|
| In order to pass this program successfully from the rxsh command
| line, the following must be entered:
|
|    rxsh c:\> a = 10; do i=1 to a; say 'a='a; end;
|
| The final semicolon is optional.
|
| Note that you may *NOT* do this:
|
|    rxsh c:\> a = 10;
|    rxsh c:\> do i=1 to a; say 'a='a; end;
|
| because the value of the variable "a" is not retained across
| invocations of the interpreter.
|
| Also, you may *NOT* do this:
|
|    rxsh c:\> a = 10; do i=1 to a; say 'a='a;
|    rxsh c:\> end;
|
| since the "do" keyword requires a corresponding "end" keyword within
| the same instance of the interpreter.
|
| These rules are actually no different that the rules associated with
| any Rexx EXEC; think of the command line as having to be a complete
| Rexx EXEC and you will not go far wrong.
|
|
| Known Bugs/Limitations:
| -----------------------
|
| Following is a list of known bugs and other limitations:
|
|     1.  input line length for execution by the Rexx interpreter is
|         limited to 1024 bytes.  This is a limitation of the Personal
|         Rexx interpreter and is, thus, reflected onto rxsh.
|
|     2.  input line length is *not* checked by rxsh.  The maximum
|         length for rxsh is 4096 bytes, with the input being
|         truncated to 1024 bytes for submission to the interpreter.
|         If more than 4096 bytes are input to rxsh on the command
|         line, then an exception will occur.  This behavior will be
|         resolved by the inclusion of rxsh's own input routines
|         which do not rely on the CRT input functions.
|
|     3.  since rxsh currently uses the CRT functions for input, the
|         availability of command-line editing and command history is
|         "built-in".  The internal rxsh input routines will include
|         in their first iteration at least command line editing.
|         command history will also be included, but possibly at a
|         later date.
|
|
| rxsh Command Reference:
| -----------------------
|
| Summary:
| --------
|
|    ! <command>      - force <command> to cmd.exe
|    % <EXEC>         - force <EXEC> to the Rexx interpreter
|    ?                - show commands information
|    bell             - sound the speaker
|    bye              - exit
|    cd               - change directory
|    chdir            - change directory
|    clear            - clear the console screen
|    cls              - clear the console screen
|    cp               - copy <source> to <destination>
|    cwd              - display current directory structure
|    debug [on|off]   - toggle debug mode
|    exit             - exit
|    help             - show commands information
|    list             - list directory
|    ls               - list directory
|    md               - create a directory
|    mem              - show memory information
|    mkdir            - create a directory
|    popd             - restore directory at top of stack
|    prts             - display local printers
|    ps               - display window processes
|    pushd            - save current directory, change to [newdir];
|    pwd              - show current directory
|    quit             - exit
|    rd               - remove a directory
|    rmdir            - remove a directory
|    set              - set or display environment variables
|    svcs             - display active local services
|    sys              - show system information
|    title            - set console window title
|    user             - show user and computer information
|    ver              - show version information
|    vmstat           - show rxsh virtual storage allocation information
|
|
| Detail:
| -------
|
|                    < this section is in progress>
|
|


  Possible Enhancements:
  ----------------------
|
  Following is a list of *possible* future enhancements to rxsh:

      1.  rxsh subcommand environment.           <in progress>

      2.  additional Windows NT specific commands:
          a- display devices
|         b- display printers                    <done>
|         c- display services                    <done>
|         d- display processes                   <done>
|         e- internal implementations of cmd.exe internal commands
|             i-  copy            (cp)           <done>
             ii-  move            (mv)
            iii-  delete/erase    (rm)
             iv-  type            (pg/cat)
|             v-  mkdir           (md/mkdir)     <done>
|            vi-  rmdir           (rd/rmdir)     <done>

      3.  command aliasing.
      4.  command stacking.
      5.  Windows(tm) based help file.
      6.  Windows(tm) based setup/installation program
      7.  hard-copy documentation.
|     8.  sample Rexx EXECs which use the rxsh Subcommand Environment

| Note that with release 0.0.7, the subcommand environment has been
| established.  Also note that all of the specific items listed under
| item 2 have been successfully test-coded separately from rxsh and
| are ready to be incorporated as internal commands.
|
| As an alternative, some of these utility programs/filters may be
| included with rxsh as "extra" utilities.
|
|
| Acknowledgements:
| -----------------
|
| I would like to acknowledge the help and support of the following
| people for bug reports, feature suggestions and other miscellaneous
| support relative to the ongoing development of rxsh:
|
|     Carl Byington
|     Charles Daney
|     Stan Murawski
|     Mark G. Perry
|     Mary E. Regan
|
| plus the miscellaneous Microsoft Technical Support personnel who
| have answered questions and followed up on WinNT v3.5 bug reports.


  Contact Information:
  --------------------

  Please send any comments to me at either of the following addresses:

      70540,120 (from CompuServe directly)

      70540.120@compuserve.com (from the Internet)


  For information regarding Personal Rexx for Windows NT, contact
  Quercus Systems:

      Quercus Systems
      P.O. Box 2157
      Saratoga, CA 95070
      (408)867-REXX (voice)
      (408)867-7489 (fax)
      (408)867-7488 (BBS)
      Compuserve PCVENA, Library 11


  Distribution File List:
  -----------------------

      rxsh.exe    - rxsh program
      rxsh.pif    - sample PIF file
      readme      - this file
|     docnew.rex  - Rexx EXEC to display readme revisions


  Warranty/Licence:
  -----------------

  This Pre-Release software is Copyright 1994 William Potvin II. All
  Rights Reserved.

  The author of this Pre-Release software may, as revisions evolve, make
  those revisions available via the Compuserve Information Service in the
  Quercus section, (Library 11), of the PCVENA forum.  The author may
  make this Pre-Release software available on other CompuServe fora as
  the author deems necessary and/or appropriate.

  The author does not guarantee new releases of this software and
  reserves the right to limit the scope of any follow-on Beta tests to
  whomever the author deems appropriate.  Pre-Release evaluators are not
  guaranteed acceptance into any follow-on Beta tests which may occur.

  Pre-Release evaluators may register their use of rxsh with the author
  and in so doing will increase the likelyhood that the evaluator will be
  chosen to participate in any follow-on Beta tests that may occur.

  Registering as a Pre-Release evaluator does not guarantee the evaluator
  participation in any follow-on Beta tests which may occur.

  This Pre-Release software is provided by the author without any
  warranty of any kind, either expressed or implied, including, but not
  limited to, the fitness of this Pre-Release software for a particular
  purpose or merchantability.  The user holds all risk with respect to
  the quality and performance of this Pre-Release software and the user
  assumes all costs relative to all necessary servicing, repair or
  correction.

  Under no circumstances will the author of this Pre-Release software be
  liable to the user for any damages whatsoever, including general,
  incidental or consequential damages resulting from the use, or from the
  inability to use this Pre-Release software, including, but not limited
  to loss of data or business profits or business interruption or a
  failure of this Pre-Release software to operate with any other programs
  or any other pecuniary loss sustained by you or third party users, even
  if the author has been advised of the possibility of such damages.

  The discussion of possible enhancements and/or additions to rxsh as
  described in the "Possible Enhancements" section does not in any way
  imply that those features/enhancements will ever be made part of this
  software.

  The general availability of this software does not in any way imply
  that it will ever be released as a product.  This software will remain
  in Pre-Release or Beta Release status at least until Personal Rexx for
  Windows NT is released from its Beta test.


  Other Notes/Announcements
  -------------------------

  In the final stages of Pre-Pre-Release is an alternative to the IDE
  which ships with Personal Rexx for Windows NT.  The application, so
  far called "pmrx", is a Win32 MDI application which will allow the
  user to load multiple EXECs.  pmrx interfaces with the Personal Rexx
  for Windows NT interpreter, allowing the user to run EXECs from within
  pmrx.  The application features a toolbar and status bar along with
  3D controls and the ability to set the edit font to any font available
  on the given machine.

  The application will also include toolbar tips and tabbed dialogs
  similar to those available under the forthcoming Windows v4.0.

  At this time, it is not intended that pmrx will enter open Pre-Release
  or open Beta testing.

  Registered rxsh Pre-Release evaluators may contact the author as noted
| above for further information regarding closed Pre-Release and Beta
| testing of pmrx.
