last update 27 aug 98 / greg goebel / public domain / vwhint
* This document provides comments on various VEE limitations and "features" that may be misinterpreted as bugs, as well as some useful hints.
* If you download an old classic VEE driver from the Web, it will be in
uncompiled text form. You can compile it by simply configuring the uncompiled
.ID file under VEE just as you would the compiled .CID VEE file. It will
be compiled automatically the first time it is invoked.
The VEE ID will have a revision level. Don't worry about it having to match
a particular revision level of VEE, the older revcodes will work fine.
* In VEE 3.x, the panel view of a UserObject could be added to the main panel
view by selecting the object and then clicking: Edit -> Add to Panel.
Under VEE 4.0, would appear to have been removed: place a UserObject icon
in a panel view and click on it -- and you get a edit window that is
independent of your original editing context.
In fact, it wasn't removed -- just well-disguised. You need to use the
Restore entry in the UserObject object menu, and then you get a panel that
you can add to the Main program's panel view.
* A customer was getting an entire sequence of errors when loading VEE 3.X
programs into VEE 5.0.
As it turned out, the old VEE 3.X programs contained 24-bit bitmaps. These
are unsupported on vEE 5.0 (they never worked very well) and so VEE 5.0
won't load a program that loads such bitmaps.
* We have had reports of programs that run faster under VEE 3.2 than under
VEE 4.0. There are some speed issues on the margins, but in some cases it's
an illusion, caused by miswiring Timer objects in the program.
If a Timer is carelessly wired so that other objects are in the path used to
ping its input pins, the sequence by which the Timer input pins are exercised
may vary between VEE 3 and VEE 4. Observing data and control flow can help
reveal such a condition. In any case, timer inputs should be wired
from the sequence-out pins of other objects with nothing else shared on the
line. A Do object can be used to ensure sequencing.
* If VEE is doing strange things like forgetting where files are supposed to
be stored or losing entries in Instrument Manager, check the Windows Registry
entries for VEE. Sometimes they get scrambled ... it seems to happen
sometimes when you have new versions of VEE installed over older ones.
* Another thing that can be tried when the Instrument Manager seems to be
doing odd things like losing entries is to delete the VEE.IO file and then
try again. It appears to get corrupted and then behaves erratically.
* The Beep Object doesn't work all that well on Win32 under VEE 4.X or later.
It sometimes only gives a faint click and frequency can't be controlled at
all. The reason is (so we have been told) that Microsoft settled on an API
call that doesn't provide much in the way of control and so it's difficult to
work around. Using a sound card and a WAV player is the best option over the
long run.
* If you have programs driven by AutoStart objects and try to run them in the
VEE 4.X RunOnly, they will immediately execute and die. You will need to
modify such programs.
* We have had many requests from VEE users that there should be some way
for VEE to automatically rescale its display to the proper screen resolution.
This is not very practical, and experiments with other programming languages
with building automatic rescale proved laborious and didn't produce very
good results.
* The Call Stack doesn't work for programs that begin with Start objects.
It also doesn't give very good results for running programs in VEE RunOnly.
Its use is discouraged except for debugging.
* When we have users call us to complain they are getting an "out-of-memory"
error on VEE for HP-UX, when they actually have plenty of memory. We always
tell them to modify the "maxdsiz" (maximum data segment size) in Kernel
Configuration -> Configurable Parameters to tell the HP-UX to give VEE more
room to move.
This often leads to a protest that the program isn't using that much data, so
something must be wrong. Actually, since HP-UX doesn't execute the VEE
program directly (it's executed by VEE), the entire VEE program is seen as
"data", not just the variables and arrays.
* We had a customer who was using a To String object in VEE as follows:
-- where "spec" was a global record. He got the error:
I asked a lab guy about this and he said: "'Spec' is a reserved keyword."
"Oh." I suggested the customer use a different name.
* If you select a serial interface under VEE I/O Manager, you'll find the
"Refresh" button disabled (grayed out). No surprise -- there's no way to
interrogate a serial interface to see if an instrument's on it.
* A VEE user in Norway ported his files from VEE 3.12 to VEE 4.0 and found
out that timestamp data was off by 9 hours.
As it turns out, this gave Pacific Standard Time -- which is the default for
PC operation. Apparently he hadn't set the timezone on his old VEE 3.12
(Windows 3) machine. Or maybe he had. The lab guy says the operation of TZ
on old Windows was uncertain.
On WinNT you can set a TZ variable as follows:
* While it is possible, using the View menu, to turn the VEE 4.X Program
Explorer window on or off, this setting is not necessarily preserved when
VEE is exited and then reloaded.
To ensure that the setting is preserved, the user should go to the Files menu
-> Default Preferences -> Save Default Preferences before leaving VEE. If
this is done, the setting will be preserved into the next load.
* A customer gave us the following program:
The reason is that control inputs do not actually cause an object to execute.
If the object doesn't execute, it cannot generate any outputs.
The lab has wanted to change some control pins to data pins for this reason.
The only workaround at present is to enclose the objects in a UserObject or
UserFunction, and then set up an error pin on that.
* A customer had a secured VEE program and had changed some driver settings
in the program, but could not figure out how to save the program after having
done so.
The answer is that VEE 4.0 will not allow the user to re-save a secured
program. Apparently there were complaints in earlier versions that security
wasn't tight enough, so it was enhanced in VEE 4.0.
* A customer had written a VEE program on HP-UX that trapped the F10 key to
stop a test sequence. They moved the program to WinNT and all the F10 key
would do was pause the program.
As it turns out, the F10 key is reserved by Windows ... we can't use it. We
need to document this a little better.
* Doing a print sceeen from VEE-UX can only give magnifications as factors of
1/3 -- 1/3, 2/3, 1, 4/3, and so on.
* Newer VEEs cannot perform remote procedure calls (RPCs) to older VEEs, but
the older VEEs can RPC to newer VEEs.
* A staffer at the TMO call center built a VEE program for a customer using a
LAN-HPIB box at his end. He secured the program and shipped it out.
However, the customer had an HPIB card, not a LAN-HPIB box. He could use I/O
manager to set up a device name for the Direct I/O and Driver Objects, but
the call center person had also added a Bus I/O Monitor. The Bus I/O Monitor
remained pointed to the original LAN-HPIB box name and address, and so gave
an error message because it wasn't there.
This, as it turns out, is expected behavior. The Bus I/O Monitor is hooked
to an interface, not a device. You can change a device to a different
address, but since the Monitor is hooked to the interface. If that interface
isn't there, it doesn't know where else to go.
* Interface Event objects support a timeout, but it doesn't do what you might
think. All it does is determine how long the Interface Operations object
will wait before failing to acquire an interface that is locked by another
process.
* If your I/O doesn't work at all with VEE, please make sure you have
installed the I/O libraries. While older versions of VEE installed them
automatically, you have to do this as a separate exercise with current
versions.
Also, if your SICL I/O config program seems to recognize the interfaces, but
VEE does not, then you are likely running 16-bit SICL, and VEE 3.2 and above
require 32-bit I/O.
Some users installing the old versions of VEE run into troubles with the
automatic installation of SICL. This can be disabled with the "-noautosicl"
option.
* If you have upgraded a PC from Win3 that had SICL on it to Win95 and then
installed a later version of SICL on it, then you will have some copies of
the same SICL files in the \Windows directory (the old Win3 files) and in
the \Windows\System directory (the new Win95 files).
This can lead to segmentation errors in VEE. Check to see if you have SICL
files in \Windows and if so, delete them.
* If you have VXLink, reboot your PC with the VXI mainframe off, and don't
run SURM, then the VEE Instrument Manager will not recognize the VXLink card
as a valid interface and will drop its entries. Not a bug, just logical
operation.
* Simply put, it doesn't work at 19.2 kilobaud. No workaround and no VEE 4.X
for Sun.
* If you are having trouble just getting VEE to run, try changing the VEE
invocation in Program Manager from:
-- to:
This cute little feature allows you to dump any error output generated by VEE
as it boots in a file of your choice.
* A customer was loading 3 UserLibraries under VEE and then sequentially
deleting them, using a loop. He was getting libraries deleted when he didn't
want them deleted.
The problem turned out to be due to the fact that he had brought out the
"library name" pin from the Delete Library object. This is a control
pin, so it acts asynchronously, meaning that when he runs the program, it
deletes the library that it was given as the last parameter in the previous
run of the program.
The simplest fix is to not use the "library name" pin. Use separate
Delete Library objects with the library names hardcoded and select the
appropriate one with a demultiplexer, or -- if that's not possible -- do
screwball things with gates or globals to ensure that the Delete Library
object only gets the library name when it is required.
* If you keep getting out-of-memory errors with a large program, try loading
a small one first and then load the big one.
* It is easy to write programs that leak memory under VEE, not because of any
inherent defect in the product (though we have fixed many low-level memory
leaks in the past) but because the language allows for almost transparent
allocation of memory for data structures.
If your program seems to grow without limit, check the objects that allocate
memory (like Collectors) to see if they could be continuously adding to
existing arrays. Another trick is to use "totsize()" functions and
AlphaNumeric objects to monitor the size of critical data structures as the
program runs.
* If you perform error trapping on a transaction or formula box, you can end
up losing memory. VEE will try to build a parse tree to evaluate
expressions, and if you get an error, the memory used for the parse tree will
be lost.
If you see programs obviously leaking memory you might want to look for
formula boxes with error pins that regularly generate errors during normal
program flow. A VEE program should not have code that relies on errors
occurring in normal operation.
This issue has been true in all versions of VEE and is likely to be an issue
in all future versions of VEE, as there is little that can be done about it.
* We ran into a really interesting memory leak on VEE that involved
transaction boxes.
Suppose you have a transaction box that has two transactions that use the
same output pin. Of course, since you don't get anything out of the
transaction box until the transaction box has completed executing, the only
thing you get out of the output pin is the last data written to it.
The problem is that if you wrote any data to it in a previous transaction,
and that data is of a different type, then the memory allocated to store that
data is lost to VEE. Keep on calling this transaction object and it keeps on
leaking memory.
There is no fix for this -- it's too deeply buried in VEE -- but there's no
reason to get caught by it, either. Just make sure that each transaction has
its own output pin. If you just want to do a dummy read and don't care about
the data, you can do a read to a NULL pin that doesn't exist and the data
will be thrown away.
* If you are trying to print a VEE graph or something like that and it comes
out solid black, just go into "File -> Set Default Preferences -> Colors" and
set "Trace Background" to white. You can similarly manipulate colors to
correct other printing problems.
Also make sure that your Windows Printer driver is correctly configured to
handle the graphics dumps. In particular, if you are getting misregistration
of text, make sure you have the printer driver's "Print TrueType As Graphics"
flag set.
* A customer at UC Berkeley was having troubles with printing classic VEE IDs
on Win95. It appears to be a Win95 printer driver bug. To work around this,
in your VEE.RC file (usually in the VEE install directory), find the 'Colors'
section and modify it to look like:
Restart VEE.
All white text on instrument panels will now show up in black (the printer
driver doesn't seems to have any trouble with black). Note that the next
Default Preference Save operation will overwrite this change.
Here's the full list of hidden colors:
* If you are trying to get an instrument driver loaded into VEE and you get
the error message: COMPILED ID IS OUT OF DATE -- it means you don't have an
ID compiler that matches the VEE software. Possibly you have one left over
from an earlier version of VEE or the old ITG software.
Note that in current versions of VEE you won't find the ID compiler in any of
the Windows menus. No problem, if you try to load an uncompiled ID file
under VEE, it will be automatically compiled.
* In VEE 3.0, the lab changed the rules for naming I/O devices to
"alphanumeric only" (including underscores). This causes problems with
people porting old programs, but it was necessitated by the fact that putting
spaces and suchlike in device names really screwed up multidevice direct I/O;
putting a space in the device name would put two device names in the
transaction field, which wouldn't work.
To get around this problem, just pull the source VEE file into a text editor
and do a search-replace on the offending device name. It was changed back in
VEE 3.2.
* If a device times out, VEE asserts an IFC. This bothers some instruments
but this is the only way VEE can ensure that the card is back in a known
condition. Not a bug.
* The TOTSIZE function won't return "0" when given a null input. This is
because in formulas "null" evaluates to 0. Use the "Get Array Element"
object instead. It has an output pin that gives the totsize and handles
null inputs correctly.
* If you want a program to be able to determine the data types of values,
you can use Data -> Access Array -> Get Values. This has a Data Type output
pin.
* If you make a pop-up UserFunction in which the objects on the panel
completely cover the pop-up, you won't be able to move the panel with the
mouse because the objects accept input focus.
* Gerard Keijzer in Amsterdam had an interesting one: he had a simple
sequencer program as follows:
The transaction has the form:
This has the following features:
The problem is that the ERROR 10 on IF FAIL never occurs until the constant
in the external formula reaches 223.5. It should fail on 101 but does not.
I thought this might be a floating-point issue but the range of values
involved is well within the bounds of accurate floating-point operations.
* Unfortunately, the lab gets back to me and says that this is due to the
use of the "almost equals" function, which operates oddly when the input
values are high and tolerance range is low. Not a bug as such.
* If you try to perform comparisons between arrays where the array values
have a wide variation, the comparisons will give unpredictable results. Best
to concoct a UserFunction to do an element-by-element comparison.
* Be very careful in the use of the Stop object. Do not use it inside
UserFunctions or UserObjects to terminate a program, and do not use it in an
unconstrained fashion -- like in a separate thread -- to stop a program. You
can get serious errors doing this.
* In some cases, if you display data in an XY-Graph or similar object, you
can lose the last point you want to display (more noticeable in small data
sets). No fix right away.
* We ran into a really odd bug where a user couldn't use Program Explorer
to bring up a UserObject window. I passed the following description of my
experiments with it back to the callcenter:
It turned out the UserObject window was way off the display. There was no
way to determine how it got there, and no further investigation was
warranted, but it was an interesting bug.
* A customer reported that no matter how he configured the VEE File Dialogue
or what settings be put on it, he would always get a ".VEE" extension on the
file name, even if the file already had an extension.
I confirmed this, but it turns out to be a Windows-ism associated with the
File Dialogue. Same sort of thing happens with Visual BASIC.
* That's right, it's a Win95 bug. We allow you to set up to 32 KB for
compatibility with other platforms, but it's still 1 KB.
* We got a VEE program from the Netherlands that demonstrated some odd
"oscillation" features in the "integral()" function in VEE. The lab guy says
that this is a characteristic of Simpson's Rule integration for the type of
data the customer was using, and that we should have three types of integral
functions:
Sounds like a good idea to me, but it may take a while to get to it.
* We had a customer problem in Europe in which VEE performed an Execute
Program on a C application under HP-UX. It appeared that the C program
wasn't getting its fair share of execution time on the CPU, so the field
person asked us what could be done to increase its priority.
There is actually an "rtprio" function under that can set the execution
priority of an HP-UX application program, from a priority of 0 (highest) to
127 (lowest). It is invoked as follows:
Whether this actually affected the customer problem was another question --
we had our doubts, particularly because HP-UX isn't truly a realtime system
anyway, and it is very difficult to make its operation exactingly
deterministic -- but it was something worthwhile to know anyway.
* A VEE user found that using the "811" topic in VEE 4.0's help() function:
-- gives an error that says "The topic does not exist", even though the "811"
topic is listed in the help's index and find sections. But the "Accumulator"
topic worked:
-- and presents the Accumulator topic help page as expected.
In fact, the vee.hlp help file is goofy. Some topics have odd entries, like:
In the specific case that led to the problem, the workable entry is:
* It appears from customer reports that the libvapi.lib file required for
Callable VEE does not work with Borland C++. It is unlikely to ever be
updated to do so.
[*] VEE HINT / Compiling VEE Classic IDs
[*] VEE HINT / Creating UserObject Panel Views In VEE 4.0
[*] VEE HINT / 24 Bit Bitmaps & VEE
[*] VEE HINT / Cautions With Using Timer Objects
[*] VEE HINT / Registry Problems Cause VEE To Lose Its Mind /
[*] VEE HINT / Instrument Manager Loses Instrument Configurations /
[*] VEE HINT / Beep Limitations As Of VEE 4.0
[*] VEE HINT / Autost Objects And Runonly In VEE 4.X
[*] VEE HINT / Autoscaling User Interfaces
[*] VEE HINT / Start Button Issues
[*] VEE HINT / Running Out Of Memory On VEE-UX
[*] VEE HINT / Reserved Keyword Conflicts
[*] VEE HINT / I/O Manager Refresh & Serial Interfaces
[*] VEE HINT / Timezone Issues
[*] VEE HINT / Hiding The VEE Program Explorer Window
[*] VEE HINT / Error Trapping And Control Pins
[*] VEE HINT / Securing Programs On VEE 4.0
[*] VEE HINT / F10 Key On VEE PC Not Functional
[*] VEE HINT / VEE-UX Print Screen Magnifications
[*] VEE HINT / VEE-To-VEE RPC Limitations
[*] VEE HINT / Bus I/O Monitor & LAN-HPIB
[*] VEE HINT / Timeouts On Interface Events
[*] VEE HINT / No I/O Found & Other I/O Configuration Problems
[*] VEE HINT / VXLink Disappears
[*] VEE HINT / VEE Sun Serial Problem
[*] VEE HINT / Dumping Error Codes To Files
[*] VEE HINT / Deleting UserLibraries Synch Problem
[*] VEE HINT / Out-Of-Memory Error Hint
[*] VEE HINT / Memory Leaks As Programming Errors
[*] VEE HINT / Error Trapping & Memory Leaks
[*] VEE HINT / Duplicated Pins & Memory Leaks
[*] VEE HINT / Printing Problems
[*] VEE HINT / Compiling IDs
[*] VEE HINT / Changed Device Names
[*] VEE HINT / IFC Pulsed
[*] VEE HINT / Totsize Won't Handle Null Inputs Properly
[*] VEE HINT / Determining VEE Data Types
[*] VEE HINT / Hidden Popups
[*] VEE HINT / Minor Sequencer Bug With Tolerances
[*] VEE HINT / Array Comparisons
[*] VEE HINT / Stop Objects
[*] VEE HINT / Lose Last Point On Graph Display
[*] VEE HINT / Funny Missing Window Problem
[*] VEE HINT / File Dialogue Always Adds .VEE Extension
[*] VEE HINT / Serial Buffer Size Stuck At 1KB On Win95
[*] VEE HINT / Integration Function Problems
[*] VEE HINT / VEE Process Priorities On HPUX
[*] VEE HINT / VEE Help Function Confusion
[*] VEE HINT / Callable VEE Problem With Borland C
[*] VEE HINT / Compiling VEE Classic IDs
[*] VEE HINT / Creating UserObject Panel Views In VEE 4.0
[*] VEE HINT / 24 Bit Bitmaps & VEE
[*] VEE HINT / Cautions With Using Timer Objects
[*] VEE HINT / Registry Problems Cause VEE To Lose Its Mind /
[*] VEE HINT / Instrument Manager Loses Instrument Configurations /
[*] VEE HINT / Beep Limitations As Of VEE 4.0
[*] VEE HINT / Autost Objects And Runonly In VEE 4.X
[*] VEE HINT / Autoscaling User Interfaces
[*] VEE HINT / Start Button Issues
[*] VEE HINT / Running Out Of Memory On VEE-UX
[*] VEE HINT / Reserved Keyword Conflicts
+--------------------------------------+
| To String |
+-+-----------------------------+------+
| |WRITE TEXT spec[A].num+", " | |
|A|WRITE TEXT spec[A].freq+", " |result|
| |WRITE TEXT spec[A].msk | |
+-+-----------------------------+------+
+-----------------------------------------+
| Parse Errror |
+---+------------------------------+------+
| | Device Type: UNKNOWN | |
| | Filename: | |
| A | Line number: 155 |result|
| | | |
| | | |
+---+------------------------------+------+
[*] VEE HINT / I/O Manager Refresh & Serial Interfaces
[*] VEE HINT / Timezone Issues
My Computer -- (secondary mouse button) -> Properties
-> Environment -> System Variables
[*] VEE HINT / Hiding The VEE Program Explorer Window
[*] VEE HINT / Error Trapping And Control Pins
+--------------------+
| |
| +----------------+---------------+
+---------+ | | Enum |
| Text | | +---------------+--------+-------+
+---------+ | | | < > T1 | Enum +-->
| T0 +--|-->| Default Value | <*> T2 | |
+----+----+ | | | < > T3 | |
| | | | < > T4 | Error +-->
| | +---------------+--------+-------+
+-------+
Setting an incorrect value causes an error, but it generates an error box,
not an error pin output as might be expected. This appears to be a bug, but
it's actually normal VEE behavior under such circumstances: the Default
Value pin is a control input, not a data input, and error trapping won't
work on a control input.
[*] VEE HINT / Securing Programs On VEE 4.0
[*] VEE HINT / F10 Key On VEE PC Not Functional
[*] VEE HINT / VEE-UX Print Screen Magnifications
[*] VEE HINT / VEE-To-VEE RPC Limitations
[*] VEE HINT / Bus I/O Monitor & LAN-HPIB
[*] VEE HINT / Timeouts On Interface Events
[*] VEE HINT / No I/O Found & Other I/O Configuration Problems
[*] VEE HINT / VXLink Disappears
[*] VEE HINT / VEE Sun Serial Problem
[*] VEE HINT / Dumping Error Codes To Files
C:\VEE\VEE.EXE
C:\VEE\VEE.EXE -STDERR:<some_error_file_name>
[*] VEE HINT / Deleting UserLibraries Synch Problem
[*] VEE HINT / Out-Of-Memory Error Hint
[*] VEE HINT / Memory Leaks As Programming Errors
[*] VEE HINT / Error Trapping & Memory Leaks
[*] VEE HINT / Duplicated Pins & Memory Leaks
[*] VEE HINT / Printing Problems
(Colors
(Property "Instrument Panel White" "Black")
)
"Instrument Panel Lavender", "Lavender",
"Instrument Panel Dark Blue", "Dark Blue",
"Instrument Panel Dark Beige", "Dark Beige",
"Instrument Panel Dark Brown", "Dark Brown",
"Instrument Panel Brown", "Brown",
"Instrument Panel Dark Green", "Med Dark Green",
"Instrument Panel Light Beige","Light Beige",
"Instrument Panel White", "White",
"Instrument Panel Black", "Black",
"Instrument Panel Yellow", "Yellow",
"Instrument Panel Cyan", "Cyan",
"Instrument Panel Magenta", "Magenta",
"Instrument Panel Green", "Green",
"Instrument Panel Orange", "Orange",
"Instrument Panel Red", "Red",
"Instrument Panel Light Blue", "Light Blue",
[*] VEE HINT / Compiling IDs
[*] VEE HINT / Changed Device Names
[*] VEE HINT / IFC Pulsed
[*] VEE HINT / Totsize Won't Handle Null Inputs Properly
[*] VEE HINT / Determining VEE Data Types
[*] VEE HINT / Hidden Popups
[*] VEE HINT / Minor Sequencer Bug With Tolerances
+------------+
| Real |
+------------+
| 1234567899 +--+--------------------+
+------------+ | | +-------------------------+
| | | Sequencer |
| +-------------+ | +---+------------+--------+
| | Formula | +-->| A | test1(A) + | Return |
| +---+---------+ | | | Log |
+-->| A | A + 101 +----->| B | | Error +-->
+---+---------+ +---+------------+--------+
+---------------------------------------------------------------+
| [ TEST: ] [ test1 ] [ ENABLED ] |
| SPEC NOMINAL: [A ] [ TOLERANCE ] + [100 ] - [100 ] |
| FUNCTION: [B ] [ LOGGING ENABLED ] |
| [ IF PASS ] [ THEN CONTINUE ] |
| [ IF FAIL ] [ THEN ERROR ] [10 ] |
| DESCRIPTION: [Device test 1. ] |
| |
| [ OK ] [Cancel] |
+---------------------------------------------------------------+
[*] VEE HINT / Array Comparisons
[*] VEE HINT / Stop Objects
[*] VEE HINT / Lose Last Point On Graph Display
[*] VEE HINT / Funny Missing Window Problem
[*] VEE HINT / File Dialogue Always Adds .VEE Extension
[*] VEE HINT / Serial Buffer Size Stuck At 1KB On Win95
[*] VEE HINT / Integration Function Problems
[*] VEE HINT / VEE Process Priorities On HPUX
rtprio <priority from 0 to 127> <application> <application parameters>
[*] VEE HINT / VEE Help Function Confusion
help("811",installDir() + "\\vee.hlp")
help("Accumulator",installDir() + "\\vee.hlp")
Use "on_features" for the "On Features" help topic.
Use "Adv_Dev_Config" for the "Advanced Device Configuration" help topic.
Use "Complex_Pl" for the "Complex_Plane" help topic.
Use "Function" for the "Math & Functions" help topic.
Use "If_GE"" for the "If A >= B" help topic.
Use "gglossary" for the "glossary" help topic.
Use "error_300" for the "300" help topic.
Use "error_811" for the "811" help topic.
help("error_811",installDir() + "\\vee.hlp")
[*] VEE HINT / Callable VEE Problem With Borland C