home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Der Mediaplex Sampler - Die 6 von Plex
/
6_v_plex.zip
/
6_v_plex
/
DISK6
/
OS_20
/
WATF16_A.ZIP
/
README.A
< prev
next >
Wrap
Text File
|
1993-09-23
|
47KB
|
1,197 lines
NOTE: Since the BPATCH.EXE program itself is being patched in this release,
the patching process should not be done from an OS/2 command prompt. Issue
the APPLYA command from a DOS box instead.
*****************
** C Compiler **
*****************
Added the -ri switch. This switch causes functions that
are declared as returning char's or short's to return
int's instead. The return value in the calling function
is still treated as the correct type. This switch is to
help old, incorrect code which defines functions as
returning 'char' or 'short' but does not declare the return
type in other files (so that the compiler assumes that
the function returns 'int'). This switch should only
be used as a last resort. WATCOM strongly recommends
that functions be properly declared in all source
files.
===========================================================
If there was a function in the middle of an expression
that was marked as "#pragma aux <func> aborts", the compiler
would generate an internal compiler error 3. E.g.:
#include <stdlib.h>
#include <stdio.h>
foo( int a )
{
if( a ) printf( "bad\n" ), exit( 1 );
}
===========================================================
Compiler was translating double-byte characters found in normal
character constants and literal strings to UNICODE with -zk0u
option. Compiler should only do this translation for wide
character constants (L'abc') and wide character strings (L"abc").
===========================================================
Some floating-point values that are integral did not generate
the correct floating-point representation because of some
rounding errors.
===========================================================
Changed the behaviour of the -bd switch to emit correct
library references when building Dynamic Link Libraries
for Windows.
===========================================================
The -pc option was not properly suppressing comments
in conditional compilation blocks that were being
excluded.
===========================================================
Removed mapping of 5c (\) to unicode a5 (Yen symbol) since it
made specification of paths impossible (e.g. \\boot\penpoint).
===========================================================
The program:
char foo[60u*1024];
main()
{
printf( "%d\n", sizeof sizeof foo );
}
would print 4 with the 16 bit compiler rather than 2 as
it should have (the type of "sizeof foo" was "long" rather
than "unsigned int").
===========================================================
Preprocessing directives were not scanned properly if the
previous line consisted of white space followed by line
continuation character '\'.
===========================================================
Several problems with based pointers have been resolved.
===========================================================
The compiler did not always handle out of memory
conditions properly.
===========================================================
The compiler did not delete its temporary work file
if the code generator issued a fatal error message.
===========================================================
*********************
** Code Generator **
*********************
The compiler would generate an internal compiler error #81
when compiling a call to pow() if inline 80x87 functions were enabled
and the /fpr switche was used.
===========================================================
If the address of a struct/array was taken, the loop optimizer
could lost this information, and incorrectly treat a field/element
as a loop invariant variable
===========================================================
The 32-bit code generator did not generate the correct
frame information for fixups of __far16 items under
OS/2 2.x.
===========================================================
When the expression being switched on was volatile, the code
generated would sometimes load the value to test against for
the default case then load it again to index into the jump table.
This was bad if the value changed in between references.
===========================================================
The inline assembler for the 386 compilers would incorrectly
prepend an operand size prefix (0x66) to software interrupt
instructions (e.g. int 0x21).
===========================================================
Internal compiler error #40 fixed. Occured when transforming
"movzx eax,xxx" into "mov al,xxx; and eax,0ffh"
===========================================================
Codegen would GP-fault sometimes when doing some very
obvious branch folding.
===========================================================
#pragma aux foo="<code>" parm caller []; would not
have parm popping code generated when inlined.
===========================================================
Incorrect code was being generated for loops involving an
indexed access to a static array. During strength-reduction,
the optimizer would try to reduce a multiply by a relocatable
constant into a series of shifts and adds.
===========================================================
Arithmetic expressions involving a relocatable constant and an
absolute constant would not get folded properly.
===========================================================
When doing common subexpression elimination, the code generator
would sometimes get confused and propagate a constant into an
index in the wrong manner. This could lead to code such as
array[k++] = 10;
array[k++] = 19;
being compiled into something which resembled
mov +00[ebp], 10
mov +10[ebp], 19 ; 10 comes from last instruction
===========================================================
After having split a large move into a pair of smaller moves,
one of the resulting moves would not be generated because of
an incorrect calculation of the temp's location.
===========================================================
Fixed handling of volatile structure members in loops.
Codegen would erroneously hoist compares involving the
volatile members.
===========================================================
Codegen would try to save value of constant global|static symbols
across function calls if it had cached the value in a register.
===========================================================
Don't emit __loadds stuff if DS is not pegged. If DS is not
pegged, then the value of DS just doesn't matter.
===========================================================
Fix a bug which caused the segment override to be left off of
instructions which were generated by splitting up another instruction.
===========================================================
When performing constant folding on <expr> * 0 or other similar
constructs, <expr> would be tossed even if it had side effects.
===========================================================
The code generator did not produce the correct symbolic (-d2)
information for the symbol 'b' in the following C++ code:
int a;
static int & b = a;
===========================================================
Calling a far16 function which takes a parameter by reference
in FORTRAN could cause incorrect code to be generated. The
optimizer did not realize that the call could modify
the reference parameter.
===========================================================
Inlining code which contained stack checks would cause a
GP fault.
===========================================================
Under certain rare circumstances that are too complex
to explain, the code generator would sometimes duplicate
a push register instruction.
===========================================================
****************
** C Library **
****************
Default windowing system didn't work properly when single
characters were output.
===========================================================
SetWindowsHookEx was not set up properly for Windows extender.
===========================================================
improved speed of itoa and ltoa
===========================================================
Updated the 16-bit windows library so that users of the
default windowing system do not have to explictly mention
COMMDLG.LIB when linking.
===========================================================
%s in a printf format string will print nothing if a NULL
pointer is fed in as the argument.
===========================================================
_beginthread for NetWare had a race condition which would
modify stack space belonging to another process.
===========================================================
The fwrite function would always set errno to ENOSPC
if an error occured and more data than would fit into
the FILE * buffer was being written out.
===========================================================
The localtime function did not work for time == 0 when
time zone is west of UTC. It should have reported a date
in 1969 (e.g., Dec. 31, 1969 19:00) but instead reported
a date far in the future. Also fixed a similar problem
with mktime.
===========================================================
NetWare version changed so that all memory allocations
done by the library are attributed to a thread group
belonging to the NLM containing the library, not
the thread making the request.
===========================================================
Floating-point output conversions introduced some
rounding errors when converting integral values to strings.
===========================================================
wstart3r.asm and wstart3s.asm now contain the
__DLLstart_ symbol to allow use of the -bd switch when
building 32-bit Windows Dynamic Link Libraries.
===========================================================
fixed lseek() and tell() for DOS 16/32 bit systems so
that negative offsets and offsets >2GB work properly
===========================================================
fixed startup code so that it could handle an empty
environment properly
===========================================================
The text for the title bar of a default windowing application
was moved to a separate module and placed in a global array
called __WinTitleBar so that the user can define his own copy
of this array with an appropriate title for his application.
e.g.
char __WinTitleBar[] = "My Windows Application";
===========================================================
The _heapenable function has been added to the library.
The prototype is in malloc.h and is:
extern int _heapenable( int __enabled );
If a zero is passed as a parameter then all further
allocations which would normally go to the operating system for
more memory will instead fail and return NULL. Passing a one
will re-enable the system allocation requests. The return
value is the previous state of the system allocation flag.
===========================================================
Fixed the fread function to interact better with interactive
devices.
===========================================================
fdopen() for NetWare always returned with "access denied"
===========================================================
Fixed local time functions for Windows NT to use local
time rather than GMT time
===========================================================
Added far pointer support to the 32 bit printf() and
scanf() functions in the OS/2 2.x and QNX 4.2 libraries.
===========================================================
NOVH\stdio.h fileno() macro removed.
===========================================================
******************
** C++ Compiler **
******************
Overloading of functions taking member pointers to
functions did not work properly. Pointers to members
of unrelated classes were considered convertable.
===========================================================
Include directives did not handle null extensions on
file names properly.
i.e. #include "abc"
Would attempt to open "abc.h" and "abc.hpp" but
not "abc".
===========================================================
Compiler was translating double-byte characters found in normal
character constants and literal strings to UNICODE with -zk0u
option. Compiler should only do this translation for wide
character constants (L'abc') and wide character strings (L"abc").
===========================================================
fixed problem with -d2 debugging info generation
===========================================================
fixed problem with name mangling of names that make use
of an undefined template class
===========================================================
improved diagnostics for ctor initializers, member pointers,
and syntax error recovery
===========================================================
added -zp16 and -zdl options
===========================================================
fixed a problem with template function analysis
===========================================================
fixed scalar analysis for ':' portion of ternary operator
with enumerated types
===========================================================
static objects are linkage "C++"
===========================================================
fixed template function binding problem with trivial conversions
===========================================================
#line directive caused a problem when #include depth exceeded
the available number of file handles
===========================================================
inline reference parm optimization failed in some rare cases
===========================================================
fixed alignment of segments to take into account the
maximum alignment of any data item defined in the
segment
===========================================================
fixed import of near variables in large data models
===========================================================
fixed return code to be non-zero when -we is specified
and a source file contains only warnings
return code is now 0-7 with the following bits:
0x01 - warnings occurred with -ze specified
0x02 - errors occurred
0x04 - fatal error occurred
===========================================================
new expressions like "new int(expr)" and
"new (placement) double(expr)" (i.e., scalars) did not
initialize the raw storage properly and/or have a value
equal to the pointer value in some cases
===========================================================
Some floating-point values that are integral did not generate
the correct floating-point representation because of some
rounding errors.
===========================================================
Changed the behaviour of the -bd switch to emit correct
library references when building Dynamic Link Libraries
for Windows.
===========================================================
Fixed problem with internal compiler error #24 caused by
"construct once" checks for static function variables
===========================================================
Added extension to C++ language parsed by WATCOM C++ to
accept more than one pointer declarator in a user-defined
conversion function id. i.e., operator int **();
===========================================================
Fixed problem with virtual table entries not being correct
in certain hierarchies with virtual bases. e.g.,
X vf1,vf2
// \\
vf1 A B vf2
\ /
D
===========================================================
Fixed a problem with the sizeof operator when applied to
multiple string literals. The compiler incorrectly
returned the size of the first string literal instead
of the size of the result. e.g., sizeof( "1234" "5678" )
===========================================================
Fixed a problem with generated copy constructors for
classes with bitfields.
===========================================================
Fixed instantiation of member functions in nested classes
of class templates.
===========================================================
The -j switch was affecting the name mangling algorithm
for the type 'char'. Programs compiled with -j could
not link with the standard libraries as a result.
===========================================================
Fixed <int_expr> *= <float_expr> and
<int_expr> /= <float_expr> to properly perform the
arithmetic in type 'double' or 'float'.
===========================================================
Fixed destructor tables for static variables in functions.
===========================================================
Fixed incorrect warning about an unreferenced static
function when it had default arguments and all calls
in the module made use of default arguments.
i.e.,
static void foo( int = 0 );
void fn()
{
foo();
}
===========================================================
Fixed generated code for a "..." function that returns
a class.
===========================================================
Fixed segment allocation under big data memory models
to assume external data with size less than the data
threshold is contained in DGROUP.
===========================================================
fixed problem with complex declarations involving more
than one function declarator declaring arguments of
the wrong declarator when a ( void ) declarator was
the first declarator e.g.,
int (*fn())( int a, int b );
incorrectly declared 'a' and 'b' as function arguments
===========================================================
Removed mapping of 5c (\) to unicode a5 (Yen symbol) since it
made specification of paths impossible (e.g. \\boot\penpoint).
===========================================================
fixed type of sizeof() operator for large sizes to be
unsigned long
===========================================================
fixed allocation of segments for huge static items to
be paragraph aligned
===========================================================
adjusted some warning levels from 1 to 3 that were
annoying people with older code
===========================================================
Preprocessing directives were not scanned properly if the
previous line consisted of white space followed by line
continuation character '\'.
===========================================================
fixed switch statements with consecutive case values
that had ranges of values that changed sign.
===========================================================
fixed formatting of names in error messages for the
case of functions with default arguments combined
with ...
===========================================================
fixed formatting of names in error messages for the
case of functions with default arguments with a
return type that has function declarators (i.e.,
a function that returns a pointer to a function)
===========================================================
fixed a problem when the compiler runs out of memory
during initialization
===========================================================
fixed a problem with diagnosing mismatched arguments
with a single function with default arguments
===========================================================
fixed a problem where the base type of a bit-field was
an enum or an unadorned char and the bitfield was used
as an argument to a function; the type of the bitfield
expression was not correct
===========================================================
string literals are now lvalues
===========================================================
local variables in destructors could be destructed
after base classes (same problem occured with
constructors if an exception occured during the
constructor and the constructor had local variables
with destructors)
===========================================================
some based pointer problems were corrected
===========================================================
compiler-generated operator =() functions did not
function properly if the entire hierarchy had no
data and there were base class op= functions defined
===========================================================
accept multiple ';'s in a class definition
e.g.,
struct S { int a;;;; };
===========================================================
make C++ compiler less pedantic about the check for the
'size_t' argument's type in operator new and delete
===========================================================
fixed a problem with brace initialization of nested
structures with bitfields
===========================================================
added diagnostic for function modifiers being applied
to variables
===========================================================
fixed diagnosis of some abstract class hierarchies
(improved general diagnostics for abstract classes)
===========================================================
fixed allocation of virtual function tables to be in
the code segment for -ml-zc or -mf-zc
===========================================================
Some based pointer bug fixes (__self based pointers).
===========================================================
Fixed passing of parameters to __pascal member functions
(fix applies to any reverse argument calling convention).
===========================================================
The following function is correctly used as a copy
constructor.
struct S {
S( S const &, ... );
};
===========================================================
Source file is expanded to its full path for inclusion
into the object file. This helps debugging and minimizes
the problems with WVIDEO not finding source files.
===========================================================
8087-specific inline version of fabs() had a slight
problem in -fpi87 compiles.
===========================================================
throwing or catching an exception in an extern "C"
function would not work if it was the first time
in the source file the exception was described
(exception data has linkage "C" when it should have
had linkage "C++")
e.g.,
struct Exception1 {};
extern "C" void x1( int ) {
throw Exception1();
}
void x2() {
try {
foo(1);
} catch( Exception1 & ) { // would not work
}
}
struct Exception2 {};
void x3() {
throw Exception2();
}
extern "C" void x4() {
try {
x3();
} catch( Exception2 & ) { // works fine
}
}
===========================================================
*****************
** C++ Library **
*****************
The filebuf class did not flush pending output on an
attached file when destructing.
===========================================================
The istream::getline() member function did not consume
and discard the delimiter character.
===========================================================
Floating point formatting support was unnecessarily
included in executables by the C++ Library that did
not perform any floatig point formatting.
===========================================================
The output buffer within the filebuf and stdiobuf
classes was not being properly initialized when the
object was used first for input, then for output.
===========================================================
The member functions:
ostream::operator << (streambuf *)
istream::operator >> (streambuf *)
had incorrect prototypes.
===========================================================
The istream::getline() function was erroneously setting
the ios::failbit in the error state when a null line
was read.
===========================================================
Fixed run-time support for exception handling (EH) for
-3s 386 programs (compiler assumed a run-time function
would never return)
===========================================================
Fixed fstream open and attach functions to clear any
stale ios::eofbit in the error state upon successful
completion.
===========================================================
The container class list iterator insert function would
page fault if used on an empty list.
===========================================================
The container class list iterator insert and append
functions would not add items to an empty list.
===========================================================
The container class list iterator operator-- would not
back up an element if the current item was set to the
last item of the list.
===========================================================
**************
** DOS4/GW **
**************
When DOS/4GW traps an exception, such as a
general protection exception or a page fault, the register
dump includes one additional piece of information. The
"Crash address (unrelocated)" field shows the address
where the exception occurred as it would appear in a link
map. This makes some understanding of a crash possible without
loading the application in a debugger.
Diagnostic messages for some conditions where a load
might fail have been improved.
INT 31h/400h (Get Version) is now supported.
INT 31h/500h (Get Free Memory Information) now returns valid
information in most fields.
Memory blocks allocated through INT 31h/501h (Allocate Memory
Block) are now correctly freed when an application shuts down.
Several bugs in INT 31h/503h (Resize Memory Block) have been
fixed. This function should now work whether or not VMM is
present.
INT 31h/604h (Get Page Size) is now supported under VMM.
Without VMM, it returns with carry set.
File I/O through INT 21h/3Fh and INT 21h/40h will once again
be passed straight through to DOS if the I/O buffer is in
low memory and less than 64K.
Debugging under Microsoft Windows is now more robust even
without the Microsoft VxD VPFD.386.
A stack fault under some DPMI hosts has been fixed.
Some types of stack fault (exception 0Ch) are now properly
diagnosed.
Hardware interrupt 0Dh (IRQ5) will once again be properly
routed to a user-installed handler.
Chaining of exceptions is now supported.
An intermittent crash on a hardware interrupt that was
incorrectly identified (typically interrupt 0Fh) has been
fixed.
DOS/4GW will trap exception 4 (Overflow), if
there is no user handler, and print "Unexpected interrupt 04".
Floating point emulation is now more robust under DPMI on
machines with no coprocessors.
Some obscure problems in Ctrl-Break handling (involving what
happens if you get a Ctrl-Break after you uninstall your
handler) have been fixed. We use a slightly bigger stack
for handling Ctrl-Break under DPMI because some hosts seem to
require it. Also, we now restore the default Ctrl-C and
Ctrl-Break handlers before spawning another application.
An intermittent crash during VMM initialization, caused by
getting a hardware interrupt when a segment register value
was temporarily invalid, is fixed.
Spawning another application, under some memory managers, on a
machine with more than 16MB of physical memory no longer gives
"DOS/16M error 40: not enough available extended memory (XMIN)".
Spawning another application when VMM is in use, under some
memory managers, no longer gives "VMM initialization error [1]".
Some minor compatibility problems with 386Max and QDPMI have
been corrected.
===========================================================
*************************
** Example Source Code **
*************************
Removed unnecessary reference to iomanip.h from
hello.cpp
===========================================================
**************************
** FORTRAN 77 Compiler **
**************************
The compiler would incorrectly issue an unreferenced warning
message for the PARAMETER constant I when used as a repeat
specifier in a DATA statement. E.g.
PARAMETER (I=1)
DATA N/I*7/
===========================================================
The compiler generated unpredictable results when assigning
to a complex field of a structured array element. E.g.
STRUCTURE /CMPLX/
COMPLEX Z
END STRUCTURE
RECORD /CMPLX/ A(2)
A(1).Z = A(2).Z
===========================================================
In rare circumstances, the compiler would generate object
files that could result in large executable files. The
large executable files were caused by data segments
generated by the compiler whose size was unpredictable.
===========================================================
Examining local character variables from the debugger did
not work. The compiler was not generating the correct
debugging information.
===========================================================
The following program did not issue an error message
indicating that the symbol C was not explicitly typed.
IMPLICIT NONE
COMMON A, B, C
INTEGER A, B
END
===========================================================
The compiler generated incorrect debugging information
for array arguments when the /d2 switch was specified.
This caused garbage to be displayed when an attempt was
made to view the contents of an array argument from
VIDEO.
===========================================================
******************************
** FORTRAN 77 Include Files **
******************************
The pragma for MakeProcInstance() defined in the file
"win3api.fi" was incorrect. This only affected 32-bit
Windows applications. The file "win3api.fi" is located
in the "src\fortran\win" directory.
===========================================================
*************************
** FORTRAN 77 Library **
*************************
Fixed a problem with overlapping assignment of character
data. E.g.
CHARACTER*10 A
A = A(4:)
===========================================================
Fixed the following problem under OS/2 2.x. Writing to
a sequential file did not cause the written record to be
the last record in the file.
===========================================================
Tab characters are now allowed in list-directed input.
===========================================================
FORTRAN thread initialization is automatically performed
for a mixed C/C++ and FORTRAN mutlithreaded application.
===========================================================
If a disk full condition was reached while writing to
a file, the write operation would fail correctly but
an attempt to close the file would fail. This problem
has been fixed. Note that the I/O system does buffer
output so that if the last write succeeds, the close
could still fail when flushing the internal buffer to
the disk file. In this case, a second close must be
issued.
===========================================================
***********************
** Graphics Library **
***********************
Added support for Cirrus Logic GD-542x SuperVGA adapters.
===========================================================
Removed use of BIOS from _outtext in graphics mode and
_scrollwindow in text mode.
===========================================================
Fixed a problem where _floodfill would fail is the stack
size was greater than 256K.
===========================================================
Fixed a problem where _remappalette did not work correctly
after calling _settextrows.
===========================================================
*********************
** C Header Files **
*********************
Improved getc/putc macros in STDIO.H for better performance
in text files.
===========================================================
Improved <assert.h> so that a pointer expression can
be checked when compiling with extensions enabled
e.g., void non_null( char *p ) { assert(p); }
===========================================================
The errno macro in <errno.h> and <stdlib.h> is not defined
if the macro already exists.
===========================================================
The inline alloca sequence was modified to get better code
generation.
===========================================================
The 'extern' keyword was added to function prototypes
in many of the headers to allow special purpose
redefinitions of the function names.
===========================================================
added <mem.h> for Borland C/C++ compatibility
===========================================================
<iomanip.h> incorrectly defined the manipulator and
applicator class types.
The class name macros were not properly defined.
Some of the manipulator inserter and extractor function
prototypes were incorrect.
===========================================================
The "min" and "max" macros in stdlib.h are no longer
defined if they already exist.
===========================================================
The IOMANIPdeclare() macro has been added.
===========================================================
Adjusted DBL_MAX constant in <float.h>.
===========================================================
i86.h modified so that it will not generate errors if
compiled with -za.
===========================================================
Use 'safer' getc and putc macros in stdio.h when
creating a multi-threaded application.
===========================================================
****************
** Librarian **
****************
NT hosted librarian wasn't updated properly, and so it missed an
import library generation bug fix.
===========================================================
The librarian would sometimes return a non-zero exit
status to the system even when only warnings had been
issued.
===========================================================
The librarian did not properly handle object modules
that had mixed 16 and 32-bit PUBDEF records.
===========================================================
*************
** Linker **
*************
"option eliminate" wasn't in the usage information.
===========================================================
couldn't specify the class option of the segment directive for NT
===========================================================
tweaked the 16-bit aliasing code in OS/2 V2 formats to make the
V1.9 rational extender work better with wvideo.
===========================================================
linker wasn't exporting symbols properly under novell.
===========================================================
linker wasn't recognizing OS/2 lx dll's properly with the oldlibrary
option.
===========================================================
changed a few of the linker messages for QNX.
===========================================================
16-bit offset additive fixups under os2 lx and le formats were
stomping on the 2 bytes following the fixup.
===========================================================
don't emit internal fixups for os/2 lx executables unless the user
specifies "option internalrelocs"
===========================================================
don't fill out the pages at the end of objects for os/2 lx executables.
===========================================================
don't cache object files in a windows dos box, as that can cause
unnecessary paging.
===========================================================
the linker was not working properly when there was a pubdef redefining
a comdat.
===========================================================
don't emit zero size physical segments under NT, as the loader is not
handling them properly.
===========================================================
modified handling of object file structures to improve speed for some
large C++ .obj files. fixed a map file typo as well.
===========================================================
***********
** Make **
***********
macros are not defined to null anymore when they are
used in a !ifeq directive
===========================================================
fixed adding of more dependencies to a single colon
target for the case where the single colon target
does not have any dependencies
e.g.,
test :
cmd
test : dep1 dep2
===========================================================
fixed intercepting of cd commands for Windows NT version
of WMAKE
===========================================================
made !undef of an undef'd macro warning only come out if
-d option (debugging) is on
===========================================================
***********************
** Windows SDK Tools **
***********************
Fixed Resource compiler bugs where
1. If two NT resources of the same type had names where one was
a prefix of the other an incorrect resource file was generated.
2. An incorrect error message was generated when the preprocessor
could not find an include file.
===========================================================
Fixed Resource compiler bugs where
1. VersionInfo resources were not written correctly for Windows NT.
2. C statements in #include'ed .c and .h files were not ignored
when the included file was specified with a capitalized extension
( ex STDIO.H instead of stdio.h)
===========================================================
Fixed a Heapwalker bug where the heapwalker failed to identify the
owner of some global heap items.
===========================================================
Fixed a resource compiler bug where entering negative values in
an RCDATA resource caused an error to be reported.
===========================================================
Fixed a resource compiler bug where an error message was reported
when adding resources to PE executables with a .bss object
larger than the size of the exe file.
===========================================================
*************************
** Windows Supervisor **
*************************
Added 128 exported symbols to W386DLL.EXT. These symbols are
called DLL1, DLL2, etc, up to DLL128. You can now call one of
these exported names rather than calling Win386LibEntry.
e.g. DLL7( parm1, parm2, parm3 ); is equivalent to
Win386LibEntry( parm1, parm2, parm3, 7 );
You must still call DefineDLLEntry in your initialization code
to define what parameters are to be expected by the call.
WEP is now entry number 129 and Win386LibEntry is entry number 130.
===========================================================
Removed unnecessary exports of CB1 to CB512.
===========================================================
Aliases for huge pointers failed when application memory
was greater than 1MB.
C++ global destructors were being called when DLL initialization
was completed, as opposed to when the DLL was exiting.
===========================================================
The DLL supervisor no longer displays a MessageBox when an error
occurs initializing the DLL (eg. not enough memory). It just
returns failure and it is up to the caller of LoadLibrary to
handle the error.
===========================================================
The Windows supervisor has been modified so that it has a better
chance of successfully initializing in low memory conditions.
===========================================================
*************
** WVIDEO **
*************
The NetWare NLM Debug servers would crash NetWare if you
tried to debug a multi-threaded application.
===========================================================
Debugging with /TRAP=RSI in a Windows DOS box did not
always work.
===========================================================
The OS/2 SERSERV only allowed COM1 and COM2. It now
allows up to COM9.
===========================================================
Under certain conditions of extreme low memory (typically
only under DOS), WVIDEO could mess up its memory management.
This could cause internal errors, hangs, and other stuff
that people tend not to like.
===========================================================
When using the /vga50 option with the Windows hosted
debugger, WVIDEO would act as if there were 50 lines
on the screen, but would not set the character font
properly. This would cause only the first 25 lines of
the debuggers windows to appear.
===========================================================
When using the "Select file..." dialog from the
startup options box of the Windows hosted debugger, WVIDEO
would fail to insert a space between the end of the
options specified and the start of the file name that
was selected.
===========================================================
The BINW\VDMSERVW.EXE file was accidently left off of
the distribution diskettes.
===========================================================
Some problems with watchpoints under Netware 4.0 have
been corrected.
===========================================================
The debugger no longer considers symbols of the same
name from different EXE's/DLL's as ambiguous. It will
choose the symbol from the EXE or DLL that was loaded
first. If you want the symbol from the later DLL, you
must use a module specifier on the symbol name.
===========================================================
Extended DOS programs which grab the keyboard hardware
interrupt (int 9) and do not chain in their handlers
(Metagraphics) can now be debugged under real DOS.
They will still fail in OS/2 or Windows DOS boxes, but
you can use the /TR=VDM or /TR=WIN remote debugging
links to handle them there.
===========================================================
Added WVPMHELP.EXE. This solves the problem where typing
ALT-ESC while debugging a PM application hung the OS/2 input
system. You do not have to start this program. The debugger
will automatically start it when it detects that it is
debugging a PM application. It creates a small PM window
application with a "Switch" menu item which you can click
on to switch back to the debugger screen.
===========================================================
Changed the RSI.TRP file to respect the DOS4GPATH environment
variable when searching for the dos extender.
===========================================================
Disallowed debugging of a PM app from a windowed OS/2 session,
since it would hang PM's message queue, killing OS/2.
===========================================================
***********
** WOMP **
***********
when converting object files from easy-omf to microsoft, womp would
sometimes delay emitting the flat group record a bit too long.
===========================================================
***************
** Profiler **
***************
Fixed problem where important code loads were being ignored
in Windows applications.
===========================================================
There was a race condition in WSAMPRSI that could cause
it to report a task exception if the _MARK_ function
had been enabled in the user program.
===========================================================