1. INTRODUCTION

Wine is a program that allows running MS-Windows programs under X11.
It consists of a program loader, that loads and executes an
MS-Windows binary, and of an emulation library that translates Windows
API calls to their Unix/X11 equivalent.

Wine is free software. See the file LICENSE for the details.
Basically, you can do anything with it, except claim that you wrote it.

Important note: current versions of Wine include a built-in debugger
for 16-bit code, that is based on code from gdb. This means that if
you redistribute a version of Wine that includes this debugger, you
must follow the terms of the GNU General Public License.


2. COMPILATION

You must have one of:

	Linux version 0.99.13 or above
	NetBSD-current
	FreeBSD-current or FreeBSD 1.1

To build Wine, first do a "./Configure" and then a "make" (or "gmake"
if you're running *BSD).  The executable "wine" will be built.  "wine"
will load and run 16-bit Windows' executables. 

To upgrade to a new release by using a patch file, first cd to the
top-level directory of the release (the one containing this README
file). Then do a "make clean", and patch the release with:

    gunzip -c patch-file | patch -p1

where "patch-file" is the name of the patch file (something like
Wine-yymmdd.diff.gz). You can then re-run "./Configure", and then
run "make". 


3. SETUP

Wine requires you to have a file /usr/local/etc/wine.conf (you can
supply a different name when configuring wine) or a file called .winerc
in your home directory.

The format of this config file is just like a Windows .ini file.
The file wine.ini contains a config file example.

Here's an explanation of each section:

* [drives]

format: <driveletter> = <rootdirectory>
default: none

This section is used to specify the root directory of each `dos'drive 
as Windows' applications require a dos/mswindows based diskdrive & 
directory scheme. 

If you mounted your dos-partition as /dos and installed Microsoft Windows 
in c:\windows than you should specify c=/dos in the drives section.

* [wine]

format: windows = <directory>
default: c:\windows

Used to specify an different windows directory.

format: system = <directory>
default: c:\windows\system

Used to specify an different system directory.

format: temp = <directory>
default: c:\temp

Used to specify a directory where Windows applications can store temporary
files.

format: path = <directories separated by semi-colons>
default: c:\windows;c:\windows\system

Used to specify the path which will be used to find executables and DLL's.

format: systemresources = <filename>
default: c:\temp

Used to specify the name of sysres.dll, a dll which is used by Wine itself.

* [serialports]

format: com[12345678] = <devicename>
default: none

Used to specify the devices which are used as com1 - com8.

* [parallelports]

format: lpt[12345678] = <devicename>
default: none

Used to specify the devices which are used as lpt1 - lpt8.

* [spy]

format: file = <filename or CON when logging to stdout>
default: none

used to specify the file which will be used as logfile.

format: exclude = <message names separated by semicolons>
default: none

Used to specify which messages will be excluded from the logfile.

format: include = <message names separated by semicolons>
default: none

Used to specify which messages will be included in the logfile.


4. RUNNING PROGRAMS

When invoking Wine, you must specify the entire path to the executable,
or a filename only.

For example: to run Windows' solitaire:

	wine sol		   (using the searchpath to locate the file)
	wine sol.exe

	wine c:\\windows\\sol.exe  (using a dosfilename)

	wine /usr/windows/sol.exe  (using a unixfilename)

Note: the path of the file will also be added to the path when
      a full name is supplied on the commandline.

Have a nice game of solitaire, but be careful.  Emulation isn't perfect.
So, occasionally it may crash.


5. GETTING MORE INFORMATION

The best place to get help or to report bugs is the Usenet newsgroup
comp.emulators.ms-windows.wine. The Wine FAQ is posted there every
month.

If you add something, or fix a bug, please send a patch to
wine-new@amscons.com for inclusion in the next release.

--
Alexandre Julliard
julliard@lamisun.epfl.ch
