home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Media Share 9
/
MEDIASHARE_09.ISO
/
utility
/
mnubt222.zip
/
MENUBOOT.DOC
< prev
next >
Wrap
Text File
|
1992-06-23
|
26KB
|
735 lines
MENUBOOT.SYS V2.2
(c) 1992 P. Appleton
Page 2
Contents
Introduction.................................................3
Registration / License agreement.............................4
Installation.................................................5
Basic usage..................................................5
Multiple menus...............................................8
Use of the 'SET' command.....................................9
Use of the ON and OFF commands..............................11
Appendix 1 - New DEVICE statements..........................12
Appendix 2 - Error messages.................................14
Appendix 3 - System requirements / known problems...........15
Revision history............................................15
Disclaimer..................................................16
Page 3
Introduction
With the variety of modern software and hardware now available,
inevitably conflicts arise between the configurations required
for different programs. MS-DOS only allows for one
configuration file to be present, and hence can lead to some
extraordinary manipulations using batch files to allow
configurable rebooting.
MENUBOOT is a device driver which adds new commands to your
CONFIG.SYS file enabling you to simply and easily build custom
menus, obviating the requirement to swap configuration files.
Commands are provided to allow the user's choice to be saved for
later use by other programs or AUTOEXEC.BAT. The following
features are provided:
Up to 20 options per menu.
Up to 255 menus (!).
User-defined menus, with selection by cursor keys or initial
letter.
Optional default and/or timeout for each menu
User definable colours
Cursor positioning commands
Box drawing commands
Uses typically 112-130 bytes of memory
Ability to communicate with other programs via environment variables
Page 4
Registration / License agreement
MENUBOOT.SYS is shareware. That means that you are permitted to
use a unregistered copy freely for a 'reasonable time', and to
freely distribute unregistered copies, provided that all the
files making up this package are included and that MENUBOOT.SYS
is not bundled with any other package or product whatsoever.
You may not, for any reason whatsoever, distribute, sell, lend
or otherwise transfer or permit to be transferred any registered
copy of MENUBOOT.SYS, nor may you charge for an unregistered
copy apart from a nominal fee to cover the costs of duplication,
distribution and handling. You are not permitted to
disassemble, decrypt or modify MENUBOOT.SYS or any portion
thereof. No registered copy of MENUBOOT.SYS may be installed on
more than one computer, unless there is NO possibility that two
or more of these computers may be running at the same time. If
you use MENUBOOT.SYS after a short (1 month) trial period, you
MUST register. MENUBOOT.SYS shall remain at all times the
property of the author; you are permitted a limited license to
use MENUBOOT.SYS. By installing MENUBOOT.SYS onto your machine
you indicate your acceptance of the above terms and conditions.
Registration is available by payment of £10 to:
P. Appleton
Greenaway
Maltmans Lane
Gerrards Cross
Bucks SL9 8RT
England
This will entitle you to the benefits of:
Free support by mail / email of MENUBOOT.SYS.
Unlimited free upgrades (please send a disk and P&P).
No 'nag' text or similar items.
In addition, a professionally printed and bound manual is availble for
an extra £5 to registered users only (it is significantly better laid
out than this one...).
I am also available via JANET / BITNET as
bi3pma%stg1.shef@uk.ac.sheffield.sunc. This is probably a better route
for addressing queries to me than using letter mail. If you have an
urgent problem, you can also ring me at 0742-308830 although I cannot
guarrantee how long this number will be unchanged.
Page 5
Installation
Installation of MENUBOOT.SYS is extremely simply. You should
have received two large files - MENUBOOT.DOC (which you're reading)
and MENUBOOT.EXE - and several utilities /bits & bobs. The
documentation can either be printed or left for on-line reference if
preferred, and the other files should all be copied to a
sub-directory. MENUBOOT.SYS is now a slight misnomer as it has been
repackaged in an EXE format; this allows the three previous programs to
be incorporated into a single file, although it does mean losing
backwards compatability with MS-DOS 2.x. If you run version 2.0, either
a) buy DR-DOS... it's much better than MS-DOS & has a similar utility to
this built in.
b) Upgrade to at least MS-DOS 3.30
c) Use MENUBOOT.SYS version 1.x
To start using MENUBOOT.SYS two changes are required to your
CONFIG.SYS file:
A new line should be inserted at the begining with the
statement DEVICE=[path]MENUBOOT.EXE
A new line must be inserted at the end with the statement
DEVICE=~ (found as shift-# on UK keyboards).
That's it! At the moment, it will not do anything terribly
useful, but it will provide all the new commands. The use of
MENUBOOT to provide menus is covered in the next section.
Basic usage
-----------
First, a word on syntax conventions in this manual.
Anything enclosed in [square braces] is optional, and may be
ommitted or replaced with the relevant parameter; hence [path]
may be ommitted or replaced with (for example) C:\PDUTILS\.
Anything enclosed in <angle braces> is literal, and must be
entered exactly as-is. Also, all text not enclosed in braces is
a literal.
Anything enclosed in {curly braces} is a required parameter, and
should have the appropriate argument substituted for the text in
the curly braces.
The pipe symbol | indicates a choice of items; for example,
[MAX|OPTION|{number}] indicates that you may omit the parameter,
supply a number or one of the parameters MAX or OPTION.
OK, so, what is the format for a menu?
A menu is started by the line:
DEVICE=MENU [options]
(Note: see appendix 2 for an explanation of all the options you
may use)
Page 6
When this line is encountered, MENUBOOT will clear the screen,
display a copyright notice and any text or options you specify,
and then wait for you to choose an option (or press a key if no
options were specified). An option is specified by the line:
DEVICE=OPTION [<{>{options}<}>] {option text}
In between the OPTION statements, any configuration statements
relevant to that option should be placed.
Finally, the menu is terminated by the line
DEVICE=END
We now know enough to create a simple menu sytem for a sample
CONFIG.SYS file:
DEVICE=C:\PDUTILS\MENUBOOT.SYS
DEVICE=MENU
DEVICE=OPTION 1...I^NSTALL RAMDRIVE^
DEVICE=C:\DOS\RAMDRIVE
BUFFERS=5
DEVICE=OPTION 2...D^ON'T INSTALL RAMDRIVE
BUFFERS=15
DEVICE=END
DEVICE=C:\DOS\ANSI.SYS
FILES=30
DEVICE=~
Try it! Format a blank disk, making sure you transfer MS-DOS
and MENUBOOT.SYS, and type it in as your CONFIG.SYS.
You have probably noticed the carets (^) in the example
file which did not print on screen. Why not? The reason is
that MS-DOS translates all characters in CONFIG.SYS to uppercase
as it loads. In order to print a lower case character, you must
precede it with a caret. From that point on, all text will be
translated to lower case until another caret is met. What if
you want a caret? Just use two together (^^), and a single
caret will be printed. Notice, too, the way in which
configuration statements which went with an option were placed
after the OPTION statement, but a DEVICE statement which applied
to all options was placed after the menu end.
Now, you may decide that you wish to display some text for the
user - for example, a help line indicating that the option
should be selected by using the arrow keys and then pressing
return. In order to do this, the TEXT statement is provided.
The syntax is simply:
DEVICE=TEXT {message}
So, for example, we could modify our example file to read:
DEVICE=C:\PDUTILS\MENUBOOT.SYS
DEVICE=MENU
DEVICE=TEXT P^LEASE USE THE ARROW KEYS TO SELECT AN OPTION, THEN
PRESS RETURN^
Page 7
DEVICE=OPTION 1...I^NSTALL RAMDRIVE^
DEVICE=C:\DOS\RAMDRIVE
BUFFERS=5
DEVICE=OPTION 2...D^ON'T INSTALL RAMDRIVE
BUFFERS=15
DEVICE=END
DEVICE=C:\DOS\ANSI.SYS
FILES=30
DEVICE=~
That will display the message at the top of the screen. The
next question to consider is the aesthetics; what if you want
the screen to be a different colour, or the text in a different
position?
To set the colour for the menu, two options are provided for
the MENU statement: /NORMAL and /HIGHLIGHT. They set,
respectively, the colour for non-highlighted text, and that for
highlighted text (ie the copyright notice and the selected
option). The syntax is:
DEVICE=MENU /N[ORMAL]={colour name}[ ON {colour name}]
for NORMAL, and the same for HIGHLIGHT. Note that you can
abbreviate NORMAL to N; this applies to all parameters, which
may be abbreviated to their first letter. The colour names are:
Colour Colour name for MENUBOOT
Black BK
Blue BL
Green G
Cyan C
Red R
Magenta M
Brown BR
White W
In addition, you may put a plus sign after a foreground colour
name to signify enhanced intensity, or after a background colour
to signify flashing (NB: see the INTENSE option in appendix 1).
Thus, we could for example change our menu statement to read:
DEVICE=MENU /NORMAL=W+ ON G /HIGHLIGHT=BR+ ON C
to obtain a menu with bright white text on a green background,
and a highlight with yellow text on cyan. By default, a colour
computer has /N=W+ on BL and /H=W+ on R, whilst a mono system
has /N=W on BK and /H=BK on W.
You may position the cursor prior to displaying an option by
using the CURSOR statement. The syntax is:
DEVICE=CURSOR [X={x coord}] [Y={y coord}]
You do not have to specify both X and Y, or indeed either
although that would be a little pointless...
Page 8
Finally, on the aesthetics front, you can place a box on screen
with the command
DEVICE=BOX [N[ONE]|S[INGLE]|D[OUBLE]] [C[OLOUR] {name}[ ON
{name}]] {x1},{y1} TO {x2},{y2}
This will create a box on screen with the top-left corner at X1,Y1 and
the lower-right corner at X2,Y2. The NONE, SINGLE, and DOUBLE keywords
govern the number of lines to be drawn around the box (by default none
are drawn). If used, the lines are drawn to the coordinates given, not
outside.
Using these commands, it is possible to create some fairly
pretty menus. Note that by default pressing either left- or up-
arrow will take you to the previous option, and right- or down-
arrow will take you to the next option. It is possible to
change this; please see appendix 3 for details.
Multiple Menus
--------------
It is possible to have more than one menu in your CONFIG.SYS
file. If this is the case, then menus can either follow each
other, be nested inside each other, or a mixture of both. In
order to do this, simply place a DEVICE=MENU statement at the
start of each menu and a DEVICE=END statement at the end. Even
if the menus are nested, there is no need to explicitly declare
this - MENUBOOT is capable of determining which OPTION statement
goes with which menu. For example:
DEVICE=MENUBOOT.EXE
DEVICE=MENU
DEVICE=TEXT PLEASE SELECT WHETHER YOU WANT A RAMDRIVE
DEVICE=OPTION 1...RAMDRIVE
DEVICE=MENU
DEVICE=TEXT PLEASE SELECT THE SIZE OF YOUR RAMDRIVE
DEVICE=OPTION 1...1024K
DEVICE=RAMDRIVE.SYS 1024
DEVICE=OPTION 2...512K
DEVICE=RAMDRIVE.SYS 512
DEVICE=END
DEVICE=OPTION 2...NO RAMDRIVE
DEVICE=END
DEVICE=MENU
DEVICE=TEXT PLEASE SELECT WHETHER TO INSTALL ANSI.SYS
DEVICE=OPTION 1...INSTALL ANSI
DEVICE=ANSI.SYS
DEVICE=OPTION 2...DONT INSTALL ANSI
DEVICE=END
DEVICE=~
Page 9
Upon running the above CONFIG.SYS, the user will be presented
with a menu asking whether ramdrive should be installed. If it
is chosen to install ramdrive, another menu will be presented
requesting the size of the ramdrive. In any event, a menu will
then be given asking whether ANSI.SYS may be installed. You may
have up to 255 menus if you so desire, each with up to 20
options, although I would recommend keeping to a maximum of 3 or
4 menus. Each menu can have different options specified on the
MENU line, and will not affect any other menu in the file.
Use of the SET command
----------------------
As was stated in the "Introduction", MENUBOOT.SYS provides a
means of communicating with AUTOEXEC.BAT and other programs. To
do this uses the SET command. The syntax is:
DEVICE=SET {variable}={value}
Basically, it functions exactly the same as the MS-DOS SET
command; a variable will be placed into the environment space
with the specified value. In order to achieve this, you must
run MENUBOOT.EXE in AUTOEXEC.BAT:
(config.sys)
DEVICE=MENUBOOT.EXE
DEVICE=MENU
DEVICE=OPTION SET BOOT
DEVICE=SET BOOT=Y
DEVICE=OPTION DONT SET BOOT
DEVICE=END
DEVICE=~
(autoexec.bat)
MENUBOOT
IF "%BOOT%"=="Y" ECHO BOOT WAS SET!
Obviously, the example does nothing worth doing, but it does
provide an illustration of the command. A better approach is to
set a variable to a value corresponding to the option chosen,
and then to use the DOS GOTO command:
(autoexec.bat)
MENUBOOT
IF ERRORLEVEL==1 GOTO NOT_INSTALLED
GOTO %BOOT%
:WINDOWS
.
.
:DOS
.
.
:NOT_INSTALLED
Page 10
This requires that BOOT is set to either DOS or WINDOWS
depending upon which configuration was chosen. If MENUBOOT.SYS
was not installed for some reason then BOOT will return an
errorlevel of 1 to indicate this (for details on errorlevel
please see your MS-DOS manual). You may set variables up to a
total of 512 characters in length, including the variable name,
equals sign and carriage return. Note that you need to have
space in the environment to insert them; by default, MS-DOS has
160 bytes unless otherwise specified in a SHELL statement in
CONFIG.SYS - see your MS-DOS manual for details on this
statement. You should also be aware that MENUBOOT.SYS has a
memory requirement of the length of the variables set plus 112
bytes, and that no single variable should exceed 128 characters
in length. In general, it is best to keep variables as short as
possible (less than eight characters for both name and value).
It is recommended that in each menu you SET a variable with a name
related to the menu's contents to a value appropriate for the choice
selected, and then GOTO that variable. For example:
(config.sys)
DEVICE=MENUBOOT.EXE
DEVICE=HIMEM.SYS
DEVICE=MENU
DEVICE=OPTION 1...INSTALL RAMDRIVE
DEVICE=RAMDRIVE.SYS
DEVICE=SET MENU2=RAMDRIVE
BUFFERS=5
DEVICE=OPTION 2...DON'T INSTALL RAMDRIVE
DEVICE=SET MENU1=NORAMDRIVE
BUFFERS=15
DEVICE=END
DEVICE=MENU
DEVICE=OPTION 1...CONFIGURE MEMORY FOR WINDOWS
DEVICE=EMM386.EXE NOEMS
DEVICE=SET MENU2=WINDOWS
DEVICE=OPTION 2...CONFIGURE MEMORY FOR DOS
DEVICE=EMM386.EXE RAM
DEVICE=SET MENU2=DOS
DEVICE=END
{rest of config.sys}
DEVICE=~
(autoexec.bat)
ECHO OFF
MENUBOOT
IF ERRORLEVEL==1 GOTO NOT_INSTALLED
GOTO %MENU1%
:RAMDRIVE
SET TEMP=D:
GOTO %MENU2%
:NORAMDRIVE
SET TEMP=C:\TEMP
GOTO %MENU2%
:WINDOWS
ECHO Starting Windows, please wait...
WIN : <- Note: the colon is an undocumented switch which
:DOS disables the Microsoft logo.
Page 11
Use of the ON and OFF switches
There are two switches for the MENU statement that are worth a
special mention - ON and OFF. These switches enable the menu to be
hidden or displayed according to the keys held down by the user as the
machine is booting. This is useful if, for example, the machine is
normally booted in one particular configuration and you don't want the
hassle of a menu each and every reboot. To make the machine skip the
menu, simply place a switch such as ON=CTRL after the MENU statement.
The menu will not be displayed, nor any text or boxes, and the default
option automatically activated (if no default has been set, then the
first option will be chosen). The OFF statement may be used to have a
menu which, for example, displays help text for new users of the
machine, but which advanced users can skip simply by holding down a key
as the machine boots.
It is possible to force the user to hold down more than one key
by multiple usage of the ON or OFF switches - for example:
DEVICE=MENU /ON=LSHIFT /ON=RSHIFT
would force the user to press both the left and right shift keys
simultaneously in order to display the menu. It is not, however,
possible to use both the ON and OFF switches in the same menu... they
are mutually exclusive. If you attempt to do so, MENUBOOT will use the
last ON or OFF that you specified, and combine the hotkeys chosen for
all of them. For example:
DEVICE=MENU /ON=LSHIFT /OFF=RSHIFT
would result in the menu being displayed unless the user pressed both
left- and right- shift keys simultaneously.
It is possible for each menu to have an ON or OFF clause
associated with it, but it is not reccommended as you do not really
have time to press the relevant key after a menu has been displayed but
before the next one is processed.
Page 12
Appendix 1
New DEVICE statements
This is a reference to the syntax of all the new DEVICE
statements provided by MENUBOOT.SYS.
DEVICE=BOX [N[ONE]|S[INGLE]|D[OUBLE]][COLOUR {colour name}[ ON {colour
name}] {x1},{y1} to {x2},{y2}
Fills an area of screen with top-left at x1,y1 and bottom-right at x2,y2
with the specified colour. By default, the area is left unbounded,
but using the SINGLE or DOUBLE keywords will cause a box with single
or double lines to be drawn around the area. If an syntax error occurs,
the statement is ignored. Please note the English spelling of COLOUR!
DEVICE=CURSOR [X={number}] [Y={number}]
Positions the cursor at X,Y (if either is not specified, the
current value will be used). If a syntax error occurs, the
statement is ignored. X ranges from 1 to the number of columns
on screen, and Y ranges from 3 to 23.
DEVICE=END
Delimits the end of a menu. No options should follow this
statement; any which do will be ignored.
DEVICE=MENU [/N[ORMAL]={colour}[ ON {colour}]
[/H[IGHLIGHT]={colour}[ ON {colour}] [/S[PACING]={number}]
[/B[ARLENGTH]=<MAX|OPTION|{number}> [/D[EFAULT]={number}]
[/T[IMEOUT]={number}] [/I[NTENSE]] [/ON|/OFF=ALT|CTRL|LSHIFT|RSHIFT]
Starts a menu. NORMAL defines the colour of all text except
highlighted; HIGHLIGHT defines the colour of highlighted text.
See table on page 13 for details of available colours. SPACING
defines the spacing between options, and is valid between one
and three. BARLENGTH defines the method of display for the
highlight bar; MAX sets the highlight bar to be the length of
the longest option, and is the default. OPTION sets the bar to
be the length of the selected option, and a number between 1 and
99 sets the bar to be that many characters in length. DEFAULT
specifies the option that the bar should highlight when the menu
is displayed. TIMEOUT indicates the length of time (in seconds)
that MENUBOOT should wait for the user to choose an option. If
the timeout fails, the option selected will be that on which the
highlight bar rests. INTENSE will disable the flashing attribute, and
instead allows you to use enhanced intensity for background as well as
foreground colours. Note that this keyword is only supported by EGA,
MCGA and VGA graphics cards; IT WILL NOT WORK WITH, AND SHOULD NOT BE
USED WITH, ANY OTHER DISPLAY ADAPTER! The results of trying to do so
are unknown, but will probably cause a crash requiring rebooting from a
floppy disk. ON makes a menu default to not being shown. If you wish
to display the menu, you must hold down the key specified (control,
Alt, left shift or right shift) as the machine boots, otherwise the
default option will be selected from the menu without any interaction
with the user. OFF has the reverse effect; the menu will be shown
unless the given key is held down as the machine boots. If a syntax
error occurs in any option, that option will be ignored.
Page 13
DEVICE=OPTION [<{>[U[P]={option #}] [D[OWN]={option #}]
[L[EFT]={option #}] [R[IGHT]={option #}]
[B[ARLENGTH]={length}]<}>] {option text}
Creates an option in the menu. Up to twenty options may exist,
with up to 80 characters. If more than twenty options are
present, an error message will be given and the program will abort,
deleting all statements up to the DEVICE=END statement. This will
also happen if a syntax error occurs. UP, DOWN, LEFT and RIGHT specify
which option the highlight bar should move to if the respective arrow
key is pressed. By default, pressing UP or LEFT moves to the previous
option, and DOWN or RIGHT moves to the next. Moving off the end of the
menu will result in the highlight bar appearing at the other end, ie it
wraps round. BARLENGTH specifies the length of the highlight bar for
this option, and can be used to generate a highlight bar which fills a
column completely no matter which option is selected. {option text} is
the text to display to the user. Use a caret (^) to toggle between
upper/lower case conversion on or off.
DEVICE=TEXT {text}
Displays the given text on screen. The text will be printed in
the colour of the background.
DEVICE=~
Delimits the end of CONFIG.SYS. This line MUST be present for
MENUBOOT.SYS to work.
Page 14
Appendix 2
Error messages
Several error messages can be generated by MENUBOOT.SYS. These
are listed below:
ERROR: "DEVICE=END" statement missing!
The menu lacks an END statement - this must be present for
proper operation. Edit CONFIG.SYS and insert an END statement
at the appropriate point.
ERROR: "DEVICE=~" statement missing!
The CONFIG.SYS file lacks a DEVICE=~ statement. This statement
is required at the end of CONFIG.SYS (for MENUBOOT to be able to
trace the end of CONFIG.SYS). If your CONFIG.SYS file is longer
than 64K, this error may also be generated - if so, please
contact the author. It will also be generated under DR-DOS 6,
which is not compatible with MENUBOOT due to its method of
interpreting CONFIG.SYS.
ERROR: Syntax error in OPTION statement, or too many options
This error will be generated if either a mistake has been made in one of
the options, such as a mis-spelling or a number larger than 99, or if
you miss the closing curly brace from the option, or if there are more
than 20 options in the menu. Check CONFIG.SYS and correct the mistake.
ERROR: Too many nested menus exist!
You have got more than 255 menus nested inside each other...
Page 15
Appendix 3
System requirements / known incompatiblities
MENUOOT.SYS should run on any fully IBM compatible PC, and
requires MS-DOS version 3.0 or later. No other requirements are
necessary. It has been tested under MS-DOS 3.30, 4.01 and 5.0.
Windows
MENUBOOT.SYS has been fully tested with Windows 3.0, and no
problems have been encountered.
DR-DOS
MENUBOOT.SYS is not compatible with DR-DOS 6. It has not been
tested under any other versions of DR-DOS, but it is anticipated
that it would not be compatible with earlier versions either;
this is due to an incompatiblity in DR-DOS, not in MENUBOOT!
DR-DOS has an adequate means of dynamic configuration provided
as part of itself anyway (and is much better than MS-DOS...).
PC-DOS 4.0+ & XMAEM.SYS
PC-DOS 4.0 and later pre-loads the XMAEM.SYS driver before
MENUBOOT.SYS gets control. This makes it impossible to control
this driver's installation as it is already loaded. You can
work around this by renaming the driver, eg to XMAEM!.SYS, and
then loading it as early as possible in the CONFIG.SYS file.
Programs which modify CONFIG.SYS / AUTOEXEC.BAT
Programs in this class such as Windows, Qemm386, 386Max and so
on tend to get very confused by versions of CONFIG.SYS and
AUTOEXEC.BAT set up in this way, and will often fail to install.
The cure is simple; rename CONFIG.SYS and AUTOEXEC.BAT, and
then install your program. These programs normally create a
configuration file if one is not present - you can then examine
the file it has written and incorporate any necessary changes
into AUTOEXEC and CONFIG yourself. For this reason, ALWAYS MAKE
A BACK-UP OF CONFIG.SYS AND AUTOEXEC.BAT BEFORE INSTALLING ANY
NEW SOFTWARE!
Revision History
Version 1.0 released 25.2.92.
Version 2.0 - bug in registration routine fixed. Added options to
draw lines round boxes, and integrated all programs into one
file. Not released due to v2.1 being finished early.
Version 2.1 - added ON and OFF keywords in response to a request.
Released 29.2.92.
Version 2.2 - cleared up a few minor bugs (problems with 20 options
and with error handling routine). Released 1.3.92.
Version 2.3 - Experimental version using no memory if no variables set.
Not publicly released, although it is available as a ß.
Version 2.21 - corrected bug where colours were ignored (oops!).
Released 13.3.92.
Version 2.22 - included support for non-standard Tiko BIOS, which caused
boxes to be drawn without vertical lines. Released 23.6.92.
Page 16
Disclaimer
(sigh!)
MENUBOOT.EXE, the accompanying documentation, and any other programs or
utilities that may be provided at any time, together jointly referred to
as MENUBOOT.SYS, are provided as is. Peter Appleton (the author) makes
no warranty of any kind, express or implied, including but not limited
to warranties of merchantablility or fitness for any particular purpose,
with respect to this software and documentation. In no event shall the
author be liable for and damages, including lost profits, lost savings,
damaged hardware or software or any other incidental or consequential
damages arising out of the use of, or the inability to use, this
product, even if the author has been advised of the possibility of such
damages, or for any claim by any other party.