                                   MENUSHOW

I. WHAT IT IS:

   MENUSHOW is a menu generator which uses an user created ASCII file as input
to display a menu according to the items in the ASCII file.

II. HOW IT WORKS:

    The user creates an ASCII file using MENUMAKE, EDLIN or any word processor
in text mode, or even  COPY CON...  Each line of this ASCII file is a command
which MENUSHOW interprets and acts upon, displaying a menu.  The menu contains
text, date, day and time (optionally), a title, remarks, items for selection.
The user can specify the background color, and the foreground/background
colors for any items for selection, remarks, title, line numbers, date/day,
time and question at the end asking the user to make a choice.

III. ITS MECHANICS:

     The user writes his/her ASCII file and then calls  MENUSHOW, followed by
the name of this ASCII file.  Thus,

                              MENUSHOW ASCIIFILE

MENUSHOW then reads each line of the ASCII file and produces from it a menu.
The number of items is limited to what will fit on the screen, but multiple
screens can be programmed.  Each item for selection is numbered so that the
user can select it by number. Associated with each item is a program to be run
when that item number is chosen.  MENUSHOW keeps track of how many items there
are and sounds a warning if the user trys to select an item not on the screen.

   The following commands are recognized, all of which may be abbreviated to a
single letter except DATE, DAY, and TIME.  Each must be separated from the
arguments that follow by at least one space.  They are listed alphabetically
for easy reference.  Arguments enclosed in parentheses are optional.

------------------------------------------------------------------------------
@row.column (STEP value)

   This sets the current row and the permanent column. The row is increased by
STEP value each time an item is printed to the screen. The column, however,
remains the same.  BOTH row and column can be changed separately (see +, -,
ADJUST.COLUMN).  However, to change 'STEP value' this must be used again.  ROW
is an integer from 1 to 24; column is a decimal from .1 to .80.  STEP value is
optional and defaults to 1.

   Thus '@3.23 STEP 2' sets the current row to 3 and the permanent column to
23 and the STEP value to 2.
------------------------------------------------------------------------------
+  This increases the row by STEP.  It is the only thing on the line.
------------------------------------------------------------------------------
-  This decreases the row by STEP.  It is the only thing on the line.
------------------------------------------------------------------------------



                                           1 
MENUSHOW continued:

ADJUST.COLUMN value

   This allows the permanent column setting to be adjusted by either increas-
ing or decreasing its position by the value following the word ADJUST.COLUMN.
Thus,

   ADJUST.COLUMN 5  (or A 5) increases the column position by 5; (if it were
                    at 20, it would now be at 25);

   ADJUST.COLUMN -3 (or A -3) decreases the column position by 3; (if it were
                    at 20, it would now be at 17).
------------------------------------------------------------------------------

BACKGROUND color.number

   If this is the first command in the ASCII file, it changes the background
color to 'color.number' and then clears the screen to this color.  If it
occurs other than the first item, it simply changes the background color. The
default color is black (0).

   Color is indicated by a number from 0 (black) to 7 (white) following the
space that follows the word BACKGROUND or its abbreviated form B.  Thus 'B 5'
uses magenta background.

   The color numbers for background are:

                  0 - black         4 - red
                  1 - blue          5 - magenta
                  2 - green         6 - brown
                  3 - cyan          7 - white

   The color numbers for foreground (for those commands using foreground) are:

                  0 - black         8 - gray
                  1 - blue          9 - lite blue
                  2 - green        10 - lite green
                  3 - cyan         11 - lite cyan
                  4 - red          12 - lite red
                  5 - magenta      13 - lite magenta
                  6 - brown        14 - yellow
                  7 - white        15 - brite white
------------------------------------------------------------------------------

COLOR.BOX colors (FILL)

   This allows the user to specify the colors of the lines that compose the
box.  The foreground is indicated by an integer value, the background by a
decimal value.  Thus, 'C 14.1' will produce, when DOUBLE.BOX, SINGLE.BOX or
LINE.BOX is called, a box whose lines are yellow on blue. If the optional FILL
is used, the box just made is filled with spaces in the foreground/background
specified.
------------------------------------------------------------------------------


                                           2 
