ProNET V3.3

User Documentation

17th May, 1998

Michael Krause


Table of Contents


Introduction

What is ProNET?

ProNET is a simple network system. The most important use is to share devices like hard disks, floppies and CD-ROM drives between computers in the network.

I call it simple because it is not, will never be and is not ought to be a real competitor to existing standards like TCP/IP. I'm not a networking specialist; I didn't study a single book on this subject, so one can't expect ProNET to be an absolutely professional product.

The ProNET software is based on two-sided connections, which means that you can not connect more than two computers on one interface level - each level has always got two ends. This is called the Client-Server-Model:


/--------\                    /--------\
|        | ---- REQUEST --->> |        |
| Client |                    | Server |
|        | <<-- RESPONSE ---- |        |
\--------/                    \--------/

But since ProNET uses a modular driver concept, you can open up more than one connection from each computer, so that you could hook together more than two of them.

Besides that, ProNET is limited to the Amiga series of computers. There will never be ports to other platforms, because the File System heavily relies on the Amiga way of handling data storage media.

Considering these facts, ProNET is the right program package for you, if you

  1. don't want to spend much money
  2. want perfect fit into your working environment
  3. are mainly interested in connecting two Amigas.

This description might call the ParNet package into your mind, and indeed ProNET is ought to be the follow-up to that nice, but quite old and restricted software. These are some examples of improvements to Matt Dillon's work:

Please do also note that there is no installation script -- if you want to use ProNET, you should be familiar with the Shell and Text Editors.

System Requirements

The software generally requires at least Kickstart 2.0 and runs on any processor, with some exceptions: `pronet-server', `pronet.device', `pronet-talk' and the interface drivers do also work on older versions. Only Kickstart 1.3 has been tested, though.

Installation

Before we start moving around files, just let me explain what Devices are. If you find yourself familiar with these things you can skip this section and start installing. If you don't quite understand the install procedure, this section might enlighten you!

Because AmigaDOS can handle more than one data storage medium, each one has got its own name. The most known examples are `DF0:' for the internal floppy disk drive and `HD0:' for the boot partition of your hard disk. Every time you access a file on one of these media, you will state this name, provided the disk is not already the root of the current directory.

All these names describe a thing in AmigaDOS which is called the AmigaDOS Device. `CD0:', `HD7:', `PRT:' and `RAM:' all describe different AmigaDOS Devices, also simply called Devices. As you have probably noticed about the example of `RAM:', the AmigaDOS Device is only a symbol for a storage medium, since the Ram Disk is not really part of the hardware!

This device is not to be confused with the Exec Device, though both are just called Device in general. The former is a symbol, the latter is a program located in the ROM or in the `DEVS:' directory, the name of which is usually ending with `.device'. Exec devices are low-level drivers for hardware like hard disk drives and floppies. In this case, you don't need to know how they work or what they are good for.

Installing `pronet.device'

The pronet.device is the core of the whole ProNET package. It contains all routines for managing the data transfer between Amigas. It does not contain any transfer routines as was the case in version 1, because it turned out to be extremely hard to add new routines for other interfaces this way.

Copying the files

The device should be copied into the `DEVS:' directory of all participating machines.

The transfer routines are external code modules stored in the `DEVS:ProNET' directory. I would recommend copying all of them, though you can lateron delete the unused ones. Please don't copy them directly into `DEVS:', but keep them in their own directory!

As soon as you receive your key file, copy it as `.key' to the same directory `DEVS:ProNET/'.

Currently available transfer modules are `internal-parallel' for the internal parallel port (which, by the way, was the only possibility in ProNET V1), `mfc-parallel' for the parallel port of a MultiFaceCard3, and `serial' for serial ports which are controlled through a serial.device compatible Exec Device, that is `BaudBandit.device', `duart.device' etc.

Installing the drivers

