Copyright Robert J. Amstadt, 1993. All code is provided without warranty. All code is covered by the license contained in the file LICENSE unless explicitly stated in the individual source file. INSTALLATION: 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 Windows' executables. You must have a file "wine.ini" in the current directory, your home directory, or in the path specified by the environment variable WINEPATH. Multiple directories in WINEPATH should be seperated by semi-colons and NOT by colons! You must specify the entire path to the executable, or a filename only (using the path= statement in wine.ini as the search path) For example: to run Windows' solitaire: export WINEPATH=/etc;/usr/windows wine sol (using the path= statement in wine.ini wine sol.exe as the search path) wine c:\\windows\\sol.exe (using a dosfilename) wine /usr/windows/sol.exe (using a unixfilename) Have a nice game of solitaire, but be careful. Emulation isn't perfect. So, occassionally it will crash. 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. TODO: - Segment fixup code completion. - Trap and handle DOS and DPMI calls. - GlobalAlloc of code segments. - Rewrite global memory support including kernel mods to allow application to mess with page map. - Handle self-loading applications. - Resource loading - Lots and lots of API fiunctions. BUILD: The documentation for the build program is in the file build-spec.txt FINALE: Good luck, If you successfully add anything, please send me a copy. Bob Amstadt bob@amscons.com