VersionHistory

This page documents changes and updates to the Firewing compiler

15th December 2014 - 1.0.0.7 Release

  • FIX - Corrected aliasing to variable with absolute address, for example, RPOR6.Byte1 or dim val as RPOR6.Byte1.

28th November 2014 - 1.0.0.7 (B3)

  • FIX - Linker error for code generation for PIC24 and PIC32 where constant array value is assigned to RAM array variable.Added new EEPROM library (PIC18).
  • FIX - Corrected compilation error when constant '"' char used in string constant.
  • FIX - Corrected compilation error when escape character used in string constant.

16th November 2014 - 1.0.0.6 Release

  • FIX - Corrected missing abs() from new math library.
  • FIX - Corrected optimisation error for Firewing 16

26th May 2014 - 1.0.0.6 (B7)

  • NEW - Added new EEPROM library (PIC18).
  • NEW - Updated ROM library (PIC24)
  • FIX - Corrected option assignment in SDTransport()
  • FIX - Corrected DrawBitmap() screen flicker in FT800 library.
  • FIX - Program resetting when using ROM module if optimiser level > O0. This should now work OK.
  • FIX - Program resetting when using <str-var> + <str-const> if optimiser level > O0. This should now work OK.

23rd May 2014 - 1.0.0.6 (B2)

  • NEW - Updated FT800 library.
  • NEW - Math library for PIC24 and PIC32 to support double.
  • FIX - Corrected Gameduino initialisation sequence.

20th May 2014 - 1.0.0.5 Release

  • NEW - Added library support for FTDI Eve (FT800) device. The implementation has been tested on a FTDI VM800B43A and also a Gameduino 2. Please note that this library is work in progress.
  • FIX - Changed references to "int" to "short" for 32 bit core
  • FIX - Extended signed constant padding for 32 bit devices
  • FIX - Corrected signed constant addition for PIC18
  • FIX - Shift left now using 32 bit temporary register for all compilers
  • FIX - Arrays not being correctly dimensioned when using array() = {..} construct

12th May 2014 - 1.0.0.4 Release

  • NEW - Added support for 33FJ128GP802 device for Firewing 16. Please note this is work in progress.
  • NEW - Automatically locate path for programmer item if "fwloader.exe" is specified in "programmer.ini"
  • NEW - Added <com#> tag for "programmer.ini" file to automatically invoke the set com port dialog.

3rd May 2014 - 1.0.0.4 (B10)

  • FIX - Fixed code generation error for PIC18.
  • FIX - Missing check for scope when preprocessing "imports".

20th April 2014 - 1.0.0.4 (B9)

  • NEW - Additional macro optimisations for PIC24.
  • FIX - Corrected pin toggle error (PIC24).
  • FIX - Corrected ch + "const char " error.
  • FIX - Corrected string = char comparison error.
  • FIX - Corrected context save and restore error for PIC24 - this was introduced in version 1.0.0.4

18th April 2014 - 1.0.0.4 (B8)

  • FIX - Added missing linker script and linker command options to Firewing16.
  • FIX - Memory allocation error for string types.

17th April 2014 - 1.0.0.4 (B4)

  • FIX - Corrected memory allocation problem in linker script generation for Firewing32 and XC32. Make sure you get the latest XC32 toolsuite if you use it.
  • FIX - Incorrect variable address in COFF generation for PIC24. This should now work OK.

16th April 2014 - 1.0.0.4 (B2)

  • NEW - Added additional optimisation improvements for Firewing16, Firewing32 and also XC16, XC32 toolsuites. Make sure you get the latest XC16 and XC32 toolsuites if you use them.
  • FIX - Corrected ClearWDT() for Swordfish toolsuite.

11th April 2014 - 1.0.0.4 (B1)

11th April 2014 - 1.0.0.3 Release

  • FIX - ClearWDT() not being linked into some system modules and DelayMS() routines. This should now work OK.

5th April 2014 - 1.0.0.3 (B22)

  • NEW - Added GCC optimisation and linker options for XC16 and XC32 toolsuites.
  • FIX - Corrected SetBacklight () error in dogm LCD library.

22nd March 2014 - 1.0.0.3 (B21)

  • NEW - Added 32MX795F512L device file to install.

