Table of Contents

LynPlexS Change Log

Version 0.01.31 2014/04/14

  • BugFix: Static composites not being addressed correctly.
  • Change: Composite types passed to functions by reference as default.
  • Change: option trace changed to option test.

Version 0.01.30 2014/03/04

  • Internal changes to scope processing.
  • Procedure calls are now supported without parentheses enclosing the arguments.

Version 0.01.29 2014/01/06

  • BugFix: Request for the handle for an array generates bad assembler code.
  • put statement now displays numeric values without leading space.
  • str function now returns numeric values without leading space.
  • data statement can now have numeric values as well.
  • read [data] target can now be an element of a composite type.
  • get data now supported as a synonym of read [data].

Version 0.01.28 2013/12/15

  • BugFix: Winsock functions being incorrectly called with cdecl linkage.
  • Drop support for csize and csize$ (still supported as clen and cstring).
  • Statement sfunction now generates stdcall function name without “@n” decoration.
  • Variable now allowed to be declared with both external and public scope.
  • Support enum name as a type declaration.
  • Support % as a synonym of mod.

Version 0.01.27 2013/11/28

  • BugFix: Character constant not recognised as string in comparison and assignment.
  • BugFix: Working storage not being initialised correctly at start of program.
  • Support enum.
  • Add constant $$library equivalent to library().
  • Internal changes to symbol processing.

Version 0.01.26 2013/11/19

  • Drop support for space$ and null$ (still supported without '$' suffix).
  • Internal changes to constant processing.

Version 0.01.25 2013/11/03

  • BugFix: Syntax error if external variables allowed to default to type xlong.
  • Drop support for stuff$ (still supported without '$' suffix).
  • Support replace as a synonym of stuff.
  • Drop support for hex$ and hexx$ (still supported without '$' suffix).
  • Drop support for bin$ and binb$ (still supported without '$' suffix).
  • Drop support for oct$ and octo$ (still supported without '$' suffix).
  • Drop support for inline$ and infile$ (still supported without '$' suffix).
  • Merge functions of csize$ and cstring.

Version 0.01.24 2013/10/27

  • Add alias with “@n” suffix to .def file for use by dlltool.
  • Drop support for lcase$ and ucase$ (still supported without '$' suffix).
  • Drop support for trim$, ltrim$ and rtrim$ (still supported without '$' suffix).
  • Drop support for chr$ (still supported without '$' suffix).
  • Drop support for str$ , string$ and signed$ (still supported without '$' suffix).
  • Drop support for cstring$ (still supported without '$' suffix).
  • Support clen as a synonym of csize.

Version 0.01.23 2013/10/08

  • Internal changes to expression evaluation result processing.
  • Support repeat as a synonym of chr.

Version 0.01.22 2013/09/29

  • Internal changes to binary and unary operation processing.

Version 0.01.21 2013/09/28

  • Internal changes to binary and unary operation processing.

Version 0.01.20 2013/09/22

  • BugFix: program crashes when processing at in put statement.
  • BugFix: Entry function being called even if there is entry code preceding it.
  • String concatenation using colon now supported in all statements.
  • Parsing now continues to the end of the line after errors detected.
  • Drop support for tab.
  • Drop support for gosub.

Version 0.01.19 2013/09/18

  • Drop support for left$, ljust$, rclip$, right$, rjust$, lclip$, cjust$ and mid$.
  • Drop support for program$ and version$ (still supported without '$' suffix).
  • All string functions, except error$ and csize$, can now be entered withut the '$' suffix.
  • Support and, or, xor and not as logical operators.

Version 0.01.18 2013/09/17

  • BugFix: Syntax error using store back with array elements.
  • Internal changes to start and end code generation.
  • Internal changes to token evaluation.
  • Support ord as a synonym of asc.
  • Support load on import statement.

Version 0.01.17 2013/09/03

  • BugFix: Clone string always calling clone.a0 even if address is in $$ebx.
  • Call xxx.InitOnce at the start of each function to set up prolog code.
  • Function declarations now default to external scope.
  • Support prolog processing in separately compiled modules.
  • Retrieve correct address for variable length string in component when using ampersand(&).

Version 0.01.16 2013/07/10

  • BugFix: mid padding to source length if no length supplied.

