{0x0000,0x0000, 0,1,BAD_OPCODE, REG_REG}
};
+#if 0
+/*
+ * Names of SFRs
+ */
+
+struct name_entry sfr_tabXA51[]=
+{
+ {CPU_XA51G3, 0x400, "PSW"},
+};
+
+/*
+ * Names SBITs
+ */
+
+struct name_entry bit_tabXA51[]=
+{
+ {CPU_XA51G3, 0x33b, "ETI1"},
+};
+#endif
/* End of xa.src/glob.cc */
int
cl_xa::inst_SETB(uint code, int operands)
{
+ unsigned short bitAddr = (code&0x03 << 8) + fetch();
+ // fixme: implement
+ bitAddr=bitAddr;
return(resGO);
}
int
cl_xa::inst_CLR(uint code, int operands)
{
+ unsigned short bitAddr = (code&0x03 << 8) + fetch();
+ // fixme: implement
+ bitAddr=bitAddr;
return(resGO);
}
int
return(resGO);
}
int
+cl_xa::inst_BEQ(uint code, int operands)
+{
+ short jmpAddr = fetch1()*2;
+ if (get_psw() & BIT_Z) {
+ PC=(PC+jmpAddr)&0xfffffffe;
+ }
+ return(resGO);
+}
+int
cl_xa::inst_BR(uint code, int operands)
{
+ short jmpAddr = fetch1()*2;
+ PC=(PC+jmpAddr)&0xfffffffe;
return(resGO);
}
int
cl_xa::inst_JZ(uint code, int operands)
{
short saddr = (fetch1() * 2);
- if (get_psw() & BIT_Z) {
+ if (reg1(8)==0) {
PC += saddr;
}
return(resGO);
cl_xa::inst_JNZ(uint code, int operands)
{
short saddr = (fetch1() * 2);
- if (!(get_psw() & BIT_Z)) {
- PC += saddr;
+ if (reg1(8)!=0) {
+ PC = (PC + saddr) & 0xfffffe;
}
return(resGO);
}
virtual int inst_MOV(uint code, int operands);
virtual int inst_ANL(uint code, int operands);
virtual int inst_ORL(uint code, int operands);
+ virtual int inst_BEQ(uint code, int operands);
virtual int inst_BR(uint code, int operands);
virtual int inst_JMP(uint code, int operands);
virtual int inst_CALL(uint code, int operands);
++immed_offset;
break;
case REG_DATA16 :
- sprintf(parm_str, "%s,#%04x",
+ sprintf(parm_str, "%s,#0x%04x",
reg_strs[((code >> 4) & 0xf)],
(short)((get_mem(MEM_ROM, addr+immed_offset+1)) |
(get_mem(MEM_ROM, addr+immed_offset)<<8)) );
return inst_ANL(code, operands);
case ORL:
return inst_ORL(code, operands);
+ case BEQ:
+ return inst_BEQ(code, operands);
case BR:
return inst_BR(code, operands);
case JMP: