The Great Cow Great Cow BASIC
An open-source BASIC compiler for microcontrollers
Great Cow BASIC Updates
Home
This lists the bugfixes and changes to GCBASIC made since the last release (0.9.3.0).

You can obtain the latest version in 2 different files:
  • update.zip, which includes all files changed since the last release. Use this if the current version of GCBASIC you have installed is older than 27/9/2007. Size is about 2.0 MB.
  • update-nochipdata.zip, which includes all files changed since the last release, except for the chip data files. Use this if the version of GCBASIC you have installed is dated 27/9/2007 or later. Size is about 0.5 MB.
29/6/2008
  • Data tables can now be stored in data EEPROM. Define the tables using Store Data directive - for example, "Table TableName Store Data". The data is stored starting at location 0, and filling towards the end of the EEPROM.
  • Support for 18F4331 added to a-d.h
  • Fixed bugs in a-d.h which caused trouble in chips without a CHS2 bit
  • Fixed bug in alias handling which was causing aliases to non-existant variables to be created.

15/4/2008
  • Implemented overloading for subroutines
  • Print subroutine now handles Byte and Word variables
  • LCDInt and LCDWord are now deprecated. They will continue to work but Print should be used instead for new programs.
  • Fixed bug when 2 string constants are passed as parameters in the same line
  • Fixed internal bug in WholeINSTR.

11/2/2008
  • Fixed bug when using the same array twice on a line
  • Arrays and strings now partially supported on AVRs
  • Fixed bug in GCASM which caused incorrect configuration values on 12C5x/12F5x/16C5x/16F5x PICs
  • The T0CKI pin now defaults to standard I/O mode on 12C5x/12F5x/16C5x/16F5x PICs

7/1/2008
  • Altered GCBASIC to read settings from a config file
    • Will read settings from a file called gcbasic.ini in the same directory as gcbasic.exe if present
    • Can read from another file if specified with the /S: parameter
    • See sample file included in update for more detail
    • compile.bat editing utility will be altered, but has not yet been.
    • With a gcbasic.ini file, there is no need for compile.bat. Files can be dropped onto gcbasic.exe.
  • Fixed bug with HPWM
  • Fixed bug when same function is called twice or more on the same line
  • Fixed bug with Dir command on 12-bit core chips with more than 8 pins

4/12/2007
  • Added utility to edit compile.bat
  • Updated GCBASIC to compile with FreeBASIC 0.18 (natively, not in -lang deprecated or -lang qb)
    • Successfully compiled and ran on Ubuntu Linux.
  • Altered 4 and 8 bit LCD routines to work without R/W pin when #define LCD_NO_RW is used
  • Strings now default to different sizes depending on chip RAM
  • Added "In" and "Out" to subroutine parameters - for example, "Sub MySub (In Param1, Out Param2 As Word, Param3). In will stop GCBASIC copying the value back from the sub (as with #NR but for each parameter), Out prevents a value being copied in. These are optional.
  • Updated EEPROM subroutines to use In and Out.
  • Fixed bank selection issues related to call mnemonic
  • banksel now only produces code for RP1 if needed
  • bankisel now produces no code on chips with 256 or less data addresses
  • Dir command now checks that pin/port is valid
  • Removed /D: and /NC command line options
    • Improved detection of install directory
    • GCBASIC does not clear the screen any more when running in a command prompt
  • Documented /K:A and /K:C command line options in command line information screen (GCBASIC /?). /K:A will save all original source code as comments in the .asm, /K:C will save all comments from the original source in the .asm.
  • There are now two versions of update.zip - update.zip which has all of the updated files since the last release, and update-nochipdata.zip which has all new files except for the chip data files.

16/10/2007
  • Fixed a bug with aliases for user variables which caused assembler errors
  • Allowed use of single character strings as integer constants
  • Minor adjustments to improve bootloader support
  • EEPROM routines updated with new interrupt enable/disable commands
  • Fixed a bug in program memory write routines
  • Fixed array bug introduced in a previous update

