anchor.diff:     method Action set(Bit#(1) cmd, Bit#(3) regist, Bit#(64) addr);
      method Action get(Bit#(1) cmd, Bit#(3) regist);
      method Action hwenable(Bit#(1) en);
  -   method Action doCommandIndirect(Bit#(64) addr);
  +   method Action doCommandIndirect(Bit#(64) pointer, Bit#(64) addr);
      method Action doCommandImmediate(Bit#(64) data);
   endinterface
   
  
positive.code:       // 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);
  	 cmd_read_chan.readReq.put(
  				   DmaRequest{handle: addr[63:32],
  	 address: truncate(addr[31:0]), burstLen: 8, tag: cmdFetchTag});
     	 cmdFetchTag <= cmdFetchTag + 1;
        endmethod
     
  
negative.code: 	    seq
  	       //$display("responseArbiter echoEngine completion");
  	       //$display("status write handle=%d address=%h burst=%h tag=%h",
  	//	  statusRing.mempointer, statusRing.bufferfirst, 8, statusTag);
  	       status_write_chan.writeReq.put(
  		  DmaRequest{pointer: statusRing.mempointer, 
  		     offset: statusRing.bufferfirst, burstLen: 8, tag: statusTag});
  	       for (respCtr <= 0; respCtr < 8; respCtr <= respCtr + 1)
  		  action
  		     let rv <- echoEngine.response.get();
  