commit 8d73eb8a0dd2208ffeec6d2b7b2f935f6a133ada
Author: Enzo Niro <enzo.niro@inrae.fr>
Date:   Tue Jan 28 13:51:01 2025 +0100

    Version 2.0 :
    -> Ajout du Watchdog
    -> Restructuration du code (commentaires, definitions)

diff --git a/Version 2.0/RS232_MUX.X/.generated_files/flags/default/189e35e8b80d1055f943337af00f1a3eb5a3e3f0 b/Version 2.0/RS232_MUX.X/.generated_files/flags/default/189e35e8b80d1055f943337af00f1a3eb5a3e3f0
new file mode 100644
index 0000000..834c2a7
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/.generated_files/flags/default/189e35e8b80d1055f943337af00f1a3eb5a3e3f0	
@@ -0,0 +1 @@
+ $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1 -g -DDEBUG  -gdwarf-2  -x c -D__$(MP_PROCESSOR_OPTION)__   -mdfp="${DFP_DIR}/xc8"  -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fshort-enums -fno-common -funsigned-char -funsigned-bitfields -Wall -DXPRJ_default=$(CND_CONF)  $(COMPARISON_BUILD)  -gdwarf-3 -mno-const-data-in-progmem    C:\Users\eniro\MPLABXProjects\RS232_MUX.X\main.c
\ No newline at end of file
diff --git a/Version 2.0/RS232_MUX.X/.generated_files/flags/default/c23a79e077f40f861ae8b9b0a728ca7712177407 b/Version 2.0/RS232_MUX.X/.generated_files/flags/default/c23a79e077f40f861ae8b9b0a728ca7712177407
new file mode 100644
index 0000000..5550768
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/.generated_files/flags/default/c23a79e077f40f861ae8b9b0a728ca7712177407	
@@ -0,0 +1 @@
+ $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -x c -D__$(MP_PROCESSOR_OPTION)__   -mdfp="${DFP_DIR}/xc8"  -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fshort-enums -fno-common -funsigned-char -funsigned-bitfields -Wall -DXPRJ_default=$(CND_CONF)  $(COMPARISON_BUILD)  -gdwarf-3 -mno-const-data-in-progmem    C:\Users\eniro\MPLABXProjects\RS232_MUX.X\main.c
\ No newline at end of file
diff --git a/Version 2.0/RS232_MUX.X/.generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709 b/Version 2.0/RS232_MUX.X/.generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
new file mode 100644
index 0000000..e69de29
diff --git a/Version 2.0/RS232_MUX.X/Makefile b/Version 2.0/RS232_MUX.X/Makefile
new file mode 100644
index 0000000..fca8e2c
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/Makefile	
@@ -0,0 +1,113 @@
+#
+#  There exist several targets which are by default empty and which can be 
+#  used for execution of your targets. These targets are usually executed 
+#  before and after some main targets. They are: 
+#
+#     .build-pre:              called before 'build' target
+#     .build-post:             called after 'build' target
+#     .clean-pre:              called before 'clean' target
+#     .clean-post:             called after 'clean' target
+#     .clobber-pre:            called before 'clobber' target
+#     .clobber-post:           called after 'clobber' target
+#     .all-pre:                called before 'all' target
+#     .all-post:               called after 'all' target
+#     .help-pre:               called before 'help' target
+#     .help-post:              called after 'help' target
+#
+#  Targets beginning with '.' are not intended to be called on their own.
+#
+#  Main targets can be executed directly, and they are:
+#  
+#     build                    build a specific configuration
+#     clean                    remove built files from a configuration
+#     clobber                  remove all built files
+#     all                      build all configurations
+#     help                     print help mesage
+#  
+#  Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and
+#  .help-impl are implemented in nbproject/makefile-impl.mk.
+#
+#  Available make variables:
+#
+#     CND_BASEDIR                base directory for relative paths
+#     CND_DISTDIR                default top distribution directory (build artifacts)
+#     CND_BUILDDIR               default top build directory (object files, ...)
+#     CONF                       name of current configuration
+#     CND_ARTIFACT_DIR_${CONF}   directory of build artifact (current configuration)
+#     CND_ARTIFACT_NAME_${CONF}  name of build artifact (current configuration)
+#     CND_ARTIFACT_PATH_${CONF}  path to build artifact (current configuration)
+#     CND_PACKAGE_DIR_${CONF}    directory of package (current configuration)
+#     CND_PACKAGE_NAME_${CONF}   name of package (current configuration)
+#     CND_PACKAGE_PATH_${CONF}   path to package (current configuration)
+#
+# NOCDDL
+
+
+# Environment 
+MKDIR=mkdir
+CP=cp
+CCADMIN=CCadmin
+RANLIB=ranlib
+
+
+# build
+build: .build-post
+
+.build-pre:
+# Add your pre 'build' code here...
+
+.build-post: .build-impl
+# Add your post 'build' code here...
+
+
+# clean
+clean: .clean-post
+
+.clean-pre:
+# Add your pre 'clean' code here...
+# WARNING: the IDE does not call this target since it takes a long time to
+# simply run make. Instead, the IDE removes the configuration directories
+# under build and dist directly without calling make.
+# This target is left here so people can do a clean when running a clean
+# outside the IDE.
+
+.clean-post: .clean-impl
+# Add your post 'clean' code here...
+
+
+# clobber
+clobber: .clobber-post
+
+.clobber-pre:
+# Add your pre 'clobber' code here...
+
+.clobber-post: .clobber-impl
+# Add your post 'clobber' code here...
+
+
+# all
+all: .all-post
+
+.all-pre:
+# Add your pre 'all' code here...
+
+.all-post: .all-impl
+# Add your post 'all' code here...
+
+
+# help
+help: .help-post
+
+.help-pre:
+# Add your pre 'help' code here...
+
+.help-post: .help-impl
+# Add your post 'help' code here...
+
+
+
+# include project implementation makefile
+include nbproject/Makefile-impl.mk
+
+# include project make variables
+include nbproject/Makefile-variables.mk
diff --git a/Version 2.0/RS232_MUX.X/build/default/debug/main.o b/Version 2.0/RS232_MUX.X/build/default/debug/main.o
new file mode 100644
index 0000000..80877de
Binary files /dev/null and b/Version 2.0/RS232_MUX.X/build/default/debug/main.o differ
diff --git a/Version 2.0/RS232_MUX.X/build/default/debug/main.o.d b/Version 2.0/RS232_MUX.X/build/default/debug/main.o.d
new file mode 100644
index 0000000..3ead059
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/build/default/debug/main.o.d	
@@ -0,0 +1,97 @@
+build/default/debug/main.o.d build/default/debug/main.o: main.c \
+ c:\program\ files\microchip\xc8\v2.46\avr\lib\gcc\avr\5.4.0\include\xc.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\lib\gcc\avr\5.4.0\include\cci.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\io.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\sfr_defs.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\inttypes.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\features.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\lib\gcc\avr\5.4.0\include\stdint.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\stdint.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\bits\alltypes.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\bits\stdint.h \
+ C:/Program\ Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/include/avr/ioavr32da48.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\portpins.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\common.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\xmega.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\fuse.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\lock.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\builtins.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\stdio.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\string.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\math.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\stdlib.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\util\delay.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\util\delay_basic.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\interrupt.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\eeprom.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\lib\gcc\avr\5.4.0\include\stddef.h \
+ hardware_uart.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\lib\gcc\avr\5.4.0\include\stdbool.h \
+ hardware_timer.h hardware_TL16C754C.h hardware_config.h parameters.h \
+ frame_definitions.h
+
+c:\program\ files\microchip\xc8\v2.46\avr\lib\gcc\avr\5.4.0\include\xc.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\lib\gcc\avr\5.4.0\include\cci.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\io.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\sfr_defs.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\inttypes.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\features.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\lib\gcc\avr\5.4.0\include\stdint.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\stdint.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\bits\alltypes.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\bits\stdint.h:
+
+C:/Program\ Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/include/avr/ioavr32da48.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\portpins.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\common.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\xmega.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\fuse.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\lock.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\builtins.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\stdio.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\string.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\math.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\stdlib.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\util\delay.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\util\delay_basic.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\interrupt.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\eeprom.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\lib\gcc\avr\5.4.0\include\stddef.h:
+
+hardware_uart.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\lib\gcc\avr\5.4.0\include\stdbool.h:
+
+hardware_timer.h:
+
+hardware_TL16C754C.h:
+
+hardware_config.h:
+
+parameters.h:
+
+frame_definitions.h:
diff --git a/Version 2.0/RS232_MUX.X/build/default/production/main.o b/Version 2.0/RS232_MUX.X/build/default/production/main.o
new file mode 100644
index 0000000..df5ae92
Binary files /dev/null and b/Version 2.0/RS232_MUX.X/build/default/production/main.o differ
diff --git a/Version 2.0/RS232_MUX.X/build/default/production/main.o.d b/Version 2.0/RS232_MUX.X/build/default/production/main.o.d
new file mode 100644
index 0000000..23bdab4
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/build/default/production/main.o.d	
@@ -0,0 +1,99 @@
+build/default/production/main.o.d build/default/production/main.o: main.c \
+ c:\program\ files\microchip\xc8\v2.46\avr\lib\gcc\avr\5.4.0\include\xc.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\lib\gcc\avr\5.4.0\include\cci.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\io.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\sfr_defs.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\inttypes.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\features.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\lib\gcc\avr\5.4.0\include\stdint.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\stdint.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\bits\alltypes.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\bits\stdint.h \
+ C:/Program\ Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/include/avr/ioavr32da48.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\portpins.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\common.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\xmega.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\fuse.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\lock.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\builtins.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\stdio.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\string.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\math.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\stdlib.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\util\delay.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\util\delay_basic.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\interrupt.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\eeprom.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\lib\gcc\avr\5.4.0\include\stddef.h \
+ hardware_uart.h \
+ c:\program\ files\microchip\xc8\v2.46\avr\lib\gcc\avr\5.4.0\include\stdbool.h \
+ hardware_timer.h hardware_TL16C754C.h hardware_config.h parameters.h \
+ frame_definitions.h pins.h
+
+c:\program\ files\microchip\xc8\v2.46\avr\lib\gcc\avr\5.4.0\include\xc.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\lib\gcc\avr\5.4.0\include\cci.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\io.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\sfr_defs.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\inttypes.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\features.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\lib\gcc\avr\5.4.0\include\stdint.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\stdint.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\bits\alltypes.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\bits\stdint.h:
+
+C:/Program\ Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/include/avr/ioavr32da48.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\portpins.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\common.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\xmega.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\fuse.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\lock.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\builtins.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\stdio.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\string.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\math.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\stdlib.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\util\delay.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\util\delay_basic.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\interrupt.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\avr\include\avr\eeprom.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\lib\gcc\avr\5.4.0\include\stddef.h:
+
+hardware_uart.h:
+
+c:\program\ files\microchip\xc8\v2.46\avr\lib\gcc\avr\5.4.0\include\stdbool.h:
+
+hardware_timer.h:
+
+hardware_TL16C754C.h:
+
+hardware_config.h:
+
+parameters.h:
+
+frame_definitions.h:
+
+pins.h:
diff --git a/Version 2.0/RS232_MUX.X/defmplabxtrace.log b/Version 2.0/RS232_MUX.X/defmplabxtrace.log
new file mode 100644
index 0000000..e69de29
diff --git a/Version 2.0/RS232_MUX.X/defmplabxtrace.log.inx b/Version 2.0/RS232_MUX.X/defmplabxtrace.log.inx
new file mode 100644
index 0000000..29197e3
Binary files /dev/null and b/Version 2.0/RS232_MUX.X/defmplabxtrace.log.inx differ
diff --git a/Version 2.0/RS232_MUX.X/dist/default/debug/RS232_MUX.X.debug.elf b/Version 2.0/RS232_MUX.X/dist/default/debug/RS232_MUX.X.debug.elf
new file mode 100644
index 0000000..89fe724
Binary files /dev/null and b/Version 2.0/RS232_MUX.X/dist/default/debug/RS232_MUX.X.debug.elf differ
diff --git a/Version 2.0/RS232_MUX.X/dist/default/debug/RS232_MUX.X.debug.map b/Version 2.0/RS232_MUX.X/dist/default/debug/RS232_MUX.X.debug.map
new file mode 100644
index 0000000..f89c68a
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/dist/default/debug/RS232_MUX.X.debug.map	
@@ -0,0 +1,1429 @@
+Archive member included to satisfy reference by file (symbol)
+
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_copy_data.o)
+                              build/default/debug/main.o (__do_copy_data)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o)
+                              C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o (exit)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o)
+                              build/default/debug/main.o (malloc)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o)
+                              build/default/debug/main.o (_sprintf_cdopsuxX)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_d.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o) (__fmt_d_needed)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_o.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o) (__fmt_o_needed)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_s.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o) (__fmt_s_needed)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_u.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_d.o) (__cvt_u)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_x.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o) (__fmt_x_needed)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__pop_int.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o) (__pop_int_needed)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_d.o) (__pad)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(fputc.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o) (fputc)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(strlen.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_s.o) (strlen)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(tolower.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o) (tolower)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(toupper.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_x.o) (toupper)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(errno.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o) (__errno_val)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(_Exit.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o) (_Exit)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(expand_heap.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o) (__expand_heap)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsprintf.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o) (__vsprintf)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsnprintf.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsprintf.o) (__vsnprintf)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vfprintf.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsnprintf.o) (__vfprintf)
+C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eerd_byte.o)
+                              build/default/debug/main.o (eeprom_read_byte)
+C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eewr_byte.o)
+                              build/default/debug/main.o (eeprom_write_byte)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_u.o) (__udivmodsi4)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(_Exit.o) (_exit)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_prologue.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o) (__prologue_saves__)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_epilogue.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o) (__epilogue_restores__)
+
+Allocating common symbols
+Common symbol       size              file
+
+__errno_val         0x2               c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(errno.o)
+
+Discarded input sections
+
+ .data          0x0000000000000000        0x0 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+ .bss           0x0000000000000000        0x0 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+ .text          0x0000000000000000        0x0 build/default/debug/main.o
+ .data          0x0000000000000000        0x0 build/default/debug/main.o
+ .bss           0x0000000000000000        0x0 build/default/debug/main.o
+ .text.initPort0
+                0x0000000000000000       0x32 build/default/debug/main.o
+ .text.txWrite0
+                0x0000000000000000       0x20 build/default/debug/main.o
+ .text.rxRead0  0x0000000000000000       0x20 build/default/debug/main.o
+ .text.portAvailable0
+                0x0000000000000000        0x6 build/default/debug/main.o
+ .text.initPort1
+                0x0000000000000000       0x3c build/default/debug/main.o
+ .text.txWrite1
+                0x0000000000000000       0x20 build/default/debug/main.o
+ .text.rxRead1  0x0000000000000000       0x20 build/default/debug/main.o
+ .text.portAvailable1
+                0x0000000000000000        0x6 build/default/debug/main.o
+ .text.portAvailable2
+                0x0000000000000000        0x6 build/default/debug/main.o
+ .text.initPort3
+                0x0000000000000000       0x3c build/default/debug/main.o
+ .text.txWrite3
+                0x0000000000000000       0x20 build/default/debug/main.o
+ .text.rxRead3  0x0000000000000000       0x20 build/default/debug/main.o
+ .text.portAvailable3
+                0x0000000000000000        0x6 build/default/debug/main.o
+ .text.initPort4
+                0x0000000000000000       0x3c build/default/debug/main.o
+ .text.txWrite4
+                0x0000000000000000       0x20 build/default/debug/main.o
+ .text.rxRead4  0x0000000000000000       0x20 build/default/debug/main.o
+ .text.portAvailable4
+                0x0000000000000000        0x6 build/default/debug/main.o
+ .text.clearTimerFlag
+                0x0000000000000000        0x8 build/default/debug/main.o
+ .text.getParitySetA
+                0x0000000000000000        0x6 build/default/debug/main.o
+ .text.getParitySetB
+                0x0000000000000000        0x6 build/default/debug/main.o
+ .text.getParitySetC
+                0x0000000000000000        0x6 build/default/debug/main.o
+ .text.getParitySetD
+                0x0000000000000000        0x6 build/default/debug/main.o
+ .text.bootSequence
+                0x0000000000000000        0x6 build/default/debug/main.o
+ .bss._timerFlag
+                0x0000000000000000        0x1 build/default/debug/main.o
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_copy_data.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_copy_data.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_copy_data.o)
+ .text.libgcc.mul
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_copy_data.o)
+ .text.libgcc.div
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_copy_data.o)
+ .text.libgcc   0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_copy_data.o)
+ .text.libgcc.prologue
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_copy_data.o)
+ .text.libgcc.builtins
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_copy_data.o)
+ .text.libgcc.fmul
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_copy_data.o)
+ .text.libgcc.fixed
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_copy_data.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o)
+ .stack.descriptors
+                0x0000000000000000       0x73 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o)
+ .stack.descriptors
+                0x0000000000000000       0x1d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o)
+ .bss.lock.1484
+                0x0000000000000000        0x4 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o)
+ .stack.descriptors
+                0x0000000000000000       0x3d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o)
+ .text.__sio_sprintf_dosux
+                0x0000000000000000       0x1a c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_d.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_d.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_d.o)
+ .stack.descriptors
+                0x0000000000000000       0x15 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_d.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_o.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_o.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_o.o)
+ .stack.descriptors
+                0x0000000000000000       0x15 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_o.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_s.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_s.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_s.o)
+ .stack.descriptors
+                0x0000000000000000       0x15 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_s.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_u.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_u.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_u.o)
+ .stack.descriptors
+                0x0000000000000000       0x2a c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_u.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_x.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_x.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_x.o)
+ .stack.descriptors
+                0x0000000000000000       0x15 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_x.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__pop_int.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__pop_int.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__pop_int.o)
+ .stack.descriptors
+                0x0000000000000000       0x17 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__pop_int.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+ .stack.descriptors
+                0x0000000000000000       0x91 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(fputc.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(fputc.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(fputc.o)
+ .stack.descriptors
+                0x0000000000000000       0x13 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(fputc.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(strlen.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(strlen.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(strlen.o)
+ .stack.descriptors
+                0x0000000000000000       0x14 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(strlen.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(tolower.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(tolower.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(tolower.o)
+ .stack.descriptors
+                0x0000000000000000       0x2e c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(tolower.o)
+ .text.__tolower_l
+                0x0000000000000000        0x6 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(tolower.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(toupper.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(toupper.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(toupper.o)
+ .stack.descriptors
+                0x0000000000000000       0x2e c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(toupper.o)
+ .text.__toupper_l
+                0x0000000000000000        0x6 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(toupper.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(errno.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(errno.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(errno.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(_Exit.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(_Exit.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(_Exit.o)
+ .stack.descriptors
+                0x0000000000000000       0x13 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(_Exit.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(expand_heap.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(expand_heap.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(expand_heap.o)
+ .stack.descriptors
+                0x0000000000000000       0x1b c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(expand_heap.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsprintf.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsprintf.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsprintf.o)
+ .stack.descriptors
+                0x0000000000000000       0x18 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsprintf.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsnprintf.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsnprintf.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsnprintf.o)
+ .stack.descriptors
+                0x0000000000000000       0x19 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsnprintf.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vfprintf.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vfprintf.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vfprintf.o)
+ .stack.descriptors
+                0x0000000000000000       0x18 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vfprintf.o)
+ .text          0x0000000000000000        0x0 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eerd_byte.o)
+ .data          0x0000000000000000        0x0 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eerd_byte.o)
+ .bss           0x0000000000000000        0x0 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eerd_byte.o)
+ .stack.descriptors
+                0x0000000000000000       0x38 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eerd_byte.o)
+ .text          0x0000000000000000        0x0 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eewr_byte.o)
+ .data          0x0000000000000000        0x0 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eewr_byte.o)
+ .bss           0x0000000000000000        0x0 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eewr_byte.o)
+ .stack.descriptors
+                0x0000000000000000       0x3d C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eewr_byte.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+ .text.libgcc.mul
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+ .stack.descriptors
+                0x0000000000000000       0x1a c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+ .text.libgcc   0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+ .text.libgcc.prologue
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+ .text.libgcc.builtins
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+ .text.libgcc.fmul
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+ .text.libgcc.fixed
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+ .text.libgcc.mul
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+ .text.libgcc.div
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+ .text.libgcc   0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+ .text.libgcc.prologue
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+ .stack.descriptors
+                0x0000000000000000       0x13 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+ .text.libgcc.builtins
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+ .text.libgcc.fmul
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+ .text.libgcc.fixed
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_prologue.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_prologue.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_prologue.o)
+ .text.libgcc.mul
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_prologue.o)
+ .text.libgcc.div
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_prologue.o)
+ .text.libgcc   0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_prologue.o)
+ .text.libgcc.builtins
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_prologue.o)
+ .text.libgcc.fmul
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_prologue.o)
+ .text.libgcc.fixed
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_prologue.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_epilogue.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_epilogue.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_epilogue.o)
+ .text.libgcc.mul
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_epilogue.o)
+ .text.libgcc.div
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_epilogue.o)
+ .text.libgcc   0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_epilogue.o)
+ .text.libgcc.builtins
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_epilogue.o)
+ .text.libgcc.fmul
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_epilogue.o)
+ .text.libgcc.fixed
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_epilogue.o)
+
+Memory Configuration
+
+Name             Origin             Length             Attributes
+text             0x0000000000000000 0x0000000000008000 xr
+data             0x0000000000807000 0x0000000000001000 rw !x
+eeprom           0x0000000000810000 0x0000000000000200 rw !x
+fuse             0x0000000000820000 0x0000000000000010 rw !x
+lock             0x0000000000830000 0x0000000000000400 rw !x
+signature        0x0000000000840000 0x0000000000000400 rw !x
+user_signatures  0x0000000000850000 0x0000000000000400 rw !x
+bootrow          0x0000000000860000 0x0000000000000400 rw !x
+*default*        0x0000000000000000 0xffffffffffffffff
+
+Linker script and memory map
+
+Address of section .data set to 0x807000
+                0x0000000000008000                __RODATA_PM_OFFSET__ = 0x8000
+LOAD C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+                0x0000000000000001                __MPLAB_BUILD = 0x1
+LOAD build/default/debug/main.o
+START GROUP
+LOAD c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libm.a
+END GROUP
+                0x0000000000000001                __MPLAB_DEBUG = 0x1
+                0x0000000000000001                __DEBUG = 0x1
+START GROUP
+LOAD c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a
+LOAD c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libm.a
+LOAD c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a
+LOAD C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a
+END GROUP
+                [0x0000000000000000]                __TEXT_REGION_ORIGIN__ = DEFINED (__TEXT_REGION_ORIGIN__)?__TEXT_REGION_ORIGIN__:0x0
+                [0x0000000000807000]                __DATA_REGION_ORIGIN__ = DEFINED (__DATA_REGION_ORIGIN__)?__DATA_REGION_ORIGIN__:0x802000
+                [0x0000000000008000]                __TEXT_REGION_LENGTH__ = DEFINED (__TEXT_REGION_LENGTH__)?__TEXT_REGION_LENGTH__:0x100000
+                [0x0000000000001000]                __DATA_REGION_LENGTH__ = DEFINED (__DATA_REGION_LENGTH__)?__DATA_REGION_LENGTH__:0xffa0
+                [0x0000000000000200]                __EEPROM_REGION_LENGTH__ = DEFINED (__EEPROM_REGION_LENGTH__)?__EEPROM_REGION_LENGTH__:0x10000
+                [0x0000000000000010]                __FUSE_REGION_LENGTH__ = DEFINED (__FUSE_REGION_LENGTH__)?__FUSE_REGION_LENGTH__:0x400
+                0x0000000000000400                __LOCK_REGION_LENGTH__ = DEFINED (__LOCK_REGION_LENGTH__)?__LOCK_REGION_LENGTH__:0x400
+                0x0000000000000400                __SIGNATURE_REGION_LENGTH__ = DEFINED (__SIGNATURE_REGION_LENGTH__)?__SIGNATURE_REGION_LENGTH__:0x400
+                0x0000000000000400                __USER_SIGNATURE_REGION_LENGTH__ = DEFINED (__USER_SIGNATURE_REGION_LENGTH__)?__USER_SIGNATURE_REGION_LENGTH__:0x400
+                0x0000000000008000                __RODATA_PM_OFFSET__ = DEFINED (__RODATA_PM_OFFSET__)?__RODATA_PM_OFFSET__:0x8000
+                0x0000000000000400                __BOOTROW_REGION_LENGTH__ = DEFINED (__BOOTROW_REGION_LENGTH__)?__BOOTROW_REGION_LENGTH__:0x400
+
+.hash
+ *(.hash)
+
+.dynsym
+ *(.dynsym)
+
+.dynstr
+ *(.dynstr)
+
+.gnu.version
+ *(.gnu.version)
+
+.gnu.version_d
+ *(.gnu.version_d)
+
+.gnu.version_r
+ *(.gnu.version_r)
+
+.rel.init
+ *(.rel.init)
+
+.rela.init
+ *(.rela.init)
+
+.rel.text
+ *(.rel.text)
+ *(.rel.text.*)
+ *(.rel.gnu.linkonce.t*)
+
+.rela.text
+ *(.rela.text)
+ *(.rela.text.*)
+ *(.rela.gnu.linkonce.t*)
+
+.rel.fini
+ *(.rel.fini)
+
+.rela.fini
+ *(.rela.fini)
+
+.rel.rodata
+ *(.rel.rodata)
+ *(.rel.rodata.*)
+ *(.rel.gnu.linkonce.r*)
+
+.rela.rodata
+ *(.rela.rodata)
+ *(.rela.rodata.*)
+ *(.rela.gnu.linkonce.r*)
+
+.rel.data
+ *(.rel.data)
+ *(.rel.data.*)
+ *(.rel.gnu.linkonce.d*)
+
+.rela.data
+ *(.rela.data)
+ *(.rela.data.*)
+ *(.rela.gnu.linkonce.d*)
+
+.rel.ctors
+ *(.rel.ctors)
+
+.rela.ctors
+ *(.rela.ctors)
+
+.rel.dtors
+ *(.rel.dtors)
+
+.rela.dtors
+ *(.rela.dtors)
+
+.rel.got
+ *(.rel.got)
+
+.rela.got
+ *(.rela.got)
+
+.rel.bss
+ *(.rel.bss)
+
+.rela.bss
+ *(.rela.bss)
+
+.rel.plt
+ *(.rel.plt)
+
+.rela.plt
+ *(.rela.plt)
+
+.text           0x0000000000000000      0x166
+ *(.vectors)
+ .vectors       0x0000000000000000       0xe8 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+                0x0000000000000000                __vector_default
+                0x0000000000000000                __vectors
+ *(.vectors)
+ *(.progmem.gcc*)
+ *(.dinit)
+ .dinit         0x00000000000000e8       0x29 data_init
+                0x0000000000000112                . = ALIGN (0x2)
+ *fill*         0x0000000000000111        0x1 
+                0x0000000000000112                __trampolines_start = .
+ *(.trampolines)
+ .trampolines   0x0000000000000112        0x0 linker stubs
+ *(.trampolines*)
+                0x0000000000000112                __trampolines_end = .
+ *libprintf_flt.a:*(.progmem.data)
+ *libc.a:*(.progmem.data)
+                0x0000000000000112                . = ALIGN (0x2)
+ *(.jumptables)
+ *(.jumptables*)
+ *(.lowtext)
+ *(.lowtext*)
+                0x0000000000000112                __ctors_start = .
+ *(.ctors)
+                0x0000000000000112                __ctors_end = .
+                0x0000000000000112                __dtors_start = .
+ *(.dtors)
+                0x0000000000000112                __dtors_end = .
+ SORT(*)(.ctors)
+ SORT(*)(.dtors)
+ *(.init0)
+ .init0         0x0000000000000112        0x0 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+                0x0000000000000112                __init
+ *(.init0)
+ *(.init1)
+ *(.init1)
+ *(.init2)
+ .init2         0x0000000000000112        0xc C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+ *(.init2)
+ *(.init3)
+ *(.init3)
+ *(.init4)
+ .init4         0x000000000000011e       0x3c c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_copy_data.o)
+                0x000000000000011e                __do_copy_data
+                0x000000000000014c                __do_clear_bss
+ *(.init4)
+ *(.init5)
+ *(.init5)
+ *(.init6)
+ *(.init6)
+ *(.init7)
+ *(.init7)
+ *(.init8)
+ *(.init8)
+ *(.init9)
+ .init9         0x000000000000015a        0x8 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+ *(.init9)
+                0x0000000000000162                . = ALIGN (0x2)
+ *(.fini9)
+ .fini9         0x0000000000000162        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+                0x0000000000000162                _exit
+ *(.fini9)
+ *(.fini8)
+ *(.fini8)
+ *(.fini7)
+ *(.fini7)
+ *(.fini6)
+ *(.fini6)
+ *(.fini5)
+ *(.fini5)
+ *(.fini4)
+ *(.fini4)
+ *(.fini3)
+ *(.fini3)
+ *(.fini2)
+ *(.fini2)
+ *(.fini1)
+ *(.fini1)
+ *(.fini0)
+ .fini0         0x0000000000000162        0x4 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+ *(.fini0)
+                0x0000000000000166                _etext = .
+
+.data           0x0000000000807000        0x0 load address 0x0000000000000166
+                [!provide]                        PROVIDE (__data_start, .)
+ *(.gnu.linkonce.d*)
+                0x0000000000807000                . = ALIGN (0x2)
+                0x0000000000807000                _edata = .
+                [!provide]                        PROVIDE (__data_end, .)
+
+.bss            0x0000000000807000        0x2
+                [!provide]                        PROVIDE (__bss_start, .)
+ *(COMMON)
+ COMMON         0x0000000000807000        0x2 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(errno.o)
+                0x0000000000807000                __errno_val
+                [!provide]                        PROVIDE (__bss_end, .)
+                0x0000000000000166                __data_load_start = LOADADDR (.data)
+                0x0000000000000166                __data_load_end = (__data_load_start + SIZEOF (.data))
+
+.noinit         0x0000000000807002        0x0
+                [!provide]                        PROVIDE (__noinit_start, .)
+ *(.noinit*)
+                [!provide]                        PROVIDE (__noinit_end, .)
+                0x0000000000807002                _end = .
+
+.eeprom         0x0000000000810000        0x0
+ *(.eeprom*)
+                0x0000000000810000                __eeprom_end = .
+
+.fuse
+ *(.fuse)
+ *(.lfuse)
+ *(.hfuse)
+ *(.efuse)
+
+.lock
+ *(.lock*)
+
+.signature
+ *(.signature*)
+
+.user_signatures
+ *(.user_signatures*)
+
+.bootrow
+ *(.bootrow*)
+
+.stab
+ *(.stab)
+
+.stabstr
+ *(.stabstr)
+
+.stab.excl
+ *(.stab.excl)
+
+.stab.exclstr
+ *(.stab.exclstr)
+
+.stab.index
+ *(.stab.index)
+
+.stab.indexstr
+ *(.stab.indexstr)
+
+.comment        0x0000000000000000       0x5b
+ *(.comment)
+ .comment       0x0000000000000000       0x2f build/default/debug/main.o
+                                         0x30 (size before relaxing)
+ .comment       0x000000000000002f       0x2c c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o)
+                                         0x2d (size before relaxing)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_d.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_o.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_s.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_u.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_x.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__pop_int.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(fputc.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(strlen.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(tolower.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(toupper.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(errno.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(_Exit.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(expand_heap.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsprintf.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsnprintf.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vfprintf.o)
+
+.stack.descriptors.hdr
+                0x0000000000000000      0x150
+ .stack.descriptors.hdr
+                0x0000000000000000        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o)
+ .stack.descriptors.hdr
+                0x000000000000000e        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o)
+ .stack.descriptors.hdr
+                0x000000000000001c        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o)
+ .stack.descriptors.hdr
+                0x000000000000002a        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_d.o)
+ .stack.descriptors.hdr
+                0x0000000000000038        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_o.o)
+ .stack.descriptors.hdr
+                0x0000000000000046        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_s.o)
+ .stack.descriptors.hdr
+                0x0000000000000054        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_u.o)
+ .stack.descriptors.hdr
+                0x0000000000000062        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_x.o)
+ .stack.descriptors.hdr
+                0x0000000000000070        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__pop_int.o)
+ .stack.descriptors.hdr
+                0x000000000000007e        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+ .stack.descriptors.hdr
+                0x000000000000008c        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(fputc.o)
+ .stack.descriptors.hdr
+                0x000000000000009a        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(strlen.o)
+ .stack.descriptors.hdr
+                0x00000000000000a8        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(tolower.o)
+ .stack.descriptors.hdr
+                0x00000000000000b6        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(toupper.o)
+ .stack.descriptors.hdr
+                0x00000000000000c4        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(errno.o)
+ .stack.descriptors.hdr
+                0x00000000000000d2        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(_Exit.o)
+ .stack.descriptors.hdr
+                0x00000000000000e0        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(expand_heap.o)
+ .stack.descriptors.hdr
+                0x00000000000000ee        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsprintf.o)
+ .stack.descriptors.hdr
+                0x00000000000000fc        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsnprintf.o)
+ .stack.descriptors.hdr
+                0x000000000000010a        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vfprintf.o)
+ .stack.descriptors.hdr
+                0x0000000000000118        0xe C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eerd_byte.o)
+ .stack.descriptors.hdr
+                0x0000000000000126        0xe C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eewr_byte.o)
+ .stack.descriptors.hdr
+                0x0000000000000134        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+ .stack.descriptors.hdr
+                0x0000000000000142        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+
+.note.GNU-stack
+                0x0000000000000000        0x0
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_d.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_o.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_s.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_u.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_x.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__pop_int.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(fputc.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(strlen.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(tolower.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(toupper.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(errno.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(_Exit.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(expand_heap.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsprintf.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsnprintf.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vfprintf.o)
+
+.note.gnu.build-id
+ *(.note.gnu.build-id)
+
+.debug
+ *(.debug)
+
+.line
+ *(.line)
+
+.debug_srcinfo
+ *(.debug_srcinfo)
+
+.debug_sfnames
+ *(.debug_sfnames)
+
+.debug_aranges  0x0000000000000000      0x2b0
+ *(.debug_aranges)
+ .debug_aranges
+                0x0000000000000000      0x270 build/default/debug/main.o
+ .debug_aranges
+                0x0000000000000270       0x20 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eerd_byte.o)
+ .debug_aranges
+                0x0000000000000290       0x20 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eewr_byte.o)
+
+.debug_pubnames
+ *(.debug_pubnames)
+
+.debug_info     0x0000000000000000     0x6f72
+ *(.debug_info .gnu.linkonce.wi.*)
+ .debug_info    0x0000000000000000     0x3214 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+ .debug_info    0x0000000000003214     0x3c06 build/default/debug/main.o
+ .debug_info    0x0000000000006e1a       0xac C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eerd_byte.o)
+ .debug_info    0x0000000000006ec6       0xac C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eewr_byte.o)
+
+.debug_abbrev   0x0000000000000000     0x347f
+ *(.debug_abbrev)
+ .debug_abbrev  0x0000000000000000     0x2f6e C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+ .debug_abbrev  0x0000000000002f6e      0x4e9 build/default/debug/main.o
+ .debug_abbrev  0x0000000000003457       0x14 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eerd_byte.o)
+ .debug_abbrev  0x000000000000346b       0x14 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eewr_byte.o)
+
+.debug_line     0x0000000000000000     0x1d6c
+ *(.debug_line .debug_line.* .debug_line_end)
+ .debug_line    0x0000000000000000      0x1f3 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+ .debug_line    0x00000000000001f3     0x1a27 build/default/debug/main.o
+ .debug_line    0x0000000000001c1a       0x79 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eerd_byte.o)
+ .debug_line    0x0000000000001c93       0xd9 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eewr_byte.o)
+
+.debug_frame    0x0000000000000000      0x800
+ *(.debug_frame)
+ .debug_frame   0x0000000000000000      0x800 build/default/debug/main.o
+
+.debug_str      0x0000000000000000     0x1649
+ *(.debug_str)
+ .debug_str     0x0000000000000000     0x1539 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+ .debug_str     0x0000000000001539      0x110 build/default/debug/main.o
+
+.debug_loc      0x0000000000000000     0x192b
+ *(.debug_loc)
+ .debug_loc     0x0000000000000000     0x192b build/default/debug/main.o
+
+.debug_macinfo
+ *(.debug_macinfo)
+
+.debug_weaknames
+ *(.debug_weaknames)
+
+.debug_funcnames
+ *(.debug_funcnames)
+
+.debug_typenames
+ *(.debug_typenames)
+
+.debug_varnames
+ *(.debug_varnames)
+
+.debug_pubtypes
+ *(.debug_pubtypes)
+
+.debug_ranges   0x0000000000000000      0x278
+ *(.debug_ranges)
+ .debug_ranges  0x0000000000000000      0x278 build/default/debug/main.o
+
+.debug_macro
+ *(.debug_macro)
+OUTPUT(dist/default/debug/RS232_MUX.X.debug.elf elf32-avr)
+LOAD linker stubs
+LOAD data_init
+
+.note.gnu.avr.deviceinfo
+                0x0000000000000000       0x3c
+ .note.gnu.avr.deviceinfo
+                0x0000000000000000       0x3c C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+
+.bss.OLD_CFG    0x0000000000807611       0x14
+ .bss.OLD_CFG   0x0000000000807611       0x14 build/default/debug/main.o
+                0x0000000000807611                OLD_CFG
+
+.bss._portD_parity_set
+                0x000000000080763f        0x1
+ .bss._portD_parity_set
+                0x000000000080763f        0x1 build/default/debug/main.o
+                0x000000000080763f                _portD_parity_set
+
+.bss._portC_parity_set
+                0x0000000000807640        0x1
+ .bss._portC_parity_set
+                0x0000000000807640        0x1 build/default/debug/main.o
+                0x0000000000807640                _portC_parity_set
+
+.bss._portB_parity_set
+                0x0000000000807641        0x1
+ .bss._portB_parity_set
+                0x0000000000807641        0x1 build/default/debug/main.o
+                0x0000000000807641                _portB_parity_set
+
+.bss._portA_parity_set
+                0x0000000000807642        0x1
+ .bss._portA_parity_set
+                0x0000000000807642        0x1 build/default/debug/main.o
+                0x0000000000807642                _portA_parity_set
+
+.bss.eepromVCOM
+                0x000000000080762d        0x8
+ .bss.eepromVCOM
+                0x000000000080762d        0x8 build/default/debug/main.o
+                0x000000000080762d                eepromVCOM
+
+.bss._RX4       0x0000000000807002      0x103
+ .bss._RX4      0x0000000000807002      0x103 build/default/debug/main.o
+                0x0000000000807002                _RX4
+
+.bss._RX3       0x0000000000807105      0x103
+ .bss._RX3      0x0000000000807105      0x103 build/default/debug/main.o
+                0x0000000000807105                _RX3
+
+.bss._RX2       0x0000000000807208      0x103
+ .bss._RX2      0x0000000000807208      0x103 build/default/debug/main.o
+                0x0000000000807208                _RX2
+
+.bss._RX1       0x000000000080730b      0x103
+ .bss._RX1      0x000000000080730b      0x103 build/default/debug/main.o
+                0x000000000080730b                _RX1
+
+.bss._RX0       0x000000000080740e      0x103
+ .bss._RX0      0x000000000080740e      0x103 build/default/debug/main.o
+                0x000000000080740e                _RX0
+
+.bss.end.1483   0x0000000000807635        0x2
+ .bss.end.1483  0x0000000000807635        0x2 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o)
+
+.bss.cur.1482   0x0000000000807637        0x2
+ .bss.cur.1482  0x0000000000807637        0x2 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o)
+
+.bss.__brkval   0x0000000000807639        0x2
+ .bss.__brkval  0x0000000000807639        0x2 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(expand_heap.o)
+
+.text.main      0x0000000000000166      0x4b4
+ .text.main     0x0000000000000166      0x4b4 build/default/debug/main.o
+                0x0000000000000166                main
+
+.text.vfpfcnvrt
+                0x000000000000061a      0x3fc
+ .text.vfpfcnvrt
+                0x000000000000061a      0x3fc c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+                0x000000000000061a                vfpfcnvrt
+
+.text.readCFG   0x0000000000000a16      0x33a
+ .text.readCFG  0x0000000000000a16      0x33a build/default/debug/main.o
+                0x0000000000000a16                readCFG
+
+.text.MCOM_scanframe
+                0x0000000000000d50      0x200
+ .text.MCOM_scanframe
+                0x0000000000000d50      0x200 build/default/debug/main.o
+                0x0000000000000d50                MCOM_scanframe
+
+.text.__fmt_x   0x0000000000000f50      0x1dc
+ .text.__fmt_x  0x0000000000000f50      0x1dc c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_x.o)
+                0x0000000000000f50                __fmt_x_needed
+                0x0000000000000f50                __fmt_x
+
+.text.setRAMCfg
+                0x000000000000112c      0x114
+ .text.setRAMCfg
+                0x000000000000112c      0x114 build/default/debug/main.o
+                0x000000000000112c                setRAMCfg
+
+.text.initPortA
+                0x0000000000001240      0x100
+ .text.initPortA
+                0x0000000000001240      0x100 build/default/debug/main.o
+                0x0000000000001240                initPortA
+
+.text.initPortB
+                0x0000000000001340      0x100
+ .text.initPortB
+                0x0000000000001340      0x100 build/default/debug/main.o
+                0x0000000000001340                initPortB
+
+.text.initPortC
+                0x0000000000001440      0x100
+ .text.initPortC
+                0x0000000000001440      0x100 build/default/debug/main.o
+                0x0000000000001440                initPortC
+
+.text.initPortD
+                0x0000000000001540      0x100
+ .text.initPortD
+                0x0000000000001540      0x100 build/default/debug/main.o
+                0x0000000000001540                initPortD
+
+.text.senseDebugLeds
+                0x0000000000001640       0xfe
+ .text.senseDebugLeds
+                0x0000000000001640       0xfe build/default/debug/main.o
+                0x0000000000001640                senseDebugLeds
+
+.text.__simple_malloc
+                0x000000000000173e       0xf0
+ .text.__simple_malloc
+                0x000000000000173e       0xf0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o)
+                0x000000000000173e                __malloc0
+                0x000000000000173e                __simple_malloc
+                0x000000000000173e                malloc
+
+.text.__fmt_d   0x000000000000182e       0xe4
+ .text.__fmt_d  0x000000000000182e       0xe4 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_d.o)
+                0x000000000000182e                __fmt_d
+                0x000000000000182e                __fmt_d_needed
+
+.text.VCOM_sendframe
+                0x0000000000001912       0xd2
+ .text.VCOM_sendframe
+                0x0000000000001912       0xd2 build/default/debug/main.o
+                0x0000000000001912                VCOM_sendframe
+
+.text.__pop_int
+                0x00000000000019e4       0xd0
+ .text.__pop_int
+                0x00000000000019e4       0xd0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__pop_int.o)
+                0x00000000000019e4                __pop_int_needed
+                0x00000000000019e4                __pop_int
+
+.text.__cvt_u   0x0000000000001ab4       0xca
+ .text.__cvt_u  0x0000000000001ab4       0xca c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_u.o)
+                0x0000000000001ab4                __cvt_u
+
+.text.getEEPROMCfg
+                0x0000000000001b7e       0xbc
+ .text.getEEPROMCfg
+                0x0000000000001b7e       0xbc build/default/debug/main.o
+                0x0000000000001b7e                getEEPROMCfg
+
+.text.__fmt_o   0x0000000000001c3a       0xb2
+ .text.__fmt_o  0x0000000000001c3a       0xb2 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_o.o)
+                0x0000000000001c3a                __fmt_o
+                0x0000000000001c3a                __fmt_o_needed
+
+.rodata         0x0000000000809cec       0xa9 load address 0x0000000000001cec
+ .rodata        0x0000000000809cec       0xa9 build/default/debug/main.o
+
+.text.fputc     0x0000000000001d96       0x98
+ .text.fputc    0x0000000000001d96       0x98 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(fputc.o)
+                0x0000000000001d96                fputc
+                0x0000000000001d96                putc
+
+.text.__fmt_u   0x0000000000001e2e       0x8e
+ .text.__fmt_u  0x0000000000001e2e       0x8e c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_u.o)
+                0x0000000000001e2e                __fmt_u_needed
+                0x0000000000001e2e                __fmt_u
+
+.text.readPortA
+                0x0000000000001ebc       0x78
+ .text.readPortA
+                0x0000000000001ebc       0x78 build/default/debug/main.o
+                0x0000000000001ebc                readPortA
+
+.text.readPortB
+                0x0000000000001f34       0x78
+ .text.readPortB
+                0x0000000000001f34       0x78 build/default/debug/main.o
+                0x0000000000001f34                readPortB
+
+.text.readPortC
+                0x0000000000001fac       0x78
+ .text.readPortC
+                0x0000000000001fac       0x78 build/default/debug/main.o
+                0x0000000000001fac                readPortC
+
+.text.readPortD
+                0x0000000000002024       0x78
+ .text.readPortD
+                0x0000000000002024       0x78 build/default/debug/main.o
+                0x0000000000002024                readPortD
+
+.text.__printf_core
+                0x000000000000209c       0x78
+ .text.__printf_core
+                0x000000000000209c       0x78 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+                0x000000000000209c                __printf_core
+
+.text.writePortA
+                0x0000000000002114       0x76
+ .text.writePortA
+                0x0000000000002114       0x76 build/default/debug/main.o
+                0x0000000000002114                writePortA
+
+.text.writePortB
+                0x000000000000218a       0x76
+ .text.writePortB
+                0x000000000000218a       0x76 build/default/debug/main.o
+                0x000000000000218a                writePortB
+
+.text.writePortC
+                0x0000000000002200       0x76
+ .text.writePortC
+                0x0000000000002200       0x76 build/default/debug/main.o
+                0x0000000000002200                writePortC
+
+.text.writePortD
+                0x0000000000002276       0x76
+ .text.writePortD
+                0x0000000000002276       0x76 build/default/debug/main.o
+                0x0000000000002276                writePortD
+
+.text.__vsnprintf
+                0x00000000000022ec       0x74
+ .text.__vsnprintf
+                0x00000000000022ec       0x74 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsnprintf.o)
+                0x00000000000022ec                __vsnprintf
+
+.text.__pad     0x0000000000002360       0x72
+ .text.__pad    0x0000000000002360       0x72 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+                0x0000000000002360                __pad
+
+.text.__expand_heap
+                0x00000000000023d2       0x6e
+ .text.__expand_heap
+                0x00000000000023d2       0x6e c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(expand_heap.o)
+                0x00000000000023d2                __expand_heap
+
+.text.setEEPROMCfg
+                0x0000000000002440       0x6a
+ .text.setEEPROMCfg
+                0x0000000000002440       0x6a build/default/debug/main.o
+                0x0000000000002440                setEEPROMCfg
+
+.text.writeConfiguration
+                0x00000000000024aa       0x6a
+ .text.writeConfiguration
+                0x00000000000024aa       0x6a build/default/debug/main.o
+                0x00000000000024aa                writeConfiguration
+
+.text.MCOM_sendframe
+                0x0000000000002514       0x66
+ .text.MCOM_sendframe
+                0x0000000000002514       0x66 build/default/debug/main.o
+                0x0000000000002514                MCOM_sendframe
+
+.text.read_prec_or_width
+                0x000000000000257a       0x5c
+ .text.read_prec_or_width
+                0x000000000000257a       0x5c c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+
+.text.__fmt_s   0x00000000000025d6       0x54
+ .text.__fmt_s  0x00000000000025d6       0x54 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_s.o)
+                0x00000000000025d6                __fmt_s
+                0x00000000000025d6                __fmt_0_needed
+                0x00000000000025d6                __fmt_s_needed
+
+.text.libgcc.div
+                0x000000000000262a       0x44
+ .text.libgcc.div
+                0x000000000000262a       0x44 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+                0x000000000000262a                __udivmodsi4
+
+.text.__fmt_state
+                0x000000000000266e       0x40
+ .text.__fmt_state
+                0x000000000000266e       0x40 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+                0x000000000000266e                __fmt_state
+
+.text.__vector_19
+                0x00000000000026ae       0x3e
+ .text.__vector_19
+                0x00000000000026ae       0x3e build/default/debug/main.o
+                0x00000000000026ae                __vector_19
+
+.text.__vector_52
+                0x00000000000026ec       0x3e
+ .text.__vector_52
+                0x00000000000026ec       0x3e build/default/debug/main.o
+                0x00000000000026ec                __vector_52
+
+.text.__vector_31
+                0x000000000000272a       0x3e
+ .text.__vector_31
+                0x000000000000272a       0x3e build/default/debug/main.o
+                0x000000000000272a                __vector_31
+
+.text.__vector_55
+                0x0000000000002768       0x3e
+ .text.__vector_55
+                0x0000000000002768       0x3e build/default/debug/main.o
+                0x0000000000002768                __vector_55
+
+.text.__vector_37
+                0x00000000000027a6       0x3e
+ .text.__vector_37
+                0x00000000000027a6       0x3e build/default/debug/main.o
+                0x00000000000027a6                __vector_37
+
+.text.initPort2
+                0x00000000000027e4       0x3c
+ .text.initPort2
+                0x00000000000027e4       0x3c build/default/debug/main.o
+                0x00000000000027e4                initPort2
+
+.text.readConfiguration
+                0x0000000000002820       0x3c
+ .text.readConfiguration
+                0x0000000000002820       0x3c build/default/debug/main.o
+                0x0000000000002820                readConfiguration
+
+.text.__out     0x000000000000285c       0x3a
+ .text.__out    0x000000000000285c       0x3a c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+                0x000000000000285c                __out
+
+.text.debugLedsTest
+                0x0000000000002896       0x32
+ .text.debugLedsTest
+                0x0000000000002896       0x32 build/default/debug/main.o
+                0x0000000000002896                debugLedsTest
+
+.text.libgcc.prologue
+                0x00000000000028c8       0x32
+ .text.libgcc.prologue
+                0x00000000000028c8       0x32 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_prologue.o)
+                0x00000000000028c8                __prologue_saves__
+
+.text.stringComp
+                0x00000000000028fa       0x30
+ .text.stringComp
+                0x00000000000028fa       0x30 build/default/debug/main.o
+                0x00000000000028fa                stringComp
+
+.text.__vfprintf
+                0x000000000000292a       0x30
+ .text.__vfprintf
+                0x000000000000292a       0x30 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vfprintf.o)
+                0x000000000000292a                __vfprintf
+
+.text.avrlibc   0x000000000000295a       0x30
+ .text.avrlibc  0x000000000000295a       0x30 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eewr_byte.o)
+                0x000000000000295a                eeprom_write_byte
+                0x000000000000295c                eeprom_write_r18
+
+.text.libgcc.prologue
+                0x000000000000298a       0x30
+ .text.libgcc.prologue
+                0x000000000000298a       0x30 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_epilogue.o)
+                0x000000000000298a                __epilogue_restores__
+
+.text.__wrap_sprintf
+                0x00000000000029ba       0x24
+ .text.__wrap_sprintf
+                0x00000000000029ba       0x24 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o)
+                0x00000000000029ba                _sprintf_cdopsuxX
+
+.text.txWrite2  0x00000000000029de       0x20
+ .text.txWrite2
+                0x00000000000029de       0x20 build/default/debug/main.o
+                0x00000000000029de                txWrite2
+
+.text.rxRead2   0x00000000000029fe       0x20
+ .text.rxRead2  0x00000000000029fe       0x20 build/default/debug/main.o
+                0x00000000000029fe                rxRead2
+
+.text.strlen    0x0000000000002a1e       0x1c
+ .text.strlen   0x0000000000002a1e       0x1c c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(strlen.o)
+                0x0000000000002a1e                strlen
+
+.text.setWait   0x0000000000002a3a       0x16
+ .text.setWait  0x0000000000002a3a       0x16 build/default/debug/main.o
+                0x0000000000002a3a                setWait
+
+.text.exit      0x0000000000002a50       0x16
+ .text.exit     0x0000000000002a50       0x16 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o)
+                0x0000000000002a50                exit
+
+.rodata.state_table
+                0x000000000080aa66       0x16 load address 0x0000000000002a66
+ .rodata.state_table
+                0x000000000080aa66       0x16 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+
+.text.timerInit
+                0x0000000000002a7c       0x12
+ .text.timerInit
+                0x0000000000002a7c       0x12 build/default/debug/main.o
+                0x0000000000002a7c                timerInit
+
+.text.toupper   0x0000000000002a8e       0x12
+ .text.toupper  0x0000000000002a8e       0x12 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(toupper.o)
+                0x0000000000002a8e                toupper
+
+.text.tolower   0x0000000000002aa0       0x10
+ .text.tolower  0x0000000000002aa0       0x10 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(tolower.o)
+                0x0000000000002aa0                tolower
+
+.text.avrlibc   0x0000000000002ab0       0x10
+ .text.avrlibc  0x0000000000002ab0       0x10 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eerd_byte.o)
+                0x0000000000002ab0                eeprom_read_byte
+                0x0000000000002ab8                eeprom_mapen
+
+.text.getErrorStatusA
+                0x0000000000002ac0        0xe
+ .text.getErrorStatusA
+                0x0000000000002ac0        0xe build/default/debug/main.o
+                0x0000000000002ac0                getErrorStatusA
+
+.text.getErrorStatusB
+                0x0000000000002ace        0xe
+ .text.getErrorStatusB
+                0x0000000000002ace        0xe build/default/debug/main.o
+                0x0000000000002ace                getErrorStatusB
+
+.text.getErrorStatusC
+                0x0000000000002adc        0xe
+ .text.getErrorStatusC
+                0x0000000000002adc        0xe build/default/debug/main.o
+                0x0000000000002adc                getErrorStatusC
+
+.text.getErrorStatusD
+                0x0000000000002aea        0xe
+ .text.getErrorStatusD
+                0x0000000000002aea        0xe build/default/debug/main.o
+                0x0000000000002aea                getErrorStatusD
+
+.text.__vsprintf
+                0x0000000000002af8        0xe
+ .text.__vsprintf
+                0x0000000000002af8        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsprintf.o)
+                0x0000000000002af8                __vsprintf
+
+.text.portA_available
+                0x0000000000002b06        0xa
+ .text.portA_available
+                0x0000000000002b06        0xa build/default/debug/main.o
+                0x0000000000002b06                portA_available
+
+.text.portB_available
+                0x0000000000002b10        0xa
+ .text.portB_available
+                0x0000000000002b10        0xa build/default/debug/main.o
+                0x0000000000002b10                portB_available
+
+.text.portC_available
+                0x0000000000002b1a        0xa
+ .text.portC_available
+                0x0000000000002b1a        0xa build/default/debug/main.o
+                0x0000000000002b1a                portC_available
+
+.text.portD_available
+                0x0000000000002b24        0xa
+ .text.portD_available
+                0x0000000000002b24        0xa build/default/debug/main.o
+                0x0000000000002b24                portD_available
+
+.text.getTimerFlag
+                0x0000000000002b2e        0x8
+ .text.getTimerFlag
+                0x0000000000002b2e        0x8 build/default/debug/main.o
+                0x0000000000002b2e                getTimerFlag
+
+.text.txWriteA  0x0000000000002b36        0x8
+ .text.txWriteA
+                0x0000000000002b36        0x8 build/default/debug/main.o
+                0x0000000000002b36                txWriteA
+
+.text.txWriteB  0x0000000000002b3e        0x8
+ .text.txWriteB
+                0x0000000000002b3e        0x8 build/default/debug/main.o
+                0x0000000000002b3e                txWriteB
+
+.text.txWriteC  0x0000000000002b46        0x8
+ .text.txWriteC
+                0x0000000000002b46        0x8 build/default/debug/main.o
+                0x0000000000002b46                txWriteC
+
+.text.txWriteD  0x0000000000002b4e        0x8
+ .text.txWriteD
+                0x0000000000002b4e        0x8 build/default/debug/main.o
+                0x0000000000002b4e                txWriteD
+
+.text.rxReadA   0x0000000000002b56        0x8
+ .text.rxReadA  0x0000000000002b56        0x8 build/default/debug/main.o
+                0x0000000000002b56                rxReadA
+
+.text.rxReadB   0x0000000000002b5e        0x8
+ .text.rxReadB  0x0000000000002b5e        0x8 build/default/debug/main.o
+                0x0000000000002b5e                rxReadB
+
+.text.rxReadC   0x0000000000002b66        0x8
+ .text.rxReadC  0x0000000000002b66        0x8 build/default/debug/main.o
+                0x0000000000002b66                rxReadC
+
+.text.rxReadD   0x0000000000002b6e        0x8
+ .text.rxReadD  0x0000000000002b6e        0x8 build/default/debug/main.o
+                0x0000000000002b6e                rxReadD
+
+.rodata.nuls.2781
+                0x000000000080ab76        0x7 load address 0x0000000000002b76
+ .rodata.nuls.2781
+                0x000000000080ab76        0x7 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_s.o)
+
+.rodata.nilstr.2962
+                0x000000000080ab7d        0x6 load address 0x0000000000002b7d
+ .rodata.nilstr.2962
+                0x000000000080ab7d        0x6 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+
+.text           0x0000000000002b84        0x4
+ .text          0x0000000000002b84        0x4 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+                0x0000000000002b84                __vector_38
+                0x0000000000002b84                __vector_22
+                0x0000000000002b84                __vector_28
+                0x0000000000002b84                __vector_1
+                0x0000000000002b84                __vector_32
+                0x0000000000002b84                __vector_34
+                0x0000000000002b84                __vector_24
+                0x0000000000002b84                __vector_12
+                0x0000000000002b84                __vector_46
+                0x0000000000002b84                __bad_interrupt
+                0x0000000000002b84                __vector_6
+                0x0000000000002b84                __vector_35
+                0x0000000000002b84                __vector_39
+                0x0000000000002b84                __vector_3
+                0x0000000000002b84                __vector_23
+                0x0000000000002b84                __vector_30
+                0x0000000000002b84                __vector_45
+                0x0000000000002b84                __vector_25
+                0x0000000000002b84                __vector_11
+                0x0000000000002b84                __vector_54
+                0x0000000000002b84                __vector_13
+                0x0000000000002b84                __vector_17
+                0x0000000000002b84                __vector_56
+                0x0000000000002b84                __vector_7
+                0x0000000000002b84                __vector_49
+                0x0000000000002b84                __vector_41
+                0x0000000000002b84                __vector_43
+                0x0000000000002b84                __vector_27
+                0x0000000000002b84                __vector_5
+                0x0000000000002b84                __vector_33
+                0x0000000000002b84                __vector_47
+                0x0000000000002b84                __vector_4
+                0x0000000000002b84                __vector_44
+                0x0000000000002b84                __vector_51
+                0x0000000000002b84                __vector_9
+                0x0000000000002b84                __vector_2
+                0x0000000000002b84                __vector_21
+                0x0000000000002b84                __vector_15
+                0x0000000000002b84                __vector_36
+                0x0000000000002b84                __vector_29
+                0x0000000000002b84                __vector_40
+                0x0000000000002b84                __vector_8
+                0x0000000000002b84                __vector_26
+                0x0000000000002b84                __vector_48
+                0x0000000000002b84                __vector_14
+                0x0000000000002b84                __vector_57
+                0x0000000000002b84                __vector_53
+                0x0000000000002b84                __vector_10
+                0x0000000000002b84                __vector_50
+                0x0000000000002b84                __vector_16
+                0x0000000000002b84                __vector_18
+                0x0000000000002b84                __vector_20
+                0x0000000000002b84                __vector_42
+
+.text._Exit     0x0000000000002b88        0x4
+ .text._Exit    0x0000000000002b88        0x4 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(_Exit.o)
+                0x0000000000002b88                _Exit
+
+.text.__dummy_fini
+                0x0000000000002b8c        0x2
+ .text.__dummy_fini
+                0x0000000000002b8c        0x2 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o)
+                0x0000000000002b8c                _fini
+
+.text.__dummy_funcs_on_exit
+                0x0000000000002b8e        0x2
+ .text.__dummy_funcs_on_exit
+                0x0000000000002b8e        0x2 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o)
+                0x0000000000002b8e                __funcs_on_exit
+
+.text.__dummy_simulator_exit
+                0x0000000000002b90        0x2
+ .text.__dummy_simulator_exit
+                0x0000000000002b90        0x2 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o)
+                0x0000000000002b90                __simulator_exit
+
+.data._TL16C_invertData
+                0x0000000000807511      0x100 load address 0x0000000000002b92
+ .data._TL16C_invertData
+                0x0000000000807511      0x100 build/default/debug/main.o
+                0x0000000000807511                _TL16C_invertData
+
+.data._TL16C_invertAddr
+                0x0000000000807625        0x8 load address 0x0000000000002c92
+ .data._TL16C_invertAddr
+                0x0000000000807625        0x8 build/default/debug/main.o
+                0x0000000000807625                _TL16C_invertAddr
+
+.data.__malloc_heap_end
+                0x000000000080763b        0x2 load address 0x0000000000002c9a
+ .data.__malloc_heap_end
+                0x000000000080763b        0x2 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(expand_heap.o)
+                0x000000000080763b                __malloc_heap_end
+
+.data.__malloc_heap_start
+                0x000000000080763d        0x2 load address 0x0000000000002c9c
+ .data.__malloc_heap_start
+                0x000000000080763d        0x2 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(expand_heap.o)
+                0x000000000080763d                __malloc_heap_start
diff --git a/Version 2.0/RS232_MUX.X/dist/default/debug/memoryfile.xml b/Version 2.0/RS232_MUX.X/dist/default/debug/memoryfile.xml
new file mode 100644
index 0000000..c77ab49
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/dist/default/debug/memoryfile.xml	
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?> 
+<project>                                  
+  <executable name="dist/default/debug/RS232_MUX.X.debug.elf">                 
+    <memory name="program">              
+      <units>bytes</units>                 
+      <length>32768</length>                 
+      <used>11420</used>                     
+      <free>21348</free>                     
+    </memory>                              
+    <memory name="data">                 
+      <units>bytes</units>                 
+      <length>4096</length>                 
+      <used>1603</used>                     
+      <free>2493</free>                     
+    </memory>                              
+  </executable>                            
+</project>                                 
diff --git a/Version 2.0/RS232_MUX.X/dist/default/production/RS232_MUX.X.production.elf b/Version 2.0/RS232_MUX.X/dist/default/production/RS232_MUX.X.production.elf
new file mode 100644
index 0000000..eb00d6d
Binary files /dev/null and b/Version 2.0/RS232_MUX.X/dist/default/production/RS232_MUX.X.production.elf differ
diff --git a/Version 2.0/RS232_MUX.X/dist/default/production/RS232_MUX.X.production.hex b/Version 2.0/RS232_MUX.X/dist/default/production/RS232_MUX.X.production.hex
new file mode 100644
index 0000000..629e359
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/dist/default/production/RS232_MUX.X.production.hex	
@@ -0,0 +1,762 @@
+:100000000C9489000C94E1150C94E1150C94E11505
+:100010000C94E1150C94E1150C94E1150C94E11588
+:100020000C94E1150C94E1150C94E1150C94E11578
+:100030000C94E1150C94E1150C94E1150C94E11568
+:100040000C94E1150C94E1150C94E1150C947613C5
+:100050000C94E1150C94E1150C94E1150C94E11548
+:100060000C94E1150C94E1150C94E1150C94E11538
+:100070000C94E1150C94E1150C94E1150C94B41357
+:100080000C94E1150C94E1150C94E1150C94E11518
+:100090000C94E1150C94F2130C94E1150C94E115F9
+:1000A0000C94E1150C94E1150C94E1150C94E115F8
+:1000B0000C94E1150C94E1150C94E1150C94E115E8
+:1000C0000C94E1150C94E1150C94E1150C94E115D8
+:1000D0000C9495130C94E1150C94E1150C94D31326
+:1000E0000C94E1150C94E115700075118075117672
+:1000F00011002BD076117625807625762D002CD018
+:10010000762D763B80763B763F002CD8763F764343
+:10011000800011241FBECFEFCDBFDFE7DEBFE8EECA
+:10012000F0E041E017C0B591A59135912591059179
+:1001300007FD0CC095918591EF01F92FE82F0590EF
+:100140000D92A217B307D9F7FE0104C01D92A217A2
+:10015000B307E1F7E131F40731F70E94B3000C94E3
+:060160004715F894FFCFE3
+:10016600CF93DF93CDB7DEB7CB55D140CDBFDEBF42
+:10017600CB5ADE4F1882C555D140FE01EA5AFE4FD2
+:1001860085E0DF011D928A95E9F788E893E10E94F0
+:100196003C15FE01EB5AFF4FCE018B569F4F119235
+:1001A600E817F907E1F7FE01EB56FF4FCE018B5238
+:1001B6009F4F11928E179F07E1F7FE01EB52FF4FFB
+:1001C600CE018B5E9E4F11928E179F07E1F7FE01BF
+:1001D600EB5EFE4FCE018B5A9E4F1192E817F90740
+:1001E600E1F794E288ED84BF9093680000E814E09C
+:1001F600F801808187608083E0E2F4E0808180639B
+:10020600808380818F608083D8018C9188608C93F5
+:100216008481816084838481826084838481846014
+:1002260084838481886084838481806184838481DB
+:100236008062848314968C911497886014968C93AC
+:1002460084E690E00E943C15F8018481877F8483D0
+:1002560085E090E00E943C1580E29EE40E943C15F9
+:100266000E94BD0D60E0CE0101960E942F1461E050
+:10027600CE0106960E942F1462E0CE010B960E94D4
+:100286002F1463E0CE0140960E942F1460E081E1B6
+:1002960096E70E942F1461E086E196E70E942F14EC
+:1002A60062E08BE196E70E942F1463E080E296E716
+:1002B6000E942F142D814B816C8189810E941E0919
+:1002C6002A85488569858E810E949E092F854D85E0
+:1002D6006E858B850E941E0A2C894A896B898889BE
+:1002E6000E949E0A00E020E043E061E473E080E0C3
+:1002F60090E00E94111400E414E0D8018C9184600F
+:100306008C9314968C911497846014968C9384EF36
+:1003160091E00E943C15F80184818B7F848380E6FE
+:100326009AEE0E945D1578948FE3809300040E94F4
+:100336003513C55ADE4F1882CB55D14000E010E088
+:10034600812C912CA12CB12CC12CD12CE12CF12C7F
+:10035600212C312C412C512C77247394A8950E9482
+:10036600A2158823E1F080914276882321F00E942D
+:100376007F15871591F0CA5ADE4F7882C655D1404F
+:100386000E94CA15E5E5F0E0EC0FFD1FE50DF11D35
+:1003960080835394C12CD12C02C00E94CA150E949E
+:1003A600A7158823E1F080914176882321F00E94E9
+:1003B6008615871591F0C95ADE4F7882C755D14008
+:1003C6000E94CE15E5E9F0E0EC0FFD1FE40DF11DEE
+:1003D60080834394A12CB12C02C00E94CE150E94AA
+:1003E600AC158823E1F080914076882321F00E94A5
+:1003F6008D15871591F0C85ADE4F7882C855D140C1
+:100406000E94D215E5EDF0E0EC0FFD1FE30DF11DA6
+:1004160080833394812C912C02C00E94D2150E94B5
+:10042600B1158823E1F080913F76882321F00E9460
+:100436009415871591F0C75ADE4F7882C955D14079
+:100446000E94D615E5E1F1E0EC0FFD1FE20DF11D6E
+:100456008083239400E010E002C00E94D615A9E034
+:10046600B3E78C918823B1F0C65ADE4F7882CA551D
+:10047600D1400E941E15E5E1F0E0EC0FFD1FE60DF0
+:10048600F11D808363940E94B615811109C0E12C89
+:10049600F12C4BC00E94B615882309F442C002C055
+:1004A600E12CF12CC55ADE4FB881CB55D140B13F76
+:1004B60030F08091440484608093440405C08091A8
+:1004C60044048B7F80934404C55ADE4FE881CB55A4
+:1004D600D140EF5FC55ADE4FE883CB55D140662049
+:1004E60019F0FFEFEF1AFF0A552019F08FEFC81A1F
+:1004F600D80A442019F0AFEFAA1ABA0A332019F025
+:10050600BFEF8B1A9B0A222011F00F5F1F4FBE010F
+:100516006A5A7E4FCE018B5A9E4F0E941E0B7092D6
+:100526000B0AE6E0EE16F10418F4FFE3F615B8F44C
+:100536008E898D3461F4AE014F5F5F4F662DCE011B
+:1005460045960E94A606E12CF12C612C08C0662D6A
+:10055600CE0145960E94870CE12CF12C612C86E099
+:10056600C816D10418F4AFE3A51578F4CB5ADE4FBC
+:100576007882C555D14040E0652DCE018B5A9F4FFC
+:100586000E948812C12CD12C512CB6E0AB16B104B6
+:1005960018F4EFE3E41578F4CB5ADE4F7882C555AC
+:1005A600D140472D642DCE018B569F4F0E94881255
+:1005B600A12CB12C412CF6E08F16910418F48FE390
+:1005C600831578F4CB5ADE4F7882C555D14042E088
+:1005D600632DCE018B529F4F0E948812812C912C45
+:1005E600312C0630110520F4AFE3A21508F0B6CE83
+:1005F600CB5ADE4F7882C555D14043E0622DCE01FD
+:100606008B5E9E4F0E94881200E010E0212CA6CE41
+:10061600AEE0B0E0E1E1F3E00C9486144C016B012E
+:1006260019821A828FEF9FEF8B839C831D821E8215
+:100636004F83588729873A87A12CB12CD6016D9014
+:100646007C90F301EA0DFB1D808181110FC0D6015C
+:10065600ED93FC938081853209F0D3C13F01BFEF52
+:100666006B1A7B0AF6016082718219C0853279F3B2
+:10067600B401082E000C990B0E94C90E4FEFA41A64
+:10068600B40ADCCF8C32ACF08D32F9F489819A81D0
+:10069600816089839A833196D601ED93FC93D601C6
+:1006A600ED91FC9180818B3269F789819A81846012
+:1006B600F0CF803221F489819A818860EACF833233
+:1006C60051F489819A818061E4CF803321F4898154
+:1006D6009A818260DECFB701C6010E94BB128D836C
+:1006E6009E8397FF0BC029813A81B1E02B2729838E
+:1006F6003A839195819591098D839E8389819A810B
+:1007060080FF03C08D7F89839A83D601ED91FC918A
+:10071600119780818E3249F43196ED93FC93B7019F
+:10072600C6010E94BB128B839C83C6010E9456138E
+:10073600582ED601ED91FC918081082E000C990B64
+:100746000E946F15893609F443C084F4833609F490
+:1007560002C134F4853209F427C18136E1F030C193
+:100766008436B1F188360CF4D9C02AC1803709F431
+:100776009AC03CF48E3609F4BCC08F3609F461C0C9
+:100786001FC1853709F440C0883709F476C083371E
+:1007960009F016C1F3C0652D70E0A701CE010B96D6
+:1007A6000E940000892B09F426C1D601ED91FC9127
+:1007B6001197CF0101968D939C932081AE01455FE1
+:1007C6005F4FBE016F5F7F4FC4010E94000010C1E2
+:1007D600652D70E0970141E050E0CE010B960E9436
+:1007E600F00C892B09F407C1F601808191810196ED
+:1007F60080839183AE01455F5F4FBE016F5F7F4F80
+:10080600C4010E94150CF4C0652D70E0970140E00C
+:1008160050E0CE010B960E94F00C892B09F4EBC038
+:10082600D6018D919C91119701968D939C93AE0163
+:10083600455F5F4FBE016F5F7F4FC4010E94150F7A
+:10084600D7C0652D70E0970140E050E0CE010B96D1
+:100856000E94F00C892B09F4CEC0F60180819181AB
+:10086600019680839183AE01455F5F4FBE016F5F46
+:100876007F4FC4010E941B0EBBC0652D70E097011F
+:1008860040E050E0CE010B960E94F00C892B09F453
+:10089600B2C0D601ED91FC911197CF0101968D93CF
+:1008A6009C9320811CC0970140E050E060EF70E00F
+:1008B600CE010B960E94F00C892B09F49CC0F60120
+:1008C600808191810196808391838B859C85892B7C
+:1008D60029F420E030E04BEB5BEA84C028E7AE0168
+:1008E600455F5F4FBE016F5F7F4FC4010E94A60741
+:1008F6007FC0A501400F511F652D70E09701CE0105
+:100906000B960E940000892B09F475C0D6018D91C3
+:100916009C91119701968D939C9373C0652D70E001
+:10092600A701CE010B960E940000892B09F463C033
+:10093600D601ED91FC911197CF0101968D939C9371
+:100946002081AE01455F5F4FBE016F5F7F4FC401DF
+:100956000E9400004DC0B0E85B124DC0F6018081D8
+:100966009181019680839183D701ED91FC91119736
+:10097600CF0102968D939C93808120C0B0E85B12D4
+:100986003AC0F60180819181019680839183D701D7
+:10099600ED91FC911197CF0102968D939C93408126
+:1009A600518120E030E01EC0B0E85B1224C0F601A1
+:1009B600208131812F5F3F4F208331838B870DC08C
+:1009C60085E28B87D6016D927C9219821A821D82EE
+:1009D6001E828FEF9FEF8B839C8321E030E0AE0178
+:1009E600455F5F4FBE016F5F7F4FC4010E94E912F2
+:1009F6008A0D9B1D07C0F601808191810196808337
+:0C0A06009183C5012E96EFE00C94E714DC
+:100A12007F928F929F92AF92BF92CF92DF92EF928C
+:100A2200FF920F931F93CF93DF93CDB7DEB7AD97AE
+:100A3200CDBFDEBF782E4B0186E0EFE6FDE9DE0199
+:100A4200119601900D928A95E1F78EE48F8385E4E9
+:100A520088878FE4898785E38A8786E38B8787E3A4
+:100A62008C8788E38D8781E38E8782E38F8771107D
+:100A720002C0DB0102C0A1E1B6E76E0180E1C80E4F
+:100A8200D11C8E01025D1F4FF6011192E017F10792
+:100A9200E1F714968C911497FE01E80FF11D8685FB
+:100AA2001F928F9312968C911297FE01E80FF11DFF
+:100AB20087811F928F9313968C911397FE01E80FF3
+:100AC200F11D82851F928F93ED91FC91EE0FFF1F16
+:100AD20081E090E08C0F9D1FE80FF91F81818F93B9
+:100AE20080818F931F9284E28F931F928F931F9224
+:100AF2008DE48F931F9282E08F938EEE9CE99F93F9
+:100B02008F93CE0140969F938F930E94FC147E0197
+:100B120096E2E90EF11CCDBFDEBF5601F5018191CF
+:100B22005F010E940E15AE14BF04C1F7711003C01D
+:100B3200D401159602C0A6E1B6E7F6011192E017BC
+:100B4200F107E1F714968C911497FE01E80FF11D5D
+:100B520086851F928F9312968C911297FE01E80F51
+:100B6200F11D87811F928F9313968C911397FE012B
+:100B7200E80FF11D82851F928F93ED91FC91EE0F8C
+:100B8200FF1F81E090E08C0F9D1FE80FF91F81810C
+:100B92008F9380818F931F9284E28F931F928F9302
+:100BA2001F928DE48F931F9282E08F938AE09DE9DA
+:100BB2009F938F93CE0140969F938F930E94FC1434
+:100BC200CDBFDEBF5601F50181915F010E940E1576
+:100BD200EA14FB04C1F7711003C0D4011A9602C0D3
+:100BE200ABE1B6E7F60111920E171F07E1F7149673
+:100BF2008C911497FE01E80FF11D86851F928F9349
+:100C020012968C911297FE01E80FF11D87811F92B7
+:100C12008F9313968C911397FE01E80FF11D828535
+:100C22001F928F93ED91FC91EE0FFF1F81E090E0F8
+:100C32008C0F9D1FE80FF91F81818F9380818F9305
+:100C42001F9284E28F931F928F931F928DE48F9352
+:100C52001F9282E08F9386E29DE99F938F93CE014C
+:100C620040969F938F930E94FC14CDBFDEBF560126
+:100C7200F50181915F010E940E15EA14FB04C1F790
+:100C8200711003C0D4011F9602C0A0E2B6E7F601BC
+:100C920011920E171F07E1F714968C911497FE011B
+:100CA200E80FF11D86851F928F9312968C911297F1
+:100CB200FE01E80FF11D87811F928F9313968C918D
+:100CC2001397FE01E80FF11D82851F928F93ED911C
+:100CD200FC91EE0FFF1F81E090E08C0F9D1FE80F4B
+:100CE200F91F81818F9380818F931F9284E28F936A
+:100CF2001F928F931F928DE48F931F9282E08F93A6
+:100D020082E49DE99F938F93CE0140969F938F93A8
+:100D12000E94FC14CDBFDEBFF60181916F010E94DB
+:100D22000E15CE14DF04C1F7AD96CDBFDEBFDF9145
+:100D3200CF911F910F91FF90EF90DF90CF90BF90D6
+:0A0D4200AF909F908F907F9008956E
+:100D4C00BF92CF92DF92EF92FF920F931F93CF93AC
+:100D5C00DF938C01B62E7A01C62ED12C86E0C81AF0
+:100D6C00D108C6010E949D0BEC0185E090E00E9429
+:100D7C003C152097B1F34B2D50E0465051091416F9
+:100D8C0015065CF480E0FE01E80FF11D10828F5F08
+:100D9C00282F30E024173507B4F3F8018081823016
+:100DAC0009F0C4C08281843209F0C0C083818432CE
+:100DBC0009F0BCC08B2D90E0E80FF91F3197208112
+:100DCC002D3009F0B3C0800F911FFC013297808148
+:100DDC008A3009F0ABC01416150694F420E0822F6B
+:100DEC0090E0FE01E80FF91FD801A80FB91F149667
+:100DFC008C9180832F5F822F90E0841795077CF372
+:100E0C001AEF1B0D25E0412F6DE77DE9CE010E9405
+:100E1C009C14811148C00E941E1282E00E940E1583
+:100E2C0084E20E940E1584E20E940E158DE40E944D
+:100E3C000E1587E50E940E1582E50E940E1583E4BF
+:100E4C000E940E1586E40E940E1587E40E940E1572
+:100E5C008AE00E940E158DE00E940E1582E00E9421
+:100E6C000E1584E20E940E1584E20E940E158DE48C
+:100E7C000E940E1582E50E940E1585E40E940E1547
+:100E8C0082E40E940E158FE40E940E158FE40E94DE
+:100E9C000E1584E50E940E158AE00E940E158DE059
+:100EAC000E940E15FFCF26E0412F63E87DE9CE01AD
+:100EBC000E949C14811104C0B7010E94090536C020
+:100ECC0026E0412F6AE87DE9CE010E949C14811135
+:100EDC0005C0B70181E00E94090528C0BE01C70109
+:100EEC000E94940882E00E940E1584E20E940E1566
+:100EFC0084E20E940E158DE40E940E1583E50E947B
+:100F0C000E1585E40E940E1584E50E940E1583E4EF
+:100F1C000E940E1586E40E940E1587E40E940E15A1
+:100F2C008AE00E940E158DE00E940E15DF91CF9184
+:100F3C001F910F91FF90EF90DF90CF90BF9008958D
+:100F4C00AFE0B0E0ECEAF7E00C9483141C016B0109
+:100F5C0049835A832B83FB01828193818480958002
+:100F6C0000811181A680B78097FD02C00D7F02C061
+:100F7C0081E090E0E981FA81408051806280738049
+:100F8C009801207133272C833D83740104FF08C022
+:100F9C00411451046104710419F032E0E31AF108B0
+:100FAC00F801E870FF27EE83FF8303FF03C0F1E035
+:100FBC00EF1AF108F6010084F185E02D3197EE87E8
+:100FCC00FF87EA0DFB1D10829C012E193F09288713
+:100FDC003987C801827099278A879B87EB818E2F6E
+:100FEC00EE0F990B9C01215431092C873D872E85DE
+:100FFC003F852230310530F48C819D81892B09F09D
+:10100C0042C05CC0411451046104710461F18E85CD
+:10101C009F8501978E879F87C2018F7099278A3091
+:10102C00910514F4C09602C0895A9F4FEC85FD853A
+:10103C007A9748F49C012062215631092A313105F6
+:10104C0010F40E946615EE85FF85EA0DFB1D80836A
+:10105C00F1E0EF1AF10884E0769467945794479482
+:10106C008A95D1F7C4CF888599858E0D9F1D18164A
+:10107C0019066CF21E141F040CF0BECFEA85FB851A
+:10108C00EF2B29F6B9CFE981FA8180819181A28178
+:10109C00B381892B8A2B8B2B89F0EE85FF85EA0D8A
+:1010AC00FB1D31972B8120838E859F8502978E8720
+:1010BC009F87FC01EA0DFB1D80E38083EE81FF819D
+:1010CC00EF2B59F02E853F85215031092E873F8714
+:1010DC00F901EA0DFB1D80E28083F6014085518504
+:1010EC00415051092E853F85421B530BB9016A0DA6
+:1010FC007B1D9401C1010E94AE119C01F101808104
+:10110C00918190FF06C0F60182819381821793072B
+:0C111C000CF4C9012F96E2E10C94E414DD
+:10112800EF920F93CF93DF93EC01FB018081823420
+:1011380009F07BC090E09F5FDF01A90FB11D2C91E2
+:101148002634C9F79630C0F42681255387818F3419
+:1011580029F041E0853419F040E001C042E001E0A7
+:101168008085823309F000E082850F2EFFEBEF2E99
+:10117800F02DE80E60E044C08181813391F48281D2
+:10118800893309F04CC08381823309F04AC08481D5
+:10119800803309F048C061E085818033D9F060E090
+:1011A80019C0833371F48281883369F4838184336D
+:1011B80061F48481803359F48581803351F462E08D
+:1011C80009C060E007C060E005C060E003C060E0FF
+:1011D80001C060E02781255380858F3429F041E0E4
+:1011E800853419F040E001C042E001E08185823396
+:1011F80009F000E083850F2EFFEBEF2EF02DE80EAF
+:10120800CE01EE2DF0E0DF01AA0FBB1FAA0FBB1F16
+:10121800EA0FFB1F8E0F9F1F0E94531206C060E04B
+:10122800D9CF60E0D7CF60E0D5CFDF91CF910F91D4
+:04123800EF90089596
+:10123C00EF92FF920F931F93CF93DF93CDB7DEB74F
+:10124C002F97CDBFDEBF182FF62E042FE22E86E08F
+:10125C00E8EEFCE9DE01119601900D928A95E1F71A
+:10126C001F8293E0988781E089871A868B8722E01A
+:10127C002C879D871E868F87411101C080E080934B
+:10128C00427683E00E945C0F84E190E00E943C1562
+:10129C0063E080E80E94881084E190E00E943C1595
+:1012AC0061E080E00E94881084E190E00E943C158F
+:1012BC00E12FF0E0EE0FFF1FEC0FFD1F60E08181CE
+:1012CC000E94881084E190E00E943C1583E00E940B
+:1012DC005C0F8F77FE01EE0DF11D9685292F220FE5
+:1012EC00220FFE01E00FF11D9781990F990F990FB5
+:1012FC00922BFE01EF0DF11D2285822B63E0892BD1
+:10130C000E94881084E190E00E943C1562E081E02C
+:10131C000E94881084E190E00E943C152F96CDBF6E
+:10132C00DEBFDF91CF911F910F91FF90EF90089549
+:10133C00EF92FF920F931F93CF93DF93CDB7DEB74E
+:10134C002F97CDBFDEBF182FF62E042FE22E86E08E
+:10135C00E8EEFCE9DE01119601900D928A95E1F719
+:10136C001F8293E0988781E089871A868B8722E019
+:10137C002C879D871E868F87411101C080E080934A
+:10138C00417683E00E94980F84E190E00E943C1526
+:10139C0063E080E80E94C31084E190E00E943C1559
+:1013AC0061E080E00E94C31084E190E00E943C1553
+:1013BC00E12FF0E0EE0FFF1FEC0FFD1F60E08181CD
+:1013CC000E94C31084E190E00E943C1583E00E94CF
+:1013DC00980F8F77FE01EE0DF11D9685292F220FA8
+:1013EC00220FFE01E00FF11D9781990F990F990FB4
+:1013FC00922BFE01EF0DF11D2285822B63E0892BD0
+:10140C000E94C31084E190E00E943C1562E081E0F0
+:10141C000E94C31084E190E00E943C152F96CDBF32
+:10142C00DEBFDF91CF911F910F91FF90EF90089548
+:10143C00EF92FF920F931F93CF93DF93CDB7DEB74D
+:10144C002F97CDBFDEBF182FF62E042FE22E86E08D
+:10145C00E8EEFCE9DE01119601900D928A95E1F718
+:10146C001F8293E0988781E089871A868B8722E018
+:10147C002C879D871E868F87411101C080E0809349
+:10148C00407683E00E94D40F84E190E00E943C15EA
+:10149C0063E080E80E94FE1084E190E00E943C151D
+:1014AC0061E080E00E94FE1084E190E00E943C1517
+:1014BC00E12FF0E0EE0FFF1FEC0FFD1F60E08181CC
+:1014CC000E94FE1084E190E00E943C1583E00E9493
+:1014DC00D40F8F77FE01EE0DF11D9685292F220F6B
+:1014EC00220FFE01E00FF11D9781990F990F990FB3
+:1014FC00922BFE01EF0DF11D2285822B63E0892BCF
+:10150C000E94FE1084E190E00E943C1562E081E0B4
+:10151C000E94FE1084E190E00E943C152F96CDBFF6
+:10152C00DEBFDF91CF911F910F91FF90EF90089547
+:10153C00EF92FF920F931F93CF93DF93CDB7DEB74C
+:10154C002F97CDBFDEBF182FF62E042FE22E86E08C
+:10155C00E8EEFCE9DE01119601900D928A95E1F717
+:10156C001F8293E0988781E089871A868B8722E017
+:10157C002C879D871E868F87411101C080E0809348
+:10158C003F7683E00E94101084E190E00E943C15AD
+:10159C0063E080E80E94391184E190E00E943C15E0
+:1015AC0061E080E00E94391184E190E00E943C15DA
+:1015BC00E12FF0E0EE0FFF1FEC0FFD1F60E08181CB
+:1015CC000E94391184E190E00E943C1583E00E9456
+:1015DC0010108F77FE01EE0DF11D9685292F220F2D
+:1015EC00220FFE01E00FF11D9781990F990F990FB2
+:1015FC00922BFE01EF0DF11D2285822B63E0892BCE
+:10160C000E94391184E190E00E943C1562E081E077
+:10161C000E94391184E190E00E943C152F96CDBFB9
+:10162C00DEBFDF91CF911F910F91FF90EF90089546
+:10163C00FB01DC012C91222359F0A0E0B4E01496BC
+:10164C002C911497206214962C93DC011C9208C0E8
+:10165C00A0E0B4E014968C9114978F7D14968C9323
+:10166C008481882351F0A0E0B4E014968C911497F7
+:10167C00806114968C93148208C0A0E0B4E0149698
+:10168C008C9114978F7E14968C938081882351F0C3
+:10169C00A0E0B4E014968C911497816014968C930E
+:1016AC00108208C0A0E0B4E014968C9114978E7F41
+:1016BC0014968C938181882351F0A0E0B4E01496A9
+:1016CC008C911497826014968C93118208C0A0E0C0
+:1016DC00B4E014968C9114978D7F14968C93828120
+:1016EC00882351F0A0E0B4E014968C911497846098
+:1016FC0014968C93128208C0A0E0B4E014968C91DE
+:10170C0014978B7F14968C938381882351F0A0E0DF
+:10171C00B4E014968C911497886014968C93138271
+:0E172C000895E0E0F4E08481877F84830895CF
+:10173A00A2E0B0E0E3EAFBE00C948D148C0180E0B7
+:10174A0090E00115110509F460C0892BD1F002302F
+:10175A00110558F00E3F8FEF180748F08CE090E023
+:10176A00809300709093017028C002E010E0C801D5
+:10177A000E940000009709F04FC092E0E92EF12C78
+:10178A0004C080E0E82E80E0F82E809135769091B2
+:10179A0036762091377630913876821B930B670123
+:1017AA00C00ED11E80179107F0F4C982DA82CE01E9
+:1017BA0001960E94E711009719F480E090E02CC08E
+:1017CA0020913576309136768217930721F08093EF
+:1017DA0037769093387629813A81820F931F8093C6
+:1017EA00357690933676E0913776F0913876CF0158
+:1017FA00E114F10419F0029600831183CE0EDF1E64
+:10180A00C0923776D092387607C0009709F0ADCFEC
+:10181A007C0101E010E0B9CF2296E8E00C94EE14C6
+:10182A00A2E0B0E0EBE1FCE00C9483143C016B0114
+:10183A00FB0122813381A480B580808191818983D3
+:10184A009A8386809780FA01208031804280538073
+:10185A00B201A10157FE07C044275527BA01421910
+:10186A0053096409750937FD03C08D7F89839A83FB
+:10187A00950157FC05C0898182FD02C083FF02C021
+:10188A0021503109CE0101967C010AE010E0C6011F
+:10189A000E94580D57FC03C0298122FF0AC00197F4
+:1018AA00F401E80FF91F57FC02C02BE209C02DE230
+:1018BA0007C023FF06C00197F401E80FF91F20E2D1
+:1018CA00208309811A81F6014085518541505109C9
+:1018DA00481B590BB401680F791F9501C3010E9477
+:1018EA00AE119C01F3018081918190FF06C0F6013F
+:1018FA0082819381821793070CF4C9012296E2E14F
+:04190A000C94E41441
+:10190E00CF92DF92EF92FF920F931F93CF93DF93BD
+:10191E00CDB7DEB72897CDBFDEBF9C0198E0E5E7D7
+:10192E00FDE9DE01119601900D929A95E1F7D9012C
+:10193E008C91823009F041C012968C9112978432AC
+:10194E00E1F513968C9113978432B9F5862F90E0BA
+:10195E00F901E80FF91F319740814D3071F502976B
+:10196E00F901E80FF91F80818A3039F511968C91B3
+:10197E001197815411968C93833018F4A82FB0E0F0
+:10198E0002C0A3E0B0E0AA0FBB1FAC0FBD1F1196A3
+:10199E00ED90FC901297862F90E0029705976CF0D1
+:1019AE0089010C5F1F4F6F01F80181918F0190E04B
+:1019BE00F70109950C151D05B9F72896CDBFDEBFA9
+:1019CE00DF91CF911F910F91FF90EF90DF90CF900D
+:0219DE0008956A
+:1019E000CF93DF93DC01F90168387105F1F05CF405
+:1019F0006138710561F164387105A1F160387105D4
+:101A000009F051C02FC0603C710509F441C0603F2E
+:101A10007105F1F1603A710509F045C0C081D181CD
+:101A2000CE0102968083918325C0C081D181CE01F1
+:101A3000029680839183452B39F04881042E000C57
+:101A4000550B660B770B1CC0488150E029C0C08144
+:101A5000D181CE01049680839183488159816A8126
+:101A60007B810EC0C081D181CE010296808391839B
+:101A7000452BA1F048815981052E000C660B770B90
+:101A80004D935D936D937C93139781E090E00DC02F
+:101A9000C081D181CE010296808391834881598192
+:101AA00060E070E0EDCF80E090E0DF91CF910895AD
+:101AB000A0E0B0E0EEE5FDE00C948514DC01280127
+:101AC0001696AD90BC901797F70180819181129680
+:101AD000ED91FC9113971896CD91DC911997219770
+:101AE000F7FF02C0E1E0F0E0CA0DDB1D18826901DA
+:101AF000A1E0B0E08F01021B130B4C01F2E08F223A
+:101B00009924052C000C66087708CE018A199B09D8
+:101B1000CA15DB0519F1411551056105710589F0FB
+:101B2000CB01BA01A30192010E941313CA01A62F8F
+:101B3000B72F605D6A9341E0C41AD108A901BC01C6
+:101B4000E4CF98012C0D3D1D121613064CF31C1406
+:101B50001D0434F48114910419F702C080E090E070
+:101B6000AB2B31F4F701208131812F7E208331832B
+:0A1B7000CDB7DEB7E0E10C94E614F7
+:101B7A006F927F928F929F92AF92BF92CF92DF9293
+:101B8A00EF92FF920F931F93CF93DF930F2EFDE2F5
+:101B9A00EF2EF6E7FF2EF02D00E010E0C2E0D0E1D4
+:101BAA000F2EF0E36F2EF02D702E812EC8010E94A9
+:101BBA007715982E6701F7018083888181FDFDCF13
+:101BCA005801FFEFAF1ABF0AC5010E947715F60147
+:101BDA008183888181FDFDCFFFEF9F1207C0F60147
+:101BEA00108260E0872D982D0E94CC14F601818125
+:101BFA008F3F29F46182662DC5010E94CC140E5FC5
+:101C0A001F4FF2E0EF0EF11C0830110569F6DF9163
+:101C1A00CF911F910F91FF90EF90DF90CF90BF90DF
+:0C1C2A00AF909F908F907F906F90089576
+:101C3600A2E0B0E0E1E2FEE00C9487144C016B01F7
+:101C4600FB01228133816480758080819181898343
+:101C56009A83A680B78037FD03C08D7F89839A83D8
+:101C6600FA014081518162817381CE0101967C0126
+:101C760008E010E09301C6010E94580D298124FF57
+:101C860006C00197F501E80FF91F20E3208329819B
+:101C960023FF06C00197F501E80FF91F20E2208314
+:101CA60009811A81F6014085518541505109481B29
+:101CB600590BB501680F791F9301C4010E94AE113B
+:101CC6009C01F4018081918190FF06C0F60182811A
+:101CD6009381821793070CF4C9012296EEE00C94C7
+:021CE600E81400
+:101CE800680034001A00256325632563256356437D
+:101CF8004F4D412042257320462563256325630DFA
+:101D08000A00256325632563256356434F4D42200A
+:101D180042257320462563256325630D0A00256344
+:101D280025632563256356434F4D43204225732081
+:101D3800462563256325630D0A002563256325630E
+:101D4800256356434F4D442042257320462563257D
+:101D58006325630D0A0039363030003139323030AE
+:101D6800003338343030005E9D639D699DBA15BEDE
+:101D780015C215C6155752434647005244434647B5
+:091D88003000524443464731008B
+:101D92000F931F93CF93DF93DB01109719F48FEF0B
+:101DA2009FEF3DC02D913C91119730FF25C01696B3
+:101DB2004D915C91179714962D913C91159742176E
+:101DC200530778F41296ED91FC9113978083129643
+:101DD2002D913C9113972F5F3F4F12962D933C9379
+:101DE200139716962D913C9117972F5F3F4F16969A
+:101DF2002D933C93179713C01C96ED91FC911D9760
+:101E0200309769F2EB01092F182F0995892B39F6C2
+:101E12008E819F8101968E839F83812F902FDF91E8
+:081E2200CF911F910F9108956B
+:101E2A00A2E0B0E0EBE1FFE00C9487145C016B01E7
+:101E3A00FB0122813381848095808081918189830D
+:101E4A009A836680778037FD03C08D7F89839A8362
+:101E5A00FA014081518162817381CE0101967C0130
+:101E6A000AE010E09401C6010E94580D09811A8106
+:101E7A00F6014085518541505109481B590BB30160
+:101E8A00680F791F9401C5010E94AE119C01F501EA
+:101E9A008081918190FF06C0F60182819381821729
+:0E1EAA0093070CF4C9012296EEE00C94E814A4
+:101EB8000F931F93CF93DF939091117500E614E071
+:101EC800D8019C93E82FF0E0EB5DF948808180937E
+:101ED8008404C0E2D4E08C818E7F8C8383E090E020
+:101EE8000E943C158C818F7D8C8383E090E00E945A
+:101EF8003C15D8011896EC91F0E0EF5EFA48108195
+:101F080083E090E00E943C158C8180628C8383E0A2
+:101F180090E00E943C158C8181608C83812FDF9139
+:081F2800CF911F910F91089564
+:101F30000F931F93CF93DF939091117500E614E0F8
+:101F4000D8019C93E82FF0E0EB5DF9488081809305
+:101F50008404C0E2D4E08C818D7F8C8383E090E0A8
+:101F60000E943C158C818F7D8C8383E090E00E94E1
+:101F70003C15D8011896EC91F0E0EF5EFA4810811C
+:101F800083E090E00E943C158C8180628C8383E02A
+:101F900090E00E943C158C8182608C83812FDF91C0
+:081FA000CF911F910F910895EC
+:101FA8000F931F93CF93DF939091117500E614E080
+:101FB800D8019C93E82FF0E0EB5DF948808180938D
+:101FC8008404C0E2D4E08C818B7F8C8383E090E032
+:101FD8000E943C158C818F7D8C8383E090E00E9469
+:101FE8003C15D8011896EC91F0E0EF5EFA481081A4
+:101FF80083E090E00E943C158C8180628C8383E0B2
+:1020080090E00E943C158C8184608C83812FDF9145
+:08201800CF911F910F91089573
+:102020000F931F93CF93DF939091117500E614E007
+:10203000D8019C93E82FF0E0EB5DF9488081809314
+:102040008404C0E2D4E08C81877F8C8383E090E0BD
+:102050000E943C158C818F7D8C8383E090E00E94F0
+:102060003C15D8011896EC91F0E0EF5EFA4810812B
+:1020700083E090E00E943C158C8180628C8383E039
+:1020800090E00E943C158C8188608C83812FDF91C9
+:08209000CF911F910F910895FB
+:10209800A2E8B0E0E2E5F0E10C9489145C014A01A1
+:1020A800CF57DF4F68837983C158D040C12CD12CDA
+:1020B800CF57DF4FE881F981C158D040808188230C
+:1020C800E9F07401860120E830E0AE014F5F5F4F10
+:1020D800BE016F577F4FC5010E940B038C0D9D1DDC
+:1020E8008C159D054CF48FE490E0809300709093DC
+:1020F80001708FEF9FEF03C06C01DACFC601CE5796
+:08210800DF4FECE00C94EA1437
+:102110000F931F93CF93DF939091107600E614E016
+:10212000F8019083E62FF0E0EB5DF9489081909301
+:102130008404E82FF0E0EF5EFA488081F8018483A0
+:10214000C0E2D4E08C818E7F8C8383E090E00E949B
+:102150003C158C818F7E8C8383E090E00E943C153F
+:102160008C8180618C8383E090E00E943C158C819F
+:1021700081608C8380911175F8018083DF91CF910C
+:062180001F910F9108956C
+:102186000F931F93CF93DF939091107600E614E0A0
+:10219600F8019083E62FF0E0EB5DF948908190938B
+:1021A6008404E82FF0E0EF5EFA488081F80184832A
+:1021B600C0E2D4E08C818D7F8C8383E090E00E9426
+:1021C6003C158C818F7E8C8383E090E00E943C15C9
+:1021D6008C8180618C8383E090E00E943C158C8129
+:1021E60082608C8380911175F8018083DF91CF9195
+:0621F6001F910F910895F6
+:1021FC000F931F93CF93DF939091107600E614E02A
+:10220C00F8019083E62FF0E0EB5DF9489081909314
+:10221C008404E82FF0E0EF5EFA488081F8018483B3
+:10222C00C0E2D4E08C818B7F8C8383E090E00E94B1
+:10223C003C158C818F7E8C8383E090E00E943C1552
+:10224C008C8180618C8383E090E00E943C158C81B2
+:10225C0084608C8380911175F8018083DF91CF911C
+:06226C001F910F9108957F
+:102272000F931F93CF93DF939091107600E614E0B3
+:10228200F8019083E62FF0E0EB5DF948908190939E
+:102292008404E82FF0E0EF5EFA488081F80184833D
+:1022A200C0E2D4E08C81877F8C8383E090E00E943F
+:1022B2003C158C818F7E8C8383E090E00E943C15DC
+:1022C2008C8180618C8383E090E00E943C158C813C
+:1022D20088608C8380911175F8018083DF91CF91A2
+:0622E2001F910F91089509
+:1022E800A0E1B0E0EAE7F1E10C948F14FB01BA0138
+:1022F800AE014F5F5F4F7A0140E1D7011D924A95C9
+:10230800E9F742E051E049835A838B839C83F7FFC6
+:1023180009C08FE490E080930070909301708FEF74
+:102328009FEF14C0A9018C013197ED83FE83C7018B
+:102338000E94B4144F8158852D813E81421753075E
+:1023480008F49A01F801E20FF31F10826096E6E0A4
+:042358000C94F014DD
+:10235C00A0E0B0E0E4EBF1E10C9489146C015B01BA
+:10236C007A01E901480181E08822992400FD03C02B
+:10237C004217530750F0A701B501C6010E944D1436
+:10238C00EC16FD0610F0C70117C08E010E191F09BF
+:10239C000115110541F0B60180E290E00E94C90ED2
+:1023AC0001501109F5CF8114910429F4A701B5014D
+:1023BC00C6010E944D14CE01CDB7DEB7ECE00C94F3
+:0223CC00EA1411
+:1023CE00FC01408151818091397690913A76892B2A
+:1023DE0041F480913D7690913E768093397690933C
+:1023EE003A7680913B7690913C76009719F48DB7B2
+:1023FE009EB780972091397630913A762817390713
+:10240E0048F08CE090E0809300709093017080E033
+:10241E0090E00895821B930B8417950790F3420F5B
+:0E242E00531F4093397650933A76C9010895B2
+:10243C00CF92DF92EF92FF920F931F93CF93DF9384
+:10244C000F2EFDE2EF2EF6E7FF2EF02D00E010E050
+:10245C00C2E0D0E16701F7016081C8010E94CC1491
+:10246C00888181FDFDCFF6016181C80101960E9432
+:10247C00CC14888181FDFDCFF2E0EF0EF11C0E5FD4
+:10248C001F4F0830110531F7DF91CF911F910F913C
+:0A249C00FF90EF90DF90CF900895BD
+:1024A600EF920F93DC01633010F470E002C062E03B
+:1024B60070E06D937C931197433008F042E01296DA
+:1024C6004C931297243008F023E013962C9313971D
+:1024D600011101E014960C931497EE2DF0E0EE0F27
+:1024E600FF1FE35DF9486295607F462B4083139694
+:1024F6008C91139720E1829FC001112414969C9120
+:0A250600892B81830F91EF90089557
+:10251000EF92FF920F931F93CF93DF937C01162FBF
+:10252000C42F82E00E940E1581E48C0F0E940E15CC
+:1025300084E20E940E1584E20E940E15112371F0B0
+:10254000E7011150012F10E00F5F1F4F0E0D1F1DEF
+:1025500089910E940E15C017D107D1F78AE00E9419
+:102560000E158DE00E940E15DF91CF911F910F91F6
+:06257000FF90EF900895BA
+:10257600DC01ED91FC91119780818A3221F080E097
+:1025860090E03AE00EC03196ED93FC93DB01ED91BD
+:10259600FC911197CF0102968D939C938081918136
+:1025A6000895ED91FC911197208120532A3068F40B
+:1025B600389FA001399F500D1124CA01820F911D29
+:0C25C6003196ED93FC931197ECCF089533
+:1025D200A0E0B0E0EFEEF2E10C948B147C01FB0181
+:1025E200EA01C901A280B380C480D5800081118133
+:1025F200209711F4C4EBDBEA009719F4CE010E9494
+:102602002E15B7FC04C0A816B90608F4C501960138
+:10261200AC01BE01C7010E94AE11CDB7DEB7EAE040
+:042622000C94EC1414
+:10262600A1E21A2EAA1BBB1BFD010DC0AA1FBB1FD0
+:10263600EE1FFF1FA217B307E407F50720F0A21B42
+:10264600B30BE40BF50B661F771F881F991F1A94AF
+:1026560069F760957095809590959B01AC01BD01D9
+:04266600CF01089503
+:10266A0082E00E940E158DE40E940E1584E20E94FB
+:10267A000E1584E20E940E1582E40E940E158FE464
+:10268A000E940E158FE40E940E1584E50E940E1515
+:10269A008AE00E940E158DE00E940E150E946A14AF
+:0226AA00089591
+:1026AC00CF93DF93EC0190E0E92FF0E0EE0FFF1FEA
+:1026BC00EC55F5458081811102C081810EC0A88145
+:1026CC00B9812C91821305C091811196A883B9838D
+:1026DC0001C09F5F9B3040F3892FDF91CF9108950C
+:1026EC008F938FB78F93AF93BF93EF93FF93AFE01D
+:1026FC00B5E7EC91F0E080910008E25FFB48818344
+:10270C008C918F3F21F0FD0180818F5F8083FF9141
+:0E271C00EF91BF91AF918F918FBF8F91189564
+:10272A008F938FB78F93AF93BF93EF93FF93ACE0E1
+:10273A00B4E7EC91F0E080916008E55FFC488183A2
+:10274A008C918F3F21F0FD0180818F5F8083FF9103
+:0E275A00EF91BF91AF918F918FBF8F91189526
+:102768008F938FB78F93AF93BF93EF93FF93A9E0A6
+:10277800B3E7EC91F0E080912008E85FFD488183A1
+:102788008C918F3F21F0FD0180818F5F8083FF91C5
+:0E279800EF91BF91AF918F918FBF8F911895E8
+:1027A6008F938FB78F93AF93BF93EF93FF93A6E06B
+:1027B600B2E7EC91F0E080918008EB5FFE48818300
+:1027C6008C918F3F21F0FD0180818F5F8083FF9187
+:0E27D600EF91BF91AF918F918FBF8F911895AA
+:1027E4008F938FB78F93AF93BF93EF93FF93A3E030
+:1027F400B1E7EC91F0E080914008EE5FFF488183FF
+:102804008C918F3F21F0FD0180818F5F8083FF9148
+:0E281400EF91BF91AF918F918FBF8F9118956B
+:102822000F931F93502FE0E4F4E030813160308346
+:10283200E0E2F8E06087718790E8958390ED9683F7
+:10284200022F000F000F000F402B80E1589F8001E4
+:0C2852001124042B07831F910F9108959F
+:10285E00DC01E62FF0E0EE0FFF1FE35DF94820816B
+:10286E0022952F7030E02D933C93119780818F70BD
+:10287E0012968C931297818182958F7013968C93FA
+:0C288E00139781818F7014968C9308952D
+:10289A00A0E0B0E0E3E5F4E10C948D146C01EB01E7
+:1028AA008A017B01E40EF51ECE15DF0541F0899100
+:1028BA00B601082E000C990B0E94C90EF5CFC8016B
+:0A28CA00CDB7DEB7E8E00C94EE1481
+:1028D40081E08093040426E030E0E0E0F4E08481C9
+:1028E400880F84834FE78FE492E141508040904009
+:1028F400E1F700C000002150310989F71092040467
+:02290400089534
+:102906002F923F924F925F926F927F928F929F92F9
+:10291600AF92BF92CF92DF92EF92FF920F931F93E7
+:10292600CF93DF93CDB7DEB7CA1BDB0BCDBFDEBFC0
+:02293600099402
+:10293800421312C0442391F0FC01A62FB72F9C012B
+:10294800240F311DA90180E021919D91291381E077
+:10295800E417F507C9F7089581E0089580E0089520
+:10296800A2E0B0E0EAEBF4E10C9491148C01498305
+:102978005A83AE014F5F5F4F0E944C10F8012081CF
+:1029880024FF02C08FEF9FEF2296E4E00C94F2142C
+:10299800262FAF93BF93E0E0F0E1328131FDFDCF08
+:1029A8003DE934BF33E13083DC01A050BC4E2C93A9
+:1029B8003DE934BF20E020830196BF91AF9108958F
+:1029C8002A88398848885F846E847D848C849B84B7
+:1029D800AA84B984C884DF80EE80FD800C811B81C5
+:1029E800AA81B981CE0FD11DCDBFDEBFED010895FB
+:1029F800A0E0B0E0E2E0F5E10C949314AE01475F8B
+:102A08005F4F6F8178858D819E810E949B15E2E0E2
+:042A18000C94F41412
+:102A1C00E0E2F8E0948195FFFDCF80932208E0E29C
+:102A2C00F8E0848186FFFDCF80E48093240808952C
+:102A3C0080910973882329F0E9E0F3E780818150C4
+:102A4C008083E0910973F0E0E85FFD48818108958F
+:102A5C00FC01AF014F5F5F4F2081222311F0FA017F
+:0C2A6C00F8CF9F01281B390BC901089509
+:102A7800009741F020E030E000002F5F3F4F8217C1
+:062A88009307D1F7089549
+:102A8E00EC010E94E6150E94E515CE010E94E715A5
+:062A9E00CE010E94E315C9
+:102AA40068076C094C836A9074A07AC000806888B7
+:062AB40000846C82008129
+:102ABA00E0E0FAE097A386A383E08083118211867F
+:022ACA0008956D
+:102ACC009C01215631092A31310510F48F75992753
+:022ADC0008955B
+:102ADE009C01215431092A31310508F48062089590
+:102AEE0003D0808199270895FC01E050FC4E089593
+:0E2AFE0085E00E945C0F881F8827881F0895BE
+:0E2B0C0085E00E94980F881F8827881F089573
+:0E2B1A0085E00E94D40F881F8827881F089529
+:0E2B280085E00E941010881F8827881F0895DE
+:0E2B36009A01AB016FEF7FE70E9474110895C2
+:0A2B440085E00E945C0F8170089587
+:0A2B4E0085E00E94980F8170089541
+:0A2B580085E00E94D40F81700895FB
+:0A2B620085E00E94101081700895B4
+:082B6C0080910B0A81700895AD
+:082B740060E00E948810089542
+:082B7C0060E00E94C3100895FF
+:082B840060E00E94FE100895BC
+:082B8C0060E00E943911089578
+:082B940080E00E945C0F08952F
+:082B9C0080E00E94980F0895EB
+:082BA40080E00E94D40F0895A7
+:082BAC0080E00E941010089562
+:072BB400286E756C6C29000E
+:062BBB00286E696C290080
+:042BC2000C9400006F
+:042BC6000E94B100B8
+:022BCA0008956C
+:022BCC0008956A
+:022BCE00089568
+:102BD000008040C020A060E0109050D030B070F075
+:102BE000088848C828A868E8189858D838B878F8E5
+:102BF000048444C424A464E4149454D434B474F415
+:102C00000C8C4CCC2CAC6CEC1C9C5CDC3CBC7CFC84
+:102C1000028242C222A262E2129252D232B272F214
+:102C20000A8A4ACA2AAA6AEA1A9A5ADA3ABA7AFA84
+:102C3000068646C626A666E6169656D636B676F6B4
+:102C40000E8E4ECE2EAE6EEE1E9E5EDE3EBE7EFE24
+:102C5000018141C121A161E1119151D131B171F1E4
+:102C6000098949C929A969E9199959D939B979F954
+:102C7000058545C525A565E5159555D535B575F584
+:102C80000D8D4DCD2DAD6DED1D9D5DDD3DBD7DFDF4
+:102C9000038343C323A363E3139353D333B373F384
+:102CA0000B8B4BCB2BAB6BEB1B9B5BDB3BBB7BFBF4
+:102CB000078747C727A767E7179757D737B777F724
+:102CC0000F8F4FCF2FAF6FEF1F9F5FDF3FBF7FFF94
+:082CD0000004020601050307E0
+:022CD8000000FA
+:022CDA0043763F
+:02000004008278
+:090000000A00000000C00000002D
+:02000004008377
+:040000005CC5C55CBA
+:00000001FF
diff --git a/Version 2.0/RS232_MUX.X/dist/default/production/RS232_MUX.X.production.map b/Version 2.0/RS232_MUX.X/dist/default/production/RS232_MUX.X.production.map
new file mode 100644
index 0000000..768db17
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/dist/default/production/RS232_MUX.X.production.map	
@@ -0,0 +1,1435 @@
+Archive member included to satisfy reference by file (symbol)
+
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_copy_data.o)
+                              build/default/production/main.o (__do_copy_data)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o)
+                              C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o (exit)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o)
+                              build/default/production/main.o (malloc)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o)
+                              build/default/production/main.o (_sprintf_cdopsuxX)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_d.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o) (__fmt_d_needed)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_o.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o) (__fmt_o_needed)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_s.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o) (__fmt_s_needed)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_u.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_d.o) (__cvt_u)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_x.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o) (__fmt_x_needed)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__pop_int.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o) (__pop_int_needed)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_d.o) (__pad)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(fputc.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o) (fputc)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(strlen.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_s.o) (strlen)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(tolower.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o) (tolower)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(toupper.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_x.o) (toupper)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(errno.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o) (__errno_val)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(_Exit.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o) (_Exit)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(expand_heap.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o) (__expand_heap)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsprintf.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o) (__vsprintf)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsnprintf.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsprintf.o) (__vsnprintf)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vfprintf.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsnprintf.o) (__vfprintf)
+C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eerd_byte.o)
+                              build/default/production/main.o (eeprom_read_byte)
+C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eewr_byte.o)
+                              build/default/production/main.o (eeprom_write_byte)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_u.o) (__udivmodsi4)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(_Exit.o) (_exit)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_prologue.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o) (__prologue_saves__)
+c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_epilogue.o)
+                              c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o) (__epilogue_restores__)
+
+Allocating common symbols
+Common symbol       size              file
+
+__errno_val         0x2               c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(errno.o)
+
+Discarded input sections
+
+ .data          0x0000000000000000        0x0 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+ .bss           0x0000000000000000        0x0 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+ .text          0x0000000000000000        0x0 build/default/production/main.o
+ .data          0x0000000000000000        0x0 build/default/production/main.o
+ .bss           0x0000000000000000        0x0 build/default/production/main.o
+ .text.initPort0
+                0x0000000000000000       0x32 build/default/production/main.o
+ .text.txWrite0
+                0x0000000000000000       0x20 build/default/production/main.o
+ .text.rxRead0  0x0000000000000000       0x20 build/default/production/main.o
+ .text.portAvailable0
+                0x0000000000000000        0x6 build/default/production/main.o
+ .text.initPort1
+                0x0000000000000000       0x3c build/default/production/main.o
+ .text.txWrite1
+                0x0000000000000000       0x20 build/default/production/main.o
+ .text.rxRead1  0x0000000000000000       0x20 build/default/production/main.o
+ .text.portAvailable1
+                0x0000000000000000        0x6 build/default/production/main.o
+ .text.portAvailable2
+                0x0000000000000000        0x6 build/default/production/main.o
+ .text.initPort3
+                0x0000000000000000       0x3c build/default/production/main.o
+ .text.txWrite3
+                0x0000000000000000       0x20 build/default/production/main.o
+ .text.rxRead3  0x0000000000000000       0x20 build/default/production/main.o
+ .text.portAvailable3
+                0x0000000000000000        0x6 build/default/production/main.o
+ .text.initPort4
+                0x0000000000000000       0x3c build/default/production/main.o
+ .text.txWrite4
+                0x0000000000000000       0x20 build/default/production/main.o
+ .text.rxRead4  0x0000000000000000       0x20 build/default/production/main.o
+ .text.portAvailable4
+                0x0000000000000000        0x6 build/default/production/main.o
+ .text.clearTimerFlag
+                0x0000000000000000        0x8 build/default/production/main.o
+ .text.getParitySetA
+                0x0000000000000000        0x6 build/default/production/main.o
+ .text.getParitySetB
+                0x0000000000000000        0x6 build/default/production/main.o
+ .text.getParitySetC
+                0x0000000000000000        0x6 build/default/production/main.o
+ .text.getParitySetD
+                0x0000000000000000        0x6 build/default/production/main.o
+ .bss._timerFlag
+                0x0000000000000000        0x1 build/default/production/main.o
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_copy_data.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_copy_data.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_copy_data.o)
+ .text.libgcc.mul
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_copy_data.o)
+ .text.libgcc.div
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_copy_data.o)
+ .text.libgcc   0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_copy_data.o)
+ .text.libgcc.prologue
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_copy_data.o)
+ .text.libgcc.builtins
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_copy_data.o)
+ .text.libgcc.fmul
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_copy_data.o)
+ .text.libgcc.fixed
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_copy_data.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o)
+ .stack.descriptors
+                0x0000000000000000       0x73 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o)
+ .stack.descriptors
+                0x0000000000000000       0x1d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o)
+ .bss.lock.1484
+                0x0000000000000000        0x4 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o)
+ .stack.descriptors
+                0x0000000000000000       0x3d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o)
+ .text.__sio_sprintf_dosux
+                0x0000000000000000       0x1a c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_d.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_d.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_d.o)
+ .stack.descriptors
+                0x0000000000000000       0x15 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_d.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_o.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_o.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_o.o)
+ .stack.descriptors
+                0x0000000000000000       0x15 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_o.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_s.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_s.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_s.o)
+ .stack.descriptors
+                0x0000000000000000       0x15 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_s.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_u.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_u.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_u.o)
+ .stack.descriptors
+                0x0000000000000000       0x2a c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_u.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_x.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_x.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_x.o)
+ .stack.descriptors
+                0x0000000000000000       0x15 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_x.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__pop_int.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__pop_int.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__pop_int.o)
+ .stack.descriptors
+                0x0000000000000000       0x17 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__pop_int.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+ .stack.descriptors
+                0x0000000000000000       0x91 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(fputc.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(fputc.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(fputc.o)
+ .stack.descriptors
+                0x0000000000000000       0x13 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(fputc.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(strlen.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(strlen.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(strlen.o)
+ .stack.descriptors
+                0x0000000000000000       0x14 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(strlen.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(tolower.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(tolower.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(tolower.o)
+ .stack.descriptors
+                0x0000000000000000       0x2e c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(tolower.o)
+ .text.__tolower_l
+                0x0000000000000000        0x6 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(tolower.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(toupper.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(toupper.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(toupper.o)
+ .stack.descriptors
+                0x0000000000000000       0x2e c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(toupper.o)
+ .text.__toupper_l
+                0x0000000000000000        0x6 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(toupper.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(errno.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(errno.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(errno.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(_Exit.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(_Exit.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(_Exit.o)
+ .stack.descriptors
+                0x0000000000000000       0x13 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(_Exit.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(expand_heap.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(expand_heap.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(expand_heap.o)
+ .stack.descriptors
+                0x0000000000000000       0x1b c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(expand_heap.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsprintf.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsprintf.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsprintf.o)
+ .stack.descriptors
+                0x0000000000000000       0x18 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsprintf.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsnprintf.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsnprintf.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsnprintf.o)
+ .stack.descriptors
+                0x0000000000000000       0x19 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsnprintf.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vfprintf.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vfprintf.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vfprintf.o)
+ .stack.descriptors
+                0x0000000000000000       0x18 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vfprintf.o)
+ .text          0x0000000000000000        0x0 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eerd_byte.o)
+ .data          0x0000000000000000        0x0 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eerd_byte.o)
+ .bss           0x0000000000000000        0x0 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eerd_byte.o)
+ .stack.descriptors
+                0x0000000000000000       0x38 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eerd_byte.o)
+ .text          0x0000000000000000        0x0 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eewr_byte.o)
+ .data          0x0000000000000000        0x0 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eewr_byte.o)
+ .bss           0x0000000000000000        0x0 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eewr_byte.o)
+ .stack.descriptors
+                0x0000000000000000       0x3d C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eewr_byte.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+ .text.libgcc.mul
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+ .stack.descriptors
+                0x0000000000000000       0x1a c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+ .text.libgcc   0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+ .text.libgcc.prologue
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+ .text.libgcc.builtins
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+ .text.libgcc.fmul
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+ .text.libgcc.fixed
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+ .text.libgcc.mul
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+ .text.libgcc.div
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+ .text.libgcc   0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+ .text.libgcc.prologue
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+ .stack.descriptors
+                0x0000000000000000       0x13 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+ .text.libgcc.builtins
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+ .text.libgcc.fmul
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+ .text.libgcc.fixed
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_prologue.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_prologue.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_prologue.o)
+ .text.libgcc.mul
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_prologue.o)
+ .text.libgcc.div
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_prologue.o)
+ .text.libgcc   0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_prologue.o)
+ .text.libgcc.builtins
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_prologue.o)
+ .text.libgcc.fmul
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_prologue.o)
+ .text.libgcc.fixed
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_prologue.o)
+ .text          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_epilogue.o)
+ .data          0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_epilogue.o)
+ .bss           0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_epilogue.o)
+ .text.libgcc.mul
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_epilogue.o)
+ .text.libgcc.div
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_epilogue.o)
+ .text.libgcc   0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_epilogue.o)
+ .text.libgcc.builtins
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_epilogue.o)
+ .text.libgcc.fmul
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_epilogue.o)
+ .text.libgcc.fixed
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_epilogue.o)
+
+Memory Configuration
+
+Name             Origin             Length             Attributes
+text             0x0000000000000000 0x0000000000008000 xr
+data             0x0000000000807000 0x0000000000001000 rw !x
+eeprom           0x0000000000810000 0x0000000000000200 rw !x
+fuse             0x0000000000820000 0x0000000000000010 rw !x
+lock             0x0000000000830000 0x0000000000000400 rw !x
+signature        0x0000000000840000 0x0000000000000400 rw !x
+user_signatures  0x0000000000850000 0x0000000000000400 rw !x
+bootrow          0x0000000000860000 0x0000000000000400 rw !x
+*default*        0x0000000000000000 0xffffffffffffffff
+
+Linker script and memory map
+
+Address of section .data set to 0x807000
+                0x0000000000008000                __RODATA_PM_OFFSET__ = 0x8000
+LOAD C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+                0x0000000000000001                __MPLAB_BUILD = 0x1
+LOAD build/default/production/main.o
+START GROUP
+LOAD c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libm.a
+END GROUP
+START GROUP
+LOAD c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a
+LOAD c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libm.a
+LOAD c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a
+LOAD C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a
+END GROUP
+                [0x0000000000000000]                __TEXT_REGION_ORIGIN__ = DEFINED (__TEXT_REGION_ORIGIN__)?__TEXT_REGION_ORIGIN__:0x0
+                [0x0000000000807000]                __DATA_REGION_ORIGIN__ = DEFINED (__DATA_REGION_ORIGIN__)?__DATA_REGION_ORIGIN__:0x802000
+                [0x0000000000008000]                __TEXT_REGION_LENGTH__ = DEFINED (__TEXT_REGION_LENGTH__)?__TEXT_REGION_LENGTH__:0x100000
+                [0x0000000000001000]                __DATA_REGION_LENGTH__ = DEFINED (__DATA_REGION_LENGTH__)?__DATA_REGION_LENGTH__:0xffa0
+                [0x0000000000000200]                __EEPROM_REGION_LENGTH__ = DEFINED (__EEPROM_REGION_LENGTH__)?__EEPROM_REGION_LENGTH__:0x10000
+                [0x0000000000000010]                __FUSE_REGION_LENGTH__ = DEFINED (__FUSE_REGION_LENGTH__)?__FUSE_REGION_LENGTH__:0x400
+                0x0000000000000400                __LOCK_REGION_LENGTH__ = DEFINED (__LOCK_REGION_LENGTH__)?__LOCK_REGION_LENGTH__:0x400
+                0x0000000000000400                __SIGNATURE_REGION_LENGTH__ = DEFINED (__SIGNATURE_REGION_LENGTH__)?__SIGNATURE_REGION_LENGTH__:0x400
+                0x0000000000000400                __USER_SIGNATURE_REGION_LENGTH__ = DEFINED (__USER_SIGNATURE_REGION_LENGTH__)?__USER_SIGNATURE_REGION_LENGTH__:0x400
+                0x0000000000008000                __RODATA_PM_OFFSET__ = DEFINED (__RODATA_PM_OFFSET__)?__RODATA_PM_OFFSET__:0x8000
+                0x0000000000000400                __BOOTROW_REGION_LENGTH__ = DEFINED (__BOOTROW_REGION_LENGTH__)?__BOOTROW_REGION_LENGTH__:0x400
+
+.hash
+ *(.hash)
+
+.dynsym
+ *(.dynsym)
+
+.dynstr
+ *(.dynstr)
+
+.gnu.version
+ *(.gnu.version)
+
+.gnu.version_d
+ *(.gnu.version_d)
+
+.gnu.version_r
+ *(.gnu.version_r)
+
+.rel.init
+ *(.rel.init)
+
+.rela.init
+ *(.rela.init)
+
+.rel.text
+ *(.rel.text)
+ *(.rel.text.*)
+ *(.rel.gnu.linkonce.t*)
+
+.rela.text
+ *(.rela.text)
+ *(.rela.text.*)
+ *(.rela.gnu.linkonce.t*)
+
+.rel.fini
+ *(.rel.fini)
+
+.rela.fini
+ *(.rela.fini)
+
+.rel.rodata
+ *(.rel.rodata)
+ *(.rel.rodata.*)
+ *(.rel.gnu.linkonce.r*)
+
+.rela.rodata
+ *(.rela.rodata)
+ *(.rela.rodata.*)
+ *(.rela.gnu.linkonce.r*)
+
+.rel.data
+ *(.rel.data)
+ *(.rel.data.*)
+ *(.rel.gnu.linkonce.d*)
+
+.rela.data
+ *(.rela.data)
+ *(.rela.data.*)
+ *(.rela.gnu.linkonce.d*)
+
+.rel.ctors
+ *(.rel.ctors)
+
+.rela.ctors
+ *(.rela.ctors)
+
+.rel.dtors
+ *(.rel.dtors)
+
+.rela.dtors
+ *(.rela.dtors)
+
+.rel.got
+ *(.rel.got)
+
+.rela.got
+ *(.rela.got)
+
+.rel.bss
+ *(.rel.bss)
+
+.rela.bss
+ *(.rela.bss)
+
+.rel.plt
+ *(.rel.plt)
+
+.rela.plt
+ *(.rela.plt)
+
+.text           0x0000000000000000      0x166
+ *(.vectors)
+ .vectors       0x0000000000000000       0xe8 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+                0x0000000000000000                __vector_default
+                0x0000000000000000                __vectors
+ *(.vectors)
+ *(.progmem.gcc*)
+ *(.dinit)
+ .dinit         0x00000000000000e8       0x29 data_init
+                0x0000000000000112                . = ALIGN (0x2)
+ *fill*         0x0000000000000111        0x1 
+                0x0000000000000112                __trampolines_start = .
+ *(.trampolines)
+ .trampolines   0x0000000000000112        0x0 linker stubs
+ *(.trampolines*)
+                0x0000000000000112                __trampolines_end = .
+ *libprintf_flt.a:*(.progmem.data)
+ *libc.a:*(.progmem.data)
+                0x0000000000000112                . = ALIGN (0x2)
+ *(.jumptables)
+ *(.jumptables*)
+ *(.lowtext)
+ *(.lowtext*)
+                0x0000000000000112                __ctors_start = .
+ *(.ctors)
+                0x0000000000000112                __ctors_end = .
+                0x0000000000000112                __dtors_start = .
+ *(.dtors)
+                0x0000000000000112                __dtors_end = .
+ SORT(*)(.ctors)
+ SORT(*)(.dtors)
+ *(.init0)
+ .init0         0x0000000000000112        0x0 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+                0x0000000000000112                __init
+ *(.init0)
+ *(.init1)
+ *(.init1)
+ *(.init2)
+ .init2         0x0000000000000112        0xc C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+ *(.init2)
+ *(.init3)
+ *(.init3)
+ *(.init4)
+ .init4         0x000000000000011e       0x3c c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_copy_data.o)
+                0x000000000000011e                __do_copy_data
+                0x000000000000014c                __do_clear_bss
+ *(.init4)
+ *(.init5)
+ *(.init5)
+ *(.init6)
+ *(.init6)
+ *(.init7)
+ *(.init7)
+ *(.init8)
+ *(.init8)
+ *(.init9)
+ .init9         0x000000000000015a        0x8 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+ *(.init9)
+                0x0000000000000162                . = ALIGN (0x2)
+ *(.fini9)
+ .fini9         0x0000000000000162        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+                0x0000000000000162                _exit
+ *(.fini9)
+ *(.fini8)
+ *(.fini8)
+ *(.fini7)
+ *(.fini7)
+ *(.fini6)
+ *(.fini6)
+ *(.fini5)
+ *(.fini5)
+ *(.fini4)
+ *(.fini4)
+ *(.fini3)
+ *(.fini3)
+ *(.fini2)
+ *(.fini2)
+ *(.fini1)
+ *(.fini1)
+ *(.fini0)
+ .fini0         0x0000000000000162        0x4 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+ *(.fini0)
+                0x0000000000000166                _etext = .
+
+.data           0x0000000000807000        0x0 load address 0x0000000000000166
+                [!provide]                        PROVIDE (__data_start, .)
+ *(.gnu.linkonce.d*)
+                0x0000000000807000                . = ALIGN (0x2)
+                0x0000000000807000                _edata = .
+                [!provide]                        PROVIDE (__data_end, .)
+
+.bss            0x0000000000807000        0x2
+                [!provide]                        PROVIDE (__bss_start, .)
+ *(COMMON)
+ COMMON         0x0000000000807000        0x2 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(errno.o)
+                0x0000000000807000                __errno_val
+                [!provide]                        PROVIDE (__bss_end, .)
+                0x0000000000000166                __data_load_start = LOADADDR (.data)
+                0x0000000000000166                __data_load_end = (__data_load_start + SIZEOF (.data))
+
+.noinit         0x0000000000807002        0x0
+                [!provide]                        PROVIDE (__noinit_start, .)
+ *(.noinit*)
+                [!provide]                        PROVIDE (__noinit_end, .)
+                0x0000000000807002                _end = .
+
+.eeprom         0x0000000000810000        0x0
+ *(.eeprom*)
+                0x0000000000810000                __eeprom_end = .
+
+.fuse           0x0000000000820000        0x9
+ *(.fuse)
+ .fuse          0x0000000000820000        0x9 build/default/production/main.o
+                0x0000000000820000                __fuse
+ *(.lfuse)
+ *(.hfuse)
+ *(.efuse)
+
+.lock           0x0000000000830000        0x4
+ *(.lock*)
+ .lock          0x0000000000830000        0x4 build/default/production/main.o
+                0x0000000000830000                __lock
+
+.signature
+ *(.signature*)
+
+.user_signatures
+ *(.user_signatures*)
+
+.bootrow
+ *(.bootrow*)
+
+.stab
+ *(.stab)
+
+.stabstr
+ *(.stabstr)
+
+.stab.excl
+ *(.stab.excl)
+
+.stab.exclstr
+ *(.stab.exclstr)
+
+.stab.index
+ *(.stab.index)
+
+.stab.indexstr
+ *(.stab.indexstr)
+
+.comment        0x0000000000000000       0x5b
+ *(.comment)
+ .comment       0x0000000000000000       0x2f build/default/production/main.o
+                                         0x30 (size before relaxing)
+ .comment       0x000000000000002f       0x2c c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o)
+                                         0x2d (size before relaxing)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_d.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_o.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_s.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_u.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_x.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__pop_int.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(fputc.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(strlen.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(tolower.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(toupper.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(errno.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(_Exit.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(expand_heap.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsprintf.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsnprintf.o)
+ .comment       0x000000000000005b       0x2d c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vfprintf.o)
+
+.stack.descriptors.hdr
+                0x0000000000000000      0x150
+ .stack.descriptors.hdr
+                0x0000000000000000        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o)
+ .stack.descriptors.hdr
+                0x000000000000000e        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o)
+ .stack.descriptors.hdr
+                0x000000000000001c        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o)
+ .stack.descriptors.hdr
+                0x000000000000002a        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_d.o)
+ .stack.descriptors.hdr
+                0x0000000000000038        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_o.o)
+ .stack.descriptors.hdr
+                0x0000000000000046        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_s.o)
+ .stack.descriptors.hdr
+                0x0000000000000054        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_u.o)
+ .stack.descriptors.hdr
+                0x0000000000000062        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_x.o)
+ .stack.descriptors.hdr
+                0x0000000000000070        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__pop_int.o)
+ .stack.descriptors.hdr
+                0x000000000000007e        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+ .stack.descriptors.hdr
+                0x000000000000008c        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(fputc.o)
+ .stack.descriptors.hdr
+                0x000000000000009a        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(strlen.o)
+ .stack.descriptors.hdr
+                0x00000000000000a8        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(tolower.o)
+ .stack.descriptors.hdr
+                0x00000000000000b6        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(toupper.o)
+ .stack.descriptors.hdr
+                0x00000000000000c4        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(errno.o)
+ .stack.descriptors.hdr
+                0x00000000000000d2        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(_Exit.o)
+ .stack.descriptors.hdr
+                0x00000000000000e0        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(expand_heap.o)
+ .stack.descriptors.hdr
+                0x00000000000000ee        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsprintf.o)
+ .stack.descriptors.hdr
+                0x00000000000000fc        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsnprintf.o)
+ .stack.descriptors.hdr
+                0x000000000000010a        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vfprintf.o)
+ .stack.descriptors.hdr
+                0x0000000000000118        0xe C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eerd_byte.o)
+ .stack.descriptors.hdr
+                0x0000000000000126        0xe C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eewr_byte.o)
+ .stack.descriptors.hdr
+                0x0000000000000134        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+ .stack.descriptors.hdr
+                0x0000000000000142        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_exit.o)
+
+.note.GNU-stack
+                0x0000000000000000        0x0
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_d.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_o.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_s.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_u.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_x.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__pop_int.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(fputc.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(strlen.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(tolower.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(toupper.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(errno.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(_Exit.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(expand_heap.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsprintf.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsnprintf.o)
+ .note.GNU-stack
+                0x0000000000000000        0x0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vfprintf.o)
+
+.note.gnu.build-id
+ *(.note.gnu.build-id)
+
+.debug
+ *(.debug)
+
+.line
+ *(.line)
+
+.debug_srcinfo
+ *(.debug_srcinfo)
+
+.debug_sfnames
+ *(.debug_sfnames)
+
+.debug_aranges  0x0000000000000000      0x2b0
+ *(.debug_aranges)
+ .debug_aranges
+                0x0000000000000000      0x270 build/default/production/main.o
+ .debug_aranges
+                0x0000000000000270       0x20 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eerd_byte.o)
+ .debug_aranges
+                0x0000000000000290       0x20 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eewr_byte.o)
+
+.debug_pubnames
+ *(.debug_pubnames)
+
+.debug_info     0x0000000000000000     0x7051
+ *(.debug_info .gnu.linkonce.wi.*)
+ .debug_info    0x0000000000000000     0x3214 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+ .debug_info    0x0000000000003214     0x3ce5 build/default/production/main.o
+ .debug_info    0x0000000000006ef9       0xac C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eerd_byte.o)
+ .debug_info    0x0000000000006fa5       0xac C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eewr_byte.o)
+
+.debug_abbrev   0x0000000000000000     0x3440
+ *(.debug_abbrev)
+ .debug_abbrev  0x0000000000000000     0x2f6e C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+ .debug_abbrev  0x0000000000002f6e      0x4aa build/default/production/main.o
+ .debug_abbrev  0x0000000000003418       0x14 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eerd_byte.o)
+ .debug_abbrev  0x000000000000342c       0x14 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eewr_byte.o)
+
+.debug_line     0x0000000000000000     0x1d83
+ *(.debug_line .debug_line.* .debug_line_end)
+ .debug_line    0x0000000000000000      0x1f3 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+ .debug_line    0x00000000000001f3     0x1a3e build/default/production/main.o
+ .debug_line    0x0000000000001c31       0x79 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eerd_byte.o)
+ .debug_line    0x0000000000001caa       0xd9 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eewr_byte.o)
+
+.debug_frame    0x0000000000000000      0x800
+ *(.debug_frame)
+ .debug_frame   0x0000000000000000      0x800 build/default/production/main.o
+
+.debug_str      0x0000000000000000     0x1649
+ *(.debug_str)
+ .debug_str     0x0000000000000000     0x1539 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+ .debug_str     0x0000000000001539      0x110 build/default/production/main.o
+
+.debug_loc      0x0000000000000000     0x196e
+ *(.debug_loc)
+ .debug_loc     0x0000000000000000     0x196e build/default/production/main.o
+
+.debug_macinfo
+ *(.debug_macinfo)
+
+.debug_weaknames
+ *(.debug_weaknames)
+
+.debug_funcnames
+ *(.debug_funcnames)
+
+.debug_typenames
+ *(.debug_typenames)
+
+.debug_varnames
+ *(.debug_varnames)
+
+.debug_pubtypes
+ *(.debug_pubtypes)
+
+.debug_ranges   0x0000000000000000      0x278
+ *(.debug_ranges)
+ .debug_ranges  0x0000000000000000      0x278 build/default/production/main.o
+
+.debug_macro
+ *(.debug_macro)
+OUTPUT(dist/default/production/RS232_MUX.X.production.elf elf32-avr)
+LOAD linker stubs
+LOAD data_init
+
+.note.gnu.avr.deviceinfo
+                0x0000000000000000       0x3c
+ .note.gnu.avr.deviceinfo
+                0x0000000000000000       0x3c C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+
+.bss.OLD_CFG    0x0000000000807611       0x14
+ .bss.OLD_CFG   0x0000000000807611       0x14 build/default/production/main.o
+                0x0000000000807611                OLD_CFG
+
+.bss._portD_parity_set
+                0x000000000080763f        0x1
+ .bss._portD_parity_set
+                0x000000000080763f        0x1 build/default/production/main.o
+                0x000000000080763f                _portD_parity_set
+
+.bss._portC_parity_set
+                0x0000000000807640        0x1
+ .bss._portC_parity_set
+                0x0000000000807640        0x1 build/default/production/main.o
+                0x0000000000807640                _portC_parity_set
+
+.bss._portB_parity_set
+                0x0000000000807641        0x1
+ .bss._portB_parity_set
+                0x0000000000807641        0x1 build/default/production/main.o
+                0x0000000000807641                _portB_parity_set
+
+.bss._portA_parity_set
+                0x0000000000807642        0x1
+ .bss._portA_parity_set
+                0x0000000000807642        0x1 build/default/production/main.o
+                0x0000000000807642                _portA_parity_set
+
+.bss.eepromVCOM
+                0x000000000080762d        0x8
+ .bss.eepromVCOM
+                0x000000000080762d        0x8 build/default/production/main.o
+                0x000000000080762d                eepromVCOM
+
+.bss._RX4       0x0000000000807002      0x103
+ .bss._RX4      0x0000000000807002      0x103 build/default/production/main.o
+                0x0000000000807002                _RX4
+
+.bss._RX3       0x0000000000807105      0x103
+ .bss._RX3      0x0000000000807105      0x103 build/default/production/main.o
+                0x0000000000807105                _RX3
+
+.bss._RX2       0x0000000000807208      0x103
+ .bss._RX2      0x0000000000807208      0x103 build/default/production/main.o
+                0x0000000000807208                _RX2
+
+.bss._RX1       0x000000000080730b      0x103
+ .bss._RX1      0x000000000080730b      0x103 build/default/production/main.o
+                0x000000000080730b                _RX1
+
+.bss._RX0       0x000000000080740e      0x103
+ .bss._RX0      0x000000000080740e      0x103 build/default/production/main.o
+                0x000000000080740e                _RX0
+
+.bss.end.1483   0x0000000000807635        0x2
+ .bss.end.1483  0x0000000000807635        0x2 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o)
+
+.bss.cur.1482   0x0000000000807637        0x2
+ .bss.cur.1482  0x0000000000807637        0x2 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o)
+
+.bss.__brkval   0x0000000000807639        0x2
+ .bss.__brkval  0x0000000000807639        0x2 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(expand_heap.o)
+
+.text.main      0x0000000000000166      0x4b0
+ .text.main     0x0000000000000166      0x4b0 build/default/production/main.o
+                0x0000000000000166                main
+
+.text.vfpfcnvrt
+                0x0000000000000616      0x3fc
+ .text.vfpfcnvrt
+                0x0000000000000616      0x3fc c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+                0x0000000000000616                vfpfcnvrt
+
+.text.readCFG   0x0000000000000a12      0x33a
+ .text.readCFG  0x0000000000000a12      0x33a build/default/production/main.o
+                0x0000000000000a12                readCFG
+
+.text.MCOM_scanframe
+                0x0000000000000d4c      0x200
+ .text.MCOM_scanframe
+                0x0000000000000d4c      0x200 build/default/production/main.o
+                0x0000000000000d4c                MCOM_scanframe
+
+.text.__fmt_x   0x0000000000000f4c      0x1dc
+ .text.__fmt_x  0x0000000000000f4c      0x1dc c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_x.o)
+                0x0000000000000f4c                __fmt_x_needed
+                0x0000000000000f4c                __fmt_x
+
+.text.setRAMCfg
+                0x0000000000001128      0x114
+ .text.setRAMCfg
+                0x0000000000001128      0x114 build/default/production/main.o
+                0x0000000000001128                setRAMCfg
+
+.text.initPortA
+                0x000000000000123c      0x100
+ .text.initPortA
+                0x000000000000123c      0x100 build/default/production/main.o
+                0x000000000000123c                initPortA
+
+.text.initPortB
+                0x000000000000133c      0x100
+ .text.initPortB
+                0x000000000000133c      0x100 build/default/production/main.o
+                0x000000000000133c                initPortB
+
+.text.initPortC
+                0x000000000000143c      0x100
+ .text.initPortC
+                0x000000000000143c      0x100 build/default/production/main.o
+                0x000000000000143c                initPortC
+
+.text.initPortD
+                0x000000000000153c      0x100
+ .text.initPortD
+                0x000000000000153c      0x100 build/default/production/main.o
+                0x000000000000153c                initPortD
+
+.text.senseDebugLeds
+                0x000000000000163c       0xfe
+ .text.senseDebugLeds
+                0x000000000000163c       0xfe build/default/production/main.o
+                0x000000000000163c                senseDebugLeds
+
+.text.__simple_malloc
+                0x000000000000173a       0xf0
+ .text.__simple_malloc
+                0x000000000000173a       0xf0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(lite_malloc.o)
+                0x000000000000173a                __malloc0
+                0x000000000000173a                __simple_malloc
+                0x000000000000173a                malloc
+
+.text.__fmt_d   0x000000000000182a       0xe4
+ .text.__fmt_d  0x000000000000182a       0xe4 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_d.o)
+                0x000000000000182a                __fmt_d
+                0x000000000000182a                __fmt_d_needed
+
+.text.VCOM_sendframe
+                0x000000000000190e       0xd2
+ .text.VCOM_sendframe
+                0x000000000000190e       0xd2 build/default/production/main.o
+                0x000000000000190e                VCOM_sendframe
+
+.text.__pop_int
+                0x00000000000019e0       0xd0
+ .text.__pop_int
+                0x00000000000019e0       0xd0 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__pop_int.o)
+                0x00000000000019e0                __pop_int_needed
+                0x00000000000019e0                __pop_int
+
+.text.__cvt_u   0x0000000000001ab0       0xca
+ .text.__cvt_u  0x0000000000001ab0       0xca c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_u.o)
+                0x0000000000001ab0                __cvt_u
+
+.text.getEEPROMCfg
+                0x0000000000001b7a       0xbc
+ .text.getEEPROMCfg
+                0x0000000000001b7a       0xbc build/default/production/main.o
+                0x0000000000001b7a                getEEPROMCfg
+
+.text.__fmt_o   0x0000000000001c36       0xb2
+ .text.__fmt_o  0x0000000000001c36       0xb2 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_o.o)
+                0x0000000000001c36                __fmt_o
+                0x0000000000001c36                __fmt_o_needed
+
+.rodata         0x0000000000809ce8       0xa9 load address 0x0000000000001ce8
+ .rodata        0x0000000000809ce8       0xa9 build/default/production/main.o
+
+.text.fputc     0x0000000000001d92       0x98
+ .text.fputc    0x0000000000001d92       0x98 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(fputc.o)
+                0x0000000000001d92                fputc
+                0x0000000000001d92                putc
+
+.text.__fmt_u   0x0000000000001e2a       0x8e
+ .text.__fmt_u  0x0000000000001e2a       0x8e c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_u.o)
+                0x0000000000001e2a                __fmt_u_needed
+                0x0000000000001e2a                __fmt_u
+
+.text.readPortA
+                0x0000000000001eb8       0x78
+ .text.readPortA
+                0x0000000000001eb8       0x78 build/default/production/main.o
+                0x0000000000001eb8                readPortA
+
+.text.readPortB
+                0x0000000000001f30       0x78
+ .text.readPortB
+                0x0000000000001f30       0x78 build/default/production/main.o
+                0x0000000000001f30                readPortB
+
+.text.readPortC
+                0x0000000000001fa8       0x78
+ .text.readPortC
+                0x0000000000001fa8       0x78 build/default/production/main.o
+                0x0000000000001fa8                readPortC
+
+.text.readPortD
+                0x0000000000002020       0x78
+ .text.readPortD
+                0x0000000000002020       0x78 build/default/production/main.o
+                0x0000000000002020                readPortD
+
+.text.__printf_core
+                0x0000000000002098       0x78
+ .text.__printf_core
+                0x0000000000002098       0x78 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+                0x0000000000002098                __printf_core
+
+.text.writePortA
+                0x0000000000002110       0x76
+ .text.writePortA
+                0x0000000000002110       0x76 build/default/production/main.o
+                0x0000000000002110                writePortA
+
+.text.writePortB
+                0x0000000000002186       0x76
+ .text.writePortB
+                0x0000000000002186       0x76 build/default/production/main.o
+                0x0000000000002186                writePortB
+
+.text.writePortC
+                0x00000000000021fc       0x76
+ .text.writePortC
+                0x00000000000021fc       0x76 build/default/production/main.o
+                0x00000000000021fc                writePortC
+
+.text.writePortD
+                0x0000000000002272       0x76
+ .text.writePortD
+                0x0000000000002272       0x76 build/default/production/main.o
+                0x0000000000002272                writePortD
+
+.text.__vsnprintf
+                0x00000000000022e8       0x74
+ .text.__vsnprintf
+                0x00000000000022e8       0x74 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsnprintf.o)
+                0x00000000000022e8                __vsnprintf
+
+.text.__pad     0x000000000000235c       0x72
+ .text.__pad    0x000000000000235c       0x72 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+                0x000000000000235c                __pad
+
+.text.__expand_heap
+                0x00000000000023ce       0x6e
+ .text.__expand_heap
+                0x00000000000023ce       0x6e c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(expand_heap.o)
+                0x00000000000023ce                __expand_heap
+
+.text.setEEPROMCfg
+                0x000000000000243c       0x6a
+ .text.setEEPROMCfg
+                0x000000000000243c       0x6a build/default/production/main.o
+                0x000000000000243c                setEEPROMCfg
+
+.text.writeConfiguration
+                0x00000000000024a6       0x6a
+ .text.writeConfiguration
+                0x00000000000024a6       0x6a build/default/production/main.o
+                0x00000000000024a6                writeConfiguration
+
+.text.MCOM_sendframe
+                0x0000000000002510       0x66
+ .text.MCOM_sendframe
+                0x0000000000002510       0x66 build/default/production/main.o
+                0x0000000000002510                MCOM_sendframe
+
+.text.read_prec_or_width
+                0x0000000000002576       0x5c
+ .text.read_prec_or_width
+                0x0000000000002576       0x5c c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+
+.text.__fmt_s   0x00000000000025d2       0x54
+ .text.__fmt_s  0x00000000000025d2       0x54 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_s.o)
+                0x00000000000025d2                __fmt_s
+                0x00000000000025d2                __fmt_0_needed
+                0x00000000000025d2                __fmt_s_needed
+
+.text.libgcc.div
+                0x0000000000002626       0x44
+ .text.libgcc.div
+                0x0000000000002626       0x44 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_udivmodsi4.o)
+                0x0000000000002626                __udivmodsi4
+
+.text.bootSequence
+                0x000000000000266a       0x42
+ .text.bootSequence
+                0x000000000000266a       0x42 build/default/production/main.o
+                0x000000000000266a                bootSequence
+
+.text.__fmt_state
+                0x00000000000026ac       0x40
+ .text.__fmt_state
+                0x00000000000026ac       0x40 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+                0x00000000000026ac                __fmt_state
+
+.text.__vector_19
+                0x00000000000026ec       0x3e
+ .text.__vector_19
+                0x00000000000026ec       0x3e build/default/production/main.o
+                0x00000000000026ec                __vector_19
+
+.text.__vector_52
+                0x000000000000272a       0x3e
+ .text.__vector_52
+                0x000000000000272a       0x3e build/default/production/main.o
+                0x000000000000272a                __vector_52
+
+.text.__vector_31
+                0x0000000000002768       0x3e
+ .text.__vector_31
+                0x0000000000002768       0x3e build/default/production/main.o
+                0x0000000000002768                __vector_31
+
+.text.__vector_55
+                0x00000000000027a6       0x3e
+ .text.__vector_55
+                0x00000000000027a6       0x3e build/default/production/main.o
+                0x00000000000027a6                __vector_55
+
+.text.__vector_37
+                0x00000000000027e4       0x3e
+ .text.__vector_37
+                0x00000000000027e4       0x3e build/default/production/main.o
+                0x00000000000027e4                __vector_37
+
+.text.initPort2
+                0x0000000000002822       0x3c
+ .text.initPort2
+                0x0000000000002822       0x3c build/default/production/main.o
+                0x0000000000002822                initPort2
+
+.text.readConfiguration
+                0x000000000000285e       0x3c
+ .text.readConfiguration
+                0x000000000000285e       0x3c build/default/production/main.o
+                0x000000000000285e                readConfiguration
+
+.text.__out     0x000000000000289a       0x3a
+ .text.__out    0x000000000000289a       0x3a c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+                0x000000000000289a                __out
+
+.text.debugLedsTest
+                0x00000000000028d4       0x32
+ .text.debugLedsTest
+                0x00000000000028d4       0x32 build/default/production/main.o
+                0x00000000000028d4                debugLedsTest
+
+.text.libgcc.prologue
+                0x0000000000002906       0x32
+ .text.libgcc.prologue
+                0x0000000000002906       0x32 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_prologue.o)
+                0x0000000000002906                __prologue_saves__
+
+.text.stringComp
+                0x0000000000002938       0x30
+ .text.stringComp
+                0x0000000000002938       0x30 build/default/production/main.o
+                0x0000000000002938                stringComp
+
+.text.__vfprintf
+                0x0000000000002968       0x30
+ .text.__vfprintf
+                0x0000000000002968       0x30 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vfprintf.o)
+                0x0000000000002968                __vfprintf
+
+.text.avrlibc   0x0000000000002998       0x30
+ .text.avrlibc  0x0000000000002998       0x30 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eewr_byte.o)
+                0x0000000000002998                eeprom_write_byte
+                0x000000000000299a                eeprom_write_r18
+
+.text.libgcc.prologue
+                0x00000000000029c8       0x30
+ .text.libgcc.prologue
+                0x00000000000029c8       0x30 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/avrxmega3\libgcc.a(_epilogue.o)
+                0x00000000000029c8                __epilogue_restores__
+
+.text.__wrap_sprintf
+                0x00000000000029f8       0x24
+ .text.__wrap_sprintf
+                0x00000000000029f8       0x24 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__sio_sprintf_dosux.o)
+                0x00000000000029f8                _sprintf_cdopsuxX
+
+.text.txWrite2  0x0000000000002a1c       0x20
+ .text.txWrite2
+                0x0000000000002a1c       0x20 build/default/production/main.o
+                0x0000000000002a1c                txWrite2
+
+.text.rxRead2   0x0000000000002a3c       0x20
+ .text.rxRead2  0x0000000000002a3c       0x20 build/default/production/main.o
+                0x0000000000002a3c                rxRead2
+
+.text.strlen    0x0000000000002a5c       0x1c
+ .text.strlen   0x0000000000002a5c       0x1c c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(strlen.o)
+                0x0000000000002a5c                strlen
+
+.text.setWait   0x0000000000002a78       0x16
+ .text.setWait  0x0000000000002a78       0x16 build/default/production/main.o
+                0x0000000000002a78                setWait
+
+.text.exit      0x0000000000002a8e       0x16
+ .text.exit     0x0000000000002a8e       0x16 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o)
+                0x0000000000002a8e                exit
+
+.rodata.state_table
+                0x000000000080aaa4       0x16 load address 0x0000000000002aa4
+ .rodata.state_table
+                0x000000000080aaa4       0x16 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+
+.text.timerInit
+                0x0000000000002aba       0x12
+ .text.timerInit
+                0x0000000000002aba       0x12 build/default/production/main.o
+                0x0000000000002aba                timerInit
+
+.text.toupper   0x0000000000002acc       0x12
+ .text.toupper  0x0000000000002acc       0x12 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(toupper.o)
+                0x0000000000002acc                toupper
+
+.text.tolower   0x0000000000002ade       0x10
+ .text.tolower  0x0000000000002ade       0x10 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(tolower.o)
+                0x0000000000002ade                tolower
+
+.text.avrlibc   0x0000000000002aee       0x10
+ .text.avrlibc  0x0000000000002aee       0x10 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3\libavr32da48.a(eerd_byte.o)
+                0x0000000000002aee                eeprom_read_byte
+                0x0000000000002af6                eeprom_mapen
+
+.text.getErrorStatusA
+                0x0000000000002afe        0xe
+ .text.getErrorStatusA
+                0x0000000000002afe        0xe build/default/production/main.o
+                0x0000000000002afe                getErrorStatusA
+
+.text.getErrorStatusB
+                0x0000000000002b0c        0xe
+ .text.getErrorStatusB
+                0x0000000000002b0c        0xe build/default/production/main.o
+                0x0000000000002b0c                getErrorStatusB
+
+.text.getErrorStatusC
+                0x0000000000002b1a        0xe
+ .text.getErrorStatusC
+                0x0000000000002b1a        0xe build/default/production/main.o
+                0x0000000000002b1a                getErrorStatusC
+
+.text.getErrorStatusD
+                0x0000000000002b28        0xe
+ .text.getErrorStatusD
+                0x0000000000002b28        0xe build/default/production/main.o
+                0x0000000000002b28                getErrorStatusD
+
+.text.__vsprintf
+                0x0000000000002b36        0xe
+ .text.__vsprintf
+                0x0000000000002b36        0xe c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__int_vsprintf.o)
+                0x0000000000002b36                __vsprintf
+
+.text.portA_available
+                0x0000000000002b44        0xa
+ .text.portA_available
+                0x0000000000002b44        0xa build/default/production/main.o
+                0x0000000000002b44                portA_available
+
+.text.portB_available
+                0x0000000000002b4e        0xa
+ .text.portB_available
+                0x0000000000002b4e        0xa build/default/production/main.o
+                0x0000000000002b4e                portB_available
+
+.text.portC_available
+                0x0000000000002b58        0xa
+ .text.portC_available
+                0x0000000000002b58        0xa build/default/production/main.o
+                0x0000000000002b58                portC_available
+
+.text.portD_available
+                0x0000000000002b62        0xa
+ .text.portD_available
+                0x0000000000002b62        0xa build/default/production/main.o
+                0x0000000000002b62                portD_available
+
+.text.getTimerFlag
+                0x0000000000002b6c        0x8
+ .text.getTimerFlag
+                0x0000000000002b6c        0x8 build/default/production/main.o
+                0x0000000000002b6c                getTimerFlag
+
+.text.txWriteA  0x0000000000002b74        0x8
+ .text.txWriteA
+                0x0000000000002b74        0x8 build/default/production/main.o
+                0x0000000000002b74                txWriteA
+
+.text.txWriteB  0x0000000000002b7c        0x8
+ .text.txWriteB
+                0x0000000000002b7c        0x8 build/default/production/main.o
+                0x0000000000002b7c                txWriteB
+
+.text.txWriteC  0x0000000000002b84        0x8
+ .text.txWriteC
+                0x0000000000002b84        0x8 build/default/production/main.o
+                0x0000000000002b84                txWriteC
+
+.text.txWriteD  0x0000000000002b8c        0x8
+ .text.txWriteD
+                0x0000000000002b8c        0x8 build/default/production/main.o
+                0x0000000000002b8c                txWriteD
+
+.text.rxReadA   0x0000000000002b94        0x8
+ .text.rxReadA  0x0000000000002b94        0x8 build/default/production/main.o
+                0x0000000000002b94                rxReadA
+
+.text.rxReadB   0x0000000000002b9c        0x8
+ .text.rxReadB  0x0000000000002b9c        0x8 build/default/production/main.o
+                0x0000000000002b9c                rxReadB
+
+.text.rxReadC   0x0000000000002ba4        0x8
+ .text.rxReadC  0x0000000000002ba4        0x8 build/default/production/main.o
+                0x0000000000002ba4                rxReadC
+
+.text.rxReadD   0x0000000000002bac        0x8
+ .text.rxReadD  0x0000000000002bac        0x8 build/default/production/main.o
+                0x0000000000002bac                rxReadD
+
+.rodata.nuls.2781
+                0x000000000080abb4        0x7 load address 0x0000000000002bb4
+ .rodata.nuls.2781
+                0x000000000080abb4        0x7 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__fmt_s.o)
+
+.rodata.nilstr.2962
+                0x000000000080abbb        0x6 load address 0x0000000000002bbb
+ .rodata.nilstr.2962
+                0x000000000080abbb        0x6 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(__printf_core.o)
+
+.text           0x0000000000002bc2        0x4
+ .text          0x0000000000002bc2        0x4 C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286/xc8/avr/lib/avrxmega3/crtavr32da48.o
+                0x0000000000002bc2                __vector_38
+                0x0000000000002bc2                __vector_22
+                0x0000000000002bc2                __vector_28
+                0x0000000000002bc2                __vector_1
+                0x0000000000002bc2                __vector_32
+                0x0000000000002bc2                __vector_34
+                0x0000000000002bc2                __vector_24
+                0x0000000000002bc2                __vector_12
+                0x0000000000002bc2                __vector_46
+                0x0000000000002bc2                __bad_interrupt
+                0x0000000000002bc2                __vector_6
+                0x0000000000002bc2                __vector_35
+                0x0000000000002bc2                __vector_39
+                0x0000000000002bc2                __vector_3
+                0x0000000000002bc2                __vector_23
+                0x0000000000002bc2                __vector_30
+                0x0000000000002bc2                __vector_45
+                0x0000000000002bc2                __vector_25
+                0x0000000000002bc2                __vector_11
+                0x0000000000002bc2                __vector_54
+                0x0000000000002bc2                __vector_13
+                0x0000000000002bc2                __vector_17
+                0x0000000000002bc2                __vector_56
+                0x0000000000002bc2                __vector_7
+                0x0000000000002bc2                __vector_49
+                0x0000000000002bc2                __vector_41
+                0x0000000000002bc2                __vector_43
+                0x0000000000002bc2                __vector_27
+                0x0000000000002bc2                __vector_5
+                0x0000000000002bc2                __vector_33
+                0x0000000000002bc2                __vector_47
+                0x0000000000002bc2                __vector_4
+                0x0000000000002bc2                __vector_44
+                0x0000000000002bc2                __vector_51
+                0x0000000000002bc2                __vector_9
+                0x0000000000002bc2                __vector_2
+                0x0000000000002bc2                __vector_21
+                0x0000000000002bc2                __vector_15
+                0x0000000000002bc2                __vector_36
+                0x0000000000002bc2                __vector_29
+                0x0000000000002bc2                __vector_40
+                0x0000000000002bc2                __vector_8
+                0x0000000000002bc2                __vector_26
+                0x0000000000002bc2                __vector_48
+                0x0000000000002bc2                __vector_14
+                0x0000000000002bc2                __vector_57
+                0x0000000000002bc2                __vector_53
+                0x0000000000002bc2                __vector_10
+                0x0000000000002bc2                __vector_50
+                0x0000000000002bc2                __vector_16
+                0x0000000000002bc2                __vector_18
+                0x0000000000002bc2                __vector_20
+                0x0000000000002bc2                __vector_42
+
+.text._Exit     0x0000000000002bc6        0x4
+ .text._Exit    0x0000000000002bc6        0x4 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(_Exit.o)
+                0x0000000000002bc6                _Exit
+
+.text.__dummy_fini
+                0x0000000000002bca        0x2
+ .text.__dummy_fini
+                0x0000000000002bca        0x2 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o)
+                0x0000000000002bca                _fini
+
+.text.__dummy_funcs_on_exit
+                0x0000000000002bcc        0x2
+ .text.__dummy_funcs_on_exit
+                0x0000000000002bcc        0x2 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o)
+                0x0000000000002bcc                __funcs_on_exit
+
+.text.__dummy_simulator_exit
+                0x0000000000002bce        0x2
+ .text.__dummy_simulator_exit
+                0x0000000000002bce        0x2 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(exit.o)
+                0x0000000000002bce                __simulator_exit
+
+.data._TL16C_invertData
+                0x0000000000807511      0x100 load address 0x0000000000002bd0
+ .data._TL16C_invertData
+                0x0000000000807511      0x100 build/default/production/main.o
+                0x0000000000807511                _TL16C_invertData
+
+.data._TL16C_invertAddr
+                0x0000000000807625        0x8 load address 0x0000000000002cd0
+ .data._TL16C_invertAddr
+                0x0000000000807625        0x8 build/default/production/main.o
+                0x0000000000807625                _TL16C_invertAddr
+
+.data.__malloc_heap_end
+                0x000000000080763b        0x2 load address 0x0000000000002cd8
+ .data.__malloc_heap_end
+                0x000000000080763b        0x2 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(expand_heap.o)
+                0x000000000080763b                __malloc_heap_end
+
+.data.__malloc_heap_start
+                0x000000000080763d        0x2 load address 0x0000000000002cda
+ .data.__malloc_heap_start
+                0x000000000080763d        0x2 c:/program files/microchip/xc8/v2.46/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega3\libc.a(expand_heap.o)
+                0x000000000080763d                __malloc_heap_start
diff --git a/Version 2.0/RS232_MUX.X/dist/default/production/memoryfile.xml b/Version 2.0/RS232_MUX.X/dist/default/production/memoryfile.xml
new file mode 100644
index 0000000..2f152c9
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/dist/default/production/memoryfile.xml	
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?> 
+<project>                                  
+  <executable name="dist/default/production/RS232_MUX.X.production.elf">                 
+    <memory name="program">              
+      <units>bytes</units>                 
+      <length>32768</length>                 
+      <used>11482</used>                     
+      <free>21286</free>                     
+    </memory>                              
+    <memory name="data">                 
+      <units>bytes</units>                 
+      <length>4096</length>                 
+      <used>1603</used>                     
+      <free>2493</free>                     
+    </memory>                              
+  </executable>                            
+</project>                                 
diff --git a/Version 2.0/RS232_MUX.X/frame_definitions.h b/Version 2.0/RS232_MUX.X/frame_definitions.h
new file mode 100644
index 0000000..ae4c049
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/frame_definitions.h	
@@ -0,0 +1,41 @@
+#ifndef FRAME_DEFINITIONS
+#define	FRAME_DEFINITIONS
+
+//Frame structure
+// STX ADDR(n + FRAME_ADDR) DATA CR_CHAR LF_CHAR
+
+#define STX                 0x02
+#define CR_CHAR             0x0D 
+#define LF_CHAR             0x0A
+#define FRAME_ADDR_1        '$'
+#define FRAME_ADDR_2        '$'
+
+#define MASTER_ID           'M'
+
+
+
+#define MAX232_WRITE_COMMAND        "WRCFG"
+#define MAX232_WRITE_SIZE           5
+#define MAX232_READ_RAM_COMMAND     "RDCFG0"
+#define MAX232_READ_RAM_SIZE        6
+#define MAX232_READ_ROM_COMMAND     "RDCFG1"
+#define MAX232_READ_ROM_SIZE        6
+//VCOM configuration frame
+
+// -> [STX M $$ Bxxxxx Fxxx Cx EOX]
+// -> B = Bauds (9600/19200/38400)
+// -> F = Frame data structure (exemple : F8N1)
+// -> C = COM port destination
+
+#define MAX232_B_STR_INDEX      0 //always 4
+//#define MAX232_F_STR_INDEX      10 //can be 10 or lower...
+//#define MAX232_C_STR_INDEX      14 //can 14 or lower ...
+#define MAX232_B_STR_CHAR       'B'
+#define MAX232_F_STR_CHAR       'F'
+#define MAX232_C_STR_CHAR       'C'
+
+
+#define CESAR_SHIFT         65 //Identifier will be A B C D [65 66 67 68] then we must move them to 0 1 2 3
+
+#endif	/* XC_HEADER_TEMPLATE_H */
+
diff --git a/Version 2.0/RS232_MUX.X/hardware_TL16C754C.h b/Version 2.0/RS232_MUX.X/hardware_TL16C754C.h
new file mode 100644
index 0000000..dd53205
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/hardware_TL16C754C.h	
@@ -0,0 +1,720 @@
+/* Microchip Technology Inc. and its subsidiaries.  You may use this software 
+ * and any derivatives exclusively with Microchip products. 
+ * 
+ * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS".  NO WARRANTIES, WHETHER 
+ * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED 
+ * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A 
+ * PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION 
+ * WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. 
+ *
+ * IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+ * INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+ * WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS 
+ * BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE.  TO THE 
+ * FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS 
+ * IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF 
+ * ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
+ *
+ * MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE 
+ * TERMS. 
+ */
+
+/* 
+ * File: hardware_TL16C754C.h  
+ * Author: Enzo Niro
+ * Comments: Library for MUX232 to handle TL16C754C chip
+ * Revision history: 1.9
+ */
+
+
+#ifndef RS232_HARDWARETL16_H
+#define	RS232_HARDWARETL16_H
+
+#include <xc.h> // include processor files - each processor file is guarded. 
+#include "hardware_config.h"
+
+
+////////////////////////////////////////////////
+//Bytes array
+uint8_t _TL16C_invertAddr[] = {
+    0x00, 0x04, 0x02, 0x06, 0x01, 0x05, 0x03, 0x07
+};
+
+uint8_t _TL16C_invertData[] = {
+    0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
+    0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
+    0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
+    0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
+    0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
+    0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
+    0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
+    0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
+    0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
+    0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
+    0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
+    0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
+    0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
+    0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
+    0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
+    0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
+    0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
+    0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
+    0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
+    0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
+    0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
+    0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
+    0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
+    0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
+    0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
+    0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
+    0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
+    0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
+    0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
+    0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
+    0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
+    0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff,
+};
+
+//////////////////////////////////////
+//prototypes functions
+
+
+//////////////////////////
+//High level functions
+
+void initPortA(uint8_t busSpeed, uint8_t dataBits, uint8_t parity, uint8_t stopBit);
+void initPortB(uint8_t busSpeed, uint8_t dataBits, uint8_t parity, uint8_t stopBit);
+void initPortC(uint8_t busSpeed, uint8_t dataBits, uint8_t parity, uint8_t stopBit);
+void initPortD(uint8_t busSpeed, uint8_t dataBits, uint8_t parity, uint8_t stopBit);
+
+//Send bytes throught serial port
+void txWriteA(uint8_t b);
+void txWriteB(uint8_t b);
+void txWriteC(uint8_t b);
+void txWriteD(uint8_t b);
+
+//Receive bytes from serial port
+uint8_t rxReadA(void);
+uint8_t rxReadB(void);
+uint8_t rxReadC(void);
+uint8_t rxReadD(void);
+
+//RX buffer control
+
+//available functions
+bool portA_available();
+bool portB_available();
+bool portC_available();
+bool portD_available();
+
+//parity functions
+
+bool getParitySetA();
+bool getParitySetB();
+bool getParitySetC();
+bool getParitySetD();
+
+/*
+ 
+ TODO : Implement functions...
+ 
+ */
+
+
+//////////////////////////
+//Low level functions
+
+
+void writePortA(uint8_t reg, uint8_t addr);
+void writePortB(uint8_t reg, uint8_t addr);
+void writePortC(uint8_t reg, uint8_t addr);
+void writePortD(uint8_t reg, uint8_t addr);
+uint8_t readPortA(uint8_t addr);
+uint8_t readPortB(uint8_t addr);
+uint8_t readPortC(uint8_t addr);
+uint8_t readPortD(uint8_t addr);
+
+
+void setWait(uint16_t cnt); //fast delay
+
+
+//////////////////////////////////////////////////////////
+//Values definitions (not supposed to use it directly)
+
+#define DLAB_ERF_EN_BIT     0x80
+
+
+#define LCR_REG             0x3 //Static register
+
+///////////////////////////////////////////
+// READ Registers
+
+#define RHR_REG         0x0
+#define IIR_REG         0x2
+#define LSR_REG         0x5
+#define MSR_REG         0x6
+#define FIFORDY_REG     0x7
+
+///////////////////////////////////////////
+// WRITE Registers
+
+#define THR_REG     0x0
+#define FCR_REG     0x2
+
+///////////////////////////////////////////
+// READ/WRITE Registers
+
+#define IER_REG         0x1
+#define LCR_REG         0x3
+#define MCR_REG         0x4
+#define SPR_REG         0x7
+#define DLL_REG         0x0
+#define DLH_REG         0x1
+#define EFR_REG         0x2
+#define XON1_REG        0x4
+#define XON2_REG        0x5
+#define XOFF1_REG       0x6
+#define XOFF2_REG       0x7
+#define TCR_REG         0x6
+#define TLR_REG         0x7
+
+
+
+
+///////////////////////////////////////////////////////
+//CTRL, ADDR and DATA buses
+
+//Data pins
+#define DATAWRITE(x)        PORTD.OUT = _TL16C_invertData[x]
+#define DATADIR(x)          PORTD.DIR = _TL16C_invertData[x]
+#define DATAREAD            _TL16C_invertData[PORTD.IN]
+
+//Address pins
+#define ADDRWRITE(x)        PORTE.OUT = _TL16C_invertAddr[x]
+#define ADDR_ENABLE         PORTE.DIR |= 0x07
+
+
+//Controls pins
+#define ENABLE_POW_SUPPLY_PIN   PORTF.DIR |= 0x01
+#define ENABLE_WR_RD_PINS       PORTB.DIR |= 0x30
+#define ENABLE_CS_PINS          PORTB.DIR |= 0x0F
+#define ENABLE_RESET_PIN        PORTE.DIR |= 0x08
+#define POWER_ON                PORTF.OUT |= 0x01
+#define POWER_OFF               PORTF.OUT &= ~(0x01)
+#define SETRST                  PORTE.OUT |= 0x08
+#define SETWR                   PORTB.OUT |= 0x10
+#define SETRD                   PORTB.OUT |= 0x20
+#define SETCSA                  PORTB.OUT |= 0x01
+#define SETCSB                  PORTB.OUT |= 0x02
+#define SETCSC                  PORTB.OUT |= 0x04
+#define SETCSD                  PORTB.OUT |= 0x08
+#define CLRRST                  PORTE.OUT &= ~(0x08)
+#define CLRWR                   PORTB.OUT &= ~(0x10)
+#define CLRRD                   PORTB.OUT &= ~(0x20)
+#define CLRCSA                  PORTB.OUT &= ~(0x01)
+#define CLRCSB                  PORTB.OUT &= ~(0x02)
+#define CLRCSC                  PORTB.OUT &= ~(0x04)
+#define CLRCSD                  PORTB.OUT &= ~(0x08)
+
+
+///////////////////////////////////////////////////////////////////////////////
+//Private vars
+
+bool _portA_parity_set;
+bool _portB_parity_set;
+bool _portC_parity_set;
+bool _portD_parity_set;
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+//Functions
+
+//////////////////////////////////////
+//High level functions
+
+void initPortA(uint8_t busSpeed, uint8_t dataBits, uint8_t parity, uint8_t stopBit)
+{
+    
+    uint16_t speedCfg[] = { DL_9600_BAUDS, DL_19200_BAUDS, DL_38400_BAUDS };
+    uint8_t parityCfg[] = { TL16C_NO_PARITY, TL16C_EVEN_PARITY, TL16C_ODD_PARITY };
+    uint8_t dataCfg[] = { F5BIT_MODE, F6BIT_MODE, F7BIT_MODE, F8BIT_MODE };
+    uint8_t stopCfg[] = { ONE_STOPBIT, TWO_STOPBITS };
+    
+    
+    uint8_t regVal = 0; //temp value for reading register and change it's value without clearing it
+    
+    _portA_parity_set = (parity > 0); //Parity set (even or odd) ?
+    
+    
+    //Read register first...
+    regVal = readPortA(LCR_REG);
+    //_delay_ms(1);
+    setWait(20);
+    regVal = DLAB_ERF_EN_BIT; //set LCR[7] = 1 -> enable divisor latch mode
+    writePortA(regVal, LCR_REG); //switch Mode
+    //_delay_ms(1);
+    setWait(20);
+    //Set bus speed (according of 8MHz OSC. -> DL = Fosc/(16*Fbauds*DIV)); 
+    //DIV = 1 or 4 (see TL16C datasheet p.14), we use here DIV = 1 
+    writePortA(0x00, DLH_REG); //Always 0x00 in our cfg... MAX 12MHz
+    //_delay_ms(1);
+    setWait(20);
+    //writePortA(busSpeed > 2 ? DL_38400_BAUDS : baudsValues[busSpeed], DLL_REG);
+    writePortA(speedCfg[busSpeed], DLL_REG);
+    //_delay_ms(1);
+    setWait(20);
+    
+    regVal = readPortA(LCR_REG);
+    regVal &= ~(DLAB_ERF_EN_BIT); //set LCR[7] = 0 -> disable divisor latch mode
+    
+    //regVal |= dataBits > 3 ? TL16C_WORD_8BITS : wordValues[dataBits]; //set 8bits mode
+    //regVal |= (stopBit > 1 ? TL16C_STOPBIT_TWO : stopBitValues[stopBit]) << 2; //set stop bits
+    //regVal |= (parity > 2 ? TL16C_PARITY_EVEN : parityValues[parity]) << 3; //set stop bits
+    regVal |= dataCfg[dataBits]; //set 8bits mode
+    regVal |= stopCfg[stopBit] << 2; //set stop bits
+    regVal |= parityCfg[parity] << 3; //set stop bits
+    writePortA(regVal, LCR_REG);
+    //_delay_ms(1);
+    setWait(20);
+    writePortA(0x01, FCR_REG); //enable FIFO
+    setWait(20);
+}
+
+
+void initPortB(uint8_t busSpeed, uint8_t dataBits, uint8_t parity, uint8_t stopBit)
+{
+    
+    uint16_t speedCfg[] = { DL_9600_BAUDS, DL_19200_BAUDS, DL_38400_BAUDS };
+    uint8_t parityCfg[] = { TL16C_NO_PARITY, TL16C_EVEN_PARITY, TL16C_ODD_PARITY };
+    uint8_t dataCfg[] = { F5BIT_MODE, F6BIT_MODE, F7BIT_MODE, F8BIT_MODE };
+    uint8_t stopCfg[] = { ONE_STOPBIT, TWO_STOPBITS };
+    
+    
+    uint8_t regVal = 0; //temp value for reading register and change it's value without clearing it
+    
+    _portB_parity_set = (parity > 0); //Parity set (even or odd) ?
+    
+    
+    //Read register first...
+    regVal = readPortB(LCR_REG);
+    //_delay_ms(1);
+    setWait(20);
+    regVal = DLAB_ERF_EN_BIT; //set LCR[7] = 1 -> enable divisor latch mode
+    writePortB(regVal, LCR_REG); //switch Mode
+    //_delay_ms(1);
+    setWait(20);
+    //Set bus speed (according of 8MHz OSC. -> DL = Fosc/(16*Fbauds*DIV)); 
+    //DIV = 1 or 4 (see TL16C datasheet p.14), we use here DIV = 1 
+    writePortB(0x00, DLH_REG); //Always 0x00 in our cfg... MAX 12MHz
+    //_delay_ms(1);
+    setWait(20);
+    //writePortA(busSpeed > 2 ? DL_38400_BAUDS : baudsValues[busSpeed], DLL_REG);
+    writePortB(speedCfg[busSpeed], DLL_REG);
+    //_delay_ms(1);
+    setWait(20);
+    
+    regVal = readPortB(LCR_REG);
+    regVal &= ~(DLAB_ERF_EN_BIT); //set LCR[7] = 0 -> disable divisor latch mode
+    
+    //regVal |= dataBits > 3 ? TL16C_WORD_8BITS : wordValues[dataBits]; //set 8bits mode
+    //regVal |= (stopBit > 1 ? TL16C_STOPBIT_TWO : stopBitValues[stopBit]) << 2; //set stop bits
+    //regVal |= (parity > 2 ? TL16C_PARITY_EVEN : parityValues[parity]) << 3; //set stop bits
+    regVal |= dataCfg[dataBits]; //set 8bits mode
+    regVal |= stopCfg[stopBit] << 2; //set stop bits
+    regVal |= parityCfg[parity] << 3; //set stop bits
+    writePortB(regVal, LCR_REG);
+    //_delay_ms(1);
+    setWait(20);
+    writePortB(0x01, FCR_REG); //enable FIFO
+    setWait(20);
+}
+
+
+void initPortC(uint8_t busSpeed, uint8_t dataBits, uint8_t parity, uint8_t stopBit)
+{
+    
+    uint16_t speedCfg[] = { DL_9600_BAUDS, DL_19200_BAUDS, DL_38400_BAUDS };
+    uint8_t parityCfg[] = { TL16C_NO_PARITY, TL16C_EVEN_PARITY, TL16C_ODD_PARITY };
+    uint8_t dataCfg[] = { F5BIT_MODE, F6BIT_MODE, F7BIT_MODE, F8BIT_MODE };
+    uint8_t stopCfg[] = { ONE_STOPBIT, TWO_STOPBITS };
+    
+    uint8_t regVal = 0; //temp value for reading register and change it's value without clearing it
+    
+    _portC_parity_set = (parity > 0); //Parity set (even or odd) ?
+    
+    
+    //Read register first...
+    regVal = readPortC(LCR_REG);
+    //_delay_ms(1);
+    setWait(20);
+    regVal = DLAB_ERF_EN_BIT; //set LCR[7] = 1 -> enable divisor latch mode
+    writePortC(regVal, LCR_REG); //switch Mode
+    //_delay_ms(1);
+    setWait(20);
+    //Set bus speed (according of 8MHz OSC. -> DL = Fosc/(16*Fbauds*DIV)); 
+    //DIV = 1 or 4 (see TL16C datasheet p.14), we use here DIV = 1 
+    writePortC(0x00, DLH_REG); //Always 0x00 in our cfg... MAX 12MHz
+    //_delay_ms(1);
+    setWait(20);
+    //writePortA(busSpeed > 2 ? DL_38400_BAUDS : baudsValues[busSpeed], DLL_REG);
+    writePortC(speedCfg[busSpeed], DLL_REG);
+    //_delay_ms(1);
+    setWait(20);
+    
+    regVal = readPortC(LCR_REG);
+    regVal &= ~(DLAB_ERF_EN_BIT); //set LCR[7] = 0 -> disable divisor latch mode
+    
+    //regVal |= dataBits > 3 ? TL16C_WORD_8BITS : wordValues[dataBits]; //set 8bits mode
+    //regVal |= (stopBit > 1 ? TL16C_STOPBIT_TWO : stopBitValues[stopBit]) << 2; //set stop bits
+    //regVal |= (parity > 2 ? TL16C_PARITY_EVEN : parityValues[parity]) << 3; //set stop bits
+    regVal |= dataCfg[dataBits]; //set 8bits mode
+    regVal |= stopCfg[stopBit] << 2; //set stop bits
+    regVal |= parityCfg[parity] << 3; //set stop bits
+    writePortC(regVal, LCR_REG);
+    //_delay_ms(1);
+    setWait(20);
+    writePortC(0x01, FCR_REG); //enable FIFO
+    setWait(20);
+}
+
+
+
+void initPortD(uint8_t busSpeed, uint8_t dataBits, uint8_t parity, uint8_t stopBit)
+{
+    
+    uint16_t speedCfg[] = { DL_9600_BAUDS, DL_19200_BAUDS, DL_38400_BAUDS };
+    uint8_t parityCfg[] = { TL16C_NO_PARITY, TL16C_EVEN_PARITY, TL16C_ODD_PARITY };
+    uint8_t dataCfg[] = { F5BIT_MODE, F6BIT_MODE, F7BIT_MODE, F8BIT_MODE };
+    uint8_t stopCfg[] = { ONE_STOPBIT, TWO_STOPBITS };
+    
+    uint8_t regVal = 0; //temp value for reading register and change it's value without clearing it
+    
+    _portD_parity_set = (parity > 0); //Parity set (even or odd) ?
+    
+    
+    //Read register first...
+    regVal = readPortD(LCR_REG);
+    //_delay_ms(1);
+    setWait(20);
+    regVal = DLAB_ERF_EN_BIT; //set LCR[7] = 1 -> enable divisor latch mode
+    writePortD(regVal, LCR_REG); //switch Mode (and clear default cfg...)
+    //_delay_ms(1);
+    setWait(20);
+    //Set bus speed (according of 8MHz OSC. -> DL = Fosc/(16*Fbauds*DIV)); 
+    //DIV = 1 or 4 (see TL16C datasheet p.14), we use here DIV = 1 
+    writePortD(0x00, DLH_REG); //Always 0x00 in our cfg... MAX 12MHz
+    //_delay_ms(1);
+    setWait(20);
+    //writePortA(busSpeed > 2 ? DL_38400_BAUDS : baudsValues[busSpeed], DLL_REG);
+    writePortD(speedCfg[busSpeed], DLL_REG);
+    //_delay_ms(1);
+    setWait(20);
+    
+    regVal = readPortD(LCR_REG);
+    regVal &= ~(DLAB_ERF_EN_BIT); //set LCR[7] = 0 -> disable divisor latch mode
+    
+    //regVal |= dataBits > 3 ? TL16C_WORD_8BITS : wordValues[dataBits]; //set 8bits mode
+    //regVal |= (stopBit > 1 ? TL16C_STOPBIT_TWO : stopBitValues[stopBit]) << 2; //set stop bits
+    //regVal |= (parity > 2 ? TL16C_PARITY_EVEN : parityValues[parity]) << 3; //set stop bits
+    regVal |= dataCfg[dataBits]; //set 8bits mode
+    regVal |= stopCfg[stopBit] << 2; //set stop bits
+    regVal |= parityCfg[parity] << 3; //set stop bits
+    writePortD(regVal, LCR_REG);
+    //_delay_ms(1);
+    setWait(20);
+    writePortD(0x01, FCR_REG); //enable FIFO
+    setWait(20);
+}
+
+
+
+//////////////////////////////////////////////
+//UART send/reiceive
+
+void txWriteA(uint8_t b)
+{
+    writePortA(b, THR_REG); //write to Transmit Holding (that goes into TX FIFO buffer)
+}
+
+
+void txWriteB(uint8_t b)
+{
+    writePortB(b, THR_REG); //write to Transmit Holding (that goes into TX FIFO buffer)
+}
+
+
+void txWriteC(uint8_t b)
+{
+    writePortC(b, THR_REG); //write to Transmit Holding (that goes into TX FIFO buffer)
+}
+
+
+void txWriteD(uint8_t b)
+{
+    writePortD(b, THR_REG); //write to Transmit Holding (that goes into TX FIFO buffer)
+}
+
+
+
+uint8_t rxReadA(void)
+{
+    return readPortA(RHR_REG); //read Receive Holding (from RX FIFO buffer)
+}
+
+
+uint8_t rxReadB(void)
+{
+    return readPortB(RHR_REG); //read Receive Holding (from RX FIFO buffer)
+}
+
+
+uint8_t rxReadC(void)
+{
+    return readPortC(RHR_REG); //read Receive Holding (from RX FIFO buffer)
+}
+
+
+uint8_t rxReadD(void)
+{
+    return readPortD(RHR_REG); //read Receive Holding (from RX FIFO buffer)
+}
+
+
+////////////////////////////////////////
+//RX buf state functions
+
+bool portA_available()
+{
+    return (readPortA(LSR_REG) & 0x01); //check if RX FIFO buffer has at least one byte available
+}
+
+
+bool portB_available()
+{
+    return (readPortB(LSR_REG) & 0x01); //check if RX FIFO buffer has at least one byte available
+}
+
+
+bool portC_available()
+{
+    return (readPortC(LSR_REG) & 0x01); //check if RX FIFO buffer has at least one byte available
+}
+
+
+bool portD_available()
+{
+    return (readPortD(LSR_REG) & 0x01); //check if RX FIFO buffer has at least one byte available
+}
+
+
+///////////////////////////////////////////////////////////////////////
+//Parity configuration status
+
+//get status if port has been configured with a parity into the frame
+bool getParitySetA()
+{
+    return _portA_parity_set;
+}
+
+bool getParitySetB()
+{
+    return _portB_parity_set;
+}
+
+bool getParitySetC()
+{
+    return _portC_parity_set;
+}
+
+bool getParitySetD()
+{
+    return _portD_parity_set;
+}
+
+
+
+//Get parity/stopbit error status when frame received on port
+
+bool getErrorStatusA()
+{
+    return ((readPortA(LSR_REG) & 0x80) == 0x80);
+}
+
+bool getErrorStatusB()
+{
+    return ((readPortB(LSR_REG) & 0x80) == 0x80);
+}
+
+bool getErrorStatusC()
+{
+    return ((readPortC(LSR_REG) & 0x80) == 0x80);
+}
+
+bool getErrorStatusD()
+{
+    return ((readPortD(LSR_REG) & 0x80) == 0x80);
+}
+
+
+///////////////////////////////////////////////////////
+//write functions
+
+
+
+void writePortA(uint8_t reg, uint8_t addr)
+{
+    DATADIR(0xFF); //set I/O on write mode
+    ADDRWRITE(addr); //search uartn register
+    DATAWRITE(reg); //write data
+    CLRCSA; //enable uartA call
+    setWait(3);
+    CLRWR; //enable write mode
+    setWait(3);
+    SETWR; //disable write mode
+    setWait(3);
+    SETCSA; //disable uartA call
+    DATADIR(0x00); //set input mode (to reduce power consumption)
+}
+
+void writePortB(uint8_t reg, uint8_t addr)
+{
+    DATADIR(0xFF); //set I/O on write mode
+    ADDRWRITE(addr); //search uartn register
+    DATAWRITE(reg); //write data
+    CLRCSB; //enable uartA call
+    setWait(3);
+    CLRWR; //enable write mode
+    setWait(3);
+    SETWR; //disable write mode
+    setWait(3);
+    SETCSB; //disable uartA call
+    DATADIR(0x00); //set input mode (to reduce power consumption)
+}
+
+void writePortC(uint8_t reg, uint8_t addr)
+{
+    DATADIR(0xFF); //set I/O on write mode
+    ADDRWRITE(addr); //search uartn register
+    DATAWRITE(reg); //write data
+    CLRCSC; //enable uartA call
+    setWait(3);
+    CLRWR; //enable write mode
+    setWait(3);
+    SETWR; //disable write mode
+    setWait(3);
+    SETCSC; //disable uartA call
+    DATADIR(0x00); //set input mode (to reduce power consumption)
+}
+
+void writePortD(uint8_t reg, uint8_t addr)
+{
+    DATADIR(0xFF); //set I/O on write mode
+    ADDRWRITE(addr); //search uartn register
+    DATAWRITE(reg); //write data
+    CLRCSD; //enable uartA call
+    setWait(3);
+    CLRWR; //enable write mode
+    setWait(3);
+    SETWR; //disable write mode
+    setWait(3);
+    SETCSD; //disable uartA call
+    DATADIR(0x00); //set input mode (to reduce power consumption)
+}
+
+
+///////////////////////////////////////////////////////
+//read functions
+
+
+uint8_t readPortA(uint8_t addr)
+{
+    uint8_t result;
+    DATADIR(0x00); //set I/O on read mode
+    ADDRWRITE(addr); //search uartn register
+    CLRCSA; //enable uartA call
+    setWait(3);
+    CLRRD; //enable read mode
+    setWait(3);
+    result = DATAREAD; //set I/O on read mode
+    setWait(3);
+    SETRD; //disable read mode
+    setWait(3);
+    SETCSA; //hang up uartA call
+    return result;
+}
+
+uint8_t readPortB(uint8_t addr)
+{
+    uint8_t result;
+    DATADIR(0x00); //set I/O on read mode
+    ADDRWRITE(addr); //search uartn register
+    CLRCSB; //enable uartB call
+    setWait(3);
+    CLRRD; //enable read mode
+    setWait(3);
+    result = DATAREAD; //set I/O on read mode
+    setWait(3);
+    SETRD; //disable read mode
+    setWait(3);
+    SETCSB; //hang up uartB call
+    return result;
+}
+
+uint8_t readPortC(uint8_t addr)
+{
+    uint8_t result;
+    DATADIR(0x00); //set I/O on read mode
+    ADDRWRITE(addr); //search uartn register
+    CLRCSC; //enable uartC call
+    setWait(3);
+    CLRRD; //enable read mode
+    setWait(3);
+    result = DATAREAD; //set I/O on read mode
+    setWait(3);
+    SETRD; //disable read mode
+    setWait(3);
+    SETCSC; //hang up uartC call
+    return result;
+}
+
+uint8_t readPortD(uint8_t addr)
+{
+    uint8_t result;
+    DATADIR(0x00); //set I/O on read mode
+    ADDRWRITE(addr); //search uartn register
+    CLRCSD; //enable uartD call
+    setWait(3);
+    CLRRD; //enable read mode
+    setWait(3);
+    result = DATAREAD; //set I/O on read mode
+    setWait(3);
+    SETRD; //disable read mode
+    setWait(3);
+    SETCSD; //hang up uartD call
+    return result;
+}
+
+
+
+
+
+///////////////////////////////////////////
+//Miscellaneous functions
+
+void setWait(uint16_t cnt)
+{
+    uint16_t k = 0;
+    while(k < cnt)
+    {
+        asm("nop");
+        k++;
+    }
+}
+
+
+
+
+
+#endif	/* XC_HEADER_TEMPLATE_H */
+
diff --git a/Version 2.0/RS232_MUX.X/hardware_config.h b/Version 2.0/RS232_MUX.X/hardware_config.h
new file mode 100644
index 0000000..c8b8f64
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/hardware_config.h	
@@ -0,0 +1,285 @@
+/* 
+ * File: hardware_config.h
+ * Author: Enzo Niro
+ * Comments: Board configuration library for MUX232
+ * Revision history: 1.6
+ */
+
+// This is a guard condition so that contents of this file are not included
+// more than once.  
+#ifndef HARDWARE_CFG_H
+#define	HARDWARE_CFG_H
+
+#include <xc.h> // include processor files - each processor file is guarded.  
+#include "parameters.h"
+#include <avr/io.h>
+
+FUSES = {
+	.WDTCFG = 0x0A, // WDTCFG {PERIOD=4KCLK, WINDOW=OFF}
+	.BODCFG = 0x00, // BODCFG {SLEEP=DISABLE, ACTIVE=DISABLE, SAMPFREQ=128Hz, LVL=BODLEVEL0}
+	.OSCCFG = 0x00, // OSCCFG {CLKSEL=OSCHF}
+	.SYSCFG0 = 0xC0, // SYSCFG0 {EESAVE=CLEAR, RSTPINCFG=GPIO, CRCSEL=CRC16, CRCSRC=NOCRC}
+	.SYSCFG1 = 0x00, // SYSCFG1 {SUT=0MS}
+	.CODESIZE = 0x00, // CODESIZE {CODESIZE=User range:  0x0 - 0xFF}
+	.BOOTSIZE = 0x00, // BOOTSIZE {BOOTSIZE=User range:  0x0 - 0xFF}
+};
+
+LOCKBITS = 0x5CC5C55C; // {KEY=NOLOCK}
+
+
+
+typedef struct eepromPort eepromPort;
+struct eepromPort
+{
+    uint8_t regA; // register A for speed and parity configuration
+    uint8_t regB; // register B for Data structure and stop bits
+};
+
+typedef struct cfgPort cfgPort;
+struct cfgPort
+{
+    uint16_t baud; // Port speed
+    uint8_t parity; // Parity for frame structure
+    uint8_t dataByte; // Data byte structure
+    uint8_t stopBit; // Stop bits for frame structure
+};
+
+//EEPROM data structure (for reading registers)
+eepromPort eepromVCOM[4];
+
+
+
+
+
+//Values registers
+
+#define F5BIT_MODE                  0x00
+#define F6BIT_MODE                  0x01
+#define F7BIT_MODE                  0x02
+#define F8BIT_MODE                  0x03
+
+#define AVR32_NO_PARITY             0x00
+#define AVR32_ODD_PARITY            0x01        //0x03
+#define AVR32_EVEN_PARITY           0x03        //0x02
+#define TL16C_NO_PARITY             0x00
+#define TL16C_ODD_PARITY            0x01        //0x03
+#define TL16C_EVEN_PARITY           0x03        //0x02
+
+
+#define ONE_STOPBIT                 0x00
+#define TWO_STOPBITS                0x01
+
+
+
+
+
+
+///////////////////////////
+//Divisor Latch values
+
+//According to 8MHz
+#ifdef TL16C_8MHZ_CLK
+
+#define DL_9600_BAUDS    52
+#define DL_19200_BAUDS   26
+#define DL_38400_BAUDS   13
+
+#else
+#ifdef TL16C_16MHZ_CLK
+
+#define DL_9600_BAUDS    104
+#define DL_19200_BAUDS   52
+#define DL_38400_BAUDS   26
+
+#else
+#ifdef TL16C_24MHZ_CLK
+
+#define DL_9600_BAUDS    156
+#define DL_19200_BAUDS   78
+#define DL_38400_BAUDS   39
+
+#else
+#error "Please choose a configuration for baud speed"
+#define DL_9600_BAUDS    0x0
+#define DL_19200_BAUDS   0x0
+#define DL_38400_BAUDS   0x0
+#define CPU_FREQ_SET     0x0
+
+#endif //24MHZ
+#endif //16MHZ
+#endif //8MHZ
+
+
+
+//EEPROM addresses
+
+enum ADDR_BAUDS
+{
+    ADDR_BAUD_9600 = 0,
+    ADDR_BAUD_19200,
+    ADDR_BAUD_38400,
+};
+
+enum ADDR_PARITY
+{
+    ADDR_PARITY_NONE = 0,
+    ADDR_PARITY_EVEN,
+    ADDR_PARITY_ODD,
+};
+
+enum ADDR_DATA
+{
+    ADDR_DATA_F5 = 0,
+    ADDR_DATA_F6,
+    ADDR_DATA_F7,
+    ADDR_DATA_F8,
+};
+
+enum ADDR_STOPBIT
+{
+    ADDR_STOP_ONE = 0,
+    ADDR_STOP_TWO,
+};
+
+#define DEFAULT_ADDR_BAUD               ADDR_BAUD_9600
+#define DEFAULT_ADDR_PARITY             ADDR_PARITY_NONE
+#define DEFAULT_ADDR_DATA               ADDR_DATA_F8
+#define DEFAULT_ADDR_STOP               ADDR_STOP_ONE
+#define DEFAULT_VALUE_DEBUG_LED         0x1F
+
+#define EEPROM_DEBUG_LED_ADDR           0x8
+
+
+
+
+
+
+
+
+//////////////////////////////////////////////////
+//EEPROM/CFG function
+void getEEPROMCfg(void);
+void setEEPROMCfg(void);
+void writeConfiguration(cfgPort *cfg, uint8_t bauds, uint8_t parity, uint8_t dataMode, uint8_t stopBit, uint8_t n);
+void readConfiguration(cfgPort *cfg, uint8_t n);
+//////////////////////////////////////////////////
+
+
+
+
+
+
+
+
+
+
+/**
+ <p><b>void getEEPROMCfg(void)</b></p>
+ <p><b>Read eeprom values stored for all serial ports</b></p>
+ */
+void getEEPROMCfg(void)
+{
+    uint8_t i = 0, j = 0;
+    while(j < 8)
+    {
+        //Read at first bytes
+        eepromVCOM[i].regA = eeprom_read_byte(j);
+        eeprom_busy_wait();
+        eepromVCOM[i].regB = eeprom_read_byte(j+1);
+        eeprom_busy_wait();
+        //Then check if writing default values is necessary
+        if(eepromVCOM[i].regA == 0xFF)
+        {
+            eepromVCOM[i].regA = (DEFAULT_ADDR_BAUD << 4) | (DEFAULT_ADDR_PARITY);
+            eeprom_write_byte(j, (DEFAULT_ADDR_BAUD << 4) | (DEFAULT_ADDR_PARITY));
+        }
+        if(eepromVCOM[i].regB == 0xFF)
+        {
+            eepromVCOM[i].regB = (DEFAULT_ADDR_DATA << 4) | (DEFAULT_ADDR_STOP);
+            eeprom_write_byte(j+1, (DEFAULT_ADDR_DATA << 4) | (DEFAULT_ADDR_STOP));
+        }
+        i++;
+        j+=2;
+    }
+}
+
+
+/**
+ <p><b>void getEEPROMCfg(void)</b></p>
+ <p><b>Write eeprom values stored for all serial ports</b></p>
+ */
+void setEEPROMCfg(void)
+{
+    uint8_t i = 0, j = 0;
+    //Write EEPROM cfg
+    while(j < 8)
+    {
+        //Read at first bytes
+        eeprom_write_byte(j, eepromVCOM[i].regA);
+        eeprom_busy_wait();
+        eeprom_write_byte(j+1, eepromVCOM[i].regB);
+        eeprom_busy_wait();
+        i++; //next cfg
+        j+=2; //next address
+    }
+    
+}
+
+
+
+
+/**
+ <p><b>void readConfiguration(cfgPort *cfg, uint8_t n)</b></p>
+ <p><b>Get configuration with eeprom read values</b></p>
+ <p><b>             cfgPort -> Serial port configuration</b></p>
+ <p><b>             n -> Serial port to configure</b></p>
+ */
+void readConfiguration(cfgPort *cfg, uint8_t n)
+{
+    //BAUD value register for these frequencies in this order :
+    //2400, 4800, 9600, 19200, 38400, 57600, 115200
+    /*uint16_t speedCfg[] = { DL_9600_BAUDS, DL_19200_BAUDS, DL_38400_BAUDS };
+    uint8_t parityCfg[] = { TL16C_NO_PARITY, TL16C_EVEN_PARITY, TL16C_ODD_PARITY };
+    uint8_t dataCfg[] = { F5BIT_MODE, F6BIT_MODE, F7BIT_MODE, F8BIT_MODE };
+    uint8_t stopCfg[] = { ONE_STOPBIT, TWO_STOPBITS };*/
+    
+    cfg->baud = (eepromVCOM[n].regA >> 4);
+    cfg->parity = (eepromVCOM[n].regA & 0xF);
+    cfg->dataByte = (eepromVCOM[n].regB >> 4);
+    cfg->stopBit = (eepromVCOM[n].regB & 0xF);
+}
+
+
+
+
+
+/**
+ <p><b>void readConfiguration(cfgPort *cfg, uint8_t n)</b></p>
+ <p><b>Get configuration with eeprom read values</b></p>
+ <p><b>             cfgPort -> Serial port configuration</b></p>
+ <p><b>             bauds -> Set bauds speed (9600 / 19200 / 38400)</b></p>
+ <p><b>             parity -> Set parity Mode (NO_PARITY / EVEN_PARITY / ODD_PARITY)</b></p>
+ <p><b>             dataMode -> Set number of data bits into frame (5/6/7/8)</b></p>
+ <p><b>             stopBit -> Set number of stop bits (1/2)</b></p>
+ */
+void writeConfiguration(cfgPort *cfg, uint8_t bauds, uint8_t parity, uint8_t dataMode, uint8_t stopBit, uint8_t n)
+{
+    //BAUD value register for these frequencies in this order :
+    //2400, 4800, 9600, 19200, 38400, 57600, 115200
+    
+    
+    //Set CFG
+    cfg->baud = bauds > 2 ? 2 : bauds;
+    cfg->parity = parity > 2 ? 2 : parity;
+    cfg->dataByte = dataMode > 3 ? 3 : dataMode;
+    cfg->stopBit = stopBit > 1 ? 1 : stopBit;
+    
+    //Prepare buffer into RAM
+    eepromVCOM[n].regA = (cfg->baud << 4) | cfg->parity;
+    eepromVCOM[n].regB = (cfg->dataByte << 4) | cfg->stopBit;
+    
+}
+
+
+#endif	/* XC_HEADER_TEMPLATE_H */
+
diff --git a/Version 2.0/RS232_MUX.X/hardware_timer.h b/Version 2.0/RS232_MUX.X/hardware_timer.h
new file mode 100644
index 0000000..f3a54cc
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/hardware_timer.h	
@@ -0,0 +1,108 @@
+/* Microchip Technology Inc. and its subsidiaries.  You may use this software 
+ * and any derivatives exclusively with Microchip products. 
+ * 
+ * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS".  NO WARRANTIES, WHETHER 
+ * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED 
+ * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A 
+ * PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION 
+ * WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. 
+ *
+ * IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+ * INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+ * WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS 
+ * BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE.  TO THE 
+ * FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS 
+ * IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF 
+ * ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
+ *
+ * MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE 
+ * TERMS. 
+ */
+
+/* 
+ * File: hardware_timer.h
+ * Author: Enzo Niro 
+ * Comments: Library made for RS232 MUX board
+ * Revision history: 1.2
+ */
+
+// This is a guard condition so that contents of this file are not included
+// more than once.  
+#ifndef RS232_HARDWARETIMER_H
+#define	RS232_HARDWARETIMER_H
+
+#include <xc.h> // include processor files - each processor file is guarded.  
+
+
+#define CLK_DIV1            0x00
+#define CLK_DIV2            0x01
+#define CLK_DIV4            0x02
+#define CLK_DIV8            0x03
+#define CLK_DIV16           0x04
+#define CLK_DIV64           0x05
+#define CLK_DIV256          0x06
+#define CLK_DIV1024         0x07
+
+#define SEL_CLK             CLK_DIV2
+
+#ifdef	__cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+    
+    //////////////////////////////////////////////
+    //prototypes
+    void timerInterruptInit(uint16_t maxCounts);
+    bool getTimerFlag(void);
+    void clearTimerFlag(void);
+    
+    //////////////////////////////////////////////
+    
+    
+    
+    //uint32_t _timerA0Cnt = 0;
+    bool _timerFlag = false;
+    
+    
+    //Hardware timer init
+    void timerInit(uint16_t maxCounts)
+    {
+        //Init Timer interrupt type A
+        //To avoid fast interruption that slow main program, divide clock by 2 !
+        //We use here timer interrupt 0 in normal mode
+        
+        //At first, define the timer period
+        TCA0.SINGLE.PERH = maxCounts >> 8;
+        TCA0.SINGLE.PERL = maxCounts & 0xFF;
+        TCA0.SINGLE.CTRLA = (SEL_CLK << 1) | 1; //Enable and CLK_DIV2
+        TCA0.SINGLE.CTRLB = 0x00; //Set Normal operation for timer, no autolock, no waveform output
+        TCA0.SINGLE.EVCTRL = 0x00; //No specific action and counter event input
+        //TCA0.SINGLE.INTCTRL = 0x01; //Set interrupt on timer overflow
+    }
+    
+    //Get flag status
+    bool getTimerFlag(void)
+    {
+        return (TCA0.SINGLE.INTFLAGS & 0x01); //get flag
+    }
+    
+    //Clear the flag
+    void clearTimerFlag(void)
+    {
+        TCA0.SINGLE.INTFLAGS = 1; //Clear by writing one on that register
+    }
+    
+    //Timer interrupt callback
+    /*ISR(TCA0_OVF_vect)
+    {
+        _timerFlag = true;
+        TCA0.SINGLE.INTFLAGS = 1; //Must clear the flag by writing 1 on this bit (datasheet p.232)
+    }*/
+    
+
+#ifdef	__cplusplus
+}
+#endif /* __cplusplus */
+
+#endif	/* XC_HEADER_TEMPLATE_H */
+
diff --git a/Version 2.0/RS232_MUX.X/hardware_uart.h b/Version 2.0/RS232_MUX.X/hardware_uart.h
new file mode 100644
index 0000000..e7968fc
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/hardware_uart.h	
@@ -0,0 +1,586 @@
+/* Microchip Technology Inc. and its subsidiaries.  You may use this software 
+ * and any derivatives exclusively with Microchip products. 
+ * 
+ * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS".  NO WARRANTIES, WHETHER 
+ * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED 
+ * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A 
+ * PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION 
+ * WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. 
+ *
+ * IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+ * INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+ * WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS 
+ * BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE.  TO THE 
+ * FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS 
+ * IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF 
+ * ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
+ *
+ * MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE 
+ * TERMS. 
+ */
+
+/* 
+ * File:   hardware_uart.h
+ * Author: Enzo Niro
+ * Comments: Library made for RS232 MUX board
+ * Revision history: V1.5 
+ */
+
+
+/*
+ TODO list:
+ * Put TXDATAH in write when F9BIT mode enabled ?
+ 
+ 
+ 
+ */
+
+
+
+#ifndef RS232_HARDWAREUART_H
+#define	RS232_HARDWAREUART_H
+
+#include <xc.h> // include processor files - each processor file is guarded. 
+#include <stdbool.h>
+#include <avr/interrupt.h>
+#include <avr/eeprom.h>
+
+///////////////////////////////////////////////////////////////
+//Definitions
+
+
+
+
+
+//According to AVR32DA48 pins
+
+#define USART0_PORT_PINS    0x01
+#define USART0_DEBUG_LED    0x0C
+
+#define USART1_PORT_PINS    0x01
+#define USART1_DEBUG_LED    0x0C
+
+#define USART2_PORT_PINS    0x01
+#define USART2_DEBUG_LED    0x0C
+
+#define USART3_PORT_PINS    0x01
+#define USART3_DEBUG_LED    0x0C
+
+#define USART4_PORT_PINS    0x01
+#define USART4_DEBUG_LED    0x0C
+
+//Port index for debug leds
+#define USART0_INDEX    0
+#define USART1_INDEX    1
+#define USART2_INDEX    2
+#define USART3_INDEX    3
+#define USART4_INDEX    4
+
+
+#ifdef	__cplusplus
+extern "C" {
+#endif /* __cplusplus */
+    
+    
+    
+    
+//////////////////////////////////////////////
+//prototypes
+
+    
+
+
+void initPort0(uint32_t bauds, uint8_t chSize, bool stopBit, uint8_t parity);
+void txWrite0(uint8_t b); //write one byte
+uint8_t rxRead0(void); //Read one byte from buffer
+uint8_t portAvailable0(void);
+
+void initPort1(uint32_t bauds, uint8_t chSize, bool stopBit, uint8_t parity);
+void txWrite1(uint8_t b); //write one byte
+uint8_t rxRead1(void); //Read one byte from buffer
+uint8_t portAvailable1(void);
+
+void initPort2(uint32_t bauds, uint8_t chSize, bool stopBit, uint8_t parity);
+void txWrite2(uint8_t b); //write one byte
+uint8_t rxRead2(void); //Read one byte from buffer
+uint8_t portAvailable2(void);
+
+void initPort3(uint32_t bauds, uint8_t chSize, bool stopBit, uint8_t parity);
+void txWrite3(uint8_t b); //write one byte
+uint8_t rxRead3(void); //Read one byte from buffer
+uint8_t portAvailable3(void);
+
+void initPort4(uint32_t bauds, uint8_t chSize, bool stopBit, uint8_t parity);
+void txWrite4(uint8_t b); //write one byte
+uint8_t rxRead4(void); //Read one byte from buffer
+uint8_t portAvailable4(void);
+
+    
+//////////////////////////////////////////////
+    
+    
+    
+///////////////////////////////////////////////////////////////
+//Global Vars
+
+typedef struct RXREAD RXREAD;
+struct RXREAD
+{
+    uint8_t _rxReicv; // temp byte
+    uint8_t _rxBuf[256]; //back end serial buffer
+    uint8_t bytesAvailable; //show if bytes available...
+    uint8_t _tempBytes;
+};
+
+
+
+
+
+//RX structure for reading buffers from serial ports
+volatile RXREAD _RX0, _RX1, _RX2, _RX3, _RX4;
+
+
+
+///////////////////////////////////////////////////////////////
+//Functions
+
+
+/////////////////////////////////////////////////
+//For Master port (USART0)
+
+/**
+ <p><b>void initPort0(uint32_t bauds)</b></p>
+ <p><b>Init MASTER PORT</b></p>
+ <p><b>Parameters : uint8_t bauds -> Set bauds speed</b></p>
+ <p><b>             bool enableDebug -> Enable debug leds</b></p>
+ <p><b>             uint8_t chSize -> Data bits</b></p>
+ <p><b>             uint8_t stopBit -> How many stop bits</b></p>
+ <p><b>             uint8_t parity -> Parity type (ODD, EVEN, DISABLED)</b></p>
+ <p><b>Don't forget to call sei() function after called all initPortx() functions !</p></b>
+ */
+void initPort0(uint32_t bauds, uint8_t chSize, bool stopBit, uint8_t parity)
+{
+    /*if(enableDebug)
+        PORTA.DIR = USART0_PORT_PINS | USART0_DEBUG_LED; //Set TX/RX IO and RX/TX debug leds for USART0
+    else
+        PORTA.DIR = USART0_PORT_PINS; //Set TX/RX IO
+    */
+    USART0.BAUD = bauds; 
+    USART0.CTRLA = 0x80; //enable RX complete interrupt
+    USART0.CTRLB = 0xD0; //Enable TX and RX sending
+    USART0.CTRLC = (parity << 4) | (stopBit << 3) | chSize;
+}
+
+
+/**
+ <p><b>void txWrite0(uint8_t b)</b></p>
+ <p><b>Write a byte throught MASTER PORT</b></p>
+ <p><b>Parameters : uint8_t b -> Byte to write</b></p>
+ */
+
+void txWrite0(uint8_t b) //write one byte
+{
+    while((USART0.STATUS & 0x20) != 0x20);
+    USART0.TXDATAL = b;
+    while((USART0.STATUS & 0x40) != 0x40); //check when we transmit all the bits
+    USART0.STATUS = 0x40; //clear the flag for next transmission
+}
+
+
+/**
+ <p><b>uint8_t rxRead0(void)</b></p>
+ <p><b>Read a byte from MASTER PORT</b></p>
+ <p><b>Return : uint8_t result -> Byte to read</b></p>
+ */
+uint8_t rxRead0(void) //Read one byte from buffer
+{    
+    if(_RX0.bytesAvailable > 0)
+        _RX0.bytesAvailable--;
+    
+    return _RX0._rxBuf[_RX0.bytesAvailable];
+    //_hasRead[USART0_INDEX] = true;
+    //return USART0.RXDATAL;
+}
+
+
+/**
+ <p><b>uint16_t portAvailable0(void)</b></p>
+ <p><b>Get number of bytes available into the MASTER PORT's buffer</b></p>
+ <p><b>Return : uint16_t bytesAvailable -> Number of bytes</b></p>
+ */
+uint8_t portAvailable0(void)
+{
+    return _RX0.bytesAvailable;
+    //return ((USART0.RXDATAH & 0x80) >> 7);
+}
+
+
+ISR(USART0_RXC_vect)
+{
+    //USART0.CTRLA = 0x80;
+    //_RX0._rxReicv = USART0.RXDATAL; //read buffer
+    _RX0._rxBuf[_RX0.bytesAvailable] = USART0.RXDATAL; //Add one byte to the buffer
+    //_RX0._rxReicv = 0x00; //clear value
+    if(_RX0.bytesAvailable < 255) //ensure not to overflow buffer size...
+        _RX0.bytesAvailable++; //a new byte is available into the buffer
+        //PORTA.OUT ^= 0x3; //debug led
+}
+
+/*ISR(USART0_DRE_vect)
+{
+    _RX0.bytesAvailable = _RX0._tempBytes;
+    USART0.CTRLA = 0x80; //Clear DRE interrupt
+    _hasRead[USART0_INDEX] = true;
+}*/
+
+
+
+
+/////////////////////////////////////////////////
+//For Virtual port 1 (USART3)
+
+
+/**
+ <p><b>void initPort1(uint32_t bauds)</b></p>
+ <p><b>Init MASTER PORT</b></p>
+ <p><b>Parameters : uint8_t bauds -> Set bauds speed</b></p>
+ <p><b>             bool enableDebug -> Enable debug leds</b></p>
+ <p><b>             uint8_t chSize -> Data bits</b></p>
+ <p><b>             uint8_t stopBit -> How many stop bits</b></p>
+ <p><b>             uint8_t parity -> Parity type (ODD, EVEN, DISABLED)</b></p>
+ <p><b>Don't forget to call sei() function after called all initPortx() functions !</p></b>
+ */
+void initPort1(uint32_t bauds, uint8_t chSize, bool stopBit, uint8_t parity)
+{
+    
+    /*if(enableDebug)
+        PORTB.DIR = USART3_PORT_PINS | USART3_DEBUG_LED; //Set TX/RX IO and RX/TX debug leds for USART0
+    else
+        PORTB.DIR = USART3_PORT_PINS; //Set TX/RX IO
+    */
+    PORTB.DIR |= USART3_PORT_PINS; //Set TX/RX IO
+    USART3.BAUD = bauds; 
+    USART3.CTRLA = 0x80; //enable RX complete interrupt
+    USART3.CTRLB = 0xD0; //Enable TX and RX sending
+    USART3.CTRLC = (parity << 4) | (stopBit << 3) | chSize; //set serial port cfg
+}
+
+
+
+/**
+ <p><b>void txWrite1(uint8_t b)</b></p>
+ <p><b>Write a byte throught VCOM1</b></p>
+ <p><b>Parameters : uint8_t b -> Byte to write</b></p>
+ */
+void txWrite1(uint8_t b) //Write one byte
+{
+    while((USART3.STATUS & 0x20) != 0x20);
+    USART3.TXDATAL = b;
+    while((USART3.STATUS & 0x40) != 0x40); //check when we transmit all the bits
+    USART3.STATUS = 0x40; //clear the flag for next transmission
+}
+
+
+/**
+ <p><b>uint8_t rxRead1(void)</b></p>
+ <p><b>Read a byte from VCOM1</b></p>
+ <p><b>Return : uint8_t result -> Byte to read</b></p>
+ */
+uint8_t rxRead1(void) //Read one byte from buffer
+{
+    
+    if(_RX1.bytesAvailable > 0)
+        _RX1.bytesAvailable--;
+    
+    return _RX1._rxBuf[_RX1.bytesAvailable];
+    
+    
+    /*_hasRead[USART3_INDEX] = true;
+    return USART3.RXDATAL;*/
+}
+
+
+/**
+ <p><b>uint16_t portAvailable1(void)</b></p>
+ <p><b>Get number of bytes available into the VCOM1 PORT's buffer</b></p>
+ <p><b>Return : uint16_t bytesAvailable -> Number of bytes</b></p>
+ */
+uint8_t portAvailable1(void)
+{
+    return _RX1.bytesAvailable;
+    //return ((USART3.STATUS & 0x80) >> 7);
+}
+
+
+
+ISR(USART3_RXC_vect)
+{
+    //while((USART0.RXDATAH & 0x80) == 0x80);
+    _RX1._rxBuf[_RX1.bytesAvailable] = USART3.RXDATAL; //Add one byte to the buffer
+    if(_RX1.bytesAvailable < 255) //ensure not to overflow buffer size...
+        _RX1.bytesAvailable++; //a new byte is available into the buffer
+        //PORTA.OUT ^= 0x3; //debug led
+}
+
+
+/////////////////////////////////////////////////
+//For Virtual port 2 (USART1)
+
+
+/**
+ <p><b>void initPort2(uint32_t bauds)</b></p>
+ <p><b>Init MASTER PORT</b></p>
+ <p><b>Parameters : uint8_t bauds -> Set bauds speed</b></p>
+ <p><b>             bool enableDebug -> Enable debug leds</b></p>
+ <p><b>             uint8_t chSize -> Data bits</b></p>
+ <p><b>             uint8_t stopBit -> How many stop bits</b></p>
+ <p><b>             uint8_t parity -> Parity type (ODD, EVEN, DISABLED)</b></p>
+ <p><b>Don't forget to call sei() function after called all initPortx() functions !</p></b>
+ */
+void initPort2(uint32_t bauds, uint8_t chSize, bool stopBit, uint8_t parity)
+{
+    
+    /*if(enableDebug)
+        PORTC.DIR = USART1_PORT_PINS | USART1_DEBUG_LED; //Set TX/RX IO and RX/TX debug leds for USART0
+    else
+        PORTC.DIR = USART1_PORT_PINS; //Set TX/RX IO
+    */
+    PORTC.DIR |= USART1_PORT_PINS; //Set TX/RX IO
+    USART1.BAUD = bauds; 
+    USART1.CTRLA = 0x80; //enable RX complete interrupt
+    USART1.CTRLB = 0xD0; //Enable TX and RX sending
+    USART1.CTRLC = (parity << 4) | (stopBit << 3) | chSize; //set serial port cfg
+}
+
+
+
+/**
+ <p><b>void txWrite2(uint8_t b)</b></p>
+ <p><b>Write a byte throught VCOM2</b></p>
+ <p><b>Parameters : uint8_t b -> Byte to write</b></p>
+ */
+void txWrite2(uint8_t b) //Virtual Port 2
+{
+    while((USART1.STATUS & 0x20) != 0x20);
+    USART1.TXDATAL = b;
+    while((USART1.STATUS & 0x40) != 0x40); //check when we transmit all the bits
+    USART1.STATUS = 0x40; //clear the flag for next transmission
+}
+
+
+/**
+ <p><b>uint8_t rxRead2(void)</b></p>
+ <p><b>Read a byte from VCOM2</b></p>
+ <p><b>Return : uint8_t result -> Byte to read</b></p>
+ */
+uint8_t rxRead2(void) //Read one byte from buffer
+{
+    
+    if(_RX2.bytesAvailable > 0)
+        _RX2.bytesAvailable--;
+    
+    return _RX2._rxBuf[_RX2.bytesAvailable];
+    
+    
+    /*_hasRead[USART1_INDEX] = true;
+    return USART1.RXDATAL;*/
+}
+
+
+/**
+ <p><b>uint16_t portAvailable2(void)</b></p>
+ <p><b>Get number of bytes available into the VCOM2 PORT's buffer</b></p>
+ <p><b>Return : uint16_t bytesAvailable -> Number of bytes</b></p>
+ */
+uint8_t portAvailable2(void)
+{
+    return _RX2.bytesAvailable;
+}
+
+
+
+
+ISR(USART1_RXC_vect)
+{
+    _RX2._rxBuf[_RX2.bytesAvailable] = USART1.RXDATAL; //Add one byte to the buffer
+    if(_RX2.bytesAvailable < 255) //ensure not to overflow buffer size...
+        _RX2.bytesAvailable++; //a new byte is available into the buffer
+        //PORTA.OUT ^= 0x3; //debug led
+}
+
+/////////////////////////////////////////////////
+//For Virtual port 3 (USART4)
+
+
+/**
+ <p><b>void initPort3(uint32_t bauds)</b></p>
+ <p><b>Init MASTER PORT</b></p>
+ <p><b>Parameters : uint8_t bauds -> Set bauds speed</b></p>
+ <p><b>             bool enableDebug -> Enable debug leds</b></p>
+ <p><b>             uint8_t chSize -> Data bits</b></p>
+ <p><b>             uint8_t stopBit -> How many stop bits</b></p>
+ <p><b>             uint8_t parity -> Parity type (ODD, EVEN, DISABLED)</b></p>
+ <p><b>Don't forget to call sei() function after called all initPortx() functions !</p></b>
+ */
+void initPort3(uint32_t bauds, uint8_t chSize, bool stopBit, uint8_t parity)
+{
+    
+    /*if(enableDebug)
+        PORTE.DIR = USART4_PORT_PINS | USART4_DEBUG_LED; //Set TX/RX IO and RX/TX debug leds for USART0
+    else
+        PORTE.DIR = USART4_PORT_PINS; //Set TX/RX IO
+    */
+    PORTE.DIR |= USART4_PORT_PINS; //Set TX/RX IO
+    USART4.BAUD = bauds; 
+    USART4.CTRLA = 0x80; //enable RX complete interrupt
+    USART4.CTRLB = 0xD0; //Enable TX and RX sending
+    USART4.CTRLC = (parity << 4) | (stopBit << 3) | chSize; //set serial port cfg
+}
+
+
+
+/**
+ <p><b>void txWrite3(uint8_t b)</b></p>
+ <p><b>Write a byte throught VCOM3</b></p>
+ <p><b>Parameters : uint8_t b -> Byte to write</b></p>
+ */
+void txWrite3(uint8_t b) //Write one byte
+{
+    while((USART4.STATUS & 0x20) != 0x20);
+    USART4.TXDATAL = b;
+    while((USART4.STATUS & 0x40) != 0x40); //check when we transmit all the bits
+    USART4.STATUS = 0x40; //clear the flag for next transmission
+}
+
+/**
+ <p><b>uint8_t rxRead3(void)</b></p>
+ <p><b>Read a byte from VCOM3</b></p>
+ <p><b>Return : uint8_t result -> Byte to read</b></p>
+ */
+uint8_t rxRead3(void) //Read one byte from buffer
+{
+    
+    if(_RX3.bytesAvailable > 0)
+        _RX3.bytesAvailable--;
+    
+    return _RX3._rxBuf[_RX3.bytesAvailable];
+    
+    
+    /*_hasRead[USART4_INDEX] = true;
+    return USART4.RXDATAL;*/
+}
+
+
+/**
+ <p><b>uint16_t portAvailable3(void)</b></p>
+ <p><b>Get number of bytes available into the VCOM3 PORT's buffer</b></p>
+ <p><b>Return : uint16_t bytesAvailable -> Number of bytes</b></p>
+ */
+uint8_t portAvailable3(void)
+{
+    return _RX3.bytesAvailable;
+}
+
+
+
+ISR(USART4_RXC_vect)
+{
+    _RX3._rxBuf[_RX3.bytesAvailable] = USART4.RXDATAL; //Add one byte to the buffer
+    if(_RX3.bytesAvailable < 255) //ensure not to overflow buffer size...
+        _RX3.bytesAvailable++; //a new byte is available into the buffer
+        //PORTA.OUT ^= 0x3; //debug led
+}
+
+
+
+
+
+
+/////////////////////////////////////////////////
+//For Virtual port 4 (USART2)
+
+
+/**
+ <p><b>void initPort4(uint32_t bauds)</b></p>
+ <p><b>Init MASTER PORT</b></p>
+ <p><b>Parameters : uint8_t bauds -> Set bauds speed</b></p>
+ <p><b>             bool enableDebug -> Enable debug leds</b></p>
+ <p><b>             uint8_t chSize -> Data bits</b></p>
+ <p><b>             uint8_t stopBit -> How many stop bits</b></p>
+ <p><b>             uint8_t parity -> Parity type (ODD, EVEN, DISABLED)</b></p>
+ <p><b>Don't forget to call sei() function after called all initPortx() functions !</p></b>
+ */
+void initPort4(uint32_t bauds, uint8_t chSize, bool stopBit, uint8_t parity)
+{
+    
+    /*if(enableDebug)
+        PORTF.DIR = USART2_PORT_PINS | USART2_DEBUG_LED; //Set TX/RX IO and RX/TX debug leds for USART0
+    else
+        PORTF.DIR = USART2_PORT_PINS; //Set TX/RX IO
+    */
+    PORTF.DIR |= USART2_PORT_PINS; //Set TX/RX IO
+    USART2.BAUD = bauds; 
+    USART2.CTRLA = 0x80; //enable RX complete interrupt
+    USART2.CTRLB = 0xD0; //Enable TX and RX sending
+    USART2.CTRLC = (parity << 4) | (stopBit << 3) | chSize; //set serial port cfg
+}
+
+
+
+/**
+ <p><b>void txWrite4(uint8_t b)</b></p>
+ <p><b>Write a byte throught VCOM4</b></p>
+ <p><b>Parameters : uint8_t b -> Byte to write</b></p>
+ */
+void txWrite4(uint8_t b) //Virtual Port 4
+{
+    while((USART2.STATUS & 0x20) != 0x20);
+    USART2.TXDATAL = b;
+    while((USART2.STATUS & 0x40) != 0x40); //check when we transmit all the bits
+    USART2.STATUS = 0x40; //clear the flag for next transmission
+}
+
+/**
+ <p><b>uint8_t rxRead4(void)</b></p>
+ <p><b>Read a byte from VCOM4</b></p>
+ <p><b>Return : uint8_t result -> Byte to read</b></p>
+ */
+uint8_t rxRead4(void) //Read one byte from buffer
+{
+    
+    if(_RX4.bytesAvailable > 0)
+        _RX4.bytesAvailable--;
+    
+    return _RX4._rxBuf[_RX4.bytesAvailable];
+    
+    /*_hasRead[USART2_INDEX] = true;
+    return USART2.RXDATAL;*/
+}
+
+
+/**
+ <p><b>uint16_t portAvailable4(void)</b></p>
+ <p><b>Get number of bytes available into the VCOM4 PORT's buffer</b></p>
+ <p><b>Return : uint16_t bytesAvailable -> Number of bytes</b></p>
+ */
+uint8_t portAvailable4(void)
+{
+    return _RX4.bytesAvailable;
+}
+
+
+
+ISR(USART2_RXC_vect)
+{
+    _RX4._rxBuf[_RX4.bytesAvailable] = USART2.RXDATAL; //Add one byte to the buffer
+    if(_RX4.bytesAvailable < 255) //ensure not to overflow buffer size...
+        _RX4.bytesAvailable++; //a new byte is available into the buffer
+        //PORTA.OUT ^= 0x3; //debug led
+}
+
+#ifdef	__cplusplus
+}
+#endif /* __cplusplus */
+
+#endif	/* XC_HEADER_TEMPLATE_H */
+
diff --git a/Version 2.0/RS232_MUX.X/hardware_uart_OLD.h b/Version 2.0/RS232_MUX.X/hardware_uart_OLD.h
new file mode 100644
index 0000000..d2ad0ce
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/hardware_uart_OLD.h	
@@ -0,0 +1,794 @@
+/* Microchip Technology Inc. and its subsidiaries.  You may use this software 
+ * and any derivatives exclusively with Microchip products. 
+ * 
+ * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS".  NO WARRANTIES, WHETHER 
+ * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED 
+ * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A 
+ * PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION 
+ * WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. 
+ *
+ * IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+ * INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+ * WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS 
+ * BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE.  TO THE 
+ * FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS 
+ * IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF 
+ * ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
+ *
+ * MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE 
+ * TERMS. 
+ */
+
+/* 
+ * File:   hardware_uart.h
+ * Author: Enzo Niro
+ * Comments: Library made for RS232 MUX board
+ * Revision history: V1.0 
+ */
+
+
+/*
+ TODO list:
+ * Put TXDATAH in write when F9BIT mode enabled
+ 
+ 
+ 
+ */
+
+
+
+#ifndef RS232_HARDWAREUART_H
+#define	RS232_HARDWAREUART_H
+
+#include <xc.h> // include processor files - each processor file is guarded. 
+#include <stdbool.h>
+#include <avr/interrupt.h>
+#include <avr/eeprom.h>
+
+///////////////////////////////////////////////////////////////
+//Definitions
+
+//Values registers
+
+#define F5BIT_MODE           0x00
+#define F6BIT_MODE           0x01
+#define F7BIT_MODE           0x02
+#define F8BIT_MODE           0x03
+#define F9LBIT_MODE          0x06
+#define F9HBIT_MODE          0x07
+
+#define NO_PARITY           0x00
+#define EVEN_PARITY         0x02
+#define ODD_PARITY          0x03
+
+#define ONE_STOPBIT         0x00
+#define TWO_STOPBITS        0x01
+
+
+//EEPROM addresses
+
+#define ADDR_BAUD_2400           0x0
+#define ADDR_BAUD_4800           0x1
+#define ADDR_BAUD_9600           0x2
+#define ADDR_BAUD_19200          0x3
+#define ADDR_BAUD_38400          0x4
+#define ADDR_BAUD_57600          0x5
+#define ADDR_BAUD_115200         0x6
+
+#define ADDR_PARITY_NONE         0x0
+#define ADDR_PARITY_EVEN         0x1
+#define ADDR_PARITY_ODD          0x2
+
+#define ADDR_DATA_F5             0x0
+#define ADDR_DATA_F6             0x1
+#define ADDR_DATA_F7             0x2
+#define ADDR_DATA_F8             0x3
+#define ADDR_DATA_F9L            0x4
+#define ADDR_DATA_F9H            0x5
+
+#define ADDR_STOP_ONE            0x0
+#define ADDR_STOP_TWO            0x1
+
+
+#define DEFAULT_ADDR_BAUD        ADDR_BAUD_9600
+#define DEFAULT_ADDR_PARITY      ADDR_PARITY_NONE
+#define DEFAULT_ADDR_DATA        ADDR_DATA_F8
+#define DEFAULT_ADDR_STOP        ADDR_STOP_ONE
+#define DEFAULT_VALUE_DEBUG_LED  0x1F
+
+#define EEPROM_DEBUG_LED_ADDR   0x8
+
+
+
+//According to AVR32DA48 pins
+
+#define USART0_PORT_PINS    0x01
+#define USART0_DEBUG_LED    0x0C
+
+#define USART1_PORT_PINS    0x01
+#define USART1_DEBUG_LED    0x0C
+
+#define USART2_PORT_PINS    0x01
+#define USART2_DEBUG_LED    0x0C
+
+#define USART3_PORT_PINS    0x01
+#define USART3_DEBUG_LED    0x0C
+
+#define USART4_PORT_PINS    0x01
+#define USART4_DEBUG_LED    0x0C
+
+//Port index for debug leds
+#define USART0_INDEX    0
+#define USART1_INDEX    1
+#define USART2_INDEX    2
+#define USART3_INDEX    3
+#define USART4_INDEX    4
+
+
+#ifdef	__cplusplus
+extern "C" {
+#endif /* __cplusplus */
+    
+    
+    
+///////////////////////////////////////////////////////////////
+//Global Vars
+
+typedef struct RXREAD RXREAD;
+struct RXREAD
+{
+    uint8_t _rxReicv; // temp byte
+    uint8_t _rxBuf[256]; //back end serial buffer
+    uint16_t bytesAvailable; //show if bytes available...
+};
+
+
+typedef struct eepromPort eepromPort;
+struct eepromPort
+{
+    uint8_t regA; // register A for speed and parity configuration
+    uint8_t regB; // register B for Data structure and stop bits
+};
+
+typedef struct cfgPort cfgPort;
+struct cfgPort
+{
+    uint16_t baud; // Port speed
+    uint8_t parity; // Parity for frame structure
+    uint8_t dataByte; // Data byte structure
+    uint8_t stopBit; // Stop bits for frame structure
+    uint8_t debugLed;
+};
+
+//EEPROM data structure (for reading registers)
+eepromPort eepromVCOM[4], eepromDebugLeds;
+
+
+//RX structure for reading buffers from serial ports
+volatile RXREAD _RX0, _RX1, _RX2, _RX3, _RX4;
+volatile bool _hasWritten[] = {false, false, false, false, false};
+volatile bool _hasRead[] = {false, false, false, false, false};
+
+
+///////////////////////////////////////////////////////////////
+//Functions
+
+
+/**
+ <p><b>void getEEPROMCfg(void)</b></p>
+ <p><b>Read eeprom values stored for all serial ports</b></p>
+ */
+void getEEPROMCfg(void)
+{
+    uint8_t i = 0, j = 0;
+    while(j < 8)
+    {
+        //Read at first bytes
+        eepromVCOM[i].regA = eeprom_read_byte(j);
+        eepromVCOM[i].regB = eeprom_read_byte(j+1);
+        //Then check if writing default values is necessary
+        if(eepromVCOM[i].regA == 0xFF)
+        {
+            eepromVCOM[i].regA = (DEFAULT_ADDR_BAUD << 4) | (DEFAULT_ADDR_PARITY);
+            eeprom_write_byte(j, (DEFAULT_ADDR_BAUD << 4) | (DEFAULT_ADDR_PARITY));
+        }
+        if(eepromVCOM[i].regB == 0xFF)
+        {
+            eepromVCOM[i].regB = (DEFAULT_ADDR_DATA << 4) | (DEFAULT_ADDR_STOP);
+            eeprom_write_byte(j+1, (DEFAULT_ADDR_DATA << 4) | (DEFAULT_ADDR_STOP));
+        }
+        i++;
+        j+=2;
+    }
+    
+    //And finally, check debug leds value
+    eepromDebugLeds.regA = eeprom_read_byte(EEPROM_DEBUG_LED_ADDR);
+    if(eepromDebugLeds.regA == 0xFF)
+    {
+        eepromDebugLeds.regA = DEFAULT_VALUE_DEBUG_LED;
+        eeprom_write_byte(EEPROM_DEBUG_LED_ADDR, DEFAULT_VALUE_DEBUG_LED);
+    }
+        
+    
+}
+
+/**
+ <p><b>uint8_t getDebugLedsConfiguration(void)</b></p>
+ <p><b>Get leds configuration for debug (TX/RX) of each serial port</b></p>
+ <p><b>             Return : uint8_t -> state of each leds [VCOM4 VCOM3 VCOM2 VCOM1 MCOM]</b></p>
+ */
+uint8_t getDebugLedsConfiguration(void)
+{
+    return eepromDebugLeds.regA;
+}
+
+
+
+
+/**
+ <p><b>void readConfiguration(cfgPort *cfg, uint8_t n)</b></p>
+ <p><b>Get configuration with eeprom read values</b></p>
+ <p><b>             cfgPort -> Serial port configuration</b></p>
+ <p><b>             n -> Serial port to configure</b></p>
+ */
+void readConfiguration(cfgPort *cfg, uint8_t n)
+{
+    //BAUD value register for these frequencies in this order :
+    //2400, 4800, 9600, 19200, 38400, 57600, 115200
+    uint16_t speedCfg[] = { 40000, 20000, 10000, 5000, 2500, 1667, 833 };
+    uint8_t parityCfg[] = { NO_PARITY, EVEN_PARITY, ODD_PARITY };
+    uint8_t dataCfg[] = { F5BIT_MODE, F6BIT_MODE, F7BIT_MODE, F8BIT_MODE, F9LBIT_MODE, F9HBIT_MODE };
+    uint8_t stopCfg[] = { ONE_STOPBIT, TWO_STOPBITS };
+    
+    cfg->baud = speedCfg[(eepromVCOM[n].regA >> 4)];
+    cfg->parity = parityCfg[(eepromVCOM[n].regA & 0xF)];
+    cfg->dataByte = dataCfg[(eepromVCOM[n].regB >> 4)];
+    cfg->stopBit = stopCfg[(eepromVCOM[n].regB & 0xF)];
+}
+
+
+
+/**
+ <p><b>void debugLedsTest(void)</b></p>
+ <p><b>Debug leds test sequence</b></p>
+ */
+
+
+void debugLedsTest(void)
+{
+    PORT_t *port;
+    uint16_t addrPorts[] = {&PORTA, &PORTB, &PORTC, &PORTE, &PORTF };
+    for(int i = 0; i < 5; i++)
+    {
+        port = addrPorts[i];
+        port->OUT = 0x04;
+        _delay_ms(125);
+        port->OUT = 0x0C;
+        _delay_ms(125);
+        port->OUT = 0x00;
+    }
+}
+
+/**
+ <p><b>void senseDebugLeds(void)</b></p>
+ <p><b>Call this to update leds status</b></p>
+ */
+void senseDebugLeds(void)
+{
+    ///////////////////////////
+    //Check Master Port
+    if(_hasWritten[USART0_INDEX])
+    {
+        PORTA.OUT |= 0x04;
+        _hasWritten[USART0_INDEX] = false;
+    }
+    else
+        PORTA.OUT &= 0xFB;
+    
+    if(_hasRead[USART0_INDEX])
+    {
+        PORTA.OUT |= 0x08;
+        _hasRead[USART0_INDEX] = false;
+    }
+    else
+        PORTA.OUT &= 0xF7;
+    
+    ///////////////////////////
+    //Check VCOM1
+    if(_hasWritten[USART3_INDEX])
+    {
+        PORTC.OUT |= 0x04;
+        _hasWritten[USART3_INDEX] = false;
+    }
+    else
+        PORTC.OUT &= 0xFB;
+    
+    if(_hasRead[USART3_INDEX])
+    {
+        PORTC.OUT |= 0x08;
+        _hasRead[USART3_INDEX] = false;
+    }
+    else
+        PORTC.OUT &= 0xF7;
+    
+    ///////////////////////////
+    //Check VCOM2
+    if(_hasWritten[USART1_INDEX])
+    {
+        PORTF.OUT |= 0x04;
+        _hasWritten[USART1_INDEX] = false;
+    }
+    else
+        PORTF.OUT &= 0xFB;
+    
+    if(_hasRead[USART1_INDEX])
+    {
+        PORTF.OUT |= 0x08;
+        _hasRead[USART1_INDEX] = false;
+    }
+    else
+        PORTF.OUT &= 0xF7;
+    
+    ///////////////////////////
+    //Check VCOM3
+    if(_hasWritten[USART4_INDEX])
+    {
+        PORTB.OUT |= 0x04;
+        _hasWritten[USART4_INDEX] = false;
+    }
+    else
+    {
+        PORTB.OUT &= 0xFB;
+    }
+        
+    
+    if(_hasRead[USART4_INDEX])
+    {
+        PORTB.OUT |= 0x08;
+        _hasRead[USART4_INDEX] = false;
+    }
+    else
+        PORTB.OUT &= 0xF7;
+    
+    
+    ///////////////////////////
+    //Check VCOM4
+    if(_hasWritten[USART2_INDEX])
+    {
+        PORTE.OUT |= 0x04;
+        _hasWritten[USART2_INDEX] = false;
+    }
+    else
+        PORTE.OUT &= 0xFB;
+    
+    if(_hasRead[USART2_INDEX])
+    {
+        PORTE.OUT |= 0x08;
+        _hasRead[USART2_INDEX] = false;
+    }
+    else
+        PORTE.OUT &= 0xF7;
+}
+
+
+/////////////////////////////////////////////////
+//For Master port (USART0)
+
+/**
+ <p><b>void initPort0(uint32_t bauds)</b></p>
+ <p><b>Init MASTER PORT</b></p>
+ <p><b>Parameters : uint8_t bauds -> Set bauds speed</b></p>
+ <p><b>             bool enableDebug -> Enable debug leds</b></p>
+ <p><b>             uint8_t chSize -> Data bits</b></p>
+ <p><b>             uint8_t stopBit -> How many stop bits</b></p>
+ <p><b>             uint8_t parity -> Parity type (ODD, EVEN, DISABLED)</b></p>
+ <p><b>Don't forget to call sei() function after called all initPortx() functions !</p></b>
+ */
+void initPort0(uint32_t bauds, bool enableDebug, uint8_t chSize, bool stopBit, uint8_t parity)
+{
+    if(enableDebug)
+        PORTA.DIR = USART0_PORT_PINS | USART0_DEBUG_LED; //Set TX/RX IO and RX/TX debug leds for USART0
+    else
+        PORTA.DIR = USART0_PORT_PINS; //Set TX/RX IO
+    
+    USART0.BAUD = bauds; 
+    USART0.CTRLA = 0x00; //disable RX complete interrupt
+    USART0.CTRLB = 0xD0; //Enable TX and RX sending
+    USART0.CTRLC = (parity << 4) | (stopBit << 3) | chSize;
+}
+
+
+/**
+ <p><b>void txWrite0(uint8_t b)</b></p>
+ <p><b>Write a byte throught MASTER PORT</b></p>
+ <p><b>Parameters : uint8_t b -> Byte to write</b></p>
+ */
+
+void txWrite0(uint8_t b) //write one byte
+{
+    while((USART0.STATUS & 0x20) != 0x20);
+    USART0.TXDATAL = b;
+    _hasWritten[USART0_INDEX] = true;
+    while((USART0.STATUS & 0x40) != 0x40); //check when we transmit all the bits
+    USART0.STATUS = 0x40; //clear the flag for next transmission
+}
+
+
+/**
+ <p><b>uint8_t rxRead0(void)</b></p>
+ <p><b>Read a byte from MASTER PORT</b></p>
+ <p><b>Return : uint8_t result -> Byte to read</b></p>
+ */
+uint8_t rxRead0(void) //Read one byte from buffer
+{    
+    _hasRead[USART0_INDEX] = true;
+    return USART0.RXDATAL;
+}
+
+
+/**
+ <p><b>uint16_t portAvailable0(void)</b></p>
+ <p><b>Get number of bytes available into the MASTER PORT's buffer</b></p>
+ <p><b>Return : uint16_t bytesAvailable -> Number of bytes</b></p>
+ */
+uint8_t portAvailable0(void)
+{
+    return ((USART0.RXDATAH & 0x80) >> 7);
+}
+
+
+/*ISR(USART0_RXC_vect)
+{
+    //_RX0._rxReicv = USART0.RXDATAL; //read buffer
+    _RX0._rxBuf[_RX0.bytesAvailable] = USART0.RXDATAL; //Add one byte to the buffer
+    //_RX0._rxReicv = 0x00; //clear value
+    if(_RX0.bytesAvailable < 255) //ensure not to overflow buffer size...
+        _RX0.bytesAvailable++; //a new byte is available into the buffer
+        //PORTA.OUT ^= 0x3; //debug led
+    _hasRead[USART0_INDEX] = true;
+}*/
+
+
+
+
+
+/////////////////////////////////////////////////
+//For Virtual port 1 (USART3)
+
+
+/**
+ <p><b>void initPort1(uint32_t bauds)</b></p>
+ <p><b>Init MASTER PORT</b></p>
+ <p><b>Parameters : uint8_t bauds -> Set bauds speed</b></p>
+ <p><b>             bool enableDebug -> Enable debug leds</b></p>
+ <p><b>             uint8_t chSize -> Data bits</b></p>
+ <p><b>             uint8_t stopBit -> How many stop bits</b></p>
+ <p><b>             uint8_t parity -> Parity type (ODD, EVEN, DISABLED)</b></p>
+ <p><b>Don't forget to call sei() function after called all initPortx() functions !</p></b>
+ */
+void initPort1(uint32_t bauds, bool enableDebug, uint8_t chSize, bool stopBit, uint8_t parity)
+{
+    
+    if(enableDebug)
+        PORTB.DIR = USART3_PORT_PINS | USART3_DEBUG_LED; //Set TX/RX IO and RX/TX debug leds for USART0
+    else
+        PORTB.DIR = USART3_PORT_PINS; //Set TX/RX IO
+    
+    USART3.BAUD = bauds; 
+    USART3.CTRLA = 0x00; //disable RX complete interrupt
+    USART3.CTRLB = 0xD0; //Enable TX and RX sending
+    USART3.CTRLC = (parity << 4) | (stopBit << 3) | chSize; //set serial port cfg
+}
+
+
+
+/**
+ <p><b>void txWrite1(uint8_t b)</b></p>
+ <p><b>Write a byte throught VCOM1</b></p>
+ <p><b>Parameters : uint8_t b -> Byte to write</b></p>
+ */
+void txWrite1(uint8_t b) //Write one byte
+{
+    while((USART3.STATUS & 0x20) != 0x20);
+    USART3.TXDATAL = b;
+    _hasWritten[USART3_INDEX] = true;
+    while((USART3.STATUS & 0x40) != 0x40); //check when we transmit all the bits
+    USART3.STATUS = 0x40; //clear the flag for next transmission
+}
+
+
+/**
+ <p><b>uint8_t rxRead1(void)</b></p>
+ <p><b>Read a byte from VCOM1</b></p>
+ <p><b>Return : uint8_t result -> Byte to read</b></p>
+ */
+uint8_t rxRead1(void) //Read one byte from buffer
+{
+    _hasRead[USART3_INDEX] = true;
+    return USART3.RXDATAL;
+}
+
+
+/**
+ <p><b>uint16_t portAvailable1(void)</b></p>
+ <p><b>Get number of bytes available into the VCOM1 PORT's buffer</b></p>
+ <p><b>Return : uint16_t bytesAvailable -> Number of bytes</b></p>
+ */
+uint8_t portAvailable1(void)
+{
+    return ((USART3.STATUS & 0x80) >> 7);
+}
+
+
+
+/*ISR(USART3_RXC_vect)
+{
+    //while((USART0.RXDATAH & 0x80) == 0x80);
+    _RX1._rxReicv = USART3.RXDATAL; //read buffer
+    _RX1._rxBuf[_RX1.bytesAvailable] = _RX1._rxReicv; //Add one byte to the buffer
+    _RX1._rxReicv = 0x00; //clear value
+    if(_RX1.bytesAvailable < 255) //ensure not to overflow buffer size...
+        _RX1.bytesAvailable++; //a new byte is available into the buffer
+        //PORTA.OUT ^= 0x3; //debug led
+    
+    _hasRead[USART3_INDEX] = true;
+}
+*/
+
+/////////////////////////////////////////////////
+//For Virtual port 2 (USART1)
+
+
+/**
+ <p><b>void initPort2(uint32_t bauds)</b></p>
+ <p><b>Init MASTER PORT</b></p>
+ <p><b>Parameters : uint8_t bauds -> Set bauds speed</b></p>
+ <p><b>             bool enableDebug -> Enable debug leds</b></p>
+ <p><b>             uint8_t chSize -> Data bits</b></p>
+ <p><b>             uint8_t stopBit -> How many stop bits</b></p>
+ <p><b>             uint8_t parity -> Parity type (ODD, EVEN, DISABLED)</b></p>
+ <p><b>Don't forget to call sei() function after called all initPortx() functions !</p></b>
+ */
+void initPort2(uint32_t bauds, bool enableDebug, uint8_t chSize, bool stopBit, uint8_t parity)
+{
+    
+    if(enableDebug)
+        PORTC.DIR = USART1_PORT_PINS | USART1_DEBUG_LED; //Set TX/RX IO and RX/TX debug leds for USART0
+    else
+        PORTC.DIR = USART1_PORT_PINS; //Set TX/RX IO
+    
+    
+    USART1.BAUD = bauds; 
+    USART1.CTRLA = 0x00; //enable RX complete interrupt
+    USART1.CTRLB = 0xD0; //Enable TX and RX sending
+    USART1.CTRLC = (parity << 4) | (stopBit << 3) | chSize; //set serial port cfg
+}
+
+
+
+/**
+ <p><b>void txWrite2(uint8_t b)</b></p>
+ <p><b>Write a byte throught VCOM2</b></p>
+ <p><b>Parameters : uint8_t b -> Byte to write</b></p>
+ */
+void txWrite2(uint8_t b) //Virtual Port 2
+{
+    while((USART1.STATUS & 0x20) != 0x20);
+    USART1.TXDATAL = b;
+    _hasWritten[USART1_INDEX] = true;
+    while((USART1.STATUS & 0x40) != 0x40); //check when we transmit all the bits
+    USART1.STATUS = 0x40; //clear the flag for next transmission
+}
+
+
+/**
+ <p><b>uint8_t rxRead2(void)</b></p>
+ <p><b>Read a byte from VCOM2</b></p>
+ <p><b>Return : uint8_t result -> Byte to read</b></p>
+ */
+uint8_t rxRead2(void) //Read one byte from buffer
+{
+    _hasRead[USART1_INDEX] = true;
+    return USART1.RXDATAL;
+}
+
+
+/**
+ <p><b>uint16_t portAvailable2(void)</b></p>
+ <p><b>Get number of bytes available into the VCOM2 PORT's buffer</b></p>
+ <p><b>Return : uint16_t bytesAvailable -> Number of bytes</b></p>
+ */
+uint8_t portAvailable2(void)
+{
+    return ((USART1.STATUS & 0x80) >> 7);
+}
+
+
+
+
+/*ISR(USART1_RXC_vect)
+{
+    //while((USART0.RXDATAH & 0x80) == 0x80);
+    _RX2._rxReicv = USART1.RXDATAL; //read buffer
+    _RX2._rxBuf[_RX2.bytesAvailable] = _RX2._rxReicv; //Add one byte to the buffer
+    _RX2._rxReicv = 0x00; //clear value
+    if(_RX2.bytesAvailable < 255) //ensure not to overflow buffer size...
+        _RX2.bytesAvailable++; //a new byte is available into the buffer
+        //PORTA.OUT ^= 0x3; //debug led
+    _hasRead[USART1_INDEX] = true;
+}
+*/
+/////////////////////////////////////////////////
+//For Virtual port 3 (USART4)
+
+
+/**
+ <p><b>void initPort3(uint32_t bauds)</b></p>
+ <p><b>Init MASTER PORT</b></p>
+ <p><b>Parameters : uint8_t bauds -> Set bauds speed</b></p>
+ <p><b>             bool enableDebug -> Enable debug leds</b></p>
+ <p><b>             uint8_t chSize -> Data bits</b></p>
+ <p><b>             uint8_t stopBit -> How many stop bits</b></p>
+ <p><b>             uint8_t parity -> Parity type (ODD, EVEN, DISABLED)</b></p>
+ <p><b>Don't forget to call sei() function after called all initPortx() functions !</p></b>
+ */
+void initPort3(uint32_t bauds, bool enableDebug, uint8_t chSize, bool stopBit, uint8_t parity)
+{
+    
+    if(enableDebug)
+        PORTE.DIR = USART4_PORT_PINS | USART4_DEBUG_LED; //Set TX/RX IO and RX/TX debug leds for USART0
+    else
+        PORTE.DIR = USART4_PORT_PINS; //Set TX/RX IO
+    
+    
+    
+    USART4.BAUD = bauds; 
+    USART4.CTRLA = 0x00; //enable RX complete interrupt
+    USART4.CTRLB = 0xD0; //Enable TX and RX sending
+    USART4.CTRLC = (parity << 4) | (stopBit << 3) | chSize; //set serial port cfg
+}
+
+
+
+/**
+ <p><b>void txWrite3(uint8_t b)</b></p>
+ <p><b>Write a byte throught VCOM3</b></p>
+ <p><b>Parameters : uint8_t b -> Byte to write</b></p>
+ */
+void txWrite3(uint8_t b) //Write one byte
+{
+    while((USART4.STATUS & 0x20) != 0x20);
+    USART4.TXDATAL = b;
+    _hasWritten[USART4_INDEX] = true;
+    while((USART4.STATUS & 0x40) != 0x40); //check when we transmit all the bits
+    USART4.STATUS = 0x40; //clear the flag for next transmission
+}
+
+/**
+ <p><b>uint8_t rxRead3(void)</b></p>
+ <p><b>Read a byte from VCOM3</b></p>
+ <p><b>Return : uint8_t result -> Byte to read</b></p>
+ */
+uint8_t rxRead3(void) //Read one byte from buffer
+{
+    _hasRead[USART4_INDEX] = true;
+    return USART4.RXDATAL;
+}
+
+
+/**
+ <p><b>uint16_t portAvailable3(void)</b></p>
+ <p><b>Get number of bytes available into the VCOM3 PORT's buffer</b></p>
+ <p><b>Return : uint16_t bytesAvailable -> Number of bytes</b></p>
+ */
+uint8_t portAvailable3(void)
+{
+    return ((USART4.STATUS & 0x80) >> 7);
+}
+
+
+/*
+ISR(USART4_RXC_vect)
+{
+    //while((USART0.RXDATAH & 0x80) == 0x80);
+    _RX3._rxReicv = USART4.RXDATAL; //read buffer
+    _RX3._rxBuf[_RX3.bytesAvailable] = _RX3._rxReicv; //Add one byte to the buffer
+    _RX3._rxReicv = 0x00; //clear value
+    if(_RX3.bytesAvailable < 255) //ensure not to overflow buffer size...
+        _RX3.bytesAvailable++; //a new byte is available into the buffer
+        //PORTA.OUT ^= 0x3; //debug led
+    _hasRead[USART4_INDEX] = true;
+}*/
+
+
+
+
+
+
+/////////////////////////////////////////////////
+//For Virtual port 4 (USART2)
+
+
+/**
+ <p><b>void initPort4(uint32_t bauds)</b></p>
+ <p><b>Init MASTER PORT</b></p>
+ <p><b>Parameters : uint8_t bauds -> Set bauds speed</b></p>
+ <p><b>             bool enableDebug -> Enable debug leds</b></p>
+ <p><b>             uint8_t chSize -> Data bits</b></p>
+ <p><b>             uint8_t stopBit -> How many stop bits</b></p>
+ <p><b>             uint8_t parity -> Parity type (ODD, EVEN, DISABLED)</b></p>
+ <p><b>Don't forget to call sei() function after called all initPortx() functions !</p></b>
+ */
+void initPort4(uint32_t bauds, bool enableDebug, uint8_t chSize, bool stopBit, uint8_t parity)
+{
+    
+    if(enableDebug)
+        PORTF.DIR = USART2_PORT_PINS | USART2_DEBUG_LED; //Set TX/RX IO and RX/TX debug leds for USART0
+    else
+        PORTF.DIR = USART2_PORT_PINS; //Set TX/RX IO
+    
+    
+    USART2.BAUD = bauds; 
+    USART2.CTRLA = 0x00; //enable RX complete interrupt
+    USART2.CTRLB = 0xD0; //Enable TX and RX sending
+    USART2.CTRLC = (parity << 4) | (stopBit << 3) | chSize; //set serial port cfg
+}
+
+
+
+/**
+ <p><b>void txWrite4(uint8_t b)</b></p>
+ <p><b>Write a byte throught VCOM4</b></p>
+ <p><b>Parameters : uint8_t b -> Byte to write</b></p>
+ */
+void txWrite4(uint8_t b) //Virtual Port 4
+{
+    while((USART2.STATUS & 0x20) != 0x20);
+    USART2.TXDATAL = b;
+    _hasWritten[USART2_INDEX] = true;
+    while((USART2.STATUS & 0x40) != 0x40); //check when we transmit all the bits
+    USART2.STATUS = 0x40; //clear the flag for next transmission
+}
+
+/**
+ <p><b>uint8_t rxRead4(void)</b></p>
+ <p><b>Read a byte from VCOM4</b></p>
+ <p><b>Return : uint8_t result -> Byte to read</b></p>
+ */
+uint8_t rxRead4(void) //Read one byte from buffer
+{
+    _hasRead[USART2_INDEX] = true;
+    return USART2.RXDATAL;
+}
+
+
+/**
+ <p><b>uint16_t portAvailable4(void)</b></p>
+ <p><b>Get number of bytes available into the VCOM4 PORT's buffer</b></p>
+ <p><b>Return : uint16_t bytesAvailable -> Number of bytes</b></p>
+ */
+uint8_t portAvailable4(void)
+{
+    return ((USART2.STATUS & 0x80) >> 7);
+}
+
+
+/*
+ISR(USART2_RXC_vect)
+{
+    //while((USART0.RXDATAH & 0x80) == 0x80);
+    _RX4._rxReicv = USART2.RXDATAL; //read buffer
+    _RX4._rxBuf[_RX4.bytesAvailable] = _RX4._rxReicv; //Add one byte to the buffer
+    _RX4._rxReicv = 0x00; //clear value
+    if(_RX4.bytesAvailable < 255) //ensure not to overflow buffer size...
+        _RX4.bytesAvailable++; //a new byte is available into the buffer
+        //PORTA.OUT ^= 0x3; //debug led
+    _hasRead[USART2_INDEX] = true;
+}*/
+
+#ifdef	__cplusplus
+}
+#endif /* __cplusplus */
+
+#endif	/* XC_HEADER_TEMPLATE_H */
+
diff --git a/Version 2.0/RS232_MUX.X/main.c b/Version 2.0/RS232_MUX.X/main.c
new file mode 100644
index 0000000..14302ba
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/main.c	
@@ -0,0 +1,1035 @@
+/*
+ * File:   main.c
+ * Author: eniro
+ * Version : 2.0
+ *
+ * Created on March 25, 2024, 3:51 PM
+ */
+
+
+
+/*
+ 
+ TODO LIST :
+ *  
+ */
+
+#define F_CPU 24000000UL
+
+#include <xc.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include <stdlib.h>
+#include <util/delay.h>
+#include <avr/interrupt.h>
+#include <avr/eeprom.h>
+
+#include "hardware_uart.h"
+#include "hardware_timer.h"
+#include "hardware_TL16C754C.h"
+#include "hardware_config.h"
+#include "frame_definitions.h"
+#include "parameters.h"
+#include "pins.h"
+
+//USART setup
+
+//To calculate BAUD value register -> BAUD = 64*FCLK/(16*FBAUDS)
+#define UART_BAUD_VALUE     833 // 10000 is equivalent as 9600 bauds (on 24MHz clock) according to datasheet
+#define USART0_REG          0x3 
+#define BOOT_MSG            "RS232-MUX\r\n"
+
+
+
+//OSC. setup
+#define FREQSEL     0x9
+#define _FREQSEL_REG_WR     ((FREQSEL) << 2)
+#define _USART0_REG_WR      (USART0_REG & 0x7)
+
+
+
+
+
+
+enum portIndex {
+    PORT_VCOMA_INDEX = 0,
+    PORT_VCOMB_INDEX,
+    PORT_VCOMC_INDEX,
+    PORT_VCOMD_INDEX,
+    PORT_MCOM_INDEX,
+};
+
+
+//////////////////////////////////////////////////////////////
+//Prototypes
+
+void bootSequence(void);
+void setRAMCfg(cfgPort *cfg, uint8_t *localBuffer);
+void MCOM_scanframe(uint8_t *data, uint8_t n, cfgPort *localPort);
+void MCOM_sendframe(uint8_t *data, uint8_t n, uint8_t port);
+void VCOM_sendframe(uint8_t *data, uint8_t n);
+void senseDebugLeds(bool *hasWritten, bool *hasRead);
+void readCFG(bool EEPROM_read, cfgPort *localPort);
+bool stringComp(uint8_t *str1, uint8_t *str2, uint8_t n, uint8_t m);
+#define WATCHDOG_RESET      asm("WDR") //reset watchdog counter
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//Little Keep save old configuration accessible everywhere (Not good as it is)
+cfgPort OLD_CFG[4];
+///////////////////////////
+
+
+
+
+#ifdef USE_PORT_1 //USART3
+#define INIT_PORT(w,x,y,z)               initPort1(w,x,y,z)
+#define TX_WRITE(x)                     txWrite1(x)
+#define RX_READ                         rxRead1()
+#define PORT_AVAILABLE                  portAvailable1()
+#else
+#ifdef USE_PORT_2 // USART1
+#define INIT_PORT(w,x,y,z)              initPort2(w,x,y,z)
+#define TX_WRITE(x)                     txWrite2(x)
+#define RX_READ                         rxRead2()
+#define PORT_AVAILABLE                  portAvailable2()
+#else
+#ifdef USE_PORT_3 //USART4
+#define INIT_PORT(w,x,y,z)               initPort3(w,x,y,z)
+#define TX_WRITE(x)                     txWrite3(x)
+#define RX_READ                         rxRead3()
+#define PORT_AVAILABLE                  portAvailable3()
+#else
+#ifdef USE_PORT_4 //USART2
+#define INIT_PORT(w,x,y,z)               initPort4(w,x,y,z)
+#define TX_WRITE(x)                     txWrite4(x)
+#define RX_READ                         rxRead4()
+#define PORT_AVAILABLE                  portAvailable4()
+#else
+#error "Please choose an uart port..."
+#endif
+#endif
+#endif
+#endif
+
+
+#define DEBUG_LED   0x4
+
+
+int main(void) {
+    
+    cfgPort VCOM_cfg[4];
+
+    uint8_t masterBuffer[64], bufferA[64], bufferB[64], bufferC[64], bufferD[64];
+    uint8_t VCOMAIndex = 0, VCOMBIndex = 0, VCOMCIndex = 0, VCOMDIndex = 0, MCOMIndex;
+    uint16_t MCOM_counter = 0;
+    uint16_t VCOMA_counter = 0;
+    uint16_t VCOMB_counter = 0;
+    uint16_t VCOMC_counter = 0;
+    uint16_t VCOMD_counter = 0;
+    uint8_t mainLedCounter = 0;
+    
+    bool VCOM_can_read[] = {false, false, false, false};
+    
+    bool writtenStatus = false; //put write status on master port
+    bool readStatus[] = {false, false, false, false, false}; // put read status on all ports
+ 
+    setWait(5000);
+    
+    
+    for(int i = 0; i < 64; i++)
+    {
+        bufferA[i] = 0;
+    }
+    for(int i = 0; i < 64; i++)
+    {
+        bufferB[i] = 0;
+    }
+    for(int i = 0; i < 64; i++)
+    {
+        bufferC[i] = 0;
+    }
+    for(int i = 0; i < 64; i++)
+    {
+        bufferD[i] = 0;
+    }
+    
+    _PROTECTED_WRITE(CLKCTRL.OSCHFCTRLA, _FREQSEL_REG_WR); //switch to 24 MHz
+    
+    //_delay_ms(3000);
+    
+    //Enable pins (Port direction)
+    ADDR_ENABLE;        //Address pins
+    ENABLE_WR_RD_PINS;  //Read and Write pins
+    ENABLE_CS_PINS;     //Chip select pins
+    ENABLE_RESET_PIN;   //Reset pin
+    
+    //////////////////////////////////////////////////////////////
+    //Remember to put high level on cs pins to disable devices...
+    SETCSA;
+    SETCSB;
+    SETCSC;
+    SETCSD;
+    //Also don't forget IOR and IOW
+    SETWR;
+    SETRD;
+    //////////////////////////////////////////////////////////////
+    
+    
+    ////////////////////////////////////////
+    //init TL16C IC
+    SETRST; 
+    //_delay_ms(10);
+    setWait(100);
+    CLRRST;
+    setWait(5);
+    ////////////////////////////////////////   
+    
+    //Init virtual COM ports
+    setWait(20000);
+    
+    //Debug
+    //char chrDebug[50];
+    //sprintf(chrDebug, "%x %x %x %x %x %x %x %x\r\n", eeprom_read_byte(0),eeprom_read_byte(1),eeprom_read_byte(2),eeprom_read_byte(3),eeprom_read_byte(4),eeprom_read_byte(5),eeprom_read_byte(6),eeprom_read_byte(7));
+    
+    
+    
+    getEEPROMCfg(); //at first read EEPROM configuration
+    readConfiguration(&VCOM_cfg[PORT_VCOMA_INDEX], PORT_VCOMA_INDEX); //Then read configuration for VCOMA
+    readConfiguration(&VCOM_cfg[PORT_VCOMB_INDEX], PORT_VCOMB_INDEX); //Then read configuration for VCOMB
+    readConfiguration(&VCOM_cfg[PORT_VCOMC_INDEX], PORT_VCOMC_INDEX); //Then read configuration for VCOMC
+    readConfiguration(&VCOM_cfg[PORT_VCOMD_INDEX], PORT_VCOMD_INDEX); //Then read configuration for VCOMD
+    
+    //Read for old cfg (in case we want to read EEPROM...)
+    readConfiguration(&OLD_CFG[PORT_VCOMA_INDEX], PORT_VCOMA_INDEX); //Then read configuration for VCOMA
+    readConfiguration(&OLD_CFG[PORT_VCOMB_INDEX], PORT_VCOMB_INDEX); //Then read configuration for VCOMB
+    readConfiguration(&OLD_CFG[PORT_VCOMC_INDEX], PORT_VCOMC_INDEX); //Then read configuration for VCOMC
+    readConfiguration(&OLD_CFG[PORT_VCOMD_INDEX], PORT_VCOMD_INDEX); //Then read configuration for VCOMD
+    
+    //Init Virtual Ports
+    initPortA(VCOM_cfg[PORT_VCOMA_INDEX].baud, VCOM_cfg[PORT_VCOMA_INDEX].dataByte, VCOM_cfg[PORT_VCOMA_INDEX].parity, VCOM_cfg[PORT_VCOMA_INDEX].stopBit);
+    initPortB(VCOM_cfg[PORT_VCOMB_INDEX].baud, VCOM_cfg[PORT_VCOMB_INDEX].dataByte, VCOM_cfg[PORT_VCOMB_INDEX].parity, VCOM_cfg[PORT_VCOMB_INDEX].stopBit);
+    initPortC(VCOM_cfg[PORT_VCOMC_INDEX].baud, VCOM_cfg[PORT_VCOMC_INDEX].dataByte, VCOM_cfg[PORT_VCOMC_INDEX].parity, VCOM_cfg[PORT_VCOMC_INDEX].stopBit);
+    initPortD(VCOM_cfg[PORT_VCOMD_INDEX].baud, VCOM_cfg[PORT_VCOMD_INDEX].dataByte, VCOM_cfg[PORT_VCOMD_INDEX].parity, VCOM_cfg[PORT_VCOMD_INDEX].stopBit);
+    
+    
+    
+    //Master Port
+    INIT_PORT(UART_BAUD_VALUE, F8BIT_MODE, ONE_STOPBIT, AVR32_NO_PARITY);
+    
+    //Boot led
+    PORTC.DIR |= DEBUG_LED;
+    SET_DEBUG_LED;
+    setWait(500);
+    CLR_DEBUG_LED;
+    /*for(int i = 0; i < 25; i++)
+    {
+        TX_WRITE(chrDebug[i]);
+    }*/
+    
+    timerInit(60000); //10 ms interrupt
+    sei(); //never forget to enable global interrupt mask !
+    
+    PORTA.DIR = 0x3F;
+    
+    
+    
+    bootSequence();
+    
+    
+    
+    while(1)
+    {
+        //WDT refresh (avoid program freeze when on crash...)
+        WATCHDOG_RESET;
+        
+        ////////////////////////////////////////////////////////
+        //Read UART A
+        
+        
+        if(portA_available()) //Check if one byte available
+        {
+            /////////////////////////////////////////
+            //Frame check
+            
+            VCOM_can_read[PORT_VCOMA_INDEX] = true;
+            if(getParitySetA()) //if parity set
+            {
+                if(getErrorStatusA()) //if parity failed (or stop bit also)
+                {
+                    VCOM_can_read[PORT_VCOMA_INDEX] = false; 
+                }
+            }
+            
+            /////////////////////////////////////////
+            
+            if(VCOM_can_read[PORT_VCOMA_INDEX]) //if we can read according to parity
+            {
+                readStatus[PORT_VCOMA_INDEX] = true;
+                bufferA[VCOMAIndex] = rxReadA(); 
+                VCOMAIndex++; 
+                VCOMA_counter = 0; //for frame timeout
+            }
+            else //if read failed
+            {
+                rxReadA(); //flush serial
+            }     
+        }
+        
+        ////////////////////////////////////////////////////////
+        //Read UART B
+        
+        
+        if(portB_available()) //Check if one byte available
+        {
+            /////////////////////////////////////////
+            //Frame check
+            
+            VCOM_can_read[PORT_VCOMB_INDEX] = true;
+            if(getParitySetB()) //if parity set
+            {
+                if(getErrorStatusB()) //if parity failed (or stop bit also)
+                {
+                    VCOM_can_read[PORT_VCOMB_INDEX] = false; 
+                }
+            }
+            
+            /////////////////////////////////////////
+            
+            
+            
+            if(VCOM_can_read[PORT_VCOMB_INDEX]) //if we can read according to parity
+            {
+                readStatus[PORT_VCOMB_INDEX] = true;
+                bufferB[VCOMBIndex] = rxReadB();
+                VCOMBIndex++; 
+                //if(VCOMBIndex > 64)
+                //    VCOMBIndex = 0;
+                VCOMB_counter = 0; //for frame timeout  
+            }
+            else //if read failed
+            {
+                rxReadB(); //flush serial
+            } 
+        }
+        
+        
+        ////////////////////////////////////////////////////////
+        //Read UART C
+        
+        
+        if(portC_available()) //Check if one byte available
+        {
+            /////////////////////////////////////////
+            //Frame check
+            
+            VCOM_can_read[PORT_VCOMC_INDEX] = true;
+            if(getParitySetC()) //if parity set
+            {
+                if(getErrorStatusC()) //if parity failed (or stop bit also)
+                {
+                    VCOM_can_read[PORT_VCOMC_INDEX] = false; 
+                }
+            }
+            
+            /////////////////////////////////////////
+            
+            
+            
+            if(VCOM_can_read[PORT_VCOMC_INDEX]) //if we can read according to parity
+            {
+                readStatus[PORT_VCOMC_INDEX] = true;
+                bufferC[VCOMCIndex] = rxReadC();
+                VCOMCIndex++; 
+                //if(VCOMBIndex > 64)
+                //    VCOMBIndex = 0;
+                VCOMC_counter = 0; //for frame timeout  
+            }
+            else //if read failed
+            {
+                rxReadC(); //flush serial
+            } 
+        }
+        
+        
+        
+        ////////////////////////////////////////////////////////
+        //Read UART D
+        
+        
+        if(portD_available()) //Check if one byte available
+        {
+            /////////////////////////////////////////
+            //Frame check
+            
+            VCOM_can_read[PORT_VCOMD_INDEX] = true;
+            if(getParitySetD()) //if parity set
+            {
+                if(getErrorStatusD()) //if parity failed (or stop bit also)
+                {
+                    VCOM_can_read[PORT_VCOMD_INDEX] = false; 
+                }
+            }
+            
+            /////////////////////////////////////////
+            
+            
+            
+            if(VCOM_can_read[PORT_VCOMD_INDEX]) //if we can read according to parity
+            {
+                readStatus[PORT_VCOMD_INDEX] = true;
+                bufferD[VCOMDIndex] = rxReadD();
+                VCOMDIndex++; 
+                //if(VCOMBIndex > 64)
+                //    VCOMBIndex = 0;
+                VCOMD_counter = 0; //for frame timeout  
+            }
+            else //if read failed
+            {
+                rxReadD(); //flush serial
+            } 
+        }
+        
+        
+        ////////////////////////////////////////////////////////
+        //Read UART Master
+        
+        
+        if(PORT_AVAILABLE > 0) //check if we have bytes to read
+        {
+            readStatus[PORT_MCOM_INDEX] = true;
+            masterBuffer[MCOMIndex] = RX_READ; //store byte into buffer
+            MCOMIndex++; //increment to next byte
+            //if(MCOMIndex > 64)
+            //    MCOMIndex = 0;
+            MCOM_counter = 0; //refresh timeout counter
+        }
+        /*else
+        {
+            readStatus[PORT_MCOM_INDEX] = false; //To prevent the bug on uC (Silicon cause ?)
+        }*/
+        
+        
+        
+
+        //Timed process (for leds, etc...)
+        if(getTimerFlag())
+        {
+            if(mainLedCounter > 240)
+            {
+                SET_DEBUG_LED;
+            }
+            else
+                CLR_DEBUG_LED;
+            
+            mainLedCounter++;
+            
+            /////////////////////////////////////////////////////////
+            //Timeout process
+
+            //For master port
+            if(MCOMIndex > 0)
+                MCOM_counter++;
+
+            //For virtual port 1
+            if(VCOMAIndex > 0)
+                VCOMA_counter++;
+
+            //For virtual port 2
+            if(VCOMBIndex > 0)
+                VCOMB_counter++;
+
+            //For virtual port 3
+            if(VCOMCIndex > 0)
+                VCOMC_counter++;
+
+            //For virtual port 4
+            if(VCOMDIndex > 0)
+                VCOMD_counter++;
+            
+            
+            senseDebugLeds(&writtenStatus, readStatus);
+            clearTimerFlag();
+        }
+        
+        
+            
+        
+        
+        ///////////////////////////////////////
+        //When buf is ready from master
+        if(MCOM_counter > SERIAL_PORT_TIMEOUT_COUNT || MCOMIndex >= 64)
+        {         
+            //Send buffer to VCOM
+            if(masterBuffer[1] == MASTER_ID) //check if frame is destinated to the MUX232
+            {
+                MCOM_scanframe(masterBuffer, MCOMIndex, VCOM_cfg);
+            }
+            else //otherwise send it through a VCOM
+            {
+                VCOM_sendframe(masterBuffer, MCOMIndex);
+            }
+            
+            MCOMIndex = 0; //reset index buffer
+            MCOM_counter = 0; //reset counter
+        }
+        
+        
+        ///////////////////////////////////////
+        //When buf is ready from VCOMA
+
+        if(VCOMA_counter > SERIAL_PORT_TIMEOUT_COUNT || VCOMAIndex >= 64)
+        {
+            writtenStatus = true;//Say a wrote has been made
+            //Send buffer to VCOM
+            MCOM_sendframe(bufferA, VCOMAIndex, PORT_VCOMA_INDEX);
+            VCOMAIndex = 0; //reset index buffer
+            VCOMA_counter = 0; //reset counter
+        }
+        
+        
+        
+        ///////////////////////////////////////
+        //When buf is ready from VCOMB
+
+        if(VCOMB_counter > SERIAL_PORT_TIMEOUT_COUNT || VCOMBIndex >= 64)
+        {
+            writtenStatus = true;//Say a wrote has been made
+            //Send buffer to VCOM
+            MCOM_sendframe(bufferB, VCOMBIndex, PORT_VCOMB_INDEX);
+            VCOMBIndex = 0; //reset index buffer
+            VCOMB_counter = 0; //reset counter
+        }
+        
+        
+        ///////////////////////////////////////
+        //When buf is ready from VCOMC
+        if(VCOMC_counter > SERIAL_PORT_TIMEOUT_COUNT || VCOMCIndex >= 64)
+        {
+            writtenStatus = true;//Say a wrote has been made
+            //Send buffer to VCOM
+            MCOM_sendframe(bufferC, VCOMCIndex, PORT_VCOMC_INDEX);
+            VCOMCIndex = 0; //reset index buffer
+            VCOMC_counter = 0; //reset counter
+        }
+
+        
+        
+
+        if(VCOMD_counter > SERIAL_PORT_TIMEOUT_COUNT || VCOMDIndex >= 64)
+        {
+
+            writtenStatus = true; //Say a wrote has been made
+            //Send buffer to VCOM
+            MCOM_sendframe(bufferD, VCOMDIndex, PORT_VCOMD_INDEX);
+            VCOMDIndex = 0; //reset index buffer
+            VCOMD_counter = 0; //reset counter
+        }
+        
+        
+    }
+    
+    
+    return 0;
+}
+
+
+
+
+///////////////////////////////////////////////////////////
+//Functions / macros
+//bool EEPROM_read -> true read from EEPROM, false -> read from RAM
+//cfgPort *cfg -> configuration where values must be read
+void readCFG(bool EEPROM_read, cfgPort *localPort)
+{
+    cfgPort *debugPort;
+
+    const uint8_t *dispBaud[] = {"9600", "19200", "38400"}; 
+    const uint8_t dispParity[] = {'N', 'E', 'O'}; //The Matrix has you...
+    const uint8_t dispData[] = {'5', '6', '7', '8'};
+    const uint8_t dispBit[] = {'1', '2'};
+    char msg[30]; //23 characters max
+    
+       
+    //Read EEPROM configuration or RAM ?
+    //if(EEPROM_read)
+    //    getEEPROMCfg();
+    
+        
+    
+    if(!EEPROM_read) //Read RAM CFG ?
+        debugPort = &localPort[PORT_VCOMA_INDEX];
+    else
+        debugPort = &OLD_CFG[PORT_VCOMA_INDEX];
+        
+        //readConfiguration(debugPort, PORT_VCOMA_INDEX); //or just get CFG read from EEPROM
+    //Disp CFGRead bytes and display directly CFG
+    for(int i = 0; i < 30; i++)
+    {
+        msg[i] = 0;
+    }
+    sprintf(msg, "%c%c%c%cVCOMA B%s F%c%c%c\r\n", 
+            STX, 
+            MASTER_ID, 
+            FRAME_ADDR_1, 
+            FRAME_ADDR_2, 
+            dispBaud[debugPort->baud], 
+            dispData[debugPort->dataByte], 
+            dispParity[debugPort->parity], 
+            dispBit[debugPort->stopBit]
+            );
+    for(uint8_t i = 0; i < 22; i++)
+        TX_WRITE(msg[i]); //Display string
+    
+    if(!EEPROM_read) //Read RAM CFG ?
+        debugPort = &localPort[PORT_VCOMB_INDEX];
+    else
+        debugPort = &OLD_CFG[PORT_VCOMB_INDEX];
+        //readConfiguration(debugPort, PORT_VCOMB_INDEX); //or just get CFG read from EEPROM
+    //Disp CFGRead bytes and display directly CFG
+    for(int i = 0; i < 30; i++)
+    {
+        msg[i] = 0;
+    }
+    
+    sprintf(msg, "%c%c%c%cVCOMB B%s F%c%c%c\r\n", 
+            STX, 
+            MASTER_ID, 
+            FRAME_ADDR_1, 
+            FRAME_ADDR_2, 
+            dispBaud[debugPort->baud], 
+            dispData[debugPort->dataByte], 
+            dispParity[debugPort->parity], 
+            dispBit[debugPort->stopBit]
+            );
+    for(uint8_t i = 0; i < 22; i++)
+        TX_WRITE(msg[i]); //Display string
+    
+    if(!EEPROM_read) //Read RAM CFG ?
+        debugPort = &localPort[PORT_VCOMC_INDEX];
+    else
+        debugPort = &OLD_CFG[PORT_VCOMC_INDEX];
+        //readConfiguration(debugPort, PORT_VCOMC_INDEX); //or just get CFG read from EEPROM
+    //Disp CFGRead bytes and display directly CFG
+    for(int i = 0; i < 30; i++)
+    {
+        msg[i] = 0;
+    }
+    sprintf(msg, "%c%c%c%cVCOMC B%s F%c%c%c\r\n", 
+            STX, 
+            MASTER_ID, 
+            FRAME_ADDR_1, 
+            FRAME_ADDR_2, 
+            dispBaud[debugPort->baud],
+            dispData[debugPort->dataByte], 
+            dispParity[debugPort->parity], 
+            dispBit[debugPort->stopBit]
+            );
+    for(uint8_t i = 0; i < 22; i++)
+        TX_WRITE(msg[i]); //Display string
+    
+    if(!EEPROM_read) //Read RAM CFG ?
+        debugPort = &localPort[PORT_VCOMD_INDEX];
+    else
+        debugPort = &OLD_CFG[PORT_VCOMD_INDEX];
+        //readConfiguration(debugPort, PORT_VCOMD_INDEX); //or just get CFG read from EEPROM
+    //Disp CFGRead bytes and display directly CFG
+    for(int i = 0; i < 30; i++)
+    {
+        msg[i] = 0;
+    }
+    sprintf(msg, "%c%c%c%cVCOMD B%s F%c%c%c\r\n", 
+            STX, 
+            MASTER_ID, 
+            FRAME_ADDR_1, 
+            FRAME_ADDR_2, 
+            dispBaud[debugPort->baud], 
+            dispData[debugPort->dataByte], 
+            dispParity[debugPort->parity], 
+            dispBit[debugPort->stopBit]
+            );
+    for(uint8_t i = 0; i < 22; i++)
+        TX_WRITE(msg[i]); //Display string
+}
+
+
+//Set RAM Cfg that we must apply it to the EEPROM !
+//cfgPort *cfg -> configuration where values must be applied
+//uint8_t *localBuffer -> frame command structured by "BxxxxxFxxxCx" (see documentation)
+void setRAMCfg(cfgPort *cfg, uint8_t *localBuffer)
+{
+    //Set default CFG
+    uint8_t localBaudsCfg = ADDR_BAUD_9600, localDataCfg = ADDR_DATA_F8; 
+    uint8_t localParityCfg = ADDR_PARITY_NONE, localSBCfg = ADDR_STOP_ONE;
+    uint8_t localVCOMIndex;
+    uint8_t localIndex;
+    uint8_t i;
+    
+    ////////////////////////////////////////////////////////
+    //VCOM CONFIGURATION
+
+    //Be sure our first character is B (so we can estimate that frame is good enough)
+    if (localBuffer[MAX232_B_STR_INDEX] == MAX232_B_STR_CHAR) 
+    {
+        localIndex = MAX232_B_STR_INDEX;
+        i = 0;
+        //Calculate number of bytes between B and F char into frame (9600 bauds or 19200/38400 bauds for example)
+        while (localBuffer[localIndex] != MAX232_F_STR_CHAR) 
+        {
+            i++;
+            localIndex++;
+        }
+        if (i < 6) //number of char = 4 ? ("9600")
+        {
+
+            //////////////////////////////////////////
+            //At first set bauds speed
+            if (localBuffer[MAX232_B_STR_INDEX + 1] == '9' && localBuffer[MAX232_B_STR_INDEX + 2] == '6' &&
+                localBuffer[MAX232_B_STR_INDEX + 3] == '0' && localBuffer[MAX232_B_STR_INDEX + 4] == '0') 
+            {
+                //Put CFG into 9600 bauds
+                localBaudsCfg = ADDR_BAUD_9600;
+            }
+            //////////////////////////////////////////
+            //Set Data bits
+            localDataCfg = localBuffer[MAX232_B_STR_INDEX + 6] - '5'; // Shift to 0 because ADDR_DATA_F5 = 0, ADDR_DATA_F6 = 1, ect...
+            //We have already localDataCfg as ADDR_PARITY_NONE (keep aat this value if it equals to 'N')
+            //localParityCfg = (localBuffer[MAX232_B_STR_INDEX + 7] == 'N') ? ADDR_PARITY_NONE : localDataCfg;
+            //Does it equals to ODD ?
+            localParityCfg = (localBuffer[MAX232_B_STR_INDEX + 7] == 'O') ? ADDR_PARITY_ODD : localParityCfg;
+            //or EVEN ?
+            localParityCfg = (localBuffer[MAX232_B_STR_INDEX + 7] == 'E') ? ADDR_PARITY_EVEN : localParityCfg;
+            //Read (localBuffer[MAX232_B_STR_INDEX + 8] for stop bits -> 1/2
+            localSBCfg = (localBuffer[MAX232_B_STR_INDEX + 8] == '2'); //Return condition state only...
+            //Read (localBuffer[MAX232_B_STR_INDEX + 10] VCOM -> A/B/C/D
+            localVCOMIndex = localBuffer[MAX232_B_STR_INDEX + 10] - CESAR_SHIFT;
+        } 
+        else //number of char = 5 ? ("19200"/"38400")
+        {
+            //////////////////////////////////////////
+            //At first set bauds speed
+
+            if (localBuffer[MAX232_B_STR_INDEX + 1] == '1' && localBuffer[MAX232_B_STR_INDEX + 2] == '9' &&
+                localBuffer[MAX232_B_STR_INDEX + 3] == '2' && localBuffer[MAX232_B_STR_INDEX + 4] == '0' &&
+                localBuffer[MAX232_B_STR_INDEX + 5] == '0') 
+            {
+                //Put CFG into 19200 bauds
+                localBaudsCfg = ADDR_BAUD_19200;
+            }
+
+            if (localBuffer[MAX232_B_STR_INDEX + 1] == '3' && localBuffer[MAX232_B_STR_INDEX + 2] == '8' &&
+                localBuffer[MAX232_B_STR_INDEX + 3] == '4' && localBuffer[MAX232_B_STR_INDEX + 4] == '0' &&
+                localBuffer[MAX232_B_STR_INDEX + 5] == '0') 
+            {
+                //Put CFG into 38400 bauds
+                localBaudsCfg = ADDR_BAUD_38400;
+            }
+
+            //////////////////////////////////////////
+
+            //Set Data bits
+            localDataCfg = localBuffer[MAX232_B_STR_INDEX + 7] - '5'; // Shift to 0 because ADDR_DATA_F5 = 0, ADDR_DATA_F6 = 1, ect...
+            //We have already localDataCfg as ADDR_PARITY_NONE (keep aat this value if it equals to 'N')
+            //localParityCfg = (localBuffer[MAX232_B_STR_INDEX + 7] == 'N') ? ADDR_PARITY_NONE : localDataCfg;
+            //Does it equals to ODD ?
+            localParityCfg = (localBuffer[MAX232_B_STR_INDEX + 8] == 'O') ? ADDR_PARITY_ODD : localParityCfg;
+            //or EVEN ?
+            localParityCfg = (localBuffer[MAX232_B_STR_INDEX + 8] == 'E') ? ADDR_PARITY_EVEN : localParityCfg;
+            //Read (localBuffer[MAX232_B_STR_INDEX + 8] for stop bits -> 1/2
+            localSBCfg = (localBuffer[MAX232_B_STR_INDEX + 9] == '2'); //Return condition state only for stop bits...
+            //Read (localBuffer[MAX232_B_STR_INDEX + 10] VCOM -> A/B/C/D
+            localVCOMIndex = localBuffer[MAX232_B_STR_INDEX + 11] - CESAR_SHIFT;
+            //TX_WRITE('F'); TX_WRITE('D'); TX_WRITE('P'); TX_WRITE(localBuffer[MAX232_B_STR_INDEX + 9]);
+            //TX_WRITE('F'); TX_WRITE('D'); TX_WRITE('P'); TX_WRITE(localBuffer[MAX232_B_STR_INDEX + 11]);
+            //TX_WRITE('F'); TX_WRITE('D'); TX_WRITE('P'); TX_WRITE(localParityCfg);
+        }
+        //Write into RAM buffer (and prepare for EEPROM writing)
+        writeConfiguration(&cfg[localVCOMIndex], localBaudsCfg, localParityCfg, localDataCfg, localSBCfg, localVCOMIndex);
+    }
+    ////////////////////////////////////////////////////////
+    
+}
+
+
+//Read a frame destinated to the MUX232 itself
+//uint8_t *data -> frame buffer (with SOF, ADDR, ..., EOF)
+//uint8_t n -> size of that buffer
+//cfgPort *localPort -> configuration structure that will be read/written (depend on cmd that inside of *data)
+void MCOM_scanframe(uint8_t *data, uint8_t n, cfgPort *localPort)
+{
+    
+    uint8_t *localBuffer; //Calculate byte quantity of effective data
+    uint8_t i;
+    
+    
+    while(localBuffer == NULL)
+    {
+        localBuffer = malloc(n-6);
+        setWait(5);
+    }
+    
+    for(i = 0; i < n-6; i++)
+        localBuffer[i] = 0;
+    
+    //At first, check if first byte is the start of text
+    if(data[0] == STX)
+    {
+        if(data[2] == FRAME_ADDR_1 && data[3] == FRAME_ADDR_2) //check if we have the MUX address identifier
+        {    
+            if(data[n-1] == CR_CHAR) //check the end of text (second byte)
+            {
+                if(data[n-2] == LF_CHAR) //check the end of text (first byte)
+                {
+                    for(i = 0; i < n-6; i++) //regarder la valeur de n
+                    {
+                        localBuffer[i] = data[i + 4]; //Get effective data
+                    }
+                    //Once data was collected, analysis it
+                    if(!stringComp(localBuffer, MAX232_WRITE_COMMAND, n-6, MAX232_WRITE_SIZE)) //if the command is Write configuration
+                    {
+                        //Save CFG into EEPROM
+                        setEEPROMCfg();
+                        TX_WRITE(0x2);
+                        TX_WRITE(FRAME_ADDR_1);
+                        TX_WRITE(FRAME_ADDR_2);
+                        TX_WRITE(MASTER_ID);
+                        TX_WRITE('W');TX_WRITE('R');
+                        TX_WRITE('C');TX_WRITE('F');TX_WRITE('G');
+                        TX_WRITE(LF_CHAR);TX_WRITE(CR_CHAR);
+                        
+                        TX_WRITE(0x2);
+                        TX_WRITE(FRAME_ADDR_1);
+                        TX_WRITE(FRAME_ADDR_2);
+                        TX_WRITE(MASTER_ID);
+                        TX_WRITE('R');TX_WRITE('E');TX_WRITE('B');TX_WRITE('O');TX_WRITE('O');TX_WRITE('T');
+                        TX_WRITE(LF_CHAR);TX_WRITE(CR_CHAR);
+                        
+                        while(1); //Force WDT reboot
+                    }
+                    else if(!stringComp(localBuffer, MAX232_READ_RAM_COMMAND, n-6, MAX232_READ_RAM_SIZE)) //is this Read configuration ?
+                    {
+                        //Read CFG from RAM
+                        readCFG(false, localPort);
+                    }
+                    else if(!stringComp(localBuffer, MAX232_READ_ROM_COMMAND, n-6, MAX232_READ_ROM_SIZE)) //is this Read configuration ?
+                    {
+                        //Read CFG from EEPROM
+                        readCFG(true, localPort);
+                    }
+                    else //otherwise that might be set configuration
+                    {
+                        setRAMCfg(localPort, localBuffer);      
+                        TX_WRITE(0x2);
+                        TX_WRITE(FRAME_ADDR_1);
+                        TX_WRITE(FRAME_ADDR_2);
+                        TX_WRITE(MASTER_ID);
+                        TX_WRITE('S');TX_WRITE('E');TX_WRITE('T');
+                        TX_WRITE('C');TX_WRITE('F');TX_WRITE('G');
+                        TX_WRITE(LF_CHAR);TX_WRITE(CR_CHAR);
+                    }
+                }
+            }
+        }
+    }
+}
+
+
+
+//Send a frame from virtual port to master port
+//uint8_t *data -> data buffer read from device
+//uint8_t n -> size of that buffer
+//uint8_t port tell which port that come from (0~3)
+void MCOM_sendframe(uint8_t *data, uint8_t n, uint8_t port)
+{
+    //////////////////////////
+    //Send frame
+    
+    TX_WRITE(0x02); //STX
+    TX_WRITE(port + CESAR_SHIFT); //Which virtual port called master port ?
+    TX_WRITE(FRAME_ADDR_1); //ADDR
+    TX_WRITE(FRAME_ADDR_2); //ADDR
+    
+    for(uint8_t i = 0; i < n; i++) //DATA
+        TX_WRITE(data[i]);
+    
+    TX_WRITE(LF_CHAR); //End of frame
+    TX_WRITE(CR_CHAR); //End of frame
+    //////////////////////////
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////
+//Send a frame from master port to virtual port (that calculate whose port to send ?)
+//uint8_t *data -> frame buffer (with SOF, ADDR, ..., EOF)
+//uint8_t n -> size of that buffer
+void VCOM_sendframe(uint8_t *data, uint8_t n)
+{
+    uint16_t addrFunctions[] = {&txWriteA, &txWriteB, &txWriteC, &txWriteD }; //list of available functions addresses
+    void (*localTxWrite)(); //function pointer
+
+
+    ////////////////////////////////
+    
+    //At first, check if first byte is the start of text
+    if(data[0] == STX)
+    {
+        if(data[2] == FRAME_ADDR_1 && data[3] == FRAME_ADDR_2) //check if we have the MUX address identifier
+        {    
+            if(data[n-1] == CR_CHAR) //check the end of text (second byte)
+            {
+                if(data[n-2] == LF_CHAR) //check the end of text (first byte)
+                {
+                    data[1]-=CESAR_SHIFT; //convert port index to buffer equivalent
+                    localTxWrite = addrFunctions[(data[1] < 3) ? data[1] : 3 ]; //data[3]
+                    for(int i = 4; i < n-2; i++) //send frame without (STX + FRAME_ADDR_B1 + FRAME_ADDR_B2 + LF_CHAR + CR_CHAR)
+                    {
+                        localTxWrite(data[i]);
+                    }
+                    
+                }
+            }
+        }
+    }
+}
+
+
+
+
+
+
+/**
+ void bootSequence(void)
+ Display boot message and launch test led sequence
+ */
+void bootSequence(void)
+{
+    TX_WRITE(STX);
+    TX_WRITE(MASTER_ID);TX_WRITE(FRAME_ADDR_1);TX_WRITE(FRAME_ADDR_1);
+    TX_WRITE('B');TX_WRITE('O');TX_WRITE('O');TX_WRITE('T');
+    TX_WRITE(LF_CHAR);TX_WRITE(CR_CHAR);
+    debugLedsTest();
+}
+
+
+
+
+/**
+ void debugLedsTest(void)
+ Debug leds test sequence
+ */
+void debugLedsTest(void)
+{
+    //All leds are on PORTA -> Bit shifting is adviced
+    PORTA.OUT = 1;
+    for(int i = 0; i < 6; i++)
+    {
+        PORTA.OUT <<= 1;
+        _delay_ms(250);
+    }
+    PORTA.OUT = 0;
+}
+
+/**
+ void senseDebugLeds(void)
+ ->Call this to update leds status
+ * bool *hasWritten -> put written status of write led
+ * bool *hasWritten -> put read status of read leds port
+ */
+void senseDebugLeds(bool *hasWritten, bool *hasRead)
+{
+    
+
+    
+    ///////////////////////////
+    //Check Master Port
+    if(*hasWritten)
+    {
+        SET_MASTER_WR_LED;
+        *hasWritten = false;
+    }
+    else
+        CLR_MASTER_WR_LED;
+    
+    if(hasRead[PORT_MCOM_INDEX])
+    {
+        SET_MASTER_RD_LED;
+        hasRead[PORT_MCOM_INDEX] = false;
+    }
+    else
+        CLR_MASTER_RD_LED;
+    
+    ///////////////////////////
+    //Check VCOMA
+    if(hasRead[PORT_VCOMA_INDEX])
+    {
+        SET_VCOMA_RD_LED;
+        hasRead[PORT_VCOMA_INDEX] = false;
+    }
+    else
+        CLR_VCOMA_RD_LED;
+    
+    ///////////////////////////
+    //Check VCOMB
+    if(hasRead[PORT_VCOMB_INDEX])
+    {
+        SET_VCOMB_RD_LED;
+        hasRead[PORT_VCOMB_INDEX] = false;
+    }
+    else
+        CLR_VCOMB_RD_LED;
+    
+    ///////////////////////////
+    //Check VCOMC
+    if(hasRead[PORT_VCOMC_INDEX])
+    {
+        SET_VCOMC_RD_LED;
+        hasRead[PORT_VCOMC_INDEX] = false;
+    }
+    else
+        CLR_VCOMC_RD_LED;
+    
+    
+    ///////////////////////////
+    //Check VCOMD
+    if(hasRead[PORT_VCOMD_INDEX])
+    {
+        SET_VCOMD_RD_LED;
+        hasRead[PORT_VCOMD_INDEX] = false;
+    }
+    else
+        CLR_VCOMD_RD_LED;
+}
+
+
+//String comparator (better version...)
+//uint8_t *str1 -> First string to compare
+//uint8_t *str2 -> Second string to compare
+//uint8_t n -> Size of first string
+//uint8_t m -> Size of second string
+bool stringComp(uint8_t *str1, uint8_t *str2, uint8_t n, uint8_t m)
+{
+    bool result = false;
+    
+    if(n == m)
+    {
+        for(int i = 0; i < n; i++)
+        {
+            //TX_WRITE('A');TX_WRITE(':');TX_WRITE(str1[i]);TX_WRITE(" ");
+            //TX_WRITE('B');TX_WRITE(':');TX_WRITE(str2[i]);TX_WRITE("\n");TX_WRITE("\r");
+            if(str1[i] != str2[i]) //different string...
+                result = true; 
+        }
+    }
+    else
+    {
+        result = true;
+    } 
+    return result;
+}
+
+
+
+
+
+
diff --git a/Version 2.0/RS232_MUX.X/nbproject/Makefile-default.mk b/Version 2.0/RS232_MUX.X/nbproject/Makefile-default.mk
new file mode 100644
index 0000000..8956481
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/nbproject/Makefile-default.mk	
@@ -0,0 +1,154 @@
+#
+# Generated Makefile - do not edit!
+#
+# Edit the Makefile in the project folder instead (../Makefile). Each target
+# has a -pre and a -post target defined where you can add customized code.
+#
+# This makefile implements configuration specific macros and targets.
+
+
+# Include project Makefile
+ifeq "${IGNORE_LOCAL}" "TRUE"
+# do not include local makefile. User is passing all local related variables already
+else
+include Makefile
+# Include makefile containing local settings
+ifeq "$(wildcard nbproject/Makefile-local-default.mk)" "nbproject/Makefile-local-default.mk"
+include nbproject/Makefile-local-default.mk
+endif
+endif
+
+# Environment
+MKDIR=gnumkdir -p
+RM=rm -f 
+MV=mv 
+CP=cp 
+
+# Macros
+CND_CONF=default
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+IMAGE_TYPE=debug
+OUTPUT_SUFFIX=elf
+DEBUGGABLE_SUFFIX=elf
+FINAL_IMAGE=${DISTDIR}/RS232_MUX.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
+else
+IMAGE_TYPE=production
+OUTPUT_SUFFIX=hex
+DEBUGGABLE_SUFFIX=elf
+FINAL_IMAGE=${DISTDIR}/RS232_MUX.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
+endif
+
+ifeq ($(COMPARE_BUILD), true)
+COMPARISON_BUILD=-mafrlcsj
+else
+COMPARISON_BUILD=
+endif
+
+# Object Directory
+OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE}
+
+# Distribution Directory
+DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE}
+
+# Source Files Quoted if spaced
+SOURCEFILES_QUOTED_IF_SPACED=main.c
+
+# Object Files Quoted if spaced
+OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/main.o
+POSSIBLE_DEPFILES=${OBJECTDIR}/main.o.d
+
+# Object Files
+OBJECTFILES=${OBJECTDIR}/main.o
+
+# Source Files
+SOURCEFILES=main.c
+
+
+
+CFLAGS=
+ASFLAGS=
+LDLIBSOPTIONS=
+
+############# Tool locations ##########################################
+# If you copy a project from one host to another, the path where the  #
+# compiler is installed may be different.                             #
+# If you open this project with MPLAB X in the new host, this         #
+# makefile will be regenerated and the paths will be corrected.       #
+#######################################################################
+# fixDeps replaces a bunch of sed/cat/printf statements that slow down the build
+FIXDEPS=fixDeps
+
+.build-conf:  ${BUILD_SUBPROJECTS}
+ifneq ($(INFORMATION_MESSAGE), )
+	@echo $(INFORMATION_MESSAGE)
+endif
+	${MAKE}  -f nbproject/Makefile-default.mk ${DISTDIR}/RS232_MUX.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
+
+MP_PROCESSOR_OPTION=AVR32DA48
+# ------------------------------------------------------------------------------------
+# Rules for buildStep: compile
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+${OBJECTDIR}/main.o: main.c  .generated_files/flags/default/189e35e8b80d1055f943337af00f1a3eb5a3e3f0 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/main.o.d 
+	@${RM} ${OBJECTDIR}/main.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1 -g -DDEBUG  -gdwarf-2  -x c -D__$(MP_PROCESSOR_OPTION)__   -mdfp="${DFP_DIR}/xc8"  -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fshort-enums -fno-common -funsigned-char -funsigned-bitfields -Wall -DXPRJ_default=$(CND_CONF)  $(COMPARISON_BUILD)  -gdwarf-3 -mno-const-data-in-progmem     -MD -MP -MF "${OBJECTDIR}/main.o.d" -MT "${OBJECTDIR}/main.o.d" -MT ${OBJECTDIR}/main.o -o ${OBJECTDIR}/main.o main.c 
+	
+else
+${OBJECTDIR}/main.o: main.c  .generated_files/flags/default/c23a79e077f40f861ae8b9b0a728ca7712177407 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/main.o.d 
+	@${RM} ${OBJECTDIR}/main.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -x c -D__$(MP_PROCESSOR_OPTION)__   -mdfp="${DFP_DIR}/xc8"  -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fshort-enums -fno-common -funsigned-char -funsigned-bitfields -Wall -DXPRJ_default=$(CND_CONF)  $(COMPARISON_BUILD)  -gdwarf-3 -mno-const-data-in-progmem     -MD -MP -MF "${OBJECTDIR}/main.o.d" -MT "${OBJECTDIR}/main.o.d" -MT ${OBJECTDIR}/main.o -o ${OBJECTDIR}/main.o main.c 
+	
+endif
+
+# ------------------------------------------------------------------------------------
+# Rules for buildStep: assemble
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+else
+endif
+
+# ------------------------------------------------------------------------------------
+# Rules for buildStep: assembleWithPreprocess
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+else
+endif
+
+# ------------------------------------------------------------------------------------
+# Rules for buildStep: link
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+${DISTDIR}/RS232_MUX.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES}  nbproject/Makefile-${CND_CONF}.mk    
+	@${MKDIR} ${DISTDIR} 
+	${MP_CC} $(MP_EXTRA_LD_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -Wl,-Map=${DISTDIR}/RS232_MUX.X.${IMAGE_TYPE}.map  -D__DEBUG=1  -DXPRJ_default=$(CND_CONF)  -Wl,--defsym=__MPLAB_BUILD=1   -mdfp="${DFP_DIR}/xc8"   -gdwarf-2 -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fshort-enums -fno-common -funsigned-char -funsigned-bitfields -Wall -gdwarf-3 -mno-const-data-in-progmem     $(COMPARISON_BUILD) -Wl,--memorysummary,${DISTDIR}/memoryfile.xml -o ${DISTDIR}/RS232_MUX.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX}  -o ${DISTDIR}/RS232_MUX.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}  ${OBJECTFILES_QUOTED_IF_SPACED}      -Wl,--start-group  -Wl,-lm -Wl,--end-group  -Wl,--defsym=__MPLAB_DEBUG=1,--defsym=__DEBUG=1
+	@${RM} ${DISTDIR}/RS232_MUX.X.${IMAGE_TYPE}.hex 
+	
+	
+else
+${DISTDIR}/RS232_MUX.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES}  nbproject/Makefile-${CND_CONF}.mk   
+	@${MKDIR} ${DISTDIR} 
+	${MP_CC} $(MP_EXTRA_LD_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -Wl,-Map=${DISTDIR}/RS232_MUX.X.${IMAGE_TYPE}.map  -DXPRJ_default=$(CND_CONF)  -Wl,--defsym=__MPLAB_BUILD=1   -mdfp="${DFP_DIR}/xc8"  -Wl,--gc-sections -O1 -ffunction-sections -fdata-sections -fshort-enums -fno-common -funsigned-char -funsigned-bitfields -Wall -gdwarf-3 -mno-const-data-in-progmem     $(COMPARISON_BUILD) -Wl,--memorysummary,${DISTDIR}/memoryfile.xml -o ${DISTDIR}/RS232_MUX.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX}  -o ${DISTDIR}/RS232_MUX.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX}  ${OBJECTFILES_QUOTED_IF_SPACED}      -Wl,--start-group  -Wl,-lm -Wl,--end-group 
+	${MP_CC_DIR}\\avr-objcopy -O ihex "${DISTDIR}/RS232_MUX.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX}" "${DISTDIR}/RS232_MUX.X.${IMAGE_TYPE}.hex"
+	
+endif
+
+
+# Subprojects
+.build-subprojects:
+
+
+# Subprojects
+.clean-subprojects:
+
+# Clean Targets
+.clean-conf: ${CLEAN_SUBPROJECTS}
+	${RM} -r ${OBJECTDIR}
+	${RM} -r ${DISTDIR}
+
+# Enable dependency checking
+.dep.inc: .depcheck-impl
+
+DEPFILES=$(wildcard ${POSSIBLE_DEPFILES})
+ifneq (${DEPFILES},)
+include ${DEPFILES}
+endif
diff --git a/Version 2.0/RS232_MUX.X/nbproject/Makefile-genesis.properties b/Version 2.0/RS232_MUX.X/nbproject/Makefile-genesis.properties
new file mode 100644
index 0000000..1f75960
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/nbproject/Makefile-genesis.properties	
@@ -0,0 +1,13 @@
+#
+#Tue Jan 28 08:59:12 CET 2025
+default.languagetoolchain.version=2.46
+default.Pack.dfplocation=C\:\\Program Files\\Microchip\\MPLABX\\v6.20\\packs\\Microchip\\AVR-Dx_DFP\\2.4.286
+default.com-microchip-mplab-mdbcore-PK5Tool-PK5ToolImpl.md5=8ed9aa4326bfc0c1a849e697826741b7
+conf.ids=default
+default.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc8\\v2.46\\bin
+host.id=18cy-2f4f-c2
+configurations-xml=91a64c6b48f737a138a1cb4669b9988e
+com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=f612087c95360c842296d189edfe3321
+default.com-microchip-mplab-nbide-toolchain-xc8-XC8LanguageToolchain.md5=bf89cdcdd6c0a49174fe4b605ef2b42d
+proj.dir=C\:\\Users\\eniro\\MPLABXProjects\\RS232_MUX.X
+host.platform=windows
diff --git a/Version 2.0/RS232_MUX.X/nbproject/Makefile-impl.mk b/Version 2.0/RS232_MUX.X/nbproject/Makefile-impl.mk
new file mode 100644
index 0000000..36e8491
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/nbproject/Makefile-impl.mk	
@@ -0,0 +1,69 @@
+#
+# Generated Makefile - do not edit!
+#
+# Edit the Makefile in the project folder instead (../Makefile). Each target
+# has a pre- and a post- target defined where you can add customization code.
+#
+# This makefile implements macros and targets common to all configurations.
+#
+# NOCDDL
+
+
+# Building and Cleaning subprojects are done by default, but can be controlled with the SUB
+# macro. If SUB=no, subprojects will not be built or cleaned. The following macro
+# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf
+# and .clean-reqprojects-conf unless SUB has the value 'no'
+SUB_no=NO
+SUBPROJECTS=${SUB_${SUB}}
+BUILD_SUBPROJECTS_=.build-subprojects
+BUILD_SUBPROJECTS_NO=
+BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}}
+CLEAN_SUBPROJECTS_=.clean-subprojects
+CLEAN_SUBPROJECTS_NO=
+CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}}
+
+
+# Project Name
+PROJECTNAME=RS232_MUX.X
+
+# Active Configuration
+DEFAULTCONF=default
+CONF=${DEFAULTCONF}
+
+# All Configurations
+ALLCONFS=default 
+
+
+# build
+.build-impl: .build-pre
+	${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-conf
+
+
+# clean
+.clean-impl: .clean-pre
+	${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .clean-conf
+
+# clobber
+.clobber-impl: .clobber-pre .depcheck-impl
+	    ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default clean
+
+
+
+# all
+.all-impl: .all-pre .depcheck-impl
+	    ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default build
+
+
+
+# dependency checking support
+.depcheck-impl:
+#	@echo "# This code depends on make tool being used" >.dep.inc
+#	@if [ -n "${MAKE_VERSION}" ]; then \
+#	    echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES}))" >>.dep.inc; \
+#	    echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \
+#	    echo "include \$${DEPFILES}" >>.dep.inc; \
+#	    echo "endif" >>.dep.inc; \
+#	else \
+#	    echo ".KEEP_STATE:" >>.dep.inc; \
+#	    echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \
+#	fi
diff --git a/Version 2.0/RS232_MUX.X/nbproject/Makefile-local-default.mk b/Version 2.0/RS232_MUX.X/nbproject/Makefile-local-default.mk
new file mode 100644
index 0000000..3222869
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/nbproject/Makefile-local-default.mk	
@@ -0,0 +1,37 @@
+#
+# Generated Makefile - do not edit!
+#
+#
+# This file contains information about the location of compilers and other tools.
+# If you commmit this file into your revision control server, you will be able to 
+# to checkout the project and build it from the command line with make. However,
+# if more than one person works on the same project, then this file might show
+# conflicts since different users are bound to have compilers in different places.
+# In that case you might choose to not commit this file and let MPLAB X recreate this file
+# for each user. The disadvantage of not commiting this file is that you must run MPLAB X at
+# least once so the file gets created and the project can be built. Finally, you can also
+# avoid using this file at all if you are only building from the command line with make.
+# You can invoke make with the values of the macros:
+# $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ...  
+#
+SHELL=cmd.exe
+PATH_TO_IDE_BIN=C:/Program Files/Microchip/MPLABX/v6.20/mplab_platform/platform/../mplab_ide/modules/../../bin/
+# Adding MPLAB X bin directory to path.
+PATH:=C:/Program Files/Microchip/MPLABX/v6.20/mplab_platform/platform/../mplab_ide/modules/../../bin/:$(PATH)
+# Path to java used to run MPLAB X when this makefile was created
+MP_JAVA_PATH="C:\Program Files\Microchip\MPLABX\v6.20\sys\java\zulu8.64.0.19-ca-fx-jre8.0.345-win_x64/bin/"
+OS_CURRENT="$(shell uname -s)"
+MP_CC="C:\Program Files\Microchip\xc8\v2.46\bin\xc8-cc.exe"
+# MP_CPPC is not defined
+# MP_BC is not defined
+MP_AS="C:\Program Files\Microchip\xc8\v2.46\bin\xc8-cc.exe"
+MP_LD="C:\Program Files\Microchip\xc8\v2.46\bin\xc8-cc.exe"
+MP_AR="C:\Program Files\Microchip\xc8\v2.46\bin\xc8-ar.exe"
+DEP_GEN=${MP_JAVA_PATH}java -jar "C:/Program Files/Microchip/MPLABX/v6.20/mplab_platform/platform/../mplab_ide/modules/../../bin/extractobjectdependencies.jar"
+MP_CC_DIR="C:\Program Files\Microchip\xc8\v2.46\bin"
+# MP_CPPC_DIR is not defined
+# MP_BC_DIR is not defined
+MP_AS_DIR="C:\Program Files\Microchip\xc8\v2.46\bin"
+MP_LD_DIR="C:\Program Files\Microchip\xc8\v2.46\bin"
+MP_AR_DIR="C:\Program Files\Microchip\xc8\v2.46\bin"
+DFP_DIR=C:/Program Files/Microchip/MPLABX/v6.20/packs/Microchip/AVR-Dx_DFP/2.4.286
diff --git a/Version 2.0/RS232_MUX.X/nbproject/Makefile-variables.mk b/Version 2.0/RS232_MUX.X/nbproject/Makefile-variables.mk
new file mode 100644
index 0000000..e7c8ba8
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/nbproject/Makefile-variables.mk	
@@ -0,0 +1,10 @@
+#
+# Generated - do not edit!
+#
+# NOCDDL
+#
+CND_BASEDIR=`pwd`
+# default configuration
+CND_ARTIFACT_DIR_default=dist/default/production
+CND_ARTIFACT_NAME_default=RS232_MUX.X.production.hex
+CND_ARTIFACT_PATH_default=dist/default/production/RS232_MUX.X.production.hex
diff --git a/Version 2.0/RS232_MUX.X/nbproject/configurations.xml b/Version 2.0/RS232_MUX.X/nbproject/configurations.xml
new file mode 100644
index 0000000..77745f2
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/nbproject/configurations.xml	
@@ -0,0 +1,309 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configurationDescriptor version="65">
+  <logicalFolder name="root" displayName="root" projectFiles="true">
+    <logicalFolder name="HeaderFiles"
+                   displayName="Header Files"
+                   projectFiles="true">
+      <itemPath>frame_definitions.h</itemPath>
+      <itemPath>hardware_config.h</itemPath>
+      <itemPath>hardware_timer.h</itemPath>
+      <itemPath>hardware_TL16C754C.h</itemPath>
+      <itemPath>hardware_uart.h</itemPath>
+      <itemPath>hardware_uart_OLD.h</itemPath>
+      <itemPath>parameters.h</itemPath>
+      <itemPath>pins.h</itemPath>
+    </logicalFolder>
+    <logicalFolder name="ExternalFiles"
+                   displayName="Important Files"
+                   projectFiles="true">
+      <itemPath>Makefile</itemPath>
+    </logicalFolder>
+    <logicalFolder name="LinkerScript"
+                   displayName="Linker Files"
+                   projectFiles="true">
+    </logicalFolder>
+    <logicalFolder name="SourceFiles"
+                   displayName="Source Files"
+                   projectFiles="true">
+      <itemPath>main.c</itemPath>
+    </logicalFolder>
+  </logicalFolder>
+  <projectmakefile>Makefile</projectmakefile>
+  <confs>
+    <conf name="default" type="2">
+      <toolsSet>
+        <developmentServer>localhost</developmentServer>
+        <targetDevice>AVR32DA48</targetDevice>
+        <targetHeader></targetHeader>
+        <targetPluginBoard></targetPluginBoard>
+        <platformTool>PK5Tool</platformTool>
+        <languageToolchain>XC8</languageToolchain>
+        <languageToolchainVersion>2.46</languageToolchainVersion>
+        <platform>3</platform>
+      </toolsSet>
+      <packs>
+        <pack name="AVR-Dx_DFP" vendor="Microchip" version="2.4.286"/>
+      </packs>
+      <ScriptingSettings>
+      </ScriptingSettings>
+      <compileType>
+        <linkerTool>
+          <linkerLibItems>
+          </linkerLibItems>
+        </linkerTool>
+        <archiverTool>
+        </archiverTool>
+        <loading>
+          <useAlternateLoadableFile>false</useAlternateLoadableFile>
+          <parseOnProdLoad>false</parseOnProdLoad>
+          <alternateLoadableFile></alternateLoadableFile>
+        </loading>
+        <subordinates>
+        </subordinates>
+      </compileType>
+      <makeCustomizationType>
+        <makeCustomizationPreStepEnabled>false</makeCustomizationPreStepEnabled>
+        <makeUseCleanTarget>false</makeUseCleanTarget>
+        <makeCustomizationPreStep></makeCustomizationPreStep>
+        <makeCustomizationPostStepEnabled>false</makeCustomizationPostStepEnabled>
+        <makeCustomizationPostStep></makeCustomizationPostStep>
+        <makeCustomizationPutChecksumInUserID>false</makeCustomizationPutChecksumInUserID>
+        <makeCustomizationEnableLongLines>false</makeCustomizationEnableLongLines>
+        <makeCustomizationNormalizeHexFile>false</makeCustomizationNormalizeHexFile>
+      </makeCustomizationType>
+      <HI-TECH-COMP>
+        <property key="additional-warnings" value="true"/>
+        <property key="asmlist" value="true"/>
+        <property key="call-prologues" value="false"/>
+        <property key="default-bitfield-type" value="true"/>
+        <property key="default-char-type" value="true"/>
+        <property key="define-macros" value=""/>
+        <property key="disable-optimizations" value="false"/>
+        <property key="extra-include-directories" value=""/>
+        <property key="favor-optimization-for" value="-speed,+space"/>
+        <property key="garbage-collect-data" value="true"/>
+        <property key="garbage-collect-functions" value="true"/>
+        <property key="identifier-length" value="255"/>
+        <property key="local-generation" value="false"/>
+        <property key="operation-mode" value="free"/>
+        <property key="opt-xc8-compiler-strict_ansi" value="false"/>
+        <property key="optimization-assembler" value="true"/>
+        <property key="optimization-assembler-files" value="true"/>
+        <property key="optimization-debug" value="false"/>
+        <property key="optimization-invariant-enable" value="false"/>
+        <property key="optimization-invariant-value" value="16"/>
+        <property key="optimization-level" value="-O1"/>
+        <property key="optimization-speed" value="false"/>
+        <property key="optimization-stable-enable" value="false"/>
+        <property key="preprocess-assembler" value="true"/>
+        <property key="short-enums" value="true"/>
+        <property key="tentative-definitions" value="-fno-common"/>
+        <property key="undefine-macros" value=""/>
+        <property key="use-cci" value="false"/>
+        <property key="use-iar" value="false"/>
+        <property key="verbose" value="false"/>
+        <property key="warning-level" value="-3"/>
+        <property key="what-to-do" value="ignore"/>
+      </HI-TECH-COMP>
+      <HI-TECH-LINK>
+        <property key="additional-options-checksum" value=""/>
+        <property key="additional-options-checksumAVR" value=""/>
+        <property key="additional-options-code-offset" value=""/>
+        <property key="additional-options-command-line" value=""/>
+        <property key="additional-options-errata" value=""/>
+        <property key="additional-options-extend-address" value="false"/>
+        <property key="additional-options-trace-type" value=""/>
+        <property key="additional-options-use-response-files" value="false"/>
+        <property key="backup-reset-condition-flags" value="false"/>
+        <property key="calibrate-oscillator" value="false"/>
+        <property key="calibrate-oscillator-value" value="0x3400"/>
+        <property key="clear-bss" value="true"/>
+        <property key="code-model-external" value="wordwrite"/>
+        <property key="code-model-rom" value=""/>
+        <property key="create-html-files" value="false"/>
+        <property key="data-model-ram" value=""/>
+        <property key="data-model-size-of-double" value="24"/>
+        <property key="data-model-size-of-double-gcc" value="no-short-double"/>
+        <property key="data-model-size-of-float" value="24"/>
+        <property key="data-model-size-of-float-gcc" value="no-short-float"/>
+        <property key="display-class-usage" value="false"/>
+        <property key="display-hex-usage" value="false"/>
+        <property key="display-overall-usage" value="true"/>
+        <property key="display-psect-usage" value="false"/>
+        <property key="extra-lib-directories" value=""/>
+        <property key="fill-flash-options-addr" value=""/>
+        <property key="fill-flash-options-const" value=""/>
+        <property key="fill-flash-options-how" value="0"/>
+        <property key="fill-flash-options-inc-const" value="1"/>
+        <property key="fill-flash-options-increment" value=""/>
+        <property key="fill-flash-options-seq" value=""/>
+        <property key="fill-flash-options-what" value="0"/>
+        <property key="format-hex-file-for-download" value="false"/>
+        <property key="initialize-data" value="true"/>
+        <property key="input-libraries" value="libm"/>
+        <property key="keep-generated-startup.as" value="false"/>
+        <property key="link-in-c-library" value="true"/>
+        <property key="link-in-c-library-gcc" value=""/>
+        <property key="link-in-peripheral-library" value="false"/>
+        <property key="managed-stack" value="false"/>
+        <property key="opt-xc8-linker-file" value="false"/>
+        <property key="opt-xc8-linker-link_startup" value="false"/>
+        <property key="opt-xc8-linker-serial" value=""/>
+        <property key="program-the-device-with-default-config-words" value="false"/>
+        <property key="remove-unused-sections" value="true"/>
+      </HI-TECH-LINK>
+      <PK5Tool>
+        <property key="AutoSelectMemRanges" value="auto"/>
+        <property key="SecureSegment.SegmentProgramming" value="FullChipProgramming"/>
+        <property key="ToolFirmwareFilePath"
+                  value="Press to browse for a specific firmware version"/>
+        <property key="ToolFirmwareOption.UpdateOptions"
+                  value="ToolFirmwareOption.UseLatest"/>
+        <property key="ToolFirmwareToolPack"
+                  value="Press to select which tool pack to use"/>
+        <property key="communication.activationmode" value="nohv"/>
+        <property key="communication.interface" value="updi"/>
+        <property key="communication.interface.jtag" value="2wire"/>
+        <property key="communication.speed" value="0,100"/>
+        <property key="debugoptions.debug-startup" value="Use system settings"/>
+        <property key="debugoptions.reset-behaviour" value="Use system settings"/>
+        <property key="debugoptions.useswbreakpoints" value="false"/>
+        <property key="event.recorder.debugger.behavior" value="Running"/>
+        <property key="event.recorder.enabled" value="false"/>
+        <property key="event.recorder.scvd.files" value=""/>
+        <property key="hwtoolclock.frcindebug" value="false"/>
+        <property key="lastid" value=""/>
+        <property key="memories.aux" value="false"/>
+        <property key="memories.bootflash" value="true"/>
+        <property key="memories.configurationmemory" value="true"/>
+        <property key="memories.configurationmemory2" value="true"/>
+        <property key="memories.dataflash" value="true"/>
+        <property key="memories.eeprom" value="true"/>
+        <property key="memories.exclude.configurationmemory" value="true"/>
+        <property key="memories.flashdata" value="true"/>
+        <property key="memories.id" value="true"/>
+        <property key="memories.instruction.ram.ranges"
+                  value="${memories.instruction.ram.ranges}"/>
+        <property key="memories.programmemory" value="true"/>
+        <property key="memories.programmemory.ranges" value="0-3fff"/>
+        <property key="poweroptions.powerenable" value="false"/>
+        <property key="programmerToGoImageName" value="RS232_MUX_ptg"/>
+        <property key="programoptions.donoteraseauxmem" value="false"/>
+        <property key="programoptions.eraseb4program" value="true"/>
+        <property key="programoptions.ledbrightness" value="5"/>
+        <property key="programoptions.pgcconfig" value="pull down"/>
+        <property key="programoptions.pgcresistor.value" value="4.7"/>
+        <property key="programoptions.pgdconfig" value="pull down"/>
+        <property key="programoptions.pgdresistor.value" value="4.7"/>
+        <property key="programoptions.pgmentry.voltage" value="low"/>
+        <property key="programoptions.pgmspeed" value="Med"/>
+        <property key="programoptions.preservedataflash" value="false"/>
+        <property key="programoptions.preserveeeprom" value="false"/>
+        <property key="programoptions.preserveeeprom.ranges" value="1400-15ff"/>
+        <property key="programoptions.preserveprogram.ranges" value=""/>
+        <property key="programoptions.preserveprogramrange" value="false"/>
+        <property key="programoptions.preserveuserid" value="false"/>
+        <property key="programoptions.program.otpconfig" value="false"/>
+        <property key="programoptions.programcalmem" value="false"/>
+        <property key="programoptions.programuserotp" value="false"/>
+        <property key="programoptions.smart.program" value="When debugging only"/>
+        <property key="programoptions.testmodeentrymethod" value="VDDFirst"/>
+        <property key="ptgProgramImage" value="true"/>
+        <property key="ptgSendImage" value="true"/>
+        <property key="toolpack.updateoptions"
+                  value="toolpack.updateoptions.uselatestoolpack"/>
+        <property key="toolpack.updateoptions.packversion"
+                  value="Press to select which tool pack to use"/>
+        <property key="voltagevalue" value="5.0"/>
+      </PK5Tool>
+      <Tool>
+        <property key="AutoSelectMemRanges" value="auto"/>
+        <property key="SecureSegment.SegmentProgramming" value="FullChipProgramming"/>
+        <property key="ToolFirmwareFilePath"
+                  value="Press to browse for a specific firmware version"/>
+        <property key="ToolFirmwareOption.UpdateOptions"
+                  value="ToolFirmwareOption.UseLatest"/>
+        <property key="ToolFirmwareToolPack"
+                  value="Press to select which tool pack to use"/>
+        <property key="communication.activationmode" value="nohv"/>
+        <property key="communication.interface" value="updi"/>
+        <property key="communication.interface.jtag" value="2wire"/>
+        <property key="communication.speed" value="0,100"/>
+        <property key="debugoptions.debug-startup" value="Use system settings"/>
+        <property key="debugoptions.reset-behaviour" value="Use system settings"/>
+        <property key="debugoptions.useswbreakpoints" value="false"/>
+        <property key="event.recorder.debugger.behavior" value="Running"/>
+        <property key="event.recorder.enabled" value="false"/>
+        <property key="event.recorder.scvd.files" value=""/>
+        <property key="hwtoolclock.frcindebug" value="false"/>
+        <property key="lastid" value=""/>
+        <property key="memories.aux" value="false"/>
+        <property key="memories.bootflash" value="true"/>
+        <property key="memories.configurationmemory" value="true"/>
+        <property key="memories.configurationmemory2" value="true"/>
+        <property key="memories.dataflash" value="true"/>
+        <property key="memories.eeprom" value="true"/>
+        <property key="memories.exclude.configurationmemory" value="true"/>
+        <property key="memories.flashdata" value="true"/>
+        <property key="memories.id" value="true"/>
+        <property key="memories.instruction.ram.ranges"
+                  value="${memories.instruction.ram.ranges}"/>
+        <property key="memories.programmemory" value="true"/>
+        <property key="memories.programmemory.ranges" value="0-3fff"/>
+        <property key="poweroptions.powerenable" value="false"/>
+        <property key="programmerToGoFilePath"
+                  value="C:/Users/eniro/MPLABXProjects/RS232_MUX.X/debug/default/RS232_MUX_ptg"/>
+        <property key="programmerToGoImageName" value="RS232_MUX_ptg"/>
+        <property key="programoptions.donoteraseauxmem" value="false"/>
+        <property key="programoptions.eraseb4program" value="true"/>
+        <property key="programoptions.ledbrightness" value="5"/>
+        <property key="programoptions.pgcconfig" value="pull down"/>
+        <property key="programoptions.pgcresistor.value" value="4.7"/>
+        <property key="programoptions.pgdconfig" value="pull down"/>
+        <property key="programoptions.pgdresistor.value" value="4.7"/>
+        <property key="programoptions.pgmentry.voltage" value="low"/>
+        <property key="programoptions.pgmspeed" value="Med"/>
+        <property key="programoptions.preservedataflash" value="false"/>
+        <property key="programoptions.preserveeeprom" value="false"/>
+        <property key="programoptions.preserveeeprom.ranges" value="1400-15ff"/>
+        <property key="programoptions.preserveprogram.ranges" value=""/>
+        <property key="programoptions.preserveprogramrange" value="false"/>
+        <property key="programoptions.preserveuserid" value="false"/>
+        <property key="programoptions.program.otpconfig" value="false"/>
+        <property key="programoptions.programcalmem" value="false"/>
+        <property key="programoptions.programuserotp" value="false"/>
+        <property key="programoptions.smart.program" value="When debugging only"/>
+        <property key="programoptions.testmodeentrymethod" value="VDDFirst"/>
+        <property key="ptgProgramImage" value="true"/>
+        <property key="ptgSendImage" value="true"/>
+        <property key="toolpack.updateoptions"
+                  value="toolpack.updateoptions.uselatestoolpack"/>
+        <property key="toolpack.updateoptions.packversion"
+                  value="Press to select which tool pack to use"/>
+        <property key="voltagevalue" value="5.0"/>
+      </Tool>
+      <XC8-CO>
+        <property key="coverage-enable" value=""/>
+        <property key="stack-guidance" value="false"/>
+      </XC8-CO>
+      <XC8-config-global>
+        <property key="advanced-elf" value="true"/>
+        <property key="constdata-progmem" value="false"/>
+        <property key="gcc-opt-driver-new" value="true"/>
+        <property key="gcc-opt-std" value="-std=c99"/>
+        <property key="gcc-output-file-format" value="dwarf-3"/>
+        <property key="mapped-progmem" value="false"/>
+        <property key="omit-pack-options" value="false"/>
+        <property key="omit-pack-options-new" value="1"/>
+        <property key="output-file-format" value="-mcof,+elf"/>
+        <property key="smart-io-format" value=""/>
+        <property key="stack-size-high" value="auto"/>
+        <property key="stack-size-low" value="auto"/>
+        <property key="stack-size-main" value="auto"/>
+        <property key="stack-type" value="compiled"/>
+        <property key="user-pack-device-support" value=""/>
+        <property key="wpo-lto" value="false"/>
+      </XC8-config-global>
+    </conf>
+  </confs>
+</configurationDescriptor>
diff --git a/Version 2.0/RS232_MUX.X/nbproject/private/configurations.xml b/Version 2.0/RS232_MUX.X/nbproject/private/configurations.xml
new file mode 100644
index 0000000..e39eaac
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/nbproject/private/configurations.xml	
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configurationDescriptor version="65">
+  <projectmakefile>Makefile</projectmakefile>
+  <defaultConf>0</defaultConf>
+  <confs>
+    <conf name="default" type="2">
+      <platformToolSN>:=MPLABComm-USB-Microchip:=&lt;vid>04D8:=&lt;pid>9036:=&lt;rev>0100:=&lt;man>Microchip Technology Incorporated:=&lt;prod>MPLAB PICkit 5:=&lt;sn>020026702RYN001776:=&lt;drv>x:=&lt;xpt>b:=end</platformToolSN>
+      <languageToolchainDir>C:\Program Files\Microchip\xc8\v2.46\bin</languageToolchainDir>
+      <mdbdebugger version="1">
+        <placeholder1>place holder 1</placeholder1>
+        <placeholder2>place holder 2</placeholder2>
+      </mdbdebugger>
+      <runprofile version="6">
+        <args></args>
+        <rundir></rundir>
+        <buildfirst>true</buildfirst>
+        <console-type>0</console-type>
+        <terminal-type>0</terminal-type>
+        <remove-instrumentation>0</remove-instrumentation>
+        <environment>
+        </environment>
+      </runprofile>
+    </conf>
+  </confs>
+</configurationDescriptor>
diff --git a/Version 2.0/RS232_MUX.X/nbproject/private/private.xml b/Version 2.0/RS232_MUX.X/nbproject/private/private.xml
new file mode 100644
index 0000000..a1c86bf
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/nbproject/private/private.xml	
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
+    <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="1">
+        <file>
+            <url>main.c</url>
+            <bookmark id="1">
+                <name/>
+                <line>122</line>
+                <key/>
+            </bookmark>
+        </file>
+    </editor-bookmarks>
+    <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
+        <group>
+            <file>file:/C:/Users/eniro/MPLABXProjects/RS232_MUX.X/frame_definitions.h</file>
+            <file>file:/C:/Users/eniro/MPLABXProjects/RS232_MUX.X/pins.h</file>
+            <file>file:/C:/Users/eniro/MPLABXProjects/RS232_MUX.X/hardware_config.h</file>
+            <file>file:/C:/Users/eniro/MPLABXProjects/RS232_MUX.X/main.c</file>
+            <file>file:/C:/Users/eniro/MPLABXProjects/RS232_MUX.X/hardware_timer.h</file>
+            <file>file:/C:/Users/eniro/MPLABXProjects/RS232_MUX.X/hardware_TL16C754C.h</file>
+            <file>file:/C:/Users/eniro/MPLABXProjects/RS232_MUX.X/hardware_uart.h</file>
+            <file>file:/C:/Users/eniro/MPLABXProjects/RS232_MUX.X/parameters.h</file>
+        </group>
+    </open-files>
+</project-private>
diff --git a/Version 2.0/RS232_MUX.X/nbproject/project.xml b/Version 2.0/RS232_MUX.X/nbproject/project.xml
new file mode 100644
index 0000000..fb10da3
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/nbproject/project.xml	
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+    <type>com.microchip.mplab.nbide.embedded.makeproject</type>
+    <configuration>
+        <data xmlns="http://www.netbeans.org/ns/make-project/1">
+            <name>RS232_MUX</name>
+            <creation-uuid>6e316bd3-a53c-40f5-8c8f-4890b26d6f44</creation-uuid>
+            <make-project-type>0</make-project-type>
+            <sourceEncoding>ISO-8859-1</sourceEncoding>
+            <make-dep-projects/>
+            <sourceRootList/>
+            <confList>
+                <confElem>
+                    <name>default</name>
+                    <type>2</type>
+                </confElem>
+            </confList>
+            <formatting>
+                <project-formatting-style>false</project-formatting-style>
+            </formatting>
+        </data>
+    </configuration>
+</project>
diff --git a/Version 2.0/RS232_MUX.X/parameters.h b/Version 2.0/RS232_MUX.X/parameters.h
new file mode 100644
index 0000000..f4069ee
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/parameters.h	
@@ -0,0 +1,70 @@
+/* Microchip Technology Inc. and its subsidiaries.  You may use this software 
+ * and any derivatives exclusively with Microchip products. 
+ * 
+ * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS".  NO WARRANTIES, WHETHER 
+ * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED 
+ * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A 
+ * PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION 
+ * WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. 
+ *
+ * IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+ * INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+ * WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS 
+ * BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE.  TO THE 
+ * FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS 
+ * IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF 
+ * ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
+ *
+ * MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE 
+ * TERMS. 
+ */
+
+/* 
+ * File: parameters.h
+ * Author: Enzo Niro
+ * Comments: App. parameters
+ * Revision history: 1.2
+ */
+
+// This is a guard condition so that contents of this file are not included
+// more than once.  
+#ifndef PARAMETERS_H
+#define	PARAMETERS_H
+
+#include <xc.h> // include processor files - each processor file is guarded.  
+
+
+
+//////////////////////////////////
+//TL16C Setup
+
+//Set XTal used with the IC
+
+//#define TL16C_8MHZ_CLK
+#define TL16C_16MHZ_CLK
+//#define TL16C_24MHZ_CLK
+
+//////////////////////////////////
+
+//////////////////////////////////
+//AVR32 UART PORT Setup
+
+//Choose master port
+
+//#define USE_PORT_1
+#define USE_PORT_2
+//#define USE_PORT_3
+//#define USE_PORT_4
+
+
+//////////////////////////////////
+
+#define MAX_VCOM_PORTS                  4
+
+//How much count we need to send buffer ? (Each count made every TIMEBASE_COUNT in ms)
+#define SERIAL_PORT_TIMEOUT_COUNT       5
+
+#define TIMEBASE_COUNT                  1 //in ms -> Increment counters of ports' timeout
+
+#endif	/* XC_HEADER_TEMPLATE_H */
+
diff --git a/Version 2.0/RS232_MUX.X/pins.h b/Version 2.0/RS232_MUX.X/pins.h
new file mode 100644
index 0000000..0ffc3c1
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/pins.h	
@@ -0,0 +1,61 @@
+/* Microchip Technology Inc. and its subsidiaries.  You may use this software 
+ * and any derivatives exclusively with Microchip products. 
+ * 
+ * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS".  NO WARRANTIES, WHETHER 
+ * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED 
+ * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A 
+ * PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION 
+ * WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. 
+ *
+ * IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
+ * INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
+ * WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS 
+ * BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE.  TO THE 
+ * FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS 
+ * IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF 
+ * ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
+ *
+ * MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE 
+ * TERMS. 
+ */
+
+/* 
+ * File:   
+ * Author: 
+ * Comments:
+ * Revision history: 
+ */
+
+// This is a guard condition so that contents of this file are not included
+// more than once.  
+#ifndef APP_PINS_H
+#define	APP_PINS_H
+
+#include <xc.h> // include processor files - each processor file is guarded.  
+
+
+#define SET_DEBUG_LED       PORTC.OUT |= (1 << 2)
+#define CLR_DEBUG_LED       PORTC.OUT &= ~(1 << 2)
+
+//Master write LED 
+#define SET_MASTER_WR_LED   PORTA.OUT |= 0x20
+#define CLR_MASTER_WR_LED   PORTA.OUT &= ~(0x20)
+//Master read LED
+#define SET_MASTER_RD_LED   PORTA.OUT |= 0x10
+#define CLR_MASTER_RD_LED   PORTA.OUT &= ~(0x10)
+//VCOMA read LED
+#define SET_VCOMA_RD_LED    PORTA.OUT |= 0x01
+#define CLR_VCOMA_RD_LED    PORTA.OUT &= ~(0x01)
+//VCOMB read LED
+#define SET_VCOMB_RD_LED    PORTA.OUT |= 0x02
+#define CLR_VCOMB_RD_LED    PORTA.OUT &= ~(0x02)
+//VCOMC read LED
+#define SET_VCOMC_RD_LED    PORTA.OUT |= 0x04
+#define CLR_VCOMC_RD_LED    PORTA.OUT &= ~(0x04)
+//VCOMD read LED
+#define SET_VCOMD_RD_LED    PORTA.OUT |= 0x08
+#define CLR_VCOMD_RD_LED    PORTA.OUT &= ~(0x08)
+
+
+#endif	/* XC_HEADER_TEMPLATE_H */
+
diff --git a/Version 2.0/RS232_MUX.X/queuelogs/debugtool.txt b/Version 2.0/RS232_MUX.X/queuelogs/debugtool.txt
new file mode 100644
index 0000000..331898d
--- /dev/null
+++ b/Version 2.0/RS232_MUX.X/queuelogs/debugtool.txt	
@@ -0,0 +1,161 @@
+454 1725892693510 GEN4_CONNECT_DIAGNOSTICS:MPLABCommTool is NOT null
+454 1725892693510 GEN4_CONNECT_DIAGNOSTICS:AttachedToolPID = 9036, AttachedToolVID = 4d8
+454 1725892693510 GEN4_CONNECT_DIAGNOSTICS:transport type = USB
+454 1725892693510 GEN4_CONNECT_DIAGNOSTICS:AttachedToolPID = 9036, AttachedToolVID = 4d8
+454 1725892694254 com.microchip.mplab.mdbcore.RealICETool.RIDbgToolCom
+454 1725892694254 GEN4_CONNECT_DIAGNOSTICS:Before MPLABCommTool.Connect()
+454 1725892694254 GEN4_CONNECT_DIAGNOSTICS:After MPLABCommTool.Connect()
+454 1725892694254 GEN4_CONNECT_DIAGNOSTICS:MPLABCommTool.Connect() returned MPLABCOMM_NO_ERROR
+454 1725892694254 GEN4_CONNECT_DIAGNOSTICS:Attaching to MPLABCommTool plugnplay
+454 1725892694268 GEN4_CONNECT_DIAGNOSTICS:Adding new plug and play observer com.microchip.mplab.mdbcore.RI4Tool.RI4ToolBase$RI4PlugNPlayObserver@2c66c788
+454 1725892694268 GEN4_CONNECT_DIAGNOSTICS:Begin PlugNPlayObservers list dump:
+454 1725892694268 GEN4_CONNECT_DIAGNOSTICS:com.microchip.mplab.mdbcore.RI4Tool.RI4ToolBase$RI4PlugNPlayObserver@2c66c788
+454 1725892694268 GEN4_CONNECT_DIAGNOSTICS:End PlugNPlayObservers list dump:
+454 1725892694301 GEN4_CONNECT_DIAGNOSTICS:Registering for alternate PNP notifications. CommPnPCriteria.cPIDList = [9035], CommPnPCriteria.cSerialNumber = 020026702ryn001776
+
+454 1725892700810 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Pre:init
+454 1725892700810 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Payload
+454 1725892700810 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: Values:
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: pcAddress = 7fffffffffffffff, Vpp = 5,00, useRowEraseIfVoltageIsLow = false, voltageBelowWhichUseRowErase = 0,00, deviceName = AVR32DA48, programmerType = AVR
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: MemInfo values:
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: mask = ffff, exists = true, startAddr = 00000000, endAddr = 00007fff, rowSize = 0200, rowEraseSize = 0200, addrInc = 0001, widthProgram = 0001
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: mask = 00ff, exists = true, startAddr = 00821050, endAddr = 00831043, rowSize = 0001, rowEraseSize = 0000, addrInc = 0001, widthProgram = 0001
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: mask = 0000, exists = false, startAddr = 00000000, endAddr = 00000000, rowSize = 0000, rowEraseSize = 0000, addrInc = 0000, widthProgram = 0000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: mask = 00ff, exists = true, startAddr = 00001400, endAddr = 000015ff, rowSize = 0001, rowEraseSize = 0000, addrInc = 0001, widthProgram = 0001
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: mask = 00ff, exists = true, startAddr = 00001080, endAddr = 0000109f, rowSize = 0020, rowEraseSize = 0000, addrInc = 0001, widthProgram = 0001
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: mask = 0000, exists = false, startAddr = 00000000, endAddr = 00000000, rowSize = 0000, rowEraseSize = 0200, addrInc = 0000, widthProgram = 0000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: mask = 0000, exists = false, startAddr = 00000000, endAddr = 00000000, rowSize = 0000, rowEraseSize = 0000, addrInc = 0001, widthProgram = 0001
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: mask = 0000, exists = false, startAddr = 00000000, endAddr = 00000000, rowSize = 0000, rowEraseSize = 0000, addrInc = 0000, widthProgram = 0000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: mask = 0000, exists = false, startAddr = 00000000, endAddr = 00000000, rowSize = 0000, rowEraseSize = 0000, addrInc = 0000, widthProgram = 0000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: mask = 0000, exists = false, startAddr = 00000000, endAddr = 00000000, rowSize = 0000, rowEraseSize = 0000, addrInc = 0000, widthProgram = 0000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: mask = 0000, exists = false, startAddr = 00000000, endAddr = 00000000, rowSize = 0000, rowEraseSize = 0000, addrInc = 0000, widthProgram = 0000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: mask = 0000, exists = false, startAddr = 00000000, endAddr = 00000000, rowSize = 0000, rowEraseSize = 0000, addrInc = 0001, widthProgram = 0001
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: mask = 0000, exists = false, startAddr = 00000000, endAddr = 00000000, rowSize = 0000, rowEraseSize = 0000, addrInc = 0000, widthProgram = 0000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: mask = 0000, exists = false, startAddr = 00000000, endAddr = 00000000, rowSize = 0000, rowEraseSize = 0000, addrInc = 0000, widthProgram = 0000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: mask = 0000, exists = false, startAddr = 00000000, endAddr = 00000000, rowSize = 0000, rowEraseSize = 0000, addrInc = 0000, widthProgram = 0000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: mask = 0000, exists = false, startAddr = 00000000, endAddr = 00000000, rowSize = 0000, rowEraseSize = 0000, addrInc = 0000, widthProgram = 0000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: mask = 7fffffff, exists = true, startAddr = 00001100, endAddr = 0000117f, rowSize = 0001, rowEraseSize = 0000, addrInc = 0001, widthProgram = 0001
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: mask = 0000, exists = false, startAddr = 00000000, endAddr = 00000000, rowSize = 0000, rowEraseSize = 0000, addrInc = 0000, widthProgram = 0000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: mask = 0000, exists = false, startAddr = 00000000, endAddr = 00000000, rowSize = 0000, rowEraseSize = 0000, addrInc = 0000, widthProgram = 0000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: mask = 0000, exists = false, startAddr = 00000000, endAddr = 00000000, rowSize = 0000, rowEraseSize = 0000, addrInc = 0000, widthProgram = 0000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: mask = 0000, exists = false, startAddr = 00000000, endAddr = 00000000, rowSize = 0000, rowEraseSize = 0000, addrInc = 0000, widthProgram = 0000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: mask = 0000, exists = false, startAddr = 00000000, endAddr = 00000000, rowSize = 0000, rowEraseSize = 0000, addrInc = 0000, widthProgram = 0000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: mask = 0000, exists = false, startAddr = 00000000, endAddr = 00000000, rowSize = 0000, rowEraseSize = 0000, addrInc = 0000, widthProgram = 0000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 DeviceInfo: CfgRequiredBitsMask Values:
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 00001100, Mask = 00000000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 00001101, Mask = 00000000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 00001102, Mask = 00000000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 00001104, Mask = 0000ffff
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 00001106, Mask = 0000ffff
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 00001110, Mask = 00000000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 00001111, Mask = 00000000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 00001112, Mask = 00000000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 00001113, Mask = 00000000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 00001114, Mask = 00000000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 00001115, Mask = 00000000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 00001116, Mask = 00000000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 00001117, Mask = 00000000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 00001118, Mask = 00000000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 00001119, Mask = 00000000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 0000111a, Mask = 00000000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 0000111b, Mask = 00000000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 0000111c, Mask = 00000000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 0000111d, Mask = 00000000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 0000111e, Mask = 00000000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 0000111f, Mask = 00000000
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 00821050, Mask = 000000ff
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 00821051, Mask = 000000ff
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 00821052, Mask = 00000007
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 00821055, Mask = 000000ed
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 00821056, Mask = 00000007
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 00821057, Mask = 000000ff
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 00821058, Mask = 000000ff
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Address = 00831040, Mask = ffffffff
+454 1725892700811 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 BasicInfo: Values:
+454 1725892700812 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 BasicInfo: InputStream = com.microchip.mplab.libs.toolpacksupport.EquatableFileInputStream@cc306916, ToolFlavor = PIC32C
+454 1725892700812 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Payload End
+265 1725892714783 GEN4_CONNECT_DIAGNOSTICS:Calling Update on plug and play observer com.microchip.mplab.mdbcore.RI4Tool.RI4ToolBase$RI4PlugNPlayObserver@2c66c788
+265 1725892714783 GEN4_CONNECT_DIAGNOSTICS:Entering plug and play Update(). Attached PID = 9036
+454 1725892715592 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Post:init
+454 1725892715592 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Return Value
+454 1725892715592 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 none
+454 1725892715592 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Return End
+
+454 1725892715592 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Pre:GetInterfaceProvider
+454 1725892715592 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Payload
+454 1725892715592 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 RI4DebugInterface
+454 1725892715592 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Payload End
+454 1725892715592 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Post:GetInterfaceProvider
+454 1725892715592 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Return Value
+454 1725892715592 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 com.microchip.mplab.libs.RI4ToolsController.implementations.RI4DebugInterfaceImpl@8315f9
+454 1725892715592 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Return End
+
+454 1725892715769 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Pre:GetInterfaceProvider
+454 1725892715769 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Payload
+454 1725892715769 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 RI4ProgramInterface
+454 1725892715769 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Payload End
+454 1725892715769 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Post:GetInterfaceProvider
+454 1725892715769 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Return Value
+454 1725892715769 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 com.microchip.mplab.libs.RI4ToolsController.implementations.RI4ProgramInterfaceImpl@166b2d8f
+454 1725892715769 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Return End
+
+454 1725892715862 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Pre:GetInterfaceProvider
+454 1725892715862 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Payload
+454 1725892715862 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 RI4ConnectInterface
+454 1725892715862 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Payload End
+454 1725892715863 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Post:GetInterfaceProvider
+454 1725892715863 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Return Value
+454 1725892715863 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 com.microchip.mplab.libs.PK4ToolsController.PK4ConnectInterfaceImpl@6fd8a14d
+454 1725892715863 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Return End
+
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_CONNECT_INT_LOG_AVR32DA48 Pre:selectCore
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_CONNECT_INT_LOG_AVR32DA48 Payload
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_CONNECT_INT_LOG_AVR32DA48 AVR32DA48
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_CONNECT_INT_LOG_AVR32DA48 Payload End
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_CONNECT_INT_LOG_AVR32DA48 Post:selectCore
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_CONNECT_INT_LOG_AVR32DA48 Return Value
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_CONNECT_INT_LOG_AVR32DA48 none
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_CONNECT_INT_LOG_AVR32DA48 Return End
+
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Pre:GetInterfaceProvider
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Payload
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 RI4ControllerDiagnosticsInterface
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Payload End
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Post:GetInterfaceProvider
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Return Value
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 com.microchip.mplab.libs.RI4ToolsController.implementations.RI4ControllerDiagnosticsInterfaceImpl@5caeddb1
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Return End
+
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Pre:GetInterfaceProvider
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Payload
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 ProgrammerToGo
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Payload End
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Post:GetInterfaceProvider
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Return Value
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 com.microchip.mplab.libs.RI4ToolsController.implementations.ProgrammerToGoImpl@728163ca
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Return End
+
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Pre:GetInterfaceProvider
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Payload
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Status
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Payload End
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Post:GetInterfaceProvider
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Return Value
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 null
+454 1725892715866 GEN4_TO_CONTROLLER_LOG:GEN4_INIT_INT_LOG_AVR32DA48 Return End
+
+454 1725892715883 GEN4_TO_CONTROLLER_LOG:GEN4_CONNECT_INT_LOG_AVR32DA48 Pre:EstablishCommunincations
+454 1725892715883 GEN4_TO_CONTROLLER_LOG:GEN4_CONNECT_INT_LOG_AVR32DA48 Payload
+454 1725892715883 GEN4_TO_CONTROLLER_LOG:GEN4_CONNECT_INT_LOG_AVR32DA48 com.microchip.mplab.mdbcore.PK5Tool.PK5Com@224ea191
+454 1725892715883 GEN4_TO_CONTROLLER_LOG:GEN4_CONNECT_INT_LOG_AVR32DA48 Payload End
+454 1725892715889 GEN4_TO_CONTROLLER_LOG:GEN4_CONNECT_INT_LOG_AVR32DA48 Post:EstablishCommunincations
+454 1725892715889 GEN4_TO_CONTROLLER_LOG:GEN4_CONNECT_INT_LOG_AVR32DA48 Return Value
+454 1725892715890 GEN4_TO_CONTROLLER_LOG:GEN4_CONNECT_INT_LOG_AVR32DA48 true
+454 1725892715890 GEN4_TO_CONTROLLER_LOG:GEN4_CONNECT_INT_LOG_AVR32DA48 Return End
+
+454 1725892715890 GEN4_TO_CONTROLLER_LOG:GEN4_CONNECT_INT_LOG_AVR32DA48 Pre:GetFirmwareInfo
+454 1725892715890 GEN4_TO_CONTROLLER_LOG:GEN4_CONNECT_INT_LOG_AVR32DA48 Payload
+454 1725892715890 GEN4_TO_CONTROLLER_LOG:GEN4_CONNECT_INT_LOG_AVR32DA48 null
+454 1725892715890 GEN4_TO_CONTROLLER_LOG:GEN4_CONNECT_INT_LOG_AVR32DA48 Payload End
+454 1725892715893 XXXX 1725892715893, Thread 454: com.Send returned false 
+454 1725892715894 XXXX 1725892715894, Thread 454: execCommand: exception after writeSideChanel null 