Now create the file `DEVS:ProNET/.config'. This file will contain configuration data for the ports you are using for the network.

This file contains any number of lines of the following form:

[drivername] [driverdata]

Each line describes a so called Unit of the device, representing a port accessable by one of the ProNET drivers. The more ports and drivers you have, the more Units you can create. You will be able to use every unit to connect to another machine: If your central Amiga contained a Multiport expansion containing 3 serial ports, you would be able to connect to 5 (five!) other Amigas by using the internal parallel and serial ports, as well as the Multiport card.

Units are numbered from 0 to n. Unit 0 is defined by the first line in `.config', Unit 1 by the second line and so on. [drivername] is replaced by the name of the external driver module, and [driverdata] is configuration data required by this driver.

`internal-parallel'

First we will install the internal-parallel driver. If you don't need it, skip this part. We add the line:

internal-parallel 0 5

The number 5 is required by the driver module and describes the priority of the transfer process. If you don't know what I'm talking about, leave this number. Lower numbers, like 0, can prevent the driver from stealing most of the CPU time.

The number 0 is the so called machine number and is essential for the correct working of the network. Two machines connected via the internal- or mfc-parallel driver need to have different numbers here. One machine requires a `0', the other one a `1'. If you gave both sides the same number, ProNET might not work.

This driver works with a ParNet compatible cable at the built-in parallel port.

