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#(32) addr);
  -	 //cmd_read_chan.readReq.put(addr);
  +      method Action doCommandIndirect(Bit#(64) addr);
  +	 cmd_read_chan.readReq.put(
  +				   DmaRequest{handle: addr[63:32],
  +	 address: addr[31:0], burstLen: 8, tag: cmdFetchTag});
  +   	 cmdFetchTag <= cmdFetchTag + 1;
         endmethod
      
         method Action doCommandImmediate(Bit#(64) data);
  
positive.code:       while(True) seq
  	 if (statusRing.notFull() && copyEngine.response.notEmpty())
  	    seq
  	       $display("responseArbiter copyEngine 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, 
  
negative.code:    
     rule writeAck;
        let tag <- status_write_chan.writeDone.get();
        //$display("status write done tag=%h", tag);
     endrule
     
     mkAutoFSM (cmdFetch);
  