== Release 5.4.1.1

    * Fixed: Reset the Pull-up resistors when you start a new program. Fix #222

    * Added PWM on Atmega128. Fix #221

    * Fixed: BUS TRASER for PICs MCU.

    * Wiki: BUS TRASER
    https://github.com/LDmicro/LDmicro/wiki/BUS-TRASER


== Release 5.4.1.0

    * Added "Microchip PIC12F1840 8-pin packages" (Sponsored by MGP, thank you very much.)

    * New:  Element  ODR: ONE DROP if RISING is the inversion
      of the element OSR: ONE-SHOT RISING,
                                _   _   _
                           --[_/ ODR \_/ ]--     ONE DROP if RISING
                                _     _
                           --[_/ OSR_/ \_]--     ONE-SHOT RISING

    * Rename: Element OSL: ONE-SHOT LOW LEVEL
      to new name     ODF: ONE DROP if FALLING
                              _     _   _
                           --[ \_ODF \_/ ]--     ONE DROP if FALLING
                              _       _
                           --[ \_OSF_/ \_]--     ONE-SHOT FALLING

    * Wiki: OSR, OSF, ODR, ODF, OSC
    https://github.com/LDmicro/LDmicro/wiki/OSR,-OSF,-ODR,-ODF,-OSC

    * Fixed error: 'true' undeclared (first use in this function). Issue BuildAVR.bat fixed #227
        while(true)   replaced at   while(1)

    * Fixed: BUS TRACER element.

    * Wiki: HOW TO: 7 segment display (7SEG & BUS)
    https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-7-segment-display,-7SEG-&-BUS

    * Fix: WIP: SPI Atmel AVR-GCC for ATmega2560.


== Release 5.4.0.5

    * Refactor EEPROM RERSIST_ELEM for AVR

    * Fixed bug: LDmicro Forum - A problem with substracting 2 values #214
      ELEM_ADD & ELEM_SUB refactoring

    * Added "Atmel AVR ATmega1284 44-Pin packages"

    * Fixed PWM for AVR ATmega1284. Six PWM Channels are available.

    * Fixed AVR ATtiny85


== Release 5.4.0.4

    * Fixed the bug in ladder.h generated by version 5.4.0.x when compiling for AVR-GCC (double include).

    * PULSER instruction tested with ATmega2560 (both HEX->ASM and AVR-GCC compilers)
      PULSER instruction tested with PIC16F887 (both HEX->ASM and HI-TECH C compilers)
      See: https://github.com/LDmicro/LDmicro/wiki/PULSER

    * Fixed: Convert manual-es.txt from 65001 UTF-8 code page to 1252 code page


== Release 5.4.0.3

    * Modified menu Settings

    * Fixed lang-fr.txt

    * Some minor hotfixes


== Release 5.4.0.2

    * Fixed Microchip PIC16F887 44-TQFP UART, ISP,I2C pins.

    * Fixed Quad Encoder Output dialog Dir pin name.

    * Fixed Atmel AVR ATmega32U4 pins mapping for Arduino.

    * Fixed Spanish locale. Thank you very much, Paulino Cano.
      lang-es.txt, manual-es.txt updated.


== Release 5.4.0.1 String type support

    * Added
        "Atmel AVR ATmega32U4 44-Pin packages",
        "Atmel AVR ATmega32 44-Pin packages",
        "Atmel AVR ATmega328 32-Pin packages",
        "Atmel AVR ATtiny85 8-Pin packages",
        "Atmel AVR ATtiny85 20-Pin packages",
        "Microchip PIC16F1512 28-Pin SPDIP, SOIC, SSOP",
        "Microchip PIC16F1516 28-Pin SPDIP, SOIC, SSOP",
        "Microchip PIC16F1527 64-Pin packages",
        "Microchip PIC16F1824 14-Pin PDIP, SOIC, TSSOP",
        "Microchip PIC16F1827 18-Pin PDIP, SOIC",
        "Microchip PIC10F202 6-SOT",
        "Microchip PIC16F887 44-TQFP"

    * Added LIBRARIES_FOR\Pic16\UartLib.*
            LIBRARIES_FOR\AVR\UartLib.*

    * Added "9-SEGMENT FONT converter"
           "14-SEGMENT FONT converter"
           "16-SEGMENT FONT converter"
        * Added "BUS tracer" support

    * Added STRING type support in generated C code
        Tested ATmega2560,

    * Added Blue color scheme by Jose GILLES

    * Added by Jose GILLES
        "Microchip PIC18F4520 40-PDIP"

== Release 5.3.1.0

    * Fixed flashMcu.bat and LIBRARIES_FOR ARM,AVR, PIC by Jose GILLES

    * Modified "St ARM STM32F40X 144-LQFP" by Jose GILLES

    * Added "St ARM STM32F10X 48-LQFP / Bluepill" by Jose GILLES

    * Fixed OSR, OSF, OSL, OSC show error.

    * Fixed AVR compilation stack overflow error.

    * Fixed flashMcu.bat for AVR

    * Fixed LUT index range in simulation.

    * Fixed PIC UART baud rate calculation.

    * Fixed PICs PORTA outputs still stay in analog mode in generated C source code.
      Added setPortDigitalIO()

    * Fixed When compiling Hex/Asm with PIC target and then calling FlashMcu, the window still closes
      immediately without a word...

== Release 5.3.0.5

    * Fixed flashMcu.bat and LIBRARIES_FOR ARM,AVR, PIC by Jose GILLES

    * Added: Microchip PIC12F675 8-pin packages

    * Added: Microchip PIC16F72 28-Pin PDIP, SOIC, SSOP

    * Added: Atmel AVR ATtiny10 6-Pin packages

== Release 5.3.0.4

    * Added: Menu Settings->Set Pull-up input resistors.
    All input pins try to set Pull-up registers by default.
    Attention: Not all ports have a pull-up resistor.
    See datasheets of the controller for details.

    * Added: PIC12F683 8-pin.

    * Added: ESP8266. ANSIC compiler only.

    * Fixed: Pins PB6 and PB7 are available for general I/O use when
    the internal clock source is selected.
    MCU list: ATmega8, ATmega48, ATmega88, ATmega168, ATmega328.
    Note: LDmicro not provided any clock source manipulation.
    Discussion here: http://cq.cx/ladder-forum.pl?action=viewthread&amp;parent=8416&amp;tt=1555027659

    * Fixed: General variable name as Timer parameter, Issue #172

    * Fixed: Quadrature Encoder, Issue  #175
    Output Dir can be Y (pin) or R (internal relay).

== Release 5.3.0.3

    * Fixed crash when save LD.

    * Fixed LDLANG_IT, Italian locale. Thank you very much, Claudio Birello.
      manual-it.txt updated.

== Release 5.3.0.2

    * Fixed flashMcu.bat and LIBRARIES_FOR ARM,AVR, PIC by Jose GILLES

    * Fixed LDLANG_IT, Italian locale. Thanks, Claudio Birello.

== Release 5.3.0.1

    * Fixed: Shift + 6 problem (insert rung before) #155

    * Fixed: Undoredo bug #160

    * Fixed: Cannot set a value greater than 0x7FFFFFFF in a variable of 4 bytes. #146

== Release 5.3.0.0

    * Added Release 5.2.0.a by Jose GILLES

    * LdMicro32 release 5.2
    http://cq.cx/ladder-forum.pl?action=viewthread&parent=8128&tt=1549645797

    * LdMicro32 on Github
    http://cq.cx/ladder-forum.pl?action=viewthread&parent=7956&tt=1548617794

== Release 4.4.4.0

    * Fixed: LDmicro closes unexpectedly #144

    * Fixed: Compile as Interpretable Byte Code fails with the error:
    "Must choose a target microcontroller before compiling" #141

    * Fixed: LDmicro compiles sketch for Arduino even if PIC MCU is selected  #101

    * Fixed: Cannot set a value greater than 0x7FFFFFFF in a variable of 4 bytes. #146

    * Fixed: In simulation mode when pressing an input, if not selected pin MCU, then LDmicro is closed. Issue #132

    * Fixed: The code generated by "Compile ANSIC" for the SRAND insyruction #133

    * Updated: Italian locale. Thanks, Claudio Birello.

    * Wiki: UART communication FAQ
    https://github.com/LDmicro/LDmicro/wiki/UART-communication-FAQ

    * Updated: The UART RECEIVE, UART SEND instructions can receive/send a more
    than one-byte length variables. "Number of bytes to transmit:" parameter
    must be less or equal to the size of the used variable. Value 1 byte is
    compatible with the previous LDmicro version.
    The parameter "Wait until all bytes are transmitted:" controls the algorithm
    of the transmission: if 1 - all bytes are transmitted in one package,
    if 0 - one byte per a PLC cycle. When all bytes are has transmitted,
    the output condition is "true" during one PLC cycle. Value 0 is
    compatible with the previous LDmicro version.
    See: UART communication FAQ part 2
    https://github.com/LDmicro/LDmicro/wiki/UART-communication-FAQ-part-2

== Release 4.4.3.1

    * Fixed: ADC conversion time Tad for PIC16F88

    * Fixed: PWM timer can not be equal to the PLC cycle timer.

== Release 4.4.3.0

    * New: 7-SEGMENT FONT CONVERTER instruction.

    * New: BINARY TO BCD CONVERTER instruction.

    * Fixed: QUADRATURE ENCODER start value.

    * Fixed: build failed in CCS when disabling pull up resistor #128

    * Fixed: #USE RS232 & #USE DELAY ansi c generator for PICC build fails depending on their position #127

    * Fixed: Russian localization

    * PIC: You can flash the PIC MCU thru the PICkit 3 Command Line Interface.
      Press F6 to call flashMcu.bat
      See flashMcu.bat and readMcu.bat

