- my $b = substr($BSR,0,$bit+1)
- . ( substr($BSR,$bit+1,1) ^ 1 )
- . ( $v & 1 )
- . substr($BSR,$bit+3)
- ;
+ my $io = $pin2io->[$pin];
+ my $bit = $io2bit->{$io}->[0];
+
+ $b =
+ substr($old_bsr,0,$bit+1) # leave input as-is
+ . ( $v eq 'Z' ? 1 : 0 ) # control
+ . ( $v & 1 ) # output
+ . substr($old_bsr,$bit+3)
+ ;
+
+
+ } elsif ( $what eq 'o' && $p < $BOUNDARY_LENGTH ) {
+ my $o = $p;
+ #$b = substr($old_bsr,0,$o) . reverse $v . substr($old_bsr,$o+length($v));
+ $b = ( "0" x $o ) . reverse $v . ( "0" x ( length($old_bsr) - $o - length($v) ) );
+warn "XXX",length($old_bsr), " == ",length($b);
+ $old_bsr = "0" x length($old_bsr);
+ } else {
+ print "IGNORED ",dump( $what, $p, $v );
+ }
+
+ $b = reverse $b;