of inst.cc with FUNC1 and FUNC2 defined as
various operations to implement ADD, ADDC, ...
*
- * Written by Karl Bongers karl@turbobit.com
- *
- * Copyright (C) 1999,99 Drotos Daniel, Talker Bt.
+ * Copyright (C) 1999,2002 Drotos Daniel, Talker Bt.
*
* To contact author send email to drdani@mazsola.iit.uni-miskolc.hu
+ * Other contributors include:
+ * Karl Bongers karl@turbobit.com,
+ * Johan Knol
*
*/
case IREGOFF16_REG :
{
int offset;
- if (operands == REG_IREGOFF8) {
+ if (operands == IREGOFF8_REG) {
offset = (int)((char) fetch());
} else {
offset = (int)((short)fetch2());
}
if (code & 0x0800) { /* word op */
- t_mem addr = reg2(RI_70) + offset;
- unsigned short wtmp, wtotal;
- wtmp = get2(addr);
- wtotal = FUNC2( wtmp, reg2(RI_F0) );
+ t_mem addr = reg2(RI_07) + offset;
+ unsigned short wtotal;
+ wtotal = FUNC2( get2(addr), reg2(RI_F0) );
store2(addr, wtotal);
} else {
- t_mem addr = reg2(RI_70) + ((short) fetch2());
+ t_mem addr = reg2(RI_07) + offset;
unsigned char total;
total = FUNC1( get1(addr), reg1(RI_F0) );
store1(addr, total);
)
);
} else {
- int offset = (int)((short)fetch2());
set_reg1( RI_F0,
FUNC1( reg1(RI_F0),
get1(reg2(RI_07)+offset)
break;
case REG_DATA8 :
+#if 0
+ {
+ unsigned char dat = fetch();
+ unsigned char res;
+ res = FUNC1( reg1(RI_F0), dat);
+ set_reg1( RI_F0, res );
+ printf("reg_data8 code=%x dat=%x, res=%x r=%x\n", code, dat, res, reg1( RI_F0) );
+ }
+#endif
set_reg1( RI_F0, FUNC1( reg1(RI_F0), fetch()) );
break;
case REG_DATA16 :
- set_reg2( RI_F0, FUNC2( reg2(RI_F0), fetch2()) );
+ {
+ unsigned short dat = fetch2();
+ set_reg2( RI_F0, FUNC2( reg2(RI_F0), dat) );
+ }
break;
case IREGINC_DATA8 :