== Release 4.4.2.0

    * New: Incremental QUADRATURE ENCODER instruction.
    See manual.txt and
    https://github.com/LDmicro/LDmicro/wiki/Incremental-QUADRATURE-ENCODER

    Incremental QUADRATURE ENCODER controls the brightness of the LED (PWM out)
    https://github.com/LDmicro/LDmicro/wiki/Incremental-QUADRATURE-ENCODER-controls-the-brightness-of-the-LED-(PWM-out)

    * Fixed: Bug: UART box shows up even if UART is deleted from the ladder
    diagram after simulating.(#126)

    * Fixed: The code generated for the Reset instruction
    of any Counter type looks incorrect as the counter variable is reset
    to 0 and not to the counter's "Start Value" value.(#125)

    * Fixed: The code generated by "Compile ANSIC" for the Look-Up Table
    instruction [LUT] does not include a declaration for the table's index
    variable.(#124)

    * Fixed: The code generated by "Compile ANSIC" for the Logical Shift
    instruction generates a declaration "STATIC SBYTE 1 = 0;" (#123)

    * Fixed: For the PWL instruction display the Index variable in the GUI
    and allow its size to be edited.(#122)

    * Fixed: Bug in FORMATTED STRING OVER UART element, when using
    command \0xFE instead of \xFE ldmicro closes.(#120)

== Release 4.4.1.1

    * Fixed: Bug in insert SET BIT instructions with arduino (#118)

== Release 4.4.1.0

    * Fixed: "Compile ANSIC" fails and LDmico exits with an error when
    the INT_SET_VARIABLE_NEG instruction is used. #117

    * Fixed: Test bit instructions (IF SET bit) with arduino #116

    * New: Kind of inputs of ladder elements
    https://github.com/LDmicro/LDmicro/wiki/Kind-of-inputs-of-ladder-elements

    '-' Direct static logic input. Active at external 1.
    'o' Inverse static logic input. Logic negation at input. External 0 produces internal 1.
    '/' Dynamic input active on 0 to 1 transition for positive logic.
    '\' Dynamic input active on 1 to 0 transition for positive logic.

    * New: Timer with variable delay
    https://github.com/LDmicro/LDmicro/wiki/Timer-with-variable-delay

== Release 4.4.0.2

    * Optimized: PIECEWISE LINEAR TABLE (reduced size 10%), ADD and SUB operations for PIC's.

    * Fixed: READ ADC for EnhancedMidrangeCore14bit PIC's.

    * Fixed: AUTO_PAGING version 4.3 for PIC's.

    * Wiki: Disable Pull up resistors
    https://github.com/LDmicro/LDmicro/wiki/Disable-Pull-up-resistors

    * Wiki: Pull down resistors
    https://github.com/LDmicro/LDmicro/wiki/Pull-down-resistors

    * Added: REFS parameter for ADC Voltage Reference.

    * Wiki: ADC Voltage Reference
    https://github.com/LDmicro/LDmicro/wiki/ADC-Voltage-Reference

    How to measure battery voltage (Atmel AVR)
    https://github.com/LDmicro/LDmicro/wiki/How-to-measure-battery-voltage

    How to measure voltage (PIC)
    https://github.com/LDmicro/LDmicro/wiki/How-to-measure-voltage-(PIC)

== Release 4.4.0.0

    * New: The variable name that begins with a '#' character and subsequent as
     a general-purpose variable name treated as the indirect address of hardware register.
     Value like #VarName is the indirect address of hardware register (Indirect Address Pointer).
    See manual.txt
    Note: Only for PIC,AVR implemented.

    * Wiki: LDmicro indirect addressing
    https://github.com/LDmicro/LDmicro/wiki/LDmicro-indirect-addressing

== Release 4.3.9.6

    * Wiki: HOW TO: Change USART Baud Rate
    https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-Change-USART-Baud-Rate

== Release 4.3.9.5

    * Fixed: Re-enable ANSI C compilation with no MCU #95

    * Wiki: Replace the obsolete elements.
    https://github.com/LDmicro/LDmicro/wiki/Replace-the-obsolete-elements

== Release 4.3.9.4

    * Fixed: LDmicro Forum - pic16f887 http://cq.cx/ladder-forum.pl?action=viewthread&parent=7317&tt=1526403799
    Recovered backward compatibility with version 2.3 for the SET PWM operation.
    Recovered the READ_ADC operation for PIC16F887, PIC16F877, PIC16F88, PIC16F72.
    Attention: Releases 4.3.8.5 - 4.3.9.3 has the bug with PIC's MCU READ_ADC: only RA0 analog input is available!

    * Fixed: The GEQ instruction does not work with neg.numbers #57
    Try simulate GEQ.LD from the page
    https://github.com/LDmicro/LDmicro/issues/57

== Release 4.3.9.3

    * Fixed: SET PWM instruction in Arduino Sketch.

    * Wiki: LDmicro, Arduino, LCD
    https://github.com/LDmicro/LDmicro/wiki/LDmicro,-Arduino,-LCD

== Release 4.3.9.2

    * Fixed: Problem "PERSIST" Arduino Mega. #82

    * Updated: EXTERN_EVERYTHING in Arduino Sketch.

    * Fixed: RESET PWM instruction in Arduino Sketch. #62

    * Added: SET PWM - optional setPwmFrequency() in Arduino Sketch.
    Need to test. See issue #62

    * Fixed: UART Simulation error V4390. #84

    * Fixed: MASTER RELAY simulation bug. #83

    * Updated: MASTER RELAY state colors in simulation mode.

    * Fixed: When minimizing LDmicro, it always hides the IoList window.

    * Wiki: OPEN CIRCUIT, SHORT CIRCUIT
    https://github.com/LDmicro/LDmicro/wiki/OPEN-CIRCUIT,-SHORT-CIRCUIT

    * Fixed: Is it correct return? #55 Yes.

    * Test: Unclosed Rung. See issue #56.
    Experimental release attached at page
    https://github.com/LDmicro/LDmicro/issues/56

== Release 4.3.9.1

    * Wiki: MAKE PERSISTENT operation
    https://github.com/LDmicro/LDmicro/wiki/MAKE-PERSISTENT-operation

== Release 4.3.9.0

    * New: Bitwise variable operations (Unsigned)
    AND, OR, XOR, NOT, SHL, SHR, etc.

    * Updated: Arduino pin name added in I/O pin assign dialog.
    More easy to use the Arduino board with it's pin name.

    * Updated: flashMcu.bat
    You can flash the Arduino board from LDmicro by using the bootloader of the Arduino,
    you don't need any hardware, only the USB cable, and the COM port of the Arduino
    (if the driver of the Arduino is installed).
    Thanks to Gerard Jacquemin.

== Release 4.3.8.7

    * Fixed: Can't assign PWM pin because of empty PWM pins list #73

    * Fixed: When compiling ansic for arduino using REGISTER mcu,
    generated code includes "#", arduino does not compile (#72)

    * Added: For PIC16F886, PIC16F887 enabled pins:
    RE3(Input Only), RA7 (I/O when internal oscillator used), RA6 (I/O when internal oscillator used).

== Release 4.3.8.6

    * Fixed: Transliterate for non RU (#69). Fixes strange ANSIC output.

    * Fixed: pic10f200 pin number (#70)

    * Added: MOD (Integer Divide Remainder) operattion.

    * Wiki: PLC and safety
    https://github.com/LDmicro/LDmicro/wiki/PLC-and-safety

== Release 4.3.8.5

    * Fixed: PIC10F200 compile, issue #65

    * Fixed: PWM no longer possible on 16F628a, issue #61 (FAIL:Fixed in 4.3.8.7 #73)

== Release 4.3.8.4

    * Fixed: fix "Compile As" endless dialog show #60

    * Fixed: COMPILE AS does not work #59

== Release 4.3.8.3

    * Fixed: LDmicro goes into an endless loop if you try to display the dialog
    to set the DELAY delay when the mcu is not set to either AVR or PIC (#53)

    * Fixed: "Compile ANSIC" always generates a delay of 0 us no matter what
    delay value has been set for the DELAY instruction (#54)

    * Fixed: Some ArduinoPinName for ATmega2560

== Release 4.3.8.2

    * Hotfix: "Compile ANSIC" fails and LDmico exits with error dialogs when
      the CLRWDT instruction is used #49

== Release 4.3.8.1

    * Fixed: persist not execute #34
      INT_EEPROM_READ in AVR
      https://github.com/LDmicro/LDmicro/issues/34


== Release 4.3.8

    * Fixed: CTC counter set a size of var.

    * Fixed: ADC pin mapping for Arduino in ladder_.h.

    * Updated: SetBit, ClearBit, IfBitSet, IfBitClear.
      var must be a variable, not a literal value.
      The size of var must be from 1 to 4 bytes.
      bit can be a literal number or a variable.
      bit can have a value of 0-7 if sizeof(var) == 1 byte,
                             0-15 if sizeof(var) == 2 bytes,
                             0-23 if sizeof(var) == 3 bytes,
                             0-31 if sizeof(var) == 4 bytes.

      https://github.com/LDmicro/LDmicro/wiki/SetBit,-ClearBit,-IfBitSet,-IfBitClear-in-variable

    * Updated: Spanish locale. Thanks, Toni Tin.

    * Wiki: SPI: Serial Peripheral Interface
      https://github.com/LDmicro/LDmicro/wiki/SPI:-Serial-Peripheral-Interface

    * Wiki: Copy, paste, cut, etc
      https://github.com/LDmicro/LDmicro/wiki/Copy,-paste,-cut,-etc

== Release 4.3.7

    * Fixed: Atmega2560 pins name and Arduino Mega 2560 pins name.

    * Fixed: Atmega2560 9/10-bit PWM.

    * Fixed: ATmega328 9/10-bit PWM.

    * Fixed: ATmega8 9/10-bit PWM.

    * Fixed: PIC 9/10bits PWM LSBs.

    * Fixed: READ_ADC in Arduino Sketch.

    * Updated: ADC simulation.

    * Updated: LDSTUB to LDSTUB0 and LDSTUB1 in ANSIC.
      #define USE_WDT in ANSIC.

    * Updated: The DELAY(us) element, the variable duration is implemented.

    * New: TIME2DELAY(us)operation converts the time interval
      to the internal representation of the variable DELAY().

    * Wiki: DELAY(us) with variable duration
      https://github.com/LDmicro/LDmicro/wiki/DELAY(us)-with-variable-duration

    * New: SetBit, ClearBit, IfBitSet, IfBitClear is implemented.
      To PIC's controllers used BCF, BSF, BTFSC, BTFSS instruction.
      To AVR's controllers used SBR, CBR, SBRC, SBRS, SBIC, SBIS instruction.

    * Wiki: SetBit, ClearBit, IfBitSet, IfBitClear in variable
      https://github.com/LDmicro/LDmicro/wiki/SetBit,-ClearBit,-IfBitSet,-IfBitClear-in-variable

    * Added: clear.bat to delete LDmicro output temp files.

== Release 4.3.6

    * Fixed: "Compile ANSIC" DO_LDSTUBS.

    * Fixed: PWM simulation.

    * New: Higher PWM resolution available for:
     All AVR, all PWM timers 0-256 (8 bits);
     ATmega2560(timers 1,3,4 based PWM) 0-100%,256,512,1024;
     ATmega16(timer 1 based PWM);
     ATmega32(timer 1 based PWM);
     ATmega328(timer 1 based PWM);

    * Updated: Pin mapping for Arduino UNO and Aduino Mega 2560 in ladder.h.

    * Updated: Timer adjust is applied.
      Total timer delay (ms) = Delay (ms) + Adjust * PLC cycle time (ms).
      Timer adjust =-1 is equal to the v2.3 timer.

      TON, TOF, etc. in v2.3 and v3.5.3 and later
      https://github.com/LDmicro/LDmicro/wiki/TON,-TOF,--etc.-in-v2.3-and-v3.5.3-and-later

    * Wiki: SG90 Servo PWM
      https://github.com/LDmicro/LDmicro/wiki/Servo-PWM

== Release 4.3.5

    * Fixed: "Compile ANSIC" crashes, if selected (no microcontroller).

    * New: Higher PWM resolution available:
      0-100% (maximum resolution 6.7 bits)
      0-256  (maximum resolution 8 bits)
      0-512  (maximum resolution 9 bits)
      0-1024 (maximum resolution 10 bits)
    LDmicro automatically scales the duty cycle variable from
    percent(or binary value) to PWM clock periods.

== Release 4.3.4

    * HotFix: Look Up Table

    * Wiki: HOW TO: Look Up Table, UART SEND
    See https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-Look-Up-Table,-UART-SEND

    * Fixed: The yPlcCycleDuty option is not reset when you start a new program.
    http://cq.cx/ladder-forum.pl?action=viewthread&parent=6806

    * Fixed: No C code is generated for setting and unsetting the YPlcCycleDuty
    pin each cycle.
    http://cq.cx/ladder-forum.pl?action=viewthread&parent=6805

    * New: Available features
    "Compile HEX->ASM"
    "Compile Sketch for ARDUINO"
    "Compile AVR-GCC, Atmel AVR Toolchain, WinAVR C"
    "Compile CodeVisionAVR C"
    "Compile HEX->ASM"
    "Compile HI-TECH C for PIC"
    "Compile CCS C for PIC"
    See http://cq.cx/ladder-forum.pl?action=viewthread&parent=6731&tt=1514541894

    * Wiki: Stopwatch1 over UART, part 2
    See https://github.com/LDmicro/LDmicro/wiki/Stopwatch1-over-UART,---part-2

    * Wiki: Stopwatch1 over UART; part 3
    See https://github.com/LDmicro/LDmicro/wiki/Stopwatch1-over-UART;-part-3

    * Fixed: Compiling Interpretable Extended Byte Code fails with the error "Unsupported op"
    See http://cq.cx/ladder-forum.pl?action=viewthread&parent=6791&tt=1514468902

    * Note: You can change size of variable by double-clicking the variable name
    in the list at the bottom of the screen.

== Release 4.3.3

    * New: Element OSL: ONE-SHOT LOW LEVEL is inversion of element
    OSR: ONE-SHOT RISING,

    * New: Element THI: TIMER HIGH

    * New: Element TLO: TIMER LOW

    See https://github.com/LDmicro/LDmicro/wiki/TON,-TOF,-etc.

== Release 4.3.2

    * HotFix review: Fault in arithmetic or compare operations.
    See http://cq.cx/ladder-forum.pl?action=viewthread&parent=6457

== Release 4.3.1

    * HotFix: Restored RESET the TON, TOF timers.

    * HotFix: After simulate, when simulate another program, UART simulation
    terminal shows up again and can't close it unless close the program.

    * HotFix: Fault in arithmetic or compare operations.
    http://cq.cx/ladder-forum.pl?action=viewthread&parent=6457

== Release 4.3.0

    * Add: Microchip PIC10F200 6-SOT target.

    * New: Variables can allocate 1,2,3 or 4 bytes. You can change size of variable by
    double-clicking the variable name in the list at the bottom of the screen.
    Variables are stored and processed in the two's complement form.
    See https://en.wikipedia.org/wiki/Two%27s_complement

    Bytes    Types       Range from                   to
     1   signed int8   -2^7 =       -128=0x80        2^7 -1=       127=0x7f
     2   signed int16  -2^15=     -32768=0x8000      2^15-1=     32767=0x7fff
     3   signed int24  -2^23=   -8388608=0x800000    2^23-1=   8388607=0x7fFFFF
     4   signed int32  -2^31=-2147483647=0x80000000  2^31-1=2147483647=0x7fffFFFF

    The decimal zero value (0) is represented as all zeros bits 00...000
    The decimal value (-1) represented as all  11...111

    Signed int8 variables are used for make the hex file smaller and faster.
    Signed int24 and int32 types are used to upsize range of variables.
    Sign extension for variables of different sizes are provided automatically.
    Note: MUL, DIV, MOD instructions can't processed int32 variables.

    The arithmetic Overflow(underflow) flag is provided as internal relay ROverflowFlagV.
    https://en.wikipedia.org/wiki/Overflow_flag
    https://www.allaboutcircuits.com/textbook/digital/chpt-2/binary-overflow/
    The Overflow flag indicates that the signed two's-complement result would
    not fit in the number of bits used for the operation, and signals an error.
    For example, if variable int8 dest = 127(0x7f) add 1, we get -128(0x80),
    and Overflow flag ROverflowFlagV will be set to 1.
    Instead if variable int16 dest = 127(0x007f) add 1, we get 128(0x0080),
    and Overflow flag ROverflowFlagV is not affected.
    LDmicro resets the ROverflowFlagV to zero during initialization.
    Note: CTC generate overfill(carry) impulse when Counter==Max.
          CTR generate overfill(borrow) impulse when Counter==Min.
          Overfill do not set the Overflow flag.

    The Overlap flag is provided as the output state of ADD, SUB operations.
    The Overlap flag indicates that sign of result has been changed.
    For example, Overlap occured when -1(0xf..f) add 1(or sub -1), we get 0(0x0..0),
    all ones 1 are changed to all zeros 0.
    Also, Overlap occured when 0(0x0..0) sub 1(or add -1), we get -1(0xf..f),
    all zeros 0 are changed to all ones 1.
    For example, Overlap occured when -10 add 15(or sub -15), we get 5,
    negative source are changed to positive result.
    Also, Overlap occured when 10 sub 15(or add -15), we get -5,
    positive source are changed to negative result.

    * New: RETENTIVE TIMER LOW oparation.
    RTL works like RTO, but catch low level input.

    * New: BITWISE SWAP oparation.
    This operation swaps the nibbles and the bytes inside the variable.

    * New: BITWISE OPPOSITE oparation.
    This operation reverses the bits sequence to the opposite inside the variable.
    The MSB moves to the LSB, and the LSB moves to the MSB and etc.

    See manual.txt for all new oparation.

    ! Attention:
    ! You can add, edit, save, load, simulate this elements marked 'SIMUL:' in menu.
    ! No compile code at output.

    * DowngradeFix: Restored COMMENT element accoding to Release 2.3

== Release 4.2.3

    * HotFix:
    Move Selected Rung Up/Down with COMMENT
    http://cq.cx/ladder-forum.pl?action=viewthread&parent=6321&tt=1495630635

    * Fixed: PIC16F88 PIN IO names. CCP1 function on RB3.

    * Fixed: PIC MCU's EEPROM write.

    * Fixed: PIC ANSI C UART functions.

== Release 4.2.2

    * HotFix: Addressing error when writing the PIC CONFIGURATION WORD's to the .hex file.
    http://cq.cx/ladder-forum.pl?action=viewthread&parent=6371&tt=1497477735

    * HotFix: AVR RJMP, RCALL
    https://github.com/LDmicro/LDmicro/issues/29

    * Reengineering: PLC cycle timer more accurate and more longer.

    * Fixed: The character '-' is replaced by the character '_' in the variable names.

    * Fixed: TON, TOF, TCY names will be checked more strictly.
    http://cq.cx/ladder-forum.pl?action=viewthread&parent=6321&tt=1495630635

    * Added: White color scheme Mark
    http://cq.cx/ladder-forum.pl?action=viewthread&parent=6257&tt=1496129518

    * Wiki: How to count the resets aused by WDT (Atmel AVR)
    https://github.com/LDmicro/LDmicro/wiki/How-to-count-the-resets-caused-by-WDT

    * Wiki: MASTER CONTROL RELAY
    https://github.com/LDmicro/LDmicro/wiki/MASTER-CONTROL-RELAY

== Release 4.2.1

    * Fixed: The 'Help' and 'About' dialog boxes are displayed in the selected Color scheme.

    * Fixed: Simulation of the GOTO and GOSUB instructions.

    * Fixed: Pull-Up resistors in ATmega MCU and ANSIC code.

    * Wiki: SUBPROG, RETURN, ENDSUB and GOSUB, LABEL and GOTO instruction. Part 2
    https://github.com/LDmicro/LDmicro/wiki/SUBPROG,-RETURN,-ENDSUB-and-GOSUB,-LABEL-and-GOTO-instruction.-Part-2

    SUBPROG, RETURN, ENDSUB and GOSUB, LABEL and GOTO instruction. Part 3
    https://github.com/LDmicro/LDmicro/wiki/SUBPROG,-RETURN,-ENDSUB-and-GOSUB,-LABEL-and-GOTO-instruction.-Part-3

== Release 4.2.0

    * Fixed: PIC Configuration Bits hexadecimals.

    * New: Element TIME to COUNTER converter
    https://github.com/LDmicro/LDmicro/wiki/TIME-to-COUNTER-converter

    * New: Element DELAY us
    https://github.com/LDmicro/LDmicro/wiki/DELAY-us

    * New: PLC Cycle Time 0
    https://github.com/LDmicro/LDmicro/wiki/PLC-Cycle-Time-0

    * New: LABEL and GOTO instruction
    https://github.com/LDmicro/LDmicro/wiki/GOTO-instruction

    * New: SUBPROG, RETURN, ENDSUB and GOSUB instruction
    https://github.com/LDmicro/LDmicro/wiki/SUBPROG,-ENDSUB-and-GOSUB-instruction

    * Add: Menu->Config->Select color scheme->Select user colors

    * Wiki: LDmicro color schemes
    See https://github.com/LDmicro/LDmicro/wiki/LDmicro-color-schemes

    * Wiki: HOW TO: The AND, OR, XOR logic operations on CONTACTs inputs
    See https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-The-AND,-OR,-XOR-logic-operations-on-CONTACTs-inputs

    * Spanish manual-es.txt added. Thanks Jose Manuel Ruiz Gutierrez.

== Release 4.1.8

    * Fixed: LOOK-UP TABLE error in Windows 7 64bit.

    * Fixed: LOOK-UP TABLE index out of range message in simulation.

    * Fixed: MPASM Intel HEX file format used for PIC MCU.

    * Spanish translation updated. Thanks Jose Manuel Ruiz Gutierrez.

== Release 4.1.7

    * New: The pseudo-random number generator RAND implemented.
    RAND element based on linear congruential generator (LCG).
    See https://en.m.wikipedia.org/wiki/Linear_congruential_generator
    The generator is defined by the recurrence relation:
    X[n+1] = (a * X[n] + c) mod m
    Used constants from the VMS's MTH$RANDOM, old versions of glibc
    a = 69069 ( 0x10DCD )
    c = 1
    m = 2^32
    X = (X * 0x10DCD + 1) % 0x100000000
    RAND return the most significant bytes of X.

    * New: RANDS element set seed of RAND. X[n] := newSeed.
    Press F1 in LDmicro to see the manul.txt.

    * New: UART SENDn element send full size varible via USART in raw binary format.
    One byte sends per cycle of PLC, like 'FORMATTED STR OVER UART' element.

    * Wiki: LDmicro RANDOM
    https://github.com/LDmicro/LDmicro/wiki/LDmicro-RANDOM

== Release 4.1.6

    * New: 'PIC Configuration Bits:' textbox added in 'PLC Configurations' dialog.
    See PIC Configuration Bits wiki
    https://github.com/LDmicro/LDmicro/wiki/PIC-Configuration-Bits

    This allow to select internal oscillator, use oscillator pins as I/O pins,
    configure _MCLR pin as digital I/O,
    enable watchdog timer WDT,
    select code protection, data protection, etc.

    Variable name that begins with symbol '#' like #0x8E, #0x8F,
    allow users to dynamically toggle the oscillator speed,
    determine the cause of the processor reset, etc.

    Be careful with the Code/Data Protection bits!

== Release 4.1.5

    The functionality of this release was developed as a result of discussion on the page
    http://cq.cx/ladder-forum.pl?action=viewthread&parent=6006
    and gives ability to use the watchdog timer (WDT) on PIC and AVR.
    See https://en.wikipedia.org/wiki/Watchdog_timer

    There is some difference of WDT in PIC and AVR with respect to LDmicro.

    LDmicro not sets fuses in HEX file for AVR. Remember to set the AVR processor
    configuration (fuses) correctly using your programmer (eg. AVRISP) and
    software (eg. AVRDUDE).
    You can manipulate WTDON to enable/disable watchdog timer. See
    http://www.engbedded.com/fusecalc

    LDmicro sets CONFIGURATION WORD REGISTERS (CONFIG, CONFIG1, CONFIG2)
    in HEX file for PIC. WDT is disabled by default.
    CONFIG bit WDTE: Watchdog Timer Enable bit is setted to 0 = WDT is disabled.
    But you can enable it with your programmer(eg. PICKIT, USBPICPROG).
    Also you can enable it inside LDmicro in 'PLC Configurations' dialog using
    'WDT enable' checkbox (has sense for PIC).

  vvv Obsolete!!! See Release 4.1.6 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
  v * New: 'WDT enable' checkbox added in 'PLC Configurations' dialog. v
  ^        Please use 'PIC Configuration Bits:' textbox.               ^
  ^^^ Obsolete!!! See Release 4.1.6 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    ALL versions of LDmicro executes CLRWDT command "Watchdog reset"
    every PLC cycle (at begin of the cycle) regardless WDT enabled or disabled.

    If WDT enabled, the WDT has a nominal time-out period of 16.3 - 18 ms
    (with no prescaler) or more. So, if you need PLC cycle period more
    then WDT period you must use CLRWDT command inside PLC cycle.

    * New: CLRWDT element to clear WDT timer implemented.

    * New: LOCK element is implemented. LOCK command is an artificial
    situation to provocation the WDT reset (if WDT enabled). LOCK command
    designed as infinite loop. It is deadlock, way to freeze, blockade the
    program.
    LOCK command executes goto to the current address, i.e.
    labelN: goto labelN (label02e7: rjmp label02e7), i.e. infinite loop.
    LOCK command executes the infinite loop, but WDT can reset the MCU.
    Only WDT or external reset can unfreeze the program after LOCK command.

    * Updated: SLEEP operation works at all MCU.
    The SLEEP (Power-down) mode is used for power saving on battery supply.

    PIC: Wake-up from sleep owing to external interrupt on rising edge of RB0/INT pin.
    PIC10xxxx: Wake-up from sleep on pin change GP0, GP1, GP3.
    AVR: Wake-up from sleep owing to external interrupt on rising edge of PD2/INT0, PD3/INT1 pins.
    SLEEP operation don't affect MCU IO pins and others LDmicro operations.
    Note: SLEEP lengthens the PLC cycle time and timers TON, TOF, RTO, CTY.
    This can frustrate the plans, break the flow of work.

    * New: In addition to variable name that begins with symbol '#' like
    #PINA, #PINB, ... treated as 8bit (byte) input port,
    #PORTA, #PORTB, ... treated as 8bit (byte) output port,
    #TRISA, #TRISB, ... treated as 8bit (byte) data direction register of corresponding port,
    added immediate address hardware registers access
    #0x8E, #5, ...  treated as 8bit the (byte) hardware register with this address.
    Be careful with writing to the hardware registers.
    See how to use PCON register (address 0x8E) to determine the cause of
    the PIC16F628 reset in the next wiki link.

    * Wiki: Addition 3. WDT, LOCK, SLEEP operation is tested at PIC16F628.
    https://github.com/LDmicro/LDmicro/wiki/SLEEP-example

== Release 4.1.4

    * HotFix: Fixed 32K words (64K bytes) 50% flash program memory limit
    of the hex file. Affected ATmega128, ATmega2560, AT90USB647.
    Don't use this release for PIC.

== Release 4.1.3

    * Fixed: AVR IfBitClear(SBIS) when IO REGISTERS used. This error is critical, but is rare.

    * Done: ATmega32U4, PIC16f72 can be added to LDmicro by your request.

    * Wiki: See ATmega32U4 test at page
    https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-Integrate-LDmicro-and-AVR-Studio-or-PIC-MPLAB-software

    * Wiki: See ATmega32U4 PWM's test based on Timer0,Timer1 and Timer3 at page
    https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-Two-three-phase-sine-wave-based-on-the-hardware-PWM

    * Wiki: See ATmega32U4 SLEEP operation at page
    https://github.com/LDmicro/LDmicro/wiki/SLEEP-example

    * Wiki: HOW TO: Soft start and smooth stop of LED with hardware PWM
    https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-Soft-start-and-smooth-stop-of-LED-with-hardware-PWM

== Release 4.1.2

    * Changed: COIL, CONTACT draw in simulation mode.
    https://github.com/LDmicro/LDmicro/wiki/CONTACTS-and-COILS

    * Updated: SET PWM Timer1 at PIC's. PIC16F628, PIC16F88, PIC16F819.

    * Updated: SLEEP at PIC's.

    * Fixed: Messages in LOOK-UP TABLE.

== Release 4.1.1

    * Fixed: SET PWM Timer1 at PIC. When two CCP modules are in a PWM mode,
    Timer2 is the time-base for both PWM1 and PWM2 outputs. You must use
    the same base PWM frequency for both SET PWM DUTY CYCLE elements.

    * Fixed: SET PWM at AVR.

    * New: RESET PWM element.
    This instruction disable PWM output and set it to low level.
    Also you can set another PWM base frequency by SET PWM DUTY CYCLE
    after actuation the RESET PWM.

    https://github.com/LDmicro/LDmicro/wiki/RESET-PWM
    https://github.com/LDmicro/LDmicro/wiki/LDmicro-PWM

    * New: SLEEP operation is implemented for PIC.
    Tested only with PIC16F877 in Proteus!!!
    Wake-up owing to external interrupt on rising edge of RB0/INT pin.
    SLEEP operation don't affect MCU IO pins and others LDmicro operations.

    * Wiki: Pull-up resistors
    https://github.com/LDmicro/LDmicro/wiki/Pull-up-resistors

== Release 4.1.0

    * New: SLEEP operation is implemented as Power-down Sleep Mode
    for ATmega48, ATmega88, ATmega168, ATmega328.
    Wake-up owing to external interrupt on rising edge of PD2/INT0, PD3/INT1 pins.
    SLEEP operation don't affect MCU IO pins and others LDmicro operations.
    SLEEP example https://github.com/LDmicro/LDmicro/wiki/SLEEP-example

== Release 4.0.C

    * Fixed: Make persistent in ATmega164, ATmega324, ATmega644, ATmega1284,
      AT90USB646, AT90USB647, AT90USB1286, AT90USB1287.

    * Fixed: Double quotes around the paths and file names given to the xxx.bat files.

    * Fixed: AUTO_PAGING version 4.2 for PIC's.

    * TABLE_IN_FLASH implemented for "LOOK-UP TABLE" and "PIECEWISE LINEAR TABLE".
    Intermediate code for look-up tables is changed, the data stored in flash as table.
    HEX size redused 50%.

== Release 4.0.B

    * Added: PWM CCP1 on Timer1 module for PIC16F877, PIC16F887.

    * Added: Menu->File->Save LDmicro0.1 file format v2.3 compatible
                       ->Save LDmicro0.2 file format

      LDmicro saves new LD files in LDmicro0.2 file format.
      LDmicro does not change the format of the previously created LD files.
      You can convert file format with this menu.

    * Fixed: MASTER CONTROL RELAY
      SAMPLE\MasterRelay-Test.ld added.

    * Fixed: "Save as.." cyclic bug.

== Release 4.0.A

    * Fixed: EEPROM reading 'Empty variable name' message.

    * Fixed: Messagae "RAM: Out of memory; ...") for non hardware MCU.

    * New: Variable name that begins with symbol '#' like
      #TRISA, #TRISB, #TRISC, ... treated as data direction register of corresponding ports
      #PORTA, #PORTB, #PORTC, ...

      Operation -{ MOV #TRISA, dest }- writes 8-bit value from
      the variable 'dest' to the direction register of PORTA.

      Setting a TRISx bit (= 1) will make the corresponding PORTx pin
      an input (i.e., put the corresponding output driver in a Hi-Impedance mode).
      Clearing a TRISx bit (= 0) will make the corresponding PORTx pin an output
      (i.e., put the contents of the output latch on the selected pin).
      Value of TRISx registers on MCU after RESET usually is 0b11111111(0xFF).

    * HOW TO: Stopwatch4 over serial 7 segment LED displays
      https://github.com/LDmicro/LDmicro/wiki/Stopwatch4-over-serial-7-segment-LED-displays

== Release 4.0.9

    * Fixed: AUTO_PAGING version 4.1 for PIC's.

    * Fixed: HEX is not created if a compilation error occurs.

    * HOW TO: Two three phase sine wave based on the hardware PWM
      https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-Two-three-phase-sine-wave-based-on-the-hardware-PWM

    * HOW TO: RF (315MHz, 418MHz, 433MHz, 915MHz) modules with PIC's and AVR's
      https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-RF-(315MHz,-418MHz,-433MHz,-915MHz)-modules-with-PIC's-and-AVR's

    * New: Added elements
      UART SEND: Is ready ? Output is 1 when transmit buffer is empty and ready to loading new data.
      UART RECV: Is avail ? Output is 1 when there are unread data in the receive buffer.

0009|| ; Rung 10 and 11 are equivalent.                                 ||
    ||                                                                  ||
    ||    Is ready?           char                                      ||
0010||---[UART SEND]------{UART SEND}---                                ||
    ||                                                                  ||
    ||      Rbusy            char                            Rbusy      ||
0011||-------]/[----------{UART SEND}-------------------------( )-------||
    ||                                                                  ||

== Release 4.0.7

    * HotFix: Bug in releases 4.0.5 - 4.0.6 with AVR ports ottputs.

    * Added: Atmega2560 can genarate 12 hardware PWM's.

== Release 4.0.6

    * Fixed: "Save as.." cyclic bug.

    * Fixed: Restored behavior: to get ADC slider double-click in IO list in Simulation mode.
      Also ADC slider by double-clicking on the item "READ ADC" in LD editing window in Simulation mode.
      Right mouse button closes the ADC slider.

== Release 4.0.5

    * Fixed: Bug with J,K,L ports addreses at ATMega2560.
      Bug with addreses of ADC at ATMega2560. Tested in Proteus.
      asm_demo_mega2560.zip contains LD, asm, hex, Proteus7 model. See end of the page:
      https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-Integrate-LDmicro-and-AVR-Studio-or-PIC-MPLAB-software

    * Added menu and shortcats:
      "Insert Contacts: Internal Relay       Shift+C"
      "Insert Contacts: Output pin           Shift+L"
      "Insert Coil: Internal Relay             Alt+L"

    * Added in manual.txt:
    Note: The several coils with the same 'YName' or 'RName' can be mentally
      represented as a one microchip with multiple inputs and one output.
      Normal and inverted input are directly transfers the input state (normal or
      inverted) to the output. R, S, T inputs lock up (latch) the state of output.
      The T input is positive edge triggered. R, S inputs are level sensitive.
      If before R, S insert the "OSR: ONE-SHOT RISING" or
      "OSF: ONE-SHOT FALLING" you get a "positive edge triggered" element.
      If used only the R and S inputs you get classic RS-trigger,
      that may be with more than two inputs. If add T input you get "newest" RST-trigger.
      May be several R..R inputs, or several S..S inputs.
      You can use any combination of inputs for one 'YName' or 'RName' coil.
      See also COIL, T-TRIGGER in Release 4.0.3.

== Release 4.0.4

    * HotFix: Fixed initialization error of all used banks of PIC's RAM from 4.0.1 version.
      Not recomended to use with PIC's MCU releases 4.0.1 - 4.0.3.

== Release 4.0.3

    * Fixed: The page correction error while the correction is crosses boundary page.
      AUTO_PAGING version 4 for PIC's.

    * Modified: You can set X input contacts to the HI level before simulating,
      if in your real hardware device the initial state of X input contacts in HI level.
      In release 3.5.0 for this feature used symbol '_' after X in contact name.
      Now for this feature you can use checkbox
      "Set HI input level before simulation" in contacts dialog.
      This feature applies only in simulation mode,
      and does not affect hex file in physical device.
      This feature refers to MCU inputs, not to the external switches(devices/sources).
      This feature not refers to negation or normal open NO or
      normal closed NC contacts of switches.
      Now you can use symbol '_' in the name to see it better (X_in).

    * Modified: When selected mode is ("Simulation Mode"), and user
      presses once the Spase key ("Single Cycle"), or hold down pressed the
      Spase key("Single Cycle" ), then ladder diagram executes one cycle (or
      repeatedly) and displayed correctly.

      When then select "Start Real-Time Simulation" the ladder diagram is
      in work, but can displayed in the one same condition. This happens only
      when the cycle time is less than 10 ms and 10 ms, divided by the cycle
      time gives an even number, and also 10 ms, divided by the timer time
      gives an even number.

      There are two causes for this strange behavior.

      1) The LDmicro frame rate in "Real-Time Simulation" mode is 10 ms (100 Hz).
      I.e. the ladder diagram state is displayed every 10 ms, but not the
      every one cycle. If every 10 ms LD state is the same, then user sees the
      same picture on the display. Although LD state chenged inside 10 ms over
      and over again and go back to the same state.

      2) I tried to show LD state at a random time within the 10 ms frame.
      But WINAPI InvalidateRect() function works when there are no other
      messages in the application queue for that window. And the screen is
      redrawn also through an even number of times and showing the same picture
      (LD state).

      Now LDmicro used UpdateWindow() at a random time within the 10 ms frame.
      UpdateWindow() function works without a queue and shows different states
      of LD on the screen and picture is not "latched".

      Note: The screen refreshes randomly LD state inside 10 ms frame
      in "Real-Time Simulation" mode.

    * Fixed: RETURN error in MUL,DIV elements in PIC10xxx, PIC12xx microcontroller family.

    * Added element COIL, T-TRIGGER.
      Added in manual.txt:

      Terminology:
      "Level sensitive" = output(element) controlled by the level of the input.
      "Edge triggered" = output changes only at the point in time
      when the input changes from value to the other. Can be positive
      edge-triggered (0 to 1), or negative edge-triggered (1 to 0).
      Most elements of LDmicro are "Level sensitive", some elements are
      "positive edge-triggered".

    > COIL, T-TRIGGER             Rname           Yname
                               ----(T)----     ----(T)----

      A coil T-trigger is edge-triggered flip-flop (toggle, tip-over, turn over).
      A coil flip-flop every rising edge of the input condition (i.e.
      what the input condition goes from false to true).
      If rising edge detected, then if coil state is false it is sets true.
      If next rising edge detected then if coil state is true it is sets to false.
      This instruction must be the rightmost instruction in its rung.
      You can simply present as a T-trigger with the positive
      edge-triggered input.

    * Added: MessageBox("Rename the ALL other 'N' contacts/coils named 'Name' to 'NewName' ?")
      after editing the contacts/coils name.

    * Added: Menu Edit->Cut Selected Element (Alt+Del). Then use  menu
      Edit->Paste Rungs or Element &Into Rung (Alt+Insert) to insert element
      in new position.

    * Added: Menu Edit->Replace Selected Element in Group.
      For example: CTU->CTD->CTC->CTR->...

== Release 4.0.2 experimental

    * Fixed:
      LDmicro Forum - hex file error
      http://cq.cx/ladder-forum.pl?action=viewthread&parent=5008
      LDmicro Forum - 4.01 hex problem
      http://cq.cx/ladder-forum.pl?action=viewthread&parent=5410

      AUTO_BANKING and AUTO_PAGING version 3 for PIC's.

    * New: It is possible to add PIC10Fxxx - PIC12Fxxx family microcontrollers in LDmicro.

== Release 4.0.1 experimental

    * Fixed: All banks of RAM can be used.
      Added message about the amount of RAM used.

== Release 4.0.0 experimental

    * Fixed: CTD down counter in releases from v3.5.2 to v3.5.4 has critical
      decrement error. INT_DECREMENT_VARIABLE in PIC's MCU has a bug.
      Note: For BORROW flag, the polarity is reversed a CARRY-OUT flag.
      A subtraction is executed by adding the two's complement of the second
      operand.

    * Fixed: Fragment from forum:
      ...
      I loaded the 'hello.ld' and started simulation,
      then the 'H' of the 1st 'Hello' is dropped...
      ...
      Yes, first symbol dropped in UART simulation window.
      In hardware will be full text.
      Now all text printed in UART simulation window.
      SAMPLE\hello.ld added.

    * New: Variable name that begins with symbol '#' like
      #PINA, #PINB, #PINC, ... treated as input port.
      Operation -{ MOV dest, #PINA }- directly assigns 8-bit value from the hardware
      pins of the port A to the variable 'dest'.

      Variable name that begins with symbol '#' like
      #PORTA, #PORTB, #PORTC, ... now treated as output port.
      Operation -{ MOV #PORTA, src }- writes 8-bit value from
      the variable 'src' directly to the hardware pins of port A.
      Note: The output mode pins of the port is not set automatically. You
      must set it with operations COIL(YPA0..7) or
      with operations -{ MOV #TRISA, 0xFF }- .

    * Added:
      Bitwise operation: AND, OR, XOR, NOT.
      Please read http://en.wikipedia.org/wiki/Bitwise_operation

      Arithmetic shift: SHL, SHR.
      https://en.wikipedia.org/wiki/Arithmetic_shift

      Logical shift to right SR0.
      https://en.wikipedia.org/wiki/Logical_shift
      Logical shift to left is equivalent to SHL arithmetic shift to left.

      Circular shift: ROL, ROR.
      https://en.wikipedia.org/wiki/Circular_shift

      Bitwise swap nibbles in a byte SWAP.
      -{SWAP b, a}- If 'a' is 0xA5, then 'b' will be 0x5A.
      https://en.wikipedia.org/wiki/Nibble

    * Added:
      Operations with one bit:
      SetBit - set bit
      ClrBit - clear bit

      -{SetBit var, bit}- In variable 'var' set bit number 'bit'.

      'Bit' means number of bit, not bit mask. For example,
      to set bit number 4 in variable 'var'
                        v
       Bit numbers:  76543210
       'var'      :  xxx1xxxx
                        ^
      you must write    ^
          -{SetBit var, 4}-  not  -{SetBit var, 0x10}-

    * Added:
      IfBitSet - If bit set
      IfBitClr - If bit clear

      If the input to this instruction is false then the output is false. If
      the input is true then the output is true if and only if the given
      condition is true. This instruction can be used to check the state only
      one bit of the variable.
      'Bit' means number of bit, not bit mask.

      Operation -{IfBitSet var, 0}- is equivalent condition 'If var is odd'.
      Operation -{IfBitClr var, 0}- is equivalent condition 'If var is an even'.

    * Added:
      LED segments displays: 7SEG, 9SEG, 14SEG, 16SEG.
      https://en.wikipedia.org/wiki/Seven-segment_display
      https://en.wikipedia.org/wiki/Nine-segment_display
      https://en.wikipedia.org/wiki/Fourteen-segment_display
      https://en.wikipedia.org/wiki/Sixteen-segment_display

      7 segments display
           a
          --
       f|    |b
        |  g |
          --
       e|    |c
        |    |
          --  .
           d  DP

      SEGMENT   DP g f e d c b a
      BIT        7 6 5 4 3 2 1 0

      7SEG associate bit0 to pin A, bit1 to pin B, bit2 to pin C, bit3 to pin B,
      bit4 to pin D, bit5 to pin E, bit6 to pin F, bit7 to pin DP.

    * Added:
      Bitwise sofrware bus tracer: BUS.
      BUS is not a vehicle.
      BUS means bus conductors on the printed circuit board.
      When you trace route output pins from the MCU port to 7 segment LED display,
      you can connect any pin of port to any pin of LED display as you comfortable.
      Then you must set sofrware mapping transformation for bits. For example
      SEGMENT   DP g f e d c b a
      BIT        7 6 4 5 3 2 0 1
      if b<->a and f<->e.

    * Added:
      BIN2BCD, BCD2BIN packed operations.
      https://en.wikipedia.org/wiki/Binary-coded_decimal

    * Added:
      Negative NEG, signed variable a = -a.
      Negative -{NEG a}- is the optimized equivalent to -{SUB a:= 0 - a}-

    ! Attention:
    ! You can only add, edit, save, load this elements marked 'EDIT:' in menu.
    ! No simulation. No compile code at output.

    * Added: SAMPLE\swatch2.ld - Stopwatch2 with 7 segments LED displays.
      https://github.com/LDmicro/LDmicro/wiki/Stopwatch2-with-7-segments-LED-displays

    * Added: SAMPLE\7Segments.ttf. Install 7Segments.ttf in Windows\Fonts
      and view 7Segments.doc.

    * Added: SAMPLE\swatch1.ld - Stopwatch1 over UART.
      https://github.com/LDmicro/LDmicro/wiki/Stopwatch1-over-UART

== Release 3.5.4 experimental

    * Highlight rungs number.

    * Added menu Select Rungs.

    * Allow constant value from 0x0000 to 0xFFFF in hexadecimal.

== Release 3.5.3 experimental

    * Remuved lines between rungs.
      It fix troubles to set the cursor in the instruction with mouse.
      If you need a delimiter between rungs, you can use an empty comment.

    * Fixed: Attention! TON, TOF, RTO timers in LDmicro v2.3 are shorter than
      those specified in the LD file. They shorter at one PLC cycle time.

      If PLC cycle time is 20 ms and contact bounce about 20 ms you can
      project schema like this. With anti contact bounce 40 ms.
      But in fact it was 20 ms.
    ||                                                                  ||
    ||     Xstart       Tanti_bounce1        _    _          Rwork      ||
    ||-------] [---------[TON 40 ms]------[_/ OSR/ \_]--------(S)-------||
    ||                                                                  ||
    ||      Xstop       Tanti_bounce2      _      _          Rwork      ||
    ||-------]/[---------[TOF 40 ms]------[ \_OSF/ \_]--------(R)-------||
    ||                                                                  ||
      Now TON, TOF, RTO produce delays as specified in LD file.
      In this case it 40 ms.

    * Added: Specially for generating cyclic signals with a predetermined
      period and frequency added Cyclic Timer TCY.
    ||                                                                  ||
    ||      Rwork          Tmeandr                          Ymeander    ||
    ||-------] [---------[TCY 50 ms]---+----------------------( )-------||
    ||                                 |                                ||
    ||                                 |     _    _        Yr_pulse     ||
    ||                                 +--[_/ OSR/ \_]--------( )-------||
    ||                                 |                                ||
    ||                                 |   _      _        Yf_pulse     ||
    ||                                 +--[ \_OSF/ \_]--------( )-------||
    ||                                                                  ||
      If input signal is true, TCY produce meander with period 100 ms and
      frequency 10 Hz. If the signal going into the instruction is false,
      then the output signal is false.
      Yr_pulse - is pulse at rising edge of meander.
      Yf_pulse - is pulse at falling edge of meander.
      Frequency is 10 Hz. Width of pulse is a PLC cycle time.

    * PIC optimization. WriteRegister(reg, 0) replaced CLRF, reg.

== Release 3.5.2 experimental

    * Fixed: Some user interface bug.

    * Added: INT_DECREMENT_VARIABLE internal oparation.

== Release 3.5.1 experimental

    * Fixed: Timer0 as PLC cycle in AVR's corrected.

    * Fixed: If try to change settings for MCU-Parameters,
      the 'ldmicro-de.exe' gets busy forever
      and eats up windows memory.

    * Added: CTR reversive counter added.
      It like CTC but with decrement counting inside.

      Added 'Init' value in CTU,CTD,CTC,CTR counters.
      CTU,CTC counter start from 'Init' and count up to 'Max' value.
      CTC generate overfill(carry) impulse when Counter==Max.

      CTD,CTR counter start from 'Init' and count down to 'Min' value.
      CTR generate overfill(borrow) impulse when Counter==Min.

    * Attention! You may need to correct the previous versions of the program containing CTD counter!
      For example:
               Counter:0  1   2   3   4   5
                          _   _   _   _   _
      CTU >= 5   Input: _/ \_/ \_/ \_/ \_/ \
                                          ___
                Output: _________________/

      The output CTU counter is true if the counter variable is
      GREATER than 5 or EQUAL to 5, and false otherwise.

    * Modified: In CTD '>=' condition changed to '>'.

               Counter:0 -1  -2  -3  -4  -5
                          _   _   _   _   _
      CTD > -5   Input: _/ \_/ \_/ \_/ \_/ \
                        _________________
                Output:                  \___

      The output CTU counter is true if the counter variable is
      GREATER than 5, and false otherwise.

      This modification leads to a symmetric switching of outputs
      when CTU=5 and CTD=-5.

      See LDmicro\SAMPLE\ctu_ctd_ctc_ctd.ld

== Release 3.5.0 experimental pre-release

    * Fixed: Address of configuration word(s) are checked and corrected on PIC controllers.

    * Fixed: On PIC microcontrollers there is bit 7 on OPTION_REG named
        _RBPU: PORTB Pull-up Enable bit or
        _WPUEN: Weak Pull-up Enable bit.
        Defaut value is 1 = PORTs pull-ups are disabled.
      Now bit 7 is cleared and pull-ups are enabled.

      Attention: Not all PIC's ports have a pull-up resistors.
      See datasheets of the controller.
      Use an external resistor, if there is no internal pull-up.

    * Modified:
       Frequency of PWM in Element SET PWM was defined as
         int     targetFreq;
       now redefined as
         char    targetFreq[MAX_NAME_LEN];

       Max value in Element COUNTER and CIRCULAR COUNTER was defined as
         int     max;
       now redefined as
         char    max[MAX_NAME_LEN];

       Now you can use variable as argument of a COUNTER or SET PWM.
       It allow to create more sophisticated algorithms in LD.

    * You can specify literals as normal decimal numbers (10, 1234, -56).
      Added:
      You can specify hexadecimal numbers (0xA, 0x04D2, 0xffc8),
      octal numbers (0o12, 0o2322, 0o177710),
      binary numbers (0b1010, 0b10011010010, 0b1111111111001000)
      in most places that you could use a decimal number.

    * Added: You can replace LD elements in editor mode by pressing SPACE key.
      For example OSR->OSF->OSR,
        TON->TOF->RTO->TON ets.

    * Added: Copy-Paste Rungs. To select rungs press Shift+Up, Shift+Down,
      or Ctrl+LeftMouseKey. Then press Ctrl+Insert to write selected rungs
      into buffer(file ldmicro.tmp). Then in new place press Shift+Insert
      to insert buffer into LD diagram.

      For copying only one selected element press Insert, and then Alt+Insert
      to Pasting element in new place.

      Selected rungs marks symbol '*' before rungs number.
      Buffered rungs marks symbol 'R'.
      Buffered element marks symbol 'L' if leaf end 'E' if ends element.

      If cursor under the selected element, then buffer will be Pasted
      below the current rung, otherwise buffer will be Pasted before
      the current rung.

    * Added: Open LD file in notepad F4. Its allow you rename variables and
      contacts in notepad. You must use "replace all" in notepad for renaming.
      Be careful. Recommended to create reserve copy of LD file before editing.
      Notepad called over notepad.bat and you can change notepad.bat for
      calling you favorite editor.

    * Added: Display scrolling Up/Down/PgUp/PgDown/Home/End.

    * Modified: Compressed view of LD diagram on display. You can see more
      in the display without scrolling.
      ADD, SUB, MUL, DIV redused to one display area on the screen.
      If variable name more then display area (for example LongNameOfVar),
      it displayed with symbol '~' as LongNameOf~ and still work.

      ||      Xnew       {LongNameOf~ :=} ||
      ||-------] [-------{MOV         10}-||

    * Reorganized menu. ProcessorMenu2, CmpMenu, SignedMenu added etc.

    * Added: Used hardware multiplication MUL, MULS, MULSU for AVR's.

    * Added: Used AUTO_BANKING and AUTO_PAGING for PIC's. Its allows to
      adding new MCUs more simple.

    * International System (SI) prefixes used in many places.

    * In simulation mode You can set inputs to 1 before simulating.
  vvv Obsolete!!! See Release 4.0.3 vvvvvvvvvvvvvvvvvvvvvvvvvvvv
  v   Use symbol '_' after X in contact name.                  v
  v   For example:                                             v
  v   Xcontast1 sets to 0 before simulating. (normal open)     v
  ^   Xcontast2 sets to 0 before simulating. (normal open)     ^
  ^   X_contast3 sets to 1 before simulating. (normal closed)  ^
  ^   X_contast4 sets to 1 before simulating. (normal closed)  ^
  ^^^ Obsolete!!! See Release 4.0.3 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      This feature applies only in simulation mode,
      and does not affect hex file in physical device.

    * Added ELEM_OSC oscillator F=1/(2*Tcycle)

    * Added: In 'PLC Configuration' dialog you can select timer 0 or 1 for generating of PLC cycle.
      This allow use Timer1 for PWM or other features.

    * Added: In 'PLC Configurations' dialog added YPlcCycleDuty pin.
      YPlcCycleDuty pin set to 1 at begin and to 0 at end of PLC cycle.
      You can measure frequency(it must be 1/Tcycle) and duty cycle of PLC.
      If your program is too big for the cycle time, then it will work slower
      than you expected. Communication with the external environment may be
      destroyed. Cycle time can be unstable.
      You can monitor stability and duration of cycle time with YPlcCycleDuty pin.
      Unstable frequency or big duty cycle says about long LD programm
      and too short PLC cycle.

== Release 3.4.0

    * Added: This release include fork https://github.com/f1oat/LDmicro.

      Compressed bytecodes, Controllino Maxi support, MODBUS support.
      http://cq.cx/ladder-forum.pl?action=viewthread&parent=5007
      MODBUS use RTU over TCP. But that should work also in RS485 mode by
      linking with the proper Arduino library.

      Announcing LDuino, an Arduino based PLC software compatible with LDmicro
      http://cq.cx/ladder-forum.pl?action=viewthread&parent=5070

      Controllino is here: http://controllino.biz/
      This a nice product. Unfortunately the creator got bad reputation on Kickstarter.
      https://www.kickstarter.com/projects/24519005/controllino-plc-arduino-compatible/description

      More information you can get from author of Controllino Maxi support in LDmicro:
      Frederic Rible <frible@teaser.fr>

      Attention! Not compatible with LDmicro2.3, if modbus contacts used.

== Release 3.3.1

    * Fixed: Error message "Couldn't open file ...." in menu "Compile as"

== Release 3.3.0

      The backward compatibility still saved.

    * Fixed: PWM for AVR rechecked and corrected.

    * Fixed: Now is able to send the full range(0x00..0xff) of unsigned char symbol
      as hexadecimal numbers in 'Formatted String Over UART' element.
      Release 3.2.1   raise error with formated strings "\0xFF" and "\0xFE".
      Release 2.3 can raise error with formated strings "\0xFF" and "\0xFE".
      Release 2.2 can raise error with formated strings "\0x00" and "\0x01".

    * Added: LDmicro can generate fully functional ASM code
      for AVR Studio or Microchip MPLAB software.
      EEPROM, UART, ADC, PWM are supported too. See
      https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-Integrate-LDmicro-and-AVR-Studio-or-PIC-MPLAB-software.

== Release 3.2.1

    * Fixed simulate.cpp error 307.

== Release 3.2.0

      The backward compatibility still saved.

    * AVR MCU list sorted in accordance with the Atmel AVR Instruction set inheritance table.
      https://en.wikipedia.org/wiki/Atmel_AVR_instruction_set#Instruction_set_inheritance
      This simplifies of adding AVR MCU.

    * Added Number of internal pseudocode operations for each rungs of ladder diagram.
      It is shown below the rung number.
      Added Number of MCU's oparations for each rungs of ladder diagram.
      It is shown below the internal operations number.
      Save as text exports its too.
      You can optimise your code size and speed.

    * Added readMcu.bat. You can read MCU memory directly from LDmicro IDE with Ctrl+F6 key.
      (Now only AVR)

    * Added flashMcu.bat. You can program (flash) MCU directly from LDmicro IDE with F6 key.
      menu -> Compile -> Call flashMcu.bat F6 is worked for AVR's MCU via AVRDUDE. See
      https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-Using-LDmicro-and-Arduino-board-without-an-Arduino-software.
      (Now only AVR)

    * Added postCompile.bat. It copies LDmicro output files to another directory.
      Prepare for Arduino and others software.

    * Added: LDmicro can generate fully functional Arduino C code.
      EEPROM, UART, ADC, PWM are supported too. See
      https://github.com/LDmicro/LDmicro/wiki/HOW-TO:-Integrate-LDmicro-and-Arduino-software.

    Thanks to:
      Adam Horcica
        http://adam.horcica.cz/tools/ladder-gen/
        http://electronics4dogs.blogspot.cz/2011/07/ldmicro-and-arduino.html
      Devel
        http://cq.cx/ladder-forum.pl?action=viewthread&parent=3296

== Release 3.1.1

      The backward compatibility still saved.

    * Fixed internal error at line 222 file 'ldmicro.cpp' (ISA_AVR1).

    * Fixed Turkish translation.

    * Fixed 'Formatted String Over UART' SELF-starting error.
      See http://cq.cx/ladder-forum.pl?action=viewthread&parent=4878

    * Added escape sequences:
        * \t   -- horizontal tab
        * \v   -- vertical tab
        * \a   -- alert

    * Fixed escape sequences in UART simulation window(Terminal).
      Compared with Windows HyperTerminal and Putty.
      See demo frmt_escape.ld, added to SAMPLES directory.

== Release 3.1.0

    * Move an element CTC count from EndOFRung to LeafOfRung.
      After the counter overfill CTC generate OSR at its output.
      Format of LD file will not changed.
      Not need changes for old LD program
      in this LDmicro realese (backward-compatible).
      Demo ctc_osr.ld added to SAMPLES directory.

    TODO: It is necessary to reflect the new features of CTC
          into manual.txt by native English speakers.

== Release 3.0.1
                                                            this is
                                                            input
                                                            v
                                              _              _    _
    * Changed symbol ONE-SHOT RISING  --[OSR_/ ]--  to  --[_/ OSR/ \_]--
                                                                  ^
                                                                  this is
                                                                  output
                                                                  v
                                            _              _      _
    * Changed symbol ONE-SHOT FALLING --[OSF \_]--  to  --[ \_OSF/ \_]--
                                                            ^
                                                            this is
                                                            input
      I think that these symbols would be more understandable for beginners.

    * Changed ANSI_CHARSET to DEFAULT_CHARSET. This will correctly display
      the national characters in the comments on the screen.

    * Increase MAX_IO from 512 to 1024.

== Release 3.0.0

    * LDmicro support:
         Repository: https://github.com/LDmicro/LDmicro
         Email:      LDmicro.GitHub@gmail.com

    * Add Japanese translation from https://github.com/snipsnipsnip/ldmicro-jp
    * Add Russin translation from http://www.vga-avr.narod.ru/,
         Email:maxxir@rambler.ru
    * Add SFR function for AVR MCU from http://cq.cx/ladder-forum.pl
         by Dzairo, Email : dsevc@post.sk, sevc@post.sk
    * Add Netser Ethernet interface Project
         http://www.mobacon.de/wiki/doku.php/en/netzer/index
         from https://github.com/mobacon/ldmicro/commits/netzer

== Release 2.3 sfr  by http://cq.cx/ladder-forum.pl

      LDmicro_experimental_sfr02

== Release 2.3  by http://cq.cx/ladder-forum.pl

    * Fix problem with PWM pin for ATmega16,ATmega32
    * Add new MCU : ATmega164,ATmega324,ATmega664,ATmega1284 in
      DIP40 package need test PERSIST - not working in ATmega16 or 32

    * News... (by Dzairo) from http://cq.cx/ladder-forum.pl?action=viewthread&parent=3895
      Here are some news in LD micro. I add to LD micro this new MCU:
      ATmega164,324,644,1284 in DIP40 package. I test all hardware: PWM,ADC,UART
      work good.. Only one function not working : PERSIST Pls MPG add here some
      easy example for ATmega32 to test it (this is original code what I not
      change) and if will working then I try test with ATmega644. I try code
      after power up MCU to set PWM from variable in EEprom.

      Ehm.... but in Source code (original ) are some bugs what I find. 1.for
      avr MCU is setting Interupt bit for timer1 . not need it 2.in mcutable.h
      MCU PWM pin is 0 for mega16,32 then Idd corect pin in DIP40 this pin is 21
      (OC2). This pin is used for mega164,324,664,1284 .. test it and work good.

      I try add another MCU to LDmicro ATmega48,88,168,328 also..

== Release 2.3

    * Fix buffer overrun or write to null pointer if Windows sends an
      LVN_GETDISPINFO without a valid item.pszText, which happens now
      under Win10.

== Release 2.2

    * Fix a problem with the ANSI C target when the program had bit and
      integer variables with the same name. Note that this changes the
      names of the symbols in the generated C program; so a system that
      uses "magic variables" with this target for I/O must be updated
      to use the new names.

    * Fix a subtle bug in the PIC16 add and subtract routines, where
      operations of the form B = A - B could fail.

    * The piecewise linear tables were broken for the AVRs; fix that.

== Release 2.1

    * For the AVR UARTs, poll UDRE instead of TXC. The formatted string op
      was broken on some targets, should now be fixed.

    * Don't draw selected op in bold font; that looks ugly under Vista.

== Release 2.0

    * Add PIC16F886 and PIC16F887 targets.

    * Fix display bug in the list to select an I/O pin.

    * Fix bug where PIC16 UART locks up forever after a framing error when
      the cycle time is faster than one byte time.

    * Fix bug where PIC16 outputs could briefly glitch high at startup.

    * Clear PCLATH in PIC16 boot vector, since some bootloaders expect that.

== Release 1.9

    * Modify PIC16 boot vectors to work with many bootloaders.

== Release 1.8

    * Fix modification of a constant string that blew up in new MSVC++
      compiler.

    * Add Italian, Turkish, Portuguese.

== Release 1.7

    * Make the source compile with latest version of MSVC++; overloaded
      functions behave a bit differently.

    * Recover from (and ignore) UART errors on the PIC16 target, instead
      of getting stuck forever.

    * Whenever contacts bound to an output pin (Yfoo) were edited, they
      reverted to an input pin (Xfoo); now fixed.

    * Don't abort on too-wide program; instead display nice message.

    * It was possible (by adding and deleting contacts/coils with the
      same name) to end up with two bit variables bound to the same
      physical I/O pin; now fixed.

    * File -> Open was correct, but Ctrl+O failed to ask about unsaved
      changes before opening requested file; now both are correct.

    * Add Spanish user interface strings.

== Release 1.6

    * Internationalize the user interface strings; we now have versions
      in English, French, and German.

    * First source release, under the GPLv3.

== Release 1.5

    * Add untested support for ATmega32.

    * Remove annoying lag in user interface when editing large (hundreds
      of ops) programs

== Release 1.4

    * Fix a terrible bug in the target for the ATmega8; because there is
      no PORTA/DDRA/PINA, I broke an assumption in my code and failed
      to set up the port directions.

== Release 1.3

    * Timer delays are represented as a signed 32-bit integer count
      of microseconds. If the user provides a delay >= 2**31 us, then
      show an error instead of just letting things wrap.

    * Change the start-up behaviour of TOF timers. Previously they would
      start from a count of zero, so they would be on (independent of
      rung-in) until they counted themselves off. Now they start out
      at full count (as if rung-in has been low for a very long time),
      so rung-out is low until rung-in goes high.

== Release 1.2

    * Add an untested target for the ATmega8

    * Add a special instruction to simplify piecewise linear tables

    * Fix some user interface bugs: it was possible to drag the top of the
      I/O list so high that you couldn't grab it again, and there were
      some cases in which the pin number associated with UART and PWM
      variables was not displayed

== Release 1.1

    * Fix persistent variables, which were broken for the PIC16F628

== Release 1.0

    * Fix bug in which the filename that appears in the title bar of the
      main window failed to get updated when opening/saving a file using
      the keyboard shortcuts (Ctrl+O/+S)

    * Fix simulation crash when the ladder logic program divides by zero

    * Fix jumpy scrolling on programs with many rungs of logic when the
      cursor is off-screen

== Release 0.9

    * Fix bug with formatted string op on the AVR
    * Fix previously-untested ATmega16 and ATmega162 targets, which were
      completely broken

=== Release 0.8

    * Fix PORTA on the PIC16F819 (came up assigned to ADCs, of course)

=== Release 0.7

    * Support arbitrary character (\xAB) escapes in formatted string op
    * Fix a bug in which the title bar of the main window was not updated

=== Release 0.6

    * Add formatted text output over serial (e.g. to an LCD or a PC)
    * Add ability to make variables persistent (i.e. auto-saved in EEPROM)
    * Add look-up table instructions
    * Fix a bug with the PORTE pins on some AVRs
    * Fix miscellaneous user interface bugs

=== Release 0.5

    * Interpretable byte code target
    * Shift register and master control relay instructions

=== Release 0.4

    * Make ADCs work on the AVRs

=== Release 0.3

    * Support serial for AVR
    * Support PWM for PIC16 and AVR
    * Show program filename in title bar of main window
    * Untested support for PIC16F88, F819, F876
    * Generate ANSI C code from ladder diagram

=== Release 0.2

    * Support serial communications (using UART), PIC16 only
    * Support ADC reads, PIC16 only
    * Simulation environment for ADC and serial
    * Support ASCII character constant ('a') literals
    * Fix PORTA pins in PIC16F628 (should assign as GPIO, not to comparator)
    * Make file open/save dialogs work under Win98
    * Fix PORTA/PORTE pins in PIC16F877 (should assign as GPIO, not to ADC)
    * Add ability to comment your program
    * Fix bug when a relative filename is given on the command line and
      the `Compile As' dialog is later used to specify a destination in
      a different directory

=== Release 0.1

    Initial release
