anchor.diff:  
      method Action doreturn();
         fp <= max(fp-1, 0);
  +      returning.send();
  +      
         pcstack.portA.request.put(BRAMRequest{write: False, 
   	 responseOnWrite: False, 
   	 address: fp-1, datain: ?});
  
positive.code:    Reg#(varstype) varstop <- mkReg(?);
     Reg#(varstype) varsnext <- mkReg(?);
     Reg#(Bit#(addressBits)) fp <- mkReg(0);
     
     rule poppc;
       let v = ?;
        $display("poppc");
      v <- pcstack.portA.response.get();
        pcnext <= v;
     endrule
  
     rule popargs;
       let v = ?;
        v <- argsstack.portA.response.get();
        argsnext <= v;
     endrule
     
     rule popvars;
       let v = ?;
        v <- varsstack.portA.response.get();
        varsnext <= v;
     endrule
  
  
     method Action docall(pctype jumpto, pctype returnto, argstype args);
        fp <= min(fp+1, maxBound);
        $display("docall jumpto %d returnto %d", jumpto, returnto);
        pcstack.portA.request.put(BRAMRequest{write: True, 
  	 responseOnWrite: False, 
  	 address: fp, datain: pcnext});
        argsstack.portA.request.put(BRAMRequest{write: True, 
  	 responseOnWrite: False, 
  	 address: fp, datain: argsnext});
        varsstack.portA.request.put(BRAMRequest{write: True, 
  	 responseOnWrite: False, 
  	 address: fp, datain: varsnext});
        pcnext <= returnto;
        pctop <= jumpto;
        argsnext <= argstop;
  
negative.code:       varsstack.portA.request.put(BRAMRequest{write: False, 
  	 responseOnWrite: False, 
  	 address: fp-1, datain: ?});
        //$display("%d doreturn pctop getting %d", cyc, pcnext);
        pctop <= pcnext;
        argstop <= argsnext;
        varstop <= varsnext;
  