7/10/2007
  • Added "#option bootloader" - adds an instruction to clear PCLATH at the start of the assembly program, and relocates "call INITSYS" to after the interrupt vector.
  • Added "On Interrupt" for handling interrupts. Please refer to the Interrupts article in the updated included help file for more information (Interrupts is under Syntax).
  • Changed handling of type casts in calculations - instead of being placed on the end, "[word]" must now be placed before the variable or value that is to be cast. "[byte]" is also now allowed. Note that some programs may need to be altered as a result of this change.
  • Changed asm directive - anything following "asm" will now be passed through to assembly even if it is not a valid assembly mnemonic.
  • Fixed LCALL when using asm ORG inside the program.
  • Tidied GCBASIC source code, removed several thousand variable suffixes ($ and %). While some still remain, this is a significant step towards being able to compile GCBASIC with the newest version of FreeBASIC. Many variable names are also now more descriptive than "DS$" or "T%".

21/9/2007
  • Added initial AVR EEPROM and ADC routines. These are untested at present.
  • Altered code at reset vector - the InitSys routine is now called from the same location as other initialisation routines. This will allow GCBASIC programs to be used with more bootloaders.
  • Fixed issue with calculation - multiply/divide were sometimes returning incorrect type, or overwriting a required value.
  • Added #IFNDEF directive
  • Minor improvements made to assembly optimisation
  • Initial AVR support added to built-in assembler. Intel hex files produced match those generated by avrasm2, but the code has not been tested on an actual AVR.
  • Rewrote function handling code, now runs significantly faster.
  • Improved pseudo-random number generator
  • Tidied up some older GCBASIC source code
  • Arrays of more than 255 bytes are now permitted on 18Fs.

6/8/2007
  • Fixed a bug in the constant folding code for conditions, which caused an error message if the result was true.
  • Added Alias clause to Dim. This enables several smaller variables (typically SFRs) to be combined and treated as one large variable. For example, "Dim EEAddress As Word Alias EEADRH, EEADR" joins EEADRH:EEADR into one word variable named EEAddress.
  • Fixed a bug which caused some word variables to become byte variables.

3/8/2007
  • Fixed a bug in timer.h which caused some required code to be deleted
  • Fixed bug in string copy routines when copying empty strings
  • Altered Dim to accept a list of variables, such as "Dim SomeVar, AnotherVar, ThirdVar As String".

29/7/2007
  • Partial AVR support added
    • Chip data files
    • Set, Dir, Rotate, Wait, If, Goto
    • Do ... Loop, For ... Next
    • Subs and Functions, including Exit Sub
    • All 8-bit var operations
    • 16-bit equal, not equal, value copy, add, subtract, and/or/etc
    • Generates .asm files compatible with avrasm2
  • Interrupt context saving/restoring
  • Exit Do/Exit For now supported
  • Hardware multiplier code compiled inline - SysMultSub only used for software multiply
  • More error checking

30/6/2007
  • Fixed several A/D converter issues on 10F220
  • Fixed bug which may have caused GCBASIC to lock up while sorting the error list
  • Fixed option lcall

25/6/2007
  • Fixed a bug which caused confusion between comments and the b' ' notation for binary numbers
  • Major internal changes to the section of code which sets variables, with more to come
  • Alteration to the way that system subroutines (SysCompEqual, SysDivSub, SysCopyString, etc) are added/removed as necessary. GCBASIC now treats subroutines differently when their name starts with "sys".
  • LCDCreateChar (position, sourcearray()) sub added, copies data from an array into the CGRAM of the LCD module
  • Multiple array elements can be set in one line, ie. ArrayName() = 1, 3, 4, 2

17/6/2007
  • Fixed bug involving variable type detection
  • Altered ms and us delays to accepts 16-bit delay lengths

8/5/2007
  • Fixed several bugs with comments
  • Fixed LFSR command in built-in assembler
  • Fixed issues with hex numbers in assembler.

This site is hosted for free by SourceForge.net
SourceForge.net Logo