Recent ZBasic Library Revision History

v4.0.2 - 09 May 2012
--------------------------
- Corrected a potential issue in a low-level console output routine.


v4.0.1 - 30 April 2012
--------------------------
- Added support for low-level SPI operations and packed date/time routines.


v4.0.0 - 16 April 2012
--------------------------


v3.4.4 - 26 March 2012
--------------------------
- Corrected an issue in zbStrCopy where assignment could fail for BX strings
  and fixed-length strings if the first two characters happened to match.

- Corrected a problem in the bootloader code for devices having 64K or more of Flash.

- Corrected an issue with GetADC() on xmega devices with more than 8 analog inputs.


v3.4.3 - 16 January 2012
--------------------------
- Corrected the definition of the microtime structure for the xmega since the
  RTC timer is 16 bits wide in that case.

- Extensive renaming of structures, functions, variables and definitions so that
  all publicly visible identifiers begin with zb (optionally preceded by one or
  more underscores).  Note that this version requires compiler version v3.4.2
  or later.


v3.4.2 - 24 October 2011
--------------------------
- Corrected an "out of range" link error that could occur on devices
  with multiple hardware UARTs.


v3.4.1 - 18 September 2011
--------------------------
- Corrected the section flags on the Flash writing routines so that
  they get written to the .hex file when not using a bootloader.

- Changed the values of the bootloader entry points to byte addresses.
  They were formerly word addresses as were the flash writing entry points.

- Modified the ISRs for the hardware UARTs to utilize a common epilogue.


v3.4.0 - 10 September 2011
--------------------------
- Added support for generic target devices.

- Added support for setting the sleep mode in the CPUSleep() invocation.

- Corrected a problem in the xmega PWM implementation where a bit in
  the mode parameter of OpenPWM() was being used inversely.


v3.3.2 - 28 May 2011
--------------------------
- Corrected a problem with HW SPI setup on the xmega devices.


v3.3.1 - 18 May 2011
--------------------------
- Corrected a problem with A/D conversion on the xmega devices.


v3.3.0 - 05 March 2011
--------------------------
- Added the ability to specify a particular Com channel for Debug.Print,
  Console.Write, Console.WriteLine, Console.Read and Console.ReadLine.

- Modified the low level X-10 code to allow specifying the zero-crossing
  interrupt.  For VM devices, the choice is limited to INT0 and INT2.  For
  native mode devices any external interrupt may be used.

- Added support for using alternate SPI and I2C hardware on xmega devices.

- Added support for software-based SPI (native mode devices only).

- Corrected a problem with initializing the receive pin for xmega UARTs.


v3.1.1 - 29 November 2010
--------------------------
- Corrected a problem in string concatenation that could arise when combining
  a zero-length string with string of non-zero length.


v3.1.0 - 09 July 2010
--------------------------
- Added support for xmega-based devices.

- Modified OpenCom() for the SW UART channels so that if either the rx or tx
  queue is null corresponding pins are not configured.


v3.0.6 - 14 June 2010
--------------------------
- Re-build due to a possible problem with SW UART inverted mode for the ZX-128ne.


v3.0.5 - 28 May 2010
--------------------------
- Corrected an out-of-range error in the WaitForInterrupt() code for the ZX-1280n.


v3.0.4 - 10 May 2010
--------------------------
- N.B. Version v3.0.6 or later of the ZBasic Compiler is required for this version.

- Corrected a problem with the software UART inverted mode that was introduced
  in v3.0.0.


v3.0.3 - 24 February 2010
--------------------------
- Corrected some problems with InputCapture() for mega1284P-based devices.


v3.0.2 - 16 February 2010
--------------------------
- Corrected a defect where the wrong I/O pin was being made an output for
  PWM8() on the mega328P-based devices.

- Corrected a problem in InputCapture() where some input segments equal to or
  slightly longer than the timer full-count period would be stored as a small
  width.  The corrected code now stores such segments as an overflow.  Also, an
  input segment having the length of &Hfffe units (the "no data" value) wasn't
  being stored as an overflow.

- Corrected a defect that could cause ProgMem writes to fail on native mode
  devices with more than 64K of Flash memory.


v3.0.0 - 01 February 2010
--------------------------
- Added support for ZBasic Object Extensions

- Added support for serial channel flow control.

- Added support for MemFind() and progMemFind().

- Added a bit in the return value of StatusCom() to indicate a SW UART channel.

- Corrected a problem where the task status wasn't being updated properly
  when a task was suspended.


