Fixed : Always read volatile 16 variables LSB first and write them MSB first to manage PIC18 TMRx 16 bits mode.
Fixed : Unexpected syntax error when an argument of WRITE std procedure is a function call with parameters and with a char or string result type.
Added : In Extended Syntax mode, an optional BY clause to the FOR statement to specify the loop variable increment (MODULA/OBERON-like syntax).
Added : In Extended Syntax mode, an optional ELSIF clause to the IF statement (MODULA/OBERON-like syntax). Also added $ELSIF as an alias of $ELSEIF that stays for compatibility.
Added : In Extended Syntax mode, a "LOOP ... END" block equivalent to a "REPEAT ... UNTIL FALSE;" block (MODULA/OBERON-like syntax).
Added : In Extended Syntax mode, a "RETURN <Expression>" statement for functions that generates an optimized "RESULT := <Expression>; EXIT;" block.
Added : A "FOR <Loop Variable> IN <Enumerable type or variable> DO <Block>" iterator construction (now standard in DELPHI/FPC).
Fixed : Unexpected "undefined forward reference" error on a non-forward LABEL, due to an early modification side effect.
Changed : For PIC18, the default procedure interrupt level is now HIGH.
Added : For PIC18, a new attribute for interrupt procedures: FAST may be used to optimize interrupts when there's only one interrupt level. FAST mode is the default when there's only one interrupt procedure.
Fixed : With $INTERRUPTS UNIQUE the interrupt vector did not be generated if the interrupt procedure was in a unit.
Fixed : Bad generated code for STR() routine for bytes; bad conversion of some numbers; PIC18 processors.
Added : UPCASE built-in function.
Fixed : Bad generated code for MOVE procedure if the source parameter is a ROM identifier; all processors.
Fixed : Bad generated code for a by-value parameter if the passed value is in ROM (initialized ROM arrays); all processors.
Fixed : Bad dependency check between units when a unit is added to a uses list, avoiding rebuild in some circumstances and generating linker errors.
Fixed : Unexpected undefined symbol with local variables with a procedure/composite composite name larger than 32 characters (failure of the MPASM limit workaround).
Added : Support of ROM array parameter passing (CONST ROMABLE, see the new manual).
Fixed : Various formatting problems in ASM blocks.
Fixed : Bad side effect on STR() built-in procedure that generated unexpected errors.
Fixed : Bad dependency check that produced unnecessary unit rebuilds.
Changed : Symbols table management / rebuild has been optimized so that the compiler is a bit faster.
Fixed : In an ASM block double quoted strings was altered due to the Pascal parser that does not recognize them as strings.
Fixed : In an ASM block assembler hex format nnH was altered due to the Pascal parser that does not recognize them as hex numbers.
Updated : processors.cfg to include 16F630 & 16F676 specifics.
Fixed : Bad error message position in some circumstances; PIC16ENH & PIC18 processors.
Fixed : FP divide code generation was broken due to a bad optimization; all processors.
Partager