-This is release 981108 of Wine, the MS Windows emulator. This is still a
-developers only release. There are many bugs and many unimplemented API
-features. Most applications still do not work correctly.
+This is release 981108 of Wine, a free implementation of Windows on
+Unix. This is still a developers only release. There are many bugs
+and unimplemented features. Most applications still do not work
+correctly.
Patches should be submitted to "julliard@lrc.epfl.ch". Please don't
forget to include a ChangeLog entry.
It should also be available from any site that mirrors tsx-11 or sunsite.
You can also get the current source directly from the CVS tree. Check
-http://www.winehq.com/cvs.html for details.
+http://www.winehq.com/dev.html for details.
If you submitted a patch, please check to make sure it has been
included in the new release.
-This is intended to be a document to help new developers get started.
-Existing developers should feel free to add their comments.
+This document should help new developers get started. Like all of Wine, it
+is a work in progress.
SOURCE TREE STRUCTURE
=====================
-Source tree is loosely based on the original Windows modules. Most
-directories are shared between the binary emulator and the library.
+The Wine source tree is loosely based on the original Windows modules.
+Most of the source is concerned with implementing the Wine API, although
+there are also various tools, documentation, sample Winelib code, and
+code specific to the binary loader.
-Shared directories:
--------------------
+Wine API directories:
+---------------------
KERNEL:
files/ - file I/O
loader/ - Win16-, Win32-binary loader
memory/ - memory management
- msdos/ - DOS and BIOS emulation
+ msdos/ - DOS features and BIOS calls (interrupts)
scheduler/ - process and thread management
GDI:
resources/ - built-in dialog resources
windows/ - window management
+Other DLLs:
+
+ dlls/*/ - Other system DLLs implemented by Wine
+
Miscellaneous:
- misc/ - shell, registry, winsock, etc...
+ misc/ - shell, registry, winsock, etc.
multimedia/ - multimedia driver
- ipc/ - SysV IPC management
+ ipc/ - SysV IPC based interprocess communication
win32/ - misc Win32 functions
Tools:
+------
- rc/ - resource compiler
- tools/ - relay code builder + misc tools
+ rc/ - old resource compiler
+ tools/ - relay code builder, new rc, etc.
documentation/ - some documentation
-Emulator-specific directories:
-------------------------------
+Binary loader specific directories:
+-----------------------------------
debugger/ - built-in debugger
if1632/ - relay code
miscemu/ - hardware instruction emulation
graphics/win16drv/ - Win16 printer driver
-Winelib-specific directories:
+Winelib specific directories:
-----------------------------
- library/ - Winelib-specific routines (should disappear)
- programs/ - utilities (Progman, WinHelp)
- libtest/ - Winelib test samples
+ library/ - Required code for programs using Winelib
+ libtest/ - Small samples and tests
+ programs/ - Extended samples / system utilities
IMPLEMENTING NEW API CALLS
==========================
==============================================
In order to support both Win16 and Win32 APIs within the same source
-code, as well as share the include files between the emulator and the
-library, the following convention must be used in naming all API
+code, the following convention must be used in naming all API
functions and types. If the Windows API uses the name 'xxx', the Wine
code must use:
You should then use the macros WINELIB_NAME[_AW](xxx) or
DECL_WINELIB_TYPE[_AW](xxx) (defined in include/wintypes.h) to define
-the correct 'xxx' function or type for Winelib. When compiling the
-emulator, 'xxx' is _not_ defined, meaning that you must always specify
-explicitly whether you want the 16-bit or 32-bit version.
+the correct 'xxx' function or type for Winelib. When compiling Wine
+itself, 'xxx' is _not_ defined, meaning that code inside of Wine must
+always specify explicitly the 16-bit or 32-bit version.
If 'xxx' is the same in Win16 and Win32, or if 'xxx' is Win16 only,
you can simply use the same name as Windows, i.e. just 'xxx'. If
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 a program which allows running Microsoft Windows programs
+(including DOS, Windows 3.x and Win32 executables) on Unix. It
+consists of a program loader which loads and executes an Microsoft
+Windows binary, and a library that implements Windows API calls using
+their Unix or X11 equivalents. The library may also be used for
+porting Win32 code into native Unix executables.
-Wine is free software. See the file LICENSE for the details.
-Basically, you can do anything with it, except claim that you wrote it.
+Wine is free software, and its license (contained in the file LICENSE)
+is BSD style. Basically, you can do anything with it except claim
+that you wrote it.
2. COMPILATION
-To compile the emulator, you must have one of:
+To compile Wine, you must have one of:
Linux version 0.99.13 or above
NetBSD-current
When invoking Wine, you must specify the entire path to the executable,
or a filename only.
-For example: to run Windows' solitaire:
+For example: to run Solitaire:
wine sol (using the searchpath to locate the file)
wine sol.exe
- wine c:\\windows\\sol.exe (using a dosfilename)
+ wine c:\\windows\\sol.exe (using a DOS filename)
- wine /usr/windows/sol.exe (using a unixfilename)
+ wine /usr/windows/sol.exe (using a Unix filename)
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.
-
-UPDATE: Windows 95 components are known to cause more crashes compared
- to the equivalent Windows 3.1 libraries.
-
+Wine is not yet complete, so some programs may crash. You will be dropped
+into a debugger so that you can investigate and fix the problem.
5. GETTING MORE INFORMATION
comp.emulators.ms-windows.wine. The Wine FAQ is posted there every
month.
-WWW: Please browse old messages on http://www.dejanews.com to check whether
+WWW: Please browse old messages on http://www.dejanews.com/ to check whether
your problem is already fixed before posting a bug report to the
newsgroup.
A great deal of information about Wine is available from WineHQ at
- http://www.winehq.com. Untested patches against the current
- release are available at http://www.winehq.com/patches.
+ http://www.winehq.com/. Untested patches against the current release
+ are available on the wine-patches mailing list; see
+ http://www.winehq.com/dev.html#ml for more information.
CVS: The current Wine development tree is available through CVS.
- Go to http://www.winehq.com/cvs.html for more information.
+ Go to http://www.winehq.com/dev.html for more information.
FAQ: The Wine FAQ is located at http://pw1.netcom.com/~dagar/wine.html.
Wine Man Page
- The man page for the wine emulator is in this directory. It is installed
-by 'make install'.
+ The man page for Wine is in this directory. It is installed by 'make
+install'.
Wine Reference Manual
The next step depends on the nature of the missing function.
-Case 1: It's easy to write a complete emulation of the
+Case 1: It's easy to write a complete implementation of the
function. (`memmove' belongs to this case.)
- You add your emulation in misc/port.c surrounded by
+ You add your implementation in misc/port.c surrounded by
"#ifndef HAVE_MEMMOVE" and "#endif".
You might have to add a prototype for your function. If so,
include/miscemu.h might be the place. Don't forget to protect
that definition by "#ifndef HAVE_MEMMOVE" and "#endif" also!
-Case 2: A general emulation is hard, but Wine is only using
+Case 2: A general implementation is hard, but Wine is only using
a special case.
An example is the various "wait" calls used in SIGNAL_child
.\" -*- nroff -*-
-.TH WINE 1 "October 20, 1998" "Version 981018" "Windows Emulator"
+.TH WINE 1 "October 20, 1998" "Version 981018" "Windows On Unix"
.SH NAME
-wine \- run Windows programs under Unix
+wine \- run Windows programs on Unix
.SH SYNOPSIS
.B wine
[
]
.SH DESCRIPTION
.B wine
-invokes the Windows emulator.
+.I program
+loads and runs the given program, where the program is a DOS, Windows 3.x,
+or Win32 executable.
.PP
.B wine
currently runs a growing list of applications written for both Win3.1 and
The latest snapshot of the code may be obtained via CVS. For information
on how to do this, please see
.I
-http://www.winehq.com/cvs.html
+http://www.winehq.com/dev.html
.PP
-The
+WineHQ, the
.B wine
-homepage is at
-.I http://www.winehq.com.
+development headquarters, is at
+.I http://www.winehq.com/.
This website contains a great deal of information about
.B wine
as well as a collection of unofficial patches against the current release.
.PD 0
.TP
.I /usr/local/bin/wine
-The invoker program.
+The Wine program loader.
.TP
.I /usr/local/etc/wine.conf
Global configuration file for wine.
@ifinfo
@format
START-INFO-DIR-ENTRY
-* wine: (wine.info). The Windows Emulator.
+* wine: (wine.info). Windows on Unix.
END-INFO-DIR-ENTRY
@end format
@end ifinfo
@end iftex
@ifinfo
-This file documents Wine, the Windows Emulator.
+This file documents Wine, a system providing Microsoft Windows compatibility
+to Unix.
@c
Copyright @copyright{} 1997,1998 The Wine authors. @*
This is edition @winemanualversion{}, last updated @winemanualdate{},
of @winemanualtitle{}.
-Wine (Wine Is Not an Emulator, or the WINdows Emulator)
-is both an emulator that runs @mswindows{} executables and a library
-that can be used to compile @mswindows{} source code.
+Wine provides both source and binary compatibility with Microsoft Windows.
+The Wine API is designed to be as compatible as possible with various
+implementations of the Windows APIs. The Wine library allows porting
+Windows source to Unix, and a program loader allows unaltered Windows binaries
+to be run on Unix.
-Wine is free software. Wine is still in development-only state.
+Wine is free software. Wine is still under development.
@end ifinfo
@menu
@item
A library, called @winelib{}, which implements this API
@item
-A binary compatibility layer, sometimes referred to as the Wine
-emulator, which acts as a program loader for native Windows binaries.
-The emulator works for both 16 and 32 bit Intel binaries, and
+A binary compatibility layer
+acts as a program loader for native Windows binaries.
+It works for both 16 and 32 bit Intel binaries, and
provides all the appropriate translation between 16 and 32 bit code
(thunking). Real mode interrupts are also supported, and their
functionality is implemented in @winelib{}.