* sim/ucsim/avr.src/Makefile.in, sim/ucsim/hc08.src/Makefile.in,
[fw/sdcc] / sim / ucsim / s51.src / inc.cc
index f3d67750b0af419b33e352a05b9333cf9e20bb31..23d3564138d947f9b5a0a68b317cfab8813482e2 100644 (file)
@@ -39,9 +39,9 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
  */
 
 int
-t_uc51::inst_inc_a(uchar code)
+cl_51core::inst_inc_a(uchar code)
 {
-  sfr->set(event_at.ws= ACC, sfr->get(ACC)+1);
+  acc->wadd(1);
   return(resGO);
 }
 
@@ -53,13 +53,12 @@ t_uc51::inst_inc_a(uchar code)
  */
 
 int
-t_uc51::inst_inc_addr(uchar code)
+cl_51core::inst_inc_addr(uchar code)
 {
-  uchar *addr;
+  class cl_memory_cell *cell= get_direct(fetch());
 
-  addr= get_direct(fetch(), &event_at.wi, &event_at.ws);
-  (*addr)++;
-  proc_write(addr);
+  t_mem d= cell->read(HW_PORT);
+  cell->write(d+1);
   return(resGO);
 }
 
@@ -71,15 +70,13 @@ t_uc51::inst_inc_addr(uchar code)
  */
 
 int
-t_uc51::inst_inc_$ri(uchar code)
+cl_51core::inst_inc_Sri(uchar code)
 {
-  uchar *addr;
-  int res;
+  class cl_memory_cell *cell;
 
-  addr= get_indirect(event_at.wi= *(get_reg(code & 0x01)), &res);
-  (*addr)++;
-  proc_write(addr);
-  return(res);
+  cell= iram->get_cell(get_reg(code & 0x01)->read());
+  cell->wadd(1);
+  return(resGO);
 }
 
 
@@ -90,9 +87,11 @@ t_uc51::inst_inc_$ri(uchar code)
  */
 
 int
-t_uc51::inst_inc_rn(uchar code)
+cl_51core::inst_inc_rn(uchar code)
 {
-  (*(get_reg(code & 0x07, &event_at.wi)))++;
+  class cl_memory_cell *reg= get_reg(code & 0x07);
+
+  reg->wadd(1);
   return(resGO);
 }
 
@@ -104,9 +103,10 @@ t_uc51::inst_inc_rn(uchar code)
  */
 
 int
-t_uc51::inst_dec_a(uchar code)
+cl_51core::inst_dec_a(uchar code)
 {
-  sfr->set(event_at.ws= ACC, sfr->get(ACC)-1);
+  acc->wadd(-1);
+
   return(resGO);
 }
 
@@ -118,13 +118,13 @@ t_uc51::inst_dec_a(uchar code)
  */
 
 int
-t_uc51::inst_dec_addr(uchar code)
+cl_51core::inst_dec_addr(uchar code)
 {
-  uchar *addr;
+  class cl_memory_cell *cell;
 
-  addr= get_direct(fetch(), &event_at.wi, &event_at.ws);
-  (*addr)--;
-  proc_write(addr);
+  cell= get_direct(fetch());
+  t_mem d= cell->read(HW_PORT);
+  cell->write(d-1);
   return(resGO);
 }
 
@@ -136,15 +136,13 @@ t_uc51::inst_dec_addr(uchar code)
  */
 
 int
-t_uc51::inst_dec_$ri(uchar code)
+cl_51core::inst_dec_Sri(uchar code)
 {
-  uchar *addr;
-  int res;
+  class cl_memory_cell *cell;
 
-  addr= get_indirect(event_at.wi= *(get_reg(code & 0x01)), &res);
-  (*addr)--;
-  proc_write(addr);
-  return(res);
+  cell= iram->get_cell(get_reg(code & 0x01)->read());
+  cell->add(-1);
+  return(resGO);
 }
 
 
@@ -155,9 +153,11 @@ t_uc51::inst_dec_$ri(uchar code)
  */
 
 int
-t_uc51::inst_dec_rn(uchar code)
+cl_51core::inst_dec_rn(uchar code)
 {
-  (*(get_reg(code & 0x07, &event_at.wi)))--;
+  class cl_memory_cell *reg= get_reg(code & 0x07);
+
+  reg->wadd(-1);
   return(resGO);
 }
 
@@ -169,13 +169,13 @@ t_uc51::inst_dec_rn(uchar code)
  */
 
 int
-t_uc51::inst_inc_dptr(uchar code)
+cl_51core::inst_inc_dptr(uchar code)
 {
   uint dptr;
 
-  dptr= sfr->get(DPH)*256 + sfr->get(DPL) + 1;
-  sfr->set(event_at.ws= DPH, (dptr >> 8) & 0xff);
-  sfr->set(DPL, dptr & 0xff);
+  dptr= sfr->read(DPH)*256 + sfr->read(DPL) + 1;
+  sfr->write(DPH, (dptr >> 8) & 0xff);
+  sfr->write(DPL, dptr & 0xff);
   tick(1);
   return(resGO);
 }