MENUSHOW - continued:

DATE (colors)

   This displays the system date in the upper left hand corner in the format
08/16/88. If the upper left corner (1,1) is not a space, it is displayed at
row 2, columns 2 thru 9.  This allows a box to completely surround the screen
and still have the date appear.  DATE cannot be abbreviated.  It can be
followed by the foreground and background colors, expressed as an integer and
decimal.  The default colors are lite blue (9) on the color specified by
BACKGROUND.  Thus, 'DATE 4.7' will display the date in red on white.  When
used with DAY, it must come BEFORE the DAY command.  If DATE does not appear
as one of the items in the ASCII file, no date is displayed.
------------------------------------------------------------------------------

DAY (colors)

   This displays the DAY OF THE WEEK in the upper left corner, or if the date
is there, after the date in abbreviated form. ts colors can be specified.
The default colors are lite blue (9) on the color specified by BACKGROUND. DAY
cannot be abbreviated. Thus, 'DAY 14.0' displays the day of the week in yellow
on black. It MUST FOLLOW DATE if DATE is used.  If DAY does not appear as one
of the items in the ASCII file, DAY will not be displayed.
------------------------------------------------------------------------------

DOUBLE.BOX length.width

   This will display a double lined box, starting at the cursor position.  The
box's length downward, in lines, is specified by the integer value following
the space following DOUBLE.BOX (or its abbreviated D) and the width, in column
positions, is specified by the decimal value.  Thus 'D 3.30' specifies a
double lined box of 3 rows and 30 columns, starting at the current row and
column. The current row and permanent column are increased by 1.
------------------------------------------------------------------------------

EDGE value

   This colors the border the indicated color.  The colors for BACKGROUND are
the same for the EDGE around the screen.
------------------------------------------------------------------------------

ITEM string

   This specifies one of the items to be selected by the user. This is one of
the menu choices.  It is displayed at the current row and column, preceded by
an increasing item number for easy reference.  Its default color is lite green
on the color specified by BACKGROUND.  Any part of the ITEM can be displayed
in any foreground/background color.  This is accomplished by specifying the
foreground by an integer value, the background by a decimal value, BOTH
SURROUNDED by square brackets.  Thus, 'ITEM [6.0]ADD a RECORD' will be dis-
played in brown (6) on black (0).  Any part can be made to blink by adding the
letter 'b' or 'B' within the square brackets, after the color numbers.  Thus
'ITEM [6.0B]ADD [6.0]a record'  displays 'ADD' blinking  and the rest not
blinking, all in brown on black.


                                           3 
MENUSHOW - continued:

ITEM continued:

   If any part of the ITEM has a natural delimiter (a comma or colon), the
whole thing MUST be enclosed in DOUBLE QUOTES.  Thus,

                     "ITEM View, Modify, Remove a record"
------------------------------------------------------------------------------

LINE.BOX length.width

   This will display a lined box, starting at the cursor position.  The box's
length downward, in lines, is specified by the integer value following the
space following LINE.BOX (or its abbreviated L) and the width, in column
positions, is specified by the decimal value.  Thus 'L 3.30' specifies a
double lined box of 3 rows and 30 columns, starting at the current row and
column. The current row and permanent column are increased by 1.
----------------------------------------------------------------------------

NUMBER colors

   This sets the foreground and background colors of the item numbers that
precede each item for selection.  The default colors are white(7) on the color
specified by BACKGROUND.  Thus, 'N 12.1'  sets the item numbers to lite red on
blue.
------------------------------------------------------------------------------

PROGRAM program.name

   Associated with each item for selection should be a program that will be
executed when that choice is made.  This should be the NEXT LINE in the ASCII
file following the ITEM to which it is associated.  It may include a FULL or
PARTIAL PATH.  Thus

                          PROGRAM C:\GARDS\GARDMENU

