ABB Motion Contact Us  


Mint (v5) Compilers

Mint Compilers are components of Mint WorkBench which compile Mint programs into compiled MEX files that are downloaded to the controller.

All drive and controller firmware has a Mint Virtual Machine (MVM) embedded into it. The MVM and Mint Compiler are designed for a certain 'target format'. When there are major revisions to Mint, the target format is increased. The current target format is 13. For each target format, there may be several revisions of MVM and Mint compiler. See the firmware revision history or firmware readme file to see which target format a build of firmware uses.

When a new MVM or Mint compiler is released, they will be packaged with the firmware being released at the time as controller Mint System Files. There may be occasions though when it is desirable to use the latest compiler (for a given target format) with an existing version of firmware. The Mint Compilers can be downloaded from this page. To install the compilers, download the system file and then select 'Install System File' from the Mint WorkBench Tools menu.

These files should only be used under the direction of technical support.

Mint Compilers

Target Format
Version
Release Date
Download
14
January 2011
14
July 2010
14
December 2009
14
May 2009
13
January 2011
13
July 2010
13
December 2009
13
May 2009
13
February 2009
13
December 2008
13
November 2008
13
October 2008
13
April 2008
13
December 2007
13
September 2007
13
July 2007
13
February 2007
13
December 2006
13
November 2006
13
October 2006
13
August 2006
12
July 2007
12
February 2007
12
December 2006
12
November 2006
12
October 2006
12
August 2006
12
April 2006
12
March 2006
12
January 2006
12
December 2005
11
October 2005
11
September 2005
11
August 2005
10
June 2010
10
November 2008
10
December 2006
10
August 2006
10
February 2005
10
January 2005
10
November 2004
10
July 2004
10
March 2004
10
August 2003
10
July 2003
9
December 2006
9
August 2006
9
February 2005
9
January 2005
9
November 2004
9
July 2004
9
April 2004
9
August 2003
9
July 2003
9
April 2003
9
February 2003
9
October 2002
8
December 2006
8
August 2006
8
February 2005
8
January 2005
8
November 2004
8
July 2004
8
March 2004
8
August 2003
8
July 2003
8
April 2003
8
February 2003
8
October 2002
7
February 2002

Revision History

MintMT Compiler v13.8

Released: April 2008.
Target Format: 13.

New Features:

  • Add new data conversion keywords: CVTFLT2INT, CVTINT2FLT, CVTFLT2IEEE, CVTIEEE2FLT.
  • Add Immediate If operator IIF.
  • Merge the semantic functions LBound() and UBound().
  • Avoid generating code to convert from native to neutral and immediately back again (ditto for neutral to native).

NCR Fixes:

  • NCR2714 - Initialisation sequences that contain nulls do not generate an error.
  • NCR2713 - Functions can return incorrect values.
  • NCR2698 - The scope override operator cannot be chained.
  • NCR2696 - The semantic rules governing the result type of an expression involving only literal values are not adhered to.
  • NCR2686 - The expression used as a condition in If, Repeat and While statements is not asserted to be numeric.
  • NCR2679 - The unary minus operator when applied to the value 0x80000000 results in a "value out of range" error.
  • NCR2674 - Structures local to subroutines and functions generate a "used without being initialised" warning.
  • NCR2673 - The attributes for a declaration returned to the WorkBench can be incorrect.
  • NCR2669 - Using adjacent commas in a square bracket parameter list generates an internal error.

[top]

MintMT Compiler v13.7

Released: December 2007.
Target Format: 13.

New Features:

  • Merge the semantic functions LBound() and UBound().
  • Avoid generating code to convert from native to neutral and immediately back again (ditto for neutral to native).

NCR Fixes:

  • NCR02631 – A comma after a terminal should generate an error.
  • NCR02632 – The error "Expected <identifier>" generated in CParser::Declare() is misleading.
  • NCR02633 – Type names cannot have their scope overridden.
  • NCR02635 – The auto-complete pop-up help does not work with an empty program.
  • NCR02645 – Setting the task priority or quantum to a floating-point value does not result in the nearest integer being used.
  • NCR02646 – Hovering over a dot parameter returns the declaration of the MML function.
  • NCR02647 – The pop-up list of matching identifiers includes language keywords that are included for compatibility reasons alone.
  • NCR02652 – The line "Dim x As" causes the compiler to fail with an access violation.
  • NCR02661 – An array passed to a subroutine that uses it to configure a cam table generates a compilation error.
  • NCR02663 – Using the Controller data-type as a function return type does not report the error until the result is used, but the message is not clear.
  • NCR02667 – The Is operator does not generate any code for the Case element it is in.

[top]

MintMT Compiler v13.6

Released: September 2007.
Target Format: 13.

New Features:

  • Enhance the Select statement so that Select Case and Case Else are considered as single keywords, and to also allow Select <expression>.

NCR Fixes:

  • NCR02547 – Printing an expression that is zero added to a function call or a function call added to zero causes an access violation.
  • NCR02548 – The Shift command can be used on a variable of type Time when it should generate a compilation error.
    NCR02550 – The Controller data-type is highlighted in the editor the same as items read from the symbol table.
  • NCR02551 – A program that compiles with errors still produces an MEX file.
  • NCR02552 – Compound keywords beginning with "End" are only recognised if they have one space separating the components.
  • NCR02553 – Setting the global warning level to zero causes Case ranges to not have their usage checked.
  • NCR02554 – Declared but not used warnings are issued when the global warning level is set to zero.
  • NCR02573 – Multiple declarations are not detected if the multiple declarations are within a block-structured statement (like a loop).
  • NCR02578 – The items shown in the editor's auto-completion pop-up can include multiple entries.
  • NCR02579 – A v4 labelled event declared within a module does not generate an error if its name is shared with an MML function.
  • NCR02621 – The wrong line number is sometimes highlighted when single-stepping.
  • NCR02622 – Syntactic errors in an ElseIf condition are reported as errors on the line number of the opening If statement. This also affects Case elements of a Select statement.
  • NCR02623 – Members of a structure passed as a parameter are not accessed correctly.
  • NCR02624 – Memory leaks occur when a program with more errors than MaxErrors is compiled.

