Flowcode Project File Parser

Ben Rowland 2019 (C) Matrix TSL


Target Device

PIC.16F.16C716

Constants


Globals

BYTE Sim_Init     HANDLE console_handle    

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

SendString

Return:     BYTE
Params:     STRING Data    
Vars:     UNSIGNED INT timeout     BYTE length    

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

Ev_Prop_Change

Return:     UNSIGNED LONG
Vars:     STRING TempStr     BYTE TempVal    

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

prv_PIC_Strings

Return:     STRING
Params:     STRING input     STRING define    
Vars:     BYTE idx     BYTE idx2     BYTE count     BYTE first     STRING temp_string     STRING temp_define    

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

Ev_Stop

Return:     UNSIGNED LONG

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

prv_dsPIC_Strings

Return:     STRING
Params:     STRING input     STRING define    
Vars:     BYTE idx     BYTE idx2     BYTE count     BYTE first     STRING temp_string     STRING temp_define    

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

Ev_AddInterrupts

Return:     UNSIGNED LONG
Params:     STRING HandlerCode    

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

Sim_ReadString

Return:     STRING
Params:     BYTE Timeout_ms     BYTE Length    
Vars:     UNSIGNED INT retval     UNSIGNED INT TOUT_retval     BYTE idx    

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

SendNumber

Return:     BYTE
Params:     SIGNED INT Number    
Vars:     STRING str    

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

Ev_Initialise

Return:     UNSIGNED LONG
Vars:     STRING temp     BYTE idx     BYTE idx2     STRING OutStr    

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

Ev_Compile_Start

Return:     UNSIGNED LONG
Vars:     STRING TempStr     HANDLE FileHandle    

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

prv_PIC32_String

Return:     STRING
Params:     STRING ascii_str    
Vars:     UNSIGNED INT idx     UNSIGNED INT strlen    

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

ReadString

Return:     STRING
Params:     BYTE Timeout_ms     BYTE Length    
Vars:     BYTE Wait_Forever    

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

Ev_ChipChange

Return:     UNSIGNED LONG
Params:     STRING Target    

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

InitSim

Return:     BYTE
Vars:     UNSIGNED INT delay_counter    

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

SendByte

Return:     BYTE
Params:     BYTE data    
Vars:     UNSIGNED INT timeout    

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

Sim_SendString

Return:     BYTE
Params:     STRING Data    
Vars:     BYTE count     BYTE idx    

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

SendByteArray

Return:     BYTE
Params:     BYTE Data     BYTE NumBytes    
Vars:     UNSIGNED INT timeout    

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

Sim_SendByte

Return:     BYTE
Params:     BYTE data    
Vars:     UNSIGNED INT timeout     BYTE buf    

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

Ev_Renamed

Return:     UNSIGNED LONG
Vars:     STRING Name    

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

prv_process_properties

Return:     UNSIGNED LONG
Params:     STRING PropName     STRING Expansion    
Vars:     STRING compare     BYTE comparison     STRING string2     STRING string3    

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

Ev_SimStart

Return:     UNSIGNED LONG
Vars:     STRING PropStr     BYTE Instance    

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

prv_AVR_Unicode

Return:     STRING
Params:     STRING asci_str    
Vars:     BYTE strlen     BYTE idx    

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

ReadByte

Return:     UNSIGNED INT
Params:     BYTE Timeout_ms    
Vars:     BYTE Wait_Forever    

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

prv_generate_driver

Return:     UNSIGNED LONG
Vars:     STRING file_path     BYTE temp     HANDLE file_handle     UNSIGNED INT File_Size     STRING file_string     STRING VID_string     STRING PID_string    

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

SendNumberSim

Return:     BYTE
Params:     SIGNED INT Number    
Vars:     STRING str    

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

Main

Return:     VOID

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

Sim_ReadByte

Return:     UNSIGNED INT
Params:     BYTE Timeout_ms    
Vars:     BYTE Wait_Forever     UNSIGNED INT TOUT_retval     BYTE buf    

Your browser does not support the HTML5 canvas tag.

SendString    /    Ev_Prop_Change    /    prv_PIC_Strings    /    Ev_Stop    /    prv_dsPIC_Strings    /    Ev_AddInterrupts    /    Sim_ReadString    /    SendNumber    /    Ev_Initialise    /    Ev_Compile_Start    /    prv_PIC32_String    /    ReadString    /    Ev_ChipChange    /    InitSim    /    SendByte    /    Sim_SendString    /    SendByteArray    /    Sim_SendByte    /    Ev_Renamed    /    prv_process_properties    /    Ev_SimStart    /    prv_AVR_Unicode    /    ReadByte    /    prv_generate_driver    /    SendNumberSim    /    Main    /    Sim_ReadByte    /    Initialise

Initialise

Return:     BYTE
Vars:     UNSIGNED INT delay_counter    

Your browser does not support the HTML5 canvas tag.

Verison History

Version 0.6
12/09/19 BR - Created initial recursive parser
14/09/19 BR - Added support for disabled icons
18/09/19 BR - Fixed decision icon parsing
19/09/19 BR - Added switch icon support
23/09/19 BR - Fixed recursive loop spacing
27/09/19 BR - Further tweaked spacing and added Macro menu
30/09/19 BR - Improved all string spacing
01/10/19 BR - Improved While icon support