15th March 2014 - 1.0.0.3 (B20)

  • NEW - Includes Firewing for PIC18 BETA. More information can be found here
  • NEW - Updated library and sample files to support PIC18
  • FIX - Corrected font error in Tft graphics library when using PIC32 device.

17th January 2014 - 1.0.0.3 (B12)

  • NEW - Added floating point support for Str() function. You can also specify the number of digits after the decimal point and also the number and type of pad characters before the floating point number.
  • NEW - Improved CStr() routine for float types.
  • FIX - Assigning an indexed string with a character was generating an error if the string was a function return type. This should now work OK.
  • FIX - Updated DOGM LCD library to implement correct 3 line initialisation sequence.
  • NEW - Increased point size for font convertor plugin from 32 to 64 points
  • NEW - Increased dimension for image convertor plugin (640 x 480 pixels)
  • FIX - Corrected macro scoping error
  • FIX - Bootloader now detects R1 and R2 board versions to prevent accidental programming of the wrong code
  • FIX - Removed reference to "_RCOUNT" from generated code asm clobber list (fixes anomaly when using latest XC16 toolsuite)
  • FIX - Corrected sign extend anomaly when mixing 32 and 64 bit floating point.
  • NEW - Includes 32 bit BETA compiler. More information for configuring your board can be found here
  • FIX - Increased resolution for constant floats.
  • FIX - Incorrect toolsuite binary supplied for new double float feature.
  • NEW - Added double to support 64 bit floating point numbers.
  • FIX - Corrected floating point out of range assignment error for constants. This was accidentally introduced when implementing 64 bit floats.
  • NEW - When implementing "Dx" or "Ax" pre-processor assignments, you should now prefix with an underscore. This is required for the new 32 bit compiler. For example, "#option TFT_D0 = D0" would become "#option TFT_D0 = _D0"

