anchor.diff:  	 responseOnWrite: False, 
   	 address: fp-1, datain: ?});
         //$display("%d doreturn pctop getting %d", cyc, pcnext);
  -      pctop <= pcnext;
  -      argstop <= argsnext;
  -      varstop <= varsnext;
  +     if (!returningd1)
  +	begin
  +	   pctop <= pcnext;
  +	   argstop <= argsnext;
  +	   varstop <= varsnext;
  +	end;
      endmethod
   
      method Action nextpc(pctype jumpto);
  
positive.code:    PulseWire calling <- mkPulseWire();
     PulseWire returning <- mkPulseWire();
     Reg#(Bool) returningd1 <- mkReg(False);
  /*
     Reg#(Bit#(8)) cyc <- mkReg(0);
     
  
negative.code:       cyc <= cyc + 1;
     endrule
    */ 
     
     /* The pop rules fire exactly when returningd1 is true */
     rule poppc;
       let v = ?;
        //$display("%d poppc (c %d)", cyc, calling);
        v <- pcstack.portA.response.get();
        if (!calling) pcnext <= v;
        if (returning) pctop <= v;
     endrule
  
     rule popargs;
       let v = ?;
        v <- argsstack.portA.response.get();
        if (!calling) argsnext <= v;
        if (returning) argstop <= v;
     endrule
     
     rule popvars;
       let v = ?;
        v <- varsstack.portA.response.get();
        if (!calling) varsnext <= v;
        if (returning) varstop <= v;
     endrule
     
     (* fire_when_enabled, no_implicit_conditions *)
  