Version 0.01.15 2013/03/12

  • BugFix: External funcaddr declarations causing compiler to crash.
  • Drop support (temporarily) for and, or, xor and not as binary operators.
  • New intrinsic function left to replace left$, ljust$ and rclip$.
  • New intrinsic function right to replace right$, rjust$ and lclip$.
  • New intrinsic function centre/center to replace cjust$.
  • New intrinsic function mid to replace mid$.

Version 0.01.14 2013/02/24

  • Allow type declarations anywhere in the program.
  • Allow keywords as variable names in function definitions.

Version 0.01.13 2013/02/17

  • BugFix: When defining shared array with subscript, subscript given wrong type.
  • Add constants $$program and $$version equivalent to program$() and version$().
  • Force passing of arrays by reference.

Version 0.01.12 2013/02/08

  • BugFix: Compiler error reported when bad type defined.
  • Internal changes to composite processing.
  • Internal changes to string processing.
  • Variable length strings now supported in a type structure.
  • Support packed option on type statement.
  • Support fold statement within type blocks.

Version 0.01.11 2013/02/04

  • Bug Fix: Type alias processing not working at all.
  • Internal changes to assignment processing.
  • Support assignment to variables in declarations.
  • Additional option trace on/off on option statement.

Version 0.01.10 2012/12/16

  • Drop internal use of M4 preprocessor.
  • Internal changes to assembler generation.
  • Internal changes to expression processing.

Version 0.01.09 2012/12/12

  • Internal changes to assignment processing.
  • Internal changes to token processing.
  • cpSys has additional .ini file processing options.
  • wpWin has additional functions for dialog box controls.

Version 0.01.08 2012/12/04

  • Bug Fix: Duplicate export statement not flagged as nesting error.
  • Bug Fix: packed incorrectly marked as external in .dec file.
  • Internal changes to assignment processing.
  • Internal changes to token processing.
  • Internal changes to keyword processing.

Version 0.01.07 2012/11/27

  • Bug Fix: Arrays within a type not working correctly with a variable index.
  • Internal changes to token processing.
  • Internal changes to check processing.
  • Internal changes to symbol parsing.
  • Constant names are now case insensitive.
  • Duplicate constants removed from gdi32.dec (same name - different case).
  • Internal changes to user32.dec.

Version 0.01.06 2012/11/21

  • Internal changes to token processing.

Version 0.01.05 2012/11/17

  • Internal changes to keyword processing.
  • Internal changes to type processing.
  • Internal changes to scope processing.

Version 0.01.04 2012/11/17

  • Bug Fix: Store back not working correctly with arrays and composites.
  • Bug Fix: Spurious message 'composites not defined' displayed.
  • Internal changes to accumulator register handling.
  • Internal changes to memory stack handling.
  • Support store back option with », «, »>, «< (»= notation etc).
  • Support exported/external variables in .dec file.
  • Allow system constants to be defined anywhere.
  • Allow function declarations to be made in included files.
  • Drop type constants from psrsys.dec (use type() instead).
  • Support procedure/proc/func keywords as synonym of function.

Version 0.01.03 2012/11/07

  • Bug Fix: put without data in a sub caused a crash on return.
  • Bug Fix: Assembler comment ending in '…' treated as continuation.
  • Bug Fix: 'put' with multiple leading colons not generating spaces.
  • Internal changes to expression processing to drop use of file copx.bin.
  • Add compiler version identification string to assembler output.
  • Only generate initialisation code if prolog code has been generated.
  • Internal changes to string handling in psrsys.dll.
  • Internal changes to output handling in psrsys.dll.
  • Add %_Put… entry points as synonyms of %_Print… routines in psrsys.dll.

Version 0.01.02 2012/10/21

  • Bug Fix: Commented lines in import files were not being ignored.
  • Internal changes to kernel32.dec.
  • Change function declarations for Crypt… functions from cfunction to function in advapi32.dec.
  • Internal changes to advapi32.dec.
  • Internal changes to prolog generation.

Version 0.01.01 2012/10/02

  • Include missing GetSystemMetrics() $$SM_xxFIXEDFRAME in user32.dec
  • Include missing GetSystemMetrics() $$SM_xxSIZEFRAME in user32.dec
  • Drop remaining Xst… functions with a '$' suffix.
  • Use psrsys.dll and psrsysex.dll.
  • New psrconio.dll added as a replacement for xio.dll.

