anchor.diff:  	 indication.copyProgress(extend(donetag));
      endrule
   
  -   MemReadClient#(64) readClient = (interface MemReadClient;
  +   MemReadClient#(DataBusWidth) readClient = (interface MemReadClient;
         interface Get readReq = toGet(readReqFifo);
  -      interface Put readData = toPut(dataFifo);
  +      interface Put readData;
  +	 method Action put(MemData#(DataBusWidth) md);
  +	    dataFifo.enq(md);
  +	    counter.decrement(fromInteger(valueOf(TDiv#(DataBusWidth,8))));
  +	 endmethod
  +      endinterface
      endinterface );
  -   MemWriteClient#(64) writeClient = (interface MemWriteClient;
  +   MemWriteClient#(DataBusWidth) writeClient = (interface MemWriteClient;
         interface Get writeReq = toGet(writeReqFifo);
         interface Get writeData = toGet(dataFifo);
         interface Put writeDone = toPut(doneFifo);
  
positive.code: 
  interface Memcopy;
     interface MemcopyRequest request;
     interface Vector#(1, MemReadClient#(64)) readClients;
     interface Vector#(1, MemWriteClient#(64)) writeClients;
  endinterface
  
  module  mkMemcopy#(MemcopyIndication indication) (Memcopy);
  
negative.code: import HostInterface::*;
  import MemTypes::*;
  import Pipe::*;
  import ConfigCounter::*;
  
  typedef TDiv#(DataBusWidth,32) WordsPerBeat;
  
  