specifies a full path name.  It is to be noted that MENUSHOW changes the dir-
ectory if need be, to that specified in program.name.  The program's data
files must reside in the SAME directory as the program.  After the program has
been executed and exited, MENUSHOW will again be displayed.  In other words,
once called, MENUSHOW stays resident until exited by the ESC key.
------------------------------------------------------------------------------

QUESTION colors

   When all choices and remarks are displayed, the last line of the screen
will display

                         key ITEM NO. of your choice

and await the user's response.  He/she must respond with an item number that
is displayed or a warning sound will be given. To escape from the menu, he/she
must press  ESC.


                                           4 
MENUSHOW continued:

QUESTION continued:

   The words 'key' and 'of your choice' are displayed in red on the color
specified by BACKGROUND.  The words 'ITEM NO.' are always displayed in brite
white (15) on the color specified by BACKGROUND.  The user can change the
colors of 'key' and 'of your choice' by specifying the foreground as an
integer and the background as a decimal value.  If the letter 'b' or 'B'
follows, the words 'ITEM NO.' will blink, not the words 'key' and 'of your
choice'.  Thus,

                                QUESTION 14.4B

displays 'key' and 'of your choice' in yellow on red; the words 'ITEM NO.' in
brite white, blinking.
------------------------------------------------------------------------------

REMARK string

   This allows remarks, that is, any text not an item for selection, to be
displayed at the current row and permanent column.  These are specified by the
word 'REMARK' followed by the string containing the remark.  The default
colors are cyan (3) on the color specified by BACKGROUND. By adding 5 spaces
after REMARK (or its abbreviated R), a sub-title is produced.  If ASC(xxx\xxx.
..) or asc(xxx\xxx...) follows REMARK, then the CHR$ of xxx is printed.  Any
number of ASCII characters can be specified, but must be separated by "\".
The programmer can specify the colors of any part of the remark by placing the
colors inside square brackets.  The foreground color is specified by an
integer, the background as a decimal value.  Blinking is indicated by the
letter 'b' or 'B' following the colors, also within square brackets.  However,
only one such color can be specified when ASC(xxx\xxx...) is used. Example:

                   REMARK [6.1b]Listings [6.1]and Printings

displays 'Listings' blinking and 'and Printings' not, all in brown (6) on blue
(1).
                                   ed keck
   If any part of the REMARK has a natural delimiter (a comma or colon), the
whole thing MUST be enclosed in double quotes. Thus,

                    "REMARK View, Modify, Remove a Record"

------------------------------------------------------------------------------
SINGLE.BOX length.width

   This will display a single lined box, starting at the cursor position.  The
box's length downward, in lines, is specified by the integer value following
the space following SINGLE.BOX (or its abbreviated S) and the width, in column
positions, is specified by the decimal value.  Thus 'S 3.30' specifies a
single lined box of 3 rows and 30 columns, starting at the current row and
column. The current row and permanent column are increased by 1.
------------------------------------------------------------------------------



                                           5 
MENUSHOW continued:

TITLE string

   This is meant to specify the screen title, which is displayed CENTERED on
the current row.  Its default colors are lite magenta on black.  However, it
can be called more than once whenever a remark is to be centered. Like REMARK,
any part of the 'string' can be displayed in any colors.  These are specified
by an integer for the foreground color and a decimal for the background color,
enclosed in square brackets. 'B' or 'b' following the colors specifies blink-
ing.

   Thus,

                          TITLE [4.1b]P[4.1]ayables

displays 'Payables' in red on blue, with the letter 'P' blinking.

   If any part of the TITLE has a natural delimiter (a comma or colon), the
whole thing must be enclosed in double quotes.  Thus,

                    "TITLE Listings, Printings and Labels"
------------------------------------------------------------------------------

TIME (colors)

   This displays the system time in the upper right hand corner in the format
