diff options
author | angelosa <salese_corp_ltd@email.it> | 2018-03-13 16:13:22 +0100 |
---|---|---|
committer | angelosa <salese_corp_ltd@email.it> | 2018-03-14 00:42:05 +0100 |
commit | e4a4c8ccb7267d39a99221c486261c195f060e42 (patch) | |
tree | 5391970cb10de3715b6d4a8042c54fc32ece1e44 | |
parent | 4b748463f02abcb3d2c6f9a7cdd52ac1f42c3ffb (diff) |
mb86235.cpp: ALU OR / XOR (nw)
-rw-r--r-- | src/devices/cpu/mb86235/mb86235drc.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/devices/cpu/mb86235/mb86235drc.cpp b/src/devices/cpu/mb86235/mb86235drc.cpp index fd1e627a478..fa0b2edf87e 100644 --- a/src/devices/cpu/mb86235/mb86235drc.cpp +++ b/src/devices/cpu/mb86235/mb86235drc.cpp @@ -1336,6 +1336,24 @@ void mb86235_device::generate_alu(drcuml_block *block, compiler_state *compiler, if (AU_CALC_REQUIRED) UML_MOV(block, FLAGS_AU, 0); break; + case 0x19: // OR + generate_alumul_input(block, compiler, desc, i2, I0, false, false); + UML_OR(block, alutemp ? mem(&m_core->alutemp) : get_alu_output(io), I0, get_alu1_input(i1)); + if (AN_CALC_REQUIRED) UML_SETc(block, COND_S, FLAGS_AN); + if (AZ_CALC_REQUIRED) UML_SETc(block, COND_Z, FLAGS_AZ); + if (AV_CALC_REQUIRED) UML_MOV(block, FLAGS_AV, 0); + if (AU_CALC_REQUIRED) UML_MOV(block, FLAGS_AU, 0); + break; + + case 0x1a: // XOR + generate_alumul_input(block, compiler, desc, i2, I0, false, false); + UML_XOR(block, alutemp ? mem(&m_core->alutemp) : get_alu_output(io), I0, get_alu1_input(i1)); + if (AN_CALC_REQUIRED) UML_SETc(block, COND_S, FLAGS_AN); + if (AZ_CALC_REQUIRED) UML_SETc(block, COND_Z, FLAGS_AZ); + if (AV_CALC_REQUIRED) UML_MOV(block, FLAGS_AV, 0); + if (AU_CALC_REQUIRED) UML_MOV(block, FLAGS_AU, 0); + break; + case 0x1c: // LSR generate_alumul_input(block, compiler, desc, i1, I0, false, false); UML_SHR(block, I0, I0, i2); |