Category : BBS Programs+Doors
Archive   : RIP.ZIP
Filename : R1.TXT

 
Output of file : R1.TXT contained in archive : RIP.ZIP


------------------------------------------
RIPscrip Graphics Protocol Specification

"Remote Imaging Protocol"

Written by Jeff Reeder and Mark Hayton
Copyright (c) 1992-1993, TeleGrafix Corporation
All Rights Reserved

Revision 1.50.02

March 1st, 1993
------------------------------------------
with editing by Bob Stein, 10/10/92




=====================================================================
== INTRODUCTION ==
=====================================================================

As system operators of many bulletin board systems, we've often
wished for some form of Graphical User Interface for our boards. Like
most Sysops, we've come across many solutions. But they all seemed
to fall short in one way or another: inadequate for THIS system,
incomplete, difficult to implement, too complex, or lacking in
graphics development tools. In short, we became frustrated.

So, we decided to write our own Graphical Script Language.

RIPscrip stands for "Remote Imaging Protocol Script" language. This
graphical language is our answer to the graphics needs of the BBS
community and has serious tools for implementation and practical use.

For more information on RIPaint, RIPterm or RIPscrip development
tools, contact:

TeleGrafix Corporation
16458 Bolsa Chica, #15
Huntington Beach, CA 92649

VOICE: (714) 846-4179
FAX : (714) 846-4189
DATA : (714) 840-3520 (ArenaBBS: The Major BBS...32 lines)



ResNova Software
16458 Bolsa Chica, #193
Huntington Beach, CA 92649

VOICE: (714) 840-6082
FAX : (714) 840-0488
DATA : (714) 840-8641 (Nova Central: Nova Link Pro...4 lines)



RIP Demo Midwest

VOICE: (708) 820-8875
DATA : (708) 978-2777 (RIP Demo Midwest BBS: TBBS...2 lines)
FAX : (708) 898-4994



=====================================================================
== DEFINITION ==
=====================================================================

RIPscrip is a text based Script language for displaying online
graphics. The script language conforms to 7-bit ASCII, avoiding the
use of Extended ASCII characters. This allows transmission over X.25
networks and other carriers that do not support full 8-bit binary
transfers easily. RIPscrip allows RIPscrip graphical statements to
be mixed with printable ASCII text and [de facto standard]
ANSI/VT-100 directives. RIPscrip can dynamically determine what is
graphics and what is text and display them appropriately in separate
windows (a graphics window and a text window). And if you must have
your own proprietary commands, RIPscrip has room for that too.





=====================================================================
== HOW DOES RIPscrip WORK? ==
=====================================================================

RIPscrip uses a flexible, and very efficient script language for its
graphical statements. Its efficiency stems from its compactness and
developmental planning. It is entirely Object Oriented instead of
Raster Oriented for efficient transmission of data and powerful
editing capabilities (using RIPaint for example). The language is
open ended enough so that literally trillions of different graphics
commands can be implemented as needed. RIPscrip is not a proprietary
protocol standard and is open to suggestion from the rest of the
world.

Earlier Graphical Script Languages (Avatar and Skypix among others),
utilize special command characters to indicate which graphics command
is to be executed. This precludes their use on systems that are
limited to ASCII printable text. Traditional script languages use
English words to accomplish things (eg, "BOX 0,0 100,50"). This kind
of thing is incredibly bulky, especially when you consider that
pictures are usually not simple things, but comprised of hundreds or
thousands of individual graphical operations (eg, line, circles,
fills, text, etc.). With this in mind, a human-readable script
language was completely inappropriate for the relatively limited
bandwidth of conventional modems.

So, one of our main strategies for this language was to make it as
efficient as possible without going completely binary. This allows
the immediate installation of the protocol onto any ASCII text-based
host system -- because the language consists entirely of ASCII
printable characters. We justify the unreadability of the language
by pointing out the limitations of today's modems and phone lines --
the language must be compact.




=====================================================================
== RIPscrip PROTOCOL - GENERAL STRUCTURE ==
=====================================================================

This document describes RIPscrip commands and functions supported
with RIPterm v1.02.

RIPscrip is organized into 10 levels of graphical commands (low
Level-0 to high Level-9). Level-0 commands are the building blocks
of RIPscrip. The basic graphics primitives of the system are all
Level-0, including the commands LINE, RECTANGLE, CIRCLE, COLOR, FONT,
etc. Each level of RIPscrip gets progressively higher-level in
concept. For example, Level-1 commands use Mouse Regions, Icons, and
Formatted Text Regions.

