Release Notes

The following release notes provide additional information about 
version A.00.02 of HP VEE-Engine and HP VEE-Test that is not covered 
in the manuals.

Bug fixes:
 * Fix bug in State drivers that use subaddresses when two or more different 
   drivers are in a model using the same instrument (generally a card cage).

 * Fix Collector object when using two waveforms.  Caused error claiming 
   that mappings were wrong when in fact they were correct.

 * Fix memory leak when dealing with real arrays coming into a formula box
 with certain formulas where the input is constrained to be an Int32.

 * Fix in the Formula device, the function max(Coord_data) could return
 incorrect results.
 
 * Fix in State and Component Drivers erroring at runtime when an IARRAY 
 (Integer Array) output existed.

 * Fix in State and Component Drivers with TRACETYPE SPECTRUM, formerly
 the Complex data was not entered and copied correctly.

 * Fix for VEE running on a HP 9000 series 300/400/700 and displaying on
 a Sun machine, had ignored all keyboard and mouse inputs on some 
 configurations.

 * Fix for State and Component Drivers giving wrong data in a corner case
 of an array enter.  The oscilloscope drivers in Envelope mode could 
 return incorrect data. 
 
 * Speedup in State and Component Drivers when entering a large array
 from the instrument with format REAL64.

 * Fix for To File devices giving improper Error 314 ("Invalid combination
 of parameters "CLEAR", "Clear at PreRun") when File Name input pins are
 used in combination with other To File devices to different file names.


The following release notes provide additional information about 
version A.00.01 of HP VEE-Engine and HP VEE-Test that is not covered 
in the manuals.

Hardware and Software Compatibility

Version A.00.01 of HP VEE-Engine and HP VEE-Test is compatible with the 
following hardware and HP-UX versions:

* HP 9000 Series 300 computers running HP-UX version 7.0, 7.05, or 8.0.

* HP 9000 Series 400 computers running HP-UX version 7.0, 7.05, or 8.0.

* HP 9000 Series 700 computers running HP-UX version 8.05.

Version A.00.01 of HP VEE also supports Series 700 RX terminals 
connected to a Series 300, 400, or 700 workstation.

Models developed on version A.00.00 of HP VEE are forward compatible 
with version A.00.01 -- most will run without modification, but refer 
to the "Propagation Change" section for further information. However, 
models developed on version A.00.01 of HP VEE are not backward 
compatible with version A.00.00.

Some additional compatibility issues are:

* Gray-scale support. Version A.00.01 supports gray-scale monitors 
under the X Window system with the same high-quality appearance as 
the color monitors.  No configuration changes should be necessary to 
use gray-scale monitors.

* GPIO support (HP VEE-Test only). GPIO I/O devices are not supported 
for HP 9000 Series 700 workstations since there is not currently a 
GPIO interface card for the EISA I/O card cage used by Series 700.

* HP BASIC/UX support (HP VEE-Test only). The "Initialize HP BASIC/UX" 
and "To/From HP BASIC/UX" devices are not supported for HP 9000 Series 
700 workstations since HP BASIC/UX is not currently supported for 
Series 700.



HP-GL Plotter Support

HP Vee now supports graphics output to plotters and files using HP-GL.
Any of the following graphical two-dimensional displays can be plotted
to an HP-GL or HP-GL/2 plotter or file:

  XY Trace, Strip Chart, Complex Plane, X vs Y Plot, Polar Plot,
  Waveform, Magnitude Spectrum, Phase Spectrum, and 
  Magnitude vs Phase.

Before sending plots to a plotter (either local or networked), your
system administrator must first add the plotter as a spooled device on
your system.

