home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 15
/
CD_ASCQ_15_070894.iso
/
vrac
/
watcom.zip
/
WC931031.CAP
< prev
next >
Wrap
Internet Message Format
|
1993-12-14
|
183KB
From: Kevin Kitsemetry Rec'd
To: Roman Lewkow Msg #1582, Sep-22-93 11:44AM
Subject: dma
KK> couple of documents that you may wish to download from our
KK> BBS. DPMI4G.TXT lists the currect functons support under
KK> the latest version of the Rational DOS extender that comes
KK> with WATCOM tools.
RL> go find it ! I couldn't. Some kind of a secret ?
It is in the general file area (one).
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1561. *** See also #1585.
From: Kevin Kitsemetry
To: Carl Whitbeck Msg #1584, Sep-22-93 12:00PM
Subject: Multi Platform C++32 OS2 Serial Communications
CW> Is there a library that contains _bios_serialcom for OS/2?
CW> - If so, where is it located <or> how is it created?
No, sorry. That function is not supported under OS/2.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1580.
From: Roman Lewkow Rec'd
To: Kevin Kitsemetry Msg #1585, Sep-22-93 11:55PM
Subject: dma
got it, thanks, sorry.
what about my other question ( msg 1560 ) ?
regards, Roman
*** This is a reply to #1582.
From: John Hinkley Rec'd
To: Mark DeLafranier Msg #1586, Sep-23-93 10:07AM
Subject: message #1563
Kevin,
Could someone please respond to message number 1563 reguarding problems with
spawnlp() under OS2? This is now my third try... At least let me know you
have seen the message and will look into the problem. John.
From: Edward Palandri Rec'd
To: Kevin Kitsemetry Msg #1587, Sep-29-93 04:42PM
Subject: Problems with accessing an OS/2 16 bit DLL from Watcom C/386
KK> Internal Report #6526
I am using Watcom C/386 v9.0 patch level E and I am trying to build an OS2 2.1
program which will call a 16 bit DLL which is provided by another vendor.
The DLL is OK as we have successfully used it with an OS/2 16 bit front end
program but when I attempt to call it from a 32 bit front end I get the
following messages from OS/2
SYS2070 The system could not demand load the application's segment. OS2SKWAT-
>SDLL.DLL is in error. For further information type HELP SYS127.
and HELP SYS127 produces:
SYS0127: The specified procedure could not be found.
EXPLANATION: The specified procedure is not in the module
being searched or in the Exitlist routine list.
ACTION: Check which procedure is being requested and make
sure that it is in the module or Exitlist routine list.
I have, I believe followed the instructions for calling 16 bit DLL's but have
had no success in getting it to work.
SDLL.DLL is in a directory on the LIBPATH
I have uploaded a file OS2SKWAT.ZIP to the BBS which contains the following
pieces:
OS2SKWAT.C C code of the 32 front end which calls the DLL OS2SKWAT.EXE
Excecutable produced by the BAT file
OS2SKWAT.OBJ Object module produced by the BAT file
OS2SKWAT.MAP Link map
OS2SK.EXE A 16 bit OS/2 executable that calls the same DLL SDLL.DLL
The DLL in question
MKOS2SKW.BAT A DOS bat file for compiling and linking OS2SKWAT README.TXT
This fil
OS2SKWAT calls an entry point OS2SCRIB in SDLL.DLL (with no trailing_). Note
that when the program actually executes it requires a driver which you do not
have, but the program does not load and never gets to any stage of execution.
I would appreciate it if you could tell me what I am doing wrong.
Edward Palandri
Document Sciences Corporation
Ph 619-625-2030
Fax 619-625-2021
Intelnet Mark.DSC@Xerox.COM
*** See also #1599.
From: Jerry Rice Rec'd
To: Kevin Kitsemetry Msg #1588, Sep-25-93 05:27AM
Subject: Watcom C32 for Dos
KK> JR> Secondly, I have Intel Code builder also. I would
like to compile with
KK> JR> WC32 and bind the IGC dos extender from Intel Code
KK> JR> Builder. Since I have the latest and last version of
KK> JR> Intel Code Builder, it does not come with MKEXE.EXE.
KK> JR> Nor does it handle .REX files, that is, I haven't seen
KK> JR> it do so. The reason that I need this is that I use
KK> JR> Tegl Systems GUI, which does not support Watcom 386
KK> JR> with the Rationale Extender, and I don't entend to
KK> JR> either go to Pharlap or Ergo. Royalty free or not at
KK> JR> all!!!!
KK>I will have to check on this. I know that you can generate
KK>Intel easy OMF object file format with our compiler, but it
KK>is not the default. I am not sure that you can then just
KK>use the Intel linker. Wlink does not support exe's for the
KK>Intel DOS extender.
KK>Kevin Kitsemetry
KK>WATCOM TECHNICAL SUPPORT
Have you found out anything on this? You see,
according to the manual one can use MKEXE, but that does not
exist with v1.1a of the code builder? Since, 1.1a is almost
2 years old, it would seem that the documentation was simply
copied from version 8.x of Watcom, rather than verifying it.
Because its plain wrong. What about the use of il32 with
watcom objects?
Thanks
Jerry
___
X SLMR 2.1a X
*** See also #1601.
From: Jerry Rice Rec'd
To: Kevin Kitsemetry Msg #1589, Sep-25-93 06:06AM
Subject: Future enhancements
To the Powers that be.
That is to someone of decision making capability as to
enhancements to the "product". First of all, Watcom is well
known as the innovator in 32 extended dos programming. I
feel that I should point out some things which may not be
realized because they are not talked about much, either here
or for that matter in most forums.
That is DLL's under DOS Extension.
I don't mean DLL's under Windows under Dos!! But actual Dos
DLL's.
I left a message to someone on this tech board some
time ago, representing themselves as a "Rational" rep, but
as I haven't seen a reply I thought I would somewhat
replicate that message here.
First, Borland HAS a 286 dos extender developed in
house that gives DLL's under DOS. I am sure that when they
release their 32 bit C/C++ version of their compiler for
Windows NT that they will include this feature with an in
house developed 386 dos extender. Clarion's Top Speed
C,pascal,... has the same capability to produce DLL's under
extended DOS. Strangely enough, these two companies took
opposite routes. Borlands Dos Extended DLL's follow
(somewhat) the Windows DLL format, while Top Speeds take the
OS2 route. What I mean by this is that Top Speeds DLL's can
be used under OS2 as is, and Borlands can be used under
Windows as is. (at least if they don't have any platform
specific calls). Clarion is heavy into their development of
the equivalent product in the 386 world, just as Borland is.
Equivalant in that both will have DLL's under an in house
386 dos extender.
Watcom on the other hand doesn't have that capability.
Sure, one can pay $5000.00 and obtain that capability with
Rational's Dos extender, but why? If I can get the same
thing from Borland or Clairion for an upgrade fee, or for
considerably less than $5000.00, then I don't see that
Watcom would be a good buy any longer. Particularly if I
want that feature.
Realize that the Dos Extended DLL is a major feature,
even though the primary "talk" everywhere is Windows/OS2.
For those that want and need them, like myself, it can be a
determining factor as to upgrade or purchase. It is quite
nice to have one DLL and 10 exe's link to it on the fly. A
lot less disk space and a lot less maintainance. One can put
one's GUI or Text User Interface into this DLL and have a
number of programs call it. Or one can put their math or
graphics routines in them, etc..
It seems strange to me that Watcom doesn't have this
already, since Watcom is the innovator in 386 dos extension.
As we all know, nothing stays static in the software
development world, just as the section in your users guide
on using Intel Code Builder with Watcom is mostly wrong.
Sincerely,
Jerry Rice
___
X SLMR 2.1a X
*** See also #1596.
From: Roman Lewkow Rec'd
To: Jerry Rice Msg #1596, Sep-27-93 12:59PM
Subject: Future enhancements
Jerry, check the new PharLap 386 ( now at version 6.0 and called TNT ) DOS
extender. It has DLLs , cooperative multitasking and threads; all under DOS.
US$495 for SDK, $1995 for 1000 copies runtime.
Call them at 617 661 1510. They also have a decent API for the extender and (
as opposed to WATCOM's ) their documentation probably is up to date.
regards, Roman
*** This is a reply to #1589.
From: Mark Delafranier Rec'd
To: John Hinkley Msg #1597, Sep-27-93 04:19PM
Subject: spawnlp bug under os2
KK> Note: He also uploaded a file called spawnbug.zip.
JH> Watcom,
JH> I'm uploading a pair of programs that crash when run
JH> from a DOS box under OS2 2.1. I'm using the release
JH> version of Watcom C++386 9.5. The PKZIP'd file
JH> contains the two programs and a makefile.
JH> The programs consist of a parent process which just prints a few
JH> messages and uses spanwlp() to call a child process
JH> over and over again. The child process prints a
JH> message and returns 0. After about 35 calls to the
JH> child process, the child returns 8, which cannot have
JH> been returned by main(). Within a few more calls OS2
JH> crashes with a Trap E and the system must be rebooted.
JH> The programs work fine under MSDOS 6.0, or Windows
JH> 3.1. The child program can be called repeatedly from
JH> the command line (via a batch file) without any
JH> problems. The problem is probably not in DOS4GW since
JH> the same symptoms occur when linking with Flashtek's
JH> DOS extender.
JH> My main product requires hundreds (even thousands) of calls to sub-
JH> processes, and many of my users run under OS2, so
JH> correct functioning of spawnlp() is critical.
JH> I don't think it's relavent, but since you'll probably
JH> ask: I'm running a 486DX2-66 with 32MB of RAM,
JH> Ultrastor 34F VLB SCSI controller, Cardex VLB SVGA
JH> controller (Tseng ET4000W32 based), etc.
JH> Please advise,
JH> John Hinkley.
John, Rational Systems is currently investigating this problem, as soon as we
hear back from them, I will let you know.
If you have any other questions or concerns, please do not hesitate to contact
WATCOM TECHNICAL SUPPORT.
Hot-line: (519) 884-0702 Internet: tech@watcom.on.ca fax:
(519) 747-4971 Compuserve: type GO WATCOM BBS:
(519) 884-2103 WATCOM Sales: 1-800-265-4555
Mark DeLaFranier
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1504.
From: Dan Teven Rec'd
To: Jerry Rice Msg #1598, Sep-27-93 05:57PM
Subject: Future enhancements
Jerry,
You probably corresponded with me -- sorry if I didn't get back to
you, as I thought I'd done that.
You may have noticed that Rational Systems has just released a
$149 DOS extender upgrade that offers a lot of additional power,
notably the bind capability and improved virtual memory manager.
We decided on these features because customers on this board (and
elsewhere) asked for them.
We did not include DLL support in the new product because it wasn't
quite as frequently asked for. That's not to say we won't offer
DLL support in a retail product in the future, and thanks for
repeating your request -- we are listening to the market.
Sincerely,
Dan Teven
Rational Systems, Inc.
*** This is a reply to #1589.
From: Kevin Kitsemetry Rec'd
To: Edward Palandri Msg #1599, Sep-29-93 04:46PM
Subject: Problems with accessing an OS/2 16 bit DLL from Watcom C/386
KK> Internal Report #6526
EP> I am using Watcom C/386 v9.0 patch level E and I am
EP> trying to build an OS2 2.1 program which will call a
EP> 16 bit DLL which is provided by another vendor.
I have the file. I will reply as soon as I have had a chance to look at it.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1587.
From: Kevin Kitsemetry Rec'd
To: Jerry Rice Msg #1601, Sep-29-93 05:55PM
Subject: Watcom C32 for Dos
JR> Have you found out anything on this? You see,
JR> according to the manual one can use MKEXE, but that does not
JR> exist with v1.1a of the code builder? Since, 1.1a is almost
JR> 2 years old, it would seem that the documentation was simply
JR> copied from version 8.x of Watcom, rather than verifying it.
JR> Because its plain wrong. What about the use of il32 with
JR> watcom objects?
I have talked with the developers and it seems that you are probably correct,
and the manuals were just copied over from version 8.x. Because the compiler
is so old, I would have to verify it myself for version 9.5. Before I do, can
you tell me how you create exe's with version 1.1a if you don't have the MKEXE
utility?
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1588.
From: Jerry Rice Rec'd
To: Kevin Kitsemetry Msg #1605, Sep-25-93 05:27AM
Subject: Watcom C32 for Dos
KK> JR> Secondly, I have Intel Code builder also. I would
like to compile with
KK> JR> WC32 and bind the IGC dos extender from Intel Code
KK> JR> Builder. Since I have the latest and last version of
KK> JR> Intel Code Builder, it does not come with MKEXE.EXE.
KK> JR> Nor does it handle .REX files, that is, I haven't seen
KK> JR> it do so. The reason that I need this is that I use
KK> JR> Tegl Systems GUI, which does not support Watcom 386
KK> JR> with the Rationale Extender, and I don't entend to
KK> JR> either go to Pharlap or Ergo. Royalty free or not at
KK> JR> all!!!!
KK>I will have to check on this. I know that you can generate
KK>Intel easy OMF object file format with our compiler, but it
KK>is not the default. I am not sure that you can then just
KK>use the Intel linker. Wlink does not support exe's for the
KK>Intel DOS extender.
KK>Kevin Kitsemetry
KK>WATCOM TECHNICAL SUPPORT
Have you found out anything on this? You see,
according to the manual one can use MKEXE, but that does not
exist with v1.1a of the code builder? Since, 1.1a is almost
2 years old, it would seem that the documentation was simply
copied from version 8.x of Watcom, rather than verifying it.
Because its plain wrong. What about the use of il32 with
watcom objects?
Thanks
Jerry
___
X SLMR 2.1a X
From: Jerry Rice Rec'd
To: Dan Teven Msg #1607, Sep-29-93 05:13AM
Subject: Future enhancements
DT>Jerry,
DT>You probably corresponded with me -- sorry if I didn't get back to
DT>you, as I thought I'd done that.
DT>You may have noticed that Rational Systems has just released a
DT>$149 DOS extender upgrade that offers a lot of additional power,
DT>notably the bind capability and improved virtual memory manager.
DT>We decided on these features because customers on this board (and
DT>elsewhere) asked for them.
That's just it. I haven't seen any info anywhere on
Rational Systems anything!! Long ago, I used to see things
in Dr Dobbs, C User's and the various catalog outfits like
"The Connection", Programmers Paradise, Programmers Shopper
but for a long time they haven't carried your products. So
any info you can post here would be nice to have. A mailing
to those using Watcom wouldn't hurt either!!
DT>We did not include DLL support in the new product because it wasn't
DT>quite as frequently asked for. That's not to say we won't offer
DT>DLL support in a retail product in the future, and thanks for
DT>repeating your request -- we are listening to the market.
To be honest, I'd rather stay with Rational. It's a much
"faster" and tighter product, unless I get one free with a
compiler. I have SVS C and Intel Code Builder, both with
free 4 gigabyte VM dos extenders. (SVS is flakey) and Intel
Code Builder died). And as I said in the other message
Borland and Clarion will probably be out with theirs very
soon, with DLL's. Please understand, that it is a matter of
fulfilling contracts that I have in house. I will do that by
what I concider the easiest, cheapest, least time consuming
method. The requirements of me, on these products is a
486(Pentium) (dos extended or Windows NT) GUI driven
scientific analysis package. Consisting, aproximately, of 12
programs. Each having essentially the same user interface.
That user interface is specified to be a DLL. The contract
is open ended at the moment waiting on the GUI support under
the dos arena. Further, the Gov't will not on this contract(
or usually any), pay for muti runtime licenses when the
software is custom built. I also have other general
contracts waiting for the same type of upgrade, to DLL's.
The point is, these are multiple products, quite a few. No
one that I know of will buy a license for 1000 when all they
need is 5-10. When a person has a number of "support"
contracts, which include upgrades to "state of the art",
then DLL's are what they want. Or they want it rewritten in
Windows, which does support DLL's. Because of the power and
speed of extended dos, I really don't want to change, unless
I have to. The 500 or so extra functions for a huge somewhat
slow Os like Windows NT just doesn't turn me on!! Its easier
for me to just wait for the first company to support DLL's
under 386 extended Dos, without licensing requirements. My
modules are already "Common" to all of my products. So all
I'll have to do is add a switch or two, as is done with
Borland and Clarion now with my 286 work. The people that
cantract want "commonality of code". Its quite
understandable that they don't want the wheel recreated all
the time, or that if a change is made to module A, that it
also has to be changed in all other programs using module A
and recompiled from scratch. They want "the DLL" to be used
by "anything they have written". Another thing is this, I
have a dozen to 3 dozen programs that "belong" to various
companies and institutions. Most run time licenses that I am
aware of are for ONE EXE or piece of code. I'm in a catch 22
situation. If the DLL recieved an RTL, then to link to it
would possibly be ok. But in most cases, the way I have read
licenses, its not the DLL that is licensed or licensable
itself. $1995 for an RTL FOR 1 DLL used by 50 EXE's might be
alright, but that's not the usual way that things are
written. You see the problem? This is one of the things that
is going to have to be addressed by "Extender" companies if
they are to remain competitive. Since there are so many
companies coming up with their own extenders and methods for
free, how can "Rathional" or "Pharlap" remain competitive?
Borland dropped Pharlap from Borland Pascal and wrote their
own extender which does fine in 286 extension. Clarion(JPI)
didn't even bother with the intermediate step of going with
an extender company first.
Sincerely
Jer
___
X SLMR 2.1a X
*** See also #1615.
From: Robert Campbell Rec'd
To: Kevin Kitsemetry Msg #1611, Sep-30-93 02:36PM
Subject: Bug reported in GMA_BUG.ZIP
KK> Internal Report #6647
Please look in GMA_BUG.ZIP for the sample code to a problem that we have
encountered with WVIDEO (windows). This program seems to run fine on the
first execution through the debugger, but on the second run through,ie: new; go
it crashes. Any help you can give in this matter would be greatly appreciated.
Thanks.
Robert Campbell
Geophysical Micro Computer Applications Int'l Ltd.
*** See also #1724.
From: Robert Campbell Rec'd
To: Kevin Kitsemetry Msg #1612, Sep-30-93 02:44PM
Subject: bug encountered with DIB's
KK> See previous message
in the file GMA_BUG2.zip is the code and the compile instructions for a
problem we are encountering with SetDIBitsToDevice. Under certain conditions
it fails. We are'n sure what the conditions are.
In the sample code we have an array of pointers that we atart allocating
memory to (in a loop)
ie:
int *traces[115];
for (i = 0; i < 100; i++) {
trace[i] = (int *) calloc(2048, sizeof(int));
if (trace[i] == NULL) {
...
}
}
If we change the loop to execute 105 times the SetDIBits to Device will (below
the allocation loop) fail. We cannot see anything that would cause this
problem.
The example program should fill the client area of the program with BLACK if
it succeeds.
From: Oivind Danielsen Rec'd
To: Kevin Kitsemetry Msg #1613, Sep-30-93 10:32AM
Subject: EMM386
I use the EMM386.EXE supplied in DOS 6.0, and would very much like to continue
doing so. I have fixed the 2 minute wait-while-loading problem with WCC386.EXE
and similar by configuring them with the following switch value (CFIG386.EXE,
pharlap) -MAXV 0 (maxvcpimem)
The question is: Can i do this ?
Thanks in advance,
Oivind H. Danielsen
DIRECT ANIMATION
*** See also #1619.
From: Dan Teven Rec'd
To: Jerry Rice Msg #1615, Sep-30-93 11:41AM
Subject: Future enhancements
Jerry,
I have put both the press release and sales piece up on this BBS,
and we are doing a mass mailing to all registered WATCOM customers,
but the mailing was held up by a problem with the labels. You
should receive it shortly. In the meantime, I will be happy to
answer any questions you have about Rational Systems' extenders --
over in area 15.
Rational Systems has never offered a retail DOS extender before;
the products you used to see in mail order catalogues were not
DOS extenders, but other tools. We've traditionally sold our
DOS extenders to companies with big needs for service and support,
for example Lotus (1-2-3 release 3 was built on DOS/16M). Just
offering a retail upgrade to DOS/4GW was a change of direction
for us.
Because we are new to the retail market, we don't really know
how profitable we can be selling upgrades to DOS/4GW. If the first
upgrade, DOS/4GW Professional, proves that the market is there,
we might offer DLL support as an option to WATCOM customers
at some point. We are grateful for your opinion but we have to
collect more data before we decide to change our business focus;
and offering too good a DOS extender for too little money would
put a dent in our OEM business.
You might want to look at DESQview/X, from Quarterdeck Office
Systems, which contains a royalty-free Rational Systems DOS extender
WITH full support for DLLs...
Dan Teven
Rational Systems
*** This is a reply to #1607.
From: Kevin Kitsemetry Rec'd
To: Jerry Rice Msg #1616, Sep-30-93 01:45PM
Subject: Future enhancements
JR> To the Powers that be.
JR> That is to someone of decision making capability as to
JR> enhancements to the "product". First of all, Watcom is well
JR> known as the innovator in 32 extended dos programming. I
JR> feel that I should point out some things which may not be
JR> realized because they are not talked about much, either here
JR> or for that matter in most forums.
JR> That is DLL's under DOS Extension.
JR> Watcom on the other hand doesn't have that capability.
JR> Sure, one can pay $5000.00 and obtain that capability with
JR> Rational's Dos extender, but why? If I can get the same
JR> thing from Borland or Clairion for an upgrade fee, or for
JR> considerably less than $5000.00, then I don't see that
JR> Watcom would be a good buy any longer. Particularly if I
JR> want that feature.
JR> Realize that the Dos Extended DLL is a major feature,
JR> even though the primary "talk" everywhere is Windows/OS2.
JR> For those that want and need them, like myself, it can be a
JR> determining factor as to upgrade or purchase. It is quite
JR> nice to have one DLL and 10 exe's link to it on the fly. A
JR> lot less disk space and a lot less maintainance. One can put
JR> one's GUI or Text User Interface into this DLL and have a
JR> number of programs call it. Or one can put their math or
JR> graphics routines in them, etc..
JR> It seems strange to me that Watcom doesn't have this
JR> already, since Watcom is the innovator in 386 dos extension.
JR> As we all know, nothing stays static in the software
JR> development world, just as the section in your users guide
JR> on using Intel Code Builder with Watcom is mostly wrong.
WATCOM does support the use of DOS Extenders (such as DOS/4G and PharLap) that
do allow for the creation of 32-bit DLLs under extended DOS. The fact that we
offer a free DOS extender that does not support them, does not mean that
WATCOM doesn't support them. Basically, people wanted to create 32-bit
applications that will run under DOS. In an effort to allow them to do this,
we provide a royalty free DOS extender that provides a subset of the
functionality that the user would have received had they paid the full price
for the DOS extender.
If you would like to see this functionality added to the 'free' DOS extender,
you can ask Dan Teven (Rational Systems) in area 15.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1589.
From: Kevin Kitsemetry Rec'd
To: Oivind Danielsen Msg #1619, Sep-30-93 02:44PM
Subject: EMM386
OD> I use the EMM386.EXE supplied in DOS 6.0, and would
OD> very much like to continue doing so. I have fixed the
OD> 2 minute wait-while-loading problem with WCC386.EXE
OD> and similar by configuring them with the following
OD> switch value (CFIG386.EXE, pharlap) -MAXV 0
OD> (maxvcpimem)
OD>
OD> The question is: Can i do this ?
I don't see why not. People are also using the EMM386 from Windows, which
works better.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1613.
From: Kevin Blenkinsopp Rec'd
To: Kevin Kitsemetry Msg #1620, Sep-30-93 04:32PM
Subject: A-Level patches, bimodal bugs
As far as I can tell, the new version of bimodal works. Thanks. I've never
actually looked at the C forum since we don't do any vanilla C. I'll try and
remember next time that a problem in the C++ compiler might very well be
referenced there as well. I'm not too bright lately. Anyway, barring something
horrible happening, this means we can complete the port and throw that @#&!%
piece of *$@# microscuzz compiler in the garbage. We're about one week away
from the 60 day trial running out, and I'm very glad that I don't have to send
the compiler back. It also means I get to keep my job, which is probably a
good thing. Go tell your boss that you deserve a raise.
By the way, I had ported the comms drivers to C from assembler. It seems weird
to be porting them back now. (About six months later). I realise that I could
write the protected mode handler in C, but then I'd still have to keep the
real mode version in asm. Is there any chance that the compiler would be
extended one of these days so I could write something like
static void bimodal AsyncHandler(void)
and have both sets of code generated for me? Maintaining one set of drivers is
annoying enough, but two of them is going to drive me round the bend. Oh well,
if that's the price I pay for all the other advantages I suppose I'll have to
live with it. It really would be nice though.
As a casual aside, I have some ray-tracing code originally created with MSVC.
When I ported that to Watcom, it picked up my returning a temporary by
reference, which ms didn't (very nice!) and cut the rendering time to just
under a half of what it had been. A half! That's a lot!
All in all, I'm very happy with the compiler. Please pat everybody on the back
for me.
Thanks again,
Kevin
*** See also #1624.
From: John Auld Rec'd
To: Kevin Kitsemetry Msg #1621, Sep-30-93 07:44PM
Subject: HELP!
Who do you have to know to get help around here???? I left a message (#1524)
over 2 weeks ago, and haven't gotten a reply. I have had zero luck getting
anyone to even return my calls, let alone in a reasonable amount of time. Am I
gonna have to go back to Microsoft?
Seriously, it was pretty tough to convince management that porting to this
nifty new compiler was the thing to do. How do I explain that this compiler I
sold them on doesn't come with any discernible tech support?
*** See also #1626.
From: Joe Friedman
To: Tech Support Msg #1622, Sep-30-93 10:23PM
Subject: 3rd Party Libraries
I've been developing software using Microsoft C and am tired of
dealing with 64K segments, 640K barriers, etc. So I bought the
WATCOM 32-bit C compiler, hoping to use the DOS extender to get
around these restrictions. However, I use a number of 3rd party
libraries that run some imaging hardware in my system, such as
Xionics' image primitives. Most of these 3rd parties do NOT have
WATCOM 32-bit versions of their libraries. Is it possible to
link these object libraries with 32-bit C code? If so, how do I
go about it? If not, any suggestions on how to deal with them?
I also have use some 16-bit TSR's that are called via software interrupts.
Is it possible to call these TSR's from 32-bit C code? How does one
deal with address differences (flat vs. segment:offset)?
*** See also #1627.
From: Christer Palm Rec'd
To: Mark Delafranier Msg #1623, Oct-18-93 11:00AM
Subject: Bug in pow()
KK> Internal Report #6213
MD> Can you provide a small sample program that will
MD> reproduce the problem? This will greatly assist into
OK, Here it is:
NOTE 1: I haven't examined if this bug occurs with other math
functions, so similar bugs might be present in other
math funcs !!!
2: This bug only occurs when a user SIGFPE handler is present
Could you also PLEEEAAASE take a look at msg #1527 ???
Compile & link: wcl386 -od bug.c
#include <stdio.h>
#include <signal.h>
#include <math.h>
#include <errno.h>
void fpe_handler( int signo )
{
puts( "Caught SIGFPE" );
signal( SIGFPE, fpe_handler );
}
int matherr( struct exception *err )
{
puts( "Caught matherr" );
return 0;
}
void main( void )
{
signal( SIGFPE, fpe_handler );
errno = 0;
log( -1.0 ); // No SIGFPE, sets errno, calls matherr
printf( "errno after invalid log: %d\n", errno );
errno = 0;
pow( 1000.0, 1000.0 ); // Raises SIGFPE, no errno, no matherr
printf( "errno after invalid pow: %d\n", errno );
}
*** This is a reply to #1572. *** See also #1735.
From: Kevin Kitsemetry Rec'd
To: Kevin Blenkinsopp Msg #1624, Oct-01-93 09:53AM
Subject: A-Level patches, bimodal bugs
KB> As far as I can tell, the new version of bimodal works. Thanks. I've
KB> never actually looked at the C forum since we don't do
KB> any vanilla C. I'll try and remember next time that a
KB> problem in the C++ compiler might very well be
KB> referenced there as well. I'm not too bright lately.
KB> Anyway, barring something horrible happening, this
KB> means we can complete the port and throw that @#&!%
KB> piece of *$@# microscuzz compiler in the garbage.
KB> We're about one week away from the 60 day trial
KB> running out, and I'm very glad that I don't have to
KB> send the compiler back. It also means I get to keep my
KB> job, which is probably a good thing. Go tell your boss
KB> that you deserve a raise.
KB> By the way, I had ported the comms drivers to C from assembler. It seems
KB> weird to be porting them back now. (About six months
KB> later). I realise that I could write the protected
KB> mode handler in C, but then I'd still have to keep the
KB> real mode version in asm. Is there any chance that the
KB> compiler would be extended one of these days so I
KB> could write something like
KB> static void bimodal AsyncHandler(void)
KB> and have both sets of code generated for me?
KB> Maintaining one set of drivers is annoying enough, but
KB> two of them is going to drive me round the bend. Oh
KB> well, if that's the price I pay for all the other
KB> advantages I suppose I'll have to live with it. It
KB> really would be nice though.
KB> As a casual aside, I have some ray-tracing code
KB> originally created with MSVC. When I ported that to
KB> Watcom, it picked up my returning a temporary by
KB> reference, which ms didn't (very nice!) and cut the
KB> rendering time to just under a half of what it had
KB> been. A half! That's a lot!
KB> All in all, I'm very happy with the compiler. Please
KB> pat everybody on the back for me.
I am glad to hear that things are going better for you now. I will be sure to
pass on your compliments and suggestions.
Also, I should mention that there are a couple of issues
that lead to the necessity of building a bimodal handler.
The first one is speed. This is the one concerns you.
The second one is the interrupt for which the handler is in question, is not
in the autopassup range for the DOS/4GW
extender. The full blown DOS/4G extender will allow the
programmer to specify which interrupts fall into the
autopassup range. As far as speed is concerned, I know that there are 3rd
party packages available to handle high speed communication requirements. I
doubt that you will see a
bimodal type keyword added to the compiler in the short term,but I will pass
on the suggestion.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1620.
From: Kevin Kitsemetry Rec'd
To: John Auld Msg #1626, Oct-01-93 10:11AM
Subject: HELP!
JA> Who do you have to know to get help around here???? I
JA> left a message (#1524) over 2 weeks ago, and haven't
JA> gotten a reply. I have had zero luck getting anyone to
JA> even return my calls, let alone in a reasonable amount
JA> of time. Am I gonna have to go back to Microsoft?
JA>
JA> Seriously, it was pretty tough to convince management
JA> that porting to this nifty new compiler was the thing
JA> to do. How do I explain that this compiler I sold them
JA> on doesn't come with any discernible tech support?
I am sorry for the delay. It seems there was some confusion as your original
message was posted to Mike Paola. I will
ensure that your message is taken care of ASAP.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1621.
From: Kevin Kitsemetry Rec'd
To: Joe Friedman Msg #1627, Oct-01-93 10:14AM
Subject: 3rd Party Libraries
JF> I've been developing software using Microsoft C and am tired of
JF> dealing with 64K segments, 640K barriers, etc. So I bought the
JF> WATCOM 32-bit C compiler, hoping to use the DOS extender to get
JF> around these restrictions. However, I use a number of 3rd party
JF> libraries that run some imaging hardware in my system, such as
JF> Xionics' image primitives. Most of these 3rd parties do NOT have
JF> WATCOM 32-bit versions of their libraries. Is it possible to
JF> link these object libraries with 32-bit C code? If so, how do I
JF> go about it? If not, any suggestions on how to deal with them?
These third party vendor libraries cannot be linked with the WATCOM compiler
and linker. We are compatible with Microsoft at the source level, not the
object level. Perhaps there are other companies that DO support the WATCOM 32-
bit compiler. You may contact Roger Kehl at WATCOM (519) 886-3700 for more
information.
JF> I also have use some 16-bit TSR's that are called via
JF> software interrupts.
JF> Is it possible to call these TSR's from 32-bit C code? How does one
JF> deal with address differences (flat vs. segment:offset)?
I believe that you can still call these TSR's by issuing a Real Mode Interrupt
(DPMI function 0300h).
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1622. *** See also #1628.
From: FlashTek Inc. Rec'd
To: John Miles Msg #1628, Oct-02-93 06:24AM
Subject: New debugger.
I saw the new debugger in Boston a few weeks ago. It did look quite nice. I
was a bit disappointed that the delivery date may be a bit farther away that I
would have liked (1Q '94). Flashtek is hoping (no promises!) to deliver
FlashView for Watcom in the next month or so. We'll see... it seems that
these things always take longer than we expect.
Joe Huffman
FlashTek, Inc.
208-882-6893
joe@proto.com
*** This is a reply to #1438. *** See also #1698.
From: Arthur Jones
To: Tech Support Msg #1629, Oct-02-93 03:25PM
Subject: wmake nt and long filenames
i'm having some problems with wmake in binnt, with short filenames
it works find but it doesn't seem to make long filenames on a ntfs
file system. my makefile has both long and short filenames with
equivalent dependencies, the short filenames work fine but the
long filenames give an unable to make target error. need i do
something different? it doesn't seem i should. btw, case sensitivity
seems to work.
*** See also #1631.
From: John Lansdale
To: Technical Support Msg #1630, Oct-04-93 06:48AM
Subject: Sending out Level A patches by mail
Considering the size of the level A patches, and the fact that I only have
a 2400 baud modem, could I get a copy of the DOS & C++ level A patches
by mail? Thanks.
*** See also #1632.
From: Anthony Scian Rec'd
To: Arthur Jones Msg #1631, Oct-04-93 11:35AM
Subject: wmake nt and long filenames
AJ> i'm having some problems with wmake in binnt, with short filenames
AJ> it works find but it doesn't seem to make long filenames on a ntfs
AJ> file system. my makefile has both long and short filenames with
AJ> equivalent dependencies, the short filenames work fine but the
AJ> long filenames give an unable to make target error. need i do
AJ> something different? it doesn't seem i should. btw, case sensitivity
AJ> seems to work.
I'll look into this problem.
Anthony
*** This is a reply to #1629.
From: Paul Tletski
To: Watcom Folk Msg #1633, Oct-04-93 03:28PM
Subject: Question about 9.5 problem.
`ppDsx{~The following is a program that I've been using to test out Watcom,
DOS, and
DOS/4GW.
.
// test.c
.
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
.
//
// Type declarations.
//
typedef unsigned short ushort;
typedef unsigned long ulong;
.
//
// Function prototypes.
//
void main(void);
.
//
// "far" address structure.
//
typedef struct far_address {
ushort selector;
ulong offset;
} FAR_ADDRESS;
.
//
// Program main.
//
void main ()
{
union REGS regs;
struct SREGS sregs;
ushort far *ptest;
FAR_ADDRESS address;
.
ptest = (ushort far *)0x111122223333; // why does this generate a warning?
printf("%u\n", sizeof(ptest));
.
regs.h.ah = 0x2A;
intdosx(®s, ®s, &sregs); // an exception is generated in build 1
address.selector = sregs.es;
address.offset = regs.x.ebx;
.
//
// Will this work? Will this copy the pointer "address" to
// the pointer ptest?
//
_fmemmove(ptest, &address, sizeof(ushort far *));
}
.
This example was tested with two build methods:
.
Build 1: wcl386 /l=dos4g /4s /d2 test.c
Build 2: wcl386 /l=dos4g /4r /d2 test.c
.
Both failed (.i.e. generated an exception) where noted in the source.
I can't find a decent explanation why.
.
Also, the documentation for 9.5 wcl386 fails to document the following
switches: /fd, /fe, /k and /l. It looks like the documentation for
wcc386 is repeated.
.
I download C32DOS_A.ZIP and now have 9.5a. There was no documentation
about what the update was about in the .zip. Is there any update
documentation anywhere?
.
Thanks,
.
Paul Tletski
Highland Hts., Ohio
*** See also #1635.
From: Kevin Kitsemetry Rec'd
To: Charlie Link Msg #1634, Oct-04-93 04:31PM
Subject: NT DLL problem
KK> Internal report #4597
CL> Because of your response to Jon Levinson, I thought I
CL> would address this to you. Sorry if you're not the
CL> right person.
CL> I can't get Win NT DLL to function properly. Your
CL> example compiles cleanly (pp 283 ff), but upon
CL> execution, I get an NT message that the application
CL> failed to initialize properly (DLLTEST.EXE). I can
CL> LoadLibrary("dllsamp.dll") okay and the dlltest.exe will work fine if I
CL> comment-out (//) the dll_entry_1() && dll_entry_2()
CL> functions. Is this also a case of the EXPORT statement
CL> of the linker not working as it was with NLMs ? I am
CL> also using MARCH -1993 version of Win NT Beta, so I'm
CL> surprised. By the Way, every other DLL (in more
CL> complex programs) behaves the same way when a program
CL> attempts to call (@ initialization). I can Upload
CL> files if you wish.
I was not aware of this problem with respect to NT apps, but it may well have
been related. In any event, I have verified that the example program does
indeed export the function and execute properly with the latest version of the
compiler (patch level A) and the release version of Windows NT.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1381.
From: Kevin Kitsemetry Rec'd
To: Paul Tletski Msg #1635, Oct-04-93 04:45PM
Subject: Question about 9.5 problem.
PT> `ppDsx{~The following is a program that I've been
PT> using to test out Watcom, DOS, and
PT> DOS/4GW.
PT> .
PT> // test.c
I have taken a look at this program, and it looks like a bug (or two). I have
brought it to the attention of the developers and will let you know when I
hear back from them. You can track this problem with incident report #6869.
PT> .
PT> .
PT> Also, the documentation for 9.5 wcl386 fails to document the following
PT> switches: /fd, /fe, /k and /l. It looks like the documentation for
PT> wcc386 is repeated.
These are documented on page 46 of the User's Guide.
PT> I download C32DOS_A.ZIP and now have 9.5a. There was no documentation
PT> about what the update was about in the .zip. Is there any update
PT> documentation anywhere?
Yes. I believe the README.A file should contain what you are looking for.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1633.
From: Anthony Scian Rec'd
To: Paul Tletski Msg #1636, Oct-04-93 05:37PM
Subject: Question about 9.5 problem.
PT> // "far" address structure.
PT> //
PT> typedef struct far_address {
PT> ushort selector;
PT> ulong offset;
PT> } FAR_ADDRESS;
PT> .
PT> //
PT> // Program main.
PT> //
PT> void main ()
PT> {
PT> union REGS regs;
PT> struct SREGS sregs;
PT> ushort far *ptest;
PT> FAR_ADDRESS address;
PT> .
PT> ptest = (ushort far *)0x111122223333; // why does this
Use the MK_FP() macro from <i86.h> to do this properly.
e.g., ptest = MK_FP( 0x1111, 0x22223333 );
PT> generate a warning?
PT> printf("%u\n", sizeof(ptest));
PT> .
PT> regs.h.ah = 0x2A;
You must execute a memset( &sregs, 0, sizeof( sregs ) ); because you
cannot have random values in segment registers.
PT> intdosx(®s, ®s, &sregs); // an exception is generated in build 1
PT> address.selector = sregs.es;
PT> address.offset = regs.x.ebx;
PT> .
PT> //
PT> // Will this work? Will this copy the pointer "address" to
PT> // the pointer ptest?
PT> //
PT> _fmemmove(ptest, &address, sizeof(ushort far *));
No. Use *ptest = MK_FP( address.selector, address.offset );
*** This is a reply to #1633.
From: Kevin Ross
To: All Msg #1637, Oct-04-93 08:16PM
Subject: Floating point under Windows DOS box
Hello,
I have Watcom C32 for DOS, and have encountered a rather odd problem. The
following program, when run from DOS, works fine. The same exact program run
from Windows 3.1 DOS session fails.
Here's the program:
#include <stdio.h>
int main(void)
{
double num;
num = 12.345;
printf("%f\n", num);
return(0);
}
I compiled with:
wcl386 fptest.c
When run from DOS, it outputs 12.345000. When run from Windows DOS, it
outputs 0.000000.
Also, if I use the '-fpc' switch, all is well with the world. This only seems
to happen using the emulator library.
My setup is:
486sx/25 with 4M of RAM
386Max memory manager v6.01
DOS 5.0
Windows 3.1
Thanks,
Kevin
kross@bix.com
*** See also #1645.
From: Paul Tletski Rec'd
To: Anthony Scian Msg #1640, Oct-05-93 07:50AM
Subject: Thanks, one more question...
Thanks for the speedy reply.
.
I thought of using MK_FP but noticed that it was in the header <dos.h>,
according to the library manual, so I had the fool though that it was for
16:16 pointer -- which looking back was a pretty stupid thought.
.
Could you explain the syntax of the macro that is in <i86.h>?
.
#define MK_FP(__s,__o) (((unsigned short)(__s)):>((void __near *)(__o)))
.
...
MK_FP(0x1111, 0x22223333);
.
-> (((unsigned short)(0x1111)):>((void near *)(0x22223333)));
^^- Don't understand...
.
Thanks,
.
Paul Tletski
Highland Hts. Ohio
p.s. the ^^ should be under :>.
p.p.s Sorry I wasn't smart enough to read intdosx documentation. I haven't had
enough time to digest everything. I'll try to be more thorough next time.
*** See also #1641.
From: Anthony Scian Rec'd
To: Paul Tletski Msg #1641, Oct-05-93 09:56AM
Subject: Thanks, one more question...
PT> Thanks for the speedy reply.
PT> .
PT> I thought of using MK_FP but noticed that it was in the header <dos.h>,
PT> according to the library manual, so I had the fool though that it was for
PT> 16:16 pointer -- which looking back was a pretty stupid thought.
I'll get this fixed in the docs.
PT> .
PT> Could you explain the syntax of the macro that is in <i86.h>?
PT> .
PT> #define MK_FP(__s,__o) (((unsigned short)(__s)):>((void __near *)(__o)))
PT> .
PT> ...
PT> MK_FP(0x1111, 0x22223333);
PT> .
-> (((unsigned short)(0x1111)):>((void near *)(0x22223333)));
PT> ^^- Don't understand...
We support MS C based pointers with our compilers. The ':>' operator forms a
far pointer from a segment and a based pointer offset. It is more portable to
other C compilers to use the MK_FP macro. We support the based pointer stuff
(which you can find described in MS C books in a book store) to help people
port from MSC/C++. They are very error prone to use in practice. Use far and
based pointers sparingly in 32-bit land.
Anthony
*** This is a reply to #1640.
From: Thomas B. Pollard
To: Mike Kreutzweiser Msg #1642, Oct-05-93 01:26PM
Subject: C/C++ 9.5A Wvideo interrup with <SyRq>
TO Watcom 519-747-4971
FROM Tom Pollard 617-275-0100 Ex127
C/C++ 9.5A Interrupting WVIDEO
;
When I now run WVIDEO using the following lines and testing any of my
programs I can no longer Interrupting with (PrtSc) or (SysRq).
All I get is a beep.
;
SET dos4g=quiet
SET dos4gvm=
wvideo -vga50 -trap=rsi -swap test
;
I have tried just simple loop c programs.
;
What I think is great, is now while I am in WVIDEO and NOT running a
program you can print the screen. Is this a symptom of the problem?
thanks TOM
*** See also #1646.
From: Paul Tletski Rec'd
To: Anthony Scian Msg #1643, Oct-06-93 11:58AM
Subject: Another pointer question...
I have a question concerning how to use int386 with 16 bit interrupt
handlers. I have to interface Watcom 32-bit code with a DOS replacer
which provides an MS-DOS environment on top of a multitasking kernel.
Kernel functions are accessed through INT 2D with DL holding the
function code.
Consider the following example which creates a thread:
#include <dos.h>
...
#define DPMI_INT 0x31
#define DPMI_DOSMEM 0x0300
#define SYSINT 0x2D
#define SYS_ALLOCATE_THREAD 0x00000001
#define IN
typedef unsigned short HANDLE;
typedef unsigned short ushort;
typedef struct real_mode_info {
long edi;
long esi;
long ebp;
long reserved;
long ebx;
long edx;
long ecx;
long eax;
short flags;
short es,ds,fs,gs,ip,cs,sp,ss;
} REAL_MODE_INFO;
...
// Function prototypes
HANDLE AllocateThread (IN void (*func)());
void main (void);
void thread ();
//
...
HANDLE AllocateThread (IN void (*func)())
{
union REGS regs;
struct SREGS sregs;
REAL_MODE_INFO rminfo;
// Set up the DPMI real mode structure.
// CX:AX = Function to execute as thread.
// DL = SYSINT function code.
// AX returns the thread's handle.
memset(&rminfo, 0, sizeof(rminfo));
rminfo.ecx = func >> 16; // does this make sense?
rminfo.eax = func & 0x0000FFFF; // does this make sense?
rminfo.edx = SYS_ALLOCATE_THREAD;
regs.w.ax = DPMI_DOSMEM;
regs.h.bl = SYSINT;
regs.h.bh = 0;
regs.w.cx = 0;
sregs.es = FP_SEG(&rminfo);
regs.x.edi = FP_OFF(&rminfo);
int386x(DPMI_INT, ®s, ®s, &sregs);
return (regs.w.cflag) ? 0 : (HANDLE)(regs.w.ax);
}
void thread ()
{
..... // do thread stuff
}
void main ()
{
HANDLE hThread;
...
hThread = AllocateThread(thread); // create a thread
...
}
I guess the general question is how does one handle situations where
16:16 pointers are expected, as in the above example?
Also, will there be an expection generated if the kernel tries to
execute the thread?
Thanks,
Paul Tletski
Highland Hts., OH
From: David Zechiel Rec'd
To: Kevin Kitsemetry Msg #1644, Oct-06-93 12:24PM
Subject: 'p' option on WCL386
I have noticed that the 'p' option on WCL386 is listed twice, once to use
the protected version of the compiler and once as a 'proprocess' flag. It
appears to me that WCL386 is getting confused and passing the 'p' flag to the
compiler instead of running the protected version of the compiler. Am I doing
something wrong, and if not, is there a way to fix this?
Dave Zechiel
*** See also #1647.
From: Kevin Kitsemetry Rec'd
To: Kevin Ross Msg #1645, Oct-06-93 03:02PM
Subject: Floating point under Windows DOS box
KR> Hello,
KR> I have Watcom C32 for DOS, and have encountered a
KR> rather odd problem. The following program, when run
KR> from DOS, works fine. The same exact program run from
KR> Windows 3.1 DOS session fails.
KR> Here's the program:
KR> #include <stdio.h>
KR>
KR> int main(void)
KR> {
KR> double num;
KR>
KR> num = 12.345;
KR> printf("%f\n", num);
KR> return(0);
KR> }
KR> I compiled with:
KR> wcl386 fptest.c
KR> When run from DOS, it outputs 12.345000. When run
KR> from Windows DOS, it outputs 0.000000.
KR> Also, if I use the '-fpc' switch, all is well with the
KR> world. This only seems to happen using the emulator
KR> library.
You must make sure that you are running wdebug.386 or wemu387.386 (you can
ditribute the second one) as a device driver, specified in the system.ini
file, [386Enh] section.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1637. *** See also #1649.
From: Kevin Kitsemetry Rec'd
To: Thomas B. Pollard Msg #1646, Oct-06-93 03:09PM
Subject: C/C++ 9.5A Wvideo interrup with <SyRq>
TBP> When I now run WVIDEO using the following lines and testing any of my
TBP> programs I can no longer Interrupting with (PrtSc) or (SysRq).
TBP> All I get is a beep.
TBP> ;
TBP> SET dos4g=quiet
TBP> SET dos4gvm=
TBP> wvideo -vga50 -trap=rsi -swap test
TBP> ;
TBP> I have tried just simple loop c programs.
TBP> ;
TBP> What I think is great, is now while I am in WVIDEO and NOT running a
TBP> program you can print the screen. Is this a symptom of the problem?
There is no one named Mike Kreutzwieser at WATCOM. There used to be a Kevin
Kreutzweiser (he is no longer at WATCOM) or Mike Paola. I don't know anything
about this particular problem (I tried a search on all messages in this area).
What version of the compiler do you have (and what patch level? What
specific problems are you running into?
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1642. *** See also #1648.
From: Kevin Kitsemetry Rec'd
To: David Zechiel Msg #1647, Oct-06-93 03:13PM
Subject: 'p' option on WCL386
DZ> I have noticed that the 'p' option on WCL386 is
DZ> listed twice, once to use the protected version of the
DZ> compiler and once as a 'proprocess' flag. It appears
DZ> to me that WCL386 is getting confused and passing the
DZ> 'p' flag to the compiler instead of running the
DZ> protected version of the compiler. Am I doing
DZ> something wrong, and if not, is there a way to fix
DZ> this?
After version 9.5, there is no longer a real mode version of the compiler.
So, the /p switch with the wcl[386] utility is no the same as with the
compiler; that is to pre-process the file.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1644.
From: Thomas B. Pollard Rec'd
To: Kevin Kitsemetry Msg #1648, Oct-06-93 03:59PM
Subject: C/C++ 9.5A Wvideo interrup with <SyRq>
I just added the A patches to C/C++ 9.5
While I am running Wvideo and type -G- for go I no longer can press
<Print Screen> to interupt the program from running.
This happend even with the simplest programs running.
(This id the DOS version of Wvideo.
Sorry about the name I was trying to remember your name.
*** This is a reply to #1646. *** See also #1659.
From: Kevin Ross Rec'd
To: Kevin Kitsemetry Msg #1649, Oct-06-93 05:38PM
Subject: Floating point under Windows DOS box
KK> You must make sure that you are running wdebug.386 or wemu387.386 (you can
KK> ditribute the second one) as a device driver, specified in the system.ini
KK> file, [386Enh] section.
I'd love to. Could you tell me where I can find either of these files? They
aren't included in my Watcom C32 for DOS distribution.
*** This is a reply to #1645. *** See also #1660.
From: Jerry Rice Rec'd
To: Dan Teven Msg #1650, Oct-05-93 01:27PM
Subject: Future enhancements
DT>Jerry,
DT>I have put both the press release and sales piece up on this BBS,
DT>and we are doing a mass mailing to all registered WATCOM customers,
DT>but the mailing was held up by a problem with the labels. You
DT>should receive it shortly. In the meantime, I will be happy to
DT>answer any questions you have about Rational Systems' extenders --
DT>over in area 15.
DT>Rational Systems has never offered a retail DOS extender before;
DT>the products you used to see in mail order catalogues were not
DT>DOS extenders, but other tools. We've traditionally sold our
DT>DOS extenders to companies with big needs for service and support,
DT>for example Lotus (1-2-3 release 3 was built on DOS/16M). Just
DT>offering a retail upgrade to DOS/4GW was a change of direction
DT>for us.
DT>Because we are new to the retail market, we don't really know
DT>how profitable we can be selling upgrades to DOS/4GW. If the first
DT>upgrade, DOS/4GW Professional, proves that the market is there,
DT>we might offer DLL support as an option to WATCOM customers
DT>at some point. We are grateful for your opinion but we have to
DT>collect more data before we decide to change our business focus;
DT>and offering too good a DOS extender for too little money would
DT>put a dent in our OEM business.
Its better to have a dent, even a big one, than a
disaster, later. With all the compiler venders coming out
with their "own" full featured extenders, it seems to me to
be a sink or swim situation for companies that produce
extenders as their mainstay. In my opinion, with the over
zealous jump to Windows and Windows NT, Dos marketting has
to do quite a bit to stay competitive. In the near future
Dos will change to 32 bit, and there is no guarantee that
Dos itself will not support a lot of the hithertofore holes
that I have mentioned. As far as your update, I will be
getting it. (Even though I know little about it) The big
advantage that Rational has over the "vendors of compilers"
is reputation in extended Dos. I haven't got time for the
devlopment of a bug free extender from the compiler vendors.
My purpose is to write and debug C code, and not worry if
the extender is going to work. As time progresses, the
"vendors" will get their bugs out. And that is the time that
you have left. That's where your advantage is. Pharlap has
already realized this. That's why they are giving away their
"lite" package with each Borland product and TNT-Lite with
the Microsoft 32 bit products. Their Cavet is no
documentation, which is the wrong way to do it. Borland
realized this long ago by creating toolkits for their Pascal
to show that their little compiler "could do anything". It
took a lot of the mystery out of programming, and made it
realizable to the common man. Many many of the C programmers
today were brought into the market because of Turbo Pascal.
By not providing documentation, Pharlap has reduced
drastically the number of people that would "venture to use"
their lite product, let alone their full product. People,
programmers, that get "used to" a tool, rarely like to
change, if they do it must be easily. The easier that
Rational makes it for the programmer to grow into the
extended dos world the more users they will have. Rational
could offer their full product to 10 people, at $5,000.00 or
100,000 at $100.00, or wait and not be in the game at all!
Nothing in this business stands still! "Secrets" and half
products just aren't IN in the market any more. That's why
Apple is changing.
DT>You might want to look at DESQview/X, from Quarterdeck Office
DT>Systems, which contains a royalty-free Rational Systems DOS extender
DT>WITH full support for DLLs...
There are other holes.
I have been considering Desqview/X, The feature that I
like about them is that they are going multi-platform, As
Windows NT has promised. The basic black hole with
Desqview/X is the lack of supporting software vendors, eg
C libraries. For instance, I haven't got time to set up a
complete GUI from scratch. That is, X of Desqview/X is fine
as a GUI, but its primitive, just as the Windows SDK is
primitive. There aren't any libraries out there like CView,
or zApp, or TEGL, or Zinc or OWL. That allow me to plug and
play. My software is Scientific Analysis, not GUI's. With
the large amount of C code on the market, even in the
extended dos world, I've been able to buy a library for
everything other than that which I program myself, ie the
scientific application work. That, as yet, does not exist
under Desqview/X. In a year that might change, just as it
changed for windows.
Jer
___
X SLMR 2.1a X
From: Jerry Rice Rec'd
To: Kevin Kitsemetry Msg #1651, Oct-05-93 01:39PM
Subject: Future enhancements
KK> JR> It seems strange to me that Watcom doesn't have this
KK> JR> already, since Watcom is the innovator in 386 dos extension.
KK> JR> As we all know, nothing stays static in the software
KK> JR> development world, just as the section in your users guide
KK> JR> on using Intel Code Builder with Watcom is mostly wrong.
KK>WATCOM does support the use of DOS Extenders (such as DOS/4G and PharLap)
KK>that do allow for the creation of 32-bit DLLs under
KK>extended DOS. The fact that we offer a free DOS extender
KK>that does not support them, does not mean that WATCOM
KK>doesn't support them. Basically, people wanted to create
KK>32-bit applications that will run under DOS. In an effort
KK>to allow them to do this, we provide a royalty free DOS
KK>extender that provides a subset of the functionality that
KK>the user would have received had they paid the full price
KK>for the DOS extender.
KK>If you would like to see this functionality added to the
KK>'free' DOS extender, you can ask Dan Teven (Rational
KK>Systems) in area 15.
My point is that one can buy Borland Pascal 7.0 or
Clarions Top Speed C, and (out of the box) it directly
supports(able to create) DOS DLL's without purchasing extra
products or licenses. Simply an aditional compiler switch
and your code ends up a dll. In that regard Watcom does NOT
support(able to create) DLL's under DOS. When I say
"support", I mean "as is", directly out of the box, no other
purchases or permissions necessary. I was surprised that
Watcom doesn't already do this in the 386 world, since it
will be coming to other compiler companies very very
shortly.
Jer
___
X SLMR 2.1a X
From: Jerry Rice Rec'd
To: Roman Lewkow Msg #1652, Oct-05-93 01:54PM
Subject: Future enhancements
RL> JR> that I have quite a number of EXE's that would have to have
RL> JR> the $1995 license, even though only 5 to 10 for each would
RL> JR> be used. These are custom products, using my tools. It would
RL>Talk to them ( PLap ). I think they are quite aware of
RL>market changes. I always thought that the RTL covers all
RL>products you distribute, also multiple EXEs. Am I wrong ?
RL>Talk to them. As for buying separate SDK for each run time
RL>copy, it can only be used on one machine ! Not one SDK per
RL>customer.
RL> JR> Then irregardless of how many copies are used internally
RL> JR> they own it. That way they pay $495 once. Or just wait till
Your talking about individual applications. Lets say
that I had 5 exe's under one application. I could distribute
that to a number of companies. BUT what about 5
applications, each different? The way I understand their
terms is that it is built for those that distribute ONE
product to many customers, not many products to many
customers. The way it would have to be for me would be that
the license would cover anything that I compiled and decided
to distribute, irregardless of the diversity in either code
or number of different exes.
RL>Nope. One SDK, one machine (at a time) -> usually one copy of your app.
RL> JR> Further, what about Dos 7.0? Its supposed to be 32 bit and
RL> JR> support limited multitasking and have a "window" for 16 bit
RL> JR> apps, but primarily be a 32 bit OS. Those are just rumors,
RL>This is news to me. Sounds interesting, although this DOS would becone
RL>almost
RL>the OS2 1.x . I need to see it ( performance ? ).
RL> JR> world. There are many of us out there that couldn't give a
RL> JR> burnt duck about Windows or OS2, but would rather have
RL> JR> something small, tight and fast, using all the memory and
RL> JR> disk it can grab. My stuff doesn't wait for keyboard I/O or
RL>right !
RL> JR> Sorry to have gotten on the old soap box
RL>it just happens to be my old soap box too :-)
RL> JR> P.S. I already have the semi full version of TNT with
RL> JR> MS Fortran Power Station, royalty free. It will go to 4
RL> JR> gigabytes with VM but I don't think it will create DLL's,
RL> JR> under Dos. And it does not support threads or multi tasking
RL> JR> for MS Pwr Station. But I figure I'll get a flyer soon from
RL>They also include this with MSC 32, supposedly with DLLs
RL>and stuff, but also with the limitations you mention (
RL>memory ).
The Powerstation version does not support DLLS, but oddly
does have full 4 gigabyte support.
RL>My problems with Watcom & Rational are that they don't do what I need.
RL>See my traffic to Dan Teven in this forum and under subject dma in area 12.
RL>Phar Lap can do this, the can't. I'm also quite annoyed by
RL>pathetic documentation provided for the 4GW. New book
RL>doesn't even mention that 1.9 has new stuff, it's just a
RL>reprint from old docs. Took me a long time and some effort
RL>to get a list of new DPMI calls available under 1.9.
RL>Protection in Phar Lap model is also tighter.
It seems to me that the "NEW" book is just a reprint
of version 8.5, in many more respects than just the
extender!! Intel Code builder section is completely wrong
for the current version of the code builder, even though the
code builder changed versions almost 2 years ago. It would
be nice if those could be posted here, and in the patch
files as part of a new readme.txt.
RL>anyway, thanks for your comments; my regards, Roman
Jer
___
X SLMR 2.1a X
From: Phil Duvalsaint Rec'd
To: Kevin Kitsemetry Msg #1653, Oct-06-93 08:06PM
Subject: Targa Graphics Library
The problem seems to be that the functions in the Targa Graphics kit
are ignored. The compiler compiles but the linker still can't
find several function definitions. I've had to fudge the original library
sources to get them to compile. (Mostly problems with register names
like changing AX to AEX or something (since Microsoft used 16 bit
register names and Watcom uses the 32 bit names)) I believe that the
problem has something to do with building the library. There has to be
an easier way. I seem to have run into several problems with converting
Microsoft C code to Watcom. Mostly associated with finding the right library.
*** This is a reply to #1098. *** See also #1661.
From: Christer Palm Rec'd
To: Kevin Kitsemetry Msg #1654, Oct-07-93 08:15AM
Subject: Technical support
Are you guys just reading the last 3 messages every Friday or so ???
I can't say that I'm happy with the Technical Support turnaround times !
Sometimes problem reports doesn't get answered at all !!
Could you PLEEEASE take a look a msg #1623 & 1527 ??
Thanks
Christer
*** See also #1662.
From: Paul Tletski
To: Watcom Folk Msg #1655, Oct-07-93 09:00AM
Subject: Function Pointer Question...
I have a question concerning how to use int386 with 16 bit interrupt
handlers. I have to interface Watcom 32-bit code with a DOS replacer
which provides an MS-DOS environment on top of a multitasking kernel.
Kernel functions are accessed through INT 2D with DL holding the
function code.
Consider the following example which creates a thread:
#include <dos.h>
...
#define DPMI_INT 0x31
#define DPMI_DOSMEM 0x0300
#define SYSINT 0x2D
#define SYS_ALLOCATE_THREAD 0x00000001
#define IN
typedef unsigned short HANDLE;
typedef unsigned short ushort;
typedef struct real_mode_info {
long edi;
long esi;
long ebp;
long reserved;
long ebx;
long edx;
long ecx;
long eax;
short flags;
short es,ds,fs,gs,ip,cs,sp,ss;
} REAL_MODE_INFO;
...
// Function prototypes
HANDLE AllocateThread (IN void (*func)());
void main (void);
void thread ();
//
...
HANDLE AllocateThread (IN void (*func)())
{
union REGS regs;
struct SREGS sregs;
REAL_MODE_INFO rminfo;
// Set up the DPMI real mode structure.
// CX:AX = Function to execute as thread.
// DL = SYSINT function code.
// AX returns the thread's handle.
memset(&rminfo, 0, sizeof(rminfo));
rminfo.ecx = func >> 16; // does this make sense?
rminfo.eax = func & 0x0000FFFF; // does this make sense?
rminfo.edx = SYS_ALLOCATE_THREAD;
regs.w.ax = DPMI_DOSMEM;
regs.h.bl = SYSINT;
regs.h.bh = 0;
regs.w.cx = 0;
sregs.es = FP_SEG(&rminfo);
regs.x.edi = FP_OFF(&rminfo);
int386x(DPMI_INT, ®s, ®s, &sregs);
return (regs.w.cflag) ? 0 : (HANDLE)(regs.w.ax);
}
void thread ()
{
..... // do thread stuff
}
void main ()
{
HANDLE hThread;
...
hThread = AllocateThread(thread); // create a thread
...
}
I guess the general question is how does one handle situations where
16:16 pointers are expected, as in the above example?
Also, will there be an expection generated if the kernel tries to
execute the thread?
Thanks,
Paul Tletski
Highland Hts., OH
p.s. Is this a situation where I should use callbacks?
*** See also #1657.
From: Kevin Kitsemetry
To: Ned Konz Msg #1656, Oct-07-93 09:44AM
Subject: Windows NT exception handling
KK> Contacted customer directly.
NK> Some time ago I left a message saying that we wanted
NK> to use Watcom on our NT project, but that we needed to
NK> be able to catch the NT exceptions (thrown by
NK> RaiseException()). I received a reply that said
NK> that,although Watcom didn't currently work with the NT
NK> exception handling scheme,Watcom was "looking into it".
NK> I did some more investigation, thinking I could get something working. I
NK> was wrong: there is an undocumented interface to the
NK> Windows NT exception handling that Microsoft only
NK> shows to compiler vendors.
NK> So I'm back to asking for help from Watcom. I'd like
NK> to talk to whoever is "looking at" NT exception
NK> handling, so I can tell them about our immediate needs
NK> in this area.
NK> What we need right now is a way to catch NT software
NK> exceptions raised by system calls (especially the RPC
NK> calls), and throw real C++ exceptions which correspond
NK> to the NT exception code.
NK> I can be reached at (407)262-8084, or on compuserve as
NK> 76046,223, or via the Internet as
NK> Ned_Konz%Conner_Software@mcimail.com
NK> Thanks.
*** This is a reply to #1581. *** See also #1914.
From: Anthony Scian Rec'd
To: Paul Tletski Msg #1657, Oct-07-93 10:37AM
Subject: Function Pointer Question...
PT> I have a question concerning how to use int386 with 16 bit interrupt
PT> handlers. I have to interface Watcom 32-bit code with a DOS replacer
PT> which provides an MS-DOS environment on top of a multitasking kernel.
PT> Kernel functions are accessed through INT 2D with DL holding the
PT> function code.
I think it is highly unlikely that the multitasking kernel can multitask 32-
bit functions without cooperating with DOS4G. Does the multitasking kernel
handle 32-bit code already? If not, I think you are in for a surprise when
the top half of your registers go away because I doubt the multitasker saves
32-bit registers. I think you'll have to get a 32-bit version of the
multitasker. Unless the multitasker is extremely sophisticated and DPMI-
aware, a 16-bit version has very little chance of dealing with DOS4G 32-bit
code.
Anthony
*** This is a reply to #1655. *** See also #1666.
From: Anthony Scian Rec'd
To: Arthur Jones Msg #1658, Oct-07-93 01:43PM
Subject: wmake nt and long filenames
AJ> i'm having some problems with wmake in binnt, with short filenames
AJ> it works find but it doesn't seem to make long filenames on a ntfs
AJ> file system. my makefile has both long and short filenames with
AJ> equivalent dependencies, the short filenames work fine but the
AJ> long filenames give an unable to make target error. need i do
AJ> something different? it doesn't seem i should. btw, case sensitivity
AJ> seems to work.
I found the problem in make. The NT make was compiled with a very early
version of the NT library header files that had DOS 8.3 path constants. I've
recompiled the code with the correct constants so it should work with long
file names. It will be in the B-level patches.
Anthony
*** This is a reply to #1629.
From: Kevin Kitsemetry Rec'd
To: Thomas B. Pollard Msg #1659, Oct-07-93 04:28PM
Subject: C/C++ 9.5A Wvideo interrup with <SyRq>
TBP> I just added the A patches to C/C++ 9.5
TBP> While I am running Wvideo and type -G- for go I no longer can press
TBP> <Print Screen> to interupt the program from running.
TBP> This happend even with the simplest programs running.
TBP> (This id the DOS version of Wvideo.
TBP> Sorry about the name I was trying to remember your name.
No problem, you got it right. I have discussed this with the developer in
charge of WVIDEO, and he has told me that there is never any guarantee that
cntl-alt-sysrq will halt the debugger under DOS. It may even cause (in rare
occations) the debugger to crash!
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1648. *** See also #1672.
From: Kevin Kitsemetry Rec'd
To: Kevin Ross Msg #1660, Oct-08-93 10:02AM
Subject: Floating point under Windows DOS box
KK> You must make sure that you are running
KK> wdebug.386 or wemu387.386 (you can
KK> ditribute the second one) as a device driver,
KK> specified in the system.ini
KK> file, [386Enh] section.
KR> I'd love to. Could you tell me where I can find
KR> either of these files? They aren't included in my
KR> Watcom C32 for DOS distribution.
I didn't realize that they did not come with C32 for DOS.
As it turns out, the floating point support under Windows
has changed, whereby it is no longer necessary to have
this device driver loaded. However, the change will not
be incorporated before patch level B to the compiler.
I will make the file WEMU387.386 available in File Area 12,as a workaround
until then.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1649.
From: Kevin Kitsemetry Rec'd
To: Phil Duvalsaint Msg #1661, Oct-07-93 05:28PM
Subject: Targa Graphics Library
PD> The problem seems to be that the functions in the Targa Graphics kit
PD> are ignored. The compiler compiles but the linker still can't
PD> find several function definitions. I've had to fudge the original library
PD> sources to get them to compile. (Mostly problems with register names
PD> like changing AX to AEX or something (since Microsoft used 16 bit
PD> register names and Watcom uses the 32 bit names)) I believe that the
PD> problem has something to do with building the library. There has to be
PD> an easier way. I seem to have run into several
PD> problems with converting Microsoft C code to Watcom.
PD> Mostly associated with finding the right library.
If you have compiled the source as you say, you can check the symbols by using
wlib on the library. You can check the map file generated by the linker to
try and determine why it can't find the symbols.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1653.
From: Kevin Kitsemetry Rec'd
To: Christer Palm Msg #1662, Oct-07-93 05:33PM
Subject: Technical support
CP> Are you guys just reading the last 3 messages every Friday or so ???
CP> I can't say that I'm happy with the Technical Support turnaround times !
CP> Sometimes problem reports doesn't get answered at all !!
CP> Could you PLEEEASE take a look a msg #1623 & 1527 ??
It looks as though you have been dealing with Mark Delafranier. I have
notified him of these messages.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1654. *** See also #1722.
From: Kevin Blenkinsopp
To: All Msg #1663, Oct-07-93 05:48PM
Subject: Exception Handling Timings
Just in case anyone's interested, I did some timing tests on exception
handling today, spurred on by something I read in the C++ Report. What I came
up with was this:
Trying Throwing
Compiler/Loops Normal (x slower) (x slower)
WPPx100,000 0.28 0.72 (2.57) 3.43 (12.25)
WPPx10,000,000 17.61 62.12 (3.52) 332.48 (18.88)
DECx10,000,000 0.9 3.2 (3.55) c2400 (2666)
The timings for the DEC compiler are from Oct 93 C++ Report and are intended
only give a rough feel ... not scientific testing ... not DEC approved ...
don't sue me, etc.
For those of you who don't know WHY exceptions take so much longer, the
general approach (as I understand it) is that the compiler saves a bit of
extra information if you're doing something inside a try block, which it then
uses to help it unroll the stack (when the exception is thrown) and destroy
all the objects created inside the try block before it goes to the catch block.
Lest anybody get the wrong impression, I'm absolutely NOT slagging Watcom off
for the performance issues involved. Their implementation seems to be pretty
damn good by comparison - that last number in the table for DEC isn't a typo.
The moral of this story (and the point made in the article) is this:
Exceptions are for exceptional cases, not general purpose error handling. If
you want a constructor to fail cleanly, for example, exceptions are by far the
best way to handle it.
The two-and-a-half to three-and-a-half times increases that come with wrapping
code in try blocks are pretty easy to tolerate (especially given that we're
seeing two-and-a-half to five times increases in performance on our code now
that we've switched compilers) since you get much more understandable code for
it, but if exceptions get thrown too often you could be in for quite a hit.
Don't let me (or anybody else) scare you off exceptions. They're staggeringly
useful in places. Like everything else in this industry,it's a judgement call.
From: David Zechiel Rec'd
To: Kevin Kitsemetry Msg #1664, Oct-07-93 06:49PM
Subject: __InitRtns
I applied all of the 'A' patches to my 9.5 compiler and then recompiled and
relinked everything. When I try to run it nothing happens. I traced the code
and watched it call a module called "__InitRtns" and then it exited in a
routine called "exit_with_message" or somthing close to that. I am at a loss
to explain this, can you tell me what would cause "__InitRtns" to fail and
what it is supposed to be doing?
Dave Zechiel
*** See also #1669.
From: Brian Schriber
To: Anyone Msg #1665, Oct-07-93 10:27PM
Subject: Wvideo Display problem
Help.
I have a problem that is something akin to a problem someone had before. What
is going on is that I am trying to debug a program and the machine seems to
lock up with a blank display. However, Wvideo IS running. If i tell it to GO
the system runs the application fine including its display, keyboard, mouse.
And when it exits it goes back to this black screen. The only thing I can see
is an underline cursor in the top left. So whats the problem? This same
program debugs fine on the 386 machine I just got off. The machine is a 486.
Now I have had problems using wvideo on another 486 we have in the office, but
the problem I am having now is just wierd. I really would appreciate any
assitance that could be provided. All in all I (and judging from the msgs here
I'm in the minority) am not totally displeased with the environment.
I am also having a problem breaking a running program and then restarting it
by using the <ctrl-break/print-scr> key. Although I get the debugger fine I
cannot get the program to continue. I will be getting the A level patches
after this But just in case that doesn't fix the problem (or I can't get the
download to complete before being dropped) I would still appreciate any info.
Brian Schriber
PDS Developement Corp
Raleigh, NC
WATCOM's Techinfo Utility, Version 1.3
Current Time: Thu Oct 7 13:59:16 1993WATCOM
Phone: (519) 884-0702
415 Phillip St. Fax: (519) 747-4971
Waterloo, Ontario
CANADA N2L 3X2
------------------WATCOM C Environment Variables ----------------
WATCOM=<G:\WC\.>
INCLUDE=<G:\WC\H;G:\WC\H\WIN>
PATH=<Z:.;Y:.;C:\;C:\DOS;C:\NET386;C:\PATHWAY;G:\WC\BIN;G:\WC\BINB;G:\ADEPT;G:\
TT;H:\PP2\BIN;H:\UTILS;G:\SS>
File 'G:\WC\.\bin\wcc386.exe' has not been patched
File 'G:\WC\.\binnt\wcc386.exe' has not been patched
File 'G:\WC\.\bin\wvideo.exe' has not been patched
File 'G:\WC\.\binw\wvideo.exe' has not been patched
File 'G:\WC\.\binnt\wvideo.exe' has not been patched
File 'G:\WC\.\bin\wlink.exe' has not been patched
File 'G:\WC\.\binnt\wlink.exe' has not been patched
File 'G:\WC\.\binb\wlib.exe' has not been patched
File 'G:\WC\.\binnt\wlib.exe' has not been patched
------------------WATCOM SQL Environment Variables ----------------
... ERROR...WSQL environment variable not set.
Amount of extended memory is: 0K
Amount of base memory is: 640K
Amount of free base memory is: 521264 bytes
DOS Version 5.0
------------C:\CONFIG.SYS-------------
break=on
FILES=80rem lastdrive=E
rem device=c:\386max\386max.sys
device=c:\dos\ansi.sys
device=c:\dos\himem.sys
dos=high
rem device=c:\dos\smartdrv.sys 4096
SHELL=C:\DOS\COMMAND.COM c:\dos\ /P /E:768
rem device=c:\pathway\pwtcp.sys
------------C:\AUTOEXEC.BAT-------------
@ECHO off
PROMPT $p$g
PATH=C:\;C:\DOS;C:\Net386;C:\Pathway
rem *** setup on network ***
SET ADEPT=g:\ADEPT
SET PDSOPEN=G:\OPEN\OPENFILE
set tmp=g:\
rem *** start up the network ***
CALL stnw
rem *** setup for the watcom compiler ***
CALL wcset
rem *** setup Dr. Taylor's Test after network up ***
PATH %PATH%;G:\DTT
rem *** final setup requiring network be up ***
PATH %PATH%;H:\PP2\BIN;H:\UTILS;G:\SS
set pp2=g:\pp2
capture Au
rem *** go to start directory ***
cd \open
mouse
------------------------------------------------
An Intel 486 processor is installed in this system.
486 math coprocessor is present
and Equipment Flags say math coprocessor IS present.
The next test may cause the system to hang if 486
interruptsare not handled properly.
486 interrupts are properly enabled.
------------------------------------------------
APPEND NOT INSTALLED
*** See also #1670.
From: Paul Tletski Rec'd
To: Anthony Scian Msg #1666, Oct-08-93 07:14AM
Subject: Function Pointer Question...
Anthony,
After a little thought and poking around at the DPMI, I think I can do what I
mentioned in my last note. The key is to have DPMI issue a Real-Mode to
Protected-Mode callback. This is DPMI function 0x0303. DOS4GW doesn't
support this function, and neither does their DOS4G offering. I'll probably
have to get a hold of Phar Lap (TNT perhaps - is Watcom compatible with TNT?)
or some other extender (Ergo may do as well) which supports the full DPMI.
There is also an article in DDJ 2/92 about mixing real & protected mode code.
I'll let you know what I find.
Thanks.
Paul Tletski
Highland Hts., OH
*** This is a reply to #1657. *** See also #1667.
From: Dan Teven Rec'd
To: Paul Tletski Msg #1667, Oct-08-93 09:52AM
Subject: Function Pointer Question...
DOS/4G _does_ support the real-mode callback functions, int 31h
functions 303h and 304h.
Dan Teven
Rational Systems, Inc.
*** This is a reply to #1666.
From: Dave Heyliger
To: Tech Support Msg #1668, Oct-08-93 10:28AM
Subject: _dos_getvect / _dos_setvect, 32-bit Windows
Creating a 32-bit Windows app w/ C 9.5, and I am having trouble w/
_dos_setvect.
It looks as if you call _dos_getvect and then use the same _interrupt
_far * pointer and call _dos_setvect, the code works fine. However, using a
different _interrupt _far * pointer causes incorrect setting of the vector. I
have confirmed this by tracing via VIDEO the entire assembly code chain.
My question: do you have to perform any special MK_FP16() or ???
function before passing the interrupt vector to _dos_setvect?
If you need to see the asm trace listing, let me know.
Thanks, Dave Heyliger
*** See also #1700.
From: Kevin Kitsemetry
To: David Zechiel Msg #1669, Oct-08-93 03:42PM
Subject: __InitRtns
DZ> I applied all of the 'A' patches to my 9.5 compiler
DZ> and then recompiled and relinked everything. When I
DZ> try to run it nothing happens. I traced the code and
DZ> watched it call a module called "__InitRtns" and then
DZ> it exited in a routine called "exit_with_message" or
DZ> somthing close to that. I am at a loss to explain
DZ> this, can you tell me what would cause "__InitRtns" to
DZ> fail and what it is supposed to be doing?
I don't know off hand what would cause that, especially (I
assume) it worked before you applied the patches. Did the
patches apply properly (no errors), and have you verified
them by running the techinfo.exe utility?
Next, tell me more about your application that you are trying to build. What
platform are you targeting? What language are you writing it in (C or C++)?
Can you provide an example,
or at least a mapfile for us to look at?
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1664.
From: Kevin Kitsemetry Rec'd
To: Brian Schriber Msg #1670, Oct-08-93 01:04PM
Subject: Wvideo Display problem
BS> Help.
BS> I have a problem that is something akin to a problem someone had before.
BS> What is going on is that I am trying to debug a
BS> program and the machine seems to lock up with a blank
BS> display. However, Wvideo IS running. If i tell it to
BS> GO the system runs the application fine including its
BS> display, keyboard, mouse. And when it exits it goes
BS> back to this black screen. The only thing I can see is
BS> an underline cursor in the top left. So whats the
BS> problem? This same program debugs fine on the 386
BS> machine I just got off. The machine is a 486. Now I
BS> have had problems using wvideo on another 486 we have
BS> in the office, but the problem I am having now is just
BS> wierd. I really would appreciate any assitance that
BS> could be provided. All in all I (and judging from the
It sounds like WVIDEO thinks that there is a second monitor on the machine.
Try specifying the /SWAP option when you
invoke wvideo.
BS> I am also having a problem breaking a running program and then
BS> restarting it by using the <ctrl-break/print-scr> key.
BS> Although I get the debugger fine I cannot get the
BS> program to continue. I will be getting the A level
BS> patches after this But just in case that doesn't fix
BS> the problem (or I can't get the download to complete
BS> before being dropped) I would still appreciate any
BS> info.
If you are trying to do this in DOS, then this is not a surprise. I have just
recently talked to the developers in charge of the debugger and they told me
that this is never guaranteed to work under DOS. Did you try specifying the
new command, followed by 'go main'?
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1665. *** See also #1675.
From: Tom Ohlin Rec'd
To: Kevin Kitsemetry Msg #1671, Oct-08-93 03:44PM
Subject: 9.5 A patch
KK> Mark Delafranier dealt with customer on e-mail and phone.
The A patches have caused an error with fread() when the string being read
crosses a segment boundry?
I have a file with several hundred ascii strings - all of known length. When I
fread() each one with fread(buff,1,count,stream) all come in fine except when
the string spans the 0x1000 char in the file. Buff gets loaded with the
beginning of the string upto address 0xfff of the file. The return value from
fread() reflects accurately the number read, but feof() or ferror() do not
show an error.
Recompiling with the pre A patch version does not show any problems.
Also minor problem with \watcom\binw\wvideo. When I quit from wvideo at the
DBG> prompt the mono & vga screens both clear and nothing appears to be
happening with two blank screens. a cntl/alt/del awakens windows with its
warning prompt about doing this however the "press any key" senario repaints
the windows screen and everything returns to normal.
Hope there is a workaround for the fread() problem.
Tom Ohlin
From: Thomas B. Pollard Rec'd
To: Kevin Kitsemetry Msg #1672, Oct-09-93 10:49AM
Subject: C/C++ 9.5A Wvideo interrup with <SyRq>
OK about the <ctrl SysRq> but the Print Screen always worked before.
Last night I compleatly reinstalled 9.5 on my 386 computer at home and then
applied the A patches. While I was in the Wvideo I pressed
<Print Screen>(with a program loaded but not running) and I got a stack over
flow and a the computer locked up.
--- Is there any other way to interrup Wvideo ?
Thanks.
*** This is a reply to #1659. *** See also #1701.
From: Jason Blochowiak Rec'd
To: Kevin Kitsemetry Msg #1673, Oct-09-93 12:01PM
Subject: Breaking into a program that steals the keyboard
Hi. I'm working on a program that completely takes over the keyboard vector
(#9). It's nice that the current version (I have the 9.5a C++ package) of
WVIDEO regains control of the keyboard when a pre-set breakpoint is hit.
However, it seems I can't break into the program with the keyboard. This is
definitely feasible (TD386 does it) - is this currently possible with WVIDEO?
Jason
*** See also #1702.
From: Stephen Baum
To: All Msg #1674, Oct-10-93 01:23PM
Subject: DOS4GW, VM, and OS/2
I have a DOS application which uses virtual memory and DOS4GW. I also have a
few customers attempting to run it in a DOS compatibility box under OS/2. It
frequently works, but tends to crash at odd times and in odd ways. One of the
more controlled crashes indicates a malloc() failure, in a circumstance that
does not fail under DOS.
I have a suspicion that the DOS4GW virtual memory functions erratically under
OS/2, but attempts to run without it by removing the DOS4GVM setting have not
succeeded either. I base this suspicion in part on the fact that VM seems to
screw up when the swap file is run on a compressed disk with standard DOS,
leading me to believe that swap file access does not conform to standard DOS
I/O procedures for speed reasons.
Any ideas as to how to get this stuff to work under OS/2?
Thanks, Stephen Baum
*** See also #1683.
From: Brian Schriber Rec'd
To: Kevin Kitsemetry Msg #1675, Oct-10-93 05:43PM
Subject: Wvideo Display problem
BS> I am also having a problem breaking a running program and then
BS> restarting it by using the <ctrl-break/print-scr> key.
BS> Although I get the debugger fine I cannot get the
BS> program to continue. I will be getting the A level
KK> If you are trying to do this in DOS, then this is not a
KK> surprise. I have just recently talked to the developers
KK> in charge of the debugger and they told me that this is
KK> never guaranteed to work under DOS. Did you try
KK> specifying the new command, followed by 'go main'?
KK> Kevin Kitsemetry
KK> WATCOM TECHNICAL SUPPORT
Well, I'm not trying to setup a new command (I presume you mean by setting up
new command line arguments). I will do an examine on memory, or a variable, or
set a new breakpoint. I then want the program to continue execution from where
I stopped it. I have not had a problem restarting the program, just getting it
to continue. I have tried the /SWAP option on that 486. Thanx, I don't know
why it thinks there is another monitor, but now that I can debug on the
machine I am much happier. If you could let me know about using the break key
on a program and continuation being not supported from the point at which the
User Interrupt occurs I would be appreciative.
Brian Schriber
PDS Developement Corp.
Raleigh, NC
*** This is a reply to #1670. *** See also #1703.
From: Solaroli Matteo
To: Kevin Kitsemetry Msg #1679, Oct-11-93 08:07AM
Subject: replay to 1401
The program received from you (mess. #1401) doesn't run correctly.
The function call 800h of the DPMI is not supported because returns with the
carry flag set.
I'm using the subset of Rational Systems' DOS/4G provided with the WATCOM C/386
package (DOS/4GW), under MS-DOS.
Is it necessary to run the program under Windows to avoid the function call
800h ?
Does the complete version of DOS/4G extender support this function call of
DPMI with MS-DOS ?
Another problem :
Is possible to use the interrupt handler 0xF (Irq7) only. Using another
interrupt the program faults with the message error :
Unexpected interrupt 0D (code 304c60) at 70:52F1
TSF32: prev_tsf32 4C60
Please answer us soon as possible.
I am looking forward to ear from you.
From: Nigel Evans Rec'd
To: Dan Cummins Msg #1681, Oct-11-93 10:17AM
Subject: DPMI and Interrupts using WATCOM C/386 v9.01
I need to write an ISR to handle DOS int 24 (critical error handler), using
the DOS4GW option within WATCOM C/386 v9.01.
However, I get a page fault when trying to use the standard sprintf() calls
within the handler. I believe the problem is most likely caused by stack
switching. Using assembler to save and restore the stack (I guess I could do
this with the pragma directive) doesn't give a page fault ... It just stuffs
my environment and probably a lot of other undesirable effects
Heres some sample code:
#include <stdio.h>
#include <sys\stat.h>
#include <dos.h>
char scr[2000] ;
extern mysprintf() ;
#define ABORT 2
#define RETRY 1
#define IGNORE 0
union REGS inregs, outregs ;
struct SREGS segregs ;
static int retrycount = 0 ;
#define MAXAUTORETRY 5
#define SCREENROWS 25
#define SCREENCOLS 80
static int scrrow, scrcol ;
static char *STARTPOS ;
static char *scrpos ;
static int curatt ;
void scrinit()
{
STARTPOS = (char *)((0xB800) << 4) ;
scrrow = 0 ; scrcol = 0 ; /* Top LH corner */
scrpos = STARTPOS ;
curatt = 0x07 ;
}
int keycode ()
{
int c ;
if ((c=bdos(8,0,0) & 0xFF) >= ' ') /* Microsoft & Lattice
C only */
return (c) ;
}
void putscr()
/*=========*/
{ char *s ;
s = scr ;
while (*s) {
if (*s == '\n') {
if (++scrrow > SCREENROWS) scrrow = SCREENROWS - 1 ;
scrpos = STARTPOS + scrrow * 160 ; scrcol = 0 ;
s++ ;
}
else {
*scrpos++ = *s++ ;
*scrpos++ = curatt ;
if (++scrcol >= SCREENCOLS) {
if (++scrrow > SCREENROWS) scrrow = SCREENROWS - 1 ;
scrpos = STARTPOS + scrrow * 160 ; scrcol = 0 ;
}
}
}
}
int action(flag, code, dev)
/*=======================*/
int flag ;
char code ;
char *dev ;
{
char msg[100] ;
char name[20] ;
int i ;
static char *errname[13] = {
"Write Protected",
"Unknown Unit",
"Not Ready",
"Unknown Command",
"Data Error (CRC)",
"Bad Request Structure Length",
"Seek Error",
"Unknown Media Type",
"Sector Not Found",
"Printer Out Of Paper",
"Write Fault",
"Read Fault",
"General Failure" } ;
static int aborted = 0 ;
if (flag>=0) {
sprintf(msg, "Drive %c: %s - Abort or Retry",
*(char *)(&flag)+'A', errname[code]) ;
}
else if (aborted) {
/* can't procede without recursion so fail */
/* should flushing buffers in exit() anyway. */
_exit(3) ;
}
else {
for (i=0 ; i<8 ; ++i) {
if (dev[i+10] == ' ') break ;
name[i] = dev[i+10] ;
}
name[i] = '\0' ;
sprintf(msg, "Device %s: %s - Abort, Retry or Ignore",
name, errname[code]) ;
}
putscr() ;
if (retrycount++ <= MAXAUTORETRY)
return RETRY ;
else {
retrycount = 0 ;
for ( ;;)
switch (keycode()) {
case 'a':
aborted = 1 ;
return ABORT ;
break ;
case 'r':
return RETRY ;
case 'i':
if (flag<0) {
return IGNORE ;
}
break ;
}
}
}
int __interrupt handler (regs)
/*==========================*/
union INTPACK regs ;
{
int flag = (int)regs.h.ah ;
char code= (int)regs.w.di ;
char *dev= (int)regs.x.ebx = FP_OFF(regs.w.sp) + FP_SEG(regs.w.bp) ;
return(action(flag, code, dev)) ;
}
main()
{
unsigned int CS ;
unsigned int EIP ;
void far *fp ;
void *lowp ;
scrinit() ;
inregs.x.eax = 0x3524 ;
segregs.ds = segregs.es = 0 ;
int386x(0x21, &inregs, &outregs, &segregs) ;
sprintf(scr,"Old Handler at CS:EIP %02X:%04X\n", CS=(unsigned
int)segregs.es, EIP=outregs.x.edx) ;
putscr() ;
fp = (void far *) handler ;
inregs.x.eax = 0x2524 ;
inregs.x.edx = FP_OFF(fp) ;
segregs.ds = FP_SEG(fp) ;
segregs.es = 0 ;
int386x(0x21, &inregs, &outregs, &segregs) ;
sprintf(scr,"New Handler at CS:EIP %02X:%04X", inregs.w.cx, inregs.x.edx) ;
putscr() ;
creat("a:\file", S_IREAD | S_IWRITE) ;
inregs.w.ax = 0x2524 ;
inregs.x.edx = EIP ;
segregs.ds = CS ;
segregs.es = 0 ;
int386x(0x21, &inregs, &outregs, &segregs) ;
}
*** See also #1889.
From: Gordo Lang
To: Kevin Kitsemetry Msg #1682, Oct-11-93 10:56AM
Subject: Mangled names and Assembler
I am trying to implement some class method()s in assembler (using
Borland's TASM to be precise). These are rather large routines which
cannot be satisfactorily implemented using the #pragma aux scheme. Is
there a way to change the name-mangling scheme so that it does NOT use
characters like "?():" ? There is no way TASM (or any other x86
assembler) can produce a subroutine label like "W?foo(ul):qv" since it
contains key characters. I really don't want to convert all my class
methods into their equivalent "C" routines just to get around this, and
I don't want to write an OBJ label translater. Is there a way out of
this? HELP.
Thanks in advance, Gordon.
*** See also #1711.
From: Dan Teven Rec'd
To: Stephen Baum Msg #1683, Oct-11-93 08:17PM
Subject: DOS4GW, VM, and OS/2
The DOS/4GW virtual memory manager doesn't run under OS/2; OS/2
provides the virtual memory services.
*** This is a reply to #1674.
From: Chandra Chandrasekar
To: All Msg #1685, Oct-11-93 09:56PM
Subject: 32 bit to 16 bit DLL data transfer
Dear Beloved 32 bit developers,
We are currently building an application where a 32 bit DLL and
a 16 bit DLL must co-exist. Our problem is transfering data
between functions in 16 bit DLL to 32 bit DLL and vice-versa.
We are developing the 32-bit DLL in watcom 32 bit compiler and the 16-bit DLL
with the Microsoft Visual C++ compiler.
We would very much appreciate answers to the following questions:
1) how do I call a function in 32 bit DLL in 16 bit DLL?
2) What data transfer mechanism should we use? DDE? How do
we recognize the data formats?
3) I have a huge class object on the 32-bit side and I want to pass the
object to the 16 bit on demand or as a return value. How do I do ito
3) Is this possible? Has anyone done this before?
please e-mail to the following address or post it on BBS and i will take it
from there.
My e-mail address is
chandra@strategy.com
thanks a million.
-chandra & sundar
From: Kevin Kitsemetry Rec'd
To: Edward Palandri Msg #1689, Oct-12-93 10:27AM
Subject: Problems with accessing an OS/2 16 bit DLL from Watcom C/386
KK> Internal Report #6526
EP> I am using Watcom C/386 v9.0 patch level E and I am
EP> trying to build an OS2 2.1 program which will call a
EP> 16 bit DLL which is provided by another vendor.
EP> The DLL is OK as we have successfully used it with an
EP> OS/2 16 bit front end program but when I attempt to
EP> call it from a 32 bit front end I get the following
EP> messages from OS/2
EP> SYS2070 The system could not demand load the
EP> application's segment. OS2SKWAT->SDLL.DLL is in error.
EP> For further information type HELP SYS127.
EP> and HELP SYS127 produces:
EP> SYS0127: The specified procedure could not be found.
EP> EXPLANATION: The specified procedure is not in the module
EP> being searched or in the Exitlist routine list.
EP> ACTION: Check which procedure is being requested and make
EP> sure that it is in the module or Exitlist routine list.
EP> I have, I believe followed the instructions for
EP> calling 16 bit DLL's but have had no success in getting it to work.
EP> SDLL.DLL is in a directory on the LIBPATH
EP> I have uploaded a file OS2SKWAT.ZIP to the BBS which
EP> contains the following pieces:
EP> OS2SKWAT.C C code of the 32 front end which calls
EP> the DLL OS2SKWAT.EXE Excecutable produced by the
EP> BAT file
EP> OS2SKWAT.OBJ Object module produced by the BAT file
EP> OS2SKWAT.MAP Link map
EP> OS2SK.EXE A 16 bit OS/2 executable that calls
EP> the same DLL SDLL.DLL The DLL in question
EP> MKOS2SKW.BAT A DOS bat file for compiling and
EP> linking OS2SKWAT README.TXT This fil
EP> OS2SKWAT calls an entry point OS2SCRIB in SDLL.DLL
EP> (with no trailing_). Note that when the program
EP> actually executes it requires a driver which you do
EP> not have, but the program does not load and never gets
EP> to any stage of execution.
I was not able to reproduce this exactly as you described.
The file you sent to us did NOT include SDLL.DLL. The
program complained that it could not find this DLL with
version 9.01e and 9.5a.
Having said that, we have come accross something similar
in the past, whereby the OS/2 loader was not returning the
correct segment-offset value for the 16-bit DLL at run-time. We changed the
way we implimented the call for version 9.5
(by asking for the 32-bit flat address instead of converting it ourselves).
This solved the problem, and hence it is
possible that your program would work with version 9.5.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1587. *** See also #1695.
From: Gordo Lang Rec'd
To: Kevin Kitsemetry Msg #1691, Oct-12-93 11:42AM
Subject: C++32 -zc, #pragma #problems, extern "C" problems
I am progamming in C++32 and am having difficulty with a few "features".
I suspect that the "-zc" option (put const literals in _TEXT segment)
does not work in C++ using any memory model. Is this true ?
I cannot get the "#pragma DATA_SEG" example on page 154 of the UG to
emit data into anything other than _DATA or _BSS. Is this feature
being ignored in the C++ version of the compiler?
I believe the following constructs should be the same:
extern "C" {
int x;
int y;
};
and ..
extern "C" int x;
extern "C" int y;
but the compiler produces different OMF records for these two cases.
The former construct produces linker complaints about duplication of
symbols. Who is wrong here? Compiler, Linker, or Programmer?
I'm in the process of writing a de-mangler/re-mangler program to convert
the W?Mangled$:Name(s) into symbols more acceptable to an Assembler
(TASM); is the WATCOM C++32 mangling rules available? I looked in the
manuals but couldn't find anything about mangling, is this a secret ?
Other than these teeny, weeny complaints I think the C++ is great!
Thanks in advance, Gordon.
*** See also #1694.
From: Anthony Scian Rec'd
To: Gordo Lang Msg #1694, Oct-12-93 01:06PM
Subject: C++32 -zc, #pragma #problems, extern "C" problems
GL> I am progamming in C++32 and am having difficulty with a few "features".
GL> I suspect that the "-zc" option (put const literals in _TEXT segment)
GL> does not work in C++ using any memory model. Is this true ?
if you have const int far a[] = { 1, 2, 3, 4, 5, 6 };; this should go in the
code segment if the memory model is -mc or -ml. I'll check this.
GL> I cannot get the "#pragma DATA_SEG" example on page 154 of the UG to
GL> emit data into anything other than _DATA or _BSS. Is this feature
GL> being ignored in the C++ version of the compiler?
Yes. I'll add this as a bug.
GL> I believe the following constructs should be the same:
GL> extern "C" {
GL> int x;
GL> int y;
GL> };
GL> and ..
GL> extern "C" int x;
GL> extern "C" int y;
GL> but the compiler produces different OMF records for these two cases.
GL> The former construct produces linker complaints about duplication of
GL> symbols. Who is wrong here? Compiler, Linker, or Programmer?
Programmer. The semantics of a declaration are not affected by an
extern "C" block. See p. 524-525 of the C++ PL book included in
WATCOM C++. See p.116-119 of the ARM (especially p.118 which has
exactly this example) for more detail.
GL> I'm in the process of writing a de-mangler/re-mangler program to convert
GL> the W?Mangled$:Name(s) into symbols more acceptable to an Assembler
GL> (TASM); is the WATCOM C++32 mangling rules available? I looked in the
GL> manuals but couldn't find anything about mangling, is this a secret ?
It's not a secret but it is subject to change. What kind of .ASM code
do you need in the member function? Have you looked at using #pragma aux
code bursts instead?
Anthony
*** This is a reply to #1691.
From: Edward Palandri Rec'd
To: Kevin Kitsemetry Msg #1695, Oct-12-93 09:30PM
Subject: Problems with accessing an OS/2 16 bit DLL from Watcom C/386
It looks like I messed up in submitting the original material. I had the best
intentions too. I have just uploaded an updated version of OS2SKWAT.ZIP
including the missing file (SDLL.DLL).
Since submitting the original report, I have upgraded to C/C++ 9.5 (unpatched)
and it has had no effect on the problem which shows exactly the same symptoms.
I really hope this does not put me on the end of the queue again.
Edward Palandri
*** This is a reply to #1689. *** See also #1704.
From: John Lansdale Rec'd
To: Kevin Kitsemetry Msg #1696, Oct-13-93 05:54AM
Subject: malloc() and A-level patches
Hi again. I finally tracked down the "SetDIBits()" problem that I mentioned
about a month ago. What I found out was somewhat unusual. The problem
stemmed from a malloc() performed elsewhere in my code; when this malloc
was performed the SetDIBits() function decided to fail (with an
"Invalid pointer: 0x00000" error message). The funny thing is that the
malloc() in question comes from very stable code, so I'm assuming that
v9.5 might have a memory allocation problem somewhere. I'll check up
on this once I receive the level A disks.
I haven't received the level A patch diskette from WATCOM yet. Could
you please check into this matter please? Thanks.
*** See also #1705.
From: Ron Smith
To: FlashTek Inc. Msg #1698, Oct-13-93 10:24AM
Subject: New debugger.
A new debugger for watcom?! Awlright! It's not that I don't like the
debugger. It is *VERY* powerful once you figure ouut how to use it but it has
some serious problems debugging C++ code (especially finding mangled C++
variables and procedures). I hope you didn't go overboard and make another
Turbo Debugger (aka the Cute Debugger)
Also, it seems strange that the debugger DEFAULTS to being case INSENSITIVE.
I have modified the debugger config file but since C and C++ are case
sensitive, maybe the debugger should be too.
*** This is a reply to #1628.
From: Kevin Kitsemetry Rec'd
To: Dave Heyliger Msg #1700, Oct-13-93 12:47PM
Subject: _dos_getvect / _dos_setvect, 32-bit Windows
DH> It looks as if you call _dos_getvect and then
DH> use the same _interrupt _far * pointer and call
DH> _dos_setvect, the code works fine. However, using a
DH> different _interrupt _far * pointer causes incorrect
DH> setting of the vector. I have confirmed this by
DH> tracing via VIDEO the entire assembly code chain.
DH> My question: do you have to perform any special MK_FP16() or ???
DH> function before passing the interrupt vector to
DH> _dos_setvect?
DH> If you need to see the asm trace listing, let me know.
The short answer is no, you should not have to use one of our special Windows
functions for this. Have you tried the example in the library manual? What
happened?
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1668.
From: Kevin Kitsemetry Rec'd
To: Thomas B. Pollard Msg #1701, Oct-13-93 12:52PM
Subject: C/C++ 9.5A Wvideo interrup with <SyRq>
TBP> OK about the <ctrl SysRq> but the Print Screen always worked before.
TBP> Last night I compleatly reinstalled 9.5 on my 386
TBP> computer at home and then applied the A patches.
TBP> While I was in the Wvideo I pressed
TBP> <Print Screen>(with a program loaded but not running)
TBP> and I got a stack over flow and a the computer locked
TBP> up.
I have never heard of that. I just tried it here in a DOS box (under OS/2)
and was not able to reproduce that behaviour. Does it happen with any exe?
*** This is a reply to #1672.
From: Kevin Kitsemetry Rec'd
To: Jason Blochowiak Msg #1702, Oct-13-93 02:48PM
Subject: Breaking into a program that steals the keyboard
JB> Hi. I'm working on a program that completely takes
JB> over the keyboard vector (#9). It's nice that the
JB> current version (I have the 9.5a C++ package) of
JB> WVIDEO regains control of the keyboard when a pre-set
JB> breakpoint is hit. However, it seems I can't break
JB> into the program with the keyboard. This is definitely
JB> feasible (TD386 does it) - is this currently possible
JB> with WVIDEO?
Under DOS, you may be able to press Print-Scrn to break
into the program. This (unfortunately) will not always
work under DOS; it depends on the state of the processor
at the time.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1673.
From: Kevin Kitsemetry
To: Brian Schriber Msg #1703, Oct-13-93 02:52PM
Subject: Wvideo Display problem
BS> breakpoint. I then want the program to continue
BS> execution from where I stopped it. I have not had a
BS> problem restarting the program, just getting it to
BS> continue. I have tried the /SWAP option on that 486.
BS> Thanx, I don't know why it thinks there is another
BS> monitor, but now that I can debug on the machine I am
BS> much happier. If you could let me know about using the
BS> break key on a program and continuation being not
BS> supported from the point at which the User Interrupt
BS> occurs I would be appreciative.
Again, you should be able to continue. But under DOS, this seldom works
because of the state that the program is now
in. Perhaps you could use OS/2 for debugging purposes?
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1675. *** See also #1718.
From: Kevin Kitsemetry Rec'd
To: Edward Palandri Msg #1704, Oct-13-93 03:31PM
Subject: Problems with accessing an OS/2 16 bit DLL from Watcom C/386
EP> It looks like I messed up in submitting the original
EP> material. I had the best intentions too. I have just
EP> uploaded an updated version of OS2SKWAT.ZIP including
EP> the missing file (SDLL.DLL).
EP> Since submitting the original report, I have upgraded
EP> to C/C++ 9.5 (unpatched) and it has had no effect on
EP> the problem which shows exactly the same symptoms.
EP> I really hope this does not put me on the end of the queue again.
I now have the file and tried to run the example. I could NOT get the
debugger to load the application.
I will check with the developers for OS/2 support with this. I have talked
about this problem with them and they are at a loss right now. I will contact
you when they have had a chance to investigate this further.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1695. *** See also #1713.
From: Kevin Kitsemetry Rec'd
To: John Lansdale Msg #1705, Oct-13-93 03:37PM
Subject: malloc() and A-level patches
JL> Hi again. I finally tracked down the "SetDIBits()"
JL> problem that I mentioned
JL> about a month ago. What I found out was somewhat unusual. The problem
JL> stemmed from a malloc() performed elsewhere in my code; when this malloc
JL> was performed the SetDIBits() function decided to fail (with an
JL> "Invalid pointer: 0x00000" error message). The funny thing is that the
JL> malloc() in question comes from very stable code, so I'm assuming that
JL> v9.5 might have a memory allocation problem somewhere. I'll check up
JL> on this once I receive the level A disks.
JL> I haven't received the level A patch diskette from WATCOM yet. Could
JL> you please check into this matter please? Thanks.
The level-A patches did fix problems with SetDIBits() in Windows. I have
checked our records and the order for the patches was not processed for some
reason. It is now, and they should arrive at your location shortly (1-2
weeks). If you provide us with your fax number, we can send a fax out (in the
future) when orders are processed.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1696. *** See also #1721.
From: Jim de Graff Rec'd
To: Kevin Kitsemetry Msg #1709, Oct-14-93 10:27AM
Subject: IBM Workframe
Several months ago I got onto this BBS trying to get a fix for a problem.
I was trying to use Watcom C 9.0 with IBM Workframe for OS2/2.1. What I
really needed was to be able to use the CREATE MAKEFILE tool to manage a
medium size project. I decided to start small and use it on a one module
project. I kept on getting DLL problems when I did the create. I was told
by your good folks that I needed version 9.5 of the compiler to be able to use
Workframe so I ordered the upgrade. Now when I try to create the makefile I
just get turfed from the application. Will someone please tell me where to get
detailed information on how to integrate Watcom C/C++ 9.5 with Workframe for
OS2/2.1? I also need to know the exact steps to go through to create the
makefile. The on-line docs that came with Workframe really suck. I need books
that I can leaf through, not hypertext links that don't let me know what I am
missing by not following a particular link (sorry for the editorializing).
*** See also #1715.
From: Dan Cummins Rec'd
To: Zeb Fenton Msg #1710, Oct-14-93 11:00AM
Subject: A-level patches & new supervisor
Zeb,
Problems with the supervisor handling bitmaps > 1Mb existed after the A-level
patch. (If you have not done so already,you should probably apply the A-level
patch so that you have the most up-to-date versions of all the software.) A
new
windows supervisor is available in file area 12. The file is called
WINEXT.ZIP.
NOTE: The A-level patch does not contain the new fixes that are in the new
windows supervisor mentioned above. You will need the new windows supervisor
to fix the problem.
Dan Cummins
WATCOM Languages Support
From: Anthony Scian
To: Gordo Lang Msg #1711, Oct-14-93 01:01PM
Subject: Mangled names and Assembler
GL> I am trying to implement some class method()s in assembler (using
GL> Borland's TASM to be precise). These are rather large routines which
GL> cannot be satisfactorily implemented using the #pragma aux scheme. Is
GL> there a way to change the name-mangling scheme so that it does NOT use
GL> characters like "?():" ? There is no way TASM (or any other x86
GL> assembler) can produce a subroutine label like "W?foo(ul):qv" since it
GL> contains key characters. I really don't want to convert all my class
GL> methods into their equivalent "C" routines just to get around this, and
GL> I don't want to write an OBJ label translater. Is there a way out of
GL> this? HELP.
#pragma aux name_ack "__S__ack_v_i";
#pragma aux name_foo "__S__foo_v_i";
#pragma aux name_bar "__S__bar_v_i";
struct S {
int __pragma("name_ack") ack();
virtual int __pragma("name_foo") foo();
static int __pragma("name_bar") bar();
};
This allows you to code the member functions in .ASM code with precisely the
names indicated in the #pragma. The C++ compiler will use your name as the
mangled name so make sure they are unique across your program.
*** This is a reply to #1682.
From: Edward Palandri Rec'd
To: Kevin Kitsemetry Msg #1713, Oct-14-93 05:43PM
Subject: Problems with accessing an OS/2 16 bit DLL from Watcom C/386
I also was not able to get the debugger to execute the program. I have since
patched my 9.5 release to level a and this makes no difference.
I am pleased that you have been able to reproduce the problem.
Edward Palandri
*** This is a reply to #1704.
From: Kevin Kitsemetry Rec'd
To: Jim de Graff Msg #1715, Oct-15-93 10:23AM
Subject: IBM Workframe
JdG> I was trying to use Watcom C 9.0 with IBM Workframe for OS2/2.1. What I
JdG> really needed was to be able to use the CREATE MAKEFILE tool to manage a
JdG> medium size project. I decided to start small and use it on a one module
JdG> project. I kept on getting DLL problems when I did
JdG> the create. I was told
JdG> by your good folks that I needed version 9.5 of the compiler to be able
JdG> to use Workframe so I ordered the upgrade. Now when I
JdG> try to create the makefile I just get turfed from the
JdG> application. Will someone please tell me where to get
JdG> detailed information on how to integrate Watcom C/C++
JdG> 9.5 with Workframe for OS2/2.1? I also need to know
JdG> the exact steps to go through to create the makefile.
If all you would like to do is compile, link and run, then you just have to
copy over the .prf files into the workframe directory. It sounds like you may
have already done that.
However, the make makefile utility in the Workframe will not function
correctly until the B-level patches become available. You will also have to
have Workframe 1.1 (not 1.0). Finally, the makefile that is generated by
Workframe has to be used by nmake, not our wmake.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1709. *** See also #1719.
From: Thomas B. Pollard Rec'd
To: Kevin Kitsemetry Msg #1718, Oct-15-93 11:24AM
Subject: Wvideo Display problem
Please look at message #1534
When you stop the program look at the assembly and use Evaluate
to look at your code. If Wvideo is changing your code to a 0X00
then you are seeing what I saw. The other test is to check the Assembly
code before and after to run the code.
I don't thing we should have to run Os2 Just to run Wvideo and if we did
How are we going to debug a DOS dependent problem. Like the one that is in
Wvideo.
*** This is a reply to #1703. *** See also #1725.
From: Jim de Graff Rec'd
To: Kevin Kitsemetry Msg #1719, Oct-15-93 05:33PM
Subject: IBM Workframe
Unfortunately I can only access the BBS when I boot through DOS (OS2 doesn't
support netmodem) so I don't know offhand what version of Workframe I am
using. You are correct. I had already copied the .prf file over with no
success. However, I was not told (when I was told about upgrading to 9.5) that
I would also need Workframe 1.1. I was told 9.5 would fix the problem. This
happens every time I am forced to use two different products together.
Whenever something doesn't work, each party points the finger at the other. No
slur intended, but it does get frustrating to have hundreds of $$$$ of
software that can't be used.
*** This is a reply to #1715. *** See also #1726.
From: John Lansdale Rec'd
To: Kevin Kitsemetry Msg #1721, Oct-17-93 01:52AM
Subject: malloc() and A-level patches
My fax number is shared with my voice line: 416-621-8788 (call in
advance). I hope the level-A fix to the SetDIBits() problem also fixed
the problem with StretchDIBits() - they both experience the same problem
that I previously outlined.
*** This is a reply to #1705. *** See also #1728.
From: Thomas B. Pollard Rec'd
To: Kevin Kitsemetry Msg #1723, Oct-18-93 07:56AM
Subject: DOS4GW.EXE Error [35] C/C++ 9.5A
TO Watcom 519-747-4971
FROM Tom Pollard 617-275-0100 Ex127
DOS4GW.EXE Error [35] C/C++ 9.5A
|
I am running the newly patched DOS4GW.EXE (8-27-93) and normally when it
normally traps an exception it will show the "Crash address
(unrelocated)" But I have had it Trap on an Unexpected Interrupt=0000
and not give the "Crash address (unrelocated)". What I do get is the
following:
|
Error [35]: Unexpected Interrupt=0000 in DOS4GW.EXE at 01E8:7286
code=0000 ss=01F0 ds=01f0 es=01F0
ax=2C00 bx=0000 cx=01f0 dx=0020 sp=4CCC bp=8D80 si=0000 di=0000
|
Error [35]: Unexpected Interrupt=0000 in DOS4GW.EXE at 01E8:761A
code=0000 ss=01F0 ds=01f0 es=01F0
ax=2C0C bx=100CC cx=01f0 dx=0020 sp=4CCC bp=AA30 si=0000 di=0000
|
Is this my code causing the error or is it DOS4GW.EXE ?
Thanks
*** See also #1737.
From: Kevin Kitsemetry Rec'd
To: Robert Campbell Msg #1724, Oct-18-93 10:37AM
Subject: Bug reported in GMA_BUG.ZIP
KK> Internal Report #6647
RC> Please look in GMA_BUG.ZIP for the sample code to a
RC> problem that we have encountered with WVIDEO
RC> (windows). This program seems to run fine on the
RC> first execution through the debugger, but on the
RC> second run through,ie: new; go
RC> it crashes. Any help you can give in this matter
RC> would be greatly appreciated.
I have taken a look at both of these examples. There
have been a number of upgrades to the compiler and tools,
especially with respect to SetDIBits() under Windows.
The latest version of the WATCOM C/C++ tools did not
demonstrate a problem with either of the examples.
The latest version of the compiler is 9.5, patch level 'a'.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1611.
From: Kevin Kitsemetry Rec'd
To: Jim de Graff Msg #1726, Oct-18-93 10:51AM
Subject: IBM Workframe
JdG> Unfortunately I can only access the BBS when I boot through DOS (OS2
JdG> doesn't support netmodem) so I don't know offhand
JdG> what version of Workframe I am using. You are
JdG> correct. I had already copied the .prf file over with
JdG> no success. However, I was not told (when I was told
JdG> about upgrading to 9.5) that I would also need
JdG> Workframe 1.1. I was told 9.5 would fix the problem.
JdG> This happens every time I am forced to use two
JdG> different products together. Whenever something
JdG> doesn't work, each party points the finger at the
JdG> other. No slur intended, but it does get frustrating
JdG> to have hundreds of $$$$ of software that can't be
JdG> used.
The problem has been fixed and this fix will be provided
free of charge in the form of a patch (level 'b').
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1719. *** See also #1731.
From: Kevin Kitsemetry Rec'd
To: John Lansdale Msg #1728, Oct-18-93 10:56AM
Subject: malloc() and A-level patches
JL> My fax number is shared with my voice line: 416-621-8788 (call in
JL> advance). I hope the level-A fix to the SetDIBits() problem also fixed
JL> the problem with StretchDIBits() - they both experience the same problem
JL> that I previously outlined.
The fax verification is automatic, so I doubt that I would be able to provide
this service to you so long as the fax machine is on the same line, sorry!
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1721. *** See also #1753.
From: Kevin Blenkinsopp Rec'd
To: Kevin Kitsemetry Msg #1729, Oct-18-93 01:59PM
Subject: Please check the DPMI 800 part of this message
* Original Area: DOS4GPro
* Original To : Dan Teven (1:221/186)
* Original Subj: DLLs and other stuff
Thanks. One of your guys faxed me some DOS/4G info this morning. Is there a
way I can get a more detailed idea of the multitasking support as well? Right
now we make everything cooperate and yield the CPU whenever a "process" is
idle, which actually works pretty well, but still means that one wild pointer
can take out the entire machine.
I can't look at the other mail right now, so if I didn't ask before, please
confirm that DLLs are only supported in 4G and NOT in 4GW Pro.
By the way, what is your role at Rational?
As far as this damn board goes, I take it that the general idea is to use DPMI
function 800 that Kevin K posted some sample code for a couple of weeks ago. I
saw that and figured "hey this looks like it might be useful", so I tried it
and everything seemed ok at 4 meg, but when I changed it to map to C0000000
and scribbled something there, then read it back using the driver, it wasn't
there. Does MK_FP/DPMI/4GW support things that are that high up? (The reason I
ask is that I had some DPMI classes that Qualitas gives people that couldn't
cope when you tried to set a selector base to anything higher than 16M)
Incidentally, if you're not the right guy for this please forward it to KevinK.
Thanks for taking time for this stuff.
Kevin
*** See also #1738.
From: Thomas B. Pollard
To: Keven Kitsemetry Msg #1730, Oct-18-93 02:15PM
Subject: C/C++ 9.5A Interrupting WVIDEO (See #1642)
TO Watcom 519-747-4971
FROM Tom Pollard 617-275-0100 Ex127
C/C++ 9.5A Interrupting WVIDEO (See #1642)
|
Here is another clue to the problem.
|
Back when I reported a memory problem in message #1354 all I had to do
was replace your RSIHELP.EXP with the 9.5 LA RSIHELP.EXP 2-16-93 and it
fixed the problem. Well I can fix the inability to Interrupt WVIDEO in
the same manner I replaced RSIHELP.EXP (27064 8-27-93) with the LA
RSIHELP.EXP (25984 2-16-93) and <Prt Scr> will now Interrupt WVIDEO.
I also noted that with a program loaded but not running and in
WVIDEO when I press <Prt Scr> I beep with the 8-27-93 RSIHELP.EXP and
when I use the RSIHELP.EXP 2-16-93 I don't beep. I hope this will help.
Message 1703 maybe related to my message #1354 and it would be
interesting if he tries the RSIHELP.EXP 2-16-93 and it fixes his
problem.
I think if you have not already tested WVIDEO on a nothing but DOS
computer (NO OS/2) you should.
|
NOTE: Before I used 9.5A patches I delete and reinstalled 9.5
*** See also #1739.
From: Jim de Graff Rec'd
To: Kevin Kitsemetry Msg #1731, Oct-18-93 03:21PM
Subject: IBM Workframe
Great. I'll keep my eyes open on the board until it appears. Thanks.
*** This is a reply to #1726.
From: Edward Palandri Rec'd
To: Kevin Kitsemetry Msg #1733, Oct-18-93 10:58PM
Subject: 32 bit Fortran Windows DLL, ok with Fortran 9.01, fails with 9.5a
Problem with Watcom Fortran 32 bit DLL's compiled using Fortran/386 9.5a
========================================================================
I have recently attempted to upgrade to C and Fortran 9.5 and I have
run into a problem.
Basically the 32 bit DLL's that I compile and run successfully using
Fortran and C 9.01e do not work or work erratically if I compile them
using Fortran and C 9.5a.
Typically one gets a General protection fault on loading or just
after starting to execute the DLL.
I have uploaded a zip file containing a simple test case. It consists
of a 16 bit windows front end which calls a very simple 32 bit DLL.
The DLL loads and executes OK under 9.01e but aborts if compiled with
9.5a
The ZIP file is call WATTST.ZIP. It contains a file (README.TXT) which
is a list of its components and batch files etc. for recompiling
them.
Please let me know if there is some obvious modification I need to
make to get this to work under 9.5a
Edward Mark Palandri
Document Sciences Corporation
6333 Greenwich Dr, Suite 120
San Diego, CA 92122
Ph. (619) 625 2030
Fax. (619) 625 2021
Intelnet Mark.DSC@Xerox.Com
*** See also #1741.
From: Mark Delafranier Rec'd
To: Christer Palm Msg #1735, Oct-19-93 09:55AM
Subject: Bug in pow()
KK> Internal Report #6213
MD> Can you provide a small sample program that will
MD> reproduce the problem? This will greatly assist into
CP> OK, Here it is:
CP> NOTE 1: I haven't examined if this bug occurs with other math
CP> functions, so similar bugs might be present in other
CP> math funcs !!!
CP> 2: This bug only occurs when a user SIGFPE handler is present
CP> Could you also PLEEEAAASE take a look at msg #1527 ???
CP> Compile & link: wcl386 -od bug.c
CP> #include <stdio.h>
CP> #include <signal.h>
CP> #include <math.h>
CP> #include <errno.h>
CP> void fpe_handler( int signo )
CP> {
CP> puts( "Caught SIGFPE" );
CP> signal( SIGFPE, fpe_handler );
CP> }
CP> int matherr( struct exception *err )
CP> {
CP> puts( "Caught matherr" );
CP> return 0;
CP> }
CP> void main( void )
CP> {
CP> signal( SIGFPE, fpe_handler );
CP> errno = 0;
CP> log( -1.0 ); // No SIGFPE, sets errno, calls matherr
CP> printf( "errno after invalid log: %d\n", errno );
CP> errno = 0;
CP> pow( 1000.0, 1000.0 ); // Raises SIGFPE, no errno, no matherr
CP> printf( "errno after invalid pow: %d\n", errno );
CP> }
Christer:
The sample code above does not reproduce a problem with the SIGFPE handler.
I tried to reproduce the problem with WATCOM C/C++32 patch level "A".
If you have any other questions or concerns, please do not hesitate to contact
WATCOM TECHNICAL SUPPORT.
Hot-line: (519) 884-0702 Internet: tech@watcom.on.ca fax:
(519) 747-4971 Compuserve: type GO WATCOM BBS:
(519) 884-2103 WATCOM Sales: 1-800-265-4555
Mark DeLaFranier
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1623. *** See also #1736.
From: Fred Crigger Rec'd
To: Mark Delafranier Msg #1736, Oct-19-93 11:16AM
Subject: Bug in pow()
KK> Internal Report #6213
MD> Can you provide a small sample program that will
MD> reproduce the problem? This will greatly assist into
CP> OK, Here it is:
CP> NOTE 1: I haven't examined if this bug occurs with other math
CP> functions, so similar bugs might be present in other
CP> math funcs !!!
CP> 2: This bug only occurs when a user SIGFPE handler is present
CP> Could you also PLEEEAAASE take a look at msg #1527 ???
CP> Compile & link: wcl386 -od bug.c
CP> #include <stdio.h>
CP> #include <signal.h>
CP> #include <math.h>
CP> #include <errno.h>
CP> void fpe_handler( int signo )
CP> {
CP> puts( "Caught SIGFPE" );
CP> signal( SIGFPE, fpe_handler );
CP> }
CP> int matherr( struct exception *err )
CP> {
CP> puts( "Caught matherr" );
CP> return 0;
CP> }
CP> void main( void )
CP> {
CP> signal( SIGFPE, fpe_handler );
CP> errno = 0;
CP> log( -1.0 ); // No SIGFPE, sets errno, calls matherr
CP> printf( "errno after invalid log: %d\n", errno );
CP> errno = 0;
CP> pow( 1000.0, 1000.0 ); // Raises SIGFPE, no errno, no matherr
CP> printf( "errno after invalid pow: %d\n", errno );
CP> }
MD> Christer:
MD> The sample code above does not reproduce a problem
MD> with the SIGFPE handler.
MD> I tried to reproduce the problem with WATCOM C/C++32 patch level "A".
MD> If you have any other questions or concerns, please do
MD> not hesitate to contact WATCOM TECHNICAL SUPPORT.
MD> Hot-line: (519) 884-0702 Internet:
MD> tech@watcom.on.ca fax: (519) 747-4971
MD> Compuserve: type GO WATCOM BBS: (519)
MD> 884-2103 WATCOM Sales: 1-800-265-4555
MD> Mark DeLaFranier
MD> WATCOM TECHNICAL SUPPORT
Did you read msg 1530 and 1572? He is complaining that pow doesn't call
matherr and set errno if you have a signal handler for SIGFPE. I tried the
program and it does exactly what he says happens. i.e. it doesn't do what the
manual says should happen. Your message says that there is no problem with
the A-level patch. I don't think anything has been done in A-level patch to
change the behaviour of this program. He is going to be upset after
downloading the huge A-level patch, and discover that the program still has
the same behaviour. Then he is going to be upset that you don't understand
his well stated problem.
Fred
*** This is a reply to #1735.
From: Kevin Kitsemetry Rec'd
To: Kevin Blenkinsopp Msg #1738, Oct-19-93 03:37PM
Subject: Please check the DPMI 800 part of this message
KB> As far as this damn board goes, I take it that the general idea is to
KB> use DPMI function 800 that Kevin K posted some sample
KB> code for a couple of weeks ago. I saw that and figured
KB> "hey this looks like it might be useful", so I tried
KB> it and everything seemed ok at 4 meg, but when I
KB> changed it to map to C0000000 and scribbled something
KB> there, then read it back using the driver, it wasn't
KB> there. Does MK_FP/DPMI/4GW support things that are
KB> that high up? (The reason I ask is that I had some
KB> DPMI classes that Qualitas gives people that couldn't
KB> cope when you tried to set a selector base to anything
KB> higher than 16M) Incidentally, if you're not the right
KB> guy for this please forward it to KevinK.
I don't believe that there should be a problem mapping things above 4 MB. If
you want to check the DPMI support for DOS/4GW,you can run the program in a
Windows DOS box, or while running QEMM (whereby DPMI functions are passed on
to the DPMI host).
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1729. *** See also #1759.
From: Kevin Kitsemetry Rec'd
To: Thomas B. Pollard Msg #1739, Oct-19-93 03:40PM
Subject: C/C++ 9.5A Interrupting WVIDEO (See #1642)
TBP> Here is another clue to the problem.
TBP> |
TBP> Back when I reported a memory problem in message #1354 all I had to do
TBP> was replace your RSIHELP.EXP with the 9.5 LA RSIHELP.EXP 2-16-93 and it
TBP> fixed the problem. Well I can fix the inability to Interrupt WVIDEO in
TBP> the same manner I replaced RSIHELP.EXP (27064 8-27-93) with the LA
TBP> RSIHELP.EXP (25984 2-16-93) and <Prt Scr> will now Interrupt WVIDEO.
TBP> I also noted that with a program loaded but not running and in
TBP> WVIDEO when I press <Prt Scr> I beep with the 8-27-93 RSIHELP.EXP and
TBP> when I use the RSIHELP.EXP 2-16-93 I don't beep. I hope this will help.
I will pass all of this on to the developers. Thanks. I will certainly
contact you if I hear anything from them.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1730.
From: Kevin Kitsemetry Rec'd
To: Edward Palandri Msg #1741, Oct-19-93 04:09PM
Subject: 32 bit Fortran Windows DLL, ok with Fortran 9.01, fails with 9.5a
EP> Problem with Watcom Fortran 32 bit DLL's compiled using Fortran/386 9.5a
EP> ========================================================================
I have received the file and will investigate the problem. This now has
Internal Report #8091.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1733.
From: Thomas B. Pollard Rec'd
To: Kevin Kitsemetry Msg #1742, Oct-20-93 07:50AM
Subject: DOS4GW.EXE Error [35] C/C++ 9.5A
I still would like to find out what error #35 is.
After I wrote you I turned on the NULL pointer test and found out a spot in
the code that was writing to the zero page. So most likely it is my
code doing this. That dog4g=NULLP has been very helpful.
*** This is a reply to #1737. *** See also #1743.
From: Kevin Kitsemetry Rec'd
To: Thomas B. Pollard Msg #1743, Oct-20-93 05:31PM
Subject: DOS4GW.EXE Error [35] C/C++ 9.5A
TBP> I still would like to find out what error #35 is.
TBP> After I wrote you I turned on the NULL pointer test
TBP> and found out a spot in the code that was writing to
TBP> the zero page. So most likely it is my
TBP> code doing this. That dog4g=NULLP has been very helpful.
Error [35] means that for some reason, the program was halting in the DOS/16M
kernal, and was therefor unable to dump and of the 32-bit register
information. This may be a bug in the
DOS/4GW extender as well as in the program. Would it be
possible to upload a small example that reproduces the problem?
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1742. *** See also #1748.
From: Matt Pigan
To: All Msg #1744, Oct-20-93 06:06PM
Subject: WCSTOMBS & related functions.
We here at Southern Computer Systems are in the process of evaluating 32 bit
compilers (so we can decide on our "standard" compiler). In a simple Double
Byte Character test (using only ANSI multibyte & wide character functions) we
were unable to properly redisplay the multibyte string after adding some
simple text into the string. The same code was compiled under IBM C Set++
v2.0 and it worked just fine.
We are almost purely an OS/2 house. We currently have a project for
converting our product over into Japanese, which requires the DBCS support.
Any help or follow up would be greatly appreciated. If you need the source
(under 30 lines of C code), please call our BBS or
me by phone and I can Upload it to you.
Matt
Phone: (205) 251-2985
BBS: (205) 251-1330 (send E-mail to Matt Pigan)
*** See also #1749.
From: Matthew Heinze Rec'd
To: Christer Palm Msg #1745, Oct-20-93 07:57PM
Subject: Re-post of #132 in area 11, since this also concerns c/c++32 9.5
CP> /*
CP> * Example showing a bug in WCC386 v9.01e code generator
CP> */
CP> void main( void )
CP> {
CP> struct test {
CP> double d;
CP> } s = {
CP> 666.0 /* Test value */
CP> };
CP> union {
CP> double d;
CP> struct test *p;
CP> } u;
CP> u.p = &s;
CP> u.d = u.p->d;
CP> /*
CP> * WDISASM reveals a code generation bug in the preceding statement:
CP> *
CP> * ; has to move 2 DWORDs to move a double, since it's 8 bytes:
CP> *
CP> * mov eax,-10H[ebp] ; pick up pointer to double
CP> * mov eax,[eax] ; fetch the low DWORD
CP> * mov -10H[ebp],eax ; store it to
CP> destination - OVERWRITES THE POINTER
CP> * mov eax,-10H[ebp] ; pick up the (NOW DESTROYED) pointer again
CP> * mov eax,+4H[eax] ; fetch the high DWORD
CP> from never-never land
CP> * mov -0cH[ebp],eax ; and happily store it in destination
CP> */
CP> /*
CP> * Force compiler to update the stack image of 'u' by
CP> using a reference to it,
CP> * or else our bug will be wiped out by the
CP> optimizer if we don't use the
CP> * /d2 or /od compiler options:
CP> */
CP> printf( "%g %p", u.d, &u ); /* Hey, what happened ??? */ }
This problem will be fixed with the B-level patches for C/C++32 Version 9.5.
Matthew Heinze
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1527. *** See also #1760.
From: Joe Friedman
To: Tech Support Msg #1746, Oct-20-93 09:01PM
Subject: ASPI driver for c++ 32
I'm looking for an ASPI (Advanced SCSI Programming Interface) driver that will
work for programs written in the c++ 32-bit compiler. I've seen ones for
standard DOS and OS/2, but I need one for the 4GW DOS extender. Any ideas on
where I might find one? So far, I have not been able to get a response from
Adaptec, and thought someone at WATCOM might have some other ideas.
*** See also #1750.
From: Paul Tletski Rec'd
To: Kevin Kitsemetry Msg #1747, Oct-21-93 10:17AM
Subject: What is _wstart?
Kevin,
I've been porting some code from zApp application framework to use the Watcom
compiler and I've been encountering the following undefined link reference
which I believe is generated somehow by the Watcom compiler. I'm putting
together some DOS applications which use zApp. zApp is more or less a Windows
replacer, supporting a large amount of the Windows API. Is _wstart a Watcom
generated symbol or label for some Window's dependency? I don't see it in any
of the simple DOS programs I've put together so far.
Thanks.
Paul Tletski
Highland Hts., OH
*** See also #1751.
From: Thomas B. Pollard Rec'd
To: Kevin Kitsemetry Msg #1748, Oct-21-93 02:57PM
Subject: DOS4GW.EXE Error [35] C/C++ 9.5A
Sorry no it is a program that is 758000 bytes and it is controling a
device. So it would be very hardfor you to test. But as I said the program
was accessing null pointers and probably causing problems.
Thanks for you time.
*** This is a reply to #1743.
From: Kevin Kitsemetry Rec'd
To: Matt Pigan Msg #1749, Oct-21-93 03:18PM
Subject: WCSTOMBS & related functions.
MP> We here at Southern Computer Systems are in the
MP> process of evaluating 32 bit compilers (so we can
MP> decide on our "standard" compiler). In a simple
MP> Double Byte Character test (using only ANSI multibyte
MP> & wide character functions) we were unable to properly
MP> redisplay the multibyte string after adding some
MP> simple text into the string. The same code was
MP> compiled under IBM C Set++ v2.0 and it worked just
MP> fine.
MP>
MP> We are almost purely an OS/2 house. We currently have a project for
MP> converting our product over into Japanese, which
MP> requires the DBCS support. Any help or follow up
MP> would be greatly appreciated. If you need the source
MP> (under 30 lines of C code), please call our BBS or
WATCOM has doube byte character support. If you would like,you could send us
the program and we could run it here for
you.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1744.
From: Kevin Kitsemetry Rec'd
To: Joe Friedman Msg #1750, Oct-21-93 04:05PM
Subject: ASPI driver for c++ 32
JF> I'm looking for an ASPI (Advanced SCSI Programming
JF> Interface) driver that will work for programs written
JF> in the c++ 32-bit compiler. I've seen ones for
JF> standard DOS and OS/2, but I need one for the 4GW DOS
JF> extender. Any ideas on where I might find one? So
JF> far, I have not been able to get a response from
JF> Adaptec, and thought someone at WATCOM might have some
JF> other ideas.
I have checked with our manager for Independent Software Vendor Support,Roger
Kehl. He does not know of any products that will do this, but you may contact
him directly by phone if you wish to have him call one of these companies that
you mentioned in your message. Our phone number here 1-519-886-3700.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1746.
From: Kevin Kitsemetry Rec'd
To: Paul Tletski Msg #1751, Oct-21-93 03:30PM
Subject: What is _wstart?
PT> Kevin,
PT> I've been porting some code from zApp application framework to use the
PT> Watcom compiler and I've been encountering the
PT> following undefined link reference which I believe is
PT> generated somehow by the Watcom compiler. I'm putting
PT> together some DOS applications which use zApp. zApp is
PT> more or less a Windows replacer, supporting a large
PT> amount of the Windows API. Is _wstart a Watcom
PT> generated symbol or label for some Window's
PT> dependency? I don't see it in any of the simple DOS
PT> programs I've put together so far.
Yes, it is a WATCOM generated symbol. You can find them in the \LIB386\WIN
libraries.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1747.
From: Ronald Schellberg Rec'd
To: Matthew Heinze Msg #1752, Nov-03-93 01:17PM
Subject: Program load time under windows vs dos
KK> Internal Report #8457
I uploaded a file called 'loadtime.zip', it contains the program, a link
response file, two objects and two libraries. The program takes several
minutes to load in a dos window and about 10 seconds with dos4gvm=1 set in DOS
5.0. My machine is a model 95 ibm 486 with 18 MB of real memory. To recreate
the problem just execute 'plot8lj3'. I have been using wlinkp to link the
program. I have had problems in the past with wlink.
MH> Customer contacted by phone. Problem appears to be related to temporary
MH> Windows swap file on an extremely fragmented hard disk.
From: John Lansdale Rec'd
To: Kevin Kitsemetry Msg #1753, Oct-22-93 01:41AM
Subject: malloc() and A-level patches
I still haven't received the A-level patches by mail and was wondering
if you could please check into this for me. Thanks!
*** This is a reply to #1728. *** See also #1763.
From: Solaroli Matteo Rec'd
To: Kevin Kitsemetry Msg #1754, Oct-22-93 07:14AM
Subject: problem using interrupt
Problem handling interrupt.
If an interrupt handler call a function with arguments the program fails and
the computer crashes.
I'm use :
Op. Sys. : MS-DOS V 6.0
Dos Extender : DOS4GW V 1.2
C compiler : WCC386 V 9.5
Option compiler : wcl386 /d2 <filename>
The program is the follow :
#include <dos.h>
#include <stdlib.h>
void (__interrupt __far *oldhandler)();
void __interrupt __far handler();
char buffer1[50] = "";
short count = 0;
short intcount = 0;
main()
{
oldhandler = _dos_getvect(0x1c);
_dos_setvect(0x1c, handler);
do
{
}
while (!intcount);
printf("String : %s\n",buffer1);
printf("Count : %d\n",count);
printf("IntCount : %d\n",intcount);
_dos_setvect(0x1c, oldhandler);
}
void __interrupt __far handler()
{
pass1(buffer1); // pass a string address
pass2(&count); // pass a short pointer
intcount++;
_chain_intr(oldhandler);
}
void pass1(char *ptr)
{
strcpy(ptr, "TEST OK");
}
void pass2(short *count)
{
(*count)++;
}
If I delete the pass1() call the program runs correctly with the following
outputs :
String :
Count : 1
IntCount : 1
otherwise the computer crashes.
I think that the segment used to refernce the parameter is SS, and normally
it is equal to DS (Flat Memory Model USER MANUAL pag. 243).In this
case it is changed by the DOS4GW when the interrupt occours (USER MANUAL
pag. 339).
When I force the argument to a __far pointer the program runs correctly, but
it is
necessary to modify the function prototype. I can not do it some time because
I have not the sources of all the functions I need.
Is there any solution ?
Please answer us soon as possible.
I am looking forward to ear from you.
*** See also #1758.
From: Frank Feller Rec'd
To: Kevin Kitsemetry Msg #1755, Oct-22-93 08:10AM
Subject: C library func write(), mode O_BINARY
Dear Kevin Kitsemetry,
I'm a little bit angry that you have left all my faximiles and BBS
messages unreplied.
You wrote my in your fax from 09/24/93 that the problem have been fixed
in the A level patch of V9.5 C/C++32, but it isn't so.
My company need a fast solution!!
Why did you answer yet ????????
*** See also #1764.
From: Paul Tletski Rec'd
To: Kevin Kitsemetry Msg #1756, Oct-22-93 08:56AM
Subject: One more time...
Kevin,
Perhaps I wasn't clear enough about the problem I'm having with the unresolved
linker symbol _wstart. Please note that I am NOT building a Windows
application. I am using an application framework which supports the Windows
API, but the executables run under <<DOS>>. My build process is in no way
dependent upon any Windows executable format. I repeat, it is strictly a DOS
apllication which utilizes the Windows API. I do not understand why the
symbol _wstart is a referenced symbol if I am not compiling & linking a
Windows application.
Thanks.
Paul Tletski
Allen-Bradley Co.
Highland Hts., OH
*** See also #1765.
From: Anthony Scian Rec'd
To: Paul Tletski Msg #1757, Oct-22-93 09:58AM
Subject: What is _wstart?
PT> I've been porting some code from zApp application framework to use the
PT> Watcom compiler and I've been encountering the
PT> following undefined link reference which I believe is
PT> generated somehow by the Watcom compiler. I'm putting
PT> together some DOS applications which use zApp. zApp is
PT> more or less a Windows replacer, supporting a large
PT> amount of the Windows API. Is _wstart a Watcom
PT> generated symbol or label for some Window's
PT> dependency? I don't see it in any of the simple DOS
PT> programs I've put together so far.
"_wstart" is a reference that causes the Windows libraries to be linked in. It
is triggered by compiling code with a WinMain() function. This is a reserved
name for Windows programs. If you do not want the WATCOM Windows libraries to
be linked in, create a dummy variable called "wstart". This should satisfy the
linker.
Anthony
*** This is a reply to #1747.
From: Anthony Scian Rec'd
To: Solaroli Matteo Msg #1758, Oct-22-93 10:03AM
Subject: problem using interrupt
SM>
SM>
SM> Problem handling interrupt.
SM> If an interrupt handler call a function with arguments
SM> the program fails and
SM> the computer crashes.
SM> I'm use :
SM> Op. Sys. : MS-DOS V 6.0
SM> Dos Extender : DOS4GW V 1.2
SM> C compiler : WCC386 V 9.5
SM> Option compiler : wcl386 /d2 <filename>
SM>
SM>
SM> The program is the follow :
SM>
SM> #include <dos.h>
SM> #include <stdlib.h>
SM>
SM>
SM> void (__interrupt __far *oldhandler)();
SM> void __interrupt __far handler();
SM>
SM> char buffer1[50] = "";
SM> short count = 0;
SM> short intcount = 0;
SM>
SM> main()
SM> {
SM>
SM> oldhandler = _dos_getvect(0x1c);
SM> _dos_setvect(0x1c, handler);
SM>
SM> do
SM> {
SM> }
SM> while (!intcount);
SM>
SM> printf("String : %s\n",buffer1);
SM> printf("Count : %d\n",count);
SM> printf("IntCount : %d\n",intcount);
SM> _dos_setvect(0x1c, oldhandler);
SM> }
SM>
SM>
SM> void __interrupt __far handler()
SM> {
SM>
SM>
SM> pass1(buffer1); // pass a string address
SM> pass2(&count); // pass a short pointer
SM> intcount++;
SM>
SM> _chain_intr(oldhandler);
SM> }
SM>
SM>
SM> void pass1(char *ptr)
SM> {
SM> strcpy(ptr, "TEST OK");
SM> }
SM>
SM>
SM> void pass2(short *count)
SM> {
SM> (*count)++;
SM> }
SM>
SM>
SM> If I delete the pass1() call the program runs
SM> correctly with the following
SM> outputs :
SM> String :
SM> Count : 1
SM> IntCount : 1
SM>
SM> otherwise the computer crashes.
SM> I think that the segment used to refernce the
SM> parameter is SS, and normally
SM> it is equal to DS (Flat Memory Model USER MANUAL pag. 243).In this
SM> case it is changed by the DOS4GW when the interrupt occours (USER MANUAL
SM> pag. 339).
SM> When I force the argument to a __far pointer the
SM> program runs correctly, but it is
SM> necessary to modify the function prototype. I can not
SM> do it some time because
SM> I have not the sources of all the functions I need.
SM> Is there any solution ?
WATCOM C/C++ compiles an __interrupt function so that assumes that SS != DS.
If you call any functions from your interrupt routine, they must all be
compiled to assume the same thing because they will be called during an
interrupt also. Compile all modules that contain functions that are called
from interrupt routines with the compiler option -zu or as you found out pass
far pointers and don't let the function access global data by name.
Anthony
*** This is a reply to #1754.
From: Roman Lewkow Rec'd
To: Kevin Kitsemetry Msg #1759, Oct-22-93 10:53AM
Subject: Please check the DPMI 800 part of this message
KB> As far as this damn board goes, I take it that
KB> the general idea is to
KB> use DPMI function 800 that Kevin K posted some sample
KB> code for a couple of weeks ago. I saw that and figured
KB> "hey this looks like it might be useful", so I tried
KB> it and everything seemed ok at 4 meg, but when I
Could you please tell me where was this sample code posted ?
thanks, Roman
*** This is a reply to #1738. *** See also #1766.
From: Christer Palm
To: Matthew Heinze Msg #1760, Oct-22-93 11:05AM
Subject: Re-post of #132 in area 11, since this also concerns c/c++32 9.5
Guess I have to wait for the B-level patches, since the A level patches was
recently released. OK, The workaround was really simple, so i'll guess I'm
happy with it.
Cheers
/ Christer
*** This is a reply to #1745.
From: Howard Keller
To: Watcom Msg #1761, Oct-22-93 03:09PM
Subject: Zinc Application Framework 3.5 and Watcom C++32 for NT
I'm not sure who to address this letter to.
I'm trying to use the Zinc Application Framework 3.5 to build applications for
both OS/2 2.1 and WindowsNT. No problem with OS/2, but Zinc doesn't provide
libraries for the 9.5 WindowsNT compiler. When inquiring about this from Zinc
teck support, I was told that they have enperienced "serious problems" with
the Watcom C++32 9.5 NT compiler and they don't plan to support it until the
problems have been resolved. I was unable to find out the nature of the
problems. Is anyone aware of this at Watcom and if there is a problem, what's
the time frame for repair?
*** See also #1826.
From: Matthias Zander
To: Kevin Semetry Msg #1762, Oct-22-93 05:31PM
Subject: Var.Access Pmode Rmode
U R G E N T
Dear Kevin,
In about two weeks we've to finish our actual product change from Borland C3.1
to your C/C++ 32 Compiler. We've great problems with the bimodal ISR for
serial communications. We have done our job before successfully with the
PHARLAP 286-DOS Extender. Due to your bimodal.c example we've understood how
to install and register the real and protected mode ISR's. Unfortunately we
don't know how to access variables (e.g. the receive queue) from the real mode
as well as from the protected mode and how to install such ones to achieve the
bimodal access.
We assume that these variables have to be installed in the DOS memory so that
the real mode ISR is able to access them. How could this be done? Are these
variables accessable from the protected mode also? At the compiling time these
variables must be known to the real mode ISR. How can this problem be handled?
Thaks in advance.
With best regards, Matthias Zander, Karsten Kiehlmann
c.o. IAV GmbH Dept. Electronic
Carnotstrasse 1
D-10587 Berlin
F.R.G.
Tel. +49 - 30 - 39 08 08 - 54
Fax. +49 - 30 - 39 08 08 - 90
*** See also #1789.
From: Kevin Kitsemetry
To: John Lansdale Msg #1763, Oct-22-93 06:33PM
Subject: malloc() and A-level patches
JL> I still haven't received the A-level patches by mail and was wondering
JL> if you could please check into this for me. Thanks!
They were shipped out on the 21st of Oct.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1753.
From: Kevin Kitsemetry Rec'd
To: Frank Feller Msg #1764, Oct-22-93 06:45PM
Subject: C library func write(), mode O_BINARY
FF> Dear Kevin Kitsemetry,
FF>
FF> I'm a little bit angry that you have left all my faximiles and BBS
FF> messages unreplied.
FF> You wrote my in your fax from 09/24/93 that the problem have been fixed
FF> in the A level patch of V9.5 C/C++32, but it isn't so.
FF> My company need a fast solution!!
To my knowledge, you have sent me two faxes, and two BBS messages. The BBS
messages were in Area 2, numbers 1767 and 1889. I have since taken the time
to go back and make sure that I have read and replied to these messages. Sure
enough, I had. They are messages numbered 1786 and 1897 respectively.
In my second message to you I had indicated that I had received your fax,and
answered you on this BBS. As I stated then, if you have the C/C++ compiler,
then the C32DOS_A.ZIP is the WRONG file!!! You require C32_A.ZIP.
I was told by the head developer that your problem would be solved in the A-
level patches. If it still is not solved once you have received the correct
file, please let me know and I will bring it to his attention once again.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1755.
From: Kevin Kitsemetry Rec'd
To: Paul Tletski Msg #1765, Oct-22-93 06:51PM
Subject: One more time...
PT> Kevin,
PT> Perhaps I wasn't clear enough about the problem I'm having with the
PT> unresolved linker symbol _wstart. Please note that I
PT> am NOT building a Windows application. I am using an
You were defining a WINMAIN function in your program, so the compiler assumed
that you are building a Windows function. You must define a dummy _wstart
symbol to get around the problem, or rename the function to something else.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1756.
From: Jason Blochowiak Rec'd
To: Kevin Kitsemetry Msg #1768, Oct-23-93 02:50PM
Subject: Locking for VM
Hi again. I'm working on a project that uses interrupts fairly extensively -
it wouldn't be an easy task to find everything that gets touched by something
in an ISR. It would be acceptable to me to require enough real RAM (under DPMI
or VMM) to have the entire code & data "segments" locked down, as they don't
comprise the bulk of memory that my program deals with. I don't recall seeing
documentation anywhere on how to do this (or, for that matter, how to lock
down a specific function). I can certainly dredge through the DPMI docs
myself,but I need to know how to determine which addresses need to be passed
to the DPMI functions. Thanks in advance,
Jason
*** See also #1792.
From: Jason Blochowiak Rec'd
To: Kevin Kitsemetry Msg #1769, Oct-23-93 04:00PM
Subject: Assembly optimizer
This may seem like a somewhat strange question, but... Has Watcom considered
offering an assembly optimizer? It would seem that it would be possible to
pass hand-written assembly through parts of the optimizer in the code
generator. The reason I think this would be useful: Although I can write
faster code in asm than I can in C (due to the fact that C doesn't allow for
the tersest possible expression of a code goal), and I can do a good job of
register allocation, keeping track of the possibilities for things like
pipeline stalls requires a bit more time than I can usually afford to spend. I
would think that an optimizer would be able to squeeze out a few more cycles,
and if it would do things like enforcing optimal register use, it could be
quite helpful. I wouldn't want this to go directly to object code - I'd want
it to dump assembly source back out, so I could examine & modify it further.
If this could be done now (even if the method is somewhat kludgy), I'd be
interested in hearing how.
Jason
*** See also #1793.
From: Peter Weatherall Rec'd
To: Kevin Kitsemetry Msg #1770, Oct-25-93 06:01AM
Subject: Mixed C/C++
With an application built from C and C++ compiled modules, is there some way
of accessing global data defined in a C+++ module from a C module (or
assembler). Currently, when I comile with wpp386 the global data is given a
type encoded name and so the reference from C is unresolved by the linker.
*** See also #1771.
From: Anthony Scian Rec'd
To: Peter Weatherall Msg #1771, Oct-25-93 05:32PM
Subject: Mixed C/C++
PW> With an application built from C and C++ compiled
PW> modules, is there some way of accessing global data
PW> defined in a C+++ module from a C module (or
PW> assembler). Currently, when I comile with wpp386 the
PW> global data is given a type encoded name and so the
PW> reference from C is unresolved by the linker.
In C++, if you want to export data so that C and ASM code can reference
it,simply export it as extern "C".
extern "C" {
int data;
int a[] = { 1, 2, 3, 4 };
};
*** This is a reply to #1770.
From: Kevin Blenkinsopp Rec'd
To: Roman Lewkow Msg #1772, Oct-25-93 06:58PM
Subject: Please check the DPMI 800 part of this message
Roman,
I can't actually remember exactly where I got it from, but if I remember right
it was a reply of Kevin's to someone else that I snagged with the terminal
program I use. I'll throw it in file area 12 for you.
Kevin B
*** This is a reply to #1759
From: Thomas B. Pollard
To: Brian Schriber Msg #1774, Oct-26-93 07:27AM
Subject: Wvideo Problem See (1725)
Message 1725 was realy for you. Please try it and let me know how you
do.
From: Stefano Lena
To: All Msg #1776, Oct-26-93 02:58PM
Subject: problems using Dyn ESQL (Watcom)
I have execution problems and data corruption using Watcom C32 9.5 and Watcom
SQL. We are developing applications under DOS6.0 using dynamic ESQL. After
compiling our applications with C32 9.5 compiler we have had problems: the
dynamics calls don't function well, a second call (select statement) over
write previous variables.
We are using the DBLIBWFG SQL Library and all programs and libraries are
compiled with these options:
wcl386 /p <module_name>
sqlpp -n -o dos32 <module_name>
wcl386 /c /w0 /omaxnet /zpi /4r /mf <module_name>
and our programs are linked with this command:
wlink <modules> system dos4g option stack=32.
I have also send a fax to the Watcom Tecnical Support about this problem, if
anybody know the answer, please call me back on this message area.
Thanks. I need a quick answer !
*** See also #1782.
From: Chris Bennett Rec'd
To: Kevin Kitsemetry Msg #1777, Oct-27-93 01:05AM
Subject: GP Fault when writing to 0a0000
Kevin, as it turns out my design required a different approach that alleviated
the problem. I now only do direct DMAs into screen video RAM. Out of
interest, my code was not generating an interrupt at all... simply writing a
sequence of bytes to (byte ptr) addresses within a0000 range. It could be due
to the fact that the code segment was byte aligned, but I never went back to
check it out. My app didn't require it in the end. My apologies for not
getting back to you earlier. I only think to logon when I'm desperate (or
checking for rev A patches as I'm doing now). Thanks again. /Chris
*** This is a reply to #1259.
From: Anthony Scian Rec'd
To: Stefano Lena Msg #1782, Oct-27-93 09:54AM
Subject: problems using Dyn ESQL (Watcom)
SL> I have execution problems and data corruption using
SL> Watcom C32 9.5 and Watcom SQL. We are developing
SL> applications under DOS6.0 using dynamic ESQL. After
SL> compiling our applications with C32 9.5 compiler we
SL> have had problems: the dynamics calls don't function
SL> well, a second call (select statement) over write
SL> previous variables.
SL> We are using the DBLIBWFG SQL Library and all programs
SL> and libraries are compiled with these options:
SL> wcl386 /p <module_name>
SL> sqlpp -n -o dos32 <module_name>
SL> wcl386 /c /w0 /omaxnet /zpi /4r /mf <module_name>
SL> and our programs are linked with this command:
SL> wlink <modules> system dos4g option stack=32.
Shouldn't you have option stack=32k?
*** This is a reply to #1776. *** See also #1796.
From: Jim Ehrismann Rec'd
To: Kevin Kitsemetry Msg #1787, Oct-27-93 02:05PM
Subject: Graphics support
Hi Kevin.
I have a customer with a Genoa WINDOWSVGA24 model 8500 VL (1M)
graphics card. He cannot run our software in any mode other than 640x480x16
colours. We have C32 for DOS 9.5a. Can you help?
Jim
*** See also #1799.
From: Jim Ehrismann Rec'd
To: Kevin Kitsemetry Msg #1788, Oct-27-93 02:12PM
Subject: trig function bugs
/*- FILE TRIGTEST.C
compiler: C32 for DOS 9.5a
build: WCL386 TRIGTEST
run: TRIGTEST
I have not yet inspected behaviour of other trig functions. I did notice
that atanh() shows this same behaviour in C/386 9.0e and C 9.0.
Jim Ehrismann
Atlantis Scientific Systems Group Inc.
(613) 727-1087
-*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define PI 3.14159265358979323846
#define PI_BY_TWO ( PI / 2.0 )
#define PI_BY_FOUR ( PI / 4.0 )
main()
{
double x;
x = -PI_BY_FOUR;
printf( "tan(%6.5g)=%6.5g\n", x, tan( x ) ); /*- sign is OK -*/
x = PI_BY_FOUR;
printf( "tan(%6.5g)=%6.5g\n", x, tan( x ) ); /*- sign is OK -*/
x = -PI_BY_TWO;
printf( "tan(%6.5g)=%6.5g\n", x, tan( x ) ); /*- sign is wrong -*/
x = PI_BY_TWO;
printf( "tan(%6.5g)=%6.5g\n", x, tan( x ) ); /*- sign is wrong -*/
x = -0.5;
printf( "atanh(%6.5g)=%6.5g\n", x, atanh( x ) ); /*- sign is wrong -*/
x = 0.5;
printf( "atanh(%6.5g)=%6.5g\n", x, atanh( x ) ); /*- sign is wrong -*/
}
*** See also #1800.
From: Kevin Kitsemetry
To: Matthias Zander Msg #1789, Oct-27-93 04:56PM
Subject: Var.Access Pmode Rmode
MZ> communications. We have done our job before
MZ> successfully with the PHARLAP 286-DOS Extender. Due to
MZ> your bimodal.c example we've understood how to install
MZ> and register the real and protected mode ISR's.
MZ> Unfortunately we don't know how to access variables
MZ> (e.g. the receive queue) from the real mode as well as
MZ> from the protected mode and how to install such ones
MZ> to achieve the bimodal access.
MZ> We assume that these variables have to be installed in
MZ> the DOS memory so that the real mode ISR is able to
MZ> access them. How could this be done? Are these
MZ> variables accessable from the protected mode also? At
MZ> the compiling time these variables must be known to
MZ> the real mode ISR. How can this problem be handled?
You can set up a buffer using DPMI function 100h. This allocates a real mode
buffer, which you can set a pointer to from protected mode.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1762. *** See also #1861.
From: Rainer Schupp
To: Tech Support Msg #1790, Oct-27-93 04:58PM
Subject: assembler pragma
Hello,
I've just changed from C V9.0 E-Level-Patch to V9.5,
everything did get compiled except some hard-coded assembly parts.
For example:
static unsigned long DSAliasFor2F;
void far* DoCallDriverPointer;
void far* CallDriverAsm();
#pragma aux CallDriverAsm = \
"push es","mov ecx,[DSAliasFor2F+2]","call dword ptr
[DoCallDriverPointer]","pop es" \ modify [ebx ecx];
void far* CallDriver(long func)
{
func = func;
return CallDriverAsm();
}
This is the message:
Error! E1156: Assembler error: 'Invalid indirect memory operand'
Why is it now an error?
*** See also #1801.
From: Jerry Rice Rec'd
To: Jim Ehrismann Msg #1791, Oct-28-93 01:35AM
Subject: Graphics support
JE>Hi Kevin.
JE> I have a customer with a Genoa WINDOWSVGA24 model 8500 VL (1M)
JE>graphics card. He cannot run our software in any mode other than 640x480x16
JE>colours. We have C32 for DOS 9.5a. Can you help?
Jim
As a temporary fix, you might have him load his VESA
Driver. Watcom works fine with VESA.COM on a Genoa I have at
work, 256 colors at 1024x768. Note that he has to load it as
a tsr first, before running the Watcom App.
Jer
___
X SLMR 2.1a X
From: Kevin Kitsemetry Rec'd
To: Jason Blochowiak Msg #1792, Oct-28-93 11:55AM
Subject: Locking for VM
JB> RAM (under DPMI or VMM) to have the entire code & data
JB> "segments" locked down, as they don't comprise the
JB> bulk of memory that my program deals with. I don't
JB> recall seeing documentation anywhere on how to do this
JB> (or, for that matter, how to lock down a specific
JB> function). I can certainly dredge through the DPMI
JB> docs myself,but I need to know how to determine which
JB> addresses need to be passed to the DPMI functions.
JB> Thanks in advance,
Locking and Unlocking linear regions are DPMI functions 600h and 601h
respectively. We don't have an example of using
these functions, but they are outlined in the 0.9 DPMI spec,available on this
BBS.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1768. *** See also #1795.
From: Kevin Kitsemetry Rec'd
To: Jason Blochowiak Msg #1793, Oct-28-93 12:00PM
Subject: Assembly optimizer
JB> This may seem like a somewhat strange question, but... Has Watcom
JB> considered offering an assembly optimizer? It would
JB> seem that it would be possible to pass hand-written
JB> assembly through parts of the optimizer in the code
JB> generator. The reason I think this would be useful:
JB> Although I can write faster code in asm than I can in
JB> C (due to the fact that C doesn't allow for the
JB> tersest possible expression of a code goal), and I can
JB> do a good job of register allocation, keeping track of
JB> the possibilities for things like pipeline stalls
JB> requires a bit more time than I can usually afford to
JB> spend. I would think that an optimizer would be able
JB> to squeeze out a few more cycles, and if it would do
JB> things like enforcing optimal register use, it could
JB> be quite helpful. I wouldn't want this to go directly
JB> to object code - I'd want it to dump assembly source
JB> back out, so I could examine & modify it further. If
JB> this could be done now (even if the method is somewhat
JB> kludgy), I'd be interested in hearing how.
I do not know of any development plans of this sort right
now, but I will pass your suggestion along to the
development team.
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1769.
From: Jason Blochowiak Rec'd
To: Kevin Kitsemetry Msg #1795, Oct-28-93 02:54PM
Subject: Locking for VM
As expected, the DPMI functions themselves aren't that big of a deal. What I
need to know is how to determine the values to pass - where the code for the
program resides & how long it is, and where the static data resides and how
long it is. I don't recall seeing how to determine these values on my previous
scans of the documentation - if I'm having a memory lapse, pointing me to the
right page in the docs (I have 9.5) would be entirely sufficient.
Thanks,
Jason
*** This is a reply to #1792. *** See also #1825.
From: Stefano Lena Rec'd
To: Anthony Scian Msg #1796, Oct-28-93 04:24PM
Subject: problems using Dyn ESQL (Watcom)
Yes ! It's only a sintax problem in the message. 32k is ok. Thank you but this
in't the problem.
*** This is a reply to #1782.
From: Kevin Kitsemetry
To: Rainer Schupp Msg #1801, Nov-01-93 12:44PM
Subject: assembler pragma
RS> Hello,
RS> This is the message:
RS> Error! E1156: Assembler error: 'Invalid indirect memory operand'
I am not sure what has changed. The error is coming from the inline
assembler. Can you provide us with the complete module, so that I can
reproduce the message here?
Kevin Kitsemetry
WATCOM TECHNICAL SUPPORT
*** This is a reply to #1790.
From: Peter Weatherall Rec'd
To: Kevin Kitsemetry Msg #1803, Oct-29-93 05:47AM
Subject: Class Library & memory models
Two questions regarding Watcom C/C++ 32:
1 Is there any informatin available concerning re-entrancy (or not) of
components of the Watcom class library ? I have re-implemented new/delete +
malloc/free to operater in a multithreaded environment using a synchronisation
object, so the dynamic creation & destruction of objects does not itself cause
a re-entrancy kind of problem with free space management.
2 Id there any significant difference between the small and flat memory models?
*** See also #1808.
From: Mike Dijkema Rec'd
To: Kevin Kitsemetry Msg #1804, Oct-29-93 07:01AM
Subject: BIMODAL
It appears that in the new dos4gw which came along with WC9.5 the bimodal
program won't run anymore. All serial IO is actually not working because
something appears to go wrong in the apssing up dan down of the interrupts. It
does though run on the old 9.0 version. Ok it is now possible to trap GP
faults, but apparently it is not yet ok...
Mike...
*** See also #1815.
From: Anthony Scian Rec'd
To: Peter Weatherall Msg #1808, Oct-29-93 10:33AM
Subject: Class Library & memory models
PW> Two questions regarding Watcom C/C++ 32:
PW> 1 Is there any informatin available concerning re-
PW> entrancy (or not) of components of the Watcom class
PW> library ? I have re-implemented new/delete +
PW> malloc/free to operater in a multithreaded environment
PW> using a synchronisation object, so the dynamic
PW> creation & destruction of objects does not itself
PW> cause a re-entrancy kind of problem with free space
PW> management.
The multi-threaded versions of the library are reentrant, the others
are not reentrant. Use -bm if you want multi-threaded code to work.
malloc/free are already enabled and reentrant in the multi-threaded
library along with synchronized access to POSIX file handles, stdio
file objects, etc. Also some CLIB functions have thread-specific
data so that threads cannot affect each other, an example of this
is rand().
PW> 2 Id there any significant difference between the
PW> small and flat memory models?
Yes.
flat: CS=DS=ES=SS=data=code
small: CS=code DS=SS=data ES floats
In flat, a wayward data pointer can corrupt code. All of our libraries
should work in the small model.
*** This is a reply to #1803.
From: Nicos Skouras Rec'd
To: Anthony Scian Msg #1810, Oct-29-93 12:10PM
Subject: WLINK Problem
Thanks for your effort
Nicos Skouras
From: Rainer Schupp Rec'd
To: Kevin Kitsemetry Msg #1812, Oct-31-93 07:52AM
Subject: msg 1790 + 1801
The provided code in msg #1790 is complete.
(Except the line breaks in the pragma aux,
check the backslashes). If compiled with
wcc386p test.c , it passes the 9.0 E-level
compiler with no warnings and no errors, but
it won't pass the 9.5 compiler.
*** See also #1817.