return NULL;\r
diff -Nur xilprg-0.5/src/onbusb.cpp xilprg-new/src/onbusb.cpp
--- xilprg-0.5/src/onbusb.cpp 1970-01-01 01:00:00.000000000 +0100
-+++ xilprg-new/src/onbusb.cpp 2007-04-07 17:15:34.000000000 +0200
-@@ -0,0 +1,113 @@
++++ xilprg-new/src/onbusb.cpp 2007-09-04 21:39:30.000000000 +0200
+@@ -0,0 +1,119 @@
+/*\r
+ * onboard usb\r
+ *\r
-+ * author: till & frank zirkelbach\r
++ * author: till, hunz, koppi, hackbard\r
+ *\r
+ */\r
+\r
+#include "utils.h"\r
+#include "onbusb.h"\r
+\r
++#define GET_TDO 0x20\r
++\r
+onbusb::onbusb()\r
+{\r
+ handle=NULL;\r
+ dev=bus->devices;\r
+ while(dev) {\r
+ if(dev->descriptor.idVendor==USB_VENDOR_ID &&\r
-+ dev->descriptor.idProduct==USB_PRODUCT_ID)\r
-+ /* found the device */\r
-+ return 0;\r
-+ dev=dev->next;\r
-+ }\r
-+ bus=bus->next;\r
-+ }\r
++ dev->descriptor.idProduct==USB_PRODUCT_ID) {\r
+\r
-+ return -1;\r
++ /* found the device */\r
++ handle=usb_open(dev);\r
++ if(handle==NULL)\r
++ goto cleanup;\r
+\r
-+ handle=usb_open(dev);\r
-+ if(handle==NULL)\r
-+ goto cleanup;\r
++ if(usb_set_configuration(handle,1)<0)\r
++ goto cleanup;\r
+\r
-+ if(usb_set_configuration(handle,1)<0)\r
-+ goto cleanup;\r
++ if(usb_claim_interface(handle,0)<0)\r
++ goto cleanup;\r
+\r
-+ if(usb_claim_interface(handle,0)<0)\r
-+ goto cleanup;\r
++ if(usb_set_altinterface(handle,1)<0)\r
++ goto cleanup;\r
+\r
-+ if(usb_set_altinterface(handle,1)<0)\r
-+ goto cleanup;\r
++ data = 0x10;\r
+\r
-+ data = 0x10;\r
++ reset_tap_state();\r
+\r
-+ reset_tap_state();\r
++ return 0;\r
++ }\r
++ dev=dev->next;\r
++ }\r
++ bus=bus->next;\r
++ }\r
+\r
-+ return 0;\r
++ return -1;\r
+\r
+cleanup:\r
+\r
+ close();\r
+\r
-+ return 1;\r
++ printf("usb init failed!\n");\r
++\r
++ return -1;\r
+\r
+}\r
+\r
+int onbusb::get_description(string& desc)\r
+{\r
+ char s[256];\r
-+ sprintf(s, "onboard usb bitbanging");\r
++ sprintf(s, "onboard usb bitbanging (till, hunz, koppi, hackbard)");\r
+ desc = s;\r
+ return 0;\r
+}\r
+void onbusb::set_tdi(int bit)\r
+{\r
+ if (bit) data |= 0x04; else data &= ~0x04;\r
-+ data|=0xa0;\r
+ usb_bulk_write(handle,0x01,&data,1,0);\r
+}\r
+\r
+void onbusb::set_tck(int bit)\r
+{\r
+ if (bit) data |= 0x10; else data &= ~0x10;\r
-+ data|=0xa0;\r
+ usb_bulk_write(handle,0x01,&data,1,0);\r
+}\r
+\r
+void onbusb::set_tms(int bit)\r
+{\r
+ if (bit) data |= 0x08; else data &= ~0x08;\r
-+ data|=0xa0;\r
+ usb_bulk_write(handle,0x01,&data,1,0);\r
+}\r
+\r
+int onbusb::get_tdo()\r
+{\r
++ /* send get tdo command */\r
++ data=GET_TDO;\r
++ usb_bulk_write(handle,0x01,&data,1,0);\r
++\r
++ /* receive tdo */\r
+ usb_bulk_read(handle,0x81,&data,1,0);\r
+ return data & 0x01 ? 1 : 0;\r
+}\r
diff -Nur xilprg-0.5/src/onbusb.h xilprg-new/src/onbusb.h
--- xilprg-0.5/src/onbusb.h 1970-01-01 01:00:00.000000000 +0100
-+++ xilprg-new/src/onbusb.h 2007-04-07 17:14:07.000000000 +0200
++++ xilprg-new/src/onbusb.h 2007-09-04 21:17:18.000000000 +0200
@@ -0,0 +1,43 @@
+/*\r
+ * onboard usb\r
+ *\r
-+ * author: till & frank zirkelbach\r
++ * author: till, hunz, koppi, hackbard\r
+ *\r
+ */\r
+\r