+-------------------------------------+ | July 24, 2010 - 1.0 build 16 stable | +-------------------------------------+ - Imp: optional ALIAS for PROTO (all versions) - Imp: optionally PROTO allows multiple identifiers (all versions) - Imp: changed -s flag into -o flag - Imp: improved usage of -l option (all versions) - Imp: check on availability of C compiler (all versions) - Imp: more improvements on error reporting (all versions) - Imp: more optimizations in associative arrays (all versions) - Fix: different BaCon versions generated different binaries (all versions) - Fix: ABS, DEC should return long type (all versions) - Fix: numeric arrays should be initialized to 0 (all versions) - Fix: MID$ wrote invalid memory when source string was empty (all versions) - Fix: MID$ wrote invalid memory when starting position was higher than length of string (all versions) - Fix: PULL crashed when string stack was empty (all versions) - Fix: PULL crashed when stack had no values pushed before (all versions) June 25, 2010 - 1.0 build 15 stable - New: LOOKUP to find all indexes in associative array (all versions) - New: RELATE to setup relations between associative arrays (all versions) - Imp: more improvements on error reporting (KSH and BASH version) - Imp: function blocks should contain license statement (all versions) - Imp: associative array declaration did not allow multiple identifiers (all versions) - Imp: many improvements in associative array implementation (all versions) - Fix: error reporting should also occur for main header file (all versions) - Fix: error reporting should work in Tru64Unix with Compaq C compiler (all versions) - Fix: nested SELECT/CASE did not clean 'fallthrough' cache properly (all versions) - Fix: string array assignment was not possible in declaration (all versions) - Fix: EXEC$ did not reap zombie processes (all versions) June 12, 2010 - 1.0 build 14 stable - New: ALIAS statement to alias any function (all versions) - Imp: optional ALIAS for IMPORT (all versions) - Imp: many improvements on error reporting (all versions) - Imp: allow nested SELECT/CASE statements (all versions) - Fix: INPUT parser delivered variable names surrounded by spaces (KSH and BASH version) - Fix: INCR and DECR need additional brackets around second argument (all versions) May 13, 2010 - 1.0 build 13 stable - New: GETX / GETY to get current cursor position in ANSI terminal (all versions) - New: COLUMNS / ROWS to get screencolumns and rows in ANSI terminal (all versions) - New: CURSOR ON/OFF to show/hide cursor in ANSI terminal (all versions) - Imp: GOTOXY can use variables as arguments now (kudos Vovchik - all versions) - Fix: GOTOXY needs flush (all versions) - Fix: COLOR and CLEAR use stdout explicitly (all versions) - Fix: EXEC$ would return partial results in case of slow output of shell statement (all versions) - Fix: MAKEDIR crashed (all versions) - Fix: detection of previous declared STRING variable failed (BaCon version) - Fix: make sure no string pointer is freed when using LOCAL in functions (all versions) April 17, 2010 - 1.0 build 12 stable - New: OPTION SOCKET to determine network timeouts (all versions) - New: ALARM to interrupt current operation and call local SUB (all versions) - Imp: optional SIZE argument in RECEIVE to determine chunksize (all versions) - Imp: IMPORT should convert function names to TCC compatible names (all versions) - Imp: MAKEDIR should implicitly create parent directories (all versions) - Imp: WRITELN should be able to write string pointers (all versions) - Imp: LOCAL/DECLARE should allow multiple string pointers (all versions) April 2, 2010 - 1.0 build 11 stable - New: by popular demand DECR and INCR to add/substract from variable (all versions) - New: OPTION COMPARE to define case-insensitive comparison (all versions) - Imp: simplified BaCon options (all versions) - Imp: ensured compatibility with TCC compiler (all versions) - Fix: SPLIT would collapse element where two separators are neighbours (all versions) - Fix: SPLIT did not reset internal counter when used repeatedly (all versions) - Fix: INSTRREV returned wrong index when string ended with equal letters (all versions) - Fix: MOD always should cast arguments to long (all versions) March 20, 2010 - 1.0 build 10 stable - New: option '-f' to create shared library (all versions) - New: PROTO to allow foreign symbols, link with external library (all versions) - New: GLOBAL/DECLARE accepts RECORD (all versions) - Imp: random generator always initialized (all versions) - Imp: stack depth grows and shrinks dynamically, option '-s' obsolete now (all versions) - Imp: MEMORY/RESIZE allocate 1 byte more to allow subsequent string management (all versions) - Imp: OPEN FOR MEMORY can use string variable names (all versions) - Fix: SPLIT could not handle combined separator string (kudos James Fuller - all versions) - Fix: TRACE inserts must be excluded during code parsing (all versions) - Fix: networking would crash in case of erroneous hostname (all versions) - Fix: FUNCTION always should return a value (kudos E.K. Virtanen - all versions) - Fix: IMPORT could not import library in same directory (BaCon version) March 6, 2010 - 1.0.9 stable - New: associative arrays (all versions) - New: flag '-e' to export symbols allowing callbacks from Glade, GtkBuilder (all versions) - New: function FILEEXISTS contributed by Armando Rivera (all versions) - New: function RANDOM(x) to generate a random number between 0 and x-1 (all versions) - Imp: preserve temporary files in case compilation fails (all versions) - Fix: FILELEN wrong error reporting (kudos James Fuller - all versions) February 20, 1.0.8 stable - New: MEMTELL to get current memory stream position (all versions) - Imp: PUTLINE should be able to handle comma separated arguments (all versions) - Imp: more performance improvements (BaCon version) - Fix: OPEN MEMORY needs additional check on starting position variable (all versions) - Fix: RESIZE would not work with TRAP LOCAL (all versions) - Fix: RESIZE showed SegFault when assigning new address (all versions) - Fix: bug in SPLIT where splitted line only contains separator (all versions) - Fix: minor issue in OPEN where BASH generates duplicates of file variables (BASH version) February 13, 2010 - 1.0.7 stable - New: OPTION BASE to define array base (all versions) - Imp: the DO in WHILE/WEND statement is optional now (all versions) - Fix: removed limitation for inputbuffers in READLN and INPUT (kudos James Fuller - all versions) - Fix: minor bug in Check_Type when looking up string variables (BaCon version) February 7, 2010 - 1.0.6 stable - Imp: automatically initialize numeric vars to 0 (all versions) - Imp: updated timestamps and messages in generated sources (all versions) January 30, 2010 - 1.0.5 stable - New: STOP to hold program, use Unix 'fg' or 'kill -CONT' to continue (all versions) - New: TRACE ON/OFF to execute program step-by-step (all versions) January 22, 2010 - 1.0.4 stable - Imp: performance improvements for BaCon version of BaCon - Imp: Option "DOWN" for SORT to sort descending (all versions) - Fix: potential bug in IMPORT when defining complicated function arguments (all versions) - Fix: '-l' option (BaCon version) January 18, 2010 - 1.0.3 stable - Imp: IF/ELIF/ELSE accepts single statement in THEN on same line (all versions) - Fix: COPY should emit runtime error when file is not found (all versions) - Fix: CALL could not invoke a FUNCTION or SUB with a function in the argument (BaCon version) January 9, 2010 - 1.0.2 stable - Imp: BaCon now can compile sourcefiles in any other directory, not only current directory (all versions) - Imp: simplified header file inclusion even more (all versions) - Fix: issue when INCLUDE contains full directories (all versions) January 7, 2010 - 1.0.1 stable - Imp: improved logic in temporary file naming (all versions) - Imp: simplified header file inclusion algorithm (KSH, BASH) January 1, 2010 - 1.0 stable - New: changed license to GPL version 3. - New: next to EQ/NE alternatively IS/ISNOT can be used to improve code readability - Fix: OpenBSD reveals issue with indent and temporary directories (all versions) December 26, 2009 - 1.0 release candidate 1 - Testsuite: fixed initialization with COPY (all versions) - Testsuite: FILELEN should return -1 in case of error (all versions) - Testsuite: PULL should recognize types better (KSH, BASH) - Testsuite: CALL should be able to perform call forward (all versions) - Valgrind: fixed uninitialized value for jump (BaCon) - Testsuite: READ should recognize internal BaCon types (all versions) - Testsuite: INPUT should recognize internal BaCon types (all versions) - CURDIR$ to retrieve current working directory - SORT to sort one-dimensional arrays - Fixed issue in SELECT when CASE was empty and only DEFAULT contained code - Fixed bug with INSTRREV - Testsuite: GETBYTE, PUTBYTE had wrong size detection (BaCon version) - Testsuite: empty argument to FUNCTION/SUB should resolve to (void) (KSH/BASH) - Testsuite: color should be set similarly in all versions (BaCon) - Testsuite: inputbuffer for READLN and INPUT should be initialized before use (all versions) - BaCon version can be used within shebang also - Aligned printing of current linenumber better - Added '-j' option to invoke C Preprocessor - Fixed bug in RETURN handling (BaCon version) - Fixed issue in REGEX parsing (BaCon version) November 29, 2009 - beta 4 - KSH88 needs double typeset when shrinking variable length - Removed '+' as concatenation symbol as it caused problems with PRINT and calculations - Fixed bug in CONST when embedding constructed CONSTs (all versions) - Code review: reserved variable VERSION should be VERSION$ - Code review: OPEN NETWORK/SERVER - fixed failures when used multiple times (all versions) - Code review: COPY and GETFILE - fixed failures when used multiple times (all versions) - Code review: removed IFDEF for now as it is not fully functional - Documentation review: some small fixes and improvements - Improved Check_Declare function in BaCon version November 22, 2009 - beta 3 - OpenBSD reveals wrong type for 'localtime' - CASE has fall-through with ';' - Indentation only when source files are not deleted (-p option) - Tempdir option should allow relative directories - Performance improvement for KSH/BASH versions - IFDEF/ENDIFDEF to determine code during compile time (James Fuller) - Fixed bug with variable type detection (BaCon version) - Fixed some minor compile warnings (all versions) November 16, 2009 - beta 2 - Added SELECT/CASE/DEFAULT - Cleaned up echo/print in KSH and BASH version - Menu should show values from defaults not hardcoded - SETENVIRON to set environment variable - Code review: ENDWITH/ENDSELECT should exist - EXEC$ to redirect output from system command to BaCon program - ARGUMENT$ should contain program name of current program - Changed miniparsers to use low-ASCII (Debian chokes on 'C2') - Fixed crash in BaCon version when showing compile errors - Fixed bug in BaCon version with implicit declaration in FOR - Code review: cleaned up code in BaCon version November 13, 2009 - beta 1 - Fixed bug with REPLACE where needle and replacement were the same - Fixed bug in Solaris where stringvariable names were taken as regex (BaCon version) - Fixed minor bug in Tru64Unix where shell print generates 'wrong option' (KSH version) - Default C compiler is 'cc' instead of 'gcc' as most Unix versions symlink to 'gcc' - Fixed minor bug where erroneous void SUB definition leads to compile warning (KSH, BASH) - Fixed bug in MacOSX where return buffers were initialized outside scope (all versions) November 10, 2009 (0.110) - Fixed harmless bug in READ code - SEED should check argument - Removed redundant code in DEF FN - Starting BETA phase of the BaCon project On Sunday November 8, 2009 at 14:21 Dutch time, BaCon became self-aware: BaCon can compile BaCon! November 8, 2009 (0.109) - Fixed exception for REGEX return value - Fixed issue with writing spaces in WRITELN (James Fuller) - Removed redundant WAIT statement parsing - Enlarged temporary input buffer to 512 - SEARCH returns -1 when string not found - INSTRREV to search for a substring starting from the end of the haystack November 3, 2009 (0.108) - Merged duplicate SUB/FUNCTION routine - Added REPLACE$ function (similar to Scriptbasic) - Lots of discussion regarding shebang usage leads to '/usr/bin/env' construct October 27, 2009 (0.107) - Rewrote few small parts to ensure compatibility with KSH88 (Tru64, Solaris) October 25, 2009 (0.106) - Improved error message for REGEX - Fixed bug in OPEN variable detection - Fixed memory leak in SPLIT when string and separator are identical - Improved CHOP when string does not have regular characters - PUTLINE can use string array October 20, 2009 (0.105) - Signal definitions should not be in main header file - Fixed issue with CHOP and empty strings - SEARCH restores filepointer after searching is completed - WRITELN accepts argument list like PRINT and INPUT - Fixed issue in miniparsers when string uses \" - Use REGEX for Posix regular expressions (check 'man 7 regex' for syntax) - The PRINT statement can concat arguments using '+' also October 11, 2009 (0.104) - Memory streams with OPEN FOR MEMORY, MEMREWIND, GETLINE, and PUTLINE (see test18) October 9, 2009 (0.103) - BaCon types recognized in implicit declarations - INT as synonym for ROUND October 1, 2009 (0.102) - Corrected FILL$ failure on argument check September 27, 2009 (0.101) - STR$ returns correct string in case of INT's versus FLOAT's - CATCH RESET to restore default error message September 22, 2009 (0.100) - Redesigned the error catching functionality completely, see documentation September 18, 2009 (0.99) - Improved detection of PRINT arguments even more - Added '-a' option to force 32bit compilation - Third argument in MID$ is optional now - when omitted it uses rest of string September 16, 2009 (0.98) - Fixed issue when SPLIT runs in loop (bug found by James Fuller) - Fixed potential bug with RETURN - Numerous other small fixes and improvements September 15, 2009 (0.97) - Fixed '\' in REM statement (bug found by James Fuller) - Instead of REM also ' can be used - Improved PRINT so illegal string variables cannot crash the program - Added SPLIT (see documentation for an example) September 12, 2009 (0.96) - Fixed issue when string arrays were initialized in a loop (bug found by James Fuller) - Fixed memory leak with local strings - Passing (hardcoded) strings to functions and subs also by value now - RETURN statement correctly returns calculated results September 8, 2009 (0.95) - Fixed issue with FOR/NEXT arguments using '*' - Temp label generation in network code did not work correctly - GLOBAL/LOCAL could not declare arrays with string argument syntax - Fixed strange problem with declaration of 'x' and 'y' as variables September 6, 2009 (0.94) - Wrapping of lines included redundant space character - FLOOR should return an integer - READLN could not read into stringarray September 3, 2009 (0.93) - Full support for string arrays in all dimensions - Fixed potential memory leak for strings in records defined within a function - Fixed minor issue with RECORD naming September 1, 2009 (0.92) - END can return exit value of program (request and idea by James Fuller / John Spikowski) August 31, 2009 (0.91) - Array of RECORD initialized string members wrongly (bug found by James Fuller) - Fixed printing of FILL$ August 30, 2009 (0.90) - LET did not take stringarrays into account (bug found by James Fuller) - PRINT of uninitialized stringvariable would segfault (bug found by James Fuller) - Added INVERSE for COLOR August 28, 2009 (0.89) - Lines of code may wrap to next line using '\' at the end of line - Avoid situation where dlerror() returns NULL - Fixed READ where strings are read into a stringarray - Fixed problem with INPUT and stringarrays - Fixed problem with PULL/PUSH and stringarrays August 24, 2009 (0.88) - Removed unnecessary definition of functions as a macro - Redesigned CONST implementation - Simplified DEF FN a little bit more August 20, 2009 (0.87) - Improved presentation of compile warnings August 17, 2009 (0.86) - Added WITH keyword to handle elements of records (request by James Fuller) - Changed the '-m' parameter so it adjusts temp buffers for string processing August 16, 2009 (0.85) - Allow standalone LABELS in BaCon code (bug found by James Fuller) - Finetuned memory limits even more to fit in Solaris and Tru64Unix August 14, 2009 (0.84) - Improved returning strings from functions - Increased amount of temp buffers for string processing from 32 to 256 August 13, 2009 (0.83) - Fixed LOCAL declarations for test17 (bug found by James Fuller) - Corrected 'print' in BASH version - Fixed string variable initialization in functions - CONCAT would return (null) if first argument was not initialized - Local string variables are all byvalue now (request by James Fuller) - Removed all 'static' declared strings August 9, 2009 (0.82) - Added system type to OS$ (request by James Fuller) - Redesigned the ERROR assignment allowance - Fixed string allocations in RECORD structures August 8, 2009 (0.81) - Fixed LOCAL declarations - Made sure FILELEN and FILETYPE can be embedded in PRINT and INPUT statements August 7, 2009 (0.80) - Use FILETYPE to check if a file is directory, socket, fifo etc. August 6, 2009 (0.79) - Perfectionized error display when GCC refers to included files - The reserved ERROR variable now can be reset by BaCon program August 5, 2009 (0.78) - Improved error display in case GCC has problems - Reorganized INDENT August 2, 2009 (0.77) - DEF FN functions can be used standalone - Also defined LC_CTYPE env variable for correct execution in MacOSX "Term" - Removed duplicate Runtime Error - Ensured compatibility with FreeBSD August 1, 2009 (0.76) - Defined LANG environment variable to ensure correct execution in MacOSX July 27, 2009 (0.75) - NL$ defines the newline - Fixed issue with PRINT and ASC returnvalue - Input can print text now, for example: 'input "text", a$' July 23, 2009 (0.74) - Huge code cleanup by removing detection of statements in small letters. All keywords should be written in capitals now; the detection of small letters was incomplete anyway. - Simplified unique label generation for temporary jumps in network code July 22, 2009 (0.73) - Improved PRINT argument parsing, now constructs like 'PRINT a,b,c$,"hello"' work July 16, 2009 (0.72) - Cleaned 'indent' detection - The '-l' argument passed library in a wrong way - Wrong reference to 'h_errno' in error detection July 12, 2009 (0.71) - Variablenames within records may be used in other records also - Variablenames within records can be used as standalone variable names also July 11, 2009 (0.70) - DEC must return an unsigned int, instead of int - CONST detects wrong string - Omitting type did not work when declaring arrays July 11, 1009 (0.69) - Prevent to define RECORD within RECORD - Fixed issue with strings in RECORD July 9, 2009 (0.68) - Fixed bug in DECLARE/GLOBAL on variable detection - Added RECORD structure July 5, 2009 (0.67) - Improved type detection for RETURN statement June 1, 209 (0.66) - MEMORY automatically initializes claimed memory to '0' May 17, 2009 (0.65) - Fixed erronous END USEC detection - Fixed TYPE detection in GLOBAL/DECLARE May 9, 2009 (0.64) - Show linenr during conversion - OS$ to return name of current Operating System May 9, 2009 (0.63) - Simplified temporary filename generation - Fixed bug with string variable detection - VAL must return FLOAT and not LONG - Always flush STDOUT for PRINT May 7, 2009 (0.62) - Put LOCAL strings back to static in order to prevent memory leaks May 2, 2009 (0.61) - CHOP$ to chop off CR, NL, TAB and SPACE - FILELEN returns size of file - SEARCH(x, y) to search string y in filehandle x April 29, 2009 (0.60) - GLOBAL, LOCAL and DECLARE can use TYPE as optional parameter April 27, 2009 (0.59) - RESIZE was broke April 25, 2009 (0.58) - Fixed issue with 'ldl' in Tru64Unix April 24, 2009 (0.57) - LOCAL strings should not be static - Fixed bug with DECLARE - Fixed multiple string declarations in one line April 24, 2009 (0.56) - Fixed issue with local string declaration - FILL$ to return a sequence of character strings April 23, 2009 (0.55) - Corrected returntypes of FUNCTION April 21, 2009 (0.54) - Fixed some annoying warnings with math functions - GLOBAL/DECLARE can be put anywhere for global declarations, even within FUNCTION and SUB April 21, 2009 (0.53) - Variables are globally declared (also implicitely), unless declared with LOCAL - Fixed implicit declaration in GETBYTE - fix: IMPORT always is global - DEF FN should be always be global - CONST should be always be global - Fixed error messages for Dynamic Linking - Fixed error messagetext in LET April 19, 2009 (0.52) - Added commandline flag '-o' to optimize compilation for current platform April 18, 2009 (0.51) - Fixed potential illegal memory writes with GETFILE - Fixed potential illegal memory writes with INPUT - Fixed potential illegal memory writes with READLN - Fixed potential illegal memory writes with RECEIVE - Fixed potential illegal memory writes with READ - Fixed potential illegal memory writes with PULL April 18, 2009 (0.50) - Corrected POKE and PEEK values to unsigned char April 18, 2009 (0.49) - Solved conflict with internal 'argument' variable April 18, 2009 (0.48) - Fixed string variable declaration issue with PDKSH April 17, 2009 (0.47) - CALL/TO to invoke functions April 17, 2009 (0.46) - Fixed problem where STEP in FOR could not be a float - Fixed crash in GETENVIRON if variable does not exist - NE for Not Equal '!=' April 16, 2009 (0.45) - Fixed bug with DEC() April 16, 2009 (0.44) - Fixed bug with erronuous code generation when using PDKSH April 15, 2009 (0.43) - Got rid of indent warnings on MacOSX April 15, 2009 (0.42) - Fixed duplicate function generation when importing from external libraries - Imported functions can contain spaces between name and arguments - Ability to specify type of arguments of imported functions April 15, 2009 (0.41) - Dynamic string allocations - Fixed READ/DATA issue April 14, 2009 (0.40) - Fixed 'grep' issue on Tru64Unix April 14, 2009 (0.39) - Fixed spaces between functionnames and argumentlist April 13, 2009 (0.38) - Improvements in uniq label creation - Reserved variable VERSION to contain version number - ERROR automatically cleared after calling ERR$ - Added ERROR=0 text message April 12, 2009 (0.37) - Made user added include files globally visible - Error messages globally visible - Fixed implicit variable declarations with INPUT and FOR April 12, 2009 (0.36) - INSTR third argument is optional now - MAKEDIR to create directories, DELETE now also can delete directories - CHANGEDIR to change working directory - SPC$(x) to print x space characters - TAB$(x) to print x tab characters - Always print in RAW mode to sourcefiles - Improved implicit variable declaration for FLOATING - Added command line option 'i' to include additional files to header - Added command line option 'l' to pass additional libraries to linker April 12, 2009 (0.35) - Redefined WAIT for network sockets (test15) - Added SERVER mode for accepting incoming TCP connections (test16) April 11, 2009 (0.34) - Basic network support with OPEN/CLOSE/SEND/RECEIVE (test15) - Fixed issues when passing \r\n in strings April 10, 2009 (0.33) - Changed POS to GOTOXY (like other BASIC's) - Fixed compilewarning in OSF1 (Tru64Unix) - Added WAIT statement for nostalgic reasons - Retracted POKED, PEEKD, COPYMEM April 9, 2009 (0.32) - Now really fixed DEF FN issue April 9, 2009 (0.31) - Fixed DEF FN issue with global declaration - Implemented RENAME TO - CLEAR to clear the terminal screen (ANSI compliant terminal) - COLOR to setup terminal colors (ANSI compliant terminal) - POS to put cursor to position (ANSI compliant terminal) April 8, 2009 (0.30) - Added runtime error for DELETE - Fixed CONST issue with global declaration - Implemented OPEN x FOR DIRECTORY AS , also CLOSE FILE/CLOSE DIRECTORY - GETFILE to read files from opened directory - redesigned ERR$ into function April 7, 2009 (0.29) - TRAP can be set to ON or OFF - RESIZE to resize memory claimed with MEMORY - Added runtime check to MEMORY - Added ABS - Possibility to define C-code with USEC/ENDUSEC April 6, 2009 (0.28) - Fixed calculation of address in PEEK/PEEKD - Fixed return of ADDRESS function - Changed TIMEVAL to TIMEVALUE - Changed INTEGER to NUMBER because of confusion with C int/long April 5, 2009 (0.27) - POKED, PEEKD, ADDRESS - Added runtime error checks TRAP, CATCH, RESUME April 3, 2009 (0.26) - added memory checks for GETBYTE, PUTBYTE, COPYMEM, FREE - in case of errors also mention actual file - GOTO and LABEL April 3, 2009 (0.25) - housekeeping of temporary files - added FREE to release claimed memory with MEMORY - added COPYMEM - fixed potential bugs with SIZEs of GETBYTE, PUTBYTE, COPYMEM April 2, 2009 (0.24) - COPY, DELETE - fixed conversion warning with empty functions - redesigned SEEK statement April 2, 2009 (0.23) - added TELL and SEEK - added DEF FN, CONST April 1, 2009 (0.22) - added PUTBYTE, GETBYTE for accessing binary files April 1, 2009 (0.21) - added TIMEVAL - remove ending \r from READLN March 31, 2009 (0.20) - added ISTRUE, ISFALSE - fixed problem in assigning values to arrays - added time functions NOW, DAY, MONTH, YEAR, HOUR, MINUTE, SECOND, WEEKDAY$, MONTH$, WEEK - added boolean functions ODD and EVEN - added SEED and RND, reserved variable MAXRANDOM March 29, 2009 (0.19) - function names also can be parsed standalone, e.g. without assignment - at every operation on temporary string buffer intialize to 0 March 28, 2009 (0.18) - corrected GETKEY in VIM syntax file, should appear as function - GETKEY also should be available in small letters - added '-w' parameter to compile with warnings, now default is without March 28, 2009 (0.17) - apply indentation for FUNCTIONS and SUBS - parameter '-d' to define TEMP dir where temporary files are stored March 27, 2009 (0.16) - fixed issue with DECLARE and FUNCTIONS/SUBS - fixed potential bugs with other implicit declarations in FUNCTIONS/SUBS - DECLARE can take multiple arguments now March 27, 2009 (0.15) - END IF is also accepted - END SUB is also accepted - END FUNCTION is also accepted March 26, 2009 (0.14) - redesigned PRINT statement, dropped PRINTSTR statement - because of this, functions returning a string should be written with '$'-sign: concat$, left$, right$, mid$, hex$, chr$, reverse$, arguments$, lcase$, ucase$, getenviron$, str$ (see other BASICs like GWbasic, C64 Basic etc) - fixed issue with INSTR - renamed ARGUMENTS$ to ARGUMENT$ - functions and subs can accept arguments now March 25, 2009 (0.13) - CONCAT can take random amount of arguments - added NULL check for SYSTEM command March 24, 2009 (0.12) - returnbase of MID is 1 now - added UCASE and LCASE - internal improvements in parser March 24, 2009 (0.11) - reworked SUB/ENDSUB - check if RETURN exists in FUNCTION March 23, 2009 (0.10) - added version '-v' argument flag - fixed potential problem with string detection in PUSH - cleaned up variable declarations in KSH functions - renamed global vars with 'g_' for better readability - returnbase of INSTR is 1 now - rewrote FUNCTION/ENDFUNCTION statements March 22, 2009 (0.9) - added NULL checks for STRING functions March 20, 2009 (0.8) - added GETENV() March 19, 2009 (0.7) - added PUSH and PULL - READ/DATA can handle float values - CALL only needed when SUB is defined at end of program - fixed some small potential bugs March 18, 2009 (0.6) - improved getting arguments to BACON using 'getopts' - improved statement matching routines March 18, 2009 (0.5) - improved parsing of imported functions March 17, 2009 (0.4) - arguments to define compiler, string memory usage March 17, 2009 (0.3) - changed internal housekeeping of numeric variables to long - changed POKE, added MEMORY to claim memory - replaced DURING for UNTIL March 16, 2009 (0.2) - renamed internal naming for FUNCTION to avoid mangling - fixed READ to allow usage with arrays - fixed INPUT to allow usage with arrays - fixed FOR to allow usage with arrays - added variable check in READLN statement - added variable check in WRITELN statement - fixed ASC function for high ASCII March 15, 2009 (0.1) - Initial release