Sun Oct 18 14:48:31 1998  Alexandre Julliard  <julliard@winehq.com>

	* files/file.c: Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
	Try to implement the OF_SHARE_XXX options.
	Move the mode translations to functions.

	* include/main.h, ole/compobj.c, ole/ifs.c, ole/ole2disp.c, ole/ole2nls.c, ole/olesvr.c, ole/storage.c:
	Matthew Becker <mbecker@glasscity.net>
	Documentation updates.

	* ole/compobj.c, relay32/ole32.spec:
	Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
	Added stub for CoSetState32.

	* miscemu/main.c: Chad Powell <pxpx@usa.net>
	Added ability to read a startup program from wine.ini file.
	Put it in section [programs] key Startup.

	* include/trackbar.h, include/treeview.h, dlls/comctl32/trackbar.c, dlls/comctl32/treeview.c:
	Alex Priem <alexp@sci.kun.nl>
	Further improvements.

	* include/cursoricon.h, objects/cursoricon.c:
	Turchanov Sergey <turchanov@usa.net>
	Implemented LoadCursorFromFile, fixed DrawIconEx to support offscreen
	drawing, fixed CURSORICON_CreateFromResource to support LR_ semantics.

	* include/bitmap.h, objects/bitmap.c:
	Turchanov Sergey <turchanov@usa.net>
	Fixed LoadImage to support almost all LR_ flags.

	* objects/dib.c: Turchanov Sergey <turchanov@usa.net>
	Fixed bug in DIB_SetImageBits_RLE8 (because 'color' var was WORD, all
	COLOREFs had red part zeroed) that made plenty of cyan colors, minor
	bug fixes, changes to support LR_ flags.

	* include/global.h, memory/virtual.c:
	Turchanov Sergey <turchanov@usa.net>
	Added VIRTUAL_MapFileW to map file to memory in one function call.

	* include/ddraw.h, include/windows.h, include/wintypes.h, windows/multimon.c:
	Turchanov Sergey <turchanov@usa.net>
	Moved Multimonitor API declarations to windows.h.

	* if1632/user.spec, include/driver.h, multimedia/audio.c, multimedia/mcianim.c, multimedia/mcicda.c, multimedia/midi.c, multimedia/mmsystem.c, relay32/winmm.spec, windows/driver.c:
	Turchanov Sergey <turchanov@usa.net>
	Implemented DefDriverProc32 from winmm.dll.

	* controls/scroll.c, include/scroll.h, windows/mdi.c, windows/nonclient.c:
	Alex Korobka <korobka@ams.sunysb.edu>
	Got rid of flickering scrollbar arrows. MDI scrolling speeded up a
	bit.

	* include/winnls.h, ole/nls/deu.nls, ole/ole2nls.c:
	Juergen Schmied <juergen.schmied@metronet.de>
	GetLocaleInfo32A can handle len=0 now, sets LastError and touches
	buffer only when necessary.
	Updated deu.nls and some LCTYPES in winnls.h.

	* if1632/relay.c: Rein Klazes <rklazes@casema.net>
	CallProc[Ex]32W called with lpProcAddress==NULL should return zero and
	not crash.

