anchor.diff:  		     let rv <- echoEngine.response.get();
   		     status_write_chan.writeData.put(DmaData{data: rv, tag: statusTag});
   		  endaction
  -	       statusRing.push(64);
  +	       statusRing.push();
   	       statusTag <= statusTag + 1;
   	    endseq
   
  
positive.code: 		     let rv <- copyEngine.response.get();
  		     status_write_chan.writeData.put(DmaData{data: rv, tag: statusTag});
  		  endaction
  	       statusRing.push(64);
  	       statusTag <= statusTag + 1;
  	    endseq
  
  
negative.code: 	    action
  	       let rv <- cmd_read_chan.readData.get();
  	       cmd <= rv;
  	       fetchComplete.complete.put(tuple2(pack(truncate(rv.tag)),?));
  	    endaction
  	    // wait a cycle so cmd is valid!
  	    $display("cmdDispatch 0 tag=%h %h", cmd.tag, cmd.data);
  	    cmdifc.request.put(cmd.data);
  	 endseq
  	 for (dispCtr <= 1; dispCtr < 8; dispCtr <= dispCtr + 1)
  	    action
  	       let rv <- cmd_read_chan.readData.get();
  	       $display("  cmdDispatch %h tag=%h %h", dispCtr, rv.tag, rv.data);
  	       cmdifc.request.put(rv.data);
  	    endaction
        endseq
     endseq;
     
     rule finishCmdReads;
        let v <- fetchComplete.drain.get();
        cmdRing.popack();
        $display("pop ack");
     endrule
     
  