code:
dev->regs[dreg] = res_data & mask;
if (!res_data)
dev->regs[MSP430_REG_SR] |= MSP430_SR_Z;
in function step_RxxM in sim.c
if res_data is 0x10000 and mask is 0xffff
the dev->regs[dreg] is correctly set to 0;
but res_data remains 0x10000 the MSP430_SR_Z bit is bad.
Furtherly if res_data is 1 the MSP430_SR_Z bit should be cleared.
dev->regs[MSP430_REG_SR] &= ~MSP430_SR_Z;
code: dev->regs[dreg] = res_data & mask; if (!res_data) dev->regs[MSP430_REG_SR] |= MSP430_SR_Z; in function step_RxxM in sim.c if res_data is 0x10000 and mask is 0xffff the dev->regs[dreg] is correctly set to 0; but res_data remains 0x10000 the MSP430_SR_Z bit is bad. Furtherly if res_data is 1 the MSP430_SR_Z bit should be cleared. dev->regs[MSP430_REG_SR] &= ~MSP430_SR_Z;