+#ifndef CONFIG_NO__FLASH_BYTE_READACCESS
+# define HAVE_FLASH_BYTE_READACCESS 1
+#else
+# define HAVE_FLASH_BYTE_READACCESS 0
+#endif
+/* If HAVE_FLASH_BYTE_READACCESS is defined to 1, byte mode access to FLASH is
+ * compiled in. Byte mode sometimes might be used by some programming softwares
+ * (avrdude in terminal mode). Without this feature the device would return "0"
+ * instead the right content of the flash memory.
+ */
+
+#ifdef CONFIG_USE__EXCESSIVE_ASSEMBLER
+# define USE_EXCESSIVE_ASSEMBLER 1
+#else
+# define USE_EXCESSIVE_ASSEMBLER 0
+#endif
+/* This macro enables large codeareas of hand-optimized assembler code.
+ * WARNING:
+ * It will only work properly on devices with <64k of flash memory and SRAM.
+ * Some configuration macros (when changed) may not be applied correctly
+ * (since their behaviour is raced within asm)!
+ * Nevertheless this feature saves lots of memory.
+ */
+
+#ifdef CONFIG_USE__BOOTUP_CLEARRAM
+# define USE_BOOTUP_CLEARRAM 1
+#else
+# define USE_BOOTUP_CLEARRAM 0
+#endif
+/* This macro enables some (init3) code, executed at bootup.
+ * This codefragment will safely overwrite the whole SRAM with "0"
+ * (except registers and IO), since RESET will NOT clear old RAM content.
+ */
+
+#ifdef CONFIG_NO__BOOTLOADERENTRY_FROMSOFTWARE
+# define HAVE_BOOTLOADERENTRY_FROMSOFTWARE 0
+#else
+# define HAVE_BOOTLOADERENTRY_FROMSOFTWARE 1
+#endif
+/*
+ * Enable firmware to boot the bootloader without
+ * user intervention
+ */
+
+#ifdef CONFIG_NO__BOOTLOADER_HIDDENEXITCOMMAND
+# define HAVE_BOOTLOADER_HIDDENEXITCOMMAND 0
+#else
+# define HAVE_BOOTLOADER_HIDDENEXITCOMMAND 0xff
+#endif
+/*
+ * When enabling "BOOTLOADER_HIDDENEXITCOMMAND", then
+ * sending the RAW-ISP command "0xff 0xXX 0xXX 0xXX"
+ * will cause the bootloader to start the firmware
+ * as soon as the programming software disconnects.
+ */
+
+#ifdef CONFIG_BOOTLOADER_LOOPCYCLES_TIMEOUT
+# define BOOTLOADER_LOOPCYCLES_TIMEOUT (CONFIG_BOOTLOADER_LOOPCYCLES_TIMEOUT)
+#else
+# define BOOTLOADER_LOOPCYCLES_TIMEOUT (0)
+#endif
+/*
+ * When greater than "0", "BOOTLOADER_LOOPCYCLES_TIMEOUT"
+ * defines how many 16bit loopcycles can be cycled,
+ * before bootloader times out and starts user
+ * firmware.
+ * Of course "BOOTLOADER_CAN_EXIT" must be enabled.
+ * If value is even too small, bootloader will not
+ * exit as long as bootLoaderConditionSimple stays on.
+ */
+
+#ifdef CONFIG_HAVE__BOOTLOADER_ABORTTIMEOUTONACT
+#endif
+/*
+ * When defined, the bootloader will abort the timeout when
+ * it sees some activity (bootLoaderConditionSimple() or
+ * programming).
+ * After aborting timeout, the bootloader falls back to
+ * conventional exitting.
+ */
+
+#ifdef CONFIG_HAVE__BOOTLOADER_ALWAYSENTERPROGRAMMODE
+#endif
+/*
+ * Ignore bootLoaderCondition() (BUT NOT bootLoaderConditionSimple())
+ * and always enter the program-mode.
+ * This is helpful to emulate behaviour of Arduino bootloaders
+ */
+
+#ifdef CONFIG_HAVE__BOOTLOADER_IGNOREPROGBUTTON
+# if ( (defined(CONFIG_HAVE__BOOTLOADER_ALWAYSENTERPROGRAMMODE)) && (defined(BOOTLOADER_CAN_EXIT)) && (BOOTLOADER_LOOPCYCLES_TIMEOUT >= 8) )
+# define BOOTLOADER_IGNOREPROGBUTTON 1
+# else
+# define BOOTLOADER_IGNOREPROGBUTTON 0
+# endif
+#endif
+/*
+ * Generates an USBaspLoader without using the PROGBUTTON.
+ * It can be used to reduce the required PINcount for USBaspLoader
+ * on the MCU.
+ * However this feature is very dangerous, so it becomes only
+ * enabled, if "CONFIG_HAVE__BOOTLOADER_ALWAYSENTERPROGRAMMODE" is
+ * enabled and "CONFIG_NO__BOOTLOADER_CAN_EXIT" is disabled, too.
+ * Additionally "BOOTLOADER_LOOPCYCLES_TIMEOUT" must be greater
+ * or equal than 8 (In order to give user enough time to program).
+ *
+ * When active, "JUMPER_PORT" and "JUMPER_BIT" are ignored and
+ * can be soldered otherwise.
+ */
+