Version 0.01.00 2012/08/21

  • Support continuation lines in .dec files.
  • Allow for..next to still work in basic language mode.
  • Internal changes to goto/call/gosub processing.
  • Replace gosub in error messages with call.
  • Allow variable declarations within executable code.
  • comctl32.dec contains some previously missing contants.
  • XstStripChars can now keep characters in list instead.
  • psrsysex brought in line with latest version of compiler.

Version 0.00.99 2012/07/17

  • Include header and all comment lines in generated .dec files.
  • Escaped character constants must now be preceded by '!'.
  • Changes to psrsys.dll and xst.dec to correctly escape character constants.

Version 0.00.98 2012/07/17

  • Support store back option with +, -, /, *, &, |, ^, : (+= notation etc).
  • Handle non-escaped character constants correctly.
  • Fixed bug when calling Xst… functions with a '$' suffix in psrsysex.dll.

Version 0.00.97 2012/07/14

  • Fixed crash when returning command line in psrsysex.
  • docksplitter.dll changed to use psrsys & psrsysex.
  • combocolor.dll changed to use psrsys & psrsysex.
  • New psrmath.dll added as a replacement for xma.dll.
  • wpWin and cpSys now included as part of the Win32 extensions.

Version 0.00.96 2012/07/13

  • New psrsys.dll added as a replacement for xst.dec/xbl.dll.
  • New psrsysex.dll added as a replacement for xsx.dll.
  • All Xst… functions with a '$' suffix now have an alternative without '$'
  • Internal changes to led.dll.

Version 0.00.95 2012/07/10

  • Improvements to handling output from m4.
  • Internal changes to docksplitter.dll.
  • Internal changes to combocolor.dll.

Version 0.00.94 2012/07/09

  • import now supports a load/noload option.
  • import defaults to noload.
  • Re-instate call to initOnce for libraries.
  • Always generate _DllMain@12 label in xst only code.

Version 0.00.93 2012/07/04

  • Internal changes to symbol name processing.
  • Add column to deprecated suffix warnings.
  • Don't display original line as a comment during an asmend asm block.
  • Improve continuation checking following ending colon (:).

Version 0.00.92 2012/07/03

  • Internal changes to token processing.
  • Internal changes to symbol name processing.
  • Internal changes to deprecated suffix warnings.
  • Internal changes to option statement processing.
  • Internal changes to import statement processing.
  • Internal changes to inline assembler processing.

Version 0.00.91 2012/07/01

  • Support include again.
  • Support nested includes.

Version 0.00.90 2012/06/30

  • Fixed incorrect treatment of “\” in non-escaped strings.
  • format$ renamed to format.
  • Internal changes to format processing.
  • Internal changes to token processing.

Version 0.00.89 2012/06/24

  • Change “$” warning message to IDE friendly format.
  • Internal changes to file name handling.
  • Show library name and line number in error/warning messages when processing included code.
  • import now supports a noload option.
  • Change error message formats.
  • Internal changes to assembler comment generation.
  • Rationalise shared variable declarations.
  • Drop support for include (unintentional - oops!).

Version 0.00.88 2012/06/19

  • Change default option for console error display.
  • Drop conoff option.
  • Add console option.

Version 0.00.87 2012/06/01

  • Support var as a synonym of local/static.
  • Internal changes to dim processing.
  • Support public as a synonym of common/static.
  • Allow private for data objects - treat as a comment.

Version 0.00.86 2011/11/18

  • Internally convert remaining basic implicit code to plex explicit.

Version 0.00.85 2011/11/09

  • Support local as a synonym of auto.
  • Support static as an alternative to common to define global variables in root.
  • Internal changes to generation of 'move' assembler code.

Version 0.00.84 2011/08/23

  • Allow double quote characters to escape themselves in a string correctly.
  • Allow when all anywhere in a select block.
  • Internally convert all iff to ifz.
  • Drop support for iff.

Version 0.00.83 2011/08/02

  • Drop support for escape character in ordinary strings (“…..”).
  • Internal changes to end program processing.

Version 0.00.82 2011/07/24

  • Internally Change all string variable names to drop trailing dollar.
  • Allow asm … end asm.

