On 4/21/2015 4:25 PM, Dave G4UGM wrote:
-----Original
Message-----
From: cctech [mailto:cctech-bounces at
classiccmp.org] On Behalf Of geneb
Sent: 21 April 2015 18:56
To: General Discussion: On-Topic Posts
Subject: RE: Visual Basic Question
On Tue, 21 Apr 2015, Dave G4UGM wrote:
> The phrase "standard Windows 16bit DLLs" means Windows 3.1 DLLs. Such
> DLL's no longer work in a modern windows. If they directly access the
> hardware then they will not work on any NT based windows such as
> Windows/2000, Windows/XP, Vista, or 7, 8 or 9. Nor will they work on
> any 64-Bit windows full stop. 64-Bit windows does not support 16-bit
code.
If you
have a Windows/95, 98 or ME environment then the code may work.
They should work
with 32 bit versions of windows as the 16 bit thunking
layer is
still present. YMMV of course.
What I
said was:-
" If they directly access the hardware then they will not work on any NT
based windows such as..."
As they are interfacing to external hardware I assume they access the
hardware directly...
An update on this software/hardware adventure:
I have not got a 16 bit capable version of VB4 so I have not started
that yet. The thunking advice is quite relevant since the driver talks
directly to the ISA card.
I am using Visual C++ v1.52 and I am able to write and compile and debug
a short piece of code that calls the 16 bit DLL. There is a conflict in
the calling argument list though,
the manual and the include file Cproto.h say that the directory string
is passed as a 'far pointer', however Visual C++ says it must be a near
pointer. When I run the code
and step thru it using the debugger the first call to acq_open returns a
code integer that indicates one of the passed parameters is wrong, don't
know which one.
I am running under win98se and a companion executable, winvect.exe, is
provided to test the DLL out. It works just fine. I run it from a
MS-DOS window and when it
starts it opens up a window with graphics and plots the data coming from
the spectrometer.
I used a utility, scanbin.exe, to tell me what the exe and dll files
were and it indicates the C++ and winvect.exe are both 'Windows
executables 16 bit'.
The ISA acquisition card uses DMA is this incompatible inside the debugger?