home *** CD-ROM | disk | FTP | other *** search
/ ftp.wwiv.com / ftp.wwiv.com.zip / ftp.wwiv.com / pub / UTILITY / RIPSCRIP.ZIP / RIPSCRIP.DOC
Text File  |  1993-03-28  |  175KB  |  4,044 lines

  1.  
  2.  
  3.                    ------------------------------------------
  4.                     RIPscrip Graphics Protocol Specification
  5.  
  6.                            "Remote Imaging Protocol"
  7.  
  8.                    Copyright (c) 1992-1993, TeleGrafix Corporation
  9.                               All Rights Reserved
  10.  
  11.                                 Revision 1.51.00
  12.  
  13.                                 March 29th, 1993
  14.                    ------------------------------------------
  15.                        with editing by Bob Stein, 10/10/92
  16.  
  17.  
  18.  
  19.  
  20.      =====================================================================
  21.      ==                           INTRODUCTION                          ==
  22.      =====================================================================
  23.  
  24.      As system operators of many bulletin board systems, we've often
  25.      wished for some form of Graphical User Interface for our boards. Like
  26.      most Sysops, we've come across many solutions.  But they all seemed
  27.      to fall short in one way or another:  inadequate for THIS system,
  28.      incomplete, difficult to implement, too complex, or lacking in
  29.      graphics development tools.  In short, we became frustrated.
  30.  
  31.      So, we decided to write our own Graphical Script Language.
  32.  
  33.      RIPscrip stands for "Remote Imaging Protocol Script" language.  This
  34.      graphical language is our answer to the graphics needs of the BBS
  35.      community and has serious tools for implementation and practical use.
  36.  
  37.      For more information on RIPaint, RIPterm or RIPscrip development
  38.      tools, contact:
  39.  
  40.           TeleGrafix Corporation
  41.           16458 Bolsa Chica, #15
  42.           Huntington Beach, CA 92649
  43.  
  44.           VOICE: (714) 379-2131
  45.           FAX  : (714) 379-2132
  46.           DATA : (714) 840-3520 (ArenaBBS: The Major BBS...32 lines)
  47.  
  48.  
  49.  
  50.           ResNova Software
  51.           16458 Bolsa Chica, #193
  52.           Huntington Beach, CA 92649
  53.  
  54.           VOICE: (714) 840-6082
  55.           FAX  : (714) 840-0488
  56.           DATA : (714) 840-8641 (Nova Central: Nova Link Pro...4 lines)
  57.  
  58.  
  59.  
  60.           RIP Demo Midwest
  61.  
  62.           VOICE: (708) 820-8875
  63.           DATA : (708) 978-2777 (RIP Demo Midwest BBS: TBBS...2 lines)
  64.           FAX  : (708) 898-4994
  65.  
  66.  
  67.  
  68.      =====================================================================
  69.      ==                            DEFINITION                           ==
  70.      =====================================================================
  71.  
  72.      RIPscrip is a text based Script language for displaying online
  73.      graphics.  The script language conforms to 7-bit ASCII, avoiding the
  74.      use of Extended ASCII characters.  This allows transmission over X.25
  75.      networks and other carriers that do not support full 8-bit binary
  76.      transfers easily.  RIPscrip allows RIPscrip graphical statements to
  77.      be mixed with printable ASCII text and [de facto standard]
  78.      ANSI/VT-100 directives.  RIPscrip can dynamically determine what is
  79.      graphics and what is text and display them appropriately in separate
  80.      windows (a graphics window and a text window).  And if you must have
  81.      your own proprietary commands, RIPscrip has room for that too.
  82.  
  83.  
  84.  
  85.  
  86.  
  87.      =====================================================================
  88.      ==                     HOW DOES RIPscrip WORK?                     ==
  89.      =====================================================================
  90.  
  91.      RIPscrip uses a flexible, and very efficient script language for its
  92.      graphical statements.  Its efficiency stems from its compactness and
  93.      developmental planning.  It is entirely Object Oriented instead of
  94.      Raster Oriented for efficient transmission of data and powerful
  95.      editing capabilities (using RIPaint for example).  The language is
  96.      open ended enough so that literally trillions of different graphics
  97.      commands can be implemented as needed.  RIPscrip is not a proprietary
  98.      protocol standard and is open to suggestion from the rest of the
  99.      world.
  100.  
  101.      Earlier Graphical Script Languages (Avatar and Skypix among others),
  102.      utilize special command characters to indicate which graphics command
  103.      is to be executed.  This precludes their use on systems that are
  104.      limited to ASCII printable text.  Traditional script languages use
  105.      English words to accomplish things (eg, "BOX 0,0 100,50").  This kind
  106.      of thing is incredibly bulky, especially when you consider that
  107.      pictures are usually not simple things, but comprised of hundreds or
  108.      thousands of individual graphical operations (eg, line, circles,
  109.      fills, text, etc.).  With this in mind, a human-readable script
  110.      language was completely inappropriate for the relatively limited
  111.      bandwidth of conventional modems.
  112.  
  113.      So, one of our main strategies for this language was to make it as
  114.      efficient as possible without going completely binary.  This allows
  115.      the immediate installation of the protocol onto any ASCII text-based
  116.      host system -- because the language consists entirely of ASCII
  117.      printable characters.  We justify the unreadability of the language
  118.      by pointing out the limitations of today's modems and phone lines --
  119.      the language must be compact.
  120.  
  121.  
  122.  
  123.  
  124.      =====================================================================
  125.      ==              RIPscrip PROTOCOL - GENERAL STRUCTURE              ==
  126.      =====================================================================
  127.  
  128.      This document describes RIPscrip commands and functions supported
  129.      with RIPterm v1.02.
  130.  
  131.      RIPscrip is organized into 10 levels of graphical commands (low
  132.      Level-0 to high Level-9).  Level-0 commands are the building blocks
  133.      of RIPscrip.  The basic graphics primitives of the system are all
  134.      Level-0, including the commands LINE, RECTANGLE, CIRCLE, COLOR, FONT,
  135.      etc.  Each level of RIPscrip gets progressively higher-level in
  136.      concept.  For example, Level-1 commands use Mouse Regions, Icons, and
  137.      Formatted Text Regions.
  138.  
  139.      The basic Syntax Rules are as follows:
  140.  
  141.           1.  A RIPscrip command line starts at the beginning of a
  142.               line of text.  A RIPscrip command line moved to the
  143.               middle of a line of text is treated as literal text.
  144.               This prevents people inserting mischievous things in
  145.               teleconference messages, or similar pranks.  The only
  146.               exception to this rule is stated below under item 6,
  147.               "continuation of long lines".
  148.  
  149.           2.  A RIPscrip command line begins with an exclamation
  150.               mark (!)
  151.  
  152.           3.  Every RIPscrip command is preceded by the universal
  153.               RIPscrip delimiter, vertical-bar (|)
  154.  
  155.           4.  Individual RIPscrip commands may be combined on the
  156.               same line providing they are separated by the
  157.               vertical bar delimiter.
  158.  
  159.           5.  RIPscrip commands or command lines may be split across
  160.               multiple lines with a backslash (\) just before each
  161.               split.  This helps RIPscrip commands conform to right
  162.               margins and escape word wrapping.  An example:
  163.  
  164.                    !|c02|L02030405|P0901020102010201020102\
  165.                    0102010201020102
  166.  
  167.           6.  RIPscrip must allow for normal text to be inter-mixed
  168.               with RIPscrip commands.  If unrecognized text appears
  169.               after a RIPscrip command, on the same line, the text
  170.               is ignored (the command is not ignored).  A line that
  171.               does not begin with "!|" is considered raw text and is
  172.               routed to the TTY text window (see "8" below).
  173.  
  174.           7.  RIPscrip makes provisions for a GRAPHICAL WINDOW and a
  175.               TEXT WINDOW.  The Graphical Window is where all
  176.               RIPscrip graphics appear.  the TEXT WINDOW is where
  177.               raw text appears.  Raw Text includes ANSI color and
  178.               cursor movement codes (a subset of VT-100 terminal
  179.               emulation).
  180.  
  181.           8.  The vertical bar (|) of a RIPscrip command can be
  182.               followed by an level number.  If the 1st character
  183.               after (|) is a numeric digit (1-9), then that's the
  184.               RIPscrip Command Level.  If the very 1st character is
  185.               NOT a digit 1-9, then it is the command type character
  186.               and the command is a Level-0 command.  If the 1st
  187.               character is a digit 1-9, and the second character is
  188.               also a digit, then that defines a sub-level of a
  189.               RIPscrip level.  For example:
  190.  
  191.                  !|L ..... RIPscrip Level-0 Command "L"
  192.                  !|1L .... RIPscrip Level-1 Command "L"
  193.                  !|15L ... RIPscrip Level-1, sub-level 5 Command "L"
  194.  
  195.               Each of the above examples are unique commands not to
  196.               be confused with each other.  You may continue the
  197.               sub-levels up to a maximum level of 10 (eg,
  198.               !|1234567890<cmd>").
  199.  
  200.           9.  Every RIPscrip command includes a command type
  201.               character.  In Level-0 commands, this character
  202.               immediately follows the vertical bar.  At all other
  203.               levels, it follows the level digits.  The command type
  204.               character may be any printable non-decimal-digit
  205.               character.
  206.  
  207.          10.  Following the command type character are 0 or more
  208.               parameters.  If the command requires a text-string, it
  209.               is always the LAST parameter.  Numeric parameters DO
  210.               NOT have any delimiters (commas, dashes, spaces,
  211.               etc).  A variable width numeric parameter may be used
  212.               as the last parameter.  This allows for maximum
  213.               efficiency.  Numbers are represented in base-36.  This
  214.               compacts numbers down to roughly 3/5 of their decimal
  215.               form.  This numbering system, technically called
  216.               "Hexa-Tri-Decimal", has affectionately been dubbed
  217.               "MegaNums".  Unlike Hexadecimal which uses 0-9, A-F,
  218.               MegaNums take advantage of the entire alphabet, using
  219.               characters 0-9 and A-Z.
  220.  
  221.          11.  An exclamation mark (!) or vertical bar (|) character
  222.               can appear in a RIPscrip text parameter by preceding
  223.               it with a backslash(\).  A literal backslash is
  224.               represented with a double-backslash (\\).
  225.  
  226.          12.  A RIPscrip sequence CAN begin in a column other than
  227.               column #0, if the exclamation mark introducer is
  228.               replaced with a CTRL-A (Start of Header SOH) character,
  229.               or CTRL-B (STX character).  Since 99.9% of all BBS'es do
  230.               not allow Users to enter most control characters, users
  231.               will be unable to begin RIPscrip sequences in the middle
  232.               of a command line.  Only the Host should be able to do
  233.               this.  This prevents people from cluttering 
  234.               teleconference, or other areas of a Host with spurious
  235.               RIPscrip sequences.
  236.  
  237.  
  238.  
  239.  
  240.  
  241.      =====================================================================
  242.      ==                         ANSI SEQUENCES                          ==
  243.      =====================================================================
  244.  
  245.  
  246.      RIPscrip predominantly uses non-ANSI command sequences.  In a couple
  247.      of situations though, an ANSI sequence is allowed to perform a
  248.      specific function.  There are currently three separate ANSI sequences
  249.      defined in the RIPscrip protocol to perform various actions.  They
  250.      are as follows:
  251.  
  252.  
  253.  
  254.           ESC [ ! ...... Query RIPscrip version number.  RIPterm will
  255.                          respond with RIPSCRIPxxyyzz where xx is equal
  256.                          to the major version number (zero padded), yy
  257.                          is equal to the minor version number (zero
  258.                          padded), and zz equals the revision code (also
  259.                          zero padded).  For v1.51.00, the returned
  260.                          sequence would be RIPSCRIP015100.  Another
  261.                          example, v1.23.45 would return RIPSCRIP012345.
  262.  
  263.           ESC [ 0 ! .... Same as ESC [ ! (see above)
  264.  
  265.           ESC [ 1 ! .... Disables all RIPscrip processing.  Any RIPscrip
  266.                          sequences are interpretted as raw text.
  267.  
  268.           ESC [ 2 ! .... Enabled RIPscrip processing.  Any RIPscrip
  269.                          sequences will be parsed and processed.
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.      =====================================================================
  277.      ==                    RIPscrip COMMAND REFERENCE                   ==
  278.      =====================================================================
  279.  
  280.      The remainder of this document details the RIPscrip command set.
  281.      Each command has these aspects:
  282.  
  283.          SYMBOL - the symbolic constant that is referenced in the
  284.                   RIPscrip API Library code.  This is  the universal
  285.                   name for the command.
  286.  
  287.           LEVEL - The Command Level.  Sub-levels are represented
  288.                   with decimal points (eg, 1.3.5 for Level-1,
  289.                   Sub-level 3, Sub-Sub-level 5).  This is for
  290.                   discussion purposes only.  The decimal points
  291.                   are never part of the actual command.
  292.  
  293.         COMMAND - The command type character identifying the
  294.                   command
  295.  
  296.       ARGUMENTS - The arguments or parameters for the command.
  297.                   Commands that do not require any arguments
  298.                   after the command type character are shown
  299.                   here as "<none>".  Each argument is shown in
  300.                   the order it appears in the command, and is
  301.                   represented by a name.  If an argument is
  302.                   numeric, it is followed by a width specifier
  303.                   indicating how many MegaNum digits the
  304.                   argument consists of.  (eg, ":2" means a
  305.                   2-digit MegaNum, or a value between 0 and
  306.                   1295).  If an argument does not have a width
  307.                   specifier, it is by default a text argument,
  308.                   and should be the last argument on the line.
  309.                   If a command is variable length (see POLYGON),
  310.                   then it will appear with ellipses (...)
  311.  
  312.          FORMAT - This represents the format of the command, with
  313.                   the starting "!|", the level digits, the
  314.                   command type character, and the argument list,
  315.                   with the argument names in angle brackets.
  316.                   (These arguments are spaced apart, but these
  317.                   spaces never appear in the physical commands.)
  318.  
  319.         EXAMPLE - An actual example of the RIPscrip command.
  320.  
  321.      DRAW COLOR - If YES, then this command uses or affects the
  322.                   current Drawing Color.
  323.  
  324.      LINE PATRN - If YES, then this command uses or affects the
  325.                   current Line Style Pattern.
  326.  
  327.      LINE THICK - If YES, then this command uses or affects the
  328.                   current Line Style Thickness
  329.  
  330.      FILL COLOR - If YES, then this command uses or affects the
  331.                   current Fill Color.
  332.  
  333.      FILL PATRN - If YES, then this command uses or affects the
  334.                   current Fill Pattern.
  335.  
  336.      WRITE MODE - If YES, then this command will take advantage
  337.                   of the current Write Mode (eg, COPY, or XOR).
  338.  
  339.      FONT SIZES - If YES, then this command uses or affects the
  340.                   current Font Size.
  341.  
  342.  
  343.  
  344.  
  345.  
  346.      ---------------------------------------------------------------------
  347.      Define the size and location of the TTY Text Window
  348.      ---------------------------------------------------------------------
  349.                Symbol: RIP_TEXT_WINDOW
  350.                 Level: 0
  351.               Command: w
  352.             Arguments: x0:2, y0:2, x1:2, y1:2, wrap:1, size:1
  353.                Format: !|w <x0> <y0> <x1> <y1> <wrap> <size>
  354.               Example: !|w00001B0M10
  355.       Uses Draw Color: NO
  356.       Uses Line Patrn: NO
  357.       Uses Line Thick: NO
  358.       Uses Fill Color: NO
  359.       Uses Fill Patrn: NO
  360.       Uses Write Mode: NO
  361.       Uses Font Sizes: NO
  362.  
  363.      This command specifies the dimensions of the virtual TTY window that
  364.      will display all ASCII/ANSI (non-RIPscrip) data coming across the
  365.      connection.  (x0,y0) defines the upper-left corner of the window in
  366.      text-based character-cell coordinates.  (x1,y1) defines the
  367.      lower-right corner of the window (inclusive).  There may be two
  368.      simultaneous windows on the screen, one for TTY text, and one for the
  369.      display of RIPscrip graphics (a viewport), and they may overlap.
  370.  
  371.      Bytes received over the modem are first checked for RIPscrip
  372.      commands.  All bytes that don't conform to the RIPscrip syntax are
  373.      treated as ANSI/ASCII and displayed in the TTY window (if defined).
  374.      User keystrokes that are echoed by the BBS would also appear in the
  375.      text window by this scheme.
  376.  
  377.      The text window may be made invisible, ignoring all non-RIPscrip
  378.      bytes, by setting all RIP_TEXT_WINDOW parameters to zero (0).  The X
  379.      and Y parameters ranges vary depending on the setting of the <size>
  380.      parameter which governs the font size used for the output text. Valid
  381.      settings for the <size> parameter and the ranges for X/Y values are
  382.      as follows:
  383.  
  384.           size   Font Size    X Range   Y Range
  385.           ---------------------------------------
  386.            0       8x8         0-79      0-42
  387.            1       7x8         0-90      0-42
  388.            2       8x14        0-79      0-24
  389.            3       7x14        0-90      0-24
  390.            4       16x14       0-39      0-24
  391.  
  392.      The <wrap> parameter applies to both the horizontal and vertical
  393.      dimensions.  If <wrap> is set to 1, then any text that extends beyond
  394.      the right margin of the window will wrap to the next line of the
  395.      window, scrolling the window up if necessary.  If <wrap> is 0, then
  396.      any text going beyond the right margin is truncated and no scrolling
  397.      is performed; the cursor remains at the right margin.
  398.  
  399.      NOTE:  If the text window currently being defined is identical
  400.             to the currently defined text window, the cursor will
  401.             not be relocated to the upper-left corner of the window.
  402.             The only aspect of the text window that can be different
  403.             and still be deemed "identical" is the <wrap> parameter.
  404.             For the current and new text windows to be considered
  405.             identical, the parameters <x0>, <y0>, <x1>, <y1> and
  406.             <size> must be the same.
  407.  
  408.  
  409.  
  410.  
  411.  
  412.      ---------------------------------------------------------------------
  413.      Define the size and location of the Graphics Window
  414.      ---------------------------------------------------------------------
  415.                Symbol: RIP_VIEWPORT
  416.                 Level: 0
  417.               Command: v
  418.             Arguments: x0:2, y0:2, x1:2, y1:2
  419.                Format: !|v <x0> <y0> <x1> <y1>
  420.               Example: !|v00002E1M
  421.       Uses Draw Color: NO
  422.       Uses Line Patrn: NO
  423.       Uses Line Thick: NO
  424.       Uses Fill Color: NO
  425.       Uses Fill Patrn: NO
  426.       Uses Write Mode: NO
  427.       Uses Font Sizes: NO
  428.  
  429.      This command defines the (X,Y) pixel boundaries of the RIPscrip
  430.      graphics window, which will contain all RIPscrip graphics output.
  431.      ASCII/ANSI text will be displayed in the virtual TTY window defined
  432.      by the RIP_TEXT_WINDOW command above.  (x0,y0) defines the upper-left
  433.      corner of the graphics viewport, and (x1,y1) defines the lower-right
  434.      corner (inclusive).  The viewport may be disabled, so RIPscrip
  435.      graphics commands are ignored, by setting all parameters to zero (0).
  436.  
  437.      Graphics displayed in the viewport is "truncated" at this rectangular
  438.      border, meaning if a circle would normally extend outside one of the
  439.      borders, it will be chopped, only displaying the portion of the
  440.      circle that is contained inside the viewport boundaries.
  441.  
  442.      Coordinates are specified based on a 640x350 pixel resolution, meaning
  443.      X can be anywhere from 0 - 639, and Y can be anywhere from 0 - 349.
  444.      x0 must be less than x1 and y0 must be less than y1 unless all
  445.      parameters are set to zero, indicating that the graphics window is
  446.      disabled.
  447.  
  448.  
  449.  
  450.  
  451.  
  452.      ---------------------------------------------------------------------
  453.      Reset & Clear Graphics and Text Windows to full screen
  454.      ---------------------------------------------------------------------
  455.                Symbol: RIP_RESET_WINDOWS
  456.                 Level: 0
  457.               Command: *
  458.             Arguments: <none>
  459.                Format: !|*
  460.               Example: !|*
  461.       Uses Draw Color: NO
  462.       Uses Line Patrn: NO
  463.       Uses Line Thick: NO
  464.       Uses Fill Color: NO
  465.       Uses Fill Patrn: NO
  466.       Uses Write Mode: NO
  467.       Uses Font Sizes: NO
  468.  
  469.      This command will set the Text Window to a full 80x43 EGA hi-res text
  470.      mode, place the cursor in the upper left corner, clear the screen,
  471.      and zoom the Graphics Window to full 640x350 EGA screen.  Both
  472.      windows are filled with the current graphics background color.  Also,
  473.      all Mouse Regions are deleted and the Clipboard is erased.  A system
  474.      might use this function before entering a text only mode that does
  475.      not support RIP commands.  This command will also restore the default
  476.      16-color RIP palette (see RIP_SET_PALETTE below).
  477.  
  478.  
  479.  
  480.  
  481.  
  482.      ---------------------------------------------------------------------
  483.      Clears the Text Window to the current background color
  484.      ---------------------------------------------------------------------
  485.                Symbol: RIP_ERASE_WINDOW
  486.                 Level: 0
  487.               Command: e
  488.             Arguments: <none>
  489.                Format: !|e
  490.               Example: !|e
  491.       Uses Draw Color: NO
  492.       Uses Line Patrn: NO
  493.       Uses Line Thick: NO
  494.       Uses Fill Color: NO
  495.       Uses Fill Patrn: NO
  496.       Uses Write Mode: NO
  497.       Uses Font Sizes: NO
  498.  
  499.      This clears the TTY text window to the current graphics background
  500.      color and positions the cursor in the upper-left corner of the
  501.      window.  If the text window is inactive, then this command is
  502.      ignored.  If the text and graphics windows overlap, then this command
  503.      will clear the overlapping portion also.
  504.  
  505.  
  506.  
  507.  
  508.  
  509.      ---------------------------------------------------------------------
  510.      Clears the Graphics Window to the current background color
  511.      ---------------------------------------------------------------------
  512.                Symbol: RIP_ERASE_VIEW
  513.                 Level: 0
  514.               Command: E
  515.             Arguments: <none>
  516.                Format: !|E
  517.               Example: !|E
  518.       Uses Draw Color: NO
  519.       Uses Line Patrn: NO
  520.       Uses Line Thick: NO
  521.       Uses Fill Color: NO
  522.       Uses Fill Patrn: NO
  523.       Uses Write Mode: NO
  524.       Uses Font Sizes: NO
  525.  
  526.      This command clears the Graphics Viewport to the current graphics
  527.      background color.  If the graphics viewport is not active (if the
  528.      boundaries are 0,0,0,0), then this command is ignored.  If the text
  529.      and graphics windows overlap, then this command will clear the
  530.      overlapping portion also.
  531.  
  532.  
  533.  
  534.  
  535.  
  536.      ---------------------------------------------------------------------
  537.      Move the Text (TTY) cursor to given row & column in the text window
  538.      ---------------------------------------------------------------------
  539.                Symbol: RIP_GOTOXY
  540.                 Level: 0
  541.               Command: g
  542.             Arguments: x:2, y:2
  543.                Format: !|g <x> <y>
  544.               Example: !|g0509
  545.       Uses Draw Color: NO
  546.       Uses Line Patrn: NO
  547.       Uses Line Thick: NO
  548.       Uses Fill Color: NO
  549.       Uses Fill Patrn: NO
  550.       Uses Write Mode: NO
  551.       Uses Font Sizes: NO
  552.  
  553.      This command sets the position of the text cursor in the TTY Text
  554.      window, if it is active.  If inactive (if the dimensions are
  555.      0,0,0,0), then this command is ignored.  This command is equivalent
  556.      to the ANSI/VT-100 command goto x/y, <Esc>[x;yH, except that the
  557.      coordinates of that ANSI command are 1-based and the coordinates of
  558.      this RIPscrip command are 0-based.
  559.  
  560.  
  561.  
  562.  
  563.  
  564.      ---------------------------------------------------------------------
  565.      Move the cursor to the Upper-Left corner of the Text Window
  566.      ---------------------------------------------------------------------
  567.                Symbol: RIP_HOME
  568.                 Level: 0
  569.               Command: H
  570.             Arguments: <none>
  571.                Format: !|H
  572.               Example: !|H
  573.       Uses Draw Color: NO
  574.       Uses Line Patrn: NO
  575.       Uses Line Thick: NO
  576.       Uses Fill Color: NO
  577.       Uses Fill Patrn: NO
  578.       Uses Write Mode: NO
  579.       Uses Font Sizes: NO
  580.  
  581.      This command positions the text cursor to the upper-left corner in
  582.      the TTY Text Window, if it is active.
  583.  
  584.  
  585.  
  586.  
  587.  
  588.      ---------------------------------------------------------------------
  589.      Erase the current text line from the cursor to the end of line
  590.      ---------------------------------------------------------------------
  591.                Symbol: RIP_ERASE_EOL
  592.                 Level: 0
  593.               Command: >
  594.             Arguments: <none>
  595.                Format: !|>
  596.               Example: !|>
  597.       Uses Draw Color: NO
  598.       Uses Line Patrn: NO
  599.       Uses Line Thick: NO
  600.       Uses Fill Color: NO
  601.       Uses Fill Patrn: NO
  602.       Uses Write Mode: NO
  603.       Uses Font Sizes: NO
  604.  
  605.      This command will erase the current text line in the TTY text window
  606.      from the current cursor location (inclusive) to the end of the line.
  607.      The erased region is filled with the current graphics background
  608.      color.  This differs from the ANSI command ESC[K which clears the
  609.      area with the current ANSI background color.
  610.  
  611.  
  612.  
  613.  
  614.  
  615.      ---------------------------------------------------------------------
  616.      Set the current drawing color for graphics primitives
  617.      ---------------------------------------------------------------------
  618.                Symbol: RIP_COLOR
  619.                 Level: 0
  620.               Command: c
  621.             Arguments: color:2
  622.                Format: !|c <color>
  623.               Example: !|cA
  624.       Uses Draw Color: YES
  625.       Uses Line Patrn: NO
  626.       Uses Line Thick: NO
  627.       Uses Fill Color: NO
  628.       Uses Fill Patrn: NO
  629.       Uses Write Mode: NO
  630.       Uses Font Sizes: NO
  631.  
  632.      This command sets the color for drawing lines, circles, arcs,
  633.      rectangles, and other graphics primitives, as well as the color for
  634.      drawing grahics-text from the RIP_TEXT class of commands (not from
  635.      ASCII/ANSI text).  This command does not affect Fill colors or Fill
  636.      Patterns (see below).  It does affect the borders of graphic objects,
  637.      for example the border of an ellipse drawn with the RIP_FILLED_OVAL
  638.      command.  (The interior of the ellipse would be drawn according to
  639.      the most recent RIP_FILL_STYLE command.)
  640.  
  641.      This command chooses one of the colors of the 16-color RIP palette
  642.      defined by the RIP_SET_PALETTE command.  Here is the default 16-color
  643.      RIP palette:
  644.  
  645.           VALUE ... COLOR
  646.           -------------------------------------
  647.             00  ... Black (00 is always the background color)
  648.             01  ... Blue
  649.             02  ... Green
  650.             03  ... Cyan
  651.             04  ... Red
  652.             05  ... Magenta
  653.             06  ... Brown
  654.             07  ... Light Gray
  655.             08  ... Dark Gray
  656.             09  ... Light Blue
  657.             0A  ... Light Green
  658.             0B  ... Light Cyan
  659.             0C  ... Light Red
  660.             0D  ... Light Magenta
  661.             0E  ... Yellow
  662.             0F  ... White
  663.  
  664.  
  665.  
  666.  
  667.  
  668.      ---------------------------------------------------------------------
  669.      Set the 16-color RIP palette from the master 64-color EGA palette
  670.      ---------------------------------------------------------------------
  671.                Symbol: RIP_SET_PALETTE
  672.                 Level: 0
  673.               Command: Q
  674.             Arguments: c1:2, c2:2, ... c16:2
  675.                Format: !|Q <c1> <c2> ... <c16>
  676.               Example: !|Q000102030405060708090A0B0C0D0E0F
  677.       Uses Draw Color: YES
  678.       Uses Line Patrn: NO
  679.       Uses Line Thick: NO
  680.       Uses Fill Color: NO
  681.       Uses Fill Patrn: NO
  682.       Uses Write Mode: NO
  683.       Uses Font Sizes: NO
  684.  
  685.      This command modifies the 16-color RIP palette by choosing from the
  686.      64 colors in the master EGA palette.  This allows you to alter the
  687.      colors in your RIPscrip graphics scenes.  Once a Set Palette command
  688.      is processed, any colors on the screen that had their corresponding
  689.      palette entries changed will instantly switch to the new color set.
  690.      You may obtain color "cycling" effects by using this command.  The
  691.      default 16-color RIP palette is always restored when a
  692.      RIP_RESET_WINDOWS command is encountered.  The default 16-color RIP
  693.      palette is as follows:
  694.  
  695.                            MASTER
  696.           16-COLOR         64-COLOR
  697.           RIP PALETTE      EGA PALETTE
  698.           COLOR-CODE       COLOR-CODE    COLOR
  699.           -------------------------------------------------------
  700.               00            0  (00)      Black
  701.               01            1  (01)      Blue
  702.               02            2  (02)      Green
  703.               03            3  (03)      Cyan
  704.               04            4  (04)      Red
  705.               05            5  (05)      Magenta
  706.               06            7  (06)      Brown
  707.               07            20 (0K)      Light Gray
  708.               08            56 (1K)      Dark Gray
  709.               09            57 (1L)      Light Blue
  710.               0A            58 (1M)      Light Green
  711.               0B            59 (1N)      Light Cyan
  712.               0C            60 (1O)      Light Red
  713.               0D            61 (1P)      Light Magenta
  714.               0E            62 (1Q)      Yellow
  715.               0F            63 (1R)      White
  716.  
  717.      Color 00 of the 16-color RIP palette is always the background color
  718.      (which is typically Black, or color 00 of the 64-color EGA palette).
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.      ---------------------------------------------------------------------
  726.      Set one color of the 16-color RIP palette from the Master Palette
  727.      ---------------------------------------------------------------------
  728.                Symbol: RIP_ONE_PALETTE
  729.                 Level: 0
  730.               Command: a
  731.             Arguments: color:2 value:2
  732.                Format: !|a <color> <value>
  733.               Example: !|a051B
  734.       Uses Draw Color: YES
  735.       Uses Line Patrn: NO
  736.       Uses Line Thick: NO
  737.       Uses Fill Color: NO
  738.       Uses Fill Patrn: NO
  739.       Uses Write Mode: NO
  740.       Uses Font Sizes: NO
  741.  
  742.      This command modifies one color in the 16-color RIP palette.  The
  743.      Color number is sent along with the a color value from the Master
  744.      Color Palette to set the new color to.  The color <value> must be
  745.      in the range of 0-63 to allow access to the 64 colors in the master
  746.      EGA palette.  This allows you to alter the colors in your RIPscrip
  747.      graphics scenes.  Once a Set One Palette command is processed, any
  748.      colors on the screen that correspond to the <color> number will be
  749.      changed instantly to the new color value.  You may obtain color
  750.      "cycling" effects by using this command.  The default 16-color RIP
  751.      palette is always restored when a RIP_RESET_WINDOWS command is
  752.      encountered.  The default 16-color RIP palette is as follows:
  753.  
  754.                            MASTER
  755.           16-COLOR         64-COLOR
  756.           RIP PALETTE      EGA PALETTE
  757.           COLOR-CODE       COLOR-CODE    COLOR
  758.           -------------------------------------------------------
  759.               00            0  (00)      Black
  760.               01            1  (01)      Blue
  761.               02            2  (02)      Green
  762.               03            3  (03)      Cyan
  763.               04            4  (04)      Red
  764.               05            5  (05)      Magenta
  765.               06            7  (06)      Brown
  766.               07            20 (0K)      Light Gray
  767.               08            56 (1K)      Dark Gray
  768.               09            57 (1L)      Light Blue
  769.               0A            58 (1M)      Light Green
  770.               0B            59 (1N)      Light Cyan
  771.               0C            60 (1O)      Light Red
  772.               0D            61 (1P)      Light Magenta
  773.               0E            62 (1Q)      Yellow
  774.               0F            63 (1R)      White
  775.  
  776.      Color 00 of the 16-color RIP palette is always the background color
  777.      (which is typically Black, or color 00 of the 64-color EGA palette).
  778.  
  779.  
  780.  
  781.  
  782.  
  783.      ---------------------------------------------------------------------
  784.      Set Drawing Mode for graphics primitives
  785.      ---------------------------------------------------------------------
  786.                Symbol: RIP_WRITE_MODE
  787.                 Level: 0
  788.               Command: W
  789.             Arguments: mode:2
  790.                Format: !|W <mode>
  791.               Example: !|W00
  792.       Uses Draw Color: NO
  793.       Uses Line Patrn: NO
  794.       Uses Line Thick: NO
  795.       Uses Fill Color: NO
  796.       Uses Fill Patrn: NO
  797.       Uses Write Mode: YES
  798.       Uses Font Sizes: NO
  799.  
  800.      This command sets the current drawing mode for most of the graphics
  801.      primitives:
  802.  
  803.           mode = 00 ... Normal drawing mode (overwrite)
  804.                = 01 ... XOR (complimentary) mode
  805.  
  806.      In normal mode, things are drawn in the current drawing color over
  807.      top of whatever is in the graphics viewport.  This is the typical
  808.      mode of operation in a GUI environment.
  809.  
  810.      In the XOR mode, instead of changing each pixel to the current
  811.      drawing color, the pixel is inverted (black changes to white, red to
  812.      green, etc.).  Drawing the same item a second time erases it
  813.      completely.  This mode is useful for drawing something temporarily,
  814.      or for animation.  The Rubber Band mode of most paint programs uses a
  815.      mode like this.
  816.  
  817.  
  818.  
  819.  
  820.  
  821.      ---------------------------------------------------------------------
  822.      Move the current drawing position to (X,Y)
  823.      ---------------------------------------------------------------------
  824.                Symbol: RIP_MOVE
  825.                 Level: 0
  826.               Command: m
  827.             Arguments: x:2, y:2
  828.                Format: !|m <x> <y>
  829.               Example: !|m0509
  830.       Uses Draw Color: NO
  831.       Uses Line Patrn: NO
  832.       Uses Line Thick: NO
  833.       Uses Fill Color: NO
  834.       Uses Fill Patrn: NO
  835.       Uses Write Mode: NO
  836.       Uses Font Sizes: NO
  837.  
  838.      This command moves the current graphics drawing cursor to (x,y).  You
  839.      could use this to draw text at a certain point, but you'd probably
  840.      use RIP_TEXT_XY instead.  This command is primarily provided for
  841.      future development which will make use of its ability to relocate the
  842.      current drawing position without physically drawing anything.
  843.  
  844.  
  845.  
  846.  
  847.  
  848.      ---------------------------------------------------------------------
  849.      Draw Text in current Font/Size/Color at current location
  850.      ---------------------------------------------------------------------
  851.                Symbol: RIP_TEXT
  852.                 Level: 0
  853.               Command: T
  854.             Arguments: text-string
  855.                Format: !|T <text-string>
  856.               Example: !|Thello world
  857.       Uses Draw Color: YES
  858.       Uses Line Patrn: NO
  859.       Uses Line Thick: NO
  860.       Uses Fill Color: NO
  861.       Uses Fill Patrn: NO
  862.       Uses Write Mode: YES
  863.       Uses Font Sizes: YES
  864.  
  865.      This command displays text at the current location in the graphics
  866.      window, as set with the RIP_MOVE command.  The text is also affected
  867.      by the most recent settings of these commands:
  868.  
  869.           RIP_FONT_STYLE - font style (character set, direction, size)
  870.           RIP_WRITE_MODE - drawing mode (normal or XOR)
  871.           RIP_COLOR      - drawing color (from the 16-color RIP palette)
  872.  
  873.      The drawing position is placed at the end of the last character
  874.      drawn.
  875.  
  876.      The current drawing position is set immediately to the right of the
  877.      drawn text.  Subsequent Line, Circle or other such commands will not
  878.      affect this position.  This provides a means so that you can quickly
  879.      do another RIP_TEXT command (presumably in another color) at a later
  880.      time and have the text show up immediately after the previous text.
  881.  
  882.  
  883.  
  884.  
  885.  
  886.      ---------------------------------------------------------------------
  887.      Draw Text in current Font/Size/Color at specific location
  888.      ---------------------------------------------------------------------
  889.                Symbol: RIP_TEXT_XY
  890.                 Level: 0
  891.               Command: @
  892.             Arguments: x:2, y:2 and text-string
  893.                Format: !|@ <x> <y> <text-string>
  894.               Example: !|@0011hello world
  895.       Uses Draw Color: YES
  896.       Uses Line Patrn: NO
  897.       Uses Line Thick: NO
  898.       Uses Fill Color: NO
  899.       Uses Fill Patrn: NO
  900.       Uses Write Mode: YES
  901.       Uses Font Sizes: YES
  902.  
  903.      This command is an efficient combination of RIP_MOVE and RIP_TEXT.
  904.      The text is drawn at the specified location according to the same
  905.      settings as apply to RIP_TEXT (see above).
  906.  
  907.      The current drawing position is set immediately to the right of the
  908.      drawn text.  Subsequent Line, Circle or other such commands will not
  909.      affect this position.  This provides a means so that you can quickly
  910.      do another RIP_TEXT command (presumably in another color) at a later
  911.      time and have the text show up immediately after the previous text.
  912.  
  913.  
  914.  
  915.  
  916.  
  917.      ---------------------------------------------------------------------
  918.      Select the current Font Style, Orientation and Size
  919.      ---------------------------------------------------------------------
  920.                Symbol: RIP_FONT_STYLE
  921.                 Level: 0
  922.               Command: Y
  923.             Arguments: font:2, direction:2, size:2, res:2
  924.                Format: !|Y <font> <direction> <size> <res>
  925.               Example: !|Y01000400
  926.       Uses Draw Color: NO
  927.       Uses Line Patrn: NO
  928.       Uses Line Thick: NO
  929.       Uses Fill Color: NO
  930.       Uses Fill Patrn: NO
  931.       Uses Write Mode: NO
  932.       Uses Font Sizes: YES
  933.  
  934.      This command sets the current font, direction and size for subsequent
  935.      RIP_TEXT commands.
  936.  
  937.           FONT
  938.           ---------------------------------------------------------
  939.           00 ... Default 8x8 font (bit-mapped)
  940.           01 ... Triplex Font (scalable)
  941.           02 ... Small Font (scalable)
  942.           03 ... Sans Serif Font (scalable)
  943.           04 ... Gothic [old English] Font (scalable)
  944.  
  945.           DIRECTION
  946.           ---------------------------------------------------------
  947.           00 ... Horizontal direction
  948.           01 ... Vertical direction
  949.  
  950.           SIZE
  951.           ---------------------------------------------------------
  952.           01 ... Normal, default size
  953.           02 ... Magnification factor  2 ( x2)
  954.           03 ... Magnification factor  3 ( x3)
  955.           04 ... Magnification factor  4 ( x4)
  956.           05 ... Magnification factor  5 ( x5)
  957.           06 ... Magnification factor  6 ( x6)
  958.           07 ... Magnification factor  7 ( x7)
  959.           08 ... Magnification factor  8 ( x8)
  960.           09 ... Magnification factor  9 ( x9)
  961.           0A ... Magnification factor 10 (x10)
  962.  
  963.      NOTE:  The Default 8x8 font is bit-mapped and appears best when drawn
  964.      with size=1.  If you use a size greater than one, the individual
  965.      pixels making up the font are magnified, giving a jagged look.  This
  966.      may or may not be a desirable effect.  The Scalable Fonts (1-4) are
  967.      smooth scalable "vector" fonts.  The two byte <res> parameter is a
  968.      RESERVED parameter that is intended for future development.
  969.  
  970.  
  971.  
  972.  
  973.  
  974.      ---------------------------------------------------------------------
  975.      Draws a single pixel on the screen using current drawing color
  976.      ---------------------------------------------------------------------
  977.                Symbol: RIP_PIXEL
  978.                 Level: 0
  979.               Command: X
  980.             Arguments: x:2, y:2
  981.                Format: !|X <x> <y>
  982.               Example: !|X1122
  983.       Uses Draw Color: YES
  984.       Uses Line Patrn: NO
  985.       Uses Line Thick: NO
  986.       Uses Fill Color: NO
  987.       Uses Fill Patrn: NO
  988.       Uses Write Mode: NO
  989.       Uses Font Sizes: NO
  990.  
  991.      This command will draw a single pixel in the current drawing color at
  992.      the given (x,y) graphics position.  This command is included for
  993.      completeness, but in practice it would be extremely inefficient to
  994.      make much use of it.
  995.  
  996.  
  997.  
  998.  
  999.  
  1000.      ---------------------------------------------------------------------
  1001.      Draw a line in the current color and line style/thickness
  1002.      ---------------------------------------------------------------------
  1003.                Symbol: RIP_LINE
  1004.                 Level: 0
  1005.               Command: L
  1006.             Arguments: x0:2, y0:2, x1:2, y1:2
  1007.                Format: !|L <x0> <y0> <x1> <y1>
  1008.               Example: !|L00010A0E
  1009.       Uses Draw Color: YES
  1010.       Uses Line Patrn: YES
  1011.       Uses Line Thick: YES
  1012.       Uses Fill Color: NO
  1013.       Uses Fill Patrn: NO
  1014.       Uses Write Mode: YES
  1015.       Uses Font Sizes: NO
  1016.  
  1017.      This command will draw a line in the current drawing color, using the
  1018.      current line style, pattern and thickness.  The line is drawn from
  1019.      (x0,y0) to (x1,y1) in the graphics viewport.
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  
  1025.      ---------------------------------------------------------------------
  1026.      Draw a rectangle in the current color and line style/thickness
  1027.      ---------------------------------------------------------------------
  1028.                Symbol: RIP_RECTANGLE
  1029.                 Level: 0
  1030.               Command: R
  1031.             Arguments: x0:2, y0:2, x1:2, y1:2
  1032.                Format: !|R <x0> <y0> <x1> <y1>
  1033.               Example: !|R00010A0E
  1034.       Uses Draw Color: YES
  1035.       Uses Line Patrn: YES
  1036.       Uses Line Thick: YES
  1037.       Uses Fill Color: NO
  1038.       Uses Fill Patrn: NO
  1039.       Uses Write Mode: YES
  1040.       Uses Font Sizes: NO
  1041.  
  1042.      This command draws a rectangle in the current drawing color, using
  1043.      the current line style, pattern and thickness.  (x0,y0) and (x1,y1)
  1044.      are any two opposing corners of the rectangle.  If x0=x1 or y0=y1
  1045.      then the command will draw a single vertical or horizontal line.  The
  1046.      rectangle interior is not filled by RIP_RECTANGLE.
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.      ---------------------------------------------------------------------
  1053.      Draws a solid, filled rectangle using current fill color and pattern
  1054.      ---------------------------------------------------------------------
  1055.                Symbol: RIP_BAR
  1056.                 Level: 0
  1057.               Command: B
  1058.             Arguments: x0:2, y0:2, x1:2, y1:2
  1059.                Format: !|B <x0> <y0> <x1> <y1>
  1060.               Example: !|B00010A0E
  1061.       Uses Draw Color: NO
  1062.       Uses Line Patrn: NO
  1063.       Uses Line Thick: NO
  1064.       Uses Fill Color: YES
  1065.       Uses Fill Patrn: YES
  1066.       Uses Write Mode: NO
  1067.       Uses Font Sizes: NO
  1068.  
  1069.      This command fills a rectangular region with the current fill color
  1070.      and pattern.  No border is drawn.
  1071.  
  1072.  
  1073.  
  1074.  
  1075.  
  1076.      ---------------------------------------------------------------------
  1077.      Draw a circle in the current color and line thickness (no style)
  1078.      ---------------------------------------------------------------------
  1079.                Symbol: RIP_CIRCLE
  1080.                 Level: 0
  1081.               Command: C
  1082.             Arguments: x_center:2, y_center:2, radius:2
  1083.                Format: !|C <x_center> <y_center> <radius>
  1084.               Example: !|C1E180M
  1085.       Uses Draw Color: YES
  1086.       Uses Line Patrn: NO
  1087.       Uses Line Thick: YES
  1088.       Uses Fill Color: NO
  1089.       Uses Fill Patrn: NO
  1090.       Uses Write Mode: NO
  1091.       Uses Font Sizes: NO
  1092.  
  1093.      This command draws a circle in the current drawing color and line
  1094.      thickness.  The <radius> is in pixel units.  This command understands
  1095.      aspect ratios and will draw a truly circular circle instead of an
  1096.      oblong circle (ellipse) like on other graphics systems.  The aspect
  1097.      ratio is currently based on the EGA 640x350 resolution and is
  1098.      understood by both the GUI designer and the Terminal Program.  This
  1099.      command does not take advantage of line patterns, but does use the
  1100.      line thickness setting.  In other words, you can draw a circle with a
  1101.      thick or a thin border, but not a dashed or dotted border.
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  
  1107.      ---------------------------------------------------------------------
  1108.      Draw an elliptical arc in the current color and line thickness
  1109.      ---------------------------------------------------------------------
  1110.                Symbol: RIP_OVAL
  1111.                 Level: 0
  1112.               Command: O
  1113.             Arguments: x:2, y:2, st_ang:2, end_ang:2, x_rad:2, y_rad:2
  1114.                Format: !|O <x> <y> <st_ang> <end_ang> <x_rad> <y_rad>
  1115.               Example: 1E1A18003G150Z
  1116.       Uses Draw Color: YES
  1117.       Uses Line Patrn: NO
  1118.       Uses Line Thick: YES
  1119.       Uses Fill Color: NO
  1120.       Uses Fill Patrn: NO
  1121.       Uses Write Mode: NO
  1122.       Uses Font Sizes: NO
  1123.  
  1124.      This command draws an elliptical arc similar to the circular RIP_ARC
  1125.      command.  The center of the ellipse is (x,y) and the arc is
  1126.      drawn starting from <st_ang> and proceeding counterclockwise to
  1127.      <end_ang> (see RIP_ARC above for details).
  1128.  
  1129.      The X radius is half the full width of the ellipse, the Y radius is
  1130.      half the full height.  The ellipse is drawn according to the current
  1131.      line thickness, but the current line pattern has no effect.
  1132.  
  1133.  
  1134.  
  1135.  
  1136.  
  1137.      ---------------------------------------------------------------------
  1138.      Draws a filled ellipse using the current fill and drawing color
  1139.      ---------------------------------------------------------------------
  1140.                Symbol: RIP_FILLED_OVAL
  1141.                 Level: 0
  1142.               Command: o
  1143.             Arguments: x_center:2, y_center:2, x_rad:2, y_rad:2
  1144.                Format: !|o <x_center> <y_center> <x_rad> <y_rad>
  1145.               Example: !|o1G2B0M0G
  1146.       Uses Draw Color: YES
  1147.       Uses Line Patrn: NO
  1148.       Uses Line Thick: YES
  1149.       Uses Fill Color: YES
  1150.       Uses Fill Patrn: YES
  1151.       Uses Write Mode: NO
  1152.       Uses Font Sizes: NO
  1153.  
  1154.      This command draws a complete filled ellipse on the screen.  The
  1155.      interior of the ellipse is drawn using the current fill pattern and
  1156.      fill color.  The outline of the ellipse is drawn using the current
  1157.      drawing color and line thickness.
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.      ---------------------------------------------------------------------
  1164.      Draw a circular arc in the current color and line thickness
  1165.      ---------------------------------------------------------------------
  1166.                Symbol: RIP_ARC
  1167.                 Level: 0
  1168.               Command: A
  1169.             Arguments: x:2, y:2, start_ang:2, end_ang:2, radius:2
  1170.                Format: !|A <x> <y> <start_ang> <end_ang> <radius>
  1171.               Example: !|A1E18003G15
  1172.       Uses Draw Color: YES
  1173.       Uses Line Patrn: NO
  1174.       Uses Line Thick: YES
  1175.       Uses Fill Color: NO
  1176.       Uses Fill Patrn: NO
  1177.       Uses Write Mode: NO
  1178.       Uses Font Sizes: NO
  1179.  
  1180.      This command draws a circular arc, or a segment of a circle.  Drawing
  1181.      begins at <start_ang> and terminates at <end_ang>.  The angles are
  1182.      represented starting at zero for the 3 o'clock position and
  1183.      increasing counterclockwise through a full circle to 360:
  1184.  
  1185.                                90
  1186.                                 |
  1187.                           180---|--- 0
  1188.                                 |
  1189.                                270
  1190.  
  1191.      The arc drawing begins at the <start_angle> and continues counter-
  1192.      clockwise to the <end_angle>.  A full circle will be displayed if
  1193.      <start_ang>=0 and <end_ang>=360.  This command recognizes aspect
  1194.      ratios like the circle command does.  It does not take advantage of
  1195.      line patterns but does comply with line thickness.
  1196.  
  1197.      If both angles are equal, nothing is drawn.
  1198.  
  1199.  
  1200.  
  1201.  
  1202.  
  1203.      ---------------------------------------------------------------------
  1204.      Draw an Elliptical Arc
  1205.      ---------------------------------------------------------------------
  1206.                Symbol: RIP_OVAL_ARC
  1207.                 Level: 0
  1208.               Command: V
  1209.             Arguments: x:2, y:2, st_ang:2, e_ang:2, radx:2 rady:2
  1210.                Format: !|V <x> <y> <st_ang> <e_ang> <radx> <rady>
  1211.               Example: !|V1E18003G151Q
  1212.       Uses Draw Color: YES
  1213.       Uses Line Patrn: NO
  1214.       Uses Line Thick: YES
  1215.       Uses Fill Color: NO
  1216.       Uses Fill Patrn: NO
  1217.       Uses Write Mode: NO
  1218.       Uses Font Sizes: NO
  1219.  
  1220.      This command draws an elliptical arc, or a segment of an ellipse.
  1221.      Drawing begins at <st_ang> and terminates at <e_ang>.  The angles are
  1222.      represented starting at zero for 3 o'clock position and increasing
  1223.      counterclockwise through a full ellipse at 360 degrees:
  1224.  
  1225.                                90
  1226.                                 |
  1227.                           180---|--- 0
  1228.                                 |
  1229.                                270
  1230.  
  1231.      The arc drawing begins at the <st_ang> and continues counterclockwise
  1232.      to the <e_ang>.  A complete ellipsewill be displayed if <st_ang>=0
  1233.      and <e_ang>=360.  This command does not utilize "aspect ratios"
  1234.      because of the nature of an Ellipse.  It does not take advantage of
  1235.      line patterns but does comply with line thickness.
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.      ---------------------------------------------------------------------
  1242.      Draw a circular Pie Slice
  1243.      ---------------------------------------------------------------------
  1244.                Symbol: RIP_PIE_SLICE
  1245.                 Level: 0
  1246.               Command: I
  1247.             Arguments: x:2, y:2, start_ang:2, end_ang:2, radius:2
  1248.                Format: !|I <x> <y> <start_ang> <end_ang> <radius>
  1249.               Example: !|I1E18003G15
  1250.       Uses Draw Color: YES
  1251.       Uses Line Patrn: NO
  1252.       Uses Line Thick: YES
  1253.       Uses Fill Color: YES
  1254.       Uses Fill Patrn: YES
  1255.       Uses Write Mode: NO
  1256.       Uses Font Sizes: NO
  1257.  
  1258.      This command draws a "pie slice".  The slice is circular.  It obeys
  1259.      all of the same commands as the Arc command described above.  The
  1260.      ends of the arc are connected to the Center-Point of the Arc with two
  1261.      straight lines.  These two lines converge at the Center-Point.  The
  1262.      interior of the Slice is filled with the current Fill Color and
  1263.      Pattern.  The exterior (outline) of the Slice is drawn using the
  1264.      current drawing color and line thickness.  The Line Pattern feature
  1265.      does not apply to this command.
  1266.  
  1267.  
  1268.  
  1269.  
  1270.  
  1271.      ---------------------------------------------------------------------
  1272.      Draw an Elliptical Pie Slice
  1273.      ---------------------------------------------------------------------
  1274.                Symbol: RIP_OVAL_PIE_SLICE
  1275.                 Level: 0
  1276.               Command: i
  1277.             Arguments: x:2, y:2, st_ang:2, e_ang:2, radx:2 rady:2
  1278.                Format: !|i <x> <y> <st_ang> <e_ang> <radx> <rady>
  1279.               Example: !|i1E18003G151Q
  1280.       Uses Draw Color: YES
  1281.       Uses Line Patrn: NO
  1282.       Uses Line Thick: YES
  1283.       Uses Fill Color: YES
  1284.       Uses Fill Patrn: YES
  1285.       Uses Write Mode: NO
  1286.       Uses Font Sizes: NO
  1287.  
  1288.      This command draws an  "elliptical pie slice".  It obeys all of the
  1289.      same commands as the Elliptical Arc command described above.  The
  1290.      ends of the arc are connected to the Center-Point of the Arc with two
  1291.      straight lines.  These two lines converge at the Center-Point.  The
  1292.      interior of the Slice is filled with the current Fill Color and
  1293.      Pattern.  The exterior (outline) of the Slice is drawn using the
  1294.      current drawing color and line thickness.  The Line Pattern feature
  1295.      does not apply to this command.
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.      ---------------------------------------------------------------------
  1302.      Draw a custom "Bezier" curve
  1303.      ---------------------------------------------------------------------
  1304.                Symbol: RIP_BEZIER
  1305.                 Level: 0
  1306.               Command: Z
  1307.             Arguments: x1:2 y1:2  x2:2 y2:2  x3:2 y3:2  x4:2 y4:2  cnt:2
  1308.                Format: !|Z <x1> <y1> <x2> <y2> <x3> <y3> <x4> <y4> <cnt>
  1309.               Example: !|Z0A0B0C0D0E0F0G0H1G
  1310.       Uses Draw Color: YES
  1311.       Uses Line Patrn: YES
  1312.       Uses Line Thick: YES
  1313.       Uses Fill Color: NO
  1314.       Uses Fill Patrn: NO
  1315.       Uses Write Mode: YES
  1316.       Uses Font Sizes: NO
  1317.  
  1318.      This command provides customizable Curves.  Four "control points" are
  1319.      used to create the shape of the curve.  The curves beginning point is
  1320.      at point (x1,y1) and it ends at (x4,y4).  Points (x2,y2) and (x3,y3)
  1321.      are not necessarily "on" the curve, but are used to "pull" the curve
  1322.      in their direction.  The diagram below indicates how points 2 and 3
  1323.      can be utilized to form the desired curve.  Note that points 2 and 3
  1324.      are not actually "on" the curve, but points 1 and 4 are.
  1325.  
  1326.                           X2
  1327.  
  1328.                          *****
  1329.                        **     ****
  1330.                       *           **            X4
  1331.                      *              **          *
  1332.                    X1                 *       **
  1333.                                        *    **
  1334.                                         ****
  1335.  
  1336.                                          X3
  1337.  
  1338.      NOTE: That points 2 and 3 are not actually "on" the curve, but points
  1339.            1 and 4 are.
  1340.  
  1341.      The last parameter of this command is the <cnt> parameter.  This
  1342.      determines how many "segments" the curve should be drawn in.  Each
  1343.      segment is in fact, a straight line.  The more segments you allow,
  1344.      the smoother the curve may be.  If a curve does not have a
  1345.      significant amount of "curviness" then a low "count" can improve
  1346.      performance of the curve drawing.  Bezier Curves use "floating point"
  1347.      math internally for its processing.  All paramters specified for this
  1348.      command are simple integers however.
  1349.  
  1350.  
  1351.  
  1352.  
  1353.  
  1354.      ---------------------------------------------------------------------
  1355.      Draws a polygon using the current color and line style/thickness
  1356.      ---------------------------------------------------------------------
  1357.                Symbol: RIP_POLYGON
  1358.                 Level: 0
  1359.               Command: P
  1360.             Arguments: npoints:2, x1:2, y1:2, ... xn:2, yn:2
  1361.                Format: !|P <npoints> <x1> <y1> ... <xn> <yn>
  1362.               Example: !|P03010105090905
  1363.       Uses Draw Color: YES
  1364.       Uses Line Patrn: YES
  1365.       Uses Line Thick: YES
  1366.       Uses Fill Color: NO
  1367.       Uses Fill Patrn: NO
  1368.       Uses Write Mode: YES
  1369.       Uses Font Sizes: NO
  1370.  
  1371.      This command will draw a multi-sided closed polygon.  The polygon is
  1372.      drawn using the current drawing color, line pattern and thickness.
  1373.      The <npoints> parameter is between 2 and 512 and indicates how many
  1374.      (x,y) coordinate pairs will follow, which is also the number of sides
  1375.      of the polygon.  The polygon interior is not filled by RIP_POLYGON.
  1376.  
  1377.      The polygon is enclosed by the last vertex between xn,yn and x1,y1.
  1378.      In other words, you do not have to connect the end to the beginning -
  1379.      it is automatically done for you.
  1380.  
  1381.  
  1382.  
  1383.  
  1384.  
  1385.      ---------------------------------------------------------------------
  1386.      Draws a filled polygon, using drawing color, current fill settings
  1387.      ---------------------------------------------------------------------
  1388.                Symbol: RIP_FILL_POLY
  1389.                 Level: 0
  1390.               Command: p
  1391.             Arguments: npoints:2, x1:2, y1:2, ... xn:2, yn:2
  1392.                Format: !|p <npoints> <x1> <y1> ... <xn> <yn>
  1393.               Example: !|p03010105050909
  1394.       Uses Draw Color: YES
  1395.       Uses Line Patrn: YES
  1396.       Uses Line Thick: YES
  1397.       Uses Fill Color: YES
  1398.       Uses Fill Patrn: YES
  1399.       Uses Write Mode: YES
  1400.       Uses Font Sizes: NO
  1401.  
  1402.      This command is identical to RIP_POLYGON, except that the interior of
  1403.      the polygon is filled with the current fill color and fill pattern.
  1404.      The actual outline of the polygon is drawn using the current drawing
  1405.      color, line pattern and thickness.
  1406.  
  1407.      NOTE:  You will get unusual effects if the lines of the polygon
  1408.      overlap, creating a polygon with internal "gaps".  (The rule is
  1409.      this:  regions that are "inside" the polygon an even number of times
  1410.      due to overlap are NOT filled.)  The interior fill does not utilize
  1411.      Write Mode, but the outline of the polygon does.
  1412.  
  1413.  
  1414.  
  1415.  
  1416.  
  1417.      ---------------------------------------------------------------------
  1418.      Flood Fills a given area of the screen with the current fill settings
  1419.      ---------------------------------------------------------------------
  1420.                Symbol: RIP_FILL
  1421.                 Level: 0
  1422.               Command: F
  1423.             Arguments: x:2, y:2, border:2
  1424.                Format: !|F <x> <y> <border>
  1425.               Example: !|F25090F
  1426.       Uses Draw Color: NO
  1427.       Uses Line Patrn: NO
  1428.       Uses Line Thick: NO
  1429.       Uses Fill Color: YES
  1430.       Uses Fill Patrn: YES
  1431.       Uses Write Mode: NO
  1432.       Uses Font Sizes: NO
  1433.  
  1434.      This command performs a "flood fill" emanating from the given <x,y>
  1435.      point.  The fill "oozes" in all directions up to <border> color, but
  1436.      the border itself is not changed.  Whatever is inside the border
  1437.      that's not the border color gets changed to the current fill color
  1438.      and fill pattern.  If the border color does not completely enclose
  1439.      the <x,y> point, the fill will continue to the edges of the viewport.
  1440.  
  1441.  
  1442.  
  1443.  
  1444.  
  1445.      ---------------------------------------------------------------------
  1446.      Defines a line style and thickness
  1447.      ---------------------------------------------------------------------
  1448.                Symbol: RIP_LINE_STYLE
  1449.                 Level: 0
  1450.               Command: =
  1451.             Arguments: style:2, user_pat:4, thick:2
  1452.                Format: !|= <style> <user_pat> <thick>
  1453.               Example: !|=01000001
  1454.       Uses Draw Color: NO
  1455.       Uses Line Patrn: YES
  1456.       Uses Line Thick: YES
  1457.       Uses Fill Color: NO
  1458.       Uses Fill Patrn: NO
  1459.       Uses Write Mode: NO
  1460.       Uses Font Sizes: NO
  1461.  
  1462.      This command establishes the current line pattern and thickness for
  1463.      many subsequent graphics primitive commands.  There are four built-in
  1464.      line styles plus provisions for custom line patterns.
  1465.  
  1466.  
  1467.           STYLE
  1468.           =================================================
  1469.             00 ... Normal, Solid Line
  1470.             01 ... Dotted Line
  1471.             02 ... Centered Line
  1472.             03 ... Dashed Line
  1473.             04 ... Custom Defined line (see about <user_pat> below)
  1474.  
  1475.           THICK (these are the only available settings)
  1476.           =================================================
  1477.             01 ... Lines are 1 pixel wide
  1478.             03 ... Lines are 3 pixels wide
  1479.  
  1480.      If the <style> is set to a value of 4 (custom pattern), then the
  1481.      <user_pat> parameter is used as a 16-bit representation of the pixels
  1482.      in the line pattern.  For example:
  1483.  
  1484.  
  1485.               repeating                                            Mega-
  1486.            <---pattern---->   Binary coding       Hex    Decimal   num
  1487.  
  1488.            - - - - - - - -    1010101010101010    AAAA   43690     0XPM
  1489.  
  1490.            ----    ----       1111000011110000    F0F0   61680     1BLC
  1491.  
  1492.  
  1493.      So, the most-significant-bit of <user_pat> is toward the starting
  1494.      point of the line or border that uses this fill pattern.  If the
  1495.      <style> parameter is not 4, then the <user_pat> parameter is ignored.
  1496.  
  1497.  
  1498.  
  1499.  
  1500.  
  1501.      ---------------------------------------------------------------------
  1502.      Sets the current fill style (predefined patterns), and fill color
  1503.      ---------------------------------------------------------------------
  1504.                Symbol: RIP_FILL_STYLE
  1505.                 Level: 0
  1506.               Command: S
  1507.             Arguments: pattern:2, color:2
  1508.                Format: !|S <pattern> <color>
  1509.               Example: !|S050F
  1510.       Uses Draw Color: NO
  1511.       Uses Line Patrn: NO
  1512.       Uses Line Thick: NO
  1513.       Uses Fill Color: YES
  1514.       Uses Fill Patrn: YES
  1515.       Uses Write Mode: NO
  1516.       Uses Font Sizes: NO
  1517.  
  1518.      This command defines the current fill pattern and fill color for use
  1519.      in subsequent graphics fill operations.  There are twelve (12)
  1520.      predefined fill patterns.  They are:
  1521.  
  1522.           PATTERN DESCRIPTION
  1523.           ==============================================================
  1524.             00    Fill with background color (color #0)
  1525.             01    Solid Fill (fill color)
  1526.             02    Line Fill ................. ----------- (thick lines)
  1527.             03    Light Slash Fill .......... /  /  /  /  (thin lines)
  1528.             04    Normal Slash Fill ......... // // // // (thick lines)
  1529.             05    Normal Backslash Fill ..... \\ \\ \\ \\ (thick lines)
  1530.             06    Light Backslash Fill ...... \  \  \  \  (thin lines)
  1531.             07    Light Hatch Fill .......... ########### (thin lines)
  1532.             08    Heavy Cross Hatch Fill .... XXXXXXXXXXX (thin lines)
  1533.             09    Interleaving Line Fill .... +-+-+-+-+-+ (thin lines)
  1534.             0A    Widely spaced dot fill .... . : . : . : (pixels only)
  1535.             0B    Closely spaced dot fill ... ::::::::::: (pixels only)
  1536.  
  1537.      The <color> parameter is the fill color for subsequent fill commands.
  1538.      The "active" pixels of the pattern become this color.  The "inactive"
  1539.      pixels become the current background color (color 00, typically
  1540.      black).  Fill pattern 00 will set the entire fill area to the
  1541.      background color.  (In this special case, the fill color doesn't
  1542.      matter.)
  1543.  
  1544.  
  1545.  
  1546.  
  1547.  
  1548.      ---------------------------------------------------------------------
  1549.      Sets a user-definable fill pattern (custom) and fill color
  1550.      ---------------------------------------------------------------------
  1551.                Symbol: RIP_FILL_PATTERN
  1552.                 Level: 0
  1553.               Command: s
  1554.             Arguments: c1:2 c2:2 c3:2 c4:2 c5:2 c6:2 c7:2 c8:2 color:2
  1555.                Format: !|s <c1> <c2> <c3> <c4> <c5> <c6> <c7> <c8> <color>
  1556.               Example: !|s11223344556677880F
  1557.       Uses Draw Color: NO
  1558.       Uses Line Patrn: NO
  1559.       Uses Line Thick: NO
  1560.       Uses Fill Color: YES
  1561.       Uses Fill Patrn: YES
  1562.       Uses Write Mode: NO
  1563.       Uses Font Sizes: NO
  1564.  
  1565.      This command allows you to specify a user-defined, custom Fill
  1566.      Pattern.  This pattern supersedes the predefined patterns of
  1567.      RIP_FILL_STYLE.  A custom fill pattern is an 8x8 pixel array defining
  1568.      which pixels should be drawn in the current fill color (as set by the
  1569.      <color> parameter here).  The other pixels in the fill area are set
  1570.      to the current background color (color 00, typically black).
  1571.  
  1572.      Each of the eight parameters of this command, <c1> through <c8>
  1573.      represent bit-patterns for a line of the 8x8 pixel array.  Each line
  1574.      is comprised of 8 pixels.  The value of each parameter is the binary
  1575.      representation of these 8 pixels as follows:
  1576.  
  1577.           bit   7   6   5   4   3   2   1   0
  1578.               +-------------------------------+
  1579.           c1  |128| 64| 32| 16| 8 | 4 | 2 | 1 |
  1580.               +-------------------------------+
  1581.           c2  |128| 64| 32| 16| 8 | 4 | 2 | 1 |
  1582.               +-------------------------------+
  1583.           c3  |128| 64| 32| 16| 8 | 4 | 2 | 1 |
  1584.               +-------------------------------+
  1585.           c4  |128| 64| 32| 16| 8 | 4 | 2 | 1 |
  1586.               +-------------------------------+
  1587.           c5  |128| 64| 32| 16| 8 | 4 | 2 | 1 |
  1588.               +-------------------------------+
  1589.           c6  |128| 64| 32| 16| 8 | 4 | 2 | 1 |
  1590.               +-------------------------------+
  1591.           c7  |128| 64| 32| 16| 8 | 4 | 2 | 1 |
  1592.               +-------------------------------+
  1593.           c8  |128| 64| 32| 16| 8 | 4 | 2 | 1 |
  1594.               +-------------------------------+
  1595.  
  1596.      So, c1 is the top, and the most-significant bit is to the left.
  1597.  
  1598.      NOTE: The RIP_FILL_STYLE (predefined fill patterns) and this
  1599.      RIP_FILL_PATTERN (custom fill patterns) completely override one
  1600.      another's effects.
  1601.  
  1602.  
  1603.  
  1604.  
  1605.  
  1606.      ---------------------------------------------------------------------
  1607.      Defines a rectangular "hot" Mouse Region on screen
  1608.      ---------------------------------------------------------------------
  1609.                Symbol: RIP_MOUSE
  1610.                 Level: 1
  1611.               Command: M
  1612.             Arguments: num:2  x0:2 y0:2  x1:2 y1:2  clk:1 clr:1 res:5 text
  1613.                Format: !|1M <num> <x0><y0> <x1><y1> <clk><clr><res> <text>
  1614.               Example: !|1M00001122331100000host command^M
  1615.       Uses Draw Color: NO
  1616.       Uses Line Patrn: NO
  1617.       Uses Line Thick: NO
  1618.       Uses Fill Color: NO
  1619.       Uses Fill Patrn: NO
  1620.       Uses Write Mode: NO
  1621.       Uses Font Sizes: NO
  1622.  
  1623.      This command ties together three things:
  1624.  
  1625.           A region on the screen
  1626.           A mouse-click event
  1627.           A string of text to be transmitted by the terminal.
  1628.  
  1629.      This command defines a rectangular region on the screen that functions
  1630.      as a "hot" mouse area.  If the user clicks the [left] mouse button
  1631.      while pointing inside the region, then the terminal must transmit the
  1632.      <text> string to the Host.  The (x0,y0) parameter MUST be the
  1633.      upper-left corner, and (x1,y1) MUST be the lower-right corner of the
  1634.      region.
  1635.  
  1636.      The <clk> parameter, if 1, indicates that the region should be
  1637.      visibly inverted while the mouse button is down.  This offers visual
  1638.      feedback.  If <clk> is 0, the region will not be inverted while
  1639.      clicked.
  1640.  
  1641.      The <clr> parameter, if 1, will physically zoom the text window to
  1642.      full screen size and clear the screen.  This is useful if the <text>
  1643.      parameter instructs the host to enter an area of the System that
  1644.      doesn't support RIPscrip graphics.
  1645.  
  1646.      The <text> parameter is a Host command that gets sent when the field
  1647.      is clicked.  You may use a caret (^) to represent control characters,
  1648.      (eg, ^M for carriage return, ^G, ^C, etc).
  1649.  
  1650.      NOTE: You are limited to a maximum of 128 Mouse Regions.  In addition,
  1651.            the 5-byte <res> parameter is RESERVED FOR FUTURE USE, and
  1652.            should be set to zeros (00000).
  1653.  
  1654.  
  1655.  
  1656.  
  1657.  
  1658.      ---------------------------------------------------------------------
  1659.      Destroys all previously defined "hot" Mouse Regions
  1660.      ---------------------------------------------------------------------
  1661.                Symbol: RIP_KILL_MOUSE_FIELDS
  1662.                 Level: 1
  1663.               Command: K
  1664.             Arguments: <none>
  1665.                Format: !|1K
  1666.               Example: !|1K
  1667.       Uses Draw Color: NO
  1668.       Uses Line Patrn: NO
  1669.       Uses Line Thick: NO
  1670.       Uses Fill Color: NO
  1671.       Uses Fill Patrn: NO
  1672.       Uses Write Mode: NO
  1673.       Uses Font Sizes: NO
  1674.  
  1675.      This command will "forget" all Mouse Regions.  Use it at the beginning
  1676.      of each Scene, so that one scene's Mouse Regions don't get used in
  1677.      another.
  1678.  
  1679.  
  1680.  
  1681.  
  1682.  
  1683.      ---------------------------------------------------------------------
  1684.      Define a rectangular Text Region
  1685.      ---------------------------------------------------------------------
  1686.                Symbol: RIP_BEGIN_TEXT
  1687.                 Level: 1
  1688.               Command: T
  1689.             Arguments: x1:2, y1:2, x2:2, y2:2, res:2
  1690.                Format: !|1T <x1> <y1> <x2> <y2> <res>
  1691.               Example: !|1T00110011
  1692.       Uses Draw Color: NO
  1693.       Uses Line Patrn: NO
  1694.       Uses Line Thick: NO
  1695.       Uses Fill Color: NO
  1696.       Uses Fill Patrn: NO
  1697.       Uses Write Mode: NO
  1698.       Uses Font Sizes: NO
  1699.  
  1700.      This command defines a rectangular portion of the graphics viewport
  1701.      that is to display text, usually a long stream of text.  Following
  1702.      this command should be a number of RIP_REGION_TEXT commands with the
  1703.      text to be displayed.  The RIP_END_TEXT terminates this stream of
  1704.      text, something like this:
  1705.  
  1706.           RIP_BEGIN_TEXT
  1707.              RIP_REGION_TEXT
  1708.              RIP_REGION_TEXT
  1709.              RIP_REGION_TEXT
  1710.              :
  1711.              RIP_REGION_TEXT
  1712.           RIP_END_TEXT
  1713.  
  1714.      There must be at least one RIP_REGION_TEXT command in between the
  1715.      header and the footer.  There may be as many as needed.
  1716.  
  1717.      These commands ignore the current font "direction"; all text is
  1718.      always displayed horizontally.
  1719.  
  1720.      NOTE:  The "res" parameter is two bytes wide and is RESERVED for
  1721.             future use.
  1722.  
  1723.  
  1724.  
  1725.  
  1726.  
  1727.      ---------------------------------------------------------------------
  1728.      Display a line of text in the rectangular Text Region
  1729.      ---------------------------------------------------------------------
  1730.                Symbol: RIP_REGION_TEXT
  1731.                 Level: 1
  1732.               Command: t
  1733.             Arguments: justify:1 and text-string
  1734.                Format: !|1t <justify> <text-string>
  1735.               Example: !|1t1This is a text line to be justified
  1736.       Uses Draw Color: YES
  1737.       Uses Line Patrn: NO
  1738.       Uses Line Thick: NO
  1739.       Uses Fill Color: NO
  1740.       Uses Fill Patrn: NO
  1741.       Uses Write Mode: YES
  1742.       Uses Font Sizes: YES
  1743.  
  1744.      A number of these commands may come sandwiched between the
  1745.      RIP_BEGIN_TEXT and RIP_END_TEXT commands.  The <text-string> is
  1746.      already word-wrapped in such a way that it will fit inside the
  1747.      rectangular region based on the current font, font size, and drawing
  1748.      color.
  1749.  
  1750.      There are two possible settings for the <justify> parameter:
  1751.  
  1752.           0 ... Don't right/left justify.  Left-justify only
  1753.  
  1754.           1 ... Perform right/left margin justification of this line
  1755.                 of text except for the last line of a paragraph and
  1756.                 sets of indented lines.
  1757.  
  1758.      If a text line falls off the bottom of the region, it is discarded --
  1759.      the rectangular Text Region does not scroll.
  1760.  
  1761.  
  1762.  
  1763.  
  1764.  
  1765.      ---------------------------------------------------------------------
  1766.      End a rectangular Text Region
  1767.      ---------------------------------------------------------------------
  1768.                Symbol: RIP_END_TEXT
  1769.                 Level: 1
  1770.               Command: E
  1771.             Arguments: <none>
  1772.                Format: !|1E
  1773.               Example: !|1E
  1774.       Uses Draw Color: NO
  1775.       Uses Line Patrn: NO
  1776.       Uses Line Thick: NO
  1777.       Uses Fill Color: NO
  1778.       Uses Fill Patrn: NO
  1779.       Uses Write Mode: NO
  1780.       Uses Font Sizes: NO
  1781.  
  1782.      This command indicates the end of a formatted text block.  Only one
  1783.      of these "end" commands is necessary for each block.
  1784.  
  1785.  
  1786.  
  1787.  
  1788.  
  1789.      ---------------------------------------------------------------------
  1790.      Copies a rectangular screen image onto the Clipboard (as an Icon)
  1791.      ---------------------------------------------------------------------
  1792.                Symbol: RIP_GET_IMAGE
  1793.                 Level: 1
  1794.               Command: C
  1795.             Arguments: x0:2, y0:2, x1:2, y1:2, res:1
  1796.                Format: !|1C <x0> <y0> <x1> <y1> <res>
  1797.               Example: !|1C001122330
  1798.       Uses Draw Color: NO
  1799.       Uses Line Patrn: NO
  1800.       Uses Line Thick: NO
  1801.       Uses Fill Color: NO
  1802.       Uses Fill Patrn: NO
  1803.       Uses Write Mode: NO
  1804.       Uses Font Sizes: NO
  1805.  
  1806.      This command instructs the terminal program to copy the rectangular
  1807.      region defined by (x0,y0) to (x1,y1) onto an internal Clipboard for
  1808.      future use.  This combined with the Paste Clipboard command can
  1809.      provide an extremely powerful and efficient mechanism to avoid
  1810.      baud-rate bandwidth limitations.  The (x0,y0) parameter MUST specify
  1811.      the upper-left corner of the region and the (x1,y1) parameter MUST
  1812.      specify the lower-right corner.  If the indicated coordinates are in
  1813.      anyway invalid, the command is ignored.  The Clipboard is completely
  1814.      overwritten by this command (the previous contents are lost).
  1815.  
  1816.      NOTE: The <res> parameter is RESERVED FOR FUTURE USE and should be
  1817.            set to zero.
  1818.  
  1819.  
  1820.  
  1821.  
  1822.  
  1823.      ---------------------------------------------------------------------
  1824.      Pastes the clipboard (Icon) contents onto the screen
  1825.      ---------------------------------------------------------------------
  1826.                Symbol: RIP_PUT_IMAGE
  1827.                 Level: 1
  1828.               Command: P
  1829.             Arguments: x:2, y:2, mode:2, res:1
  1830.                Format: !|1P <x> <y> <mode> <res>
  1831.               Example: !|1P0011010
  1832.       Uses Draw Color: NO
  1833.       Uses Line Patrn: NO
  1834.       Uses Line Thick: NO
  1835.       Uses Fill Color: NO
  1836.       Uses Fill Patrn: NO
  1837.       Uses Write Mode: NO
  1838.       Uses Font Sizes: NO
  1839.  
  1840.      This command takes the contents of the Clipboard (if any) and pastes
  1841.      the image onto the screen starting at the upper-left corner of the
  1842.      image of (x,y).  If the right edge of the image would go off-screen,
  1843.      the paste command is ignored.  The Height and Width of the clipboard
  1844.      image is recorded on the Clipboard, so this command doesn't need to
  1845.      supply it.
  1846.  
  1847.      The <mode> parameter defines "how" the image will be pasted on the
  1848.      screen:
  1849.  
  1850.          MODE DESCRIPTION
  1851.          ==============================================================
  1852.            00 Paste the image on-screen normally                 (COPY)
  1853.            01 Exclusive-OR  image with the one already on screen (XOR)
  1854.            02 Logically OR  image with the one already on screen (OR)
  1855.            03 Logically AND image with the one already on screen (AND)
  1856.            04 Paste the inverse of the image on the screen       (NOT)
  1857.  
  1858.      NOTE: The 1-byte <res> parameter is RESERVED FOR FUTURE USE and
  1859.            should be set to zero.
  1860.  
  1861.  
  1862.  
  1863.  
  1864.  
  1865.      ---------------------------------------------------------------------
  1866.      Writes the contents of the Clipboard (Icon) to disk
  1867.      ---------------------------------------------------------------------
  1868.                Symbol: RIP_WRITE_ICON
  1869.                 Level: 1
  1870.               Command: W
  1871.             Arguments: res:1, filename
  1872.                Format: !|1W <res> <filename>
  1873.               Example: !|1W0filename.icn
  1874.       Uses Draw Color: NO
  1875.       Uses Line Patrn: NO
  1876.       Uses Line Thick: NO
  1877.       Uses Fill Color: NO
  1878.       Uses Fill Patrn: NO
  1879.       Uses Write Mode: NO
  1880.       Uses Font Sizes: NO
  1881.  
  1882.      This command takes the contents of the Clipboard and writes it to a
  1883.      disk file.  This Icon file can be loaded later with a RIP_LOAD_ICON
  1884.      command and stamped on the screen.
  1885.  
  1886.      The command instructs the terminal to store an Icon on the terminal's
  1887.      disk drive, or on some appropriate storage media.  Path or
  1888.      subdirectory information is not allowed in the filename portion of
  1889.      the command.  If the clipboard is nonexistent (ie, at the beginning
  1890.      of a scene), this command is ignored.  If an Icon by the same name
  1891.      already exists on disk, it is overwritten.
  1892.  
  1893.      NOTE: The <res> parameter is RESERVED FOR FUTURE USE and should be
  1894.            set to zero.
  1895.  
  1896.  
  1897.  
  1898.  
  1899.  
  1900.      ---------------------------------------------------------------------
  1901.      Loads and displays a disk-based Icon to the screen
  1902.      ---------------------------------------------------------------------
  1903.                Symbol: RIP_LOAD_ICON
  1904.                 Level: 1
  1905.               Command: I
  1906.             Arguments: x:2, y:2, mode:2, clipboard:1, res:2, filename
  1907.                Format: !|1I <x> <y> <mode> <clipboard> <res> <filename>
  1908.               Example: !|1I001101010button.icn
  1909.       Uses Draw Color: NO
  1910.       Uses Line Patrn: NO
  1911.       Uses Line Thick: NO
  1912.       Uses Fill Color: NO
  1913.       Uses Fill Patrn: NO
  1914.       Uses Write Mode: NO
  1915.       Uses Font Sizes: NO
  1916.  
  1917.      This command instructs the terminal to read an Icon from disk and
  1918.      display it at the given upper-left (x,y) location.  If the width or
  1919.      height of the Icon would make it go off the right or left edge of the
  1920.      screen, the Icon will not be displayed.  The <mode> parameter defines
  1921.      the modes in which the Icon will be displayed on the screen.  The
  1922.      modes are identical to the RIP_PUT_IMAGE command, and are as follows:
  1923.  
  1924.      The .ICN file extension does not need to be included as part of the
  1925.      filename.  If omitted, it will automatically be appended to the
  1926.      filename.  If an extension is provided, it will be used verbatim.
  1927.  
  1928.          Mode Description
  1929.          ==============================================================
  1930.            00 Paste the image on-screen normally                 (COPY)
  1931.            01 Exclusive-OR  image with the one already on screen (XOR)
  1932.            02 Logically OR  image with the one already on screen (OR)
  1933.            03 Logically AND image with the one already on screen (AND)
  1934.            04 Paste the inverse of the image on the screen       (NOT)
  1935.  
  1936.      If the <clipboard> parameter is 1, then not only is the image pasted
  1937.      on screen, but it is also copied into the Clipboard.  If 0, it's
  1938.      simply pasted on the screen.
  1939.  
  1940.      The <filename> parameter must not contain any subdirectory or path
  1941.      information and must specify a valid Icon file name.  If the Icon
  1942.      cannot be located or an error occurs on the disk, then a box should
  1943.      be displayed on screen indicating that the given Icon File could not
  1944.      be loaded.  This visual prompt indicates that something is amiss to
  1945.      the end-user.
  1946.  
  1947.      NOTE: The 2-byte <res> parameter is RESERVED FOR THE FUTURE and
  1948.            unlike many other previously mentioned reserved parameters,
  1949.            should be set to "10".
  1950.  
  1951.  
  1952.  
  1953.  
  1954.  
  1955.      ---------------------------------------------------------------------
  1956.      Button Style Definition
  1957.      ---------------------------------------------------------------------
  1958.                Symbol: RIP_BUTTON_STYLE
  1959.                 Level: 1
  1960.               Command: B
  1961.             Arguments: wid:2 hgt:2 orient:2 flags:4 size:2 dfore:2 
  1962.                        dback:2 bright:2 dark:2 surface:2 grp_no:2 flags2:2
  1963.                        uline_col:2 corner_col:2 res:6
  1964.                Format: !|1B <wid> <hgt> <orient> <flags> <bevsize> <dfore>
  1965.                        <dback> <bright> <dark> <surface> <grp_no> <flags2>
  1966.                        <uline_col> <corner_col> <res>
  1967.               Example: !|1B0A0A010274030F080F080700010E07000000
  1968.       Uses Draw Color: NO
  1969.       Uses Line Patrn: NO
  1970.       Uses Line Thick: NO
  1971.       Uses Fill Color: NO
  1972.       Uses Fill Patrn: NO
  1973.       Uses Write Mode: NO
  1974.       Uses Font Sizes: NO
  1975.  
  1976.      This RIPscrip command is probably one of the most complex in the
  1977.      entire protocol.  It defines how subsequent RIP_BUTTON commands will
  1978.      be interpretted.  The purpose of this command is to define what a 
  1979.      Button is and how they operate.  Buttons can have many different
  1980.      configurations, flags, and styles.  With the diversity of modes that
  1981.      the Button can take on, complexity is a necessary evil.
  1982.  
  1983.      This command does not actually do anything visibly on the screen. 
  1984.      Simply put, this creates an internal definition for the Button mode
  1985.      which will be used with RIP_BUTTON commands after the definition is 
  1986.      created.
  1987.  
  1988.      Every Button can have an optional text label.  It can appear in
  1989.      several different locations compared to the Button itself.  This is
  1990.      specified in the <orient> parameter.  The actual text of the label is
  1991.      not specified with this command, it is specified when you actually
  1992.      create a Button (see RIP_BUTTON below).  The value that <orient> can
  1993.      be is as follows:
  1994.  
  1995.           Value     Description of Orientation
  1996.           ===================================================
  1997.           00        Display Label above of Button
  1998.           01        Display Label to the Left of Button
  1999.           02        Display Label in the center of the Button
  2000.           03        Display Label to the Right of Button
  2001.           04        Display Label beneath the Button
  2002.  
  2003.  
  2004.      The <hgt> and <wid> parameters represent the fixed height and width of
  2005.      the Button (applies only to Plain Buttons).  If both values are
  2006.      greater than zero, then this will represent the actual size of the
  2007.      Button (its dimensions are not specified by the RIP_BUTTON command). 
  2008.      If both of these are set to zero, then the actual RIP_BUTTON command
  2009.      will specify the size of the particular Button (dynamic sizing).
  2010.  
  2011.      The <bevsize> parameter is only used if the Bevel flag is specified. 
  2012.      When active, this parameter will determine how many pixels thick the
  2013.      bevel should be.  This may be any value greater or equal to zero.
  2014.  
  2015.      There are a large number of flag values that can be combined to
  2016.      achieve a great many effects.  There are two flag parameters for the
  2017.      RIP_BUTTON_STYLE command, <flags> and <flags2>.  They are detailed in
  2018.      the two tables that follow in this Section.  You may combine any of
  2019.      the flags in the first table together simply by adding the "Value" of
  2020.      each one together and representing that number as a MegaNum.  See the
  2021.      Section in this manual for a "Table of MegaNums".
  2022.  
  2023.      The <dfore> and <dback> parameters are used with the text label.  The
  2024.      <dfore> parameter is the foreground color for the text.  It is always
  2025.      used to determine the color of the text label.  The <dback> color is
  2026.      the color of the dropshadow (if any).  This parameter is only used
  2027.      when you have specified the "Dropshadow" flag in the <flags>
  2028.      parameter (see below).
  2029.  
  2030.      The <bright>, <dark> and <surface> parameters are used with Plain
  2031.      Buttons and with the Special Effects styles (see <flags> below). 
  2032.      These colors represent the hilighted color, the shadowed color, and
  2033.      the regular surface color that is used in Special Effects.  Typical
  2034.      color combinations for these colors might be White, Dark-Gray and
  2035.      Light-Gray respectively for a "chiseled steel" appearance.  Each of
  2036.      these values can contain a two-digit value representing any valid
  2037.      color code that may be used in the RIP_COLOR command.
  2038.  
  2039.      In addition to the special effects colors, are two additional colors
  2040.      that can be used, <uline_color> which is used for the color of the
  2041.      underline (in the text label), and <corner_color> which is used to 
  2042.      display the colors of corners for things like the Bevel, Recess, etc.
  2043.  
  2044.      The <grp_no> parameter determines which Button Group subsequent
  2045.      RIP_BUTTON commands will be associated with.  Button Groups are used
  2046.      to maintain groups of Buttons for things like Radio Buttons and/or 
  2047.      Checkbox Buttons.  See the section entitled THE BUTTON COMMAND for
  2048.      more information on these modes, and what Button Groups can offer. 
  2049.      This value can range anywhere from 0-Z (i.e., 0-35).  You should not
  2050.      mix Checkbox and Radio buttons in the same group. -- unpredictable
  2051.      things may happen if you do.
  2052.  
  2053.      Some <flags> are mutually exclusive.  For example, you can only have
  2054.      one of the "Plain", "Icon", or "Clipboard" flags chosen at once.  To
  2055.      better assist you in determining which values can be combined with 
  2056.      each other, the right-most five columns in the next two tables explain
  2057.      if the specific flag can be used under a specific condition.  For
  2058.      example, you cannot choose the "Hot Icon" flag if you are dealing with
  2059.      a Clipboard Button.  Another example is that you cannot underline the
  2060.      hotkey character in the label if it is not a Mouse Button.
  2061.  
  2062.      The following table contains the possible flag values for the <flags>
  2063.      parameter.  Each of these values may be combined to achieve a
  2064.      "composite" group of flags.  See the preceding paragraphs for a more
  2065.      detailed explanation of this method.
  2066.  
  2067.      VALUE  DESCRIPTION OF FLAGS FIELD #1    ICON CLIP PLAIN MOUSE NO-MOUSE
  2068.      ======================================================================
  2069.      1      Button is a "Clipboard Button"     N    Y    N     Y      Y
  2070.      2      Button is "invertable"             Y    Y    Y     Y      N
  2071.      4      Reset screen after button click    Y    Y    Y     Y      N
  2072.      8      Display Chisel special effect      Y    Y    Y     Y      Y
  2073.      16     Display Recessed special effect    Y    Y    Y     Y      Y
  2074.      32     Dropshadow the label (if any)      Y    Y    Y     Y      Y
  2075.      64     Auto-stamp image onto Clipboard    Y    Y    Y     Y      Y
  2076.      128    Button is an "Icon Button"         Y    N    N     Y      Y
  2077.      256    Button is a "Plain Button"         N    N    Y     Y      Y
  2078.      512    Display Bevel special effect       Y    Y    Y     Y      Y
  2079.      1024   Button is a Mouse Button           Y    Y    Y     Y      N
  2080.      2048   Underline hot-key in label         Y    Y    Y     Y      N
  2081.      4096   Make Icon Button use Hot Icons     Y    N    N     Y      N
  2082.      8192   Adjust vert. centering of label    Y    Y    Y     Y      Y
  2083.      16384  Button belongs to a Radio Group    Y    Y    Y     Y      N
  2084.      32768  Display Sunken special effect      Y    Y    Y     Y      Y
  2085.  
  2086.  
  2087.  
  2088.  
  2089.      The following table describes the possible flag settings for the
  2090.      <flags2> parameter:
  2091.  
  2092.      VALUE  DESCRIPTION OF FLAGS FIELD #2    ICON CLIP PLAIN MOUSE NO-MOUSE
  2093.      ======================================================================
  2094.      1      Button is in a Checkbox Group      Y    Y    Y     Y      N
  2095.      2      Hilight Hotkey character           Y    Y    Y     Y      N
  2096.      4      Explode (Zoom Out when clicked)    Y    Y    Y     Y      N
  2097.      8      Left Justify Label (top/cent/bot)  Y    Y    Y     Y      Y
  2098.      16     Right Justify Label (" / "  / ")   Y    Y    Y     Y      Y
  2099.  
  2100.  
  2101.  
  2102.  
  2103.      ---------------------------------------------------------------------
  2104.      Define a Mouse Button
  2105.      ---------------------------------------------------------------------
  2106.                Symbol: RIP_BUTTON
  2107.                 Level: 1
  2108.               Command: U
  2109.             Arguments: x0:2 y0:2 x1:2 y1:2 hotkey:2 flags:1 res:1 ...text
  2110.                Format: !|1U <x0> <y0> <x1> <y1> <hotkey> <flags> <res> <text>
  2111.               Example: !|1U010100003200iconfile.icn<>Label<>Host Cmd^m
  2112.       Uses Draw Color: NO
  2113.       Uses Line Patrn: NO
  2114.       Uses Line Thick: NO
  2115.       Uses Fill Color: NO
  2116.       Uses Fill Patrn: NO
  2117.       Uses Write Mode: NO
  2118.       Uses Font Sizes: YES
  2119.  
  2120.      This command physically creates a new Button using the previously
  2121.      described RIP_BUTTON_STYLE command.  You may have at most 128
  2122.      different Mouse Buttons (you may have any number of non-Mouse 
  2123.      Buttons).
  2124.  
  2125.      The <x0> and <y0> parameters for this command designate the upper-left
  2126.      corner of the Button.  This (X,Y) location may not be the actual
  2127.      "absolute" corner position of the Button, as it may be adjusted via
  2128.      the Special Effects functions that are part of the RIP_BUTTON_STYLE
  2129.      command (see above).
  2130.  
  2131.      The <x1> and <y1> parameters are only used for Plain Buttons when you
  2132.      have not specified a specific Height and Width in the
  2133.      RIP_BUTTON_STYLE command.  These parameters are used in Dynamically
  2134.      Sized Buttons.  If the Height and Width in the RIP_BUTTON_STYLE are
  2135.      non-zero, then these two parameters are set to zero.
  2136.  
  2137.      The (x0,y0) and (x1,y1) will be modified by the following values for
  2138.      the different special effects:
  2139.  
  2140.      EFFECT TYPE    X0 ADJ         Y0 ADJ         X1 ADJ         Y1 ADJ
  2141.      =======================================================================
  2142.      Bevel          -bevel size    -bevel size    +bevel size    +bevel size
  2143.      Recess         -2             -2             +2             +2
  2144.      Sunken         0              0              0              0
  2145.      Chisel         0              0              0              0
  2146.  
  2147.  
  2148.      The <hotkey> parameter is only used with Mouse Buttons.  It is the
  2149.      ASCII code for the keystroke that will activate this Button.  It is
  2150.      represented as a two-digit MegaNum.  If this character exists in the
  2151.      text label, and the Underline flag is enabled in the
  2152.      RIP_BUTTON_STYLE, then the character will be underlined in the label.
  2153.  
  2154.      The <flags> parameter provides several different functions for each
  2155.      button.  The possible "combinatorial" flags for this parameter are
  2156.      listed in the following table.  Note that these values may be
  2157.      combined together (by adding their values) to arrive at the final
  2158.      flag parameter's value.
  2159.  
  2160.      Value    Description
  2161.      ====================================================================
  2162.        1      Draw button as already selected
  2163.        2      Button is "default" when <ENTER> is tapped
  2164.  
  2165.      Using a flag of 1 means that the Button is already "selected".  By 
  2166.      selected, we mean that it is already clicked and should be initially
  2167.      drawn as clicked.  This is typically used for Radio Buttons and/or
  2168.      Check Boxes.  This only affects the image.  The Host Command WILL
  2169.      NOT be automatically sent to the host when a selected Button is
  2170.      drawn.  If this parameter is set to 0, then the Button will be
  2171.      drawn in normal, unselected mode.
  2172.  
  2173.      The <text> parameter for this command is somewhat different than those
  2174.      found in previously described RIPscrip commands.  All other RIPscrip
  2175.      commands only have one text parameter.  This command requires 
  2176.      anywhere from 0-3 text parameters.  The way RIPscrip accomplishes this
  2177.      is by separating each block in the <text> parameter with the
  2178.      delimiter "<>".  This text parameter delimiter is not needed before
  2179.      the first text block, but is necessary between the 1st and 2nd
  2180.      blocks, and the 2nd and 3rd blocks.  Here is an example of a typical
  2181.      text parameter for this command:
  2182.  
  2183.                  ICONFILE.ICN<>TEXT LABEL<>HOST COMMAND
  2184.  
  2185.      The actual syntax of this text parameter is as follows:
  2186.  
  2187.               [icon-file][[<>text-label][<>host-command]]
  2188.  
  2189.      The block described as ICONFILE.ICN is actually the Icon Filename that
  2190.      will be used for the Button if it is an Icon Button.  If it is not an
  2191.      Icon Button, then this block will read "<>" all by itself (a "null"
  2192.      block).
  2193.  
  2194.      The .ICN file extension does not need to be included as part of the
  2195.      filename.  If omitted, it will automatically be appended to the
  2196.      filename.  If an extension is provided, it will be used verbatim.
  2197.  
  2198.      The "TEXT LABEL" block is actually the text that will be used to
  2199.      descriptively label the Button.  You may also specify a "null" block
  2200.      for no label (i.e., "<>").
  2201.  
  2202.      The final block of the <text> parameter is the Host Command.  This
  2203.      block contains any text that should be sent to the Host after this
  2204.      Button is clicked.  This may contain any Control Characters, Pick-List
  2205.      definitions, Text Variables or Template Definitions.  This block
  2206.      might be "segmented" into multiple Host Command segments.  See the
  2207.      section entitled HOST COMMANDS in this Manual for additional
  2208.      information on these Host Command features.
  2209.  
  2210.      Not all of the blocks in the <text> parameter need to be specified. 
  2211.      Here are examples of the valid combinations of text blocks:
  2212.  
  2213.      PARAMETER EXAMPLE        DESCRIPTION OF THE TEXT PARAMETER
  2214.      ===================================================================
  2215.      icon<>label<>host_cmd    Specify all three blocks
  2216.      <>label<>host_cmd        2 blocks specified; no icon
  2217.      icon<>label<>            2 blocks specified; no host cmd
  2218.      icon<>label              2 blocks specified; no host cmd
  2219.      <><>host_cmd             1 block specified; no icon or label
  2220.      <>label<>                1 block specified; no icon or host cmd
  2221.      <>label                  1 bloc specified; no icon or host cmd
  2222.      icon<><>                 1 block specified; no label or host cmd
  2223.      icon<>                   1 block specified; no label or host cmd
  2224.      icon                     1 block specified; no label or host cmd
  2225.      <><><>                   A blank text parameter; all blocks omitted
  2226.      <><>                     A blank text parameter; all blocks omitted
  2227.      <>                       A blank text parameter; all blocks omitted
  2228.  
  2229.  
  2230.      NOTE:  The <res> parameter is reserved for future use by TeleGrafix
  2231.             Communications, Inc..  It should be set to 0 for compatibility
  2232.             with future releases.
  2233.  
  2234.  
  2235.  
  2236.  
  2237.      ---------------------------------------------------------------------
  2238.      Define a Text Variable
  2239.      ---------------------------------------------------------------------
  2240.                Symbol: RIP_DEFINE
  2241.                 Level: 1
  2242.               Command: D
  2243.             Arguments: flags:3 res:2 ...text
  2244.                Format: !|1D <flags> <res> <text>
  2245.               Example: !|1D00700text_var,60:?question?default data
  2246.       Uses Draw Color: NO
  2247.       Uses Line Patrn: NO
  2248.       Uses Line Thick: NO
  2249.       Uses Fill Color: NO
  2250.       Uses Fill Patrn: NO
  2251.       Uses Write Mode: NO
  2252.       Uses Font Sizes: NO
  2253.  
  2254.      This command is used to create a text variable on the Client system
  2255.      (i.e., the Terminal system).  A text variable is more fully covered
  2256.      in the section entitled HOST COMMANDS.  Simply put, a text variable is
  2257.      a piece of information assigned to a 1-12 character identifier that
  2258.      can either be saved to a local database file (static variables), or
  2259.      to memory (dynamic variables).  Variable Identifiers can be 1-12
  2260.      characters in length.  You may use any alphanumeric character and
  2261.      underscores (_) in the identifier.  An underscore cannot be the first
  2262.      character, nor can the first character of an identifier be a number.
  2263.  
  2264.      The <flags> parameter of this command combines three separate values
  2265.      into one MegaNum flag that determines how the variable definition
  2266.      will operate.  Here are the possible flag values:
  2267.  
  2268.                   VALUE     DESCRIPTION OF FLAG
  2269.                   =========================================
  2270.                   001       Save Variable to database
  2271.                   002       Cannot specify a blank response
  2272.                   004       Non-interactive query
  2273.  
  2274.  
  2275.      When a variable is flagged as "Save to Database", it becomes a part of
  2276.      the Client system's actual configuration.  The value is saved
  2277.      indefinitely until either changed, or manually erased.  You may choose
  2278.      not to allow the user to enter a blank response.  This basically
  2279.      requires them to enter some piece of information for the variable.
  2280.  
  2281.      The last flag determines whether the definition is interactive or not.
  2282.      An interactive definition will attempt to define the variable.  If it
  2283.      does exist, it pops the value up on the screen asking the user to
  2284.      confirm if the value is correct.  If it does not exist, a similar
  2285.      pop-up box will appear asking the user to enter some data for the
  2286.      given variable.
  2287.  
  2288.      In a non-interactive situation, the Client system will check to see if
  2289.      the variable exists.  If it does, then nothing happens (unless a
  2290.      default response is specified in this command, whereby the Client's
  2291.      variable is updated with the new information).  If the value is not
  2292.      defined, then this definition becomes interactive by default, since
  2293.      the user actually has to enter something anyway.
  2294.  
  2295.      The <text> parameter for this command is also segmented in nature,
  2296.      much like the RIP_BUTTON command is.  An example of a segmented
  2297.      <text> parameter for the RIP_DEFINE command might be as follows:
  2298.  
  2299.  
  2300.                FULL_NAME,30:?What is your full name?John Doe
  2301.  
  2302.  
  2303.      The actual syntax of the Variable Define text parameter is as follows:
  2304.  
  2305.  
  2306.        variable-identifier[,field-width]:[?question-text?][default-value]
  2307.  
  2308.  
  2309.      There are several different segments in this parameter as you can see.
  2310.      The first section is the variable- identifier.  Immediately after it
  2311.      is an optional field-width.  If the field width is omitted, it will
  2312.      default to a value of  60.  You should limit the values of this width
  2313.      from 1-60.
  2314.  
  2315.      Immediately following the identifier field-width parameter is a colon
  2316.      (:).  The colon indicates that the variable identifier field is
  2317.      completed and that the remainder of the text parameter is to contain
  2318.      the question and/or the default response (if any).  If no question or
  2319.      default response is provided, the text parameter would read 
  2320.      "TEXT_VAR,width:" with no additional data.
  2321.  
  2322.      The question-text is specified by a question mark (?) followed by the
  2323.      actual text of the question, followed by a trailing question mark. 
  2324.      The basic format of the question segment is as follows:
  2325.  
  2326.  
  2327.                              ?this is a question?
  2328.  
  2329.  
  2330.      The remainder of the text parameter consists of a default-value for
  2331.      the variable's contents.  It may be omitted if you wish, to make it
  2332.      so that the user must enter his/her own value instead of some "canned
  2333.      response".
  2334.  
  2335.  
  2336.      NOTE:  The <res> parameter is reserved for future use by TeleGrafix
  2337.             Communications, Inc..  It should be set to 00 for compatibility
  2338.             with future releases.
  2339.  
  2340.  
  2341.  
  2342.  
  2343.  
  2344.      ---------------------------------------------------------------------
  2345.      Query the contents of a Text Variable
  2346.      ---------------------------------------------------------------------
  2347.                Symbol: RIP_QUERY
  2348.                 Level: 1
  2349.               Command: <escape>
  2350.             Arguments: mode:1 res:3 ...text
  2351.                Format: !|1<escape> <mode> <res> <text>
  2352.               Example: !|1<escape>0000this is a query $COMMAND$^m
  2353.       Uses Draw Color: NO
  2354.       Uses Line Patrn: NO
  2355.       Uses Line Thick: NO
  2356.       Uses Fill Color: NO
  2357.       Uses Fill Patrn: NO
  2358.       Uses Write Mode: NO
  2359.       Uses Font Sizes: NO
  2360.  
  2361.      The Query Text Variable RIPscrip command instructs the Client system
  2362.      to immediately respond with some piece of information, whether
  2363.      statically stored (i.e., in a database), stored internally in RAM
  2364.      (dynamic information), or pre-defined Text Variables.
  2365.  
  2366.      This command is unique in RIPscrip in the fact that the command
  2367.      character that is used is NOT a printable character.  We use the
  2368.      Escape character (ascii 27) to introduce this command as a measure
  2369.      of Security.  Since the Query command can query the terminal for
  2370.      some critical (potentially private) information, you would not
  2371.      want a End-User to be able to Query another User's terminal for
  2372.      something like his Address Information, or something that he
  2373.      wouldn't want to otherwise divulge to unauthorized people.  Since
  2374.      most BBS'es do not allow the User to enter an Escape character,
  2375.      this character is ideal for this purpose.  Using an Escape, allows
  2376.      only the Host under most circumstances to be in control of any
  2377.      Queries.
  2378.  
  2379.      This command is very flexible in that you can specify Control
  2380.      Characters, Pick-List definitions, Text Variable insertion, and even
  2381.      Host Command Template definitions.  See the section of this Manual
  2382.      entitled HOST COMMANDS for a more detailed explanation of Host
  2383.      Commands and these specific features.
  2384.  
  2385.      Whether the information is transmitted instantly or not is dependant
  2386.      on the <mode> parameter.  The <mode> parameter determines when data
  2387.      queries are processed.  The possible settings for the <mode> parameter
  2388.      are as follows:
  2389.  
  2390.           MODE      DESCRIPTION
  2391.           ========================================================
  2392.             0       Process the query command NOW (upon receipt)
  2393.             1       Process when mouse clicked in Graphics Window
  2394.             2       Process when mouse clicked in Text Window
  2395.                     (any text variables that return X or Y mouse
  2396.                     coordinates return TEXT coordinates, not
  2397.                     graphics coordinates in this mode.  These
  2398.                     coordinates are two-digit values instead of
  2399.                     the graphical values that are four digits).
  2400.  
  2401.      Note that modes 1-2 do not return the results of the Query instantly.
  2402.      They query commands are processed when the user clicks the mouse
  2403.      either in the text window, or in the graphics window respectively.
  2404.      These "queries after mouse clicks" are only acted upon if the user
  2405.      is clicking on something other than a Button or a Mouse Field.
  2406.      To disable these two special "deferred" query modes, issue the
  2407.      same command with the query string of $OFF$.  This will disable
  2408.      this mode.  Providing a <text> parameter of anything other than
  2409.      $OFF$ will produce a revised query command (active).
  2410.  
  2411.      Basically put, a Query command will be immediately acted upon by the
  2412.      Terminal program when received.  The Query command's <text> parameter
  2413.      can contain any number of Host Command "segments", which can instruct
  2414.      the terminal "how to" send data to the host, and more specifically,
  2415.      what data to send to the host.
  2416.  
  2417.      Some examples of query statements might be any of the following:
  2418.  
  2419.         ^m  ......................... Send a carriage return to the BBS
  2420.                                       right now
  2421.         My name is $FULL_NAME$^m  ... Send the text "My name is 
  2422.                                       <insert-name-here>" followed by a 
  2423.                                       carriage return to the BBS.  The
  2424.                                       <insert-name-here> will be replaced
  2425.                                       with whatever the the variable
  2426.                                       $FULL_NAME$ contains.
  2427.  
  2428.      See the section entitled HOST COMMANDS for a detailed explanation of
  2429.      Host Commands, and what you can do with the Query command.
  2430.  
  2431.      NOTE:  The <res> parameter is reserved for future use by TeleGrafix
  2432.             Communications, Inc..  It should be set to 000 for
  2433.             compatibility with future releases.
  2434.  
  2435.  
  2436.  
  2437.  
  2438.      ---------------------------------------------------------------------
  2439.      Copy screen region up/down 
  2440.      ---------------------------------------------------------------------
  2441.                Symbol: RIP_COPY_REGION
  2442.                 Level: 1
  2443.               Command: G
  2444.             Arguments: x0:2 y0:2 x1:2 y1:2 res:2 dest_line:2
  2445.                Format: !|1G <x0> <y0> <x1> <y1> <res> <dest_line>
  2446.               Example: !|1G080G140M0005
  2447.       Uses Draw Color: NO
  2448.       Uses Line Patrn: NO
  2449.       Uses Line Thick: NO
  2450.       Uses Fill Color: NO
  2451.       Uses Fill Patrn: NO
  2452.       Uses Write Mode: NO
  2453.       Uses Font Sizes: NO
  2454.  
  2455.      This command physically "copies" a rectangular region of the
  2456.      graphics screen up or down.  The <dest_line> parameter is the Y
  2457.      position that is the destination scan line to receive the region.
  2458.      The Destination of the copy can overlap the original region, but
  2459.      cannot be on the same line.  You cannot move the image area left or
  2460.      right at all.  This command is designated for vertical scrolling of
  2461.      graphical data either up or down.
  2462.  
  2463.      Due to hardware restrictions, the X0 and X1 parameters must be evenly
  2464.      divisible by eight (8) (e.g., 0, 8, 16, etc).  If the X0 and X1
  2465.      parameters are NOT evenly divisible by eight, then the X0 parameter
  2466.      will be reduced to the next most eight-pixel boundary, and the X1
  2467.      parameter will be increased to the next eight-pixel boundary.  For
  2468.      example, if X0=14, and X1=38, then X0 would be adjusted DOWN to 8,
  2469.      and X1 would be adjusted UP to 40.  This is to ensure that the
  2470.      desired graphical region is scrolled.
  2471.  
  2472.      The original image area is left on the screen (is not cleared).  So
  2473.      if you wish to perform some kind of scrolling effect, you will have
  2474.      to clear the original area yourself.  
  2475.  
  2476.      If the destination region would place the image partially off-screen,
  2477.      then the entire command is ignored!
  2478.  
  2479.  
  2480.      NOTE:  The <res> parameter is reserved for future development by
  2481.             TeleGrafix.
  2482.  
  2483.  
  2484.  
  2485.  
  2486.  
  2487.      ---------------------------------------------------------------------
  2488.      Playback local .RIP scene file
  2489.      ---------------------------------------------------------------------
  2490.                Symbol: RIP_READ_SCENE
  2491.                 Level: 1
  2492.               Command: R
  2493.             Arguments: res:8 filename...
  2494.                Format: !|1R <res> <filename>
  2495.               Example: !|1R00000000testfile.rip
  2496.       Uses Draw Color: YES
  2497.       Uses Line Patrn: YES
  2498.       Uses Line Thick: YES
  2499.       Uses Fill Color: YES
  2500.       Uses Fill Patrn: YES
  2501.       Uses Write Mode: YES
  2502.       Uses Font Sizes: YES
  2503.  
  2504.      This command instructs the remote terminal to playback a local .RIP
  2505.      file.  The current execution of RIPscrip commands will be temporarily
  2506.      suspended and the contents of the designated RIP file will begin
  2507.      executing.  Regardless of whether or not the current RIPscrip code
  2508.      coming across the modem is in the middle of a line or not, the RIP
  2509.      playback file will be assumed to start at the beginning of a line.
  2510.      Therefore, if a RIP_READ_SCENE command is located in a .RIP file,
  2511.      it must be the very last command on the line, followed by a carriage
  2512.      return instead of a command delimiter (|).  This ensures that the
  2513.      loaded .RIP file will begin executing properly with the correct
  2514.      delimiters found in the correct places.
  2515.  
  2516.      The RIP playback file can alter colors, fonts, or whatever.  Once
  2517.      the playback of the file is complete, the remaining RIPscrip code
  2518.      that was temporarily suspended will be resume execution.  Any changes
  2519.      that appeared in the loaded playback file will remain in effect when
  2520.      the resumed code is processed.  In other words, if you change a color
  2521.      or a font in the playback file and leave them changed, they will
  2522.      remain in effect during the resumed execution.
  2523.  
  2524.         NOTE:  The <res> parameter is reserved for future development
  2525.                by TeleGrafix.  It should be set to "00000000" for
  2526.                compatibility with future releases.
  2527.  
  2528.  
  2529.  
  2530.  
  2531.      ---------------------------------------------------------------------
  2532.      Query existing information on a particular file
  2533.      ---------------------------------------------------------------------
  2534.                Symbol: RIP_FILE_QUERY
  2535.                 Level: 1
  2536.               Command: F
  2537.             Arguments: mode:2 res:4 filename...
  2538.                Format: !|1F <mode> <res> <filename>
  2539.               Example: !|1F010000testfile.icn
  2540.       Uses Draw Color: NO
  2541.       Uses Line Patrn: NO
  2542.       Uses Line Thick: NO
  2543.       Uses Fill Color: NO
  2544.       Uses Fill Patrn: NO
  2545.       Uses Write Mode: NO
  2546.       Uses Font Sizes: NO
  2547.  
  2548.      This command queries the existance of a particular file, regardless
  2549.      of file type.  It is intended for use by Host systems to determine
  2550.      if a particular Icon or RIP file exists on the remote terminal's
  2551.      hard disk.
  2552.  
  2553.      There are a variety of ways you can query for filenames.  The <mode>
  2554.      parameter determines the method that this command will respond to
  2555.      the Host.  Note that this command instructs the terminal to send
  2556.      a response to the Host immediately upon execution of this command.
  2557.  
  2558.      The following table is a listing of the possible values for <mode>:
  2559.  
  2560.           VALUE     DESCRIPTION
  2561.           ==============================================================
  2562.            00       Simply query the existance of the file.  If it
  2563.                     exists, a "1" is returned.  Otherwise a "0" is
  2564.                     returned to the Host (without a carriage return).
  2565.            01       Same as 0 above, except a carriage return is
  2566.                     added after the response.
  2567.            02       Queries the existance of a file.  If it does not
  2568.                     exist, a "0" is returned to the Host followed by a
  2569.                     carriage return.  If it does exist, the returned
  2570.                     text is a "1." followed by the file size (in
  2571.                     decimal).  The return sequence is terminated by a
  2572.                     carriage return.  An example of the returned text
  2573.                     could be "1.20345".
  2574.            03       Queries extended return information.  If the file
  2575.                     does not exist, a "0" is returned follwed by a
  2576.                     carriage return.  If it does exist, the text
  2577.                     returned to the Host is in the format: 
  2578.                     1.size.date.time <cr>.  An example of a return
  2579.                     statement could be "1.20345.01/02/93.03:04:30 <cr>"
  2580.            04       Queries extended return information.  If the file
  2581.                     does not exist, a "0" is returned follwed by a
  2582.                     carriage return.  If it does exist, the text
  2583.                     returned to the Host is in the format: 
  2584.                     1.file.size.date.time <cr>.  An example of a return
  2585.                     statement could be 
  2586.                     
  2587.                         "1.MYFILE.RIP.20345.01/02/93.03:04:30 <cr>".
  2588.  
  2589.                     Note the file extension adds another period into the
  2590.                     text.
  2591.  
  2592.  
  2593.  
  2594.  
  2595.      ---------------------------------------------------------------------
  2596.      Enter "block transfer" mode with Host
  2597.      ---------------------------------------------------------------------
  2598.                Symbol: RIP_ENTER_BLOCK_MODE
  2599.                 Level: 10 (system command)
  2600.               Command: <escape>
  2601.             Arguments: proto:2 file_type:2 res:4 [filename:2] <>
  2602.                Format: !|0<escape> <proto> <file_type> <res> [filename] <>
  2603.               Example: !|0<escape>0001iconfile.icn<>
  2604.       Uses Draw Color: NO
  2605.       Uses Line Patrn: NO
  2606.       Uses Line Thick: NO
  2607.       Uses Fill Color: NO
  2608.       Uses Fill Patrn: NO
  2609.       Uses Write Mode: NO
  2610.       Uses Font Sizes: NO
  2611.  
  2612.       This command is used to auto-initiate any desired File Transfer
  2613.       Protocol.  The <filename> parameter is optional, and if omitted
  2614.       must be replaced with a "<>" parameter (end of string).  
  2615.  
  2616.       The <proto> parameter is the file transfer protocol specifier.
  2617.       Possible values, and the protocols they refer to are:
  2618.  
  2619.  
  2620.           VALUE     PROTOCOL            FILENAME REQUIRED?
  2621.           ================================================
  2622.             0       Xmodem (checksum)          Yes
  2623.             1       Xmodem (CRC)               Yes
  2624.             2       Xmodem-1K                  Yes
  2625.             3       Xmodem-1K (G)              Yes
  2626.             4       Kermit                     Yes
  2627.             5       Ymodem (batch)             No
  2628.             6       Ymodem-G                   No
  2629.             7       Zmodem (crash recovery)    No
  2630.  
  2631.      The <file_type> parameter determines what types of files are to be
  2632.      received during the block transfer.  The following values apply
  2633.      to the <file_type> parameter:
  2634.  
  2635.           VALUE     DESCRIPTION OF BLOCK TRANSFER CONTENTS
  2636.           ================================================================
  2637.             0       .RIP file sequence (display it)
  2638.             1       .RIP file sequence (store them)
  2639.             2       .ICN file sequence (store them in proper directories)
  2640.             3       .HLP file sequence (store it, and auto-load if needed)
  2641.             4       COMPOSITE DYNAMIC file sequence (batch protcols only)
  2642.             5       ACTIVE DYNAMIC file sequence (batch protcols only)
  2643.  
  2644.      Whether the <filename> is specified or not, this command must have
  2645.      a "<>" sequence after the filename (even if omitted).  Here are
  2646.      examples of how it would look with and without a filename:
  2647.  
  2648.  
  2649.           !|0B0101filename.icn<> ... With filename field (Xmodem-CRC)
  2650.           !|0B0604<> ............... w/o  filename field (Zmodem)
  2651.  
  2652.      The special <file_type> of 4 & 5 (COMPOSITE DYANAMIC file sequences)
  2653.      is somewhat different than the non-batch transfer methods.  This allows
  2654.      each file uploaded to be individually processed based on their
  2655.      file extensions.  If you use extensions other than .RIP or .ICN, then
  2656.      this mode is not available to you as the necessary files will not be
  2657.      able to be processed.  Any files that are "downloaded" from the Host
  2658.      in DYNAMIC mode are placed into the appropriate sub-directories and
  2659.      no further processing is performed.  .RIP files that are received
  2660.      are "stored" and are not played back in COMPOSITE DYNAMIC mode.  In
  2661.      ACTIVE DYNAMIC mode, they are stored and played back simultaneously.
  2662.  
  2663.      NOTE: This command must be terminated with a carriage return.  A 
  2664.            vertical bar (|) command delimiter cannot be used to separate
  2665.            this command from a subsequent one on the same line.  In other
  2666.            words, this command must be the last command on a line of text.
  2667.            The Protocol must begin on the very next line.
  2668.  
  2669.  
  2670.  
  2671.  
  2672.  
  2673.      ---------------------------------------------------------------------
  2674.      End of RIPscrip Scene
  2675.      ---------------------------------------------------------------------
  2676.                Symbol: RIP_NO_MORE
  2677.                 Level: 0
  2678.               Command: #
  2679.             Arguments: <none>
  2680.                Format: !|#
  2681.               Example: !|#
  2682.       Uses Draw Color: NO
  2683.       Uses Line Patrn: NO
  2684.       Uses Line Thick: NO
  2685.       Uses Fill Color: NO
  2686.       Uses Fill Patrn: NO
  2687.       Uses Write Mode: NO
  2688.       Uses Font Sizes: NO
  2689.  
  2690.      This command indicates that RIPscrip commands are complete.  This
  2691.      allows the terminal program to activate Mouse Regions, or respond to
  2692.      queued up Mouse Clicks without disturbing the natural flow of the
  2693.      script transmission.
  2694.  
  2695.      For noise-immunity, the Host should transmit three or more
  2696.      RIP_NO_MORE command consecutively to make sure the message gets to
  2697.      the terminal.  The terminal should also time-out if no data is
  2698.      received for a while, and assume RIP_NO_MORE.
  2699.  
  2700.  
  2701.  
  2702.  
  2703.  
  2704.  
  2705.  
  2706.  
  2707.  
  2708.  
  2709.      =====================================================================
  2710.      ==          HOST COMMANDS - A TUTORIAL & REFERENCE SECTION         ==
  2711.      =====================================================================
  2712.  
  2713.      With Mouse regions, Buttons and Text Variable Query ability, you can
  2714.      control the Terminal/Paint programs and how they react with the BBS
  2715.      in many ways.  To accomplish this, there are several features of
  2716.      RIPscrip that permit you to do special actions based on different
  2717.      circumstances.  In effect, an "action language" of sorts.  The
  2718.      following sections go into the available "action language" features
  2719.      in more detail.
  2720.  
  2721.      Among the various abilities are:
  2722.  
  2723.           1. Control-Character specification
  2724.           2. Pre-defined Text Variables & User-defined text variables
  2725.           3. Pop-up pick-lists
  2726.           4. A Host Command "Template" system for added intelligence.
  2727.           5. Query text variable contents (pre-defined & user variables)
  2728.  
  2729.  
  2730.  
  2731.  
  2732.      =====================================================================
  2733.      ==                        CONTROL CHARACTERS                       ==
  2734.      =====================================================================
  2735.  
  2736.      Not all BBS'es will allow you to use control characters on their
  2737.      Service.  Regardless of that, the capability to send any Control
  2738.      Character exists for your Host Commands.  The most commonly used
  2739.      Control Characters are:
  2740.  
  2741.         INDIVIDUAL CONTROL CHARACTERS         SPECIAL KEYSTROKES
  2742.         ===========================================================
  2743.         ^G ... Beep                           ^[[A ... Up Arrow
  2744.         ^L ... Clear Screen (Top of Form)     ^[[B ... Down Arrow
  2745.         ^M ... Carriage Return                ^[[C ... Right Arrow
  2746.         ^C ... Break (sometimes)              ^[[D ... Left Arrow
  2747.         ^H ... Backspace                      ^[[H ... Home Key
  2748.         ^[ ... Escape character               ^[[K ... End Key
  2749.         ^S ... Pause data transmission        ^[[L ... Control Home
  2750.         ^Q ... Resume data transmission
  2751.  
  2752.      Some hosts use the ^ (caret) for their own purposes.  In these
  2753.      cases, you can use the ` (backquote) character instead of the
  2754.      caret.  Some systems allow you to specify the caret symbol as
  2755.      two carets (^^).  Consult your Host Software documentation to
  2756.      determine the best method for your needs.
  2757.  
  2758.  
  2759.  
  2760.  
  2761.      =====================================================================
  2762.      ==                          TEXT VARIABLES                         ==
  2763.      =====================================================================
  2764.  
  2765.      A special feature of RIPaint allows it to understand what a Text
  2766.      Variable is.  A text variable is a piece of text that both RIPaint
  2767.      and RIPterm know something about.  For example, the Text Variable
  2768.      $DATE$ is known to represent the current Date on your PC.  The BBS
  2769.      may ask your PC what the values of one or more of these variables
  2770.      are, and if your Terminal knows those particular Variables, it will
  2771.      tell the BBS.
  2772.  
  2773.      There are two types of Text Variables.  There are built-in Text
  2774.      Variables that RIP products will ALWAYS know about.  Then there are
  2775.      also User Text Variables that can contain a variety of information
  2776.      depending on what the User entered at the time the Variable was
  2777.      created.  For example, the BBS might ask you what the contents of
  2778.      the $FULL_NAME$ variable is, and if RIPterm doesn't know, it could
  2779.      pop-up a field on the screen and ask you about it.  From then on,
  2780.      RIPterm will remember that piece of information for the next time it
  2781.      is needed by a BBS.
  2782.  
  2783.      You may use either the pre-defined Text Variables, or the User Text
  2784.      Variables at any place that allows Text Variables.
  2785.  
  2786.  
  2787.      The following is a Listing of the Pre-Defined Text Variables:
  2788.      =============================================================
  2789.  
  2790.  
  2791.      $DATE$ ... Date in short format (e.g., 12/19/93)
  2792.      ------------------------------------------------
  2793.      This Text Variable will be transformed into the current Date.
  2794.      It will be displayed in the format MM/DD/YY.
  2795.  
  2796.           Example:  $DATE$ = 12/19/93
  2797.  
  2798.  
  2799.      $MONTH$ ... Month Name
  2800.      ----------------------
  2801.      This Text Variable will be transformed into the name of the
  2802.      Current Month.  It will be not abbreviated (e.g., "November"
  2803.      instead of "Nov")
  2804.  
  2805.           Example:  $MONTH$ = December
  2806.  
  2807.  
  2808.      $MONTHNUM$ ... Month (in format 1-12)
  2809.      -------------------------------------
  2810.      This Text Variable is transformed into a Number representing
  2811.      the Current Month.  January=01 and December=12.  Therefore,
  2812.      the possible values for $MONTHNUM$ can range from 01-12.
  2813.  
  2814.           Example:  $MONTHNUM$ = 12
  2815.  
  2816.  
  2817.      $DAY$ ... Day in numeric form (e.g., 31)
  2818.      ----------------------------------------
  2819.      This Text Variable is transformed into a Number representing
  2820.      the Current Day of the month.  Possible values for this
  2821.      Variable are from 01-31.
  2822.  
  2823.           Example:  $DAY$ = 05
  2824.  
  2825.  
  2826.      $DOY$ ... Day of year (001-366)
  2827.      -------------------------------
  2828.      This Text Variable will be transformed into a Number representing
  2829.      the Day of the current Year.  Since a year contains 365 days (unless
  2830.      it is a Leap-Year where it contains 366), then the possible values
  2831.      that $DOY$ can be are 001-366.
  2832.  
  2833.           Example: $DOY$ = 214
  2834.  
  2835.  
  2836.      $YEAR$ ... 2 digit year (without century) (00-99)
  2837.      -------------------------------------------------
  2838.      This Text Variable will be transformed into a two-digit number
  2839.      representing the Current Year.
  2840.  
  2841.           Example: $YEAR$ = 93
  2842.  
  2843.  
  2844.      $FYEAR$ ... 4 digit year (with century) (0000-9999)
  2845.      ---------------------------------------------------
  2846.      This Text Variable will be transformed into a four-digit number
  2847.      that represents the Current Year.
  2848.  
  2849.           Example:  $FYEAR$ = 1993
  2850.  
  2851.  
  2852.      $TIME$ ... Time in standard format (e.g., 12:03:14)
  2853.      ---------------------------------------------------
  2854.      This Text Variable will be transformed into the Current Time.
  2855.      The time will be in military format (hours from 00-23).
  2856.  
  2857.           Example:  $TIME$ = 18:09:33
  2858.  
  2859.  
  2860.      $HOUR$ .... Hour (format HH) - normal style
  2861.      -------------------------------------------
  2862.      This Text Variable will be transformed into a two-digit number
  2863.      representing the Current Hour.  This variable may be anywhere
  2864.      from 01-12.  This does not use Military format.
  2865.  
  2866.           Example:  $HOUR$ = 11
  2867.  
  2868.  
  2869.      $MHOUR$ ... Hour (format HH) - Military style
  2870.      ---------------------------------------------
  2871.      This Text Variable will be transformed into a two-digit number
  2872.      representing the Current Hour in military format.  This variable
  2873.      may range anywhere from 00-23.
  2874.  
  2875.           Example: $MHOUR$ = 17
  2876.  
  2877.  
  2878.      $MIN$ ... Minutes (00-59)
  2879.      -------------------------
  2880.      This Text Variable will be transformed into a two-digit number
  2881.      representing the Current Minutes in the Hour.  Possible values
  2882.      for this Variable are 00-59.
  2883.  
  2884.           Example:  $MIN$ = 45
  2885.  
  2886.  
  2887.      $SEC$ ... Seconds (00-59)
  2888.      -------------------------
  2889.      This Text Variable will be transformed into a two-digit number
  2890.      representing the Current Seconds of the Minute.  Possible values
  2891.      for this Variable are 00-59.
  2892.  
  2893.           Example: $SEC$ = 59
  2894.  
  2895.  
  2896.      $AMPM$ ... Returns either AM or PM depending on time
  2897.      ----------------------------------------------------
  2898.      This Text Variable will be transformed into a two-character
  2899.      value of either "AM" or "PM" depending on what time it is.
  2900.  
  2901.           Example: $AMPM$ = PM
  2902.  
  2903.  
  2904.      $DATETIME$ ... Date & Time (e.g., Sat Dec 19 14:38:50 1992)
  2905.      -----------------------------------------------------------
  2906.      This Text Variable will be transformed into a combination Date
  2907.      and Time.  The format is somewhat different than standard
  2908.      Time/date notation.  The format used is:
  2909.  
  2910.        DAY-OF-WEEK   MONTH   DAY-OF-MONTH  HH:MM:SS  YEAR
  2911.  
  2912.           Example:  $DATETIME$ = Sat Dec 19 14:38:50 1992
  2913.  
  2914.      NOTE: This is the standard UNIX date/time notation.
  2915.  
  2916.  
  2917.      $TIMEZONE$ ... Time Zone or "NONE" if unknown (e.g., Pacific)
  2918.      -------------------------------------------------------------
  2919.      This Text Variable will be transformed into a a word/phrase that
  2920.      describes the Current Time-Zone you are in.  This may be returned
  2921.      as anything like "PST" for Pacific Standard Time, "EST" for Eastern
  2922.      Standard Time, etc.  If the Time-Zone is not set on your PC, this
  2923.      Variable will respond with "NONE".
  2924.  
  2925.           Example: $TIMEZONE$ = PST
  2926.  
  2927.  
  2928.      $DOW$ ... Day of week fully spelled out (e.g., Friday)
  2929.      ------------------------------------------------------
  2930.      This Text Variable will be transformed into the Current Day
  2931.      of the Week.  The name will be fully spelled out.  This
  2932.      Variable can be any of the values: Sunday, Monday, Tuesday,
  2933.      Wednesday, Thursday, Friday and Saturday.
  2934.  
  2935.           Example:  $DOW$ = Saturday
  2936.  
  2937.  
  2938.      $ADOW$ ... Abbreviated Day of Week (e.g., Mon, Tue, etc)
  2939.      --------------------------------------------------------
  2940.      This Text Variable will be transformed into the Current Day
  2941.      of the week, in abbreviated form.  This variable may be any
  2942.      of the following values: Sun, Mon, Tue, Wed, Thu, Fri and Sat.
  2943.  
  2944.           Example:  $ADOW$ = Mon
  2945.  
  2946.  
  2947.      $WDAY$ ... Weekday where 0 is Sunday (0-6)
  2948.      ------------------------------------------
  2949.      This Text Variable will be transformed into a one-digit number
  2950.      representing the Number of the Day of the Week.  Possible values
  2951.      for this Variable are 0-6, where 0=Sunday (the first day in the
  2952.      week).
  2953.  
  2954.           Example: $WDAY$ = 2
  2955.  
  2956.  
  2957.      $WOY$ ... Week of current year 00-53; Sunday=1st Day of Week
  2958.      ------------------------------------------------------------
  2959.      This Text Variable will be transformed into a number from 00-53,
  2960.      representing the Week Number in the current year.  Even though
  2961.      there are 52 weeks in a year, a week might not begin exactly on
  2962.      the first day of the year, so a maximum value for this variable
  2963.      can be 53 under these circumstances.  For this Variable, SUNDAY
  2964.      is considered to be the first day of the week.
  2965.  
  2966.           Example:  $WOY$ = 32
  2967.  
  2968.  
  2969.      $WOYM$ ... Week of current year 00-53; Monday=1st Day of Week
  2970.      -------------------------------------------------------------
  2971.      This Text Variable will be transformed into a number from 00-53,
  2972.      representing the Week Number in the current year.  Even though
  2973.      there are 52 weeks in a year, a week might not begin exactly on
  2974.      the first day of the year, so a maximum value for this variable
  2975.      can be 53 under these circumstances.  For this Variable, MONDAY
  2976.      is considered to be the first day of the week.
  2977.  
  2978.           Example:  $WOYM$ = 32
  2979.  
  2980.  
  2981.      $RIPVER$ ... RIPterm version (e.g., "RIPSCRIP015100")
  2982.      -----------------------------------------------------
  2983.      This Text Variable will be transformed into a key-phrase which
  2984.      will identify a RIPterm software package.  It is designed to
  2985.      be used by a Host BBS to detect what version of RIPscrip
  2986.      graphics your Terminal can support.  When this Text Variable
  2987.      is used, it will respond back with "RIPSCRIP" followed by
  2988.      the full Version Number (e.g., 01.51.00), without the periods.
  2989.  
  2990.           Example: $RIPVER$ = RIPSCRIP015100
  2991.  
  2992.  
  2993.      $STATBAR$ ... If Status Bar is on, returns YES, otherwise NO
  2994.      ------------------------------------------------------------
  2995.      This Text Variable will be transformed into a "YES" if the Status
  2996.      Bar is currently On on the Terminal.  If the Status Bar is not
  2997.      visible, then this Variable will be "NO".
  2998.  
  2999.           Example:  $STATBAR$ = YES
  3000.  
  3001.  
  3002.      $X$ ... X Mouse location   (format: XXXX)
  3003.      -----------------------------------------
  3004.      This Text Variable is for reporting the current X location of
  3005.      the Mouse to the BBS.  This could be used interactively by the
  3006.      BBS (or a game on the BBS) to deterimine the location of the
  3007.      mouse cursor.  Only the X value of the Mouse (X,Y) location is
  3008.      returned to the BBS.  The value will be 0000-9999 depending on
  3009.      what the current position is.
  3010.  
  3011.           Example:  $X$ = 0523
  3012.  
  3013.  
  3014.      $Y$ ... Y Mouse location   (format: YYYY)
  3015.      -----------------------------------------
  3016.      This Text Variable is for reporting the current Y location of
  3017.      the Mouse to the BBS.  This could be used interactively by the
  3018.      BBS (or a game on the BBS) to deterimine the location of the
  3019.      mouse cursor.  Only the Y value of the Mouse (X,Y) location is
  3020.      returned to the BBS.  The value will be 0000-9999 depending on
  3021.      what the current position is.
  3022.  
  3023.           Example:  $Y$ = 0244
  3024.  
  3025.  
  3026.      $XY$ ... X/Y Mouse Location (format: XXXX:YYYY)
  3027.      -----------------------------------------------
  3028.      This Text Variable will be transformed into a combination of
  3029.      both the X and Y locations of the Mouse Cursor.  A colon (:) is
  3030.      used to separate the two values.  Either the X or Y values may
  3031.      range from 0000-9999 depending on the current location.  The
  3032.      format that this value takes on is:  XXXX:YYYY
  3033.  
  3034.           Example:  $XY$ = 0297:0321
  3035.  
  3036.  
  3037.      $XYM$ ... X, Y & button status (format: XXXX:YYYY:LMR)
  3038.      ------------------------------------------------------
  3039.      This Text Variable will be transformed into a combination of
  3040.      the X and Y Mouse Cursor location, and a status of which
  3041.      Mouse Buttons are pressed (if any).  The format of the returned
  3042.      text is XXXX:YYYY:LMR where XXXX is the X cursor location in the
  3043.      range 0000-9999.  YYYY is the Y cursor location in the range
  3044.      0000-9999.  Finally, LMR stands for Left/Middle/Right.  If any
  3045.      of these buttons are depressed (clicked), then the corresponding
  3046.      position will contain a 1.  If a button is NOT depressed, then it
  3047.      will contain a 0.
  3048.  
  3049.           Example:  $XYM$ = 0123:0297:110
  3050.  
  3051.      This means that the (X,Y) location of the cursor is (0123,0297),
  3052.      and that the Left and Middle buttons are depressed, but that the
  3053.      Right Mouse Button is not depressed.
  3054.  
  3055.  
  3056.      $M$ ... Mouse Button Status: LMR (e.g., 101)
  3057.      --------------------------------------------
  3058.      This Text Variable will be transformed into a 3-character code
  3059.      representing what the Status of each Mouse Button is.  This
  3060.      variable can work with either 2-button Mice, or 3-button Mice.
  3061.      In either event, the format of the code is LMR where L=Left,
  3062.      M=Middle (if any), and R=Right.  If any of these buttons are
  3063.      depressed (i.e., clicked), then the code for that button would be
  3064.      a "1".  If the button is not depressed, it is a "0".  So, a value
  3065.      of "100" would mean that the Left Mouse Button is depressed, but
  3066.      none of the others are.
  3067.  
  3068.           Example:  $M$ = 001
  3069.  
  3070.  
  3071.      $MSTAT$ ... Mouse Status (format: YES/NO)
  3072.      -----------------------------------------
  3073.      This Text Variable will be transformed into a "YES" if there is
  3074.      a Mouse installed on the RIPterm computer.  If no Mouse is
  3075.      installed, this variable will contain "NO".
  3076.  
  3077.           Example:  $MSTAT$ = YES
  3078.  
  3079.  
  3080.      $SBARON$ ... Turn ON the Status Line
  3081.      ------------------------------------
  3082.      This Text Variable is somewhat different than the other Text
  3083.      Variables described above.  Rather than send something back
  3084.      to the Host, it performs a specific operation - it turns ON
  3085.      the Status Line.  In this respect, it is considered an ACTIVE
  3086.      TEXT VARIABLE.  It evaluates to a null string (nothing).  Its
  3087.      sole purpose in life is to enable the Status Line.
  3088.  
  3089.           Example:  $SBARON$ = <nil>
  3090.  
  3091.  
  3092.      $SBAROFF$ ... Turn OFF the Status Line
  3093.      --------------------------------------
  3094.      This Text Variable is somewhat different than the other Text
  3095.      Variables described above.  Rather than send something back
  3096.      to the Host, it performs a specific operation - it turns OFF
  3097.      the Status Line.  In this respect, it is considered an ACTIVE
  3098.      TEXT VARIABLE.  It evaluates to a null string (nothing).  Its
  3099.      sole purpose in life is to disable the Status Line.
  3100.  
  3101.           Example:  $SBAROFF$ = <nil>
  3102.  
  3103.  
  3104.      $ETW$ ... Erase Text Window
  3105.      ---------------------------
  3106.      This Text Variable is somewhat different than the other Text
  3107.      Variables described above.  Rather than send something back
  3108.      to the Host, it performs a specific operation - it Erases the
  3109.      current Text Window (much like a Clear Screen code does).  This
  3110.      command is particularly useful in Host Commands when you click
  3111.      on a Mouse area, and after it is finished clicking, it could
  3112.      erase the text window THEN transmit the remainder of the host
  3113.      command (if any) to the BBS.
  3114.  
  3115.           Example:  $ETW$ = <nil>
  3116.  
  3117.  
  3118.      $EGW$ ... Erase Graphics Window
  3119.      -------------------------------
  3120.      This Text Variable is somewhat different than the other Text
  3121.      Variables described above.  Rather than send something back
  3122.      to the Host, it performs a specific operation - it Erases the
  3123.      current Graphics Window (much like a Reset Windows command does).
  3124.      This command is particularly useful in Host Commands when you
  3125.      click on a Mouse area, and after it is finished clicking, it
  3126.      could erase the graphics window THEN transmit the remainder of
  3127.      the host command (if any) to the BBS.
  3128.  
  3129.           Example:  $EGW$ = <nil>
  3130.  
  3131.  
  3132.      $MKILL$ ... Kill all Mouse Fields currently defined
  3133.      ---------------------------------------------------
  3134.      This Text Variable is also an "Active Text Variable" in the
  3135.      sense that it doesn't transmit anything per se to the Host.
  3136.      What it does do, is upon execution it deletes all currently
  3137.      defined Mouse Fields exactly like the RIP_KILL_MOUSE_FIELDS
  3138.      does.  The net benefit of this is that when the user clicks
  3139.      on a Mouse Button, the Mouse Fields are removed, but the
  3140.      graphics remain on the screen so that the fields could be
  3141.      subsequently re-defined quickly and easily without having to
  3142.      re-transmit an identical menu over again.
  3143.  
  3144.           Example:  $MKILL$ = <nil>
  3145.  
  3146.  
  3147.      $BEEP$ ... Beeps the terminal (like a CTRL-G does)
  3148.      --------------------------------------------------
  3149.      This command is an Active Text Variable.  It's sole purpose
  3150.      in life is to issue a Beep to the Terminal, thus producing
  3151.      a CTRL-G sound.
  3152.  
  3153.           Example:  $BEEP$ = <nil>
  3154.  
  3155.  
  3156.      $BLIP$ ... Makes a short "blipping" sound (like a Barrier)
  3157.      ----------------------------------------------------------
  3158.      This Active Text Variable is much like the BEEP variable,
  3159.      except that the sound produced is different.  It produces
  3160.      a sound more akin to a "barrier" sound; something that 
  3161.      sounds like you're running into a wall or something to that
  3162.      effect.
  3163.  
  3164.           Example:  $BLIP$ = <nil>
  3165.  
  3166.  
  3167.      $MUSIC$ ... Makes a musical (cheerful) sound
  3168.      --------------------------------------------
  3169.      This Active Text Variable also produces an Audio result.  The
  3170.      sound that is generated is a cheerful sound, representing 
  3171.      some kind of success.  The sound is exactly the same as the
  3172.      Sound you would hear when you receive a successful download,
  3173.      or when you achieve a connection when dialing the modem in
  3174.      RIPterm.
  3175.  
  3176.  
  3177.      $DTW$ ... Disable Text Window
  3178.      -----------------------------
  3179.      This Text Variable is somewhat different than the other Text
  3180.      Variables described above.  Rather than send something back
  3181.      to the Host, it performs a specific operation - it Disables the
  3182.      current Text Window (preventing any received text from showing
  3183.      up on screen).  This command is particularly useful in Host
  3184.      Commands when you click on a Mouse area, and after it is
  3185.      finished clicking, it would halt any further text output to
  3186.      the text window.
  3187.  
  3188.           Example:  $DTW$ = <nil>
  3189.  
  3190.  
  3191.      $PCB$ ... Paste Clip Board at last location
  3192.      -------------------------------------------
  3193.      This command will physically paste the contents of the clipboard
  3194.      at the last location that the clipboard was "clipped" from.
  3195.      This even works with Icons that are loaded.  The last location
  3196.      taken in this situation, is the location the Icon was stamped
  3197.      when it was originally loaded.  This text variable is very
  3198.      useful in situations where you want to "pop-up" a dialog box
  3199.      on the screen (saving the previous area behind the dialog onto
  3200.      the clipboard), and when the user clicks on the "OK" button,
  3201.      restoring the screen contents (by adding a $PCB$ in the host
  3202.      command string).
  3203.  
  3204.           Example:  $PCB$ = <nil>
  3205.  
  3206.  
  3207.      $SMF$ ... Save Mouse Fields
  3208.      ---------------------------
  3209.      This text variable will physically save all currently defined
  3210.      Mouse Fields and Mouse Buttons to a temporary file for later
  3211.      retrieval.  This is designed especially for the graphical
  3212.      designer who wishes to pop-up a dialog box on the screen with
  3213.      one or more mouse fields, and when finished, to restore the
  3214.      screen and original mouse fields (if any) so that the user is
  3215.      not left "floating".  This command is intended to be used with
  3216.      the Restore Mouse Fields text variable $RMF$.
  3217.  
  3218.           Example:  $SMF$ = <nil>
  3219.  
  3220.  
  3221.      $RMF$ ... Restore Mouse Fields
  3222.      ------------------------------
  3223.      This text variable physically restores any previously saved
  3224.      Mouse Fields saved with the $SMF$ text variable.  You may
  3225.      have only one set of mouse fields saved at any one time.  If
  3226.      there were no mouse fields saved, or if the number of mouse
  3227.      fields that were saved was 0, then no mouse fields will be
  3228.      active.  Any fields that were defined at the time of this
  3229.      command's execution will be erased.
  3230.  
  3231.      NOTE: You may restore Mouse Fields more than once if you wish.
  3232.            In other words, if you perform a "Save Mouse Fields"
  3233.            command, you may execute Restore Mouse Fields one or
  3234.            more times after that point.
  3235.  
  3236.           Example:  $RMF$ = <nil>
  3237.  
  3238.  
  3239.       $COFF$ ... Disable the text cursor
  3240.       ----------------------------------
  3241.       This command will physically shut off the ASCII text cursor that 
  3242.       is normally seen in the text window.  This is automatically reset
  3243.       whenever a $CON$ command (Cursor ON) or a Reset Windows command
  3244.       is received.
  3245.  
  3246.           Example:  $COFF$ = <nil>
  3247.     
  3248.     
  3249.       $CON$ ... Re-displays the text cursor
  3250.       -------------------------------------
  3251.       This command will physically turn ON the ASCII text cursor.  This
  3252.       is the exact opposite of the $COFF$ command which disables the
  3253.       text cursor.
  3254.  
  3255.           Example:  $CON$ = <nil>
  3256.     
  3257.     
  3258.       $STW$ ... Save text window information
  3259.       --------------------------------------
  3260.       This command will physically store all of the text window 
  3261.       settings.  The window's X/Y dimensions are preserved, as is the
  3262.       current cursor location, ANSI attributes, cursor ON/OFF status
  3263.       and the vertical scrolling margins.  Even the current System Font
  3264.       will be saved (if necessary).
  3265.     
  3266.           Example:  $STW$ = <nil>
  3267.  
  3268.     
  3269.       $RTW$ ... Restore text window information
  3270.       -----------------------------------------
  3271.       This command will restore the text window to whatever settings
  3272.       were active when the $STW$ (save text window) command was issued.
  3273.       The cursor, ANSI attributes and any other piece of text window
  3274.       information will be restored (including the System Font setting).
  3275.  
  3276.       NOTE: The textual contents of the window will not be restored.
  3277.     
  3278.           Example:  $RTW$ = <nil>
  3279.  
  3280.  
  3281.       $SCB$ ... Save Clip Board
  3282.       -------------------------
  3283.       This command will save the Clipboard to disk for later retrieval
  3284.       by a subsequent Query or Host Command.  If the clipboard does
  3285.       not exist, then the temporary file is deleted automatically to
  3286.       indicate to the Restore Clip Board that there shouldn't be a 
  3287.       clipboard active.
  3288.  
  3289.           Example:  $SCB$ = <nil>
  3290.  
  3291.  
  3292.       $RCB$ ... Restore Clip Board
  3293.       ----------------------------
  3294.       This command restores the clipboard from the temporary disk file
  3295.       called SCRAPBUF.SAV.  This file is created by $SCB$ (save clip
  3296.       board).  Not only is the actual clipboard contents saved, but
  3297.       so is the last clipboard location, so that the Paste Clip Board
  3298.       command ($PCB$) will restore the clipboard's location as well.
  3299.  
  3300.           Example:  $RCB$ = <nil>
  3301.  
  3302.  
  3303.       $VT102ON$ ... Turn VT-102 keyboard mode ON
  3304.       ------------------------------------------
  3305.       This command enables the VT-102 keystrokes ability.  This makes
  3306.       the following keystrokes send something to the Host:
  3307.  
  3308.                              F1 ...  ESC [ M
  3309.                              F2 ...  ESC [ N
  3310.                              F3 ...  ESC [ O
  3311.                              F4 ...  ESC [ P
  3312.                              F5 ...  ESC [ Q
  3313.                              F6 ...  ESC [ R
  3314.                              F7 ...  ESC [ S
  3315.                              F8 ...  ESC [ T
  3316.                              F9 ...  ESC [ U
  3317.                             F10 ...  ESC [ V
  3318.                            PGUP ...  ESC [ I
  3319.                            PGDN ...  ESC [ G
  3320.                            HOME ...  ESC [ H
  3321.                             END ...  ESC [ F
  3322.                          INSERT ...  ESC [ L
  3323.                       CURSOR UP ...  ESC [ A
  3324.                       CURSOR DN ...  ESC [ B
  3325.                     CURSOR LEFT ...  ESC [ C
  3326.                    CURSOR RIGHT ...  ESC [ D
  3327.  
  3328.       The purpose of having this as a text variable is that the Host
  3329.       can instruct the terminal to enter this mode automatically, thus
  3330.       making it simpler on the user.
  3331.  
  3332.           Example:  $VT102ON$ = <nil>
  3333.  
  3334.  
  3335.       $VT102OFF$ ... Turn VT-102 keyboard mode OFF
  3336.       --------------------------------------------
  3337.       This variable disables the VT-102 keystrokes mode, returning your
  3338.       keyboard to the standard keyboard operation.
  3339.  
  3340.           Example:  $VT102OFF$ = <nil>
  3341.  
  3342.  
  3343.       $DWAYON$ ... Turn Doorway Mode ON
  3344.       ---------------------------------
  3345.       This variable enables Doorway Mode.  This is intended to be used
  3346.       by a Host system that wishes to take advantage of the Doorway
  3347.       mode available in Marshall Dudley's Doorway (tm) software
  3348.       package.
  3349.  
  3350.           Example:  $DWAYON$ = <nil>
  3351.  
  3352.  
  3353.       $DWAYOFF$ ... Turn Doorway Mode OFF
  3354.       -----------------------------------
  3355.       This variable disabled the Doorway keyboard mode.  This will
  3356.       return the keyboard to normal operation.
  3357.  
  3358.           Example:  $DWAYOFF$ = <nil>
  3359.     
  3360.  
  3361.       $SAVE$ ... Save graphics screen
  3362.       -------------------------------
  3363.       The SAVE variable will completely save the contents of the entire
  3364.       graphics screen to a disk file called RIPTERM.SAV.  No Mouse
  3365.       Fields, Text Window locations or Clipboard data are saved - just
  3366.       the graphics screen.  The entire 640x350 region is saved to disk.
  3367.  
  3368.       If you wish to save the entire state of the RIPterm system, use
  3369.       the following text variables all at the same time (spaces are
  3370.       added for clarity):
  3371.  
  3372.               $SAVE$ $STW$ $SCB$ $SMF$
  3373.                  \     \     \     \
  3374.                   \     \     \     --- Save Mouse Fields
  3375.                    \     \     \
  3376.                     \     \     ------- Save ClipBoard
  3377.                      \     \
  3378.                       \     ----------- Save Text Window
  3379.                        \
  3380.                         --------------- Save Graphics Screen
  3381.  
  3382.  
  3383.       $RESTORE$ ... Restore graphics screen
  3384.       -------------------------------------
  3385.       The RESTORE command will read the saved file RIPTERM.SAV in from
  3386.       disk and restore the graphics as they were originally saved with
  3387.       the $SAVE$ command.  Only the graphics screen is restored, not
  3388.       the Clipboard, Mouse Fields or Text Window settings.  To restore
  3389.       the entire context of the graphics environment, issue the 
  3390.       following text variables:
  3391.  
  3392.               $RESTORE$ $STW$ $SCB$ $SMF$
  3393.                  \        \     \     \
  3394.                   \        \     \     --- Restore Mouse Fields
  3395.                    \        \     \
  3396.                     \        \     ------- Restore ClipBoard
  3397.                      \        \
  3398.                       \        ----------- Restore Text Window
  3399.                        \
  3400.                         ------------------ Restore Graphics Screen
  3401.  
  3402.  
  3403.     -----------------------------------------------------------------
  3404.  
  3405.     $SAVE0$-$SAVE9$ & $RESTORE0$-$RESTORE9$ ... Save/Restore screens
  3406.  
  3407.     These ten text variables are identical in nature with $SAVE$
  3408.     described above with sole exception to the fact that the temp
  3409.     files (RIPTERM0.SAV - RIPTERM9.SAV) are immediately deleted
  3410.     when restored.  The $SAVE$ and $RESTORE$ commands do not do this.
  3411.     With this, you can keep restoring screens if you use $SAVE$.
  3412.     These ten variables are provided so that you can have more than
  3413.     one screen saved simultaneously.
  3414.  
  3415.  
  3416.  
  3417.  
  3418.      =====================================================================
  3419.      ==                 LOCAL RIPscrip FILE PLAYBACK                    ==
  3420.      =====================================================================
  3421.  
  3422.  
  3423.       You can re-play a .RIP file that you have locally on your hard disk
  3424.       from anyplace that allows text variables.  The format of the variable
  3425.       is somewhat different than user variables, or pre-defined text
  3426.       variables.  After the initial dollar sign ($), enter the greater-than
  3427.       symbol (>) followed by the filename (with or without the .RIP
  3428.       extension), then ending in another dollar sign ($).  Several examples
  3429.       of this are as follows:
  3430.  
  3431.                $>MYFILE.RIP$
  3432.                $>FILE1$
  3433.                $>FILE1.RIP$$>FILE2.RIP$$>FILE3$
  3434.                $>ANSIFILE.ANS$
  3435.  
  3436.       Note in the last example, a file extension other than .RIP was used.
  3437.       You are not limited to playing back local .RIP files.  In fact, you
  3438.       can play-back any file you want.  You could load any simple text
  3439.       file, ANSI picture image, or other such thing.  When loaded, the data
  3440.       is not sent to the host; it is strictly echoed on your local screen.
  3441.       If the file is a .RIP file, it will replay any graphics that were in
  3442.       the file and if any Mouse Regions are defined, it will create those
  3443.       fields for you as well, thus allowing you to pop-up dialog screens or
  3444.       other such things that are not built-in to RIPterm normally.
  3445.  
  3446.       Each "local RIP playback" variable you enter will search for the .RIP
  3447.       file in the current host's icon directory.  If it cannot find the
  3448.       file in that directory, it will check the ICONS\ directory.
  3449.  
  3450.  
  3451.     
  3452.     
  3453.     
  3454.     
  3455.      =====================================================================
  3456.      ==                           POP-UP LISTS                          ==
  3457.      =====================================================================
  3458.  
  3459.      Any place that you can use a Text Variable, you can take advantage
  3460.      of a unique feature of RIPscrip - Popup Pick-Lists.  A Popup Pick-
  3461.      List is simply a list that pops up allowing you to choose from one
  3462.      of several available values.  Whichever entry in the list you choose
  3463.      will be inserted into your Keystroke Macro in place of the List
  3464.      Definition.
  3465.  
  3466.      In order to use Popup Pick-Lists, you must define the List in the
  3467.      text of your Host Command.
  3468.  
  3469.      A List is created by putting the special List instructions inside of
  3470.      two parenthesis (( and )).  The list instructions consist of an
  3471.      optional Question, followed by one or more entries to put in the
  3472.      List.  For example, ((Send Email to?::Sysop,Cosysop,Joe)) says to
  3473.      Pop-Up a list asking you "Send Email to?", giving you the choices of
  3474.      "Sysop", "Cosysop", and "Joe".
  3475.  
  3476.      By default, if you hit <ESCAPE> instead of picking an entry in the
  3477.      list, then nothing will be inserted into the text of your Command.
  3478.      You can indicate that the user MUST pick an entry by puttin an
  3479.      asterisk (*) at the beginning of the question.  For example, 
  3480.      ((*Send Mail to?::Sysop,Joe)).  This would make it so that the User
  3481.      MUST choose either SYSOP or JOE.
  3482.  
  3483.      In the previous examples, SYSOP, COSYSOP and JOE are the actual text
  3484.      responses that are inserted into your Macros.  These commands are
  3485.      also the same things that are displayed in the Listing.  If you want
  3486.      to use something else instead of the actual "return text", you can.
  3487.      When you enter the List Entry, add a @description to the end of it.
  3488.  
  3489.  
  3490.         For example, ((Send Mail To?::Sysop@Head Honcho,Cosysop,Joe))
  3491.  
  3492.  
  3493.      One final feature of Popup Pick-Lists allow you to specify a hotkey
  3494.      for each entry in the List.  For example, if you wanted the first
  3495.      character of each entry to be hilighted (thus allowing you to select
  3496.      that character to activate the entry), simply put a tilda (~) or an
  3497.      underline (_) before and after the keystroke.  For example "_S_ysop"
  3498.      would hilight the "S" in "Sysop".  You can hilight more than one
  3499.      character, but only the first one will be the active hotkey.  If you
  3500.      omit the second tilda or underline, then the remainder of the
  3501.      description will be hilighted.
  3502.  
  3503.         NOTE: If you use a Tilda or an Underline in the actual Text
  3504.               Response command (not the description), then those
  3505.               characters will be automatically inserted into your
  3506.               Macro when it gets transmitted to the BBS.  This is
  3507.               probably not what you would want to do.  Bottom line,
  3508.               only use Hotkey features on List Entries where you
  3509.               specify a Description!
  3510.    
  3511.               If you do not specify a Question, then the List will
  3512.               ask you: 
  3513.           
  3514.        
  3515.                   "Choose one of the following:"
  3516.    
  3517.    
  3518.               You may specify up to twenty List Entries for any
  3519.               one list.
  3520.  
  3521.  
  3522.      Examples:
  3523.  
  3524.        ((Send E-Mail to?::Sysop,Joe,Mike))
  3525.        ((*Send EMail to?::Sysop@The Head Honcho,Joe,Mike@My Brother))
  3526.        ((::Sysop@_T_he Head Honcho,Joe,Mike@My _B_rother))
  3527.        ((Sysop,Joe,Mike,George))
  3528.  
  3529.  
  3530.  
  3531.  
  3532.  
  3533.      =====================================================================
  3534.      ==                     HOST COMMAND "TEMPLATES"                    ==
  3535.      =====================================================================
  3536.  
  3537.      This feature is somewhat complex in nature, but ultimately powerful
  3538.      in the long run when creating interactive mouse-driven GUI systems.
  3539.  
  3540.      Often times you might want a Button on your screen to do one thing
  3541.      in one situation, but to do something completely different in
  3542.      another situation.  In the past, this required having a separate
  3543.      menu file for each different function that this Button needs.  This
  3544.      cumbersome method is "history" with Command Templates.
  3545.  
  3546.      Command Templates are probably best described with a brief example.
  3547.      Let's say that you have a menu screen for reading and writing 
  3548.      messages in your public message forums.  On this menu, you can have
  3549.      buttons for each forum on your system, and at the same time have
  3550.      buttons for READ, WRITE, ERASE, MODIFY, etc.  Now, how can you make
  3551.      the READ/WRITE/etc buttons work differently for each Forum?
  3552.  
  3553.  
  3554.                                    Templates!
  3555.  
  3556.  
  3557.      To further refine our example, let's say that if you click on the
  3558.      button for Forum #1, it should send the command "S FORUM1" to the
  3559.      host to select that forum.  After that, simply clicking on the
  3560.      READ or WRITE buttons will read through the current section.  But,
  3561.      what if you want to interactively move about on the menu quickly?
  3562.      Make each of the Forum selection buttons define a template.  Each
  3563.      template will instruct RIPscrip how to process the other Buttons.
  3564.  
  3565.      In the above example, the Forum #1 button would define a template
  3566.      like this:
  3567.  
  3568.  
  3569.                                  S FORUM1 $?$^m
  3570.  
  3571.  
  3572.      This Template will return "S FORUM1" followed by the Host Command
  3573.      for whichever button is clicked, followed by a carriage return.
  3574.      The special text variable $?$ is only used in Command Templates,
  3575.      and is used to indicate "insert the text into the template here".
  3576.      It references the text of some other button that was clicked that
  3577.      is stuffing it's data INTO this template.
  3578.  
  3579.  
  3580.      CHARACTERISTICS OF TEMPLATES
  3581.      ----------------------------
  3582.         Before you can actually go about defining templates, you
  3583.         need to know how they work, interact and how other functions
  3584.         interact with templates.
  3585.  
  3586.         You are allowed up to 36 different templates, each of which
  3587.         can be different and can all be active at the same time.  Each
  3588.         of the 36 templates correspond to a Button Group (see the 
  3589.         Button Command).  Templates can be defined and/or activated
  3590.         in any order.  In other words, you can have a template #1, 5
  3591.         13 and 32, but none of the others defined.  Templates remain
  3592.         defined until re-defined by another template.
  3593.  
  3594.  
  3595.      DEFINING A TEMPLATE
  3596.      -------------------
  3597.         To create a template, when asked for a Host Command, simply
  3598.         type in the Template similar to the following:
  3599.  
  3600.  
  3601.                [5:]S FORUM1 $?$^m
  3602.  
  3603.  
  3604.         The [5:] at the beginning of the command indicates that you
  3605.         wish to create template #5 with the following text as the
  3606.         template.  Remember, a $?$ is considered a "macro" that will
  3607.         insert some text into this template from some other source.
  3608.         Valid template numbers are 0-9, A-Z.  So, with this in mind,
  3609.         all of the template definitions are valid:
  3610.  
  3611.           
  3612.                [0:]S FORUM1 $?$^m
  3613.                [9:]S FORUM2 $?$^m
  3614.                [G:]S FORUM3 $?$^m
  3615.  
  3616.  
  3617.      USING TEMPLATES
  3618.      ---------------
  3619.         When you want to make a button "feed its command" into a
  3620.         template, you do so in a format similar to defining a
  3621.         Template, but with a subtle difference.  Don't include
  3622.         the colon (:) in the template reference.  An example of
  3623.         this would be the following:
  3624.  
  3625.  
  3626.                [0]HELLO
  3627.  
  3628.  
  3629.         This says, take the text "HELLO" and feed it into template
  3630.         number 0, and send the final result to the BBS.  Note how
  3631.         simple it is to create and reference templates by either
  3632.         using a colon or omitting it.
  3633.  
  3634.         If you do not specify a Template reference in the format
  3635.         [#] at the beginning of your Host Command, it will be
  3636.         considered to be a "normal Host Command" that does not
  3637.         get stuffed into any templates.  For completeness, you
  3638.         may specify []HELLO to send the word "HELLO" to the BBS
  3639.         without going through any templates (a "null" template).
  3640.         So in other words, using a [] or using nothing at all is
  3641.         the same thing, don't use any templates for this Host
  3642.         command.
  3643.  
  3644.  
  3645.      CHAINING ONE TEMPLATE RESPONSE INTO ANOTHER (TEMPLATE CHAINING)
  3646.      ---------------------------------------------------------------
  3647.         In the preceding examples we showed how you can feed the
  3648.         Host Command of one button through a single Template
  3649.         definition.  This is the "simplest case" of template
  3650.         processing.  As part of the "big picture" of templates,
  3651.         you can actually "chain" the input of one template into
  3652.         another template, into another, so on and so forth and
  3653.         then transmit the result of all composite template stuffing
  3654.         to the Host as one big command.  After all is said and done
  3655.         with template processing, the text buffer sent to the host
  3656.         can be anywhere from 0-4095 bytes in length.
  3657.  
  3658.         To chain one template into another, follow a format similar
  3659.         to the following:
  3660.  
  3661.          
  3662.                [0372]HELLO
  3663.  
  3664.  
  3665.         This will feed the word "HELLO" into template #0, then the
  3666.         result into template #3, then that result into template #7,
  3667.         then finally the result will be stuffed into Template #2.
  3668.         The final result will be then transmitted to the BBS.
  3669.  
  3670.         You may specify from 0-36 different templates in any one
  3671.         chaining operations.  You MAY use the same template more
  3672.         than once in the same chain, like the following:
  3673.  
  3674.  
  3675.                [0370]HELLO
  3676.  
  3677.  
  3678.         Note, that template #0 is used twice, both at the beginning
  3679.         and the end of the processing.  This feature, potentially
  3680.         dangerous, is provided for completeness and flexibility.
  3681.  
  3682.  
  3683.      EMBEDDED TEMPLATES
  3684.      ------------------
  3685.         You can embed the contents of one Template into another
  3686.         template (or into a Host Command) by using the special
  3687.         Text Variable $?x$ where "x" is the Template number to
  3688.         insert.  This command functions much like the insert-text
  3689.         variable $?$ does, but gives you a great deal more power
  3690.         and flexibility.
  3691.  
  3692.         If you specify to embed one template inside another, the
  3693.         embedded template can contain text variables, pick-lists
  3694.         and other such things.  It can even have another embedded
  3695.         template in it as well, but that sub-embedded template
  3696.         cannot have ANY text variables, or any special commands,
  3697.         not even control characters!
  3698.  
  3699.         To sum it up, an embedded template can have anything you
  3700.         want in it, including other embedded templates.  All
  3701.         text variables in an embedded template are expanded, as
  3702.         are pick lists, control characters and the like.  If you
  3703.         have an embedded template INSIDE an embedded template,
  3704.         the deepest embedded template will have NO text variable
  3705.         processing done on it - i.e., the text is sent to the
  3706.         host verbatim, exactly as it appears in the template.
  3707.  
  3708.         If a template that is referenced is not yet defined, the
  3709.         template embed command will be skipped (i.e., blank) providing
  3710.         that the embedded template doesn't refer to a Radio Group.
  3711.         Radio Groups are "dependencies" in this manner.  Anything
  3712.         that tries to embed a Template from a Radio Group will
  3713.         not be processed if a template in that area hasn't been
  3714.         defined yet.  Embedded templates from Checkbox Groups can
  3715.         be skipped if none of the check-boxes are active.
  3716.  
  3717.  
  3718.      TEXT VARIABLES, PICK-LISTS AND CONTROL CHARACTERS IN TEMPLATES
  3719.      --------------------------------------------------------------
  3720.         You may use Text Variables, Pick-Lists and Control Characters
  3721.         anywhere in any template definition, or reference.  You are
  3722.         limited such that, a text variable is translated to its
  3723.         real value when the template is being processed, not after
  3724.         all templates are processed.  The net result of this is,
  3725.         you cannot use one template to construct another template's
  3726.         pick-list, text variables, or the such.
  3727.  
  3728.         In other words, you cannot "nest" text variable definitions,
  3729.         pick lists, or control characters.  You can have these
  3730.         commands in any or all templates used in a given template
  3731.         chain, but they are independent of each other.
  3732.  
  3733.  
  3734.      EXAMPLES OF SOME TEMPLATE-CHAINS
  3735.      --------------------------------
  3736.         Below are several examples of different template setups.
  3737.         These are intended to give you ideas on how templates
  3738.         may be used:
  3739.  
  3740.           Example #1:
  3741.  
  3742.             [0:]D $?$ Z^m       ... Used to download a file with Zmodem
  3743.             [1:]D $?$ X^m       ... Used to download a file with Xmodem
  3744.  
  3745.             [0]FILENAME.ZIP     ... Use this with #0 to download Zmodem
  3746.             [1]FILENAME.ZIP     ... Use this with #1 to download Xmodem
  3747.  
  3748.             In this example, template #0 is used for downloading with
  3749.             Zmodem.  Template #1 is for downloading with Xmodem.
  3750.             Depending on which FILENAME.ZIP button you click on, you
  3751.             might download it with one protocol or with another.  It
  3752.             all lies on which template you reference.  The text
  3753.             transmitted to the BBS if you clicked on the buttons could
  3754.             be either:
  3755.  
  3756.                     D FILENAME.ZIP Z^m
  3757.               or,   D FILENAME.ZIP X^m
  3758.  
  3759.  
  3760.           Example #2:
  3761.  
  3762.             [0:]D $?$           ... Make this the "DOWNLOAD NOW" button
  3763.  
  3764.             [1:]$?$ X^m         ... Radio Button #1   (X-Modem)
  3765.             [1:]$?$ Y^m         ... Radio Button #2   (Y-Modem)
  3766.             [1:]$?$ B^m         ... Radio Button #3   (Y-Modem Batch)
  3767.             [1:]$?$ Z^m         ... Radio Button #4   (Z-Modem)
  3768.  
  3769.             [01]FILENUM1.ZIP    ... Button to download file #1
  3770.             [01]FILENUM2.ZIP    ... Button to download file #2
  3771.             [01]FILENUM3.ZIP    ... Button to download file #3
  3772.  
  3773.             This example is a bit more involved.  It brings the concept
  3774.             of "radio buttons" into the picture.  This is something
  3775.             that is part of the Button command.  A Radio button is
  3776.             like having a list of options on your screen, only one
  3777.             of which can be active at any one time.  When using
  3778.             templates with Radio buttons, you can quickly and elegantly
  3779.             define a menu that can do one thing in one mode, or
  3780.             something totally different in another mode.  An example
  3781.             of the above menu might be as follows:
  3782.  
  3783.  
  3784.                  Protocols:                Download which file?     
  3785.                     __                        __
  3786.                    |\/|                      |  |
  3787.                    |/\| X-Modem              |  | File #1
  3788.                     --                        --
  3789.                     __                        __
  3790.                    |  |                      |\/|
  3791.                    |  | Y-Modem              |/\| File #2
  3792.                     --                        -- 
  3793.                     __                        __
  3794.                    |  |                      |  |
  3795.                    |  | Y-Modem (batch)      |  | File #3
  3796.                     --                        --  
  3797.                     __
  3798.                    |  |
  3799.                    |  | Z-Modem         _______________________
  3800.                     --                 |                       |
  3801.                                        |  BEGIN DOWNLOAD NOW!  |
  3802.                                        |_______________________|
  3803.  
  3804.  
  3805.      MORE ABOUT TEMPLATES
  3806.      --------------------
  3807.         When you use the $?$ text variable inside a template definition,
  3808.         you are not limited to using it only once.  In fact, you can use
  3809.         it as many times in your template definition as you wish.  This
  3810.         can be useful under many circumstances where the user might have
  3811.         to enter the same thing twice.
  3812.  
  3813.         In the preceding example #2, a group of Radio Buttons was used
  3814.         on the right side of the screen to determine which file should
  3815.         be downloaded.  In that example, there was no ability to specify
  3816.         an arbitrary filename to download.  You were only allowed to 
  3817.         download one of three given files.  What would be perfect, would
  3818.         be to have the ability to pop-up a question to the user asking
  3819.         what filename they wanted.  The solution is easy, insert a
  3820.         text-variable that hasn't been defined yet!  To illustrate, the
  3821.         above example could be modified to accomodate this as follows:
  3822.  
  3823.             [0:]D $?$           ... Make this the "DOWNLOAD NOW" button
  3824.  
  3825.             [1:]$?$ X           ... Radio Button #1   (X-Modem)
  3826.             [1:]$?$ Y           ... Radio Button #2   (Y-Modem)
  3827.             [1:]$?$ B           ... Radio Button #3   (Y-Modem Batch)
  3828.             [1:]$?$ Z           ... Radio Button #4   (Z-Modem)
  3829.  
  3830.             [01]FILENUM1.ZIP    ... Button to download file #1
  3831.             [01]FILENUM2.ZIP    ... Button to download file #2
  3832.             [01]FILENUM3.ZIP    ... Button to download file #3
  3833.             [01]$FILENAME$      ... Button to download ANY file
  3834.  
  3835.         The screen might appear something like this:
  3836.  
  3837.                  Protocols:                Download which file?     
  3838.                     __                        __
  3839.                    |\/|                      |  |
  3840.                    |/\| X-Modem              |  | File #1
  3841.                     --                        --
  3842.                     __                        __
  3843.                    |  |                      |\/|
  3844.                    |  | Y-Modem              |/\| File #2
  3845.                     --                        -- 
  3846.                     __                        __
  3847.                    |  |                      |  |
  3848.                    |  | Y-Modem (batch)      |  | File #3
  3849.                     --                        --  
  3850.                     __                        __
  3851.                    |  |                      |  |
  3852.                    |  | Z-Modem              |  | Enter Filename
  3853.                     --                        -- 
  3854.                                        
  3855.                                _______________________         
  3856.                               |                       |
  3857.                               |  BEGIN DOWNLOAD NOW!  |
  3858.                               |_______________________|
  3859.         
  3860.  
  3861.         Note the addition of the "Enter Filename" button.  If the user
  3862.         clicked on that button, it would first try to replace $FILENAME$
  3863.         with a text variable.  It will find that such a variable does
  3864.         not exist, and will then pop-up the following question on the
  3865.         screen:
  3866.  
  3867.                        _____________________________ 
  3868.                       |                             |
  3869.                       |       Enter "FILENAME"      |
  3870.                       |   _______________________   |
  3871.                       |  |                       |  |
  3872.                       |  |_______________________|  |
  3873.                       |                             |
  3874.                       |_____________________________|
  3875.  
  3876.  
  3877.         If the user typed in "DEMOFILE.TXT", then that filename is
  3878.         inserted where $FILENAME$ was located, then it is piped through
  3879.         template #0, resulting in:
  3880.         
  3881.         
  3882.                     D DEMOFILE.TXT
  3883.                    
  3884.                 
  3885.         The result of that is then stuffed through Template #1 which
  3886.         gives the following return string sent to the BBS:
  3887.  
  3888.  
  3889.                     D DEMOFILE.TXT Z^m
  3890.  
  3891.  
  3892.         This is only an example, your mileage may vary.
  3893.  
  3894.  
  3895.  
  3896.  
  3897.      =====================================================================
  3898.      ==                TEXT VARIABLE CREATION, AND QUERY                ==
  3899.      =====================================================================
  3900.  
  3901.      As mentioned in preceding sections, Text Variables were described
  3902.      as either "pre-defined" variables, or as "User Variables".  Pre-
  3903.      defined variables are variables that RIPscrip products know things
  3904.      about "out of the box".  They will always know what the variables
  3905.      mean, from the day you install them.  User Variables on the other
  3906.      hand, are variables that you, the user of RIPscrip products define,
  3907.      and teach the system information.
  3908.  
  3909.  
  3910.      WHAT ARE USER VARIABLES?
  3911.      ------------------------
  3912.         A User Variable is a Text Variable that RIPscrip doesn't
  3913.         already know exists.  They are custom-defined text variables
  3914.         that contain information that the RIPterm user will fill-in.
  3915.         If a variable already contains information, a BBS will be auto-
  3916.         matically told [IF TOLD TO DO SO] what that variable contains
  3917.         without the user having to intervene (i.e., transparent informa-
  3918.         tion exchange).
  3919.  
  3920.            Examples of Text Variables might be:
  3921.  
  3922.                $FULL_NAME$    ... What is your full name?
  3923.                $COMPANY_NAME$ ... What company do you work for?
  3924.                $AGE?          ... How old are you?
  3925.                $DATEOFBIRTH$  ... What is your Date of Birth?
  3926.                $PHONENUMBER$  ... What is your Day-time phone number?
  3927.  
  3928.         User Variables will "keep track" of these responses for you,
  3929.         on the Terminal program end.  You can tell the Terminal to
  3930.         store these values "permanently" in a disk-file, or they may
  3931.         be active only during the current online session, or they
  3932.         may be defined as "temporary" where they are not stored for
  3933.         more than a brief moment.  
  3934.  
  3935.         Note, this ability is configurable so that information exchange
  3936.         can be either interactive, or automatic.  Automatic transfer
  3937.         of information does NOT prompt the user with the information
  3938.         unless the variable has not yet been defined.  If it has not
  3939.         been defined, a pop-up question will appear asking the user
  3940.         a particular question, thus defining the text variable.  
  3941.         
  3942.         If the exchange is "interactive", the data is displayed in a
  3943.         pop-up editor box, asking you if the information is correct.
  3944.         If it is, simply tap <ENTER> and the retrieved information is
  3945.         sent to the BBS for you.  If it is not correct, or it has not
  3946.         been created yet, just type it in and tap <ENTER> and it will 
  3947.         be saved automatically, and sent to the BBS all at once.
  3948.  
  3949.  
  3950.      HOW CAN USER VARIABLES BE IMPORTANT?
  3951.      ------------------------------------
  3952.         Let's take an example.  Let's say you are a System Operator
  3953.         of a large RIPscrip BBS.  As you have read, RIPscrip can take
  3954.         advantage of "database like" ability on the terminal-end of
  3955.         the communication.  If you can alter your BBS to ask questions
  3956.         with RIPscrip "text variables" built in, you can have the
  3957.         terminal calling your system automatically fill-in questionaires
  3958.         on your system.  Imagine if a user could "sign-up" on your BBS
  3959.         without having to type more than a single keystroke (i.e., "YES,
  3960.         this information is correct").  With User Text Variables, you
  3961.         can do this very thing.
  3962.  
  3963.  
  3964.      CREATING USER VARIABLES
  3965.      -----------------------
  3966.         There are two ways of defining User Text Variables in RIPaint.
  3967.         You can use either "Define Text Variable" commands, or you
  3968.         can use Text Variable Queries, as described in the next
  3969.         section.
  3970.  
  3971.  
  3972.      DEFINING TEXT VARIABLES
  3973.      -----------------------
  3974.         The RIPscrip command "Define Text Variable" is by definition,
  3975.         an interactive command with the User.  The RIPscrip command
  3976.         will attempt to define a "User Variable".  This Variable is
  3977.         some piece of information that the System Operator deems 
  3978.         important.  You may specify a question, a default response,
  3979.         and how many characters long the response may be.
  3980.  
  3981.         Once the "define command" has been sent to the Terminal, it
  3982.         [the terminal] pops up an appropriate question box on the
  3983.         User's screen asking him the desired question that should be
  3984.         saved to a particular Text Variable.  If you did not specify
  3985.         a question, a suitable "default" question will be displayed.
  3986.  
  3987.         Once the User has entered his response, it is recorded and
  3988.         saved.  How long it is saved depends on how the BBS told
  3989.         the terminal.  The BBS can tell the terminal "save this
  3990.         on your hard disk forever".  The BBS may also tell the
  3991.         terminal, "don't save this to disk, but remember this value
  3992.         until your connection with our BBS is lost".  You also have
  3993.         the option of saying, "don't remember this value at all,
  3994.         just simply pop-up a question on-screen, and send the value
  3995.         to me NOW - i.e., don't save it at all - just enter it and send
  3996.         it to the BBS).
  3997.  
  3998.  
  3999.      QUERYING TEXT VARIABLES
  4000.      -----------------------
  4001.         Now that you know how to define information on the terminal,
  4002.         you need to know the last method of asking the terminal
  4003.         about text variables.  This feature is called "data query".
  4004.         
  4005.         Data Query is a generic "query" command that can ask the
  4006.         terminal one or more questions, and tell it how to transmit
  4007.         the information back to the host.  This command is for use
  4008.         in non-button situations where you do not want to wait until
  4009.         the user clicks on a button to get your data back.
  4010.  
  4011.         A Data Query is actually a special RIPscrip command that can
  4012.         be used to ask the contents of one or more Text Variables.
  4013.  
  4014.  
  4015.      EXAMPLES OF TEXT VARIABLE QUERY
  4016.      -------------------------------
  4017.        Let's take a simple example.  Let's say that you wanted to ask
  4018.        the Terminal program some address information.  You could do
  4019.        so with the following query (remember, the query also tells
  4020.        the terminal HOW to send the data back to the BBS):
  4021.  
  4022.           
  4023.           $FULL_NAME$^m$COMPANY$^m$STREET_ADDR$^m$CITY$, $STATE$ $ZIP^m
  4024.  
  4025.  
  4026.        This would query the terminal the contents of 6 text variables,
  4027.        and format them in a manner similar to any normal address on
  4028.        an envelope.  The results of this query might send the following
  4029.        back to the host (again, your mileage may vary):
  4030.  
  4031.  
  4032.           Jeff Reeder
  4033.           TeleGrafix Communications, Inc.
  4034.           16458 Bolsa Chica #15
  4035.           Huntington Beach, CA 92649
  4036.  
  4037.  
  4038.        If a text variable is queried, and it has not been defined yet,
  4039.        a pop-up question will appear asking the user to fill-in the
  4040.        information.
  4041.  
  4042.  
  4043. 
  4044.