From 5b170fd5aba4bd6561796edd406459c92e8455c2 Mon Sep 17 00:00:00 2001 From: hap Date: Tue, 17 Mar 2015 21:34:00 +0100 Subject: [PATCH] messing around --- src/emu/cpu/hmcs40/hmcs40.c | 66 +++++++++++++++++++++------------ src/emu/cpu/hmcs40/hmcs40op.inc | 4 +- 2 files changed, 45 insertions(+), 25 deletions(-) diff --git a/src/emu/cpu/hmcs40/hmcs40.c b/src/emu/cpu/hmcs40/hmcs40.c index 66663da73c0..f3b7f9a17dc 100644 --- a/src/emu/cpu/hmcs40/hmcs40.c +++ b/src/emu/cpu/hmcs40/hmcs40.c @@ -570,6 +570,9 @@ void hmcs40_cpu_device::execute_run() m_i = BITSWAP8(m_op,7,6,5,4,0,1,2,3) & 0xf; // reversed bit-order for immediate param increment_pc(); + // handle opcode + switch (m_op) + { /* op_ayy(); - @@ -585,42 +588,65 @@ op_alem(); - 324 124 op_blem(); - 267 024 op_lay(); - 118 + */ - // handle opcode - switch (m_op) - { case 0x118: op_lay(); // probably lay break; + + case 0x046: + op_daa(); + break; + case 0x045: + op_das(); + break; + + case 0x267: - op_blem(); break; // bnem or blem + op_blem(); // bnem or blem + break; + case 0x124: op_alem(); // alem or anem break; case 0x324: - op_anem(); break; // " + op_anem(); // " + break; + case 0x024: //op_nega(); //op_am(); op_illegal(); break; - case 0x234: - // sm? -#if 0 - m_a = ram_r() - m_a; - m_s = ~m_a >> 4 & 1; - m_a &= 0xf; -#else - op_am(); -#endif + + case 0x04b: + op_illegal(); + //op_rec(); break; case 0x04c: - op_illegal(); - //m_c ^= 1; - //op_lat(); + op_rec(); break; + case 0x030: + op_amc(); + break; + case 0x034: + //op_illegal(); + op_amc(); // mirror? + break; + + case 0x230: + op_smc(); + break; + case 0x234: + //op_illegal(); + op_smc(); // mirror? + break; + + + + @@ -637,15 +663,11 @@ op_lay(); - 118 /* ok */ op_lmiiy(); break; case 0x020: case 0x021: case 0x022: case 0x023: op_lbm(); break; - case 0x030: - op_amc(); break; case 0x03c: op_lta(); break; case 0x040: /* ok */ op_lxa(); break; - case 0x04b: - op_rec(); break; case 0x04f: op_sec(); break; case 0x050: @@ -751,8 +773,6 @@ op_lay(); - 118 /* ok */ op_rotr(); break; case 0x225: /* ok */ op_rotl(); break; - case 0x230: - op_smc(); break; case 0x23c: op_lat(); break; diff --git a/src/emu/cpu/hmcs40/hmcs40op.inc b/src/emu/cpu/hmcs40/hmcs40op.inc index 15c6d309755..74c8b5a1efa 100644 --- a/src/emu/cpu/hmcs40/hmcs40op.inc +++ b/src/emu/cpu/hmcs40/hmcs40op.inc @@ -662,13 +662,13 @@ void hmcs40_cpu_device::op_p() if (o & 0x100) { // B3 B2 B1 B0 A0 A1 A2 A3 - m_a = BITSWAP8((UINT8)o,7,6,5,4,0,1,2,3) & 0xf; + m_a = BITSWAP8(o,7,6,5,4,0,1,2,3) & 0xf; m_b = o >> 4 & 0xf; } if (o & 0x200) { // R20 R21 R22 R23 R30 R31 R32 R33 - o = BITSWAP8((UINT8)o,0,1,2,3,4,5,6,7); + o = BITSWAP8(o,0,1,2,3,4,5,6,7); write_r(2, o & 0xf); write_r(3, o >> 4 & 0xf); }