Sat Oct 17 13:07:48 1998  Alexandre Julliard  <julliard@winehq.com>

	* dlls/comctl32/commctrl.c: Ove Kaaven <ovek@arcticnet.no>
	Reduced huge (1GB) heap creation that caused Starcraft to fail.

	* include/dosexe.h, include/module.h, loader/dos/dosvm.c, multimedia/dplay.c, windows/dialog.c:
	Patrik Stridvall <ps@leissner.se>
	Compile fix for Solaris.

	* multimedia/midi.c: Patrik Stridvall <ps@leissner.se>
	Compile fix for non OSS systems.

	* graphics/ddraw.c: Patrik Stridvall <ps@leissner.se>
	Compile fix for non XF86-DGA systems.

	* libtest/Makefile.in, libtest/volinfo.c:
	Petter Reinholdtsen <pere@td.org.uit.no>
	New file to test DRIVE_GetLabel.

	* multimedia/mcicda.c: Peter Hunnisett <hunnise@nortel.ca>
	Small, suboptimal, fix for 32 bit cdaudio open routines. Needs proper
	32bit cdaudio bit support before it can be removed...

	* graphics/ddraw.c: Peter Hunnisett <hunnise@nortel.ca>
	Added a bunch of stubs for ddraw suface routines. All stubs for
	surface present now.
	Commented out message pump calls. I don't see a reason for them being
	there. Everything works fine with -desktop and -managed still has
	problems. Disagreements?

	* ole/ole2nls.c: Juergen Schmied <juergen.schmied@metronet.de>
	Fixed GetLocaleInfo32A for other languages than en_uk.
	Made it recognise LOCALE_SYSTEM_DEFAULT, LOCALE_SYSTEM_DEFAULT and
	last but not least the first argument lcid where is all about...

	* include/syslevel.h, misc/registry.c, multimedia/dplay.c, multimedia/dsound.c, multimedia/mmsystem.c, multimedia/time.c, windows/caret.c, dlls/msacm32/builtin.c:
	Marcus Meissner <marcus@jet.franken.de>
	Fixed some more missing WINAPIs (hopefully correct).

	* ole/ole2nls.c: Marcus Meissner <marcus@jet.franken.de>
	Fixed the = -> == bug.

	* msdos/int2f.c: Joseph Pranevich <knight@baltimore.wwaves.com>
	Shell parameters (config.sys) and ANSI support stubs.

	* msdos/Makefile.in: Joseph Pranevich <knight@baltimore.wwaves.com>
	Added int16.c and int29.c.

	* include/miscemu.h, msdos/interrupts.c:
	Joseph Pranevich <knight@baltimore.wwaves.com>
	More interrupts that can be done from DOS mode.

	* msdos/int29.c: Joseph Pranevich <knight@baltimore.wwaves.com>
	Added int29 (Fast Write to Screen) support.

	* msdos/int16.c, include/debug.h, include/debugdefs.h:
	Joseph Pranevich <knight@baltimore.wwaves.com>
	Added int16 (Keyboard) support, mostly stubs.

Fri Oct 16 15:40:21 1998  Alexandre Julliard  <julliard@winehq.com>

	* relay32/shell32.spec, dlls/shell32/pidl.c, dlls/shell32/shell32_main.c, dlls/shell32/shellord.c, dlls/shell32/shlfolder.c, dlls/shell32/shlview.c, include/shlobj.h:
	Juergen Schmied <juergen.schmied@metronet.de>
	Many bugfixes, new stubs SHGetRealIDL, SHRegQueryValue32W,
	SHRegQueryValueEx32W, StrRetToStrN, StrChrW, SHAllocShared,
	SHLockShared, SHUnlockShared, SHFreeShared, SetAppStartingCursor32,
	SHLoadOLE32, Shell_MergeMenus32, PathGetDriveNumber32, DriveType32,
	SHAbortInvokeCommand, SHOutOfMemoryMessageBox, SHFlushClipboard.

	* misc/ntdll.c, relay32/ntdll.spec:
	Dietmar Kling <dietmar.kling@usa.net>
	Added undocumented function RtlOpenCurrentUser.

	* objects/cursoricon.c, misc/shell.c, misc/ver.c, misc/version.c, loader/elf.c, loader/module.c, loader/pe_image.c, loader/pe_resource.c, include/neexe.h, include/pe_image.h, include/peexe.h, debugger/dbgmain.c, debugger/msc.c:
	Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
	Renamed all LPIMAGE_* types to PIMAGE_*.

