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:    
     rule writeAck;
        let tag <- status_write_chan.writeDone.get();
        $display("status write done tag=%h", tag);
     endrule
     
     mkAutoFSM (cmdFetch);
  
negative.code: 	       seq
  	       if (cmdRing.bufferfirst != cmdRing.bufferlast) 
  		  seq
  		     //$display ("cmdFetch handle=%h address=%h burst=%h tag=%h", cmdRing.memhandle, cmdRing.bufferlast, 8, cmdFetchTag);
  		     cmd_read_chan.readReq.put(
  			DmaRequest{handle: cmdRing.memhandle,
  			   address: cmdRing.bufferlast, burstLen: 8, tag: cmdFetchTag});
  