v2.7.6 -  06 November 2009
--------------------------
- Corrected a problem where setting up a task to await a pin change interrupt
  would disable a pin change interrupt set up by another task.


v2.7.5 -  30 September 2009
--------------------------
- Corrected a problem in taskPause() where RTC ticks were being counted
  instead of RTC timer ticks as it should have been.

- Modified defineCom() so that invocation with the 'stopBits' parameter larger
  than the maximum results in 1 stop bit, matching the documentation.


v2.7.4 -  16 June 2009
--------------------------
- Added support for the ZX-328nu.

- Corrected a problem with the internal code used to implement StatusQueue()
  and similar queue access routines.

- Modified the task switching code to avoid problems with high speed serial
  I/O on the software UART channels.


v2.7.2 -  23 May 2009
--------------------------
- Added support for low level X10 "end of command" status.

- Added ResetX10() used to selectively reset X10 status bits.


v2.7.1 -  07 May 2009
--------------------------
- Added support for collision detection and CM15A AGC to the low level X10 routines.


v2.7.0 -  08 April 2009
--------------------------
- Added support for SearchQueue().

- Added support for half duplex and bussed Tx line in the software UART.

- Corrected a problem in strCopy() which would occur when assigning an
  allocated string to itself.


v2.6.4 -  05 January 2009
-------------------------
- Added support for the ZX-328n.

- Added support for GetDayNumber(year, month, day)

- Corrected atomicity issues in rnd() and randomize().


v2.6.3 -  19 November 2008 
-------------------------
- Corrected a potential interrupt timing error in the GetMicroTime() implementation.


v2.6.2 -  03 November 2008 
-------------------------
- Modified OpenCom() to first close the specified channel.

- Corrected a few problems with conversion between day numbers and year/month/day.


v2.6.1 -  03 October 2008 
-------------------------
- Added support for higher resolution timing routines.


v2.6.0 -  15 September 2008 
-------------------------
- Changed the minimum heap size to 40 bytes from 64 bytes.

- Corrected a problem in the task initialization code that sometimes caused
  task stack initialization to fail thus causing TaskHeadRoom() to not work.


v2.5.7 -  10 August 2008 
-------------------------
- Added code to prevent writes to Com channel receive queues and reads from
  Com channel transmit queues.

- Added getPortMask() and getPinAddress() functions to support PortMask()
  and Register.Port(), Register.Pin() and Register.DDR() functions in ZBasic.


v2.5.5 -  15 July 2008 
-------------------------
- The entry taskHeadRoom() was missing from the native mode libraries.

- Corrected an error with setting up the watchdog timer with delays 8 and 9.

- Corrected a problem with setting up an A/D conversion for channels 0-7
  on devices with 16 channels.


v2.5.4 -  14 July 2008 
-------------------------
- Corrected an error in cmdI2C() that could cause HW I2C operations to fail.

- Added support for the SPI pins (MISO, MOSI, SCK) for all ZX devices that
  don't use external Program Memory since they can be used for general I/O.


v2.5.3 -  09 July 2008 
-------------------------
- Added support for 8-bit PWM.

- Corrected some function prototypes in zxlib.h that were causing warnings.


v2.5.2 -  27 June 2008 
-------------------------
- Added support for pins B.4 through B.7 for the ZX-24ne.


v2.5.1 -  26 June 2008 
-------------------------
- Corrected a problem with the low level X-10 functions (OpenX10(), etc.)


v2.5.0 -  16 June 2008 
-------------------------
- Added support for GetQueueSpace().

- SPI enhancements:
    added slave mode and CloseSPI()
    added support for an optional delay before each received byte on SPICmd()

- I2C enhancements:
    added slave mode

- Improved the performance of writes to EEPROM.

- Added support for generation of ZX object code archives.

- Fixed an internal linkage problem in code related to the software UARTs.

- Corrected an initialization problem where the RNG seed was always zero.


v2.4.8 - 10 March 2008
-------------------------
- Initial public release.

- Corrected a problem where DefineCom() on Com1 didn't work.


v2.4.7 - 20 February 2008
-------------------------
- Corrected a problem in the routines that perform value-to-string
  conversion for 32-bit integral values.

- Corrected a problem with the routine that implements SerialNumber().

- Modified the code for System.TaskHeadRoom() to use less stack space
  when invoked for the current task.


v2.4.6 - 10 February 2008
-------------------------
- Fixed a problem with handling the ATN character.

- Corrected code generation problems related to accessing 32-bit values in
  Persistent and Program Memory.


v2.4.4 - 08 February 2008
-------------------------
- Initial release.