In addition to standard HP-GL plotters such as the HP 7475, the 
HP ColorPro (HP 7440), or the HP 7550, some printers can be used as 
plotters, such as the PaintJet XL, and the LaserJet III.  The 
HP ColorPro plotter requires the Graphics Enhancement Cartridge in order 
to plot polar or Smith Chart graticules.  The PaintJet XL requires the 
HP-GL/2 Cartridge in order to make any plots.  In order to make plots 
on the LaserJet III, at least 2 megabytes of optional memory expansion 
is required, and the Page Protection configuration option should be 
enabled.  Plots of many vectors, especially with Polar or Smith chart 
graticules, may require even more optional memory in the LaserJet III. 
Any plot intended for a printer requires the plotter type to be set to 
HP-GL/2, which causes the proper HP-GL/2 setup sequence to be included 
with the plot information.

To generate a plot, either interactively choose the "Plot" menu entry
from the display's object menu, or programmatically use the optional
"Plot" input control pin on the display.  The entire view of the display
object will be plotted, and scaled to fill the defined plotting area,
while retaining the aspect ratio of the original display object.  By
re-sizing the display object, you can control the aspect ratio of the
plotted image.  By making the display object larger, you can reduce the
relative size of the text and numeric labels around the plot.

For more information see the on-line help for "Plotter Config" and the
on-line help for any of the two-dimensional display devices.



Two-Byte Characters

Two-byte characters (including Kanji for Japanese) can be entered into
any field in HP-VEE where you can enter text.  This includes all titles,
text (string) constants, input/output pin names, and note pads.  To use
two-byte characters you must have the HP-UX NLIO subsystem installed and
initialized, and an appropriate set of fonts selected, such as the Kanji
app-defaults file in the /usr/lib/veeengine/config or 
/usr/lib/veetest/config directory.

The following are some limitations to two-byte character support:

* When using the Plot command to send a graphical two-dimensional
  display to a plotter or file, two-byte characters in field labels will
  be encoded into HP-GL label commands as two-byte characters in the 
  HP15 character set, which is not supported by most plotters.

* When reading text that includes two-byte characters from a "Direct 
  I/O" object, the two-byte character rules are not used when looking 
  for the EOL string. Thus, an EOL character may be incorrectly found 
  in the second byte of a two-byte character.  (This is only a problem 
  if an EOL character has an ASCII value greater than 32 decimal.)

* Date/Time parsing and formatting have not been globalized, and
  continue to only execute in English.  To obtain a localized date 
  string, use an "HP-UX Escape" object with a program of "date" and a 
  transaction of "READ TEXT x STR COUNT:1".



New Instrument Drivers (HP VEE-Test Only)

Several new instrument drivers have been added to HP VEE-Test, version 
A.00.01:

  hp3588a, hp4285, hp5361b, hp8340b, hp8341b, hp8350b, hp83620a, 
  hp8757c, hp8757c4, hp8757c5, hp8757c6, hp8970b, hpe1343a, 
  hpe1344a,   hpe1440a, hpe145xa, hpe1463a, hpe1465a, hpe1466a, 
  hpe1467a, hpe2403a



Changed Instrument Driver (HP VEE-Test Only)

The instrument driver for the HP 4284A LCR Meter has been updated and is 
not compatible with the previous version. Thus, if you have saved any 
version A.00.00 models using the hp4284a.cid file, they may not run 
correctly in HP VEE-Test version A.00.01. The hp4284a.cid file supplied 
with A.00.01 is the new driver -- the old driver is supplied as the 
hp4284o.cid file. Thus, you can use the old version so your models will 
run, but we recommend that you migrate to the new version of the driver 
to ensure compatibility with future releases of HP VEE-Test.

To use the old version in your models, change the ID Filename field in 
Configure I/O to use hp4284o.cid instead of hp4284a.cid. To migrate to 
the new version, load your old models, click on "OK" for each of the 
caution messages that will pop up saying "Component xx in get file is 
not in current ID", and then find each of the State and Component 
Drivers for the HP 4284. Delete each one, re-create it from the 
"Instruments..." menu pick, and re-connect the lines.



State Drivers (HP VEE-Test Only)