The basic Syntax Rules are as follows:

1. A RIPscrip command line starts at the beginning of a
line of text. A RIPscrip command line moved to the
middle of a line of text is treated as literal text.
This prevents people inserting mischievous things in
teleconference messages, or similar pranks. The only
exception to this rule is stated below under item 6,
"continuation of long lines".

2. A RIPscrip command line begins with an exclamation
mark (!)

3. Every RIPscrip command is preceded by the universal
RIPscrip delimiter, vertical-bar (|)

4. Individual RIPscrip commands may be combined on the
same line providing they are separated by the
vertical bar delimiter.

5. RIPscrip commands or command lines may be split across
multiple lines with a backslash (\) just before each
split. This helps RIPscrip commands conform to right
margins and escape word wrapping. An example:

!|c02|L02030405|P0901020102010201020102\
0102010201020102

6. RIPscrip must allow for normal text to be inter-mixed
with RIPscrip commands. If unrecognized text appears
after a RIPscrip command, on the same line, the text
is ignored (the command is not ignored). A line that
does not begin with "!|" is considered raw text and is
routed to the TTY text window (see "8" below).

7. RIPscrip makes provisions for a GRAPHICAL WINDOW and a
TEXT WINDOW. The Graphical Window is where all
RIPscrip graphics appear. the TEXT WINDOW is where
raw text appears. Raw Text includes ANSI color and
cursor movement codes (a subset of VT-100 terminal
emulation).

8. The vertical bar (|) of a RIPscrip command can be
followed by an level number. If the 1st character
after (|) is a numeric digit (1-9), then that's the
RIPscrip Command Level. If the very 1st character is
NOT a digit 1-9, then it is the command type character
and the command is a Level-0 command. If the 1st
character is a digit 1-9, and the second character is
also a digit, then that defines a sub-level of a
RIPscrip level. For example:

!|L ..... RIPscrip Level-0 Command "L"
!|1L .... RIPscrip Level-1 Command "L"
!|15L ... RIPscrip Level-1, sub-level 5 Command "L"

