anchor.diff:     endmethod
      
      method Action shift (bit d);
  -      sreg <= {d, (sreg >> 1)};
  -      oreg <= sreg[0];
  +      Bit#(asize) svalue = pack(sreg);
  +      svalue = {d, svalue[(valueof(asize)-1):1]};
  +      sreg <= unpack(svalue);
  +      oreg <= svalue[0];
      endmethod
      
      interface r = dreg;
      interface tdo = regToReadOnly(oreg);
         
   endmodule
  -
  
positive.code:       
  endmodule
  
  module mkReadOnlySerialReg#(type regtype, regtype v)(SerialReg);
     
     Reg#(regtype) dreg <- mkReg(v);
     Reg#(regtype) sreg <- mkReg(?);
     Reg#(bit) oreg <- mkReg(?);
     
     method Action update ();
        // dreg <= sreg;
     endmethod
  
     method Action capture ();
  
negative.code: 
  // The Jtag state machine is copied from the Bluespec Small Examples Tap.bsv
  
  interface JtagReg#(type a);
     method Action update();
     method Action capture();
     method Action shift(bit d);
     interface Reg#(a) r;
     interface ReadOnly#(bit) tdo;
  endinterface
  
  // can I pass in an initial value for the register?
  
  module mkJtagReg(JtagReg#(a))
     provisos(Bits#(a,asize), Add#(1,__a,asize));
     
     Reg#(a) dreg <- mkReg(?);
     Reg#(a) sreg <- mkReg(?);
     Reg#(bit) oreg <- mkReg(?);
     
     method Action update ();
  