+my $cmd = <STDIN>;
+chomp $cmd;
+if ( $cmd =~ /(\d+)=(\d)/ ) {
+ my ( $pin, $v ) = ( $1, $2 );
+ warn "# pin $pin = $v\n";
+
+ my $io = $pin2io->[$pin];
+ my $bit = $io2bit->{$io}->[0];
+
+ my $b = substr($BSR,0,$bit+1)
+ . ( substr($BSR,$bit+1,1) ^ 1 )
+ . ( $v & 1 )
+ . substr($BSR,$bit+3)
+ ;
+
+ diff_bits( $BSR, $b ), $/;
+
+ print $sock "irscan x300.tap 0x55\n"; # SAMPLE/PRELOAD
+ print $sock "drscan x300.tap 288 0x", bin2hex($b), "\n";
+ print $sock "irscan x300.tap 0x00\n"; # EXTEST
+ print $sock "drscan x300.tap 288 0x", bin2hex($b), "\n";
+} else {
+ print $sock "irscan x300.tap 0x55\n"; # SAMPLE/PRELOAD
+ print $sock "drscan x300.tap 288 0\n";