[top]

MintMT Compiler v13.5

Released: July 2007.
Target Format: 13.

New Features:

  • Speed up the way that declarations are located by caching them inside each module.
  • Speed up the handling of literal values by using a hash table.
  • Evaluate constant indexing to the equivalent linear index and use this to generate more efficient code.
  • Enhance the peephole optimiser by:
    - Replace "pushv 0 : ne.x.y" with "affirm.x".
    - Enhance the replacement of "pushv 0 : eq.x.y" with "not.x" to allow it to work with both integer and floating-point zero.
    - Replace "affirm.i : jumpz/nz" with "jumpz/nz".
    - Make removing consecutive line instructions more efficient.
  • Optimise the If statement when used to assign a variable with _true or _false to make it become a simple assignment.
  • Enhance the FindDeclaration() function to work more reliably.
  • Enhance the semantic analyser to cull conditional blocks that cannot be reached (due to a literal condition).
  • Allow the use of the square bracket compound parameter in user calls.
  • Tidy up the way that events and tasks usage is monitored.
  • Allow the character case of MML functions to be adjusted dynamically.

NCR Fixes:

  • NCR02480 – User declarations may use the same name as an event without generating an error.
  • NCR02494 – The compiler can crash with an access violation while editing.
  • NCR02510 – Incorrect code is generated for Input/Print when used with a floating-point variable and a Using clause with one parameter.
  • NCR02512 – Commands can take multiple parameter lists by enclosing each in round brackets and placing them adjacent to each other.
  • NCR02514 – Warnings about parameter declarations superseding others shows the parameters parent declaration rather than its own.
  • NCR02516 – The Select statement does not monitor whether the return variable of a function is set for all Case's enclosed.
  • NCR02536 – Certain illegal character sequences can crash the compiler.
  • NCR02537 – Two identical Define statements can cause the pre-processor to fail with a stack overflow.
  • NCR02546 – A Pause statement composed of a bracketed expression and an equality test fail because it looks like a 'set' call.

[top]

MintMT Compiler v13.4

Released: February 2007.
Target Format: 13.

New Features:

  • Supports DLL interface IMT4 – Provides the mechanics for the enhanced editor functionality to operate.
  • Make compiler options compound keywords to make auto-completion work more smoothly.
  • Store a pointer to a terminal’s declaration to speed up compilation.
  • Allow integer literals that use the IP# prefix.
  • Allow integer literals that use the IEC 61131-3 standard TIME# and T# prefix.

NCR Fixes:

  • NCR02453 – Some error messages give misleading information.
  • NCR02462 – The "End Structure" delimiter under compatibility mode 5000 generates an odd error regarding "End(tructure)".
  • NCR02465 – A hexadecimal literal prefixed with "0X" will be treated as zero.
  • NCR02466 – A task can be declared inside a loop without it generating a compilation error.
  • NCR02468 – Using redirection with an intrinsic command or function produces internal errors.
  • NCR02469 – The Controller data-type can be used in compatibility mode 5000.
  • NCR02484 – Using Continue when it is inside a critical section nested within the loop being continued causes a stack overflow.
  • NCR02487 – Adjacent commas can cause the compiler to loop indefinitely and adjacent dots can cause access violations.
  • NCR02491 – Multiple parameters can be specified by enclosing each within round brackets, but without using 'dot' notation.

[top]

MintMT Compiler v13.3

Released: December 2006.
Target Format: 13.

New Features:

  • Improve error text for calls made in wrong context.

NCR Fixes:

  • NCR02445 – Redirected MML commands produce a spurious compilation error.
  • NCR02446 – An I/O statement with multiple adjacent commas causes the compiler to loop indefinitely.

[top]

MintMT Compiler v13.2

Released: November 2006.
Target Format: 13.

New Features:

  • Improved optimisations.

NCR Fixes:

  • NCR02425 – Unterminated strings are not reported as being an error..
  • NCR02434 – Specifying a number of decimal places in a Using clause of an Input statement with integer data generates a compilation error.
  • NCR02436 – A comma separated list of expressions in the RHS of an MML call may not start with a comma.
  • NCR02437 – The EventPriority keyword can be used when MintV5.5Keywords is disabled.
  • NCR02439 – Literal values are not range checked if used with a binary operator when the other operand is not a literal.

[top]

MintMT Compiler v13.1

Released: October 2006.
Target Format: 13.

New Features:

  • Support WorkBench hover over help.
  • Default compatibility mode to 5000.
  • Add new compatibility modes, 5400 and 6000.
  • Allow subroutine and function declarations inside any static module.

