0. LICENSE

You may without charge, royalty or other payment, copy and
distribute copies of this work and derivative works of this work
in source or binary form provided that: (1) 
you appropriately publish on each copy an appropriate copyright
notice; (2) faithfully reproduce all prior copyright notices
included in the original work (you may also add your own
copyright notice); and (3) agree to indemnify and hold all prior
authors, copyright holders and licensors of the work harmless
from and against all damages arising from use of the work.

You may distribute sources of derivative works of the work
provided that (1) (a) all source files of the original work that
have been modified, (b) all source files of the derivative work
that contain any party of the original work, and (c) all source
files of the derivative work that are necessary to compile, link
and run the derivative work without unresolved external calls and
with the same functionality of the original work ("Necessary
Sources") carry a prominent notice explaining the nature and date
of the modification and/or creation.  You are encouraged to make
the Necessary Sources available under this license in order to
further the development and acceptance of the work.

EXCEPT AS OTHERWISE RESTRICTED BY LAW, THIS WORK IS PROVIDED
WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES OF ANY KIND, INCLUDING
BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF FITNESS FOR A
PARTICULAR PURPOSE, MERCHANTABILITY OR TITLE.  EXCEPT AS
OTHERWISE PROVIDED BY LAW, NO AUTHOR, COPYRIGHT HOLDER OR
LICENSOR SHALL BE LIABLE TO YOU FOR DAMAGES OF ANY KIND, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

1. 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".  The
executable "wine" will be built.  "wine" will load and run 16-bit
Windows' executables. 



2. 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 homedirectory.

The formatstyle of this config file is just like a windows .ini file.

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 you 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.



3. 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, occassionally it will crash.



4. EXAMPLE CONFIGFILE

----------------------------------------------------------------------------
[drives]
a=/mnt/fd0
c=/dos
d=~/Wine

[wine]
windows=c:\windows
system=c:\windows\system
temp=c:\temp
path=c:\windows;c:\windows\system;c:\winapps\word\;c:\winapps\pctools
systemresources=./sysres.dll

[serialports]
com1=/dev/cua1
com2=/dev/cua1

[parallelports]
lpt1=/dev/lp0

[spy]
;File=CON
;File=spy.log
Exclude=WM_TIMER;WM_SETCURSOR;WM_MOUSEMOVE;WM_NCHITTEST;WM_NCACTIVATE;WM_GETDLGCODE;
Include=WM_COMMAND;

----------------------------------------------------------------------------


5. BUILD:

    The documentation for the build program is in the file build-spec.txt


6. FINALE:

Good luck,

	If you successfully add anything, please send me a copy.

Bob Amstadt
bob@amscons.com


7. WHAT'S NEW

WHAT'S NEW with Wine-940524: (see ChangeLog for details)
	- New menu functions
	- EnumObjects()
	- and many many bug fixes!

WHAT'S NEW with Wine-940518: (see ChangeLog for details)
	- debugger improvements
	- bug fixes to get some dialog boxes working.
	- skeleton for passing MCI functions.
	- beginnings of metafile support.
	- and many many bug fixes!

WHAT'S NEW with Wine-940510: (see ChangeLog for details)
	- debugger improvements
	- mmsystem
	- ShellAbout() and AboutDlgProc()
	- and many many bug fixes!

WHAT'S NEW with Wine-940505: (see ChangeLog for details)
	- faster color_stretch()
	- SetSysMenu(), GetCursor(), GetDesktopWindow()
	- WSAGetXbyY() now non-blocking	
	- and many many bug fixes!

WHAT'S NEW with Wine-940420: (see ChangeLog for details)
	- new property functions
	- new listbox and combo box functions
	- GrayString() and CallGrayStringProc()
	- and many many bug fixes!

WHAT'S NEW with Wine-940412: (see ChangeLog for details)
	- menuing improvements
	- drawing performance improvements
	- beginnings of hooks
	- MDI maximizing and tiling
	- improvements in winsock implementation
	- and many many bug fixes!

WHAT'S NEW with Wine-940405: (see ChangeLog for details)
	- Mouse activation of menus working again
	- GetprocAddress()
	- SetDIBitsToDevice()
	- FindWindow()
	- int 10hm 25h and 26h
	- in, inb, out, outb emulation
	- and many many bug fixes!

WHAT'S NEW with Wine-940329: (see ChangeLog for details)
	- MDI: child windows can be created, activated and cascaded.
	- -depth option
	- support for dithered brushes
	- GetNearestColor(), RealizeDefaultPalette(), 
	  GetSystemPaletteEntries(), and SelectPalette()
	- System colors read from WIN.INI
	- Keyboard menu manipulation (mouse is temporarily broken)
	- GetFreeSystemResources()
	- and many many bug fixes!

WHAT'S NEW with Wine-940322: (see ChangeLog for details)
	- Speed improvements in bitmaps and mouse messages
	- More MDI support.  More to come next week...
	- and many many bug fixes!

WHAT'S NEW with Wine-940315: (see ChangeLog for details)
	- Beginnings of MDI support.  More to come next week...
	- Stress DLL
	- and many many bug fixes!

WHAT'S NEW with Wine-940309: (see ChangeLog for details)
	- New "exclude" and "include" filters for spy feature.  See sample
	  wine.ini for details.
	- -desktop and -name options (see ChangeLog)
	- GetFreeSpace() and CreateIcon()
	- and many many bug fixes!

WHAT'S NEW with Wine-940301: (see ChangeLog for details)
	- NEW Configure script to set compile time options!
	- Support for filesystems with short (less than 14 chars) filenames.
	- Clipboard functions!
	- and more...

WHAT'S NEW with Wine-940223: (see ChangeLog for details)
	- FreeBSD support
	- FloodFill()
	- Desktop window support
	- Menu fixes
	- and more...

WHAT'S NEW with Wine-940216: (see ChangeLog for details)
	- Many many bug fixes
	- Switched to using Imakefile's instead of Makefile's.
	- Lot's of changes for libwine.a

WHAT'S NEW with Wine-940209: (see ChangeLog for details)
	- Many many bug fixes
	- Minor directory structure reorganization
	- New GetModule*() functions.
	- WINSOCK DLL
	- First stab at Wine as a library

WHAT'S NEW with Wine-940201: (see ChangeLog for details)
	- Support for huge data structures.
	- FreeBSD support.
	- Many many bug fixes

WHAT'S NEW with version 0.8: (see ChangeLog for details)
	- Eliminated Xt-dependent code.  Thanks to Alexandre and Martin.
	- EnumWindows() and EnumChildWindows()
	- Activating and deactivating of windows.
	- More work on system menus.

WHAT'S NEW with version 0.7: (see ChangeLog for details)
	- Eliminated Xt-dependent code.  Thanks to Alexandre and Martin.
	- Other bug fixes.
	- IsWIndowEnabled() and EnableWindow() now implemented.
	- New command line options.

WHAT'S NEW with version 0.6: (see ChangeLog for details)
	- Working towards elimination of Xt-dependent code.  Thanks to
	  Alexandre and Martin.
	- Other bug fixes.
	- I added a rudimentary spy facility which can be turned
 	  on from the wine.ini file.  See the sample wine.ini
	  for details

WHAT'S NEW with version 0.5: (see ChangeLog for details)
	- Working towards elimination of Xt-dependent code.
	- StretchBlt()
	- GetClassName() & GetClassInfo()
	- Implemented loader relocation types 5 and 6.

WHAT'S NEW with version 0.4.14: (see ChangeLog for details)
	- Bug fixes and enhancements
	- Comm functions
	- Text caret functions

WHAT'S NEW with version 0.4.13: (see ChangeLog for details)
	- Bug fixes
	- GetCapture()
	- More keyboard handling
	- Polyline() and Polygon()

WHAT'S NEW with version 0.4.12: (see ChangeLog for details)
	- Bug fixes
	- New DOS file functions
	- Experimental Imakefiles

WHAT'S NEW with version 0.4.11: (see ChangeLog for details)
	- Bug fixes
	- New cursor functions
	- New file system handling
	- Atoms

WHAT'S NEW with version 0.4.10: (see ChangeLog for details)
	- Bug fixes
	- More scroll bar functions
	- More icon and cursor handling

WHAT'S NEW with version 0.4.9: (see ChangeLog for details)
	- Bug fixes
	- real MessageBox()
	- New resource functions
	- Icon functions
	- Selector manipulation functions
	- Catch()/Throw()

WHAT'S NEW with version 0.4.7: (see ChangeLog for details)
	- More dialog box functions
	- More DOS interrupts
	- NetBSD compatibility patches

WHAT'S NEW with version 0.4.5: (see ChangeLog for details)
	- Bug fixes
	- focus routines
	- dialog box functions
	- improvements to control windows

WHAT'S NEW with version 0.4.4: (see ChangeLog for details)
	- Bug fixes
	- New static control class
	- Preliminary listbox, combobox and scrollbar controls
	- System initialization file is now called "wine.ini", and
	  may be located in the user's current directory, the
	  user's home directory or any directory specified by
	  the WINEPATH environment variable.
	- The loader now searches the directories specified by the
	  WINEPATH environment variable for programs and DLLs.
	- Internal debugger now works on 386BSD.

WHAT'S NEW with version 0.4.3: (see ChangeLog for details)
	- Bug fixes
	- Resource loading now able to load DLL resources
	- Button control now based on GDI calls
	- Preliminary system color support
	- Miscellaneous window functions
	- Limited debugging facility (sometimes hangs)

WHAT'S NEW with version 0.4.2: (see ChangeLog for details)
	- Bug fixes
	- 32-bit callback functions allowed
	- .INI file handling
	- lstr* functions and ANSI<->OEM conversion functions.

WHAT'S NEW with version 0.4.1: (see ChangeLog for details)
	- Bug fixes
	- Memory usage changes.

WHAT'S NEW with version 0.4.0: (see ChangeLog for details)
	- Wine now compiles and runs under NetBSD.  Patches are
	  required for NetBSD.
	- Wine stat patches included.  Add "-DWINESTAT" to the definition
	  of COPTS in the main Makefile to activate.
	- Preliminary keyboard handling.
	- Button control window implemented.
	- many other new functions added.

WHAT'S NEW with version 0.3.1: (see ChangeLog for details)
	- LineDDA() completed
	- numerous bug fixes
	- INT 1Ah implemented
	- SOUND DLL implemented
	- More of WIN87EM DLL implemented
	- OpenFile() and friends implemented

WHAT'S NEW with version 0.3.0: (see ChangeLog for details)
	- Mouse capture
	- Text justification and underlining
	- Clipping
	- LoadBitmap() completed
	- Code generated by the Borland compiler should now work

WHAT'S NEW with version 0.2.8: (see ChangeLog for details)
	- Text functions from Alexandre
	- INT 21h from Eric
	- Menu improvements from David
	- Bug fixes and GetProcAddress() stub from me

WHAT'S NEW with version 0.2.7: (see ChangeLog for details)
    - sol.exe gets further.  I did some debugging and now solitaire
      stops when it tries to call GetTextExtent().  Any volunteers?
    - Many DC updates from Alexandre.
    - Menu updates to support underlining characters from David Metcalfe.

WHAT'S NEW with version 0.2.6: (see ChangeLog for details)
    - More region updates from Alexandre

WHAT'S NEW with version 0.2.5: (see ChangeLog for details)
    - Regions implemented by Alexandre
    - More menuing code from me

WHAT'S NEW with version 0.2.4: (see ChangeLog for details)
    - Many improvements to GDI from Alexandre
    - Many improvements to menu handling by me.

WHAT'S NEW with version 0.2.3: (see ChangeLog for details)
    - Bug fixes with SendMessage() and PostMessage()
    - Preliminary menu support

WHAT'S NEW with version 0.2.2: (see ChangeLog for details)
    - Misc bug fixes
    - More bitmap code
    - Timers
    - Memory DC's

WHAT'S NEW with version 0.2.1:
    - I have placed things into sub-directories.  The organization is
      not finalized.  I imagine that the directory structure will
      change as is necessary.  Files in the ./misc directory need
      to be split apart and placed in apropriate directories.
    - Tons of code from Alexandre.  He has constructed the framework
      for handling GDI objects.  He has also provided code for DCEs.
    - Local heap functions have been completed.
    - Bug fixes in global.c and win.c
    - New function GlobalQuickAlloc() combines GlobalAlloc() and
      GlobalLock() into a single function call.
    - New patch kit for Linux 0.99 pl11 kernel.  Thanks to Linus
      who has graciously included our patches into the ALPHA patch
      release cycle.

WHAT'S NEW with version 0.2.0:
    - Alexandre Julliard has provided a replacement for the Tcl code.
      The new code uses Xlib and Xt directly with no intervening
      interpretted language.  This should reduce the learning
      curve for casual hackers.
    - I changed all GLOBAL_ names to Global.

WHAT'S NEW with version 0.1.1:
    - I have completed global memory allocation, but I don't like it.
      It is not 100% compatible with Windows.  I need some more kernel
      modifications for 100% compatibility.
    - Alexandre Julliard has provided written better emulation for
      the Windows message queue.

WHAT'S NEW with version 0.1.0:
    - Latest patches from Alexandre Julliard.
    - minor bug fix in if1632.S

WHAT'S NEW with version 0.0.5:
    - Patches from Alexandre Julliard.  Some integration with Tcl.
    - Generic interface for callback procedures.  This will allow
      callbacks into DLLs.
    - MakeProcInstance() has been implemented but untested.

WHAT'S NEW with version 0.0.4:
    - Eric Youngdale modified wine.c and selector.c to allow loading
      of Windows DLLs.
    - Added global memory allocation routines (GlobalAlloc, GlobalFree,
      and GlobalLock)
    - Bitmap resource loading into global memory.

WHAT'S NEW with version 0.0.3:
    - Fixed bug with sector sizes.
    - Registers at program startup are now set correctly.
    - Segment fixups for relocatable-segment internal entry points.
    - Fixed bug in DOS PSP structure.
    - Some resource loading is done.
    - Added "return" ordinal type to build program.
    - Added comment capability to build program.

WHAT'S NEW with version 0.0.2:

    - Again thanks to Eric Youngdale for some very useful comments.
    - The Windows startup code created by Micrsoft C 7.0 now runs 
      to completion.
    - Added a new patch to the kernel to increase the usable size of
      the ldt to the full 32 entries currently allowed.
    - Imported name relocations are now supported.
    - Source code for my infamous test program is now included.
    - A handful of basic Windows functions are now emulated.  See
      "kernel.spec" for examples of how to use the build program.

WHAT'S NEW with version 0.0.1:

    - Eric Youngdale contributed countless improvements in memory
      efficiency, bug fixes, and relocation.
    - The build program has been completed.  It now lets you specify
      how the main DLL entry point should interface to your emulation
      library routines.  A brief description of how to build these
      specifications is included in the file "build-spec.txt".
    - The code to dispatch builtin DLL calls is complete, but untested.
