- uchar *addr, *sp;
- int res;
-
- addr= get_direct(fetch(), &event_at.ri, &event_at.rs);
- MEM(MEM_SFR)[SP]++;
- sp= get_indirect(sfr->get(SP), &res);
- if (res != resGO)
- res= resSTACK_OV;
- (*sp)= read(addr);
+ t_addr sp, sp_before/*, sp_after*/;
+ t_mem data;
+ class cl_memory_cell *stck, *cell;
+
+ cell= get_direct(fetch());
+ sp_before= sfr->get(SP);
+ sp= /*sp_after= */sfr->wadd(SP, 1);
+ stck= iram->get_cell(sp);
+ stck->write(data= cell->read());
+ class cl_stack_op *so=
+ new cl_stack_push(instPC, data, sp_before, sp/*_after*/);
+ so->init();
+ stack_write(so);