Version 0.00.81 2011/07/19

  • Allow import of files other than .dec.
  • Internal changes to variable declaration handling.

Version 0.00.80 2011/07/17

  • Internally convert remaining force/nextforce to for … do … end.
  • Internally mark all strings containing backslash (\) as escaped.
  • Drop support for force/nextforce.

Version 0.00.79 2011/07/17

  • Drop support for select true.
  • Internally convert most force/nextforce to for … do … end.
  • Allow support for do next again.
  • Allow escaped strings (!“…..”) and (!'…..').

Version 0.00.78 2011/07/13

  • Variables declared in function statement recognised as local again.
  • Temporary change to report warning about use of deprecated suffixes.
  • xblib renamed psrlib.

Version 0.00.77 2011/07/06

  • for … do … end now implemented.
  • single line for now implemented.
  • Various changes as a consequence of the above.

Version 0.00.76 2011/07/04

  • Temporary change to report undefined variables when explicit is specified.
  • Various changes as a consequence of the above.

Version 0.00.75 2011/07/02

  • Internal changes to when processing.
  • Internal changes to symbol processing.
  • Shared/local variables now handled (more) correctly.

Version 0.00.74 2011/06/29

  • Fully Support to option in when statements.
  • Internal changes to file name and program name handling.
  • Fix bug in string processing that caused string to be converted to hex.

Version 0.00.73 2011/06/26

  • Fix bug in put processing that caused stack to be overwritten.
  • Internal changes to when processing.
  • Support is and to options in when statements.
    • (except for multiple to options on a single when statement.)
  • Support » or « as token for suppressing new line in put statements.
  • Internal changes to operator processing.

Version 0.00.72 2011/06/19

  • Temporarily drop support for for/next.
  • Internally convert all for/next to force/nextforce.

Version 0.00.71 2011/06/19

  • Temporarily support force as a synonym for for.
  • Temporarily support nextforce as a synonym for next.
  • Support <:> as token for suppressing new line in put statements.
  • Internal changes to string system constant processing.
  • Internal changes to debug and trace functions.
  • Internal changes to expression handling.
  • Add $$date and $$time system constants to give date and time of compilation.
  • Drop support for xpeeper optimiser (no source code has ever appeared!).

Version 0.00.70 2011/03/26

  • Internal changes to prolog processing.
  • Value in the PROGRAM statement no longer has to match the file name.
  • Extract trace and debug functions to a separate module.
  • First entry in keyword table (ABS) is now recognised correctly.

Version 0.00.69 2011/03/24

  • Internal changes to keyword, constant and type parsing.
  • Internal changes to debugging functions.

Version 0.00.68 2011/03/20

  • Internal changes to expression handling.
  • Internal changes to pop processing.
  • Embedded multi-line comments are now handled correctly.

Version 0.00.67 2011/03/16

  • Allow single quote characters as alternative to double quote.
  • Allow escaped strings (!“…..”).
  • Allow DEFINE(DEF) as an alternative to DIM.

