summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
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
commite4a4c8ccb7267d39a99221c486261c195f060e42 (patch)
tree5391970cb10de3715b6d4a8042c54fc32ece1e44
parent4b748463f02abcb3d2c6f9a7cdd52ac1f42c3ffb (diff)
mb86235.cpp: ALU OR / XOR (nw)
-rw-r--r--src/devices/cpu/mb86235/mb86235drc.cpp18
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);