                                                                                                                                                       
                         StrongBS v3.05 (10th Jan 2009)
                           Mohsen Alshayef 1993-2009

                          email: malshayef@gmail.com



This file describes the changes and history of StrongBS since v2.10:

The list is in reverse chronological order.

Version 3.05 (10th Jan 2009)
============================

10-01-2009 - Fixed a bug with brackets removal code that omits to account for comparators in the evaluation. Thanks to John Kortink for reporting it.
           - 

Version 3.04 (9th Jan 2009)
============================

09-01-2009 - Added a New Option to Convert Constant Strings to variables, providing the constant string length is 4 chars or above and at least
             repeated twice in the programme.
           - Fixed a bug in DeadCode GOTO removal code. Thanks to Ewen Pring for reporting it.



Version 3.03 (8th Jan 2009)
============================


08-01-2009 - New menu layout for the Routines options.
           - THEN GOTO <linenumber> and ELSE GOTO <linenumber> are changed to THEN <linenumber> , ELSE <linenumber>.
           - GOTOCode updated to Convert GOTO <linenumber> ---> ENDCASE TO WHEN also can recognise and convert THEN/ELSE <line_numbers>.
           - Fixed bug in PRINT Concatenation. Expression end ommits to check for ELSE and THEN keywords.
           - Fixed bug in RoutinesExit Converter code.
           


Version 3.02 (7th Jan 2009)
===========================

05-01-2009 - Improved DeadCodeRemover to include blank IF, THEN, and ELSE statements

04-01-2009 - Added "QUIT" to RemoveDead code routine and update for new format.

03-01-2009 - Fixed a bug in the assembler that was introduced with the 26/32 bit conversion. MOVEQ was assembled into MOV instruction ;-)

01-01-2009 - Numeric Expression evaluator can now generate fractions e.g. "100/200" will be replaced by ".5".
           - Numeric Expression Evaluator will now remove the unnecessary *1 and 1* in expression/statements.
           - Bracket removal can do signs conversions -(a+b-c) becomes -a-b+c.
           - Small tweaks to improve CodeCraft outputs.
           - Tweaked the VarsLookup code, the RealVars and RealArrayVars renaming codes with more standard codes.
           - Differentiating between & sign for hex numbers and directives improved for crunched programmes.
           - Colons are now removed after [ in assembler. Trick useless keyword mark [] is also allowed :-)
           - Improved the shortest Directives converter code to cope with already compressed programmes.
           
           

31-12-2008 - Assembler entry and exit detection codes improved to cope with already tightly compressed BASIC programms.
           - Code library update.
           - Detection of Test Statements updated/improved.
           - Variables search routine speeded up while remaining 26/32 bit neutral code.

30-12-2008 - Improved the numeric expression evaluation code. Better and more handling of features. Still more features to go ;-)
           - Improved the brackets removal code. Better and more handling of features. Still more features to go.
           - Improvements made to the ConstantVars replacement code.

24-12-2008 - Working on a new NumericExpression Evaluation Code.

23-12-2008 - Major re-write of the NumberEvaluationCode.
           - ConstVars after UNTIL are now fixed in ConstantVarReplace Code.

Version 3.01 (22nd Dec 2008)
============================

22-12-2008 - Release version for test.

21-12-2008 - Quoted strings inside *Commands are now handled. CommandToOSCLI code improved to handle long lines.
           - RemoveUnusedVars code now does not remove var if part of PROC|FN parameter call. This is a quick fix
             to avoid errors due to DEFPROCs|FNs using RETURN parameters. Better fix would be to check for these
             procedures and functions having RETURN parameters. Solution is reasonable due to complexity.
           - Bug in ConvrtToSPC fixed.

20-12-2008 - Fixed a bug that caused constant strings in INPUT statements to be converted to shortest.
           - Updated the RemoveGarbageLines codes to check for more possible lines.

19-12-2008 - Fixed a bug in NumEvalCode that did not cope with binary numbers.
           - Fixed a bug that caused multi-line assembler directives to be concatenated on IF lines.
           - SplitLineCode will be called if AssemConcat or NumEval options are selected.
           - AssemblerCode can now cope with register number in lower case hex.