Many of the Instrument Drivers now directly support the VEE-Test
Waveform and Spectrum types.  State Drivers and Component Drivers for
oscilloscopes and spectrum analyzers can now output a Waveform or
Spectrum without needing to use the Build Waveform or Build Spectrum
device.  Please see the example "io_instwf2.ex" in the 
/usr/lib/veetest/examples/concepts directory.

The following instrument drivers support this capability:

  hp54111d, hp54501a, hp54502a, hp54503a, hp54504a, hp54510a,
  hp70900 (hp71000), hp8560_3, hp8566_8, hp859x (hp8590_3),
  hpe1426a, hpe1426s

Models created with VEE-Test A.00.00 which use these instrument drivers
will still execute the same way.  See the example "io_instwf1.ex" in the
/usr/lib/veetest/examples/concepts directory.

Note that the spectrum analyzer instruments listed do not output a full
complex Spectrum, but only a magnitude spectrum or phase spectrum.
VEE-Test creates a complex Spectrum as the output container, and copies
the magnitude or phase data into the complex Spectrum, leaving the other
half of the data zero.  For example, the HP 8590 spectrum analyzer can
measure a magnitude spectrum, but it does not measure the phase data.
In VEE-Test, the Spectral trace data output from an hp8590 State Driver
would then have only magnitude information, and the phase data would be
zero.

Also note that for waveforms, VEE-Test ignores the XMIN information and
assumes that the waveform starts at time zero and ends at the time
interval value.



Delay

The Delay object (found under the Device menu) waits at least a 
specified amount of time and then pings its sequence out pin.  
However, when the Delay is part of a thread containing other objects 
executing in parallel, the sequence out may not fire until a much longer 
time has elapsed.  This is because sequence out pins are fired only when 
there are no other objects which may execute.  This gives the appearance 
that the Delay object is not working correctly since it seems to delay 
much longer than the specified amount of time.

To increase the flexibility of the Delay object, the "Done" data output
was added to allow subsequent objects to execute after the Delay
completes without waiting for any parallel objects to complete.  An
example illustrating this case is called "prop3.ex" in the
/usr/lib/veeengine/examples/concepts or 
/usr/lib/veetest/examples/concepts directory.

Note that in most cases, either the Done Output Terminal or the 
Sequence Out pin may be used to continue propagation after the Delay 
time expires.  It is not necessary to alter existing models that 
currently execute correctly, since all existing models will continue 
to execute as before.



Propagation Change

A change has been made in version A.00.01 which affects models that have 
objects within iterator sub-threads which do not execute on every 
iteration (i.e., they execute based on the result of an If/Then object).

Each iterator (objects found under the Flow->Repeat menu) must perform
certain housekeeping operations on its sub-thread between iterations.
One of these operations is to clear the inputs of the sub-thread's 
objects so they can run again.  Before the propagation change, old 
data from previous iterations was left valid which could cause 
unpredictable behavior in objects which had more than one input 
(possibly from objects executing during different iterations).  To 
fix this problem, all data containers sent during one iteration are 
invalidated before the next iteration as part of the housekeeping 
operations of the iterator.

But, this change may create another problem in some cases. In version 
A.00.00, data from objects that may not execute on every iteration could 
be used outside the iterator's sub-thread -- regardless of on which 
iteration the object actually executed. In version A.00.01, if the 
object does not execute on the last iteration, the data will have been 
invalidated before the object outside the iterator's sub-thread can 
execute on it. To solve this problem, use the new Sample & Hold object 
to hold the last data generated for use by objects outside of the 
iterator's sub-thread. Refer to the next section for information 
about the Sample & Hold object.



Sample & Hold

