+ if ( ! $tap && m/^(\w+\.tap)$/ ) {
+ $tap = $1;
+ warn "# using TAP $tap\n";
+
+ print $sock "scan_chain\n";
+ $scan_chain = 0;
+
+ } elsif ( ! $scan_chain && m/\d+\s+$tap\s+Y\s+0x([0-9a-f]+)\s+0x[0-9a-f]+\s+(\d+)/ ) {
+
+ my ($IdCode,$IrLen) = ( $1, $2 );
+
+ my $bsdl_id_code = bin2hex( $parse->{IDCODE_REGISTER} );
+ die "IdCode != IDCODE_REGISTER $IdCode != $bsdl_id_code" if lc($IdCode) ne lc($bsdl_id_code);
+
+ die "IrLen != INSTRUCTION_LENGTH $IrLen != $parse->{INSTRUCTION_LENGTH}" if $IrLen != $parse->{INSTRUCTION_LENGTH};
+
+ warn "# OK IdCode $IdCode IrLen $IrLen\n";
+ $scan_chain = 1;
+
+ # first sample
+ print $sock "irscan $tap $opcode->{SAMPLE}\n"; # SAMPLE/PRELOAD
+ print $sock "drscan $tap $BOUNDARY_LENGTH 0\n";
+
+ } elsif ( /^\s*([A-F0-9]+)$/ ) {