`mfc-parallel'

This driver can be useful if you've got the MultiFaceCard3 from BSC. The on-board serial ports should be driven with the serial driver described below, the parallel ports are used with this driver.

Please note that you can only use MultiFaceCards which contain the 6821 PIA from Motorola -- it has only been tested with the MultiFaceCard3.

Let's get down to the installation and create a new line:

mfc-parallel 0 1 5

0 is the number of the MFC parallel port, in case you've got more than one card in your Amiga.

The number 1 is the so called machine number and is essential for the correct working of the network. Two machines connected via the mfc- or internal-parallel driver need to have different numbers here. One machine requires a `0', the other one a `1'. If you give both sides the same number, you run the risk of some dangerous network deadlocks (no, you don't destroy your hardware)!

The number 5 is required by the driver module and describes the priority of the transfer process. If you don't know what I'm talking about, leave this number. Lower numbers, like 0, can prevent the driver from stealing most of the CPU time.

This driver works with a ParNet compatible cable. It is, without problems, possible to connect two Amigas with a MFC at one side and a built-in parallel port on the other side. This won't give you the optimum in performance, though.

`serial'

If you want to use it, create the line:

serial BaudBandit.device 0 19200

BaudBandit.device is the name of the serial.device you want to use, 0 is the appropriate unit, which would describe the number of the serial port on multiport cards. Please note, that 8n1.device does not function on an A500 with this driver. If you want to be really sure, use the original serial.device here.

19200 is the baud rate, which must be equal on two computers connected together. Try how high you can set it! 19200 is a very safe value which even works on unaccelerated A500 models. Typical higher settings are 38400, 57600, 64000, 76800, 115200. The result of selecting a too high value is that the network could suddenly stop working, especially when the CPU working hard. The system could even work okay for half an hour and then stop working.

Without further arguments, this driver requires a 7-wire null-modem cable to work. However, the time could come when you only have 3 wires (e.g. when networking with a CD32). In this case, add the argument 3WIRE to the end of the line (on both sides of the cable, of course). Note that 3-wire connections are generally less stable than 7-wire ones, especially under heavy multitasking.

Please note that, when using this driver, the server always has to be started first, after that you can mount the devices on the other machine. This is because the driver can't wait for the other machine to be alive, as opposed to the parallel drivers.

Making the right cables

Please note that whatever you do, you'll do it on your own risk! I can't be held responsible for any damages you might do to your hardware.

The ParNet cable

The following description is based on the ParNet documentation.

You are making a cable that connects the two parallel ports of your Amigas together. Connect D7-D0, SEL, POUT, and BUSY across; connect ACK to SEL locally:

(2-9)   D7-D0   ------------    D7-D0
(12)    POUT    ------------    POUT
(11)    BUSY    ------------    BUSY       PARALLEL PORT
(13)    SEL     --+------+--    SEL
(10)    ACK     -/        \-    ACK
(18-22) GND     ------------    GND  (18-22)

This is the DB-25 parallel connector seen from outside the computer:

  1                         13
_______________________________
\  . . . . . . . . . . . . .  /
 \  . . . . . . . . . . . .  /
  ---------------------------
  14                      25    

Attention A1000 users: The parallel port is male, so you need a female connector! Other Amigas need a male connector.

The easiest thing to do is to buy a premade cable with all 25 lines passed and DB25 connectors on both ends (Double check the gender's that they match before you buy the cable!) And then rip it apart and cut-and-seal those wires which are not supposed to be connected. You also need to bridge ACK to SEL as per the diagram above on both ends of the cable, as shown above.

Double check the gender for the DB25 connectors you will need to connect to your Parallel Port. Never plug in an unmodified cable between the two computers! Double check your cable before installation!

The longer you make the cable, the more unstable the network will get. But not only that, you can destroy your CIA chips when using too long cables. 5m is perfectly safe, and I heard from people using 10m cables without problems, but I wouldn't want to go beyond five.

Interference with built-in serial port

Warning: The RI (Ring Indicate) line on the Amiga's built-in serial port (Pin 22) uses the SEL line to source a transitor. This interferes with the SEL line which, as you can see, is part of the network.

Be sure that

Otherwise, when receiving a signal on the RI line, the internal-parallel driver would simply crash!

The null-modem cable

Note that you must try to keep the cable as short as possible. You don't destroy hardware otherwise, but the network might be very unstable. 5m is safe, however.

7-wire schematics

Two ports should be connected in this way to give a 7-wire null-modem cable:

Shield Earth -> Shield Earth
System Earth -> System Earth
     TXD     ->      RXD
     RXD     ->      TXD
     RTS     ->      CTS
     CTS     ->      RTS
     DSR     ->      DTR
     DTR     ->      DSR

Do not connect Shield and System earth.

3-wire schematics

To get a 3-wire cable, leave out the DSR/DTR and RTS/CTS connections, so that we use the following schematics:

Shield Earth -> Shield Earth
System Earth -> System Earth
     TXD     ->      RXD
     RXD     ->      TXD

Do not connect Shield and System earth here either.

If you've got standard serial ports, please think about using 7-wire cables, as they are more reliable.

25-pin serial connectors

...are the standard Amiga ports.

Shield Earth (GND) - Pin 1
System Earth (GND) - Pin 7
     TXD           - Pin 2
     RXD           - Pin 3
     RTS           - Pin 4
     CTS           - Pin 5
     DSR           - Pin 6
     DTR           - Pin 20

This is the DB-25 RS-232 connector seen from outside the computer:

  1                         13
_______________________________
\  . . . . . . . . . . . . .  /
 \  . . . . . . . . . . . .  /
  ---------------------------
  14                      25    

9-pin serial connectors

...are mostly used in the rest of the computer world and sometimes can even be found on Amiga multi-I/O cards such as the MultiFaceCard3.

Shield Earth (GND) - (connect to frame)
System Earth (GND) - Pin 5
     TXD           - Pin 3
     RXD           - Pin 2
     RTS           - Pin 7
     CTS           - Pin 8
     DSR           - Pin 6
     DTR           - Pin 4

This is the DB-9 RS-232 connector seen from outside the computer:

  1         5
_______________
\  . . . . .  /
 \  . . . .  /
  -----------
   6       9

Installing the File System

This is easy: Let's assume your main working place is an A4000. You want to import the CD-ROM drive of a CDTV that is placed under your table into the A4000 so that you don't need to spend money on a new SCSI CD-ROM drive for your workstation. In this configuration it's quite obvious that the CDTV will be the network Server, whereas the A4000 will be the Client.

Just copy `pronet-server' into the `C:' directory or somewhere else in the path of the Server, that is the machine from which you want to import AmigaDOS Devices into the main machine. Then put the `pronet-handler' into the `L:' directory of the main machine, the Client.

That's it!

Installing the Utilities

Copy `pronet-run', `pronet-page', `pronet-start', `pronet-stop' and `pronet-talk' into the `C:' directory of your machines. That's it, again!

Updating from V3

If you are currently using ProNET V3 and want to update, you don't need to start from the beginning: Here I will show you how to change your installation.

A detailed list of the changes can be found in the accompanying file `ChangeLog'.

Usage

Starting the Server (`pronet-server')

For any Amiga you want to use as a server, you first have to start `pronet-server'. By default, this program waits for incoming request on ProNET Unit 0, but you can change this by supplying another value in the command line, so, if you had several connections to a central server computer, you would have to start `pronet-server' once for every Unit.

If you forget to start the server, client programs will simply go into an endless loop, so when later on nothing seems to work, always check if the server is running!

The server can be stopped at any time by issueing a `CTRL-C' signal. I would do so before rebooting the Client machine, since the server will then give notice of its departure. I suggest starting the server with run <>nil: so it doesn't block your shell. If you want to stop it, use the `status' and `break' commands.

Importing Devices (`pronet-start')

Starting the network is a very simple job, which is done by the `pronet-start' utility.

The command template is as follows:

pronet-start LOCALNAME/A,REMOTENAME/A,UNIT/N,FLAGS/N,UNIQUE/S

LOCALNAME is the name of the Device to create while REMOTENAME is the one you want to import from a remote Amiga. It is important not to give a volume name (e.g. `Work') here but the device name (such as `hd0')! Please also note that you must not append a `:' to the Device names!

As for the example from above, we could issue the command

     pronet-start cd1 cd0
                  ^^^
                  This is what we want to
                  call the device on the A4000.
                      ^^^
                      This is what the device is
                      called on the CDTV.

The rest of the arguments don't necessarily have to be specified:

UNIT is the ProNET unit you want to use (default 0). FLAGS currently has no effect (defaults to 0, too) and the UNIQUE switch makes Volume names unique. Imagine the following configuration:

Two Amigas with both a `Workbench' partition are connected and Amiga 1 wants to access the Workbench partition of Amiga 2. You call `pronet-start' and what happens? Now you have got two `Workbench' volume icons on your screen. This will confuse AmigaDOS quite heavily, which is to be avoided by using the UNIQUE switch. This will simply append a number to the imported volume name, corresponding to the ProNET unit you have used.

`pronet-start' returns an error message if something went wrong, that is e.g. when the remote device doesn't exist or the ProNET unit can't be found. Otherwise it immediately returns without further output. Don't start it with `run', the command immediately returns!

Now repeat this step for every new device. Good luck!

`pronet-stop'

When you feel that you don't need a remote device any more, you can remove it with this command. Supply `pronet-stop' with the device name you want to remove and it will do its job. You could also give the UNIT keyword together with a Unit number. `pronet-stop' will then stop all devices on this specific Unit.

Why should you do this? Well, if you switched off the Server or reset it without stopping the Client, strange things might happen on the Client: You couldn't access any data any more, perhaps you couldn't even move your mouse -- this is because the Client thinks the Server's still alive!

Beyond question: If you're going to switch off both computers anyway, you can skip this of course.

`pronet-flush'

You can use this command without further arguments to remove `pronet.device' from memory. This will free all resources allocated by the ProNET drivers. `pronet-server' and `pronet-stop' have this feature built-in. You will hardly find appropriate use for this command, but it's there for reasons of completeness anyway.

`pronet-page'

Using this program, you can send messages to users on remote machines. This works by calling `pronet-page' with the ProNET Unit and the message to be displayed on the machine connected to that Unit.

Example:

pronet-page 0 Hello there!

The message will be displayed in a Guru-like alert window at the top of the screen.

`pronet-run'

By using this program, you can run programs on a networked machine without having to touch its keyboard or mouse. Call it with the ProNET Unit and the command to be run on the corresponding Amiga. The command string must be put in "s.

Example:

pronet-run 0 "dir hd0: all"
pronet-run 13 "list >con:0/0/640/200/test"

It is important to know that the standard output is done into the window that the respective pronet-server was started from. Therefore I strongly advise you to explicitly redirect standard output, like I did in the second example.

`pronet-talk'

This program can be used to chat between two machines. All you need to do is call `pronet-talk' on both machines with the right ProNET Unit as an argument. By default, this program uses Unit 0.

Advanced Usage

In this chapter, I want to give you some hints to how to use the full power of ProNET. There are some things which are not very obvious and may be useful for some of you.

Reconnection

Okay, this is not quite what I would call advanced usage, but it's the right place for this anyway.

Let's get back to the example from the Importing Devices section. You will sometimes have to reboot your A4000, because some program has crashed (uuh not really, we use an Amiga ;-)). When you want to start the network again, you don't have to reboot the CDTV, too -- It's completely okay to issue new `pronet-start' commands after a Client reboot without rebooting the Server. That's all.

Networking in both directions

Most configurations will look similar to the one described above, i.e. one main machine, the working place, and a server which is no working place. However, if you are networking with a friend's system and you are both working on the machines, it's no problem to install the network in both directions, that is both machines are Server and Client at the same time. The two can each access the other one's file systems.

A network over the phone line

Imagine you have a friend living far away from you, and you want to help him install some new programs. You could call him and describe exactly what he has to do, but this way you will spend far too much time, because he will not understand (This presumption has been derived from Murphy's Law and proved to be fact in many situations ;-)).

You could also make a modem connection, install a network between your computers and copy all the files to the right places, make some shell scripts etc. on your own. Does this sound interesting? Then read on!

Preparation

Both sides must define a ProNET Unit using the `serial' driver. The respective port will not have a null-modem cable connected to it, but a real modem! As usual, set the serial port speed to four times the modem speed, if your port does it. The speed settings on both sides don't have to be equal, because the modem manages the transfer speed on its own.

Both modems must be configured to ignore the DTR (data terminal ready) signal, which is in most cases done by issueing the command AT&D0.

How to connect

Load your favourite terminal programs now. Decide one of you to be the caller, who then dials the other one's number via ATD. As soon as he has answered with ATA and you've read the CONNECT message, both sides quit the terminal.

Now simply proceed as if you were connected with a simple null-modem cable: Start the server programs and install the devices (of course directed to the right unit!). That's it. Not very fast, but nice anyway ;-)

Internals

How to create ProNET drivers

Read the two autodoc files that are in the distribution. There is one for general `pronet.device' usage and one for developing new ProNET drivers.

Supported DosPacket Types

ProNET supports most of the new DosPackets introduced with V36 and V39: Perhaps you've sometimes seen one of these '2.0 Pkt ACT_PARENT_FH' requesters from ParNet - they are no longer annoying you! This is a list of all packet types supported by ProNET:

ACTION_FINDINPUT
ACTION_FINDUPDATE       V33
ACTION_FINDOUTPUT
ACTION_END
ACTION_READ
ACTION_WRITE
ACTION_SEEK
ACTION_CURRENT_VOLUME
ACTION_SET_FILE_SIZE    V36
ACTION_LOCK_RECORD      V36
ACTION_FREE_RECORD      V36

ACTION_LOCATE_OBJECT
ACTION_FREE_LOCK
ACTION_COPY_DIR
ACTION_PARENT
ACTION_SAME_LOCK        V36
ACTION_CREATE_DIR
ACTION_CHANGE_MODE      V36
ACTION_FH_FROM_LOCK     V36
ACTION_COPY_DIR_FH      V36
ACTION_PARENT_FH        V36
ACTION_EXAMINE_OBJECT
ACTION_EXAMINE_NEXT
ACTION_EXAMINE_FH       V36

ACTION_DELETE_OBJECT
ACTION_RENAME_OBJECT
ACTION_MAKE_LINK        V36
ACTION_READ_LINK        V36
ACTION_SET_COMMENT
ACTION_SET_DATE
ACTION_SET_PROTECT
ACTION_INFO
ACTION_RENAME_DISK
ACTION_INHIBIT
ACTION_FORMAT           V36
ACTION_SERIALIZE_DISK   V39
ACTION_MORE_CACHE
ACTION_WRITE_PROTECT
ACTION_IS_FILESYSTEM    V36

ACTION_NIL
ACTION_FLUSH
ACTION_DISK_INFO

These packets are not yet supported and might be implemented later:

ACTION_EXAMINE_ALL      V36
ACTION_EXAMINE_ALL_END  V39
ACTION_SET_OWNER        V39
ACTION_ADD_NOTIFY       V36
ACTION_REMOVE_NOTIFY    V36

Other Topics

Registration

ProNET is Shareware. You might have noticed that without a key file, the network stops working after some minutes. To obtain a personalized key file, please send 20DM or US$ 15 to my address (see Support section). Please do not use Eurocheques or something similar, just put the money into an envelope.

Please write down your complete address in a readable manner. If you've got an e-mail address, I can also send the key file to you this way. Please also clearly state which version of ProNET you are using.

When I receive a registration, I will generally answer it within two or three days - if you have to wait three weeks, you can be sure I was on vacation. Together with the key file, you will receive the latest version of ProNET.

Support

Due to the low registration fee and the costs of ordinary mail, it's generally not possible for me to answer every question concerning ProNET by snail-mail. If you've got an Internet address, the chance of an answer will rapidly increase. Also please do try to find a solution to your problem in the FAQ section of this guide first.

ProNET development has stopped with Version 3.2. The only case in which I could imagine releasing a V3.4 would be when someone reports a really bad bug (not a missing feature). I haven't got a single bug report within the last twelve months, so I assume this program is quite stable by now.

Here is a list of addresses you can use to contact me:

Michael Krause
Mannesallee 24
D-21107 Hamburg
Germany

m.krause@tu-harburg.de
rawstyle@ms.demo.org

http://ms.demo.org/rst/

If, somewhen in the future, all these addresses should fail to work, you can easily start a search in the WWW (or whatever medium is "in" at that time) for my name in conjunction with "ProNET". You'll definitely find me this way.

Credits & Thanks

All ProNET software by

Michael Krause

ParNet (inspiration) and design of the parallel connection cable by

Matt Dillon and the Software Distillery

People who helped me with testing the software and giving valuable hints to bugs I would have never discovered (THANKS!):

Thomas Schwarz, Wolfgang Gutberlet, Mat Bettinson, Robert W. Adams, Nik Soggia, Anti-"It-does-not-work"-brain

Besides all that I also want to thank all people that sent letters containing more than just `ProNET does not work' and all the ones encouraging me to continue working on this package. This update would never have been released if I hadn't received so much mail from you!

History

This section only lists the most important changes. A more profound text can be found in the `ChangeLog' file.

Version 3.3

released on 17-May-98. No actual code changes, only the documentation has been fixed in some places (addresses).

Version 3.2

released on 27-Jan-97 including pronet.device 38.0, pronet-handler 38.0, pronet-server 38.0, pronet-start 37.0, pronet-stop 38.0, pronet-flush 36.0, pronet-talk 37.1, pronet-run 37.0, pronet-page 37.0, internal-parallel 37.0, mfc-parallel 37.0, serial 37.0.

Version 3.1

released on 30-Nov-96 including pronet.device 37.2, pronet-handler 37.1, pronet-server 37.0, pronet-start 37.0, pronet-stop 36.1, pronet-flush 36.0, pronet-talk 37.1, pronet-run 37.0, pronet-page 37.0, internal-parallel 37.0, mfc-parallel 37.0, serial 37.0.

Version 3

released on 23-Aug-96 including pronet.device 36.6, pronet-handler 36.4, pronet-server 36.4, pronet-start 36.3, pronet-stop 36.1, pronet-flush 36.0, pronet-talk 36.0, pronet-run 36.1, pronet-page 36.0, internal-parallel 36.1, mfc-parallel 36.0, serial 36.2.

Version 2.1

(bugfix) released on 08-Jul-95 including pronet-talk 34.2, pronet-server 35.0.

Version 2

released on 24-Jun-95 including pronet.device 35.4, pronet-handler 34.2, pronet-server 34.9, pronet-talk 34.1, pronet-run 34.1, pronet-page 34.0.

Version 1

released on 01-Nov-94 (initial release) including pronet.device 33.9, pronet-handler 33.5, pronet-server 33.5, pronet-talk 33.0, pronet-run 33.0, pronet-page 33.0.

Version 0

I got the idea for ProNET in December 1993 after being disappointed by ParNet and started programming the device in April 1994.

FAQ - Frequently Asked Questions

Hmm... sorry that there were not too much questions I could answer with a simple `Yes' :) ohh well but let me think about that again... ahhh here it is:

Legal stuff

ProNET is Copyright (C) 1994-1998 by Michael Krause.

Disclaimer

"I won't read this yet again..."

THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDER AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

License


This document was generated on 17 May 1998 using the texi2html translator version 1.49.