Each of the above examples are unique commands not to
be confused with each other. You may continue the
sub-levels up to a maximum level of 10 (eg,
!|1234567890").

9. Every RIPscrip command includes a command type
character. In Level-0 commands, this character
immediately follows the vertical bar. At all other
levels, it follows the level digits. The command type
character may be any printable non-decimal-digit
character.

10. Following the command type character are 0 or more
parameters. If the command requires a text-string, it
is always the LAST parameter. Numeric parameters DO
NOT have any delimiters (commas, dashes, spaces,
etc). A variable width numeric parameter may be used
as the last parameter. This allows for maximum
efficiency. Numbers are represented in base-36. This
compacts numbers down to roughly 3/5 of their decimal
form. This numbering system, technically called
"Hexa-Tri-Decimal", has affectionately been dubbed
"MegaNums". Unlike Hexadecimal which uses 0-9, A-F,
MegaNums take advantage of the entire alphabet, using
characters 0-9 and A-Z.

11. An exclamation mark (!) or vertical bar (|) character
can appear in a RIPscrip text parameter by preceding
it with a backslash(\). A literal backslash is
represented with a double-backslash (\\).

12. A RIPscrip sequence CAN begin in a column other than
column #0, if the exclamation mark introducer is
replaced with a CTRL-A (Start of Header SOH) character,
or CTRL-B (STX character). Since 99.9% of all BBS'es do
not allow Users to enter most control characters, users
will be unable to begin RIPscrip sequences in the middle
of a command line. Only the Host should be able to do
this. This prevents people from cluttering
teleconference, or other areas of a Host with spurious
RIPscrip sequences.





=====================================================================
== ANSI SEQUENCES ==
=====================================================================


RIPscrip predominantly uses non-ANSI command sequences. In a couple
of situations though, an ANSI sequence is allowed to perform a
specific function. There are currently three separate ANSI sequences
defined in the RIPscrip protocol to perform various actions. They
are as follows:



ESC [ ! ...... Query RIPscrip version number. RIPterm will
respond with RIPSCRIPxxyyzz where xx is equal
to the major version number (zero padded), yy
is equal to the minor version number (zero
padded), and zz equals the revision code (also
zero padded). For v1.50.00, the returned
sequence would be RIPSCRIP015000. Another
example, v1.23.45 would return RIPSCRIP012345.

ESC [ 0 ! .... Same as ESC [ ! (see above)

ESC [ 1 ! .... Disables all RIPscrip processing. Any RIPscrip
sequences are interpretted as raw text.

ESC [ 2 ! .... Enabled RIPscrip processing. Any RIPscrip
sequences will be parsed and processed.






=====================================================================
== RIPscrip COMMAND REFERENCE ==
=====================================================================

The remainder of this document details the RIPscrip command set.
Each command has these aspects:

SYMBOL - the symbolic constant that is referenced in the
RIPscrip API Library code. This is the universal
name for the command.

LEVEL - The Command Level. Sub-levels are represented
with decimal points (eg, 1.3.5 for Level-1,
Sub-level 3, Sub-Sub-level 5). This is for
discussion purposes only. The decimal points
are never part of the actual command.

COMMAND - The command type character identifying the
command

ARGUMENTS - The arguments or parameters for the command.
Commands that do not require any arguments
after the command type character are shown
here as "". Each argument is shown in
the order it appears in the command, and is
represented by a name. If an argument is
numeric, it is followed by a width specifier
indicating how many MegaNum digits the
argument consists of. (eg, ":2" means a
2-digit MegaNum, or a value between 0 and
1295). If an argument does not have a width
specifier, it is by default a text argument,
and should be the last argument on the line.
If a command is variable length (see POLYGON),
then it will appear with ellipses (...)

FORMAT - This represents the format of the command, with
the starting "!|", the level digits, the
command type character, and the argument list,
with the argument names in angle brackets.
(These arguments are spaced apart, but these
spaces never appear in the physical commands.)

EXAMPLE - An actual example of the RIPscrip command.

DRAW COLOR - If YES, then this command uses or affects the
current Drawing Color.

LINE PATRN - If YES, then this command uses or affects the
current Line Style Pattern.

LINE THICK - If YES, then this command uses or affects the
current Line Style Thickness

FILL COLOR - If YES, then this command uses or affects the
current Fill Color.

FILL PATRN - If YES, then this command uses or affects the
current Fill Pattern.

WRITE MODE - If YES, then this command will take advantage
of the current Write Mode (eg, COPY, or XOR).

FONT SIZES - If YES, then this command uses or affects the
current Font Size.





---------------------------------------------------------------------
Define the size and location of the TTY Text Window
---------------------------------------------------------------------
Symbol: RIP_TEXT_WINDOW
Level: 0
Command: w
Arguments: x0:2, y0:2, x1:2, y1:2, wrap:1, size:1
Format: !|w
Example: !|w00001B0M10
Uses Draw Color: NO
Uses Line Patrn: NO
Uses Line Thick: NO
Uses Fill Color: NO
Uses Fill Patrn: NO
Uses Write Mode: NO
Uses Font Sizes: NO

This command specifies the dimensions of the virtual TTY window that
will display all ASCII/ANSI (non-RIPscrip) data coming across the
connection. (x0,y0) defines the upper-left corner of the window in
text-based character-cell coordinates. (x1,y1) defines the
lower-right corner of the window (inclusive). There may be two
simultaneous windows on the screen, one for TTY text, and one for the
display of RIPscrip graphics (a viewport), and they may overlap.

Bytes received over the modem are first checked for RIPscrip
commands. All bytes that don't conform to the RIPscrip syntax are
treated as ANSI/ASCII and displayed in the TTY window (if defined).
User keystrokes that are echoed by the BBS would also appear in the
text window by this scheme.

The text window may be made invisible, ignoring all non-RIPscrip
bytes, by setting all RIP_TEXT_WINDOW parameters to zero (0). The X
and Y parameters ranges vary depending on the setting of the
parameter which governs the font size used for the output text. Valid
settings for the parameter and the ranges for X/Y values are
as follows:

size Font Size X Range Y Range
---------------------------------------
0 8x8 0-79 0-42
1 7x7 0-91 0-49
2 8x14 0-79 0-24
3 7x14 0-91 0-24
4 16x14 0-39 0-24

The parameter applies to both the horizontal and vertical
dimensions. If is set to 1, then any text that extends beyond
the right margin of the window will wrap to the next line of the
window, scrolling the window up if necessary. If is 0, then
any text going beyond the right margin is truncated and no scrolling
is performed; the cursor remains at the right margin.





---------------------------------------------------------------------
Define the size and location of the Graphics Window
---------------------------------------------------------------------
Symbol: RIP_VIEWPORT
Level: 0
Command: v
Arguments: x0:2, y0:2, x1:2, y1:2
Format: !|v
Example: !|v00002E1M
Uses Draw Color: NO
Uses Line Patrn: NO
Uses Line Thick: NO
Uses Fill Color: NO
Uses Fill Patrn: NO
Uses Write Mode: NO
Uses Font Sizes: NO

This command defines the (X,Y) pixel boundaries of the RIPscrip
graphics window, which will contain all RIPscrip graphics output.
ASCII/ANSI text will be displayed in the virtual TTY window defined
by the RIP_TEXT_WINDOW command above. (x0,y0) defines the upper-left
corner of the graphics viewport, and (x1,y1) defines the lower-right
corner (inclusive). The viewport may be disabled, so RIPscrip
graphics commands are ignored, by setting all parameters to zero (0).

Graphics displayed in the viewport is "truncated" at this rectangular
border, meaning if a circle would normally extend outside one of the
borders, it will be chopped, only displaying the portion of the
circle that is contained inside the viewport boundaries.

Coordinates are specified based on a 640x350 pixel resolution, meaning
X can be anywhere from 0 - 639, and Y can be anywhere from 0 - 349.
x0 must be less than x1 and y0 must be less than y1 unless all
parameters are set to zero, indicating that the graphics window is
disabled.





---------------------------------------------------------------------
Reset & Clear Graphics and Text Windows to full screen
---------------------------------------------------------------------
Symbol: RIP_RESET_WINDOWS
Level: 0
Command: *
Arguments:
Format: !|*
Example: !|*
Uses Draw Color: NO
Uses Line Patrn: NO
Uses Line Thick: NO
Uses Fill Color: NO
Uses Fill Patrn: NO
Uses Write Mode: NO
Uses Font Sizes: NO

This command will set the Text Window to a full 80x43 EGA hi-res text
mode, place the cursor in the upper left corner, clear the screen,
and zoom the Graphics Window to full 640x350 EGA screen. Both
windows are filled with the current graphics background color. Also,
all Mouse Regions are deleted and the Clipboard is erased. A system
might use this function before entering a text only mode that does
not support RIP commands. This command will also restore the default
16-color RIP palette (see RIP_SET_PALETTE below).





---------------------------------------------------------------------
Clears the Text Window to the current background color
---------------------------------------------------------------------
Symbol: RIP_ERASE_WINDOW
Level: 0
Command: e
Arguments:
Format: !|e
Example: !|e
Uses Draw Color: NO
Uses Line Patrn: NO
Uses Line Thick: NO
Uses Fill Color: NO
Uses Fill Patrn: NO
Uses Write Mode: NO
Uses Font Sizes: NO

This clears the TTY text window to the current graphics background
color and positions the cursor in the upper-left corner of the
window. If the text window is inactive, then this command is
ignored. If the text and graphics windows overlap, then this command
will clear the overlapping portion also.





---------------------------------------------------------------------
Clears the Graphics Window to the current background color
---------------------------------------------------------------------
Symbol: RIP_ERASE_VIEW
Level: 0
Command: E
Arguments:
Format: !|E
Example: !|E
Uses Draw Color: NO
Uses Line Patrn: NO
Uses Line Thick: NO
Uses Fill Color: NO
Uses Fill Patrn: NO
Uses Write Mode: NO
Uses Font Sizes: NO

This command clears the Graphics Viewport to the current graphics
background color. If the graphics viewport is not active (if the
boundaries are 0,0,0,0), then this command is ignored. If the text
and graphics windows overlap, then this command will clear the
overlapping portion also.





---------------------------------------------------------------------
Move the Text (TTY) cursor to given row & column in the text window
---------------------------------------------------------------------
Symbol: RIP_GOTOXY
Level: 0
Command: g
Arguments: x:2, y:2
Format: !|g
Example: !|g0509
Uses Draw Color: NO
Uses Line Patrn: NO
Uses Line Thick: NO
Uses Fill Color: NO
Uses Fill Patrn: NO
Uses Write Mode: NO
Uses Font Sizes: NO

This command sets the position of the text cursor in the TTY Text
window, if it is active. If inactive (if the dimensions are
0,0,0,0), then this command is ignored. This command is equivalent
to the ANSI/VT-100 command goto x/y, [x;yH, except that the
coordinates of that ANSI command are 1-based and the coordinates of
this RIPscrip command are 0-based.





---------------------------------------------------------------------
Move the cursor to the Upper-Left corner of the Text Window
---------------------------------------------------------------------
Symbol: RIP_HOME
Level: 0
Command: H
Arguments:
Format: !|H
Example: !|H
Uses Draw Color: NO
Uses Line Patrn: NO
Uses Line Thick: NO
Uses Fill Color: NO
Uses Fill Patrn: NO
Uses Write Mode: NO
Uses Font Sizes: NO

This command positions the text cursor to the upper-left corner in
the TTY Text Window, if it is active.





---------------------------------------------------------------------
Erase the current text line from the cursor to the end of line
---------------------------------------------------------------------
Symbol: RIP_ERASE_EOL
Level: 0
Command: >
Arguments:
Format: !|>
Example: !|>
Uses Draw Color: NO
Uses Line Patrn: NO
Uses Line Thick: NO
Uses Fill Color: NO
Uses Fill Patrn: NO
Uses Write Mode: NO
Uses Font Sizes: NO

This command will erase the current text line in the TTY text window
from the current cursor location (inclusive) to the end of the line.
The erased region is filled with the current graphics background
color. This differs from the ANSI command ESC[K which clears the
area with the current ANSI background color.





---------------------------------------------------------------------
Set the current drawing color for graphics primitives
---------------------------------------------------------------------
Symbol: RIP_COLOR
Level: 0
Command: c
Arguments: color:2
Format: !|c
Example: !|cA
Uses Draw Color: YES
Uses Line Patrn: NO
Uses Line Thick: NO
Uses Fill Color: NO
Uses Fill Patrn: NO
Uses Write Mode: NO
Uses Font Sizes: NO

This command sets the color for drawing lines, circles, arcs,
rectangles, and other graphics primitives, as well as the color for
drawing grahics-text from the RIP_TEXT class of commands (not from
ASCII/ANSI text). This command does not affect Fill colors or Fill
Patterns (see below). It does affect the borders of graphic objects,
for example the border of an ellipse drawn with the RIP_FILLED_OVAL
command. (The interior of the ellipse would be drawn according to
the most recent RIP_FILL_STYLE command.)

This command chooses one of the colors of the 16-color RIP palette
defined by the RIP_SET_PALETTE command. Here is the default 16-color
RIP palette:

VALUE ... COLOR
-------------------------------------
00 ... Black (00 is always the background color)
01 ... Blue
02 ... Green
03 ... Cyan
04 ... Red
05 ... Magenta
06 ... Brown
07 ... Light Gray
08 ... Dark Gray
09 ... Light Blue
0A ... Light Green
0B ... Light Cyan
0C ... Light Red
0D ... Light Magenta
0E ... Yellow
0F ... White





---------------------------------------------------------------------
Set the 16-color RIP palette from the master 64-color EGA palette
---------------------------------------------------------------------
Symbol: RIP_SET_PALETTE
Level: 0
Command: Q
Arguments: c1:2, c2:2, ... c16:2
Format: !|Q ...
Example: !|Q000102030405060708090A0B0C0D0E0F
Uses Draw Color: YES
Uses Line Patrn: NO
Uses Line Thick: NO
Uses Fill Color: NO
Uses Fill Patrn: NO
Uses Write Mode: NO
Uses Font Sizes: NO

This command modifies the 16-color RIP palette by choosing from the
64 colors in the master EGA palette. This allows you to alter the
colors in your RIPscrip graphics scenes. Once a Set Palette command
is processed, any colors on the screen that had their corresponding
palette entries changed will instantly switch to the new color set.
You may obtain color "cycling" effects by using this command. The
default 16-color RIP palette is always restored when a
RIP_RESET_WINDOWS command is encountered. The default 16-color RIP
palette is as follows:

MASTER
16-COLOR 64-COLOR
RIP PALETTE EGA PALETTE
COLOR-CODE COLOR-CODE COLOR
-------------------------------------------------------
00 0 (00) Black
01 1 (01) Blue
02 2 (02) Green
03 3 (03) Cyan
04 4 (04) Red
05 5 (05) Magenta
06 7 (06) Brown
07 20 (0K) Light Gray
08 56 (1K) Dark Gray
09 57 (1L) Light Blue
0A 58 (1M) Light Green
0B 59 (1N) Light Cyan
0C 60 (1O) Light Red
0D 61 (1P) Light Magenta
0E 62 (1Q) Yellow
0F 63 (1R) White

Color 00 of the 16-color RIP palette is always the background color
(which is typically Black, or color 00 of the 64-color EGA palette).






---------------------------------------------------------------------
Set one color of the 16-color RIP palette from the Master Palette
---------------------------------------------------------------------
Symbol: RIP_ONE_PALETTE
Level: 0
Command: a
Arguments: color:2 value:2
Format: !|a
Example: !|a051B
Uses Draw Color: YES
Uses Line Patrn: NO
Uses Line Thick: NO
Uses Fill Color: NO
Uses Fill Patrn: NO
Uses Write Mode: NO
Uses Font Sizes: NO

This command modifies one color in the 16-color RIP palette. The
Color number is sent along with the a color value from the Master
Color Palette to set the new color to. The color must be
in the range of 0-63 to allow access to the 64 colors in the master
EGA palette. This allows you to alter the colors in your RIPscrip
graphics scenes. Once a Set One Palette command is processed, any
colors on the screen that correspond to the number will be
changed instantly to the new color value. You may obtain color
"cycling" effects by using this command. The default 16-color RIP
palette is always restored when a RIP_RESET_WINDOWS command is
encountered. The default 16-color RIP palette is as follows:

MASTER
16-COLOR 64-COLOR
RIP PALETTE EGA PALETTE
COLOR-CODE COLOR-CODE COLOR
-------------------------------------------------------
00 0 (00) Black
01 1 (01) Blue
02 2 (02) Green
03 3 (03) Cyan
04 4 (04) Red
05 5 (05) Magenta
06 7 (06) Brown
07 20 (0K) Light Gray
08 56 (1K) Dark Gray
09 57 (1L) Light Blue
0A 58 (1M) Light Green
0B 59 (1N) Light Cyan
0C 60 (1O) Light Red
0D 61 (1P) Light Magenta
0E 62 (1Q) Yellow
0F 63 (1R) White

Color 00 of the 16-color RIP palette is always the background color
(which is typically Black, or color 00 of the 64-color EGA palette).





---------------------------------------------------------------------
Set Drawing Mode for graphics primitives
---------------------------------------------------------------------
Symbol: RIP_WRITE_MODE
Level: 0
Command: W
Arguments: mode:2
Format: !|W
Example: !|W00
Uses Draw Color: NO
Uses Line Patrn: NO
Uses Line Thick: NO
Uses Fill Color: NO
Uses Fill Patrn: NO
Uses Write Mode: YES
Uses Font Sizes: NO

This command sets the current drawing mode for most of the graphics
primitives:

mode = 00 ... Normal drawing mode (overwrite)
= 01 ... XOR (complimentary) mode

In normal mode, things are drawn in the current drawing color over
top of whatever is in the graphics viewport. This is the typical
mode of operation in a GUI environment.

In the XOR mode, instead of changing each pixel to the current
drawing color, the pixel is inverted (black changes to white, red to
green, etc.). Drawing the same item a second time erases it
completely. This mode is useful for drawing something temporarily,
or for animation. The Rubber Band mode of most paint programs uses a
mode like this.





---------------------------------------------------------------------
Move the current drawing position to (X,Y)
---------------------------------------------------------------------
Symbol: RIP_MOVE
Level: 0
Command: m
Arguments: x:2, y:2
Format: !|m
Example: !|m0509
Uses Draw Color: NO
Uses Line Patrn: NO
Uses Line Thick: NO
Uses Fill Color: NO
Uses Fill Patrn: NO
Uses Write Mode: NO
Uses Font Sizes: NO

This command moves the current graphics drawing cursor to (x,y). You
could use this to draw text at a certain point, but you'd probably
use RIP_TEXT_XY instead. This command is primarily provided for
future development which will make use of its ability to relocate the
current drawing position without physically drawing anything.





---------------------------------------------------------------------
Draw Text in current Font/Size/Color at current location
---------------------------------------------------------------------
Symbol: RIP_TEXT
Level: 0
Command: T
Arguments: text-string
Format: !|T
Example: !|Thello world
Uses Draw Color: YES
Uses Line Patrn: NO
Uses Line Thick: NO
Uses Fill Color: NO
Uses Fill Patrn: NO
Uses Write Mode: YES
Uses Font Sizes: YES

This command displays text at the current location in the graphics
window, as set with the RIP_MOVE command. The text is also affected
by the most recent settings of these commands:

RIP_FONT_STYLE - font style (character set, direction, size)
RIP_WRITE_MODE - drawing mode (normal or XOR)
RIP_COLOR - drawing color (from the 16-color RIP palette)

The drawing position is placed at the end of the last character
drawn.

The current drawing position is set immediately to the right of the
drawn text. Subsequent Line, Circle or other such commands will not
affect this position. This provides a means so that you can quickly
do another RIP_TEXT command (presumably in another color) at a later
time and have the text show up immediately after the previous text.





---------------------------------------------------------------------
Draw Text in current Font/Size/Color at specific location
---------------------------------------------------------------------
Symbol: RIP_TEXT_XY
Level: 0
Command: @
Arguments: x:2, y:2 and text-string
Format: !|@
Example: !|@0011hello world
Uses Draw Color: YES
Uses Line Patrn: NO
Uses Line Thick: NO
Uses Fill Color: NO
Uses Fill Patrn: NO
Uses Write Mode: YES
Uses Font Sizes: YES

This command is an efficient combination of RIP_MOVE and RIP_TEXT.
The text is drawn at the specified location according to the same
settings as apply to RIP_TEXT (see above).

The current drawing position is set immediately to the right of the
drawn text. Subsequent Line, Circle or other such commands will not
affect this position. This provides a means so that you can quickly
do another RIP_TEXT command (presumably in another color) at a later
time and have the text show up immediately after the previous text.





---------------------------------------------------------------------
Select the current Font Style, Orientation and Size
---------------------------------------------------------------------
Symbol: RIP_FONT_STYLE
Level: 0
Command: Y
Arguments: font:2, direction:2, size:2, res:2
Format: !|Y
Example: !|Y01000400
Uses Draw Color: NO
Uses Line Patrn: NO
Uses Line Thick: NO
Uses Fill Color: NO
Uses Fill Patrn: NO
Uses Write Mode: NO
Uses Font Sizes: YES

This command sets the current font, direction and size for subsequent
RIP_TEXT commands.

FONT
---------------------------------------------------------
00 ... Default 8x8 font (bit-mapped)
01 ... Triplex Font (scalable)
02 ... Small Font (scalable)
03 ... Sans Serif Font (scalable)
04 ... Gothic [old English] Font (scalable)

DIRECTION
---------------------------------------------------------
00 ... Horizontal direction
01 ... Vertical direction

SIZE
---------------------------------------------------------
01 ... Normal, default size
02 ... Magnification factor 2 ( x2)
03 ... Magnification factor 3 ( x3)
04 ... Magnification factor 4 ( x4)
05 ... Magnification factor 5 ( x5)
06 ... Magnification factor 6 ( x6)
07 ... Magnification factor 7 ( x7)
08 ... Magnification factor 8 ( x8)
09 ... Magnification factor 9 ( x9)
0A ... Magnification factor 10 (x10)

NOTE: The Default 8x8 font is bit-mapped and appears best when drawn
with size=1. If you use a size greater than one, the individual
pixels making up the font are magnified, giving a jagged look. This
may or may not be a desirable effect. The Scalable Fonts (1-4) are
smooth scalable "vector" fonts. The two byte parameter is a
RESERVED parameter that is intended for future development.





---------------------------------------------------------------------
Draws a single pixel on the screen using current drawing color
---------------------------------------------------------------------
Symbol: RIP_PIXEL
Level: 0
Command: X
Arguments: x:2, y:2
Format: !|X
Example: !|X1122
Uses Draw Color: YES
Uses Line Patrn: NO
Uses Line Thick: NO
Uses Fill Color: NO
Uses Fill Patrn: NO
Uses Write Mode: NO
Uses Font Sizes: NO

This command will draw a single pixel in the current drawing color at
the given (x,y) graphics position. This command is included for
completeness, but in practice it would be extremely inefficient to
make much use of it.





---------------------------------------------------------------------
Draw a line in the current color and line style/thickness
---------------------------------------------------------------------
Symbol: RIP_LINE
Level: 0
Command: L
Arguments: x0:2, y0:2, x1:2, y1:2
Format: !|L
Example: !|L00010A0E
Uses Draw Color: YES
Uses Line Patrn: YES
Uses Line Thick: YES
Uses Fill Color: NO
Uses Fill Patrn: NO
Uses Write Mode: YES
Uses Font Sizes: NO

This command will draw a line in the current drawing color, using the
current line style, pattern and thickness. The line is drawn from
(x0,y0) to (x1,y1) in the graphics viewport.





---------------------------------------------------------------------
Draw a rectangle in the current color and line style/thickness
---------------------------------------------------------------------
Symbol: RIP_RECTANGLE
Level: 0
Command: R
Arguments: x0:2, y0:2, x1:2, y1:2
Format: !|R
Example: !|R00010A0E
Uses Draw Color: YES
Uses Line Patrn: YES
Uses Line Thick: YES
Uses Fill Color: NO
Uses Fill Patrn: NO
Uses Write Mode: YES
Uses Font Sizes: NO

This command draws a rectangle in the current drawing color, using
the current line style, pattern and thickness. (x0,y0) and (x1,y1)
are any two opposing corners of the rectangle. If x0=x1 or y0=y1
then the command will draw a single vertical or horizontal line. The
rectangle interior is not filled by RIP_RECTANGLE.





---------------------------------------------------------------------
Draws a solid, filled rectangle using current fill color and pattern
---------------------------------------------------------------------
Symbol: RIP_BAR
Level: 0
Command: B
Arguments: x0:2, y0:2, x1:2, y1:2
Format: !|B
Example: !|B00010A0E
Uses Draw Color: NO
Uses Line Patrn: NO
Uses Line Thick: NO
Uses Fill Color: YES
Uses Fill Patrn: YES
Uses Write Mode: NO
Uses Font Sizes: NO

This command fills a rectangular region with the current fill color
and pattern. No border is drawn.





---------------------------------------------------------------------
Draw a circle in the current color and line thickness (no style)
---------------------------------------------------------------------
Symbol: RIP_CIRCLE
Level: 0
Command: C
Arguments: x_center:2, y_center:2, radius:2
Format: !|C
Example: !|C1E180M
Uses Draw Color: YES
Uses Line Patrn: NO
Uses Line Thick: YES
Uses Fill Color: NO
Uses Fill Patrn: NO
Uses Write Mode: NO
Uses Font Sizes: NO

This command draws a circle in the current drawing color and line
thickness. The is in pixel units. This command understands
aspect ratios and will draw a truly circular circle instead of an
oblong circle (ellipse) like on other graphics systems. The aspect
ratio is currently based on the EGA 640x350 resolution and is
understood by both the GUI designer and the Terminal Program. This
command does not take advantage of line patterns, but does use the
line thickness setting. In other words, you can draw a circle with a
thick or a thin border, but not a dashed or dotted border.





---------------------------------------------------------------------
Draw an elliptical arc in the current color and line thickness
---------------------------------------------------------------------
Symbol: RIP_OVAL
Level: 0
Command: O
Arguments: x:2, y:2, st_ang:2, end_ang:2, x_rad:2, y_rad:2
Format: !|O
Example: 1E1A18003G150Z
Uses Draw Color: YES
Uses Line Patrn: NO
Uses Line Thick: YES
Uses Fill Color: NO
Uses Fill Patrn: NO
Uses Write Mode: NO
Uses Font Sizes: NO

This command draws an elliptical arc similar to the circular RIP_ARC
command. The center of the ellipse is (x,y) and the arc is
drawn starting from and proceeding counterclockwise to
(see RIP_ARC above for details).

The X radius is half the full width of the ellipse, the Y radius is
half the full height. The ellipse is drawn according to the current
line thickness, but the current line pattern has no effect.





---------------------------------------------------------------------
Draws a filled ellipse using the current fill and drawing color
---------------------------------------------------------------------
Symbol: RIP_FILLED_OVAL
Level: 0
Command: o
Arguments: x_center:2, y_center:2, x_rad:2, y_rad:2
Format: !|o
Example: !|o1G2B0M0G
Uses Draw Color: YES
Uses Line Patrn: NO
Uses Line Thick: YES
Uses Fill Color: YES
Uses Fill Patrn: YES
Uses Write Mode: NO
Uses Font Sizes: NO

This command draws a complete filled ellipse on the screen. The
interior of the ellipse is drawn using the current fill pattern and
fill color. The outline of the ellipse is drawn using the current
drawing color and line thickness.







  3 Responses to “Category : BBS Programs+Doors
Archive   : RIP.ZIP
Filename : R1.TXT

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/