
              ----------------------------------------------------
                          Precision MicroControl Corp.
                      Motion Control API - Version 4.3.0
                        15-October-2010  *  ReadMe File
                $Id: ReadMe.txt 781 2013-03-04 21:50:18Z brian $
              ----------------------------------------------------

			  
Contents
========
 - What's New
 - Upgrading Windows 98/Me
 - Installing The Motion Control API
     * Windows 2000/XP Installation
     * Windows NT Installation
     * Windows 98/Me Installation
 - Syntax Coloring
 - Contacting Technical Support


What's New
==========

Version 4.3.0
-------------
New features
  - Added new low-level functions to allow aplication control of semaphores - pmclock() / 
    pmcUnlock(), do a command and reply in a single atomic sequence - pmccmdrpyex(),
    and do varaiable lookups safely - pmcvarlookup() (bug #100194).
  - Improved the semaphore handling in the potentially slow MCIs... functions (e.g. 
    MCIsStopped) so that other threads can run when these functions are called with a 
    non-zero timeout.
  - Improved performance of device driver under 32-bit versions of Windows (problem 
    introduced in ver 4.2.0).
  - The following motion controller firmware versions are included in this release:
        MultiFlex PCI:  4.8g
        DCX-PCI300:     3.2a
        DCX-PCI100:     1.0a

Bug Fixes
  - Fixed a bug in MCSpy where the hex mode display was corrupted (bug #100184).
  - Corrected errors in the linux documentation for MCSetVectorVelocity() (bug #100198).
  - Controllers opened in ASCII mode when the controller had been left in hexadecimal 
    display mode would crash the MCAPI, controllers opened in ASCII mode are now forced
    to decimal mode (bug #100202).
  - Installer bugs with 64-bit versions of Windows have been fixed (bugs #100134,  
    and #100197)
  - Fixes for linux kenerl changes so that installer builds under recent Fedora and
    Ubuntu distros
  - Fixed a problem with MCEnableCompare() not correctly disabling the compare operation
    when count was set to -1 (bug #100190).
  - Fixed a problem with 32-bit code crashing on Windows 7 64-bit.


Version 4.2.0
-------------
New features
  - Improved support for Windows 7, including 64-bit versions
  - Improved crash support for developers - easier now to exit frem and restart crashed
    motion apps
  - Improved ASCII download performance for the MultiFlex Ethernet controller
  - Added a timestamp (bug #100056) to MCSpy and enhanced color coding of output
  - Lots of internal improvements
  - The following motion controller firmware versions are included in this release:
        MultiFlex PCI:  4.8a
        DCX-PCI300:     3.2a
        DCX-PCI100:     1.0a

Bug Fixes
  - Fixed a bug in the demo programs where cycling a motor with short fast moves can
    cause the cycle mode to stop (bug #100177).
  - A problem with multi-threaded support that could lead to corruption has been 
    fixed (bug #100174).
    

Version 4.1.2
-------------
New features
  - None
  - The following motion controller firmware versions are included in this release:
        MultiFlex PCI:  4.7a
        DCX-PCI300:     3.2a
        DCX-PCI100:     1.0a

Bug Fixes
  - A work-around for a problem with a race condition in the MultiFlex ASCII interface
    firmware on the controller has been implemented. The race condition can result in 
    erroneous reply values when using using the ASCII interface (bug #100175). This work 
    around should fix any firmware version.


Version 4.1.1
-------------
New features
  - 64-bit device driver is now digitally signed to allow it to install under Windows
    Vista 64-bit editions (bug #100095).
  - Windows pci-bus device driver improvements to allow it to handle PnP rebalance 
    resources requests more gracefully.
  - For OEMs who install the MCAPI being invoking the MCAPI setup in silent mode from 
    within their installation the MCAPI will now do a minimal install - all the drivers
	and DLLs that are needed but no programs, samples, or help files (bug #100173). The
	end user can re-run the MCAPI installer at any time to add these features if desired. 
  - The following motion controller firmware versions are included in this release:
        MultiFlex PCI:  4.7a
        DCX-PCI300:     3.2a
        DCX-PCI100:     1.0a

Bug Fixes
  - Fix for possible data corruption when a multi-threaded application is talking to
    multiple controllers using the same interface type - ASCII or binary (bug #100174).
  - A problem on windows where an application that closes a handle and then re-opens a 
    handle to the same controller would get garbage data for some API functions has been
    fixed (bug #100168).
  - Addressed a problem where invalid handles could cause a program crash instead of a 
    properly handled error (bug #100165).
  - Lot's of improvements in communications reliability with the MultiFlex ETH, including
    detection of dropped connections (e.g. cable pulled).
  - A bug that prevented connecting to the ethernet controller from a 64-bit app running
    on a 64-bit version of Windows has been fixed. You will need to remove any previous 
    ethernet controllers using the control panel applet and then re-add them using the
    control panel applet (bug #100166).
  - Documentation for MCGetJogConfigEx(), MCSetJogConfigEx(), and MCJOGEX were left out of 
    the Windows online Reference (bug #100162).
  - Problems with typeface breakage in the Windows online reference guide were 
    corrected (bug #10061). 
  - An issue with the Visual Studio compiler generating a C4076 warning when using the 
    dynamic linking code for the MCAPI DLL has been fixed (bug #100143).
  - Fixed a problem with opening multiple controllers under Linux.
  - Fixed a problem with semaphore handling under linux.
	
	
Version 4.1.0
-------------
New features
  - Support added for the MultiFlex Ethernet controller.
  - Added support for strobe output mode for the output compare function.
  - The old VB.NET sample and headers have been removed. This code has been marked
    as obsolete ever since the release of the MCAPI .NET Assembly (which supports 
    all .NET languages). If you need the old source you can download an older MCAPI
    or contact PMC (bug #100142).
  - The following motion controller firmware versions are included in this release:
        MultiFlex PCI:  4.5a
        DCX-PCI300:     3.2a
        DCX-PCI100:     1.0a


Version 4.0.5
-------------
New features
  - The following motion controller firmware versions are included in this release:
        MultiFlex:   4.5a
        DCX-PCI300:  3.2a
        DCX-PCI100:  1.0a

Bug Fixes
  - In release 4.0.4 we started installing a copy of the MCAPI .NET assembly to the 
    global assembly cache to make it easier to distribute .NET programs that use the
    MCAPI assembly. Unfortunately, for non-,NET users (the vast majority) the 
    installer would fail if the .NET runtime was not installed. Rather than force
    users to install .NET we have stopped installing to the global assembly cache. The
    MCAPI .NET assembly is still installed to the examples directory and you are free
    to distribute with your application (bug #100132).
  - Fixed problem with broken right-click context menus for MCCL files (bug #100133).

Known Issues
  - During testing of the previous 4.0.4 release a bug in earlier 4.0.x versions of 
    the device driver was found. This bug can sesult in a "blue-screen" during upgrade
    installs of the Motion Control API on Windows. If you get a blue-screen simply
    re-start the PC and re-run the MCAPI 4.0.5 setup, you should be fine. If you still
    have problems you can go to the Windows driver folder (typically
    C:\Windows\SYSTEM32\Drivers) and delete mcapi.sys. Reboot and run setup again.
  - If you have problems uninstalling the Motion Control API on 64-bit versions of
    Windows got to the Windows control panel, select "Add or Remove Programs" and 
    remove from there. We have seen a problem uninstalling on some machines by
    re-running SETUP.EXE.
  - Status interrupts are not supported in this release under 64-bit versions of 
    Windows, nor are they supported in Linux.
  - Unlike Windows, MCAPI handles should not be shared among threads in Linux. This is
    limitation of the Linux getpid() function. Simply open a separate handle for
    each thread.


Version 4.0.4
-------------
New features
  - The .NET assembly is now a signed, strong name assembly (rfe #100099).
  - The .NET assembly is now installed to the global assembly cache instead of
    being left in the "Motion Control" folders under "Program Files" (rfe #100115).
  - Added support to the .NET assembly for MCEnableInterrupts() and updated 
    online help (rfe #100123).
  - A test program, apitest, has been added to the Linux tarball to provide users with
    a more thorough way of validating the MCAPI build on their system (rfe #100126).
  - The following motion controller firmware versions are included in this release:
        MultiFlex:   4.5a
        DCX-PCI300:  3.2a
        DCX-PCI100:  1.0a

Bug Fixes
  - Added a missing gain field to the .NET FilterEx structure (bug #100122).
  - An error in the error return code from MCWaitForIndex() has been fixed
    (bug #100111).
  - A problem with MCGetDigitalIOEx() causing applications to hang or act
    erratically has been fixed (bug #100112).
  - The EnableDigitalIO() method in the .NET assembly was mis-named (the 'MC' 
    prefix was not removed), this has been corrected (bug #100124).
  - The serial port driver was not correctly closing the serial port when the
    API handle was closed (bug #100108).
  - Changes to the Linux kernel beginning with version 2.6.19 broke the mcapi device
    driver, the sources have been changed to build correctly on old or new kernel
    version (bug #100117).
  - A problem with WinCtl double spacing lines when communicating with a DCX-PCI 
    controller is fixed (bug #100094).
  - Clean up of un-necessary code in CWDemo (bug #100098).
  - Fixed a bug in the Windows device driver that could cause a blue screen of 
    death during an upgrade install (#100127).
  - Fixed bug of MultiFlex I/O configuration not working (bug #100128).

Known Issues
  - During testing of the 4.0.4 release a bug in earlier 4.0.x versions of the device 
    driver was found. This bug can sesult in a "blue-screen" during upgrade installs 
    of the Motion Control API on Windows. If you get a blue-screen simply re-start the 
    PC and re-run the MCAPI 4.0.4 setup, you should be fine. If you still have problems 
    you can go to the Windows driver folder (typically C:\Windows\SYSTEM32\Drivers) and 
    delete mcapi.sys. Reboot and run setup again.
  - If you have problems uninstalling the Motion Control API on 64-bit versions of
    Windows got to the Windows control panel, select "Add or Remove Programs" and 
    remove from there. We have seen a problem uninstalling on some machines by
    re-running SETUP.EXE.
  - Status interrupts are not supported in this release under 64-bit versions of 
    Windows, nor are they supported in Linux.
  - Unlike Windows, MCAPI handles should not be shared among threads in Linux. This is
    limitation of the Linux getpid() function. Simply open a separate handle for
    each thread.


Version 4.0.3
-------------
New features
  - The linux driver makefile now supports building the kernel module for any
    installed kernel, previously it would only build for the currently running
    kernel (rfe #100079). See the file INSTALL for details. 
  - Upgraded MultiFlex PCI firmware to version 4.5a (rfe #100084).
  - A QUIT command has been added to the Linux dcxctrl utility so that the user can
    use EXIT or QUIT to exit the utility (rfe #100092).
  - The following motion controller firmware versions are included in this release:
        MultiFlex:   4.5a	**NEW**
        DCX-PCI300:  3.2a
        DCX-PCI100:  1.0a

Bug Fixes
  - Fixed problem of MCGetFilterConfigEx() (and older MCGetFilterConfig()) not
    reporting Low Speed mode correctly (bug #100076).
  - Fixed problem where multiple pathways to hand position deadband and delay at 
    target could result in inconsistent operation (bug #100081).
  - Extended timeout period in Windows device driver for downloading of firmware
    to PCI bus controllers. This fixes a rare problem on heavily loaded industrial
  - Fixed problem with the hyperlink in the standard about box used by the 
    MCAPI components that would cause it to fail to respond when clicked on by
    the user (bug #100061). The hyperlink is now underlined to make it stand out 
    better (rfe #100089).
  - Fixed problem of Borland C++ Builder not reporting correct VERSION INFO in its
    About Box, changed recommended way of calling MCDLG_AboutBox() from Borland C++
    Builder apps (bug #100088).
  - A problem with the OPEN command in the Linux dcxctrl utility would cause it 
    to seg fault if there was no currently open controller, this has been 
	fixed (bug #100083).
  - During testing a memory leak was found in the MCCLose() function under Windows
    (a critical section wasn't getting deleted) this has been fixed (bug #100093).

Known Issues
  - If you have problems uninstalling the Motion Control API on 64-bit versions of
    Windows got to the Windows control panel, select "Add or Remove Programs" and 
    remove from there. We have seen a problem uninstalling on some machines by
    re-running SETUP.EXE.
  - Status interrupts are not supported in this release under 64-bit versions of 
    Windows, nor are they supported in Linux.
  - Unlike Windows, MCAPI handles should not be shared among threads in Linux. This is
    limitation of the Linux getpid() function. Simply open a separate handle for
    each thread.


Version 4.0.2
-------------
New features
  - A preliminary version of html-based documentation has been included for Linux
    users in this release. Linux users will need to have the doxygen utility
    installed (available pre-packaged for most distros) and should run the following
    command in the mcapi library folder:
	    $doxygen doxygen.conf
    This is a work in progress, but is already fairly complete. Eventually this is
    intended to be used as online help on all platforms.
  - MultiFlex firmware upgraded to version 4.3a (rfe #100063).
  - Tweaks to the installer to allow installation on beta versions of Windows
    Vista. Vista is still in beta and we can will only limited support at this time,
    that said MCAPI does install and run on the current Vista beta with only minor
    cosmetic glitches. 
  - The following motion controller firmware versions are included in this release:
        MultiFlex:   4.3a
        DCX-PCI300:  3.2a
        DCX-PCI100:  1.0a
    Note that if you are upgrading from a previous version of MCAPI your controller 
    firmware will not automatically be upgraded. Upgraders can doownload the new
    firmware from the PMC website and install it with the Flash Wizard.

Bug Fixes
  - A performance enhancement to version 4.0.0 broke the automatic setting
    of the capture buffer size on the MultiFlex, DCX-PCI300, and DCX-PCI100 -
    this in turn broke the servo tuning application (bug #100054).
  - The Output Offset (00) mnemonic was missing from the ASCII command tables
    of the MultiFlex and DCX-PCI300, this mainly impacted the command display
    window of MCSpy (bug #100057).
  - The Windows device driver event log code now includes additional useful 
    address information in the data portion of the event, in response to
    bug #100055.
	
Known Issues
  - If you have problems uninstalling the Motion Control API on 64-bit versions of
    Windows got to the Windows control panel, select "Add or Remove Programs" and 
    remove from there. We have seen a problem uninstalling on some machines by
    re-running SETUP.EXE.
  - Status interrupts are not supported in this release under 64-bit versions of 
    Windows, nor are they supported in Linux.


Version 4.0.1
-------------
Bug Fixes
  - A problem with the manifest file that prevented the 64-bit version 
    of the Joystick demo program from running has been fixed (#100030).
  - Internal changes to the memory access functions were made to provide
    better usability for OEMs (#100022 and #100026).
  - Fix about box in title in CWdemo so it's consistent across 32-bit and
    64-bit builds (bug #100029).
  - Information was added to the MCSpy help warning Windows XP 64-bit users 
    that they must use the 64-bit version of MCSpy to debug 64-bit applications,
    and the 32-bit version of MCSpy to debug 32-bit applications (bug #100038).
  - MCSpy (64-bit) shortcut was not being installed in the Motion Control API
    menu on 64-bit systems (bug #100031).
  - 64-bit installs should include the 32-bit version of MCSpy so users can
    Spy on 32-bit apps (bug #100032).
  - Test code was left in the Abort Button method for the C# Demo, breaking 
    the abort processing (bug #100027).
  - C/C++ Demo programs were missing the Visual Studio 2005 project files and
    64-bit manifests, preventing the user from building the 64-bit versions
    of these files (bugs #100040 and #100041).
  - Console demo was missing windows make files which were added to support 
    64-bit builds (bug #100042).
  - Control Panel Applet was not using XP theme on 64-bit installations 
    (bug #100034).
  - Updated Control Panel Applet online help (#100035).
  - For Linux builds the MCAPI version number from the configure.in is now
    used by all the child Makefile.am files, manual changing of this value
    in the makefiles is no longer required (#100043).
  - A problem with stale configuration data corrupting the MultiFlex model
    configuration in certain rare OEM settings has been corrected (#100048).
  - Surrounded some Microsoft specific pragmas so Linux builds with older
    versions of GCC don't generate warnings (#100044, #100045, and #100046).

Known Issues
  - If you have problems uninstalling the Motion Control API on 64-bit versions of
    Windows got to the Windows control panel, select "Add or Remove Programs" and 
    remove from there. We have seen a problem uninstalling on some machines by
    re-running SETUP.EXE.
  - Status interrupts are not supported in this release under 64-bit versions of 
    Windows, nor are they supported in Linux.

Known Issues
  - If you have problems uninstalling the Motion Control API on 64-bit versions of
    Windows got to the Windows control panel, select "Add or Remove Programs" and 
    remove from there. We have seen a problem uninstalling on some machines by
    re-running SETUP.EXE.
  - Status interrupts are not supported in this release under 64-bit versions of 
    Windows, nor are they supported in Linux.
	

Version 4.0.0
-------------
New Features
  - Support for 64-bit versions of Windows and Linux is included in this
    release. Note that status interrupts are NOT supported on 64-bit
    Windows in this release.
  - Support for .NET has been added via the assembly McapiNet.DLL. .NET 
    2.0 and Visual Studio 2005 are required to use this assembly. See the
    included C# demo program for details.
  - A C# demo program has been added. It uses the new McapiNet.DLL .NET 
    assembly for MCAPI.
  - The MCDLG library is now automatically initialized when it is loaded,
    therefore it is no longer necessary to call MCDLG_Initialize() before using
    the library. The MCDLG_Initialize() function call has been left in the DLL
    to support old code that expects to be able to call it (it now does nothing).
  - The internal error handling of the MCAPI has been completely re-worked, 
    resulting in more consistent and usable error reporting.
  - The internal display logic of WinControl has been reworked to speed up
    text display, especially on older PCs.
  - Added MCGetDigitalIOEx(), can read back digital I/O status from 32
    channels at once, or one at a time like MCGetDigitalIO() (BR #121).
  - The C/C++ dynamic linking source code for the MCAPI and MCDLG libraries 
    (mcapi_dl.h/mcapi_dl.cpp and mcdlg_dl.h/mcdlg_dl.cpp) has been reworked
    so that they may also be used on Linux (BR #124).
  - Internally MCAPI now handles functions that require more than one MCCL 
    command, such as reading values from controller memory, more efficiently.
    The result is an approximate 10% speed boost for these functions.
  - The Linux startup script now backgrounds the firmware loading task, allowing 
    systems to boot much faster.
  - Linux driver support has been tweaked to support Suse distros out of the
    box, similar to existing support for Fedora Core.
  - Added a man page for dcxctrl under Linux.
  - The following motion controller firmware versions are included in this release:
        MultiFlex:   4.2a
        DCX-PCI300:  3.2a
        DCX-PCI100:  1.0a
    Note that if you are upgrading from a previous version of MCAPI your controller 
    firmware will not automatically be upgraded. Upgraders can doownload the new
    firmware from the PMC website and install it with the Flash Wizard.

Bug Fixes
  - A bug in pmcrpy() caused MCSpy to incorrectly display the packets read in
    from the controller (packets were decoded as ASCII packets, not binary)
  - A new Linux makefile has been written for the Linux console app that should
    allow the sample to be built more reliably on a wider range of Linux 
    configurations (BR #125).
  - A an MCSpy problem decoding binary commands where one of the commands had 
    a string argument (subsequent commands were incorrectly decoded) has been
    fixed (Bug #100001).
  - The Linux startup script was not starting firmware correctly if more than 
    one controller was installed, dcxctrl was missing a "--board #" option.
  - A problem with initialization of DCX-PCI controllers in fast PCs running
    Linux has been fixed.
  - The Linux MCAPI build wasn't creating unique semphores for each controller,
    this has been fixed (Bug #100002).
  - Changes to the controller device I/O should make the linux port of MCAPI
    more stable and reliable.

Known Issues
  - If you have problems uninstalling the Motion Control API on 64-bit versions of
    Windows got to the Windows control panel, select "Add or Remove Programs" and 
    remove from there. We have seen a problem uninstalling on some machines by
    re-running SETUP.EXE.
  - Status interrupts are not supported in this release under 64-bit versions of 
    Windows, nor are they supported in Linux.


Version 3.5.2
-------------
New Features
  - Configuration DLLs now check to see if the controller firmware reports the recording
    memory size and uses that value if present, otherwise they fall back to the default
    value. This allow the MCAPI to support firmware enhancements to the recording memory
    without requiring an MCAPI change.

Bug Fixes
  - Fixed Delphi (pascal) prototypes for MCGetRegister() and MCSetRegister()
 

Version 3.5.1
-------------
New Features
  - Modified pmcgetramex() and pmcputramex() to move data 4 bytes at a time as
    much as possible, greatly speeds up transfers over
    external buses (such as ethernet). Previously both functions moved data one
    byte at a time.
  - Build is from shared Windows/Linux source tree, Linux package to be co-released
    at the same time
	
Bug Fixes
  - Fixed Delphi (pascal) prototypes for pmccmdex() amd pmcrpyex() (BR #119)
  - Fixed MCPanel's (control panel applet) configuration handling for the optional
    TCP/IP interface driver (was conflicting with other experimental drivers).


Version 3.5.0
-------------
New Features
  - Many of the new features in this release require firmware version 2.8a or higher
    for the MultiFlex controllers. If you do a fresh install (no previous MCAPI) the
    new firmware will be installed for you. If you upgrade a previous install the
    installer will NOT automatically upgrade your firmware. Upgraders should obtain
    the firmware update from the PMC website (www.pmccorp.com) and upgrade their
    firmware using Flash Wizard.
  - Added functions MCGetVelocityOverride()/MCSetVelocityOverride() to allow
    easy access to the velocity override parameter without use the MCCONTOUR 
    structure.
  - Added fields to the MCFILTEREX structure to support the Output Deadband (OB) and
    Output Offset (OO) commands (BR #69, #70).
  - Added fields to the MCFILTEREX structure to support the Position Deadband (DB) and
    Delay At Target (DT) commands.
  - the new parameters/commands mentioned above have been incorporated into the
    servo/stepper dialog boxes and into the save/restore axis settings functions
  - The header and source files used for dynamic linking have been renamed to
    mcapi_dl.h, mcapi_dl.cpp, mcdlg_dl.h, and mcdlg_dl.h to allow them to more
    easily co-exist with the standard headers.
  - The joystick demo program now uses dynamic linking and demonstrates how to
    dynamically link a C/C++ program to the Motion Control API. Dynamic linking
    allows for runtime detection of the library, version specific fallbacks, and
    makes it easy to create apps that are backwards compatible with earlier releases
    of the MCAPI.
  - The scaling dialog of the Motion Dialogs library now accepts the MCDLG_CHECKACTIVE
    flag and will not allow scaling changes if this flag is specified and the the axis
    is enabled (scaling should only be changed with the motor off).
  - The MCDLG_RestoreAxis() function can now check to see if a motor is enabled and
    skip initialization if it is. This functionality is invoked by including the flag
    MCDLG_CHECKACTIVE when calling MCDLG_RestoreAxis() and is recommended.
  - Improved performance of WinCtl when downloading files.
  - The CWDemo, CWDemo_Int, BCBDemo, PasDemo, VBDemo, and VBDemo.net demo programs
    no blank the follwoing error display when operating with open loop stepper
    motors (which have no following error)
  - The demo programs that supported saving and restoring the motor parameters to the
    MCAPI.INI file have a new menu option to load the parameters from the INI file
    once (The current option sets a flag and reloads the parameters every time the
    program starts)

Bug Fixes
  - Two header files, plot.h and plotconfig.h, were missing from the joystick demo
    source code (BR #117).
  - The online help description for MCDLG_DownloadFile() did not specify that the 
    handle to this function has to be opened in ASCII mode (BR #110).
  - A potential buffer over-run bug when downloading firmware to a controller has
    been fixed (BR #116).
  - A bug in the MCGetCount() function when querying capture count is fixed (BR #118)
  - Cleaned up a number of typos in the online help samples.


Version 3.4.2
-------------
New Features
  - The installer will now automatically upgrade a previous MCAPI install (version
    3.0 or later), it no longer requires you to uninstall the previous version
    first. Note that if you are upgrading from MCAPI version 2.23 or earlier you
    should still uninstall the earlier API, remove the motion controller from your
    PC, and then follow the new installation instructions for your OS (below).

Bug Fixes
  - Occasionally if the only controller in a system was removed the Motion Control
    Panel applet would still show it as installed after a reboot, this has been
    fixed (BR #106).
  - Changed the Motion Control Panel "Remove" button so it is only enabled for
    non-pcbus interfaced controllers on all operating systems except NT4,
    everyone but NT4 now uses Windows plug-and-play for pc-bus installs and
    removals, not the control panel applet (BR #107).
  - Fixed occasional problem with low-level driver and status interrupts that
    would cause first interrupt to return corrupted values (BR #108).
  - Return type for MCEnableInterrupt() in MCAPI32.BAS was missing (BR #109).
  - Added warning to MCDLG_DownloadFile() online help that this function 
    requires an ASCII handle (BR #110).
  - Modified MCEnableCompare() to accept any numeric parameter instead of just
    one or zero - in some compare modes it needsd to accept a value that was
    equal to the number of points in the compare buffer (BR #112).
  - Fixed MCGetCount() to correctly return compare count (BR #113).
  - Corrected MCConfigureCompare() to properly reset the compare prior to 
    writting new compare parameters (BR #114).
  - Updated capture and compare online help to reflect bug fixes (above).
  - Numerous small bug fixes to the VB.NET sample and header files, see file
    comments for specifics.


Version 3.4.1
-------------
New Features
  - MCSpy now color codes control characters (new lines, carriage returns, etc.) 
    when capturing data in ASCII mode. This allows the user to discern a true 
    control character such as a line feed (\n) from the string "\n". This change
    makes it easier to verify that all MCCL comand lines end with a proper 
    carriage return (\r) or line feed (\n) character (BR #93).
  - The MCOEM32.DLL DLL has been eliminated for default configurations and is now
    only needed if an OEM has provided special configuration settings. This will
    make it easier for OEMs to manage the MCOEM32 DLL (BR #98).

Bug Fixes
  - The descriptions for pmcputs() / pmcgets() have been updated in the MCAPI 
    Reference online help (BR #92).
  - Fixed a bug in the code that converted MCCL opcodes to ASCII that caused
    Opcodes greater than 295 to be incorrectly decoded. This bug caused a rare
    problem (mnemonics affected are rarely used and mostly impacted the  MCSpy
    utility) (BR #94).
  - The learn button in the joystick demo program was not adding markers to the
    plot window like the joystick button #1 does, it has been fixed (BR #95).
  - There was a problem in version 3.4.0 getting the DC2 to work with WinControl in
    some cases. This has been fixed (BR #96). 
  - A bug in the low-level device driver for Windows NT4 could cause the driver to
    appear to load correclty but fail to allow communications with the controller,
    this has been fixed (BR #97).
  - A bug in the low-level driver for NT4 that prevented proper operation with the 
    DC2-PC controller was fixed (BR #99).
  - Fixed a problem under Windows NT4 where the driver was not getting put into 
    auto start mode following a successful controller configuration. This made it
    impossible for any user without administrator priveleges to start a MCAPI
    application (BR #100).
  - Corrected a configuration problem under NT4 where an ISA-Bus controller 
    configured at a non-default address would have its address reset to the default 
    when opened by the Motion Control control panel applet (BR #101).
  - A problem with calling MCReset() when both ASCII mode and Binary mode handles are
    open (the MCAPI would lock up) has been fixed (BR #102).
  - On Windows NT4 you recent versions of the MCAPI have required you to re-boot after 
    configuring a new controller. This has been fixed and the re-boot is no longer
    required (BR #103).
  - Fixed a bug where the MCAPI was reporting too many available general purpose
    analog output channels on the MFX-PCI. The MFX-PCI includes the servo control
    analog outputs in its channel count, the MCAPI now subtracts the servo outputs
    from the total to arrive at the number of general purpose outputs (BR #104).
  - In the Joystick demo program the front panel display button for the Y-Axis was
    changing the X-Axis description


Version 3.4.0
-------------
New Features
  - MCSpy now uses dynamic linking to allow it to work on older versions of
    the MCAPI (may be used on systems with MCAPI version 2.20 or later).
  - The joystick demo program has an improved interface with easier access
    to display settings and better graphics.
  - The C-Language dynamic linking files have been re-worked to make them
    provide additional compile-time diagnostic information and to work
    better with MFC / ATL / WTL programs.
  - The C-Language header files have been enhanced to better support
    LabWindows/CVI programming.
  - Separate semaphores for the ASCII and the Binary interface are now
    used by MCAPI to improve performance of applications that use 
    multiple controller interfaces (BR #9).
  - The Pos and Status utilities now use dynamic linking and will work with
    versions of the MCAPI as old as 3.0.0.
  - The Pos utility can now display data from multiple controllers at once
    and also offers multi-column display modes (1, 2, or 4 columns).
  - Added support for position recording "recording interval" and "delay"
    commands to the DCX-AT200, requires latest DCX-AT200 firmware (BR #83).
  - A new sample program for the Visual Basic .NET language has been added,
    as have Visual Basic .NET include files MCAPI32.VB and MCDLG32.VB
    The new sample may be found in the Sources\VBDemo.NET folder in the MCAPI
    installation folder.
  - A new sample program for the Borland C++ Builder development platform
    has been added, the new sample may be found in the Sources\BCBDemo
    folder in the MCAPI installation folder.
  - The MCAXISCONGFIG and MCPARAMEX structures have been extended with
    additional system configuration fields.
  - An extended version of the get and set analog functions - MCGetAnalogEx()
    and MCSetANalogEx() - have been added to make it easier for Visual Basic
    programs to work with analog inputs and outputs (BR #72).
  - The function MCEnableEncoderFault() was added to support the encoder fault
    detection feature of the Multiflex controllers (BR #74).
  - The function MCgetVelocityActual() was added to support the reading of 
    the instantaneous actual velocity of an axis (BR #82).
  - Extended version of pmcgetram() and pmcputram() (pmcgetramex()/pmcputramex())
    were added to allow access to the full 32-bit address space of newer
    motion controllers.

Bug Fixes
  - Fixed a bug in Windows 98/ME where removing a motion controller from the
    device manager could lead to a Blue Screen of Death - BSOD (BR #86).
  - Fixed bug introduced into the JoyDemo program in release 3.3.0 where for
    controllers other than the MFX-PCI1000 the displays would remain blank.
    Changing the error checking to use the return value of the MCGetStatusEx()
    call fixes the problem (BR #79).
  - A bug in the low-level MCAPI routines that could cause a large reply to
    be truncated has been fixed (affects all controller models except the
    DC2), this is only a problem for programs that use the low-level
    interface (BR #85).


Version 3.3.0
-------------
New Features
  - Added support for MFX-PCI 1000-series Motion Controllers.
  - Improvements to firmware loading of PCI controllers during Windows 98/ME.
    startup (now similar to Windows NT/2000/XP), MCSTART.EXE no longer required.
  - All controllers (except RS232 and GPIB) now installed via the Windows Add
    New Hardware on Plug-and-Play versions of Windows (everything but NT4).
  - Added additional Visual Basic samples to online help (BR #37-#41).
  - The MCSpy Utility (helpful for debugging motion control programs) is now
    included with the MCAPI (installed with the development component).
  - New functions MCGetStatusEx() and MCDecodeStatusEx() to provide support for
    the new status word layout on the DC4-PCI6xx. These functions are backward
    compatible with existing controllers. Also added status word constants
    MC_STAT_PRI_ENC_FAULT, MC_STAT_AUX_ENC_FAULT, MC_STAT_LOOK_AUX_IDX, and
    MC_STAT_AUX_IDX_FND.
  - Added MCEnableInterrupts() for status word interrupts on MFX-PCI.

Bug Fixes
  - Fixed problem with functions that use extended commands (BR #15).
  - Added additional precision to values stored by MCDLG_SaveAxes() so
    that very small values are saved correctly (BR #23).
  - The Output Deadband mnemonic was incorrectly specified in the MCCL.H
    file for DCX series controllers - was OD, now correct as OB (BR #29).
  - Fix for problem with endless loop in select controller dialog on
    PasDemo (BR #31).
  - Fixed error message reporting in VBDemo during select controller
    dialog where no error code was being shown (BR #32).
  - Fixed error message formatting in PasDemo (BR #33).
  - Updated MCAPI reporting of MC360 stepper rates to match current
    product specs (MC362 was already current).
  - Fixed prototype for MCWaitForIndex() in VB and Delphi headers, online
    help (BR #35).
  - Fixed online help formatting (missing tabs) of MCDLG_ControllerInfo() and
    MCDLG_SelectController() (BR #30).
  - Typo's corrected in the online help C/C++ Digital I/O Sample (BR #55).
  - Typo's corrected in the online help C/C++ Capture Data Sample (BR #56).


Version 3.2.1
-------------
New Features
  - Web link added to About Box of sample programs (BR #8).

Bug Fixes
  - Phase selection box in stepper setup dialog (MCDLG_ConfigureAxis()) is
    now enabled for MC360 steppers in closed loop mode (BR #1).
  - Missing prototype for MCSetTorque() has been added to MCAPI.BAS (BR #3).
  - Error in prototype for MCGetCaptureData() corrected in MCAPI.BAS (BR #4).


Version 3.2.0
-------------
New Features
  - Support for MC302 (dual servo) and MC362 (dual stepper) modules.
  - Support added for setting commutation parameters on the MC320 module.
  - New Status panel utility provides full graphical decoding of the status
    word on any axis.
  - Added functions MCEdgeArm(), MCIsEdgefound(), and MCIsIndexfound() to help
    simplify homing of steppers and servos.
  - Closed loop stepper support on DCX-PCI300 and DCX-AT300, including functions
    to set/get module input mode (MCGetModuleInputMode() / MCGetModuleInputMode()).
  - The MCDLG_ConfigureAxis() function supports closed-loop stepper parameters.
  - MCDLG_RestoreAxis() and MCDLG_SaveAxis() now include the integral option and 
    input mode parameters, as well as closed-loop stepper parameters.
  - Support in API and MCDLG for integral option setting on advanced controllers.
  - PasDemo and VBDemo are now identical in feature and operation to the CWDemo
    sample. The ability to select a controller and auto-initialize a motor's
    settings was added to PasDemo and VBDemo.
  - CWDemo, VBDemo, and PasDemo now only set an axis to Position Mode if they
    can't verify the axis is already in Position Mode (uses new MCGetOperatingMode()
    function), making them more useful (fewer unintended consequences) when other
    motion programs are running.

Bug Fixes
  - MCIndexArm() support was fixed for the DCX-PCI100 and DCX-PC100 controllers.
  - An error in MCIsDigitalFilter() when called with the axis number set to
    MC_ALL_AXES has been corrected.
  - An error in the definition of the MCParamEx data structure in MCAPI32.BAS has
    been corrected (the CanChangeRates field had been incorrectly omitted).
  - MCDLG_RestoreAxis() will return an error (MCERR_NOT_FOUND) if data for the
    specified axis cannot be found.


Version 3.1.0
-------------
New Features
  - Support for the PCI-Bus DCX-PCI100 added.
  - Improved multi-threading support for multiple controllers, provides better
    throughput in a multi-threaded / multi-controller applications.
  - Support for the invert limits flag on the DCX-PC100 (ISA-Bus) added.
  - Added support functions for the Digital Filter mode of MC300 series servo
    modules.
  - Added functions for the high speed capture and compare modes of MC3xx series
    modules.
  - CWdemo and WinCtl will now restore controller settings if Auto-Initialize is
    selected and a Reset is performed (using the menu option).

Bug Fixes
  - Further improvements to the DCX-PCI300 firmware download under Windows 98.
  - Improved handling of the DCX-PCI reset to ensure reset has completed before
    programs may proceed.
  - Improved handling of legacy bus controllers under Windows 98 (DCX-AT, DCX-PC).
  - Many corrections and editions to Online Help, improved formatting.


Version 3.0.2
-------------
New Features
  - Improved support for the DCX-PCI300 under Windows 98 / Windows Me.
  - MCAPI driver now logs any errors to MCAPI.LOG (located in the \Windows
    folder) under Windows 98 / Windows Me. It continues to log errors in
    the Event Log for Windows NT/2000.
  - The Installation Program now allows you to install the MCAPI for all
    users under Windows NT/2000.

Bug Fixes
  - MCBlockEnd() was returning MCERR_CONTROLLER when it should have been
    returning MCERR_NOERROR.
  - The new controller wizard would fail to run on Windows NT 4 if that
    had not had an updated copy of Internet Explorer installed.


Version 3.0.1
-------------
New Features
  - Full support for Windows 98, Windows Me, Windows NT, and Windows 2000.
  - Startup menu group program MCStart auto-starts PCI cards under
    Windows 98.

Bug Fixes
  - DCX-PCI300 configuration info was incorrectly reporting the on-board analog
    input channels as four, should have been zero (fixed).
  - Control Panel works correctly under all platforms.


Version 3.0.0
-------------
New Features
  - This version provides support, including Plug and Play, for the new
    PCI-Bus DCX-PCI300 controller.
  - A new extended version of MCGetConfiguration() - MCGetConfigurationEx()
    provides more complete controller configuration information.
  - A function to report static motor axis configuration -
    MCGetAxisConfiguration() has been added.
  - Extended versions of the controller/module description functions have been
    added to the Motion Dialog package.
  - The LED window from the Motion Dialog package has improved drawing code and
    should work better with non-standard (i.e. custom) color schemes.
  - Supports Windows NT4/2000/XP (current beta).
  - This version supports the Plug and Play DCX-PCI300 controller.
  - CWDemo's auto-display precision calculation has been improved and will
    now detect scaling changes without having to restart the program.
  - WinControl supports dragging and dropping of command files.
  - The command line interface of WinControl has been improved and can
    display auto-started command files as they are being processed.
  - Support for 16-bit programming and Windows 3.1 has been dropped - those
    users should continue to use version 2.23.


Upgrading Windows 98/Me
=======================
There is a bug in versions of the Motion Control API older than 3.4.0 that can
lead to a blue-screen if you attempt to uninstall a motion controller. To avoid
the bug and allow the uninstall to complete please use the follwing sequence:
  - Shut the PC down and remove all motion controllers (this will prevent the
    low-level driver from loading.
  - Boot the PC and use the add/remove programs applet in the Windows Control 
    Panel to remove the Motion Control API
  - Restart the PC to complete the un-install
  - Follow the instructions below to install the new MCAPI for Windows 98/Me


Installing The Motion Control API
=================================
NOTE: This version of the Motion Control API (MCAPI) changes the manner in which
legacy ISA-bus controllers are installed. If you are upgrading from an previous
version it is recommended that you use the Motion Control applet in the Windows
Control Panel to uninstall any existing ISA-Bus motion controllers.

It is recommended that you install the Motion Control API before you install
any motion control cards in your PC. Running the Add Hardware wizard with a 
legacy (ISA-bus) Motion Controller already installed may prevent Windows from 
correctly detecting available PC resources, such as shared memory addresses.


I. Installing the Motion Control API Software
---------------------------------------------
  1.  Launch the Setup program located in the folder that contains the MCAPI, if
      you are installing from the MotionCD select Install from the menu to launch
      Setup.
  2.  Setup may prompt you to restart the PC if it was necessary to update the
      Windows Installer software on your PC. You must restart to continue the
      installation, Setup will automatically restart when the PC has restarted.
  3.  Accept the License Agreement to proceed (required).
  4.  Enter your user information (optional).
  5.  Select either the Complete (automatic) or Custom (manual selection)
      installation type. Complete is recommended.
  6.  Near the end of the installation on Windows 98/Me Setup may prompt you with one
      or more "Insert Disk" dialogs for MCAPI driver related files - simply click OK
      to proceed.
  7.  Click Finish to complete the Software installation.


II. Installing a PCI-Bus Motion Controller in Windows XP/2000/Me/98
-------------------------------------------------------------------
  1.  Shut down your PC, on newer PCs you should also unplug the AC Power cord.
  2.  Install the motion controller in an unused slot.
  3.  Reconnect AC Power (if necessary) and boot the computer.
  4.  Windows should automatically detect the controller and find the driver
      installed earlier. If windows prompts for installation options select
      the "Automatic" option.
  5.  Windows 98/Me may prompt for the location of the driver files. MCAPI installs
      copies of the device driver and Motion Controller firmware in a sub-folder
      named "Drivers" in the main MCAPI installation folder. If you installed MCAPI
      using the default settings, that location would be (for English language PCs):

	C:\Program Files\Motion Control\Motion Control API\Drivers

      The MCAPI Setup program should have already added this path to the list of
      recently used locations, allowing you to select it easily from the list.


III. Installing an ISA-Bus Motion Controller in Windows Me/98
-------------------------------------------------------------
  1.  If the motion controller is already installed in your PC shut down the PC, on
      newer PCs you also should unplug the AC Power cord. REMOVE your motion controller
      from the PC. Running the Add Hardware wizard with a legacy (ISA-bus) Motion
      Controller already installed may prevent Windows from correctly detecting
      available PC resources, such as shared memory addresses.
  2.  From the Windows Start Menu select Settings | Control Panel.
  3.  Double click on the "Add New Hardware" icon in the Control Panel.
  4.  Select Next to begin the Wizard.
  5.  Select Next again to start the search for new hardware.
  6.  The wizard will then prompt to search for non Plug-and-Play
      hardware. Select the "No, I want to select the hardware from a list" option
      on the Wizard and click Next to continue.
  7a. If this is the first controller you are installing select "Other Device" from
      the list of device classes (types), otherwise proceed to 6b below. Locate and
      select Precision MicroControl in the list of Manufactures. Select your Motion
      Controller model from the list of models. Skip to step 8.
  7b. If you have already installed a Motion Controller using this version of the
      MCAPI there should be a an entry in the device classes (types) list for 
      "Motion Control." Select it and click Next to view the list of Motion
      Controllers. Select your Motion Controller model from the list of models.
  8.  If the default settings for memory or I/O resources are not acceptable Windows
      will present a suggested range. These non-default settings will require jumper
      or rotary switch position changes on the Motion Controller itself. See your
      User's Manual for specifics.
  9.  Click Next then click Finish to complete the Wizard.
 10.  Shut down the PC (the Wizard may do this for you), on newer PCs you also should
      unplug the AC Power cord. Change the jumpers or rotary switch on the Motion
      Controller (if necessary) and install the card in an available ISA slot. Reboot.


IV. Installing an ISA-Bus Motion Controller in Windows XP/2000
--------------------------------------------------------------
  1.  If the motion controller is already installed in your PC shut down the PC, on
      newer PCs you also should unplug the AC Power cord. REMOVE your motion controller
      from the PC. Running the Add Hardware wizard with a legacy (ISA-bus) Motion
      Controller already installed may prevent Windows from correctly detecting
      available PC resources, such as shared memory addresses.
  2.  From the Windows Start Menu select Settings | Control Panel.
  3.  Double click on the "Add/Remove Hardware" icon in the Control Panel. NOTE that
      this is named simply "Add Hardware" in Windows XP.
  4.  Select Next to begin the Wizard.
  5.  Select the "Add/Troubleshoot device" option (default) and click Next
      to continue.
  6.  Wizard will scan for Plug-and-Play devices and then present you with the "Choose
      Hardware Device" screen. Select "Add a New Device" and click Next to continue.
  7.  Select the "No, I want to select the hardware from a list" option
      on the Wizard and click Next to continue.
  8a. If this is the first controller you are installing select "Other Device" from
      the list of device classes (types), otherwise proceed to 7b below. Locate and
      select Precision MicroControl in the list of Manufactures. Select your Motion
      Controller model from the list of models. Skip to step 9.
  8b. If you have already installed a Motion Controller using this version of the
      MCAPI there should be a an entry in the device classes (types) list for 
      "Motion Control." Select it and click Next to view the list of Motion
      Controllers. Select your Motion Controller model from the list of models.
  9.  If the default settings for memory or I/O resources are not acceptable Windows
      will present a suggested range. These non-default settings will require jumper
      or rotary switch position changes on the Motion Controller itself. See your
      User's Manual for specifics.
 10.  Click Next then click Finish to complete the Wizard.
 11.  Shut down the PC (the Wizard may do this for you), on newer PCs you also should
      unplug the AC Power cord. Change the jumpers or rotary switch on the Motion
      Controller (if necessary) and install the card in an available ISA slot. Reboot.


V. Installating Motion Controllers (all) in Windows NT4
-------------------------------------------------------
  1. Shut down your PC, on newer PCs you should also unplug the AC Power cord.
  2. Install the motion controller in an unused slot
  3. Reconnect AC Power (if necessary) and boot the computer
  4. Navigate to the windows Control Panel and double-click on the Motion Control
     applet.
  5. Click on the "Add..." button in the Motion Control applet and follow the
     wizard to install the drivers for your controller


Syntax Coloring
===============
The Motion Control API includes a keyword file for use with Microsoft's
Developer Studio/Visual Studio User Defined Keyword highlighting feature. User
Defined Keyword highlighting permits you to easily identify specific keywords
in source code files. The included keyword file contains all of the MCAPI C/C++
function names and constants.

To enable syntax highlighting first exit Developer Studio or Visual Studio, if
it is running. Next locate the MCAPI file USERTYPE.DAT. By default USERTYPE.DAT
is installed in \PROGRAM FILES\MOTION CONTROL\MOTION CONTROL API\SOURCES. Copy
this file to the same directory where Developer Studio executable MSDEV.EXE or
DEVENV.EXE is installed:

   Dev. Studio Version 5.0 ('97)    \PROGRAM FILES\DEVSTUDIO\SHAREDIDE\BIN
   Dev. Studio version 6.0          \PROGRAM FILES\MICROSOFT VISUAL STUDIO\COMMON\MSDEV98\BIN.
   Visual Studio .NET 2003          \PROGRAM FILES\MICROSOFT VISUAL STUDIO .NET 2003\COMMON7\IDE

NOTE: if you already have a USERTYPE.DAT file installed for Developer
Studio 97 you may use a text editor to merge the MCAPI USERTYPE.DAT keywords
with your existing USERTYPE.DAT keyword file.

By default Developer Studio 97 highlights user defined keywords using the same
color that it uses for language keywords (blue). To make the user defined
keywords stand out select Tools | Options from the Developer Studio menu bar.
Click on the Format tab and in the Colors box select User Defined Keywords. Use
the Foreground and Background options to select unique colors for the user
defined keywords.


Contacting Technical Support
============================
Technical support contact information is included in the online help files
supplied with the Motion Control API. 
