Revision History

Revision History:


    ARMbasic initial release summer of 2006

    This version of hardware uses open drain IOs on IO(5) and IO(6), this will be changed in future versions.


    Generalized the operation of the I2CIN (backward compatible) and I2COUT.

    Optimized all index operations (includes arrays, input/output and strings). Gave 3x performance improvement for these types of operations.  Now no difference in using constants or expressions for indexes.

    Added the ability to use SIN and SOUT pins for SERIN, SEROUT, BAUD(), RXD() and TXD() as pin 16.

    Corrected STRCOMP function.


    Extended break timeout on RESET to 0.5 second.

    Accept either CR or LF to terminate a line.

    SLEEP now goes into a power down mode using alarm function to wake up.

    DEBUGIN string  added

    Enforce proper declaration of strings and arrays

    Multiple string concatenations allowed per line

    noted an error - BAUD rate for port 16 can not be changed currently.


    Added string$ support as an Outputlist in hardware functions (zero terminated or constant string)

    Expanded the space available for programs to 56K.


    Support for ARMmite.


    BAUD rate setting for port 16 (the hardware serial port) is now allowed.  The ARMexpress transceivers limit speed to 19.2Kb, but the ARMmite can run up to 942Kb on port 16.


    Expanded symbol table on ARMexpress, and also allow PC to compile for ARMexpress, which allows much larger symbol table.


    Added SPIMODE and SPIBI.


    Fixed a bug affecting ARMexpress only in large programs with certain GOSUBs.  The bug resulted in programs restarting at the GOSUB.


    Improved SPI performance.


    Improved SERIN performance to accept 115.2 Kb streams. There is still a 30 uSec startup for SERIN, and RXD() has better performance as long as the pin is not changed.


    Added HWPWM for 8 channels, though there is a bug that times for channel 7 and 8 are swapped.  Added send of + character after Flash has been written, this was done as XON/XOFF was overrunning, and this is used to handshake with BASICtools.


    Fixed HWPWM swap of channel 7 and 8. Added gets() like support for SPIIN, SERIN, OWIN and I2CIN.  Also added I2CSPEED for slower I2C devices.  Corrected subtract followed by divide bug.  


    Added I2CSPEED to slow down I2C operations for older parts or long cables.  DATA statements can contain negative numbers now.  32 bit constants on ARMmite or when using PC compiler. On ARMexpress compiler constants while still limited to 16 bits are sign extended.  ARMexpress was reporting missing labels, but ARMmite was not, now fixed.  Allow for multiple strings in data lists of SEROUT, I2COUT,...  Corrected error reporting of strings missing a final ".  DEBUGIN now accepts negative numbers. INTERRUPT keyword added.  Support for ARMexpress LITE.


    Support for STOP as a breakpoint.


    SERIN_TIMEOUT added. Support for Wireless ARMmite. HWPWM supports duty cycles up to 40 seconds. Baud rates for SERIN/OUT 16,baud works again.


    Support for ARMweb.


    Refinements for ARMweb and STRSTR, STRCHR and TOUPPER string functions.  SERIN, RXD was filtering ESCAPE and ctl-C characters on pin 16 (UART0).  This has been corrected.


    Added DIM name AS INTEGER and SUB .. ENDSUB local scope ( as this is an ARMbasic.exe feature it is backward compatible to 6.17 and later firmware versions.

    Firmware changes: only look for ESC/ctl-C for 500/1000 msec after reset (1000 for wireless versions).  RND function added (uses an LCG algorithm).  HWPWM now uses times in microseconds rather than duty-cycles.


    Added FUNCTION ... END FUNCTION, BYREF and BYVAL parameters for SUB/FUNCTION.  This change affects the compiler on the PC or ARMweb.


   Support for old and new firmware versions (new firmware moves built-in functions into #include'd libraries).    

   fixes to FUNCTIONs and SUBs. Null strings ("") allowed.  String constants can be used in string BYREF calls.  DIM enforcement of variable declarations once used.  VB style CALLs to FUNCTION/SUB, i.e. CALL keyword is optional.  Access to hardware registers via * is optimized.


   Firmware support and PC compiler support for interrupts (both are required).

   Improved PC compiler generation of constants.


   Minor fixes in PC compiler for calls to SUB/FUNCT with constant strings, flag embedded chr(0) in string expressions.  Improved some error messages in PC compiler.


   Support for VB style CGIIN, MAIL, UDPIN and UDPOUT for ARMweb.


   Support for BAUD0 to change UART0 speed. TXD0 subroutine syntax supported.

   Support for UART1 added with BAUD1, RXD1 and TXD1

   Support for FREAD, WRITE to Flash.

   Both PC compiler and firmware are required


   reorganization for generic compiler.


   fix for ARMexpress LITE AD.  Inline TIMER code added. and improved constant generation.


   Improved call/return. Expanded *pointer handling, and added ADDRESSOF operator.

   TX FIFO enabled.


   changed call/return mechanism for better performance.


   added support for Cortex parts.


   initial bug fixes for Cortex parts.


   added error reporting when an integer operand expected but not found.


   added IEEE 754 floating point, PRINTF,  7.50 version for ARM7 parts, trial versions


   released versions with floating point support, handles multiple IO port in banks of 32, June 2012.


   fixed clock setup for LPC1114, added support for LPC812.


   enabled TX interrupts on all UARTS, fixed sector mapping for LPC175x parts, added SLEEP keyword to compiler to execute WFI instructions, changed SLEEP(x) routine in RTC.bas to IDLE(x).


   fixed FREAD for SuperPRO


   extensions for SDcard file access, quicksort.