int
t_uc51::inst_orl_addr_a(uchar code)
{
- uchar *addr;
+ class cl_cell *cell;
- addr= get_direct(fetch(), &event_at.wi, &event_at.ws);
- (*addr)|= sfr->get(event_at.rs= ACC);
- proc_write(addr);
+ cell= get_direct(fetch());
+ cell->write(cell->read(HW_PORT) | acc->read());
return(resGO);
}
*/
int
-t_uc51::inst_orl_addr_$data(uchar code)
+t_uc51::inst_orl_addr_Sdata(uchar code)
{
- uchar *addr;
+ class cl_cell *cell;
+ int res= resGO;
- addr= get_direct(fetch(), &event_at.wi, &event_at.ws);
- (*addr)|= fetch();
- proc_write(addr);
+ cell= get_direct(fetch());
+ t_mem d= fetch();
+ cell->write(cell->read(HW_PORT) | d);
tick(1);
- return(resGO);
+ return(res);
}
*/
int
-t_uc51::inst_orl_a_$data(uchar code)
+t_uc51::inst_orl_a_Sdata(uchar code)
{
uchar d;
- d= sfr->get(event_at.ws= ACC);
- sfr->set(ACC, d|= fetch());
+ d= acc->read();
+ acc->write(d|= fetch());
return(resGO);
}
int
t_uc51::inst_orl_a_addr(uchar code)
{
- uchar *addr, d;
+ t_mem d;
+ class cl_cell *cell;
- addr= get_direct(fetch(), &event_at.ri, &event_at.rs);
- d= sfr->get(event_at.ws= ACC);
- sfr->set(ACC, d|= read(addr));
+ cell= get_direct(fetch());
+ d= acc->read();
+ acc->write(d|= cell->read());
return(resGO);
}
*/
int
-t_uc51::inst_orl_a_$ri(uchar code)
+t_uc51::inst_orl_a_Sri(uchar code)
{
- uchar *addr, d;
- int res;
+ t_mem d;
+ class cl_cell *cell;
- addr= get_indirect(event_at.ri= *(get_reg(code & 0x01)), &res);
- d= sfr->get(event_at.ws= ACC);
- sfr->set(ACC, d|= *addr);
- return(res);
+ cell= iram->get_cell(get_reg(code & 0x01)->read());
+ d= acc->read();
+ acc->write(d|= cell->read());
+ return(resGO);
}
int
t_uc51::inst_orl_a_rn(uchar code)
{
- uchar d;
+ t_mem d;
- d= sfr->get(event_at.ws= ACC);
- sfr->set(ACC, d|= *(get_reg(code & 0x07, &event_at.ri)));
+ d= acc->read();
+ acc->write(d|= get_reg(code & 0x07)->read());
return(resGO);
}
int
t_uc51::inst_anl_addr_a(uchar code)
{
- uchar *addr;
-
- addr= get_direct(fetch(), &event_at.wi, &event_at.ws);
- (*addr)&= sfr->get(event_at.rs= ACC);
- proc_write(addr);
+ class cl_cell *cell;
+
+ cell= get_direct(fetch());
+ cell->write(cell->read(HW_PORT) & acc->read());
return(resGO);
}
*/
int
-t_uc51::inst_anl_addr_$data(uchar code)
+t_uc51::inst_anl_addr_Sdata(uchar code)
{
- uchar *addr;
+ class cl_cell *cell;
+ t_mem d;
- addr= get_direct(fetch(), &event_at.wi, &event_at.ws);
- (*addr)&= fetch();
- proc_write(addr);
+ cell= get_direct(fetch());
+ d= fetch();
+ cell->write(cell->read(HW_PORT) & d);
tick(1);
return(resGO);
}
*/
int
-t_uc51::inst_anl_a_$data(uchar code)
+t_uc51::inst_anl_a_Sdata(uchar code)
{
uchar d;
- d= sfr->get(event_at.ws= ACC);
- sfr->set(ACC, d&= fetch());
+ d= acc->read();
+ acc->write(d & fetch());
return(resGO);
}
int
t_uc51::inst_anl_a_addr(uchar code)
{
- uchar *addr, d;
+ t_mem d;
+ class cl_cell *cell;
- addr= get_direct(fetch(), &event_at.ri, &event_at.rs);
- d= sfr->get(event_at.ws= ACC);
- sfr->set(ACC, d&= read(addr));
+ cell= get_direct(fetch());
+ d= acc->read();
+ acc->write(d & cell->read());
return(resGO);
}
*/
int
-t_uc51::inst_anl_a_$ri(uchar code)
+t_uc51::inst_anl_a_Sri(uchar code)
{
- uchar *addr, d;
- int res;
+ t_mem d;
+ class cl_cell *cell;
- addr= get_indirect(event_at.ri= *(get_reg(code & 0x01)), &res);
- d= sfr->get(event_at.ws= ACC);
- sfr->set(ACC, d&= *addr);
- return(res);
+ cell= iram->get_cell(get_reg(code & 0x01)->read());
+ d= acc->read();
+ acc->write(d & cell->read());
+ return(resGO);
}
{
uchar d;
- d= sfr->get(event_at.ws= ACC);
- sfr->set(ACC, d&= *(get_reg(code & 0x07, &event_at.ri)));
+ d= acc->read();
+ acc->write(d & get_reg(code & 0x07)->read());
return(resGO);
}
int
t_uc51::inst_xrl_addr_a(uchar code)
{
- uchar *addr;
+ class cl_cell *cell;
- addr= get_direct(fetch(), &event_at.wi, &event_at.ws);
- (*addr)^= sfr->get(event_at.rs= ACC);
- proc_write(addr);
+ cell= get_direct(fetch());
+ cell->write(cell->read(HW_PORT) ^ acc->read());
return(resGO);
}
*/
int
-t_uc51::inst_xrl_addr_$data(uchar code)
+t_uc51::inst_xrl_addr_Sdata(uchar code)
{
- uchar *addr;
+ class cl_cell *cell;
- addr= get_direct(fetch(), &event_at.wi, &event_at.ws);
- (*addr)^= fetch();
- proc_write(addr);
+ cell= get_direct(fetch());
+ cell->write(cell->read(HW_PORT) ^ fetch());
tick(1);
return(resGO);
}
*/
int
-t_uc51::inst_xrl_a_$data(uchar code)
+t_uc51::inst_xrl_a_Sdata(uchar code)
{
uchar d;
- d= sfr->get(event_at.ws= ACC);
- sfr->set(ACC, d^= fetch());
+ d= acc->read();
+ acc->write(d ^ fetch());
return(resGO);
}
int
t_uc51::inst_xrl_a_addr(uchar code)
{
- uchar d;
+ t_mem d;
+ class cl_cell *cell;
- d= sfr->get(event_at.ws= ACC);
- sfr->set(ACC, d^= read(get_direct(fetch(),
- &event_at.ri,
- &event_at.ri)));
+ cell= get_direct(fetch());
+ d= acc->read();
+ acc->write(d ^ cell->read());
return(resGO);
}
*/
int
-t_uc51::inst_xrl_a_$ri(uchar code)
+t_uc51::inst_xrl_a_Sri(uchar code)
{
- uchar *addr, d;
- int res;
+ t_mem d;
+ class cl_cell *cell;
- addr= get_indirect(event_at.ri= *(get_reg(code & 0x01)), &res);
- d= sfr->get(event_at.ws= ACC);
- sfr->set(ACC, d^= *addr);
- return(res);
+ cell= iram->get_cell(get_reg(code & 0x01)->read());
+ d= acc->read();
+ acc->write(d ^ cell->read());
+ return(resGO);
}
int
t_uc51::inst_xrl_a_rn(uchar code)
{
- uchar d;
+ t_mem d;
- d= sfr->get(event_at.ws= ACC);
- sfr->set(ACC, d^= *(get_reg(code & 0x07, &event_at.ri)));
+ d= acc->read();
+ acc->write(d ^ get_reg(code & 0x07)->read());
return(resGO);
}
int
t_uc51::inst_cpl_a(uchar code)
{
- sfr->set(event_at.ws= ACC, ~(sfr->get(ACC)));
+ acc->write(~(acc->read()));
return(resGO);
}