Thu Oct 15 13:03:10 1998  Alexandre Julliard  <julliard@winehq.com>

	* windows/winpos.c: Rein Klazes <rklazes@casema.net>
	Fixed an error when an owned window activates its owner during
	creation.

	* windows/defdlg.c: Rein Klazes <rklazes@casema.net>
	Closing a dialog using the menu bar ("x" or "-" button or windows
	menu) must generate a WM_COMMAND+IDCANCEL message, unlike closing
	normal windows when DestroyWindow() is called.

	* dlls/shell32/pidl.c:
	Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>
	Added missing WINAPIs.

	* windows/winpos.c, win32/ordinals.c, relay32/user32.spec:
	Juergen Schmied <juergen.schmied@metronet.de>
	New stubs PrivateExtractIconEx[AW], PrivateExtractIconsW,
	RegisterShellHookWindow, DeregisterShellHookWindow, GetProgmanWindow,
	GetTaskmanWindow, SetProgmanWindow, SetShellWindowEx,
	SetTaskmanWindow.

	* relay32/ntdll.spec, misc/ntdll.c:
	Juergen Schmied <juergen.schmied@metronet.de>
	New stubs NtQueryInformationThread, NtQueryInformationToken,
	RtlAllocateAndInitializeSid, RtlEqualSid, RtlFreeSid.

	* multimedia/mmsystem.c: Turchanov Sergey <turchanov@usa.net>
	Fixed PlaySound to start its thread the right way.

Wed Oct 14 18:40:35 1998  Alexandre Julliard  <julliard@winehq.com>

	* controls/combo.c, controls/listbox.c:
	Alex Korobka <korobka@ams.sunysb.edu>
	CB_SETCURSEL and some other fixes.

	* windows/queue.c: Alex Korobka <korobka@ams.sunysb.edu>
	Better QUEUE_FlushMessages().

	* relay32/gdi32.spec, objects/font.c, include/windows.h, if1632/gdi.spec:
	Moshe Vainer <moshev@easybase.com>
	Partial implementation of GetOutlineTextMetrics32A.
	Added structures for OUTLINETEXTMETRICS.

	* objects/dc.c, include/gdi.h, graphics/x11drv/bitblt.c, graphics/x11drv/bitmap.c, graphics/x11drv/init.c:
	Ulrich Weigand <weigand@informatik.uni-erlangen.de>
	Do not clip source rectangle even by visible region for bitblts.
	Added field 'totalExtent' to WIN_DC_INFO.

	* msdos/vxd.c: Ulrich Weigand <weigand@informatik.uni-erlangen.de>
	Added stub for VMM PM API AH=026[de] (never say 'safe mode').

	* memory/heap.c: Ulrich Weigand <weigand@informatik.uni-erlangen.de>
	Bugfix: Local32Free caused free handles list corruption.

	* include/debugtools.h: Marcus Meissner <marcus@jet.franken.de>
	Fixed --disable-debug config option.

Tue Oct 13 12:50:04 1998  Alexandre Julliard  <julliard@winehq.com>

	* relay32/shell32.spec, dlls/shell32/shellord.c:
	Petter Reinholdtsen <pere@td.org.uit.no>
	Added stubs SHRegCloseKey(), SHRegOpenKey[AW](), SHRegQueryValueExA()
	and FileIconInit() needed by Win95 explorer.

Mon Oct 12 07:25:54 1998  Alexandre Julliard  <julliard@winehq.com>

	* windows/dialog.c, controls/button.c, controls/menu.c:
	Norman Stevens <norman@arcady.u-net.com>
	Improving keyboard handling, including accelerator keys in dialog
	boxes. Also fixes enter key in Agent32 edit box.