18-12-2008 - ConvertConstantVars now copes with assembly listing properly and generates errors.
           - JoinDCCode updated to cope with large lines of directives.
           - Fixed bug in AssemSkipOpcode code that forgetted to skip <condition> codes in arth/logical instructions.
           - Updated and tweaked the ConvertRegNum Code to be more idependent.

17-12-2008 - ConvertIFEND code now skips empty and REM lines during the search for ENDPROC and END
           - ARMv4 and ARMv5 and FP instructions added to the tables. Instructions made compatible with BASIC v1.39 inline assembler.

14-12-2008 - Added functionality in ConvertIFEND to do check for END:ENDPROC.

13-12-2008 - NumFractionCode improved.
           - Fixed a bug that caused crash when compressing an Empty Program (i.e. only has bytes &0D &FF) ;-)
           - Fixed a bug that caused brackets in assembler rgeister list (e.g: LDMFD R13!,{0-(var%-0)} to be evaluated.
           - Improved the assembler routines and jump tables reading them for assembling more instruction ARM v4/5 instructions read :-)
           - Tweaked the variables seacrh routines and reduced the instructions code size.
           - New Option "Convert IF....END" added to the convertion options. Still to improve the code to cope with END keywords.
           - Testing and and hunting for bugs.
           - Improved the ConstantVars codes. Still to improve it to cope with Assembler sections without being dependent on other option.
           - Today is back to work, so little will be done in the coming days.

Version 3.00B (12th Dec 2008)
=============================


12-12-2008 - Bug fixed in StringConvertCode to convert strings inside *Commands.
           - Added code to check valid BASIC programme is generated following the completion of each compression code.
11-12-2008 - Bug fixed in DeadCodeRemover that caused other statements to be misinterprted followed OSCLI"QUIT" failure to decode.
           - ASCConverter can now cope with brackets and multi-""" without depending on the RemoveBracketsCode.
           - Improved the EvalSYS Code.
           - Bug fixed in VduToPrintCode that converted &D and &22 to string.
10-12-2008 - Fixed a bug in the LineNumbering code with occurs with very large files having >65279 lines.
           - Improved the SplitLines code to split lines with WHEN and OTHERWISE statements
           - Bug fixed in DeadCodeRemover code that caused an IF FALSE<>FALSE line to be removed.
           - Bug fixed in JoinDCD and ConvertDCD codes which only occur with very large already compressed files.
09-12-2008 - Assmbler Code now codes with immediate ASC without requiring the ASC Converter Code
           - DeadCodeRemover utility updated


Version 3.00A (08th Dec 2008)
=============================

09-12-2008 - The Remove Empty PROCedure code improved
           - Need testers to test on a 32-bit machine (Ioynix)

08-12-2008 - Convertion of all code to 26/32 bit neutral is now complete.
           - Disabled the crunch option as the code is not 32 bit compatible.
           - Converted BASICTools Module to 32-bit compliant module.
           - Code release in "Alpha Test" state as it is not testing fully after conversion.
           - The Remove Empty PROCedure option is yet to be called within the programme.

Version 2.12 (25th Sep 2008)
============================

11-10-2008 The RemoveUnused PROCs and RemoveUnused FNs codes are made 26/32 bit neutral.
10-10-2008 Added new Option to Remove Unnecessary formatters in PRINT statements.
10-10-2008 Complete re-write of the PRINT concatenator code. More efficient and faster.
09-10-2008 An empty PRINT statement between two constant string PRINTs was not replaced to '.
03-10-2008 Added code to remove excess ;;;; (semi-colons) in PRINT statements (code requires
           improvement to cope with excess ; after expressions of PRINT statements
02-10-2008 Code to remove blank line removed from REMarks Removal Routine
01-10-2008 REMarks code updated for 32_Bit
26-09-2008 Revisited some of the LIBRRAY code
25-09-2008 RETURN as end of a line is no longer concatenated. Missed it from the forbidden tokens list :-(
 
Version 2.11 (25th Sep 2008)
=============================
- Internal version copy of version 2.10 for test purpose
- Work starts on examining the 26 bit and 32 bit compliant codes

Version 2.10 (25th Feb 1998)
=============================
- Last release in Feb 2008


StrongBS  Mohsen Alshayef 1993-2008

Contact details:
----------------

Mohsen Alshayef,
email: malshayef@gmail.com
