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