Sun Oct 11 19:37:23 1998  Alexandre Julliard  <julliard@winehq.com>

	* misc/commdlg.c: Eric Pouech  <eric.pouech@lemel.fr>
	Added support in file dialog boxes handling for filters like
	"*.txt;*.bat".

	* win32/kernel32.c, scheduler/thread.c, loader/module.c, loader/pe_image.c, loader/task.c, include/module.h, include/pe_image.h:
	Ulrich Weigand <weigand@informatik.uni-erlangen.de>
	Implemented new PE DLL initalization code, trying to call the
	DllEntryPoint routines always in correct order :-)
	Bypass snooping when getting data buffer addresses (thunk buffers,
	__GP handlers) and for 32-bit routines directly called from 16-bit
	(due to stack address size problems).

	* win32/ordinals.c, relay32/kernel32.spec, loader/ne/module.c:
	Ulrich Weigand <weigand@informatik.uni-erlangen.de>
	Implemented CommonUnimpStub, MapHInst(LS|SL)_PN, W32S_BackTo32.
	Stub for HouseCleanLogicallyDeadHandles, fixed k32wvsprintfA.

	* tools/build.c, if1632/kernel.spec, if1632/relay.c, if1632/thunk.c:
	Ulrich Weigand <weigand@informatik.uni-erlangen.de>
	Implemented (partially) the KERNEL Thunklet API and Callback Client
	API (KERNEL.560-568,604-612,619-622).
	Added stubs for K228, K237, KERNEL.365, KERNEL.447.

	* objects/bitmap.c, if1632/gdi.spec:
	Ulrich Weigand <weigand@informatik.uni-erlangen.de>
	Stubs for CreateUser(Discardable)Bitmap16.

	* memory/heap.c, include/winnt.h:
	Ulrich Weigand <weigand@informatik.uni-erlangen.de>
	Implemented HEAP_WINE_CODE16SEG SEGPTR heaps with 16-bit code segments.

	* memory/global.c, include/windows.h:
	Ulrich Weigand <weigand@informatik.uni-erlangen.de>
	GlobalFix16 is supposed to return selector to the memory area.

	* msdos/vxd.c, if1632/Makefile.in, if1632/builtin.c, if1632/comm.spec, if1632/wprocs.spec:
	Ulrich Weigand <weigand@informatik.uni-erlangen.de>
	Stubs for COMM.DRV, REBOOT.VXD, VDD.VXD.

	* scheduler/process.c, scheduler/syslevel.c, include/sig_context.h, include/syslevel.h:
	Ulrich Weigand <weigand@informatik.uni-erlangen.de>
	Use emergency TEB selector to avoid debugger crashes when stepping
	through relay stubs (or when FS is invalid otherwise).

	* windows/event.c, windows/keyboard.c:
	Ulrich Weigand <weigand@informatik.uni-erlangen.de>
	MOUSE.DRV routines moved to event.c. Call mouse event procedure.

	* windows/dce.c, windows/painting.c, windows/scroll.c, objects/clipping.c, objects/dc.c, objects/dcvalues.c, include/dc.h, include/windows.h, if1632/gdi.spec, graphics/x11drv/bitblt.c, graphics/x11drv/clipping.c, graphics/x11drv/graphics.c, graphics/x11drv/text.c, graphics/path.c:
	Ulrich Weigand <weigand@informatik.uni-erlangen.de>
	Changed DC members w.hVisRgn, w.hClipRgn, amd w.hGCClipRgn to
	coordinates relative to the device, not the DC origin. This is
	necessary to correctly implement GetClipRgn16 and InquireVisRgn.
	SelectVisRgn also expects region in device-relative coordinates.
	Adapted the rest of Wine to this coordinate change.
	Implemented ExtSelectClipRgn.

	* tools/winapi-check, scheduler/syslevel.c, files/dos_fs.c:
	Andreas Mohr <100.30936@germany.net>
	Small fix.

	* loader/ne/segment.c, include/module.h, include/neexe.h, if1632/kernel.spec:
	Andreas Mohr <100.30936@germany.net>
	Yet another small self-loader fix.

	* files/drive.c: Andreas Mohr <100.30936@germany.net>
	Fixed severe bug: SetCurrentDirectory32A didn't set pTask->curdir
	correctly due to current drive being set too late.

	* Make.rules.in: Patrik Stridvall <ps@leissner.se>
	Use $(AS) instead of $(CC) to compile .s files.

	* relay32/.cvsignore, relay32/Makefile.in, relay32/builtin32.c, include/debug.h, include/debugdefs.h, include/mmreg.h, if1632/.cvsignore, if1632/Makefile.in, if1632/builtin.c, dlls/Makefile.in, Makefile.in, configure, configure.in:
	Patrik Stridvall <ps@leissner.se>
	Started the implementation of MSACM.DLL, MSACM32.DLL and IMAGEHLP.DLL.

	* include/imagehlp.h, relay32/imagehlp.spec, dlls/imagehlp/.cvsignore, dlls/imagehlp/Makefile.in, dlls/imagehlp/access.c, dlls/imagehlp/debug.c, dlls/imagehlp/imagehlp_main.c, dlls/imagehlp/integrity.c, dlls/imagehlp/internal.c, dlls/imagehlp/modify.c, dlls/imagehlp/symbol.c:
	Patrik Stridvall <ps@leissner.se>
	Started the implementation of IMAGEHLP.DLL.

	* include/msacm.h, include/msacmdrv.h, relay32/msacm32.spec, if1632/msacm.spec, dlls/msacm32/.cvsignore, dlls/msacm32/Makefile.in, dlls/msacm32/builtin.c, dlls/msacm32/driver.c, dlls/msacm32/filter.c, dlls/msacm32/format.c, dlls/msacm32/internal.c, dlls/msacm32/msacm32_main.c, dlls/msacm32/stream.c, dlls/msacm/.cvsignore, dlls/msacm/Makefile.in, dlls/msacm/msacm_main.c:
	Patrik Stridvall <ps@leissner.se>
	Started the implementation of MSACM.DLL and MSACM32.DLL.

	* win32/device.c: Patrik Stridvall <ps@leissner.se>
	Removed things that were earlier added by mistake.

	* relay32/winmm.spec: Patrik Stridvall <ps@leissner.se>
	The implementation of mmioWrite is now called instead of the stub.

	* include/shell.h, dlls/shell32/shellole.c, dlls/shell32/shellord.c, dlls/shell32/shlfolder.c, dlls/shell32/shlview.c:
	Juergen Schmied <juergen.schmied@metronet.de>
	Bugfixes, shellview uses DPA's now, IShellView_GetItemObject implemented.

	* relay32/shell32.spec, dlls/shell32/shell32_main.c:
	Juergen Schmied <juergen.schmied@metronet.de>
	New stubs: SHGetFileInfo32W, ReadCabinetState, WriteCabinetState, IsUserAdmin.
	Implemented: SHGetPathFromIDList32W.
	Changed PathCombine.

	* include/shlobj.h: Juergen Schmied <juergen.schmied@metronet.de>
	New structures DVASPECT, TYMED, IDLList.
	Shell specific clipboard formats.

	* relay32/winspool.spec, misc/printdrv.c:
	Juergen Schmied <juergen.schmied@metronet.de>
	Stub EnumPrintersW.

	* dlls/shell32/dataobject.c:
	Juergen Schmied <juergen.schmied@metronet.de>
	Implemented first functions.

	* dlls/shell32/pidl.c, dlls/shell32/pidl.h:
	Juergen Schmied <juergen.schmied@metronet.de>
	New class IDLList "Item ID List List" (internal).

	* misc/ver.c: Juergen Schmied <juergen.schmied@metronet.de>
	Small changes (uses HIWORD/LOWORD).

	* windows/dialog.c, relay32/user32.spec:
	Sat Oct 10 12:00:00 1998  Juergen Schmied <juergen.schmied@metronet.de>
	Stub CreateDialogIndirectParamAorW.

	* Makefile.in, configure, configure.in:
	Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt>
	Don't install object files when --disable-lib is selected.

	* debugger/hash.c, debugger/msc.c:
	Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt>
	Don't print name for 32 bit lib multiple times.
	Clean up printing in DEBUG_ProcessDeferredDebug.

	* memory/heap.c, dlls/comctl32/tab.c, controls/combo.c:
	David Luyer <luyer@ucs.uwa.edu.au>
	Small fixes.

	* files/drive.c: Petter Reinholdtsen <pere@td.org.uit.no>
	Bugfix: Changed GetDriveType32A(NULL) to use cwd's root.

	* ole/typelib.c, ole/compobj.c, ole/ifs.c, ole/moniker.c, ole/ole2.c, ole/ole2disp.c, ole/ole2nls.c, ole/olecli.c, ole/olesvr.c, ole/storage.c, misc/ntdll.c, misc/registry.c:
	Matthew Becker <mbecker@glasscity.net>
	Documentation corrections/standardizations.

	* multimedia/audio.c, multimedia/init.c, multimedia/mcianim.c, multimedia/mcicda.c, multimedia/mcistring.c, multimedia/midi.c, multimedia/mmsystem.c, include/mmsystem.h, include/multimedia.h:
	Eric Pouech  <eric.pouech@lemel.fr>
	Started coding 32 bit MCI handling.
	Added Open/Close to low-level MCI drivers (audio, midi, anim, cda).
	Wrote MCI MIDI support.

	* graphics/x11drv/graphics.c: Rein Klazes <rklazes@casema.net>
	Yet another improvement to the bezier code.

	* windows/message.c: Rein Klazes <rklazes@casema.net>
	GetTickCounts() has a granularity in windows of 25 msec's.
	Girotel's serial communication appears to depend on it, so I guess
	it's a feature...

	* misc/comm.c: Rein Klazes <rklazes@casema.net>
	Update the modemn status bit that indicates whether the RLSD line is
	active in every call to GetCommError(). This is not the proper place,
	but since wine doesn't do any event-stuff...
	Fixed some TRACE call's faced with non zero terminated strings.
	Restore the terminal state at CloseCommt to the state it was at
	OpenComm(), so the modem will go off-hook.

	* loader/module.c: Alexander Larsson  <alla@lysator.liu.se>
	GetModuleFileName32A() returns long filename if app sets osversion >=
	4.0. Also moved the long filename hackery to GetLongPathName32A() so
	it can be used by win32 programs.

	* files/dos_fs.c: Alexander Larsson <alla@lysator.liu.se>
	GetLongPathName32A() returns dos format long filename instead of unix
	format.

	* dlls/comctl32/listview.c: Eric Kohl <ekohl@abo.rhein-zeitung.de>
	Small fixes.

	* relay32/shell32.spec, dlls/shell32/shellord.c:
	Eric Kohl <ekohl@abo.rhein-zeitung.de>
	Added SHFlushClipboard.

	* relay32/comctl32.spec, include/commctrl.h, dlls/comctl32/comctl32undoc.c:
	Eric Kohl <ekohl@abo.rhein-zeitung.de>
	Fixed some undocumented functions.
	Changed algorithm in DPA_QuickSort().
	Fixed heap creation/destruction and control [un]registration in
	ComCtl32LibMain().

	* dlls/comctl32/header.c: Eric Kohl <ekohl@abo.rhein-zeitung.de>
	Fixed a bug.

	* include/tooltips.h, dlls/comctl32/tooltips.c:
	Eric Kohl <ekohl@abo.rhein-zeitung.de>
	Added tracking support and fixed loading of resource strings.
	Added unregister code.

	* include/debug.h, include/debugdefs.h, include/ipaddress.h, include/nativefont.h, dlls/comctl32/Makefile.in, dlls/comctl32/commctrl.c, dlls/comctl32/ipaddress.c, dlls/comctl32/nativefont.c:
	Eric Kohl <ekohl@abo.rhein-zeitung.de>
	Added IPAddress and NativeFont controls.

	* include/imagelist.h, dlls/comctl32/imagelist.c:
	Eric Kohl <ekohl@abo.rhein-zeitung.de>
	Some minor improvements.

	* include/toolbar.h, dlls/comctl32/toolbar.c:
	Eric Kohl <ekohl@abo.rhein-zeitung.de>
	Improved drawing and placement code. Explorer style common dialogs are
	looking good now.

	* objects/cursoricon.c: Eric Kohl <ekohl@abo.rhein-zeitung.de>
	Fixed bug in DrawIconEx32().

	* misc/main.c: Eric Kohl <ekohl@abo.rhein-zeitung.de>
	Improved GetSystemInformation32[A/W].

	* windows/nonclient.c, relay32/user32.spec, include/windows.h, if1632/user.spec:
	Eric Kohl <ekohl@abo.rhein-zeitung.de>
	Added DrawCaption[16/32] and DrawCaptionTemp[16/32A/32W].
	Fixed handling of WS_EX_TOOLWINDOW.

	* documentation/common_controls: Eric Kohl <ekohl@abo.rhein-zeitung.de>
	Updated.

	* windows/event.c, windows/keyboard.c, include/keyboard.h:
	David Faure <faure@kde.org>
	Added KEYBOARD_UpdateState, to read the modifiers when the wine app is
	activated. Uses the new KEYBOARD_UpdateOneState.
	Fixed a problem with menu accelerators (Alt-letter generates a down
	arrow event which beeps if not filtered).
	Speeded up ToAscii16/32() a little bit.

	* debugger/break.c, debugger/db_disasm.c, debugger/dbg.y, debugger/expr.c, debugger/source.c, debugger/types.c:
	Ove Kaaven <ovek@arcticnet.no>
	Made Wine's debugger work satisfactorily with DOS apps.
	Perhaps dereferencing work better for Win16 apps too now, but
	it appears the debugger core wasn't designed for segmentation.

	* msdos/dpmi.c: Ove Kaaven <ovek@arcticnet.no>
	Simulates DPMI memory map by converting lower-MB segment base
	addresses as necessary. Implemented allocating/freeing DOS memory
	blocks. Added XMS hook. (DPMI remains disabled by default until
	someone implements the raw mode switch entry points pkunzip needs.)

	* msdos/int21.c: Ove Kaaven <ovek@arcticnet.no>
	I think it's time to rethink the HFILE16_TO_HFILE32 strategy,
	can't keep working around flaws in it like this (now stdio
	was getting closed when programs close handles >=5)

	* msdos/xms.c, msdos/Makefile.in, msdos/int2f.c:
	Ove Kaaven <ovek@arcticnet.no>
	Implemented basic XMS functions. wcb.exe (Win16 disassembler) now
	seems to work fine under Wine.

	* loader/dos/dosvm.c, loader/dos/module.c, include/dosexe.h, include/miscemu.h:
	Ove Kaaven <ovek@arcticnet.no>
	Moved some system dependencies to loader/dos/dosvm.c. Implemented
	environmental argv[0] passing to DOS apps. Added XMS hooks.

	* debugger/stabs.c: Ove Kaaven <ovek@arcticnet.no>
	Added a memset() to prevent a debugger segfault caused by
	uninitialized pointers in the stabs lookup tables.

	* graphics/ddraw.c: Marcus Meissner <marcus@jet.franken.de>
	A few fixes.

	* relay32/ntdll.spec: Marcus Meissner <marcus@jet.franken.de>
	Added RtlAllocateAndInitializeSid entry.

	* loader/Makefile.in, loader/elf.c, loader/module.c, loader/pe_image.c, include/config.h.in, include/module.h, include/pe_image.h, include/peexe.h, configure, configure.in:
	Marcus Meissner <marcus@jet.franken.de>
	Generic dynamic dll loader using dl*() API.
	Includes: stdcall->cdecl mapping ability, snooping.
	(Tested only with glide2x.dll -> libglide2x.so)

	* multimedia/init.c, multimedia/time.c, include/mmsystem.h, include/multimedia.h:
	Marcus Meissner <marcus@jet.franken.de>
	Added win32 enhanced functionality to timer callbacks.

	* win32/console.c: Marcus Meissner <marcus@jet.franken.de>
	Added bad hacks so WriteConsoleOutput works on vt100 and PeekMessage
	does at least a bit of keyboard input.

	* relay32/snoop.c: Marcus Meissner <marcus@jet.franken.de>
	Should display again.

Sat Oct 10 15:52:46 1998  Alexandre Julliard  <julliard@winehq.com>

	* windows/dialog.c: Dave Pickles <davep@nugate.demon.co.uk>
	Implemented DS_CENTER dialog style.

	* misc/main.c: Pablo Saratxaga <srtxg@chanae.alphanet.ch>
	Added function to build the Windows numeric language ID from language,
	code, charset and dialect strings, like used by Unix LANG variable.

	* ole/ole2nls.c, ole/nls/README, include/winnls.h, ole/nls/*.nls:
	Pablo Saratxaga <srtxg@chanae.alphanet.ch>
	More NLS data.

	* graphics/ddraw.c: Peter Schlaile <udbz@rz.uni-karlsruhe.de>
	Fixed a lot of bugs in ddraw.c to make xlib support work.
	Runs successfully TR2Demo and Jazz Jackrabbit II Demo!

	* objects/gdiobj.c: Cliff Wright <cliff@snipe444.org>
	Added DC object type to the list of valid objects that can be deleted
	by DeleteObject32.

Sun Oct  4 18:20:29 1998  Alexandre Julliard  <julliard@winehq.com>

	* ChangeLog:
	Starting new format changelog (older changes moved to
	documentation/ChangeLog.OLD).