13th November 2013 - 1.0.0.2 Release

  • FIX - Problems with indexing of constant string arrays. This should now work OK.
  • FIX - Bootloader not correctly erasing bank for fragmented code segments. This should now work OK.
  • NEW - Added support for arrays > 64K
  • NEW - Added support for absolute address array constants
  • NEW - Saving of selected toolsuite when application exits
  • NEW - Made "dim" optional in structure declarations
  • NEW - Added support for double slash (//) single line comments
  • NEW - Added implicit line continuation. More information can be found here.
  • FIX - Problems with comparison when using signed constants. This should now work OK.
  • FIX - Corrected IDF address error when using _ram_protect.
  • FIX - Corrected _ram_protect offset error for module level variables.
  • FIX - Inadvertently introduced a string allocation error in version (F) - this has now been fixed in revision G. Apologies for that.
  • NEW - Strings are automatically dimensioned when assignment is made. Please note that the minimum string size is now 1 character (plus null terminator) for a string that has not been been explicitly dimensioned or not assigned a default value.
  • FIX - Ctrl + Tab when block of text selected will indent it.
  • FIX - COFF debug not generating arrays larger than 8KB correctly. This should now work OK.
  • NEW - Added support for devices with RAM greater than 16KB.
  • NEW - Added _ram_protect and _ram_protect_length options.
  • FIX - Compiler incorrectly calculating stack size, causing compilation to fail when data usage > 0x1800 bytes. This should now work OK.
  • FIX - "_clock" access removed from main program. Correct usage to assign to a program constant before use. This makes it more consistent with other #options.
  • FIX - Corrected mistake in updated SD library that made an incorrect reference to "_core"
  • NEW - Rather than manually setting PPS, a program can now use EnableRx1(), DisableRx1(), EnableTx1(), DisableTx1(), EnableRx2(), DisableRx2(), EnableTx2(), DisableTx2(), EnableSpi() and DisableSpi() for the core hardware peripherals. Using these commands is strongly recommended for future designs because they are portable.
  • NEW - Target board selection on main menu to support future products.
  • FIX - _showvar in some instances generating an identifier nor found ASM error. This should now work OK.
  • NEW - added _showasmcomments compiler option.
  • FIX - Corrected RPINR18 initialisation mistake in TFT sample files.
  • NEW - Updated font converter plugin. Generate variable width fonts for the TFT graphics library.
  • NEW - Image convertor plugin. Generate new bitmaps for the TFT graphics library.
  • NEW - TFT display example programs. Includes reading from an SD card, bitmap, vector and a full port of the Arduino TFT graphics library demo.
  • NEW - Added TFT library. Currently supports S6D1121 320 x 240 colour display. Library is designed so that new drivers can easily be added.
  • NEW - Added hardware SPI support at 80MHz.
  • FIX - Problem with structure aliasing when using Byte0, Byte1 etc. This should now work OK.
  • FIX - Code for constant arrays when passed by reference not being generated correctly. This should now work OK.

19th June 2013 - 1.0.0.0 D Release

  • FIX - Clock switching code not working correctly in main device file. This should now work OK.
  • NEW - ADC and PWM routines have been tested against PIC2464GA002. Changes should work across entire series but not tested. Please note that devices other than 24HJ128GP502 are not officially supported.

13th May 2013 - 1.0.0.0 C

This updates fixes a few library modules. Executables remain the same.

  • FIX - Updated Shift library. If you have installed a previous version of the compiler, ensure you delete "shift.bas" from you library folder before installing this update. For example:
    c:\<install-folder>\library\shift.bas

4th May 2013 - 1.0.0.0 B

This updates fixes a few library modules and samples. Executables remain the same.

  • FIX - Updated LCD libraries for 3 line LCD support.
  • FIX - Updated UART example to show correct 38400 baud setting.

21st April 2013 - 1.0.0.0 Release

  • FIX - Problem with SD library for cards greater than 2GB. This should now work OK.
  • NEW - Added support for GLONASS in GPS library.

5th April 2013 - 0.8.0.1 Release Candidate

  • FIX - Problem with incorrect parsing of embedded ASM labels. This should now work OK.

4th April 2013 - 0.8.0.0 Release Candidate

  • NEW - Release candidate of the compiler and IDE.

14th March 2013 - 0.7.1.2(C) BETA

  • FIX - Problem when passing a "ByRef" string value to a "ByVal" string paramater. This should now work OK.
  • FIX - Incorrect enforcement of concatenation rules for string values. For example, <string> + <byte>. Correct usage is now <string> + CChar(<byte>).
  • FIX - Library changes made to support concatenation fix.
  • FIX - (B) Library update.

26th February 2013 - 0.7.1.1 BETA

  • FIX - Problem with incorrect COFF generation for arrays of structures. This should now work OK. Please note that COFF isn't currently an officially supported feature of Firewing.

25th February 2013 - 0.7.1.0 BETA

  • FIX - Problem with incorrect COFF generation for far calls. This should now work OK. Please note that COFF isn't currently an officially supported feature of Firewing.

24th February 2013 - 0.7.0.9 BETA

  • FIX - Problem when using a constant declaration inside another constant declaration expression. This should now work OK.

21st February 2013 - 0.7.0.8 BETA

  • FIX - Problem with string + character concatenation routines. These should now work OK.

19th February 2013 - 0.7.0.7 BETA

  • FIX - Problem when using SizeOf() and Erase() when a variable is an alias to an array located in a structure. This should now work.
  • FIX - Problem with alias expressions to arrays in structures not calculating offset correctly. This should now work OK.

17th February 2013 - 0.7.0.6 BETA

  • NEW - Peripheral Pin Select (PPS) lock is now OFF by default. To enable, use the #option = LOCK_PPS = true at the top of your program.
  • NEW - Added PPSLock() and PPSUnlock() routines.
  • FIX - Toolsuite linker failing to correctly parse filenames with spaces. This should now work OK.
  • FIX - Problem with pointer operations for (*addr1) and *(waddr1). This should now work OK.

15th February 2013 - 0.7.0.4 BETA

  • NEW - Dynamic clock switching support allows you to configure the Firewing development board using a single command "clock" at the top of your program. Supported values are 8, 16, 32(default), 64 and 80 MHz.
  • NEW - Support for word pointer operations added.
  • NEW - Simple peephole optimiser pass for generated assembler.
  • FIX - Problem with string write in USART library. This should now work OK.
  • FIX - Problem with high, low, toggle, input and output for upper byte of MCU port. This should now work OK.
  • FIX - Problem with bit assignment for upper byte of MCU port. This should now work OK.
  • FIX - Shift + Tab only going back two spaces, when it should be three. This should now work OK.