A new Sample & Hold object (found under the Device menu) solves several
difficulties when generating complex threads involving iterators which 
contain If/Then objects in their hosted sub-threads (see "Propagation
Change" above).

The Sample & Hold object provides safe "storage" for a container sent to
the "InData" input terminal, by sheltering it from an iterator's
housekeeping operations.  When the XEQ terminal is activated, the most
recently received container is retrieved and sent from the "OutData"
output terminal.

Except for a few special cases involving iterators and flow branching,
use of the Sample & Hold is not necessary.  Data containers sent to an
object's input terminal are normally preserved as long as the thread is
executing.  If an iterative thread has flow branching (typically an
If/Then object), it is possible that the inputs for objects along a 
branch are cleared (the input data is invalidated), even though the 
branch will never be taken again during the iteration.

In this special case, the Sample & Hold can be used to preserve data 
in branches that may never execute again.  To see an case where 
the Sample & Hold is required, load and run the "prop4.ex" example
in the concepts directory.



New "~=" ("almost equals") Operator for Floating-Point Numbers

The standard equality test operator "==" is quite often too stringent
for many user applications when applied to floating-point datatypes
(Real, Coord, Complex, PComplex, Waveform, Spectrum) since it requires
an exact match for the 53-bit IEEE 754 representation of the mantissa
(approximately 16 decimal digits).  A new equality test operator has
been added to handle the ordinary case where there are at most 7 
significant decimal digits.  The "~=" operator is used wherever the
"==" operator would have been used (e.g., "A~=B" instead of "A==B" in
an IF/THEN object), but for floating-point datatypes will allow much
greater tolerance for differences which exist beyond the range
of the 7 most significant decimal digits in the two operands.



Automatic Rounding of Real Numbers

In this release of HP VEE, whenever a real number is automatically
converted to an integer, the real number is rounded instead of being
truncated as in the A.00.00 release.  This occurs in the following
situations:

* When real numbers are entered into Integer constant fields.

* When an input terminal constrained to accept only integers receives
  a real number.

* When a real number is used as a parameter to a function in a Formula
  object which requires integer parameters.



Show Description Added to Main File Menu

Show Description has been added to the Main File Menu. It works the 
same as Show Description in any Object Menu.



HP VEE User Documentation -- veedoc

This release includes a utility program "veedoc", accessible from an 
HP-UX command line, which will extract information from a model created 
with HP VEE-Test or HP VEE-Engine.  This command extracts all 
information that you have included in the "Show Description" objects 
associated with the root context level (accessible through the File -> 
Show Description menu), and all UserObject's.  This information is 
listed in a format which shows the associated context name (main 
title or UserObject name), an identifying section number which denotes 
the relative "nesting" position within the model, and the associated 
Show Description information.

The purpose is to provide another method of documenting HP VEE models.
To use this feature, go to an HP-UX command line and type:

     /usr/lib/veetest/veedoc [<vee-file> ... ]

or

     /usr/lib/veeengine/veedoc [<vee-file> ... ]

depending on whether you are using VEE-Test or VEE-Engine.

This command will strip out the information and, by default, show 
the results on the screen.  This command will accept most standard 
re-direction and piping constructs of HP-UX.

If you want to run the veedoc utility on a file created with the 
previous revision of HP VEE (A.00.00), you must first load that model 
into this revision (A.00.01) and then re-save it.

To see an example of this routine, go to an HP-UX command line and type:

     /usr/lib/veetest/veedoc examples/applications/mfgtest.ex

To print this same information, type:

     /usr/lib/veetest/veedoc examples/applications/mfgtest.ex | lp

(The above examples are for VEE-Test -- for VEE-Engine, use the path 
/usr/lib/veeengine instead.)

Additional information can be found by looking at the HP-UX manual page 
for veedoc, which was added when you installed HP VEE.



New Examples

Several examples have been added to HP VEE with version A.00.01.


New Applications Examples:

    convert.ex   - Accepts and displays numbers in Binary, Decimal,
                   Hexadecimal, and Octal format.

    mfgtest.ex   - A simple manufacturing test example.

    mfgtest1.ex  - A manufacturing subtest run from within mfgtest.ex.

    PSK.ex       - Simulated Phase Shift Keying to encode and then
                   decode a text string message.

    telecomm.ex  - Simulates DS1 Pulse Template Test using captured data
                   stored in a file.


New Concepts Examples:

    1Dto2D.ex    - Breaks a 1D array into a 2D array when dimensions are
                   fixed.  Use AryToMat library device when dimensions
                   are variable.

    2Dto1D.ex    - Flattens a multi-dimensioned array into a 1D array
                   using the MatToAry library device.

    asciiCode.ex - Converts any character into its ASCII code, then
                   converts the ASCII code back to the character.

    barchart1.ex - Example of a Bar Chart display using the "BarChart"
                   library object to show the magDistribution of 100
                   random numbers.

    barchart2.ex - Example of a Pass/Fail Bar Chart using the
                   "PFBarChart" library object to show the
                   magDistribution of 100 random numbers, with values
                   below a Limit threshold in different color.

    barchart3.ex - Example of Stacked Bar Chart using the "StakBarChart"
                   library object to display two random magDistribution
                   samples.

    barchart4.ex - Example of Comparative Bar Chart using the
                   "CompBarChart" library object to show the
                   magDistribution of two sets of 100 random numbers.

    datacomp.ex  - A technique for eliminating redundant data before
                   saving to a file.

    magPhase.ex  - Elegant method of generating and displaying the
                   Magnitude and Phase vs Frequency from a time domain
                   waveform input.

    numKeyPad.ex - Use of numKeyPad library device.

    panelview.ex - Illustrates using multiple views of a display on a
                   user panel, allowing simultaneous over-all and zoomed
                   displays of XY data.

    prop3.ex     - Example showing when to use the Delay object's new
                   DONE output terminal instead of the sequence out
                   terminal.

    prop4.ex     - Example showing when to use the Sample & Hold to
                   solve a flow problem with iterative threads
                   containing flow branching.

    qsort.ex     - Uses the qsort C library routine and an HP-UX escape
                   to sort an array of numbers.

    strings.ex   - Uses hpux escape and 'expr' command to implement
                   string functions for length(), index(), match(), and
                   substr().

    scattergm.ex - Plots a scattergram from input array.


New Games:

    mole.ex      - Hit the mole as he pops up randomly in your garden.


New Lib Objects:

    numKeyPad    - A numeric KeyPad entry device for accepting numeric
                   user input.

    MatToAry     - Flattens 2,3,...N dimensioned array into one long 1D
                   array.  (See 2Dto1D.ex for an example on using this
                   device.)


New 3852A Examples (HP VEE-Test only):

This directory contains data acquisition examples showing the use of the
HP 3852A Data Acquisition and Control Unit and HP VEE-Test. The examples
assume that the 3852A contains a HP 44702A/B 13-bit High Speed
Voltmeter.

    d.veeio      - The configuration information for these examples.

    unpack.c     - This is the source code for the executable unpack.exe.

    gpio1.ex     - This example shows how to configure HP VEE-Test to
                   log readings in packed format to disk at 100,000
                   readings/second using transfer over the GPIO
                   interface.

    analysis.ex  - This example shows how to unpack, manipulate, and
                   display readings that have been stored on disk by 
                   a data acquisition program such as the one in example
                   "gpio1.ex". Packed readings are in file 100kHzdata.

    gpio2.ex     - This example shows how to use HP VEE-Test to acquire,
                   unpack, and display readings from the 3852A via GPIO.
                   This is a complete data acquisition solution and is a
                   combination of examples "gpio1.ex" and "analysis.ex".

    hpib1.ex     - This example shows a complete data acquisition
                   solution using the HP-IB interface instead of GPIO.
                   It shows how Direct I/O objects can be used to 
                   download subroutines to the 3852A.

    100kHzdata   - Contains actual readings from a 3852A to be used by
                   the example "analysis.ex".  The data was sampled at
                   100 kHz and shows a 1 kHz sinusoidal waveform.