Version 0.00.66 2011/03/13

  • Allow line continuation if last character is one of (,:=+-/*\%|&_) or (..).
  • Support PROCEDURE/PROC keywords.
    • FUNC not yet supported because of clash with variable name in compiler.
  • Allow double quote characters to escape themselves in a string.

Version 0.00.65 2011/02/26

  • Fix bug where assignments were picking up status from previous lines.
  • Internal code changes to symbol handling.
  • Internal code changes to function handling.

Version 0.00.64 2011/02/12

  • Internal code changes to assembler code generation.
  • Fix bug where …AT is not generating offset code correctly.

Version 0.00.63 2010/12/16

  • Allow variable and function names to be the same as type names.
  • Fix bug where shared definitions used in preference to local definitions.

Version 0.00.62 2010/12/08

  • Drop support for tick (`) and split bar (Œ) for concatenation.
  • Internal code changes to token type checking.
  • Internal code changes to function declaration processing.

Version 0.00.61 2010/12/07

  • Direct Assembler calls through single call function.
  • Change all ticks (`) to colons(:) in all PUT statements.
  • Internal code changes to assembler code generation.

Version 0.00.60 2010/12/05

  • Internal code changes to user type handling.
  • Support AT as synonym for TAB.

Version 0.00.59 2010/12/02

  • Drop support for #, ## as variable name prefixes.
  • Internal code changes to white space and position handling.

Version 0.00.58 2010/12/01

  • Support COMMON keyword (needs linkedit support as well).
  • Check for SHARED variables at root level if undeclared/undefined.
  • Drop support for ~, !, @, % and & as variable name suffixes.

Version 0.00.57 2010/11/29

  • Handle comments in included files correctly.
  • Drop use of hash values.

Version 0.00.56 2010/11/28

  • Internal code changes to simplify ASM statement handling.
  • Internal code changes to PUT processing.
  • Internal code changes to symbol parsing.

Version 0.00.55 2010/11/25

  • Internal code changes to handle parsing and conversion in a single pass.
  • Original line retained for display.

Version 0.00.54 2010/11/23

  • Support : as concatenation in PUT statements (but not in expressions - yet).
  • Internal code changes to comment handling.

Version 0.00.53 2010/11/21

  • Internal code changes to library, EXPORT and “.def” file handling.
  • Drop support for : as statement separator.

Version 0.00.52 2010/11/15

  • Internal code changes to parse/token handling.
  • Internal code changes to error handling.

Version 0.00.51 2010/11/12

  • Internal code changes to parse/token handling.
  • Internal code changes to separate space handling from token.

Version 0.00.50 2010/11/07

  • Internal code changes to status flag handling.
  • CASE no longer compulsory in SELECT CASE statement.
  • Set default for SELECT without options to TRUE.

Version 0.00.49 2010/11/02

  • Support repeat INCLUDE/IMPORT statements for the same library.
  • Internal code changes to library handling.
  • Internal code changes to READ/WRITE processing.

Version 0.00.48 2010/10/22

  • Fix bug in INCLUDE/IMPORT processing introduced in Version 0.00.43.
  • Internally Replace all XBLite style function headers with LynPlex style.
  • Internally Replace ' in all comment lines with //.

Version 0.00.47 2010/10/20

  • Internal changes to READ and WRITE processing.

Version 0.00.46 2010/10/19

  • Allow executable code before first function or without any functions.
  • Internal changes to undeclared function processing.

Version 0.00.45 2010/10/18

  • Drop support for 'IFT'.
  • Add system variable $$line to return current source line number.
  • Internal changes to FUNCTION/END FUNCTION processing.

Version 0.00.44 2010/10/17

  • Allow nested multi-line comments /* .. /* .. */ .. */
  • Internal changes to asm output processing.
  • Change error handling for Duplicate Definition.
  • Change error handling for Outside Functions.

Version 0.00.43 2010/10/08

  • New INCLUDE command to include types etc.
  • Internal changes to IMPORT processing.
  • Drop support for LIBRARY.
  • Start to change how errors are handled.

Version 0.00.42 2010/10/07

  • Internally change all 'IFT' statements to 'IF'.
  • Internally change all binary 'AND', 'OR' and 'NOT' operations to '&', '|' and '~'.

Version 0.00.41 2010/10/06

  • Internal changes to assignment to array processing.
  • Internally change all ':' to ';' when used as statement separators.

Version 0.00.40 2010/06/24

  • Drop test for declares already being made (it wasn't working anyway).
  • Internal changes to constant processing.
  • Internal changes to CONSOLE statement processing.

Version 0.00.39 2010/06/23

  • Internal changes to composite assignment.
  • Drop support for some type suffixes (@, @@, % %, &, &&, ~, ##) in basic mode.
  • Internal changes from 'kind' to 'class'.

Version 0.00.38 2010/06/22

  • Internal changes to label handling.

Version 0.00.37 2010/06/22

  • Internal changes to label handling.

Version 0.00.36 2010/06/21

  • Internal changes to space handling.
  • Internal changes to special character handling.
  • Internal changes to parsing.
  • Drop support for some type suffixes (@, @@, % %, &, &&, ~, !, ##) in plex mode.

Version 0.00.35 2010/06/17

  • Internal changes to function table.

Version 0.00.34 2010/06/15

  • Strings no longer truncated at 40 bytes
  • Fixed bug in m4 processing that caused comment lines to be compiled.

Version 0.00.33 2010/06/13

  • Change ALL command to TRACE.
  • Force explicit checking for all types.

Version 0.00.32 2010/06/13

  • Internal changes to symbol table.

Version 0.00.31 2010/06/12

  • Internal changes to address processing.

Version 0.00.30 2010/06/12

  • Internal changes to address processing.

Version 0.00.29 2010/06/12

  • Internal changes to address processing.

Version 0.00.28

  • Drop single quote as comment in PLEX mode.
  • Allow line continuation if last character is one of (,+-/*%|&`_) or (::).
  • Allow '`' as temporary alternative to 'Œ'.
  • Internal changes to address processing.

Version 0.00.27

  • Drop PRINT command.
  • Internal changes to token processing.
  • Allow ';' as synonym for ':' as statement separator.
  • Changes to error reporting.

Version 0.00.26

  • Internal changes to type processing.

Version 0.00.25

  • Internal structure changes to type table.

Version 0.00.24

  • Internal structure changes to type element table.

Version 0.00.23

  • Internal changes to inline assembly.
  • Internal changes to type and union flag processing.

Version 0.00.22

  • Internal changes to token table initialisation.
  • Allow CALL as a synonym for GOSUB.

Version 0.00.21

  • Rewrite and simplify if/then/else in PLEX mode.
  • Allow WHEN as a synonym for CASE in SELECT blocks.

Version 0.00.20

  • correct problem with changing PLEX/BASIC default language option to PLEX.
  • change EXPLICIT/IMPLICIT default option to EXPLICIT.

Version 0.00.19

  • Rename to LynPlexS
  • change PLEX/BASIC default language option to PLEX.

Version 0.00.18

  • OPTION command renamed from OPTIONS.
  • Internal structure changes to state table.

Version 0.00.17

  • Internal structure changes to token table.
  • Add ID to all syntax errors.

Version 0.00.16

  • PLEX/BASIC language option introduced (default is BASIC).
  • Support if/then/do/end in PLEX mode.

Version 0.00.15

  • OPTIONS command introduced.
  • EXPLICIT/IMPLICIT on OPTIONS statement introduced (default is IMPLICIT).
  • EXPLICIT command dropped - now part of options.

Version 0.00.14

  • Drop duplicate symbol table (SymbolInner).
  • Change all error handling labels.

Version 0.00.13

  • Minor changes to console output.
  • Internal structure changes to state table.
  • Prolog code is now generated correctly for code before first function.

Version 0.00.12

  • Internal structure changes to options table.
  • Internal structure changes to errors table.
  • Remove test for include folder in LynPlexB parent folder.
  • Load copx.bin from same folder as LynPlexB.exe.

Version 0.00.11

  • Allow function calls before first function.
    Note: This is an interim step to be partially consistent with the other versions which allow code before the first function call.
  • Internal structure changes to keyword and character set tables.

Version 0.00.10

  • Drop MAKEFILE command.
  • Drop ';' in PRINT statements.

Version 0.00.09

  • Support DO…END.

Version 0.00.08

  • Allow ELSEIF (or ELSE IF) in single line IF statements.

Version 0.00.07

  • Drop '?' as synonym for PRINT.
  • Allow PUT as synonym for PRINT.
  • Allow 'Œ' as temporary alternative to ';'.

Version 0.00.06

  • Allow ELSEIF (or ELSE IF) in IF blocks.

Version 0.00.05

  • Allow lower case keywords.
  • 'END' now allowed without type being specified.

Version 0.00.04

  • Allow external variable access across separately compiled modules.
  • Allow TYPEs to be SHARED/STATIC
  • Call assembler (GoAsm) directly after compilation.

Version 0.00.03

  • Suppress makefile generation.
  • Suppress batch file generation.
  • Suppress rc generation.
  • Always display version.

Version 0.00.02

  • Change -nowinmain/-nodllmain options to -winmain/dllmain.
  • Suppress WinMain unless requested.
  • Change %_StartApplication to %_Start.(program) if WinMain not requested.
  • Suppress creating make file, batch file and rc file.

Version 0.00.01

  • Allow compilation to continue after displaying version information.
  • Allow single line comments beginning with '//'
  • Allow multi-line comments

lynplexs/change_log.txt · Last modified: 2014/05/28 08:48 (external edit)