d= (code&0xf0)>>4;
K= ((code&0xf00)>>4)|(code&0xf);
- ram->write(d+16, &K);
+ ram->write(d+16, K);
return(resGO);
}
q= ((code&0x2000)>>8)|((code&0xc00)>>7)|(code&0x7);
z= ram->get(ZH)*256 + ram->get(ZL);
t_mem data= ram->read(z+q);
- ram->write(d, &data);
+ ram->write(d, data);
tick(1);
return(resGO);
}
q= ((code&0x2000)>>8)|((code&0xc00)>>7)|(code&0x7);
y= ram->get(YH)*256 + ram->get(YL);
t_mem data= ram->read(y+q);
- ram->write(d, &data);
+ ram->write(d, data);
tick(1);
return(resGO);
}
q= ((code&0x2000)>>8)|((code&0xc00)>>7)|(code&0x7);
z= ram->get(ZH)*256 + ram->get(ZL);
t_mem data= ram->read(r);
- ram->write(z+q, &data);
+ ram->write(z+q, data);
tick(1);
return(resGO);
}
q= ((code&0x2000)>>8)|((code&0xc00)>>7)|(code&0x7);
y= ram->get(YH)*256 + ram->get(YL);
t_mem data= ram->read(r);
- ram->write(y+q, &data);
+ ram->write(y+q, data);
tick(1);
return(resGO);
}
d= (code&0x1f0)>>4;
k= fetch();
t_mem data= ram->read(k);
- ram->write(d, &data);
+ ram->write(d, data);
tick(2);
return(resGO);
}
d= (code&0x1f0)>>4;
z= ram->get(ZH)*256 + ram->get(ZL);
t_mem data= ram->read(z);
- ram->write(d, &data);
+ ram->write(d, data);
ram->set(ZL, data= (ram->get(ZL)+1)&0xff);
if (!data)
ram->set(ZH, (ram->get(ZH)+1)&0xff);
ram->set(ZH, (ram->get(ZH)-1)&0xff);
z= ram->get(ZH)*256 + z;
data= ram->read(z);
- ram->write(d, &data);
+ ram->write(d, data);
tick(1);
return(resGO);
}
d= (code&0x1f0)>>4;
y= ram->get(YH)*256 + ram->get(YL);
t_mem data= ram->read(y);
- ram->write(d, &data);
+ ram->write(d, data);
ram->set(YL, data= (ram->get(YL)+1)&0xff);
if (!data)
ram->set(YH, (ram->get(YH)+1)&0xff);
ram->set(YH, (ram->get(YH)-1)&0xff);
y= ram->get(YH)*256 + y;
data= ram->read(y);
- ram->write(d, &data);
+ ram->write(d, data);
tick(1);
return(resGO);
}
d= (code&0x1f0)>>4;
x= ram->get(XH)*256 + ram->get(XL);
t_mem data= ram->read(x);
- ram->write(d, &data);
+ ram->write(d, data);
tick(1);
return(resGO);
}
d= (code&0x1f0)>>4;
x= ram->get(XH)*256 + ram->get(XL);
t_mem data= ram->read(x);
- ram->write(d, &data);
+ ram->write(d, data);
ram->set(XL, data= (ram->get(XL)+1)&0xff);
if (!data)
ram->set(XH, (ram->get(XH)+1)&0xff);
ram->set(XH, (ram->get(XH)-1)&0xff);
x= ram->get(XH)*256 + x;
data= ram->read(x);
- ram->write(d, &data);
+ ram->write(d, data);
tick(1);
return(resGO);
}
+/*
+ * Pop Register from Stack
+ * POP Rd 0<=d<=31
+ * 1001 000d dddd 1111
+ *____________________________________________________________________________
+ */
+
int
cl_avr::pop_Rd(t_mem code)
{
+ t_addr d;
+ t_mem D;
+
+ d= (code&0x1f0)>>4;
+ pop_data(&D);
+ ram->write(d, D);
+ tick(1);
+
return(resGO);
}
r= (code&0x1f0)>>4;
k= fetch();
t_mem data= ram->read(r);
- ram->write(k, &data);
+ ram->write(k, data);
tick(2);
return(resGO);
}
r= (code&0x1f0)>>4;
z= ram->get(ZH)*256 + ram->get(ZL);
t_mem data= ram->read(r);
- ram->write(z, &data);
+ ram->write(z, data);
ram->set(ZL, data= (ram->get(ZL)+1)&0xff);
if (!data)
ram->set(ZH, (ram->get(ZH)+1)&0xff);
ram->set(ZH, (ram->get(ZH)-1)&0xff);
z= ram->get(ZH)*256 + z;
data= ram->read(r);
- ram->write(z, &data);
+ ram->write(z, data);
tick(1);
return(resGO);
}
r= (code&0x1f0)>>4;
y= ram->get(YH)*256 + ram->get(YL);
t_mem data= ram->read(r);
- ram->write(y, &data);
+ ram->write(y, data);
ram->set(YL, data= (ram->get(YL)+1)&0xff);
if (!data)
ram->set(YH, (ram->get(YH)+1)&0xff);
ram->set(YH, (ram->get(YH)-1)&0xff);
y= ram->get(YH)*256 + y;
data= ram->read(r);
- ram->write(y, &data);
+ ram->write(y, data);
tick(1);
return(resGO);
}
r= (code&0x1f0)>>4;
x= ram->get(XH)*256 + ram->get(XL);
t_mem data= ram->read(r);
- ram->write(x, &data);
+ ram->write(x, data);
tick(1);
return(resGO);
}
r= (code&0x1f0)>>4;
x= ram->get(XH)*256 + ram->get(XL);
t_mem data= ram->read(r);
- ram->write(x, &data);
+ ram->write(x, data);
ram->set(XL, data= (ram->get(XL)+1)&0xff);
if (!data)
ram->set(XH, (ram->get(XH)+1)&0xff);
ram->set(XH, (ram->get(XH)-1)&0xff);
x= ram->get(XH)*256 + x;
data= ram->read(r);
- ram->write(x, &data);
+ ram->write(x, data);
tick(1);
return(resGO);
}
+/*
+ * Push register on Stack
+ * PUSH Rr 0<=r<=31
+ * 1001 001d dddd 1111
+ *____________________________________________________________________________
+ */
+
int
cl_avr::push_Rr(t_mem code)
{
+ t_addr d;
+ t_mem D;
+
+ d= (code&0x1f0)>>4;
+ D= ram->read(d);
+ push_data(D);
+ tick(1);
+
return(resGO);
}
data= ram->read(d);
temp= (data>>4)&0xf;
data= (data<<4)|temp;
- ram->write(d, &data);
+ ram->write(d, data);
return(resGO);
}
P= ((code&0x600)>>5)|(code&0xf);
d= (code&0x1f0)>>4;
data= ram->read(P+0x20);
- ram->write(d, &data);
+ ram->write(d, data);
return(resGO);
}
P= ((code&0x600)>>5)|(code&0xf);
r= (code&0x1f0)>>4;
data= ram->read(r);
- ram->write(P+0x20, &data);
+ ram->write(P+0x20, data);
return(resGO);
}
d= (code&0x1f0)>>4;
r= ((code&0x200)>>5)|(code&0xf);
t_mem data= ram->read(r);
- ram->write(d, &data);
+ ram->write(d, data);
return(resGO);
}