hh:mm:ss, with the seconds ticking away.  If the upper right hand corner does
not have a space (presumably part of a box), it is displayed down one line and
one position to the left, that is, at row 2, columns 72 thru 79.  This allows
a box to completely surround the menu and still have the TIME and DATE and DAY
in the upper corners.

   TIME cannot be abbreviated.  The 'colors' argument is optional.  The
default colors are lite blue (9) on the color specified by BACKGROUND. The
user can specify different colors. The foreground color is specified by an
integer, the background color by a decimal value.  Thus,

                                  TIME 14.1

displays the system time in yellow (14) on blue (1).

   If TIME does not appear in the ASCII file, no time is displayed.
------------------------------------------------------------------------------












                                           6 
MENUSHOW continued:

IV. MENUMAKE

    This is a program that allows the programmer to create the ASCII file
required by FIMAMENU.  It allows up to 100 entries per ASCII file.  Each entry
can be up to 75 characters long. The user enters the program by

                                   MENUMAKE

                                      or

                           MENUMAKE ASCII.file.name

If the first form is used, MENUMAKE will ask for the name of the ASCII file.
In either case, if the file is found it is displayed for editing; otherwise
a new file is created.

    The programmer then enters on each line, one cammand to produce the menu.
Altho blank lines may be entered, they will be deleted when saved and reloaded
for editing.

    Each line is numbered for easy reference. A legend at the bottom of the
screen helps while creating or editing the menu items. Within each line the
following editing features are available:

    BackSpace - which backspaces one character, replaces it with a space.
    Ins       - which inserts a space at the cursor position.
    Del       - which deletes the character at the cursor position, moving all
                subsequent characters to the left one position.
    Tab       - which moves the cursor to the right 10 spaces.
    ALT E     - which erases the rest of the line from the current cursor
                position,
    ALT I     - which enters INSERT MODE, moving all characters at and to the
                right of the cursor to the right to the right margin.  The
                shape of the cursor splits in two to indicate insert mode.
                If a non-space is attempted to be overwritten while in INSERT
                MODE, a sound sounds and no further input is allowed.  Press-
                ing ALT I a second time, leaves INSERT MODE and returns to
                OVER-STRIKE MODE.
    HOME      - move cursor to beginning of text.
    END       - move cursor to end of text.
    CTL HOME  - restore original contents of line.
    UP ARROW  - move to prior line
    DOWN ARROW  move to next line
    PgUp      - move to prior group of 20.
    PgDn      - move to next group of 20.
    CTL PgDn  - end input - save ASCII file.
    ENTER     - ends the input.

    ESC       - ends session WITHOUT saving ASCII file.





                                           7 
MENUSHOW continued:

V. SUMMARY

FUNCTION                                     MEANING
------------------------------------------------------------------------------
@row.col STEP value                        - set row and column and STEP
+                                          - increase row by one
-                                          - decrease row by one
ADJUST.COLUMN value                        - increase/decrease column by value

BACKGROUND color-number                    - set background color
EDGE color-number                          - display border in color-number

COLOR.BOX foreground.background (fill)     - set box colors (and fill)
DOUBLE.BOX length-in-rows.width-in-columns - display double lined box
LINE.BOX length-in-rows,width-in-columns   - display lined box
SINGLE.BOX length-in-rows.width-in-columns - display single lined box

DATE (foreground.background)               - display date (optional colors)
DAY (foreground.background)                - display day (optional colors)
TIME (foreground.background)               - display ticking time in optional
                                                     colors
TITLE string                               - display title centered
REMARK string (or ASC(xxx\xxx...)          - display a remark or CHR$(xxx\...)
NUMBER foreground.background               - change colors of numbered items
ITEM string                                - item for selection
PROGRAM program.name (with optional path)  - name program to run for ITEM

QUESTION foreground.background (B)         - change colors of 'key ITEM NO...'
                                                    with optional BLINK.



















N.B.  DATE, DAY and TIME cannot be abbreviated; all others can.
      ITEM, REMARK and TITLE can have embedded colors in format [foreground.
            backgroundB] for every letter or word.
      () indicate optional values.


                                           8 
