 
 uint8_t GenPort::genRead() {
   uint8_t v = 0;
-  uint8_t timeout = 255;
-
-  while(!digitalRead(GENTR))
-  {
-    if(!timeout--) {
-      return 0;
-    } 
-    else {
-#if F_CPU >= 20000000L
-      delayMicroseconds(1);
-#endif
-    }
-  }
-
-  timeout = 255;
+
+  // Wait until the genesis is ready to send
+  while(!digitalRead(GENTR));
+
   // Wait for clock
-  while(digitalRead(GENTL))
-  {
-    if(!timeout--) {
-      return 0;
-    } 
-    else {
-#if F_CPU >= 20000000L
-      delayMicroseconds(1);
-#endif
-    }
-  }
+  while(digitalRead(GENTL));
 
   // Read high nybble
 #ifdef GEN_AVRPORT

    // Store and forward packet
    forwardPacket(gen, pc);
  }
}



  }
#endif

  if(pc->available()) {
    // Store and forward packet
    forwardPacket(pc, gen);
