swtp6800: Correct overflow(V) flag status bit
This commit is contained in:
parent
08330de7f4
commit
4cd8aff027
1 changed files with 10 additions and 6 deletions
|
@ -538,8 +538,9 @@ t_stat sim_instr (void)
|
||||||
PC = CPU_BD_get_mword(0xFFFB) & ADDRMASK;
|
PC = CPU_BD_get_mword(0xFFFB) & ADDRMASK;
|
||||||
break;
|
break;
|
||||||
case 0x40: /* NEG A */
|
case 0x40: /* NEG A */
|
||||||
|
op1 = A;
|
||||||
A = (0 - A) & 0xFF;
|
A = (0 - A) & 0xFF;
|
||||||
COND_SET_FLAG_V(A & 0x80);
|
condevalVa(A, op1);
|
||||||
COND_SET_FLAG(A,CF);
|
COND_SET_FLAG(A,CF);
|
||||||
COND_SET_FLAG_N(A);
|
COND_SET_FLAG_N(A);
|
||||||
COND_SET_FLAG_Z(A);
|
COND_SET_FLAG_Z(A);
|
||||||
|
@ -621,8 +622,9 @@ t_stat sim_instr (void)
|
||||||
SET_FLAG(ZF);
|
SET_FLAG(ZF);
|
||||||
break;
|
break;
|
||||||
case 0x50: /* NEG B */
|
case 0x50: /* NEG B */
|
||||||
|
op1 = B;
|
||||||
B = (0 - B) & 0xFF;
|
B = (0 - B) & 0xFF;
|
||||||
COND_SET_FLAG_V(B & 0x80);
|
condevalVa(B, op1);
|
||||||
COND_SET_FLAG(B,CF);
|
COND_SET_FLAG(B,CF);
|
||||||
COND_SET_FLAG_N(B);
|
COND_SET_FLAG_N(B);
|
||||||
COND_SET_FLAG_Z(B);
|
COND_SET_FLAG_Z(B);
|
||||||
|
@ -706,9 +708,10 @@ t_stat sim_instr (void)
|
||||||
break;
|
break;
|
||||||
case 0x60: /* NEG ind */
|
case 0x60: /* NEG ind */
|
||||||
DAR = get_indir_addr();
|
DAR = get_indir_addr();
|
||||||
lo = (0 - CPU_BD_get_mbyte(DAR)) & 0xFF;
|
op1 = CPU_BD_get_mbyte(DAR);
|
||||||
|
lo = (0 - op1) & 0xFF;
|
||||||
CPU_BD_put_mbyte(DAR, lo);
|
CPU_BD_put_mbyte(DAR, lo);
|
||||||
COND_SET_FLAG_V(lo & 0x80);
|
condevalVs(lo, op1);
|
||||||
COND_SET_FLAG(lo,CF);
|
COND_SET_FLAG(lo,CF);
|
||||||
COND_SET_FLAG_N(lo);
|
COND_SET_FLAG_N(lo);
|
||||||
COND_SET_FLAG_Z(lo);
|
COND_SET_FLAG_Z(lo);
|
||||||
|
@ -816,9 +819,10 @@ t_stat sim_instr (void)
|
||||||
break;
|
break;
|
||||||
case 0x70: /* NEG ext */
|
case 0x70: /* NEG ext */
|
||||||
DAR = get_ext_addr();
|
DAR = get_ext_addr();
|
||||||
lo = (0 - CPU_BD_get_mbyte(DAR)) & 0xFF;
|
op1 = CPU_BD_get_mbyte(DAR);
|
||||||
|
lo = (0 - op1) & 0xFF;
|
||||||
CPU_BD_put_mbyte(DAR, lo);
|
CPU_BD_put_mbyte(DAR, lo);
|
||||||
COND_SET_FLAG_V(lo & 0x80);
|
condevalVs(lo, op1);
|
||||||
CLR_FLAG(CF);
|
CLR_FLAG(CF);
|
||||||
if (lo)
|
if (lo)
|
||||||
SET_FLAG(CF);
|
SET_FLAG(CF);
|
||||||
|
|
Loading…
Add table
Reference in a new issue