diff --git a/urjtag/src/pld/xilinx.c b/urjtag/src/pld/xilinx.c
index 9527cef..ae7a48d 100644
--- a/urjtag/src/pld/xilinx.c
+++ b/urjtag/src/pld/xilinx.c
@@ -667,12 +667,88 @@ xlx_configure (urj_pld_t *pld, FILE *bit_file)
     return status;
 }
 
+static void wr(urj_pld_t *pld, uint16_t word)
+{
+    xlx_set_dr_and_shift (pld->chain, pld->part, flip16 (word),
+                          URJ_CHAIN_EXITMODE_SHIFT);
+}
+
+static int howdy(urj_pld_t *pld)
+{
+    urj_chain_t *chain = pld->chain;
+    urj_part_t *part = pld->part;
+
+fprintf(stderr, "greetings 15\n");
+    /* use the same data register as they have the same length */
+    if (xlx_instruction_resize_dr (part, "CFG_IN", "CFG_DR", 16)
+            != URJ_STATUS_OK)
+        return URJ_STATUS_FAIL;
+    if (xlx_instruction_resize_dr (part, "CFG_OUT", "CFG_DR", 16)
+            != URJ_STATUS_OK)
+        return URJ_STATUS_FAIL;
+
+    /* set all devices in bypass mode */
+    urj_tap_reset_bypass (chain);
+
+    if (xlx_set_ir_and_shift (chain, part, "CFG_IN") != URJ_STATUS_OK)
+        return URJ_STATUS_FAIL;
+
+    urj_tap_capture_dr (chain);
+
+    wr(pld, 0xffff);	// DUMMY
+    wr(pld, 0xaa99);	// Sync(1)
+    wr(pld, 0x5566);	// Sync(2)
+
+    wr(pld, 0x3261);	// write GENERAL1
+    wr(pld, 0x0000);	// 15:0
+    wr(pld, 0x3281);	// write GENERAL2
+    wr(pld, 0x0037);	// 23:16
+
+#if 0
+    wr(pld, 0x32a1);	// write GENERAL3
+    wr(pld, 0x0000);	// 15:0
+    wr(pld, 0x32c1);	// write GENERAL4
+    wr(pld, 0x0005);	// 23:16
+#endif
+
+    wr(pld, 0x30a1);	// write CMD
+    wr(pld, 0x000e);	// IPROG
+#if 1
+//    wr(pld, 0x2000);	// NOP
+//    wr(pld, 0x2000);	// NOP
+//    wr(pld, 0x2000);	// NOP
+
+    xlx_set_dr_and_shift (chain, part, flip16 (0x2000),
+                          URJ_CHAIN_EXITMODE_IDLE);
+#endif
+
+#if 0
+    if (xlx_set_ir_and_shift (chain, part, "JSTART") != URJ_STATUS_OK)
+    {
+        return URJ_STATUS_FAIL;
+    }
+#endif
+
+#if 0
+    urj_tap_chain_defer_clock (chain, 0, 0, 32);
+#endif
+
+#if 1
+    urj_tap_reset_bypass (chain);
+#endif
+
+    urj_tap_chain_flush (chain);
+
+    return URJ_STATUS_OK;
+}
+
 static int
 xlx_reconfigure (urj_pld_t *pld)
 {
     urj_chain_t *chain = pld->chain;
     urj_part_t *part = pld->part;
 
+return howdy(pld);
     urj_tap_reset_bypass (chain);
 
     if (xlx_set_ir_and_shift (chain, part, "JPROGRAM") != URJ_STATUS_OK)
