Recent ZBasic Library Revision History v4.3.5 - 08 Mar 2019 -------------------------- - Fixed an issue with the code that implements GetDayOfWeek(). v4.3.4 - 24 Sep 2018 -------------------------- - Fixed an issue with Net.Timeout(), affecting the ESP8266 only. - Fixed a bug in the support function for OpenPWM() that caused a register to be trashed that should have been preserved. This issue only affected non-xmega AVR devices. - Modified the getADC() function to support direct ADC channel indexing for ZBasic Arduino targets. v4.3.3 - 20 Jan 2016 -------------------------- - Fixed an issue that caused zxCmdMode() to not work unless an ATN character was specified. v4.3.2 - 09 Dec 2015 -------------------------- - Added support for mega48PB, mega88PB, mega168PB and mega328PB devices. - Fixed an issue with the size of timer OCR register types (affects xmega only). v4.3.1 - 11 September 2015 -------------------------- - Added support for ESP8266 devices and ZBasic-Arduino devices. v4.3.0 - 26 February 2015 -------------------------- - Added support for clock prescalers. v4.2.6 - 09 February 2015 -------------------------- - Corrected an issue with software serial channels that would arise when configured for multiple channels and the first channel opened was slower than the maximum speed. - Corrected a problem with queue initialization when the buffer size is 10 bytes. v4.2.5 - 02 July 2014 -------------------------- - Corrected an issue with DAC configuration on xmegaU devices, e.g. ZX-24u. v4.2.4 - 15 January 2014 -------------------------- - Corrected an issue for xmega devices that prevented the ATN character from being recognized. v4.2.3 - 06 January 2014 -------------------------- - Corrected a potential issue that could result in some values not being initialized properly, e.g. the timer speed selector values. v4.2.2 - 18 December 2013 -------------------------- - Added support for the ZX-24u, ZX-128a4u and ATtiny841 devices. v4.2.1 - 11 November 2013 -------------------------- - Corrected a problem where the timer busy flag was being left asserted following input/output capture (xmega only). v4.2.0 - 11 October 2013 -------------------------- - Changed to using avr-gcc v4.7.2 (AVR Toolchain 3.4.2). v4.1.4 - 20 September 2013 -------------------------- - Added missing ZB_PORT_OUT_REG and ZB_PORT_IN_REG macros. - Added some additional C++ definitions for Arduino v1.0.5 compatibility. v4.1.3 - 25 February 2013 -------------------------- - Corrected an issue (affecting only certain devices) with GetADC(). v4.1.2 - 09 February 2013 -------------------------- - Modified the SPI functions to facilitate better operation with Arduino code. v4.1.1 - 05 February 2013 -------------------------- - Corrected some issues for the tiny828. v4.1.0 - 28 January 2013 -------------------------- - Added support for 3-phase mode in the low-level X-10 functions. - Added support for new devices. v4.0.2 - 26 July 2012 -------------------------- - Corrected an issue in the interrupt enable/disable macros that could cause incorrect code to be generated by the back-end compiler in unusual cases. v4.0.1 - 09 May 2012 -------------------------- - Added support for low-level SPI operations and packed date/time routines. - Corrected a potential issue in a low-level console output routine. v4.0.0 - 16 April 2012 -------------------------- (see v3.4.4) 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.