anchor.diff:  import MemreadEngine::*;
   import MemwriteEngine::*;
   import Pipe::*;
  +import Connectable::*;
   
   interface FMComms1Request;
      method Action startRead(Bit#(32) pointer, Bit#(32) numWords, Bit#(32) burstLen, Bit#(32) run);
  
positive.code:    rule readFinish;
        let rv <- re.readServers[0].response.get;
        if (readRun == 0)
  	 indication.readStatus(readIterCount, readRun);
     endrule
     
     rule writeStart (writeRun == 1);
        writeIterCount <= writeIterCount + 1;
        re.writeServers[0].request.put(MemengineCmd{pointer:writePointer, base:0, len:writeNumWords*4, burstLen:writeBurstLen*4});
     endrule
     
     rule writeFinish;
        let rv <- re.writeServers[0].response.get;
        if (writeRun == 0)
  	 indication.writeStatus(writeIterCount, writeRun);
     endrule
     
     interface ObjectReadClient readDmaClient = re.dmaClient;
  
negative.code:       method Action startWrite(Bit#(32) pointer, Bit#(32) numWords, Bit#(32) burstLen, Bit#(32) run);
  	 $display("startWrite rdPointer=%d numWords=%h burstLen=%d run=%d",
  	    pointer, numWords, burstLen, run);
  	 if (run == 1) indication.writeStatus(writeIterCount, run);
  	 writePointer <= pointer;
  	 writeNumWords  <= numWords;
  	 writeBurstLen  <= truncate(burstLen);
  	 writeRun <= truncate(run);
        endmethod
        method Action getReadStatus();
  	 indication.readStatus(readIterCount, zeroExtend(readRun));
        endmethod
        method Action getWriteStatus();
  	 indication.writeStatus(writeIterCount, zeroExtend(writeRun));
        endmethod
     endinterface
  endmodule
  