NCR Fixes:

  • NCR02271 – The start-up block cannot be used in a scope override when combined with a member access operator.
  • NCR02273 – The Declarations that combine the scope override and member access operators cannot be looked up.
  • NCR02278 – Expressions of the form "<integer> . <identifier>" do not get trapped by the semantic analyser.
  • NCR02279 – Initialising a variable in a Dim statement using a function call causes spurious internal errors about the element size not being set.
  • NCR02281 – Non-constant expressions can be used with the EventPriority keyword, which should not be allowed.
  • NCR02289 – Character constants are treated as signed.
  • NCR02369 – Errors in expressions used in ElseIf are given an incorrect line number.
  • NCR02376 – String declarations do not validate the initialisation string to confirm its size is compatible.
  • NCR02378 – The construct Int(Val(<expression>) does not generate correct code.
  • NCR02379 – The Val() function does not convert correctly for bases other than ten.
  • NCR02382 – Floating-point literals that start with a decimal point can cause spurious compilation error
  • NCR02383 – The compiler crashes with an access violation if the expression is omitted from the Select statement.
  • NCR02384 – The Run Startup command produces an error in the code generator.
  • NCR02385 – A user defined function with parameters when called without any parameters causes an internal error during code generation.
  • NCR02386 – Pre-processor errors are duplicated by the syntax analyser.
  • NCR02387 – The Shift and Rotate commands do not detect an error if operating on a variable that is an array.
  • NCR02395 – The Time can be used as a data-type when “V5.5 keywords” is disabled.
  • NCR02396 – The evaluation of literal expressions where the result is small can lead to it being truncated to zero.
  • NCR02400 – The compiler does not detect that a statement that is an expression is an error.
  • NCR02404 – Certain statement types can be confused for MML set calls when they are not.

[top]

MintMT Compiler v13.0

Released: August 2006.
Target Format: 13.

New Features:

  • Allow structures to be initialised in a Dim statement.
  • Allow the priorities of Mint events to be user adjustable via the Mint keyword EventPriority.
  • Enhance the IPend keyword to allow it to accept the bank as a parameter, which avoids the need to set the Bank prior to calling IPend.
  • Enable arrays of type Time to be assigned a series of values as per Integer and Float arrays.
  • A CRC of the executable image embedded in the header of the MEX file allows corruption of the image to be detected.

NCR Fixes:

  • NCR02233 – Using character data in both the Select expression and Case expression causes incorrect code generation.
  • NCR02236 – The compiler can falsely report that a function return variable is not set for all paths through a function.
  • NCR02237 – The structure member access operator does not work correctly when combined with the scope override operator.
  • NCR02240 – Incorrect code is generated for string array structure members.
  • NCR02241 – The semantic analyser allows For loops to use MML functions as counters.
  • NCR02242 – The compiler can crash with access violations if the RHs operand to a dot parameter is omitted.
  • NCR02248 – Declaring a constant without an equals sign between it and its value crashes the compiler.

[top]

MintMT Compiler v12.7

Released: December 2006.
Target Format: 12.

New Features:

  • Improve error text for calls made in wrong context.

NCR Fixes:

  • NCR02445 – Redirected MML commands produce a spurious compilation error.
  • NCR02446 – An I/O statement with multiple adjacent commas causes the compiler to loop indefinitely.

[top]

MintMT Compiler v12.6

Released: November 2006.
Target Format: 12.

New Features:

  • Improved optimisations.

NCR Fixes:

  • NCR02425 – Unterminated strings are not reported as being an error.
  • NCR02427 – The IPend command generates a compilation error when assigned to.
  • NCR02434 – Specifying a number of decimal places in a Using clause of an Input statement with integer data generates a compilation error.
  • NCR02436 – A comma separated list of expressions in the RHS of an MML call may not start with a comma.
  • NCR02439 – Literal values are not range checked if used with a binary operator when the other operand is not a literal.

[top]

MintMT Compiler v12.5

Released: October 2006.
Target Format: 12.

New Features:

  • Support WorkBench hover over help.
  • Default compatibility mode to 5000.
  • Add new compatibility modes, 5400 and 6000.
  • Allow subroutine and function declarations inside any static module.

NCR Fixes:

  • NCR02271 – The start-up block cannot be used in a scope override when combined with a member access operator.
  • NCR02273 – The Declarations that combine the scope override and member access operators cannot be looked up.
  • NCR02278 – Expressions of the form "<integer> . <identifier>" do not get trapped by the semantic analyser.
  • NCR02279 – Initialising a variable in a Dim statement using a function call causes spurious internal errors about the element size not being set.
  • NCR02289 – Character constants are treated as signed.
  • NCR02369 – Errors in expressions used in ElseIf are given an incorrect line number.
  • NCR02376 – String declarations do not validate the initialisation string to confirm its size is compatible.
  • NCR02378 – The construct Int(Val(<expression>) does not generate correct code.
  • NCR02379 – The Val() function does not convert correctly for bases other than ten.
  • NCR02382 – Floating-point literals that start with a decimal point can cause spurious compilation error
  • NCR02383 – The compiler crashes with an access violation if the expression is omitted from the Select statement.
  • NCR02384 – The Run Startup command produces an error in the code generator.
  • NCR02385 – A user defined function with parameters when called without any parameters causes an internal error during code generation.
  • NCR02386 – Pre-processor errors are duplicated by the syntax analyser.
  • NCR02387 – The Shift and Rotate commands do not detect an error if operating on a variable that is an array.
  • NCR02395 – The Time can be used as a data-type when “V5.5 keywords” is disabled.
  • NCR02396 – The evaluation of literal expressions where the result is small can lead to it being truncated to zero.
  • NCR02400 – The compiler does not detect that a statement that is an expression is an error.
  • NCR02404 – Certain statement types can be confused for MML set calls when they are not.

[top]

MintMT Compiler v12.4

Released: August 2006.
Target Format: 12.

New Features:

  • None..

NCR Fixes:

  • NCR02233 – Using character data in both the Select expression and Case expression causes incorrect code generation.
  • NCR02236 – The compiler can falsely report that a function return variable is not set for all paths through a function.
  • NCR02237 – The structure member access operator does not work correctly when combined with the scope override operator.
  • NCR02240 – Incorrect code is generated for string array structure members.
  • NCR02241 – The semantic analyser allows For loops to use MML functions as counters.
  • NCR02242 – The compiler can crash with access violations if the RHs operand to a dot parameter is omitted.
  • NCR02248 – Declaring a constant without an equals sign between it and its value crashes the compiler.

[top]

MintMT Compiler v12.3

Released: April 2006.
Target Format: 12.

New Features:

  • Improve initialisation of structures.

NCR Fixes:

  • NCR02214: A Select statement with the expression missing causes access violations.
  • NCR02221: The compiler can crash if the "::" or "." operators do not have both operands supplied.
  • NCR02222: The event inclusion mask of a critical section is not range checked to ensure that it fits into 16 bits.
  • NCR02223: If multiple axes are specified in a call to CAMTABLE, then incorrect code is generated.
  • NCR02225: Concatenating strings when one is a constant causes incorrect code generation if the type is specified in the Const statement.

[top]

MintMT Compiler v12.2

Released: March 2006.
Target Format: 12.

New Features:

  • Allow structure initialisation in a Dim statement, but only for globals (unless the ZeroLocals option is enabled).
  • Allow the behaviour of the Chr() function to be controlled via a compiler option.

NCR Fixes:

  • NCR02192: Some error messages that expect something report that they found an empty string.
  • NCR02193: Initialisation of structure members is not flagged as an error. This is not allowed, as a Struct statement purely defines a template of a type and not an instance of one, and so cannot be initialised.
  • NCR02195: Subroutine calls whose first parameter starts with an operator do not compile correctly and generate an error. An example would be "doVectors -x, y". The workaround for this problem is to enclose the first parameter in brackets "doVectors (-x), y", though, in this case it can also be solved by doing "doVectors 0-x, y".
    NCR02200: The Run Startup command is not flagged as being in error when no start-up block is present.
  • NCR02201: The pre-processor can cause symbols to become merged, resulting in compilation errors. This happens when defines are expanded that have elements that are themselves defines.
    NCR02202: Variables of type time can cause incorrect code generation in certain circumstances.
  • NCR02204: L-value expressions that have an arithmetic operator at the root do not get detected by the semantic analyser.

[top]

MintMT Compiler v12.1

Released: January 2006.
Target Format: 12.

New Features:

  • Allow Define statements to be declared within modules. This improves compatibility with Mint v5.
  • Allow floating-point literals to start with a decimal point. This improves compatibility with Mint v5.
  • Improve the initialisation of modules by avoiding the insertion of initialisation data for dynamic modules that are not used. This reduces the size of the MEX file produced with no loss of functionality.

NCR Fixes:

  • NCR02173: String and character literals in a Define statement have their quotes removed by the pre-processor.
  • NCR02174: Arguments to an I/O statement do not enforce that parameters are separated by a comma or semi-colon.
  • NCR02175: Error messages that contain string literals are not always formatted correctly. NCR02176: The editor can crash while entering a program. This is due to the compiler crashing when certain illegal constructs are encountered (try typing "For" followed by a carriage-return). This will also affect the command line.
    NCR02177: The For loop does not complain if the variable is of type String or Time.
    NCR02178: Variables of type Time do not detect an incompatible type being used in an assignment.
  • NCR02179: The ElseIf keyword is not highlighted correctly.
  • NCR02182: Attempting to print a structure variable causes a code generator error.
  • NCR02183: Variables of type Time can be used in an Input statement.
  • NCR02185: Incorrect code can be generated for the Shift and Rotate commands/functions. NCR02186: The assignment of two arrays of structures does not ensure that the LHS and RHS types are the same.
  • NCR02188: The compiler does not detect recursive structure declarations.
  • NCR02189: Strange behaviour and crashing results when using string parameters.
  • NCR02190: Incorrect code is generated for assignments of the form "i = i - k".
  • NCR02191: The Run Startup command produces a compilation error.

[top]

MintMT Compiler v12.0

Released: December 2005.
Target Format: 12.

New Features:

  • Support for structures has been incorporated.
  • Support for MML API redirection has been incorporated.
  • Support for the time data type has been incorporated.
  • Support for the Echo get/set function has been incorporated.
  • Support for IEC 61131-3 integer literals has been incorporated (base 2, 8 and 16).

NCR Fixes:

  • None.

[top]

MintMT Compiler v11.2

Released: October 2005.
Target Format: 11.

New Features:

  • Added warning levels for controlling the behaviour of unnecessary semi-colons, too few or too many parameters when used with square bracket notation (except with calls in the axis call type (CircleA/HelixA/etc.)).

NCR Fixes:

  • Compiler does not detect that axis 32 is out of range.
  • Multiple Define statements with the same name are not detected.
  • Problem with line number reporting.

[top]

MintMT Compiler v11.1

Released: September 2005.
Target Format: 11.

New Features:

  • None.

NCR Fixes:

  • Too much memory is allocated for string variables.
  • The scope override operator is not usable in all situations.
  • Syntax analysis of Select statements causes access violation on destruction of the syntax tree.
  • Incorrect memory allocation for array parameters.
  • Define statements that contain two adjacent identifiers to be expanded such that the two identifiers become merged, causing a compilation error.
  • Incorrect indexing if the index of an array is a float.

[top]

MintMT Compiler v11.0

Released: August 2005.
Target Format: 11.

New Features:

  • First release of target format 11 for e100 products.

NCR Fixes:

  • None.

[top]

MintMT Compiler v10.9

Released: November 2008.
Target Format: 10.

New Features:

  • The ability to allow a comma to separate the terminal from the arguments in the Print, Input and Line statements.
  • The ability to call a parameterless subroutine using empty brackets.
  • The ability to handle missing RHS parameters in all cases for MML set calls.
  • The ability to handle ElseIf in a single-line If statement.
  • The ability to use bracketed parameter lists for the Run, End, TaskPriority and TaskQuantum commands.

NCR Fixes:

  • None.

[top]

MintMT Compiler v10.8

Released: December 2006.
Target Format: 10.

New Features:

  • Update target format 10 compiler to recognise some of the new langauge enhancements in target format 13 for cross compatibility.

NCR Fixes:

  • NCR02435 - Valid Mint programs that compile under later target formats do not compile under target format 10.

[top]

MintMT Compiler v10.7

Released: August 2006.
Target Format: 10.

New Features:

  • Extend syntax to allow () instead of . parameters in keywords.
  • Allow {} braces in array initialisation.

NCR Fixes:

  • None.

[top]

MintMT Compiler v10.6

Released: February 2005.
Target Format: 10.

New Features:

  • None.

NCR Fixes:

  • NCR02054: Incorrect code is produced when factoring an integer by 2.0.

[top]

MintMT Compiler v10.5

Released: January 2005.
Target Format: 10.

New Features:

  • None.

NCR Fixes:

  • NCR02036: The backslash character cannot be embedded into a string
  • NCR02044: The compiler fails with an access violation with unrecognised hardware.

[top]

MintMT Compiler v10.4

Released: November 2004.
Target Format: 10.

New Features:

  • None.

NCR Fixes:

  • NCR02020: Conditional expressions can fail with "Integer out of range" errors.
  • NCR02027: Using a Define that represents a subroutine call causes an error.
  • NCR02035: String constants that include the double quote character cause internal errors.

[top]

MintMT Compiler v10.3

Released: July 2004.
Target Format: 10.

New Features:

  • None.

NCR Fixes:

  • NCR01924: If a keyword has a large numeric value, then displaying this from the command line will give a different value than from a Mint program.
  • NCR01973: A command with more than one dot parameter does not compile correctly on the command line.
  • NCR01982: API functions that set strings do not work when an optional parameter is omitted.
  • NCR01989: The InStr() intrinsic function does not evaluate correctly with constant parameters.

[top]

MintMT Compiler v10.2

Released: March 2004.
Target Format: 10.

New Features:

  • None.

NCR Fixes:

  • NCR01833: The parsing of the values "0x", "0_" and "1.0e" does not check for numbers after these characters.
  • NCR01834: Jumps to the next instruction are not always optimised correctly.
  • NCR01842: The backslash character cannot be used in string literals without causing spurious errors.
  • NCR01862: Errors can be generated from text within a comment block.
  • NCR01886: If a constant is declared where the right hand side is an undeclared identifier, then no line number is reported in the error.
  • NCR01913: Array parameters that are only used to pass data in another call, but without the initial call being made cause a spurious error.
  • NCR01917: The scope override operator cannot be used with a for loop counter.
  • NCR01937: The function Str(x) crashes the controller if x equals zero.
  • NCR01938: Illegal MML calls like ABORT[0,1,2,3] generate incorrect errors.
  • NCR01953: A hexadecimal dot parameter that follows a decimal dot parameter causes a compilation error.
  • NCR01956: Assigning a character to a variable in a Dim statement causes an internal error.
  • NCR01957: The scope override operator can cause the compiler to crash if used in a section of dead code.
  • NCR01958: The scope override operator produces compilation errors when used with events that are defines (IN0, etc.).
  • NCR01961: The compiler fails with an access violation if an expression is divided by zero.
  • NCR01968: A call of the form "<sub-name> <arg-name>.." will cause the compiler to loop indefinitely.

[top]

MintMT Compiler v10.1

Released: August 2003.
Target Format: 10.

New Features:

  • Introduce the OPTION keyword to allow various compiler settings to be modified.
  • Allow multi-axis keywords that take a dot parameter to use multi-axis notation,
    e.g. CONTOURPARAMETER[0,2]._ctpSLEW_ANGLE = 15,10
  • Improve the consistency of numeric data output format.

NCR Fixes:

  • NCR01767: The line "If ReadKey._TERM2 = 'a' Then Print 'a'" generated a spurious run-time error.
  • NCR01768: The Option command can report that a constant was expected when a constant was supplied.
  • NCR01769: The `line <line-number> instruction is not inserted into the executable when the line mapping table is disabled.
  • NCR01771: Assigning a single value to an array (of values) produces a spurious compilation error if the types differ.
  • NCR01776: Assigning a string to an undeclared variable gives an error about type incompatibility as well as the undeclared variable.
  • NCR01779: Brackets cannot be used around the Using parameters of an Input statement for floating-point data.
  • NCR01780: Strange errors can be generated when the Using clause is used with two fields with integer and string data.
  • NCR01787: Multi-axis keywords called with a single axis and single value with a trailing comma cause an internal error. For example, the command "MOVEA[0] = 5," generates the diagnostic "Error 2100 - Internal Error - Stack offset cannot be negative (Peek)".
  • NCR01788: Stack underflows can result when dividing by a constant value.
  • NCR01796: Select Case statements with only one Case clause results in superfluous code.
  • NCR01797: The Asc function does not give an error when the parameter is an empty string.
  • NCR01801: GOTO and GOSUB can only be used to jump to a point within the current scope.

[top]

MintMT Compiler v10.0

Released: July 2003.
Target Format: 10.

New Features:

  • Implemented the syntax for critical sections of code, which enable multi-tasking and optionally events to be suspended for the duration of the block. This is done using the new block structuring keywords “Critical” and “End Critical”.
  • Added ability for a host to query a Mint executable running on a controller to determine the names of the tasks is required for the task status window in the WorkBench.
  • Precision loss warnings are specified in more detail.

NCR Fixes:

  • NCR01700: The compilers evaluation of the logical NOT operator is incorrect for floating point data.
  • NCR01721: Declaring a constant that includes a term in its RHS that has either not been declared or is non-constant crashes the compiler.
  • NCR01727: Using a named constant to initialise an array within a Dim statement does not work properly.
  • NCR01730: Out of range literal values are not detected in all circumstances.
  • NCR01731: A user-defined function with parameters could be called without any parameters and not be detected by the compiler.

[top]

MintMT Compiler v9.11

Released: December 2006.
Target Format: 9.

New Features:

  • Update target format 9 compiler to recognise some of the new langauge enhancements in target format 13 for cross compatibility.

NCR Fixes:

  • NCR02435 - Valid Mint programs that compile under later target formats do not compile under target format 9.

[top]

MintMT Compiler v9.10

Released: August 2006.
Target Format: 9.

New Features:

  • Extend syntax to allow () instead of . parameters in keywords.
  • Allow {} braces in array initialisation.

NCR Fixes:

  • None.

[top]

MintMT Compiler v9.9

Released: February 2005.
Target Format: 9.

New Features:

  • None.

NCR Fixes:

  • NCR02054: Incorrect code is produced when factoring an integer by 2.0.

[top]

MintMT Compiler v9.8

Released: January 2005.
Target Format: 9.

New Features:

  • None.

NCR Fixes:

  • NCR02036: The backslash character cannot be embedded into a string
  • NCR02044: The compiler fails with an access violation with unrecognised hardware.

[top]

MintMT Compiler v9.7

Released: November 2004.
Target Format: 9.

New Features:

  • None.

NCR Fixes:

  • NCR02020: Conditional expressions can fail with "Integer out of range" errors.
  • NCR02027: Using a Define that represents a subroutine call causes an error.
  • NCR02035: String constants that include the double quote character cause internal errors.

[top]

MintMT Compiler v9.6

Released: July 2004.
Target Format: 10.

New Features:

  • None.

NCR Fixes:

  • NCR01924: If a keyword has a large numeric value, then displaying this from the command line will give a different value than from a Mint program.
  • NCR01973: A command with more than one dot parameter does not compile correctly on the command line.
  • NCR01982: API functions that set strings do not work when an optional parameter is omitted.
  • NCR01989: The InStr() intrinsic function does not evaluate correctly with constant parameters.

[top]

MintMT Compiler v9.5

Released: March 2004.
Target Format: 10.

New Features:

  • None.

NCR Fixes:

  • NCR01833: The parsing of the values "0x", "0_" and "1.0e" does not check for numbers after these characters.
  • NCR01834: Jumps to the next instruction are not always optimised correctly.
  • NCR01842: The backslash character cannot be used in string literals without causing spurious errors.
  • NCR01862: Errors can be generated from text within a comment block.
  • NCR01886: If a constant is declared where the right hand side is an undeclared identifier, then no line number is reported in the error.
  • NCR01913: Array parameters that are only used to pass data in another call, but without the initial call being made cause a spurious error.
  • NCR01917: The scope override operator cannot be used with a for loop counter.
  • NCR01937: The function Str(x) crashes the controller if x equals zero.
  • NCR01938: Illegal MML calls like ABORT[0,1,2,3] generate incorrect errors.
  • NCR01953: A hexadecimal dot parameter that follows a decimal dot parameter causes a compilation error.
  • NCR01956: Assigning a character to a variable in a Dim statement causes an internal error.
  • NCR01957: The scope override operator can cause the compiler to crash if used in a section of dead code.
  • NCR01958: The scope override operator produces compilation errors when used with events that are defines (IN0, etc.).
  • NCR01961: The compiler fails with an access violation if an expression is divided by zero.
  • NCR01968: A call of the form "<sub-name> <arg-name>.." will cause the compiler to loop indefinitely.

[top]

MintMT Compiler v9.4

Released: August 2003.
Target Format: 9.

New Features:

  • Introduce the OPTION keyword to allow various compiler settings to be modified.
  • Allow multi-axis keywords that take a dot parameter to use multi-axis notation,
    e.g. CONTOURPARAMETER[0,2]._ctpSLEW_ANGLE = 15,10
  • Improve the consistency of numeric data output format.

NCR Fixes:

  • NCR01767: The line "If ReadKey._TERM2 = 'a' Then Print 'a'" generated a spurious run-time error.
  • NCR01768: The Option command can report that a constant was expected when a constant was supplied.
  • NCR01769: The `line <line-number> instruction is not inserted into the executable when the line mapping table is disabled.
  • NCR01771: Assigning a single value to an array (of values) produces a spurious compilation error if the types differ.
  • NCR01776: Assigning a string to an undeclared variable gives an error about type incompatibility as well as the undeclared variable.
  • NCR01779: Brackets cannot be used around the Using parameters of an Input statement for floating-point data.
  • NCR01780: Strange errors can be generated when the Using clause is used with two fields with integer and string data.
  • NCR01787: Multi-axis keywords called with a single axis and single value with a trailing comma cause an internal error. For example, the command "MOVEA[0] = 5," generates the diagnostic "Error 2100 - Internal Error - Stack offset cannot be negative (Peek)".
  • NCR01788: Stack underflows can result when dividing by a constant value.
  • NCR01796: Select Case statements with only one Case clause results in superfluous code.
  • NCR01797: The Asc function does not give an error when the parameter is an empty string.
  • NCR01801: GOTO and GOSUB can only be used to jump to a point within the current scope.

[top]

MintMT Compiler v9.3

Released: July 2003.
Target Format: 9.

New Features:

  • Added ability for a host to query a Mint executable running on a controller to determine the names of the tasks is required for the task status window in the WorkBench.
  • Precision loss warnings are specified in more detail.

NCR Fixes:

  • NCR01700: The compilers evaluation of the logical NOT operator is incorrect for floating point data.
  • NCR01721: Declaring a constant that includes a term in its RHS that has either not been declared or is non-constant crashes the compiler.
  • NCR01727: Using a named constant to initialise an array within a Dim statement does not work properly.
  • NCR01730: Out of range literal values are not detected in all circumstances.
  • NCR01731: A user-defined function with parameters could be called without any parameters and not be detected by the compiler.

[top]

MintMT Compiler v9.2

Released: April 2003.
Target Format: 9.

New Features:

  • None.

NCR Fixes:

  • NCR01672: It is possible to separate parameters with spaces in a parameter list, either in a call or a declaration.
  • NCR01679: The compilers evaluation of Shift and Rotate with constant operands is incorrect if the value being operated on is negative.
  • NCR01681: Integer values where the first digit after the prefix is invalid are not detected.
  • NCR01697: The evaluation of literal expressions with floating-point operands do not all detect out of range values.
  • NCR01699: Strings can be used in a Select Case statement if the semantic analyser has been forced to iterate.

[top]

MintMT Compiler v9.1

Released: February 2003.
Target Format: 9.

New Features:

  • None.

NCR Fixes:

  • NCR01558: Spurious warnings that a define is not used are generated when it is used only in the definition of another define.
  • NCR01567: Abbreviated MML names are suggested in preference to the full name when a call is made that has the 'old' flag set.
  • NCR01568: It is possible to declare subroutines with event names.
  • NCR01582: The Select Case statement does not produce correct code for string cases nor does it generate any errors.
  • NCR01601: It is possible to call a subroutine using brackets around the parameters if it was declared ahead of its usage.
  • NCR01611: Using a floating-point value as a parameter to an MML call does not work when passed inside square brackets.
  • NCR01615: Declaring a constant as an identifier that does not exist causes internal errors.
  • NCR01619: Declaring a global subroutine or function after a global variable that has the same name crashes the compiler.
  • NCR01631: The assignment of Chr(LastKey) to a string does not work.
  • NCR01661: Code examples from the help file do not always compile correctly.
  • NCR01662: Numbers starting with a decimal point and followed by one or more zeroes can produce spurious compilation errors.
  • NCR01663: Printing floating-point values using the Bin or Hex modifiers and the Using clause displays the wrong value.
  • NCR01667: The scope override operator produces spurious errors with events that share MML names (e.g. STOP and #STOP).
  • NCR01671: If a statement separator is found while evaluating a parameter to a call, then the compiler can loop indefinitely.

[top]

MintMT Compiler v9.0

Released: October 2002.
Target Format: 9.

New Features:

  • Implemented the string data type and a range of new MVM instructions to process them.
  • Test assignments to see if there is likely to be any loss of precision, and issue a warning if there is.
  • Use temporary variables when passing data to reference parameters in more cases instead of issuing errors.
  • Checks MML calls to make sure that the keyword has not been replaced by a newer alternative, and issue a warning if it has. Examples of this are the BUS keywords, which have been replaced with generic calls, i.e. CANBUSRESET is now BUSRESET.
  • Include MML constants in the syntax highlighting strings so that they are highlighted by the editor.
  • Evaluate functions that take constant parameters.
  • Added keywords to perform bit shifting (Shift) and rotating (Rotate) of integer data.

NCR Fixes:

  • NCR01476: When the Exit statement is used outside of a loop, the error message issued contains an empty string.
  • NCR01485: The use of defines can cause spurious compilation errors.
  • NCR01487: Literal values can be included in the executable image that are not actually used.
  • NCR01494: It is possible to assign one array to another even when they are of different types.
  • NCR01497: The line continuation character does not work correctly.
  • NCR01499: Initialising and array with named constants results in incorrect values being used.
  • NCR01501: Using a define before it is declared causes the compiler to crash or stop with an internal error.
  • NCR01514: The 'expected' error message sometimes displays an empty string for the expected item.
  • NCR01533: The MML axis array (VECTOR) and axis call (CIRCLE) call types can generate spurious internal errors.
  • NCR01541: Passing an array of a different type to the parameter causes the compiler to produce strange error messages.
  • NCR01542: Subroutines declared before they are called can have the call parsed incorrectly if the first token is an intrinsic function.
  • NCR01546: The scope override operator (::) does not work, producing compilation errors.
  • NCR01547: Undeclared variables can go undetected.
  • NCR01548: Comments to end of line initiated with a single quote fail if the character after next is another single quote.
  • NCR01550: It is possible to use an array when only a scalar is acceptable.
  • NCR01551: The automatic usage of temporary variables for parameter passing can stop the Select Case statement from working.
  • NCR01552: Strings with non-printing characters cause unterminated string errors, and an unterminated string ahead of EOF crashes the compiler.

[top]

MintMT Compiler v8.15

Released: December 2006.
Target Format: 8.

New Features:

  • Update target format 8 compiler to recognise some of the new langauge enhancements in target format 13 for cross compatibility.

NCR Fixes:

  • NCR02435 - Valid Mint programs that compile under later target formats do not compile under target format 8.

[top]

MintMT Compiler v8.14

Released: August 2006.
Target Format: 8.

New Features:

  • Extend syntax to allow () instead of . parameters in keywords.
  • Allow {} braces in array initialisation.

NCR Fixes:

  • None.

[top]

MintMT Compiler v8.13

Released: February 2005.
Target Format: 8.

New Features:

  • None.

NCR Fixes:

  • NCR02054: Incorrect code is produced when factoring an integer by 2.0.

[top]

MintMT Compiler v8.12

Released: January 2005.
Target Format: 8.

New Features:

  • None.

NCR Fixes:

  • NCR02044: The compiler fails with an access violation with unrecognised hardware.

[top]

MintMT Compiler v8.11

Released: November 2004.
Target Format: 8.

New Features:

  • None.

NCR Fixes:

  • NCR02020: Conditional expressions can fail with "Integer out of range" errors.
  • NCR02027: Using a Define that represents a subroutine call causes an error.
  • NCR02035: String constants that include the double quote character cause internal errors.

[top]

MintMT Compiler v8.10

Released: July 2004.
Target Format: 10.

New Features:

  • None.

NCR Fixes:

  • NCR01924: If a keyword has a large numeric value, then displaying this from the command line will give a different value than from a Mint program.
  • NCR01973: A command with more than one dot parameter does not compile correctly on the command line.

[top]

MintMT Compiler v8.9

Released: March 2004.
Target Format: 10.

New Features:

  • None.

NCR Fixes:

  • NCR01833: The parsing of the values "0x", "0_" and "1.0e" does not check for numbers after these characters.
  • NCR01834: Jumps to the next instruction are not always optimised correctly.
  • NCR01842: The backslash character cannot be used in string literals without causing spurious errors.
  • NCR01862: Errors can be generated from text within a comment block.
  • NCR01886: If a constant is declared where the right hand side is an undeclared identifier, then no line number is reported in the error.
  • NCR01913: Array parameters that are only used to pass data in another call, but without the initial call being made cause a spurious error.
  • NCR01917: The scope override operator cannot be used with a for loop counter.
  • NCR01937: The function Str(x) crashes the controller if x equals zero.
  • NCR01938: Illegal MML calls like ABORT[0,1,2,3] generate incorrect errors.
  • NCR01953: A hexadecimal dot parameter that follows a decimal dot parameter causes a compilation error.
  • NCR01956: Assigning a character to a variable in a Dim statement causes an internal error.
  • NCR01957: The scope override operator can cause the compiler to crash if used in a section of dead code.
  • NCR01958: The scope override operator produces compilation errors when used with events that are defines (IN0, etc.).
  • NCR01961: The compiler fails with an access violation if an expression is divided by zero.
  • NCR01968: A call of the form "<sub-name> <arg-name>.." will cause the compiler to loop indefinitely.

[top]

MintMT Compiler v8.8

Released: August 2003.
Target Format: 8.

New Features:

  • Introduce the OPTION keyword to allow various compiler settings to be modified.
  • Allow multi-axis keywords that take a dot parameter to use multi-axis notation,
    e.g. CONTOURPARAMETER[0,2]._ctpSLEW_ANGLE = 15,10
  • Improve the consistency of numeric data output format.

NCR Fixes:

  • NCR01767: The line "If ReadKey._TERM2 = 'a' Then Print 'a'" generated a spurious run-time error.
  • NCR01768: The Option command can report that a constant was expected when a constant was supplied.
  • NCR01769: The `line <line-number> instruction is not inserted into the executable when the line mapping table is disabled.
  • NCR01779: Brackets cannot be used around the Using parameters of an Input statement for floating-point data.
  • NCR01780: Strange errors can be generated when the Using clause is used with two fields with integer and string data.
  • NCR01787: Multi-axis keywords called with a single axis and single value with a trailing comma cause an internal error. For example, the command "MOVEA[0] = 5," generates the diagnostic "Error 2100 - Internal Error - Stack offset cannot be negative (Peek)".
  • NCR01788: Stack underflows can result when dividing by a constant value.
  • NCR01796: Select Case statements with only one Case clause results in superfluous code.
  • NCR01801: GOTO and GOSUB can only be used to jump to a point within the current scope.

[top]

MintMT Compiler v8.7

Released: July 2003.
Target Format: 8.

New Features:

  • The ability for a host to query a Mint executable running on a controller to determine the names of the tasks is required for the task status window in the WorkBench.
  • Precision loss warnings specified in more detail.

NCR Fixes:

  • NCR01700: The compilers evaluation of the logical NOT operator is incorrect for floating point data.
  • NCR01721: Declaring a constant that includes a term in its RHS that has either not been declared or is non-constant crashes the compiler.
  • NCR01727: Using a named constant to initialise an array within a Dim statement does not work properly.
  • NCR01730: Out of range literal values are not detected in all circumstances.
  • NCR01731: A user-defined function with parameters could be called without any parameters and not be detected by the compiler.

[top]

MintMT Compiler v8.6

Released: April 2003.
Target Format: 8.

New Features:

  • Target format 8 has been made to recognise bracketed Using parameters.

NCR Fixes:

  • NCR01672: It is possible to separate parameters with spaces in a parameter list, either in a call or a declaration.
  • NCR01681: Integer values where the first digit after the prefix is invalid are not detected.
  • NCR01697: The evaluation of literal expressions with floating-point operands do not all detect out of range values.

[top]

MintMT Compiler v8.5

Released: February 2003.
Target Format: 8.

New Features:

  • None.

NCR Fixes:

  • NCR01558: Spurious warnings that a define is not used are generated when it is used only in the definition of another define.
  • NCR01567: Abbreviated MML names are suggested in preference to the full name when a call is made that has the 'old' flag set.
  • NCR01568: It is possible to declare subroutines with event names.
  • NCR01601: It is possible to call a subroutine using brackets around the parameters if it was declared ahead of its usage.
  • NCR01611: Using a floating-point value as a parameter to an MML call does not work when passed inside square brackets.
  • NCR01615: Declaring a constant as an identifier that does not exist causes internal errors.
  • NCR01619: Declaring a global subroutine or function after a global variable that has the same name crashes the compiler.
  • NCR01661: Code examples from the help file do not always compile correctly.
  • NCR01662: Numbers starting with a decimal point and followed by one or more zeroes can produce spurious compilation errors.
  • NCR01667: The scope override operator produces spurious errors with events that share MML names (e.g. STOP and #STOP).
  • NCR01671: If a statement separator is found while evaluating a parameter to a call, then the compiler can loop indefinitely.

[top]

MintMT Compiler v8.4

Released: October 2002.
Target Format: 8.

New Features:

  • Test assignments to see if there is likely to be any loss of precision, and issue a warning if there is.
  • Use temporary variables when passing data to reference parameters in more cases instead of issuing errors.
  • Checks MML calls to make sure that the keyword has not been replaced by a newer alternative, and issue a warning if it has.
  • Include MML constants in the syntax highlighting strings so that they are highlighted by the editor.
  • Evaluate functions that take constant parameters.

NCR Fixes:

  • NCR01476: When the Exit statement is used outside of a loop, the error message issued contains an empty string.
  • NCR01485: The use of defines can cause spurious compilation errors.
  • NCR01487: Literal values can be included in the executable image that are not actually used.
  • NCR01494: It is possible to assign one array to another even when they are of different types.
  • NCR01497: The line continuation character does not work correctly.
  • NCR01499: Initialising and array with named constants results in incorrect values being used.
  • NCR01501: Using a define before it is declared causes the compiler to crash or stop with an internal error.
  • NCR01514: The 'expected' error message sometimes displays an empty string for the expected item.
  • NCR01541: Passing an array of a different type to the parameter causes the compiler to produce strange error messages.
  • NCR01542: Subroutines declared before they are called can have the call parsed incorrectly if the first token is an intrinsic function.
  • NCR01546: The scope override operator (::) does not work, producing compilation errors.
  • NCR01547: Undeclared variables can go undetected.
  • NCR01550: It is possible to use an array when only a scalar is acceptable.
  • NCR01551: The automatic usage of temporary variables for parameter passing can stop the Select Case statement from working.
  • NCR01552: Strings with non-printing characters cause un-terminated string errors, and an un-terminated string ahead of EOF crashes the compiler.
  • NCR01555: Incomprehensible errors are generated when the last parameter is repeated with VECTOR type MML calls.

[top]

MintMT Compiler v7.3

Released: February 2002.
Target Format: 7.

New Features:

  • Base release of MintMT Compiler.

NCR Fixes:

  • None.

[top]