anchor.diff:        // to start a command, doCommand fires off a memory read to the
         // specified address. when it comes back, the doCommandRule will
         // handle it
  -      method Action doCommandIndirect(Bit#(64) addr);
  +      method Action doCommandIndirect(Bit#(64) pointer, Bit#(64) addr);
   	 cmd_read_chan.readReq.put(
  -				   DmaRequest{handle: addr[63:32],
  -	 address: truncate(addr[31:0]), burstLen: 8, tag: cmdFetchTag});
  +				   DmaRequest{pointer: truncate(pointer),
  +	 offset: truncate(addr), burstLen: 8, tag: cmdFetchTag});
      	 cmdFetchTag <= cmdFetchTag + 1;
         endmethod
      
  
positive.code: 	    seq
  	       //$display("responseArbiter echoEngine completion");
  	       //$display("status write handle=%d address=%h burst=%h tag=%h",
  	//	  statusRing.memhandle, statusRing.bufferfirst, 8, statusTag);
  	       status_write_chan.writeReq.put(
  		  DmaRequest{handle: statusRing.memhandle, 
  		     address: statusRing.bufferfirst, burstLen: 8, tag: statusTag});
  	       for (respCtr <= 0; respCtr < 8; respCtr <= respCtr + 1)
  		  action
  		     let rv <- echoEngine.response.get();
  
negative.code:       method Action get(Bit#(1) _cmd, Bit#(3) regist);
  	 if (_cmd == 0)
  	    indication.getResult(0, regist, 
  	       zeroExtend(cmdRing.configifc.get(regist)));
  	 else
  	    indication.getResult(0, regist, 
  	       zeroExtend(statusRing.configifc.get(regist)));
        endmethod
  
        method Action hwenable(Bit#(1) en);
  