From 6b6019207b4610f40ec4f3a870aa891a58520d9f Mon Sep 17 00:00:00 2001 From: hap Date: Sun, 15 Feb 2015 20:31:35 +0100 Subject: fix k/i input handling --- src/emu/cpu/amis2000/amis2000.c | 9 +++------ src/emu/cpu/amis2000/amis2000.h | 3 +-- src/emu/cpu/amis2000/amis2000op.inc | 13 +++++++------ 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/src/emu/cpu/amis2000/amis2000.c b/src/emu/cpu/amis2000/amis2000.c index 0b0feef7110..bdc32c9c597 100644 --- a/src/emu/cpu/amis2000/amis2000.c +++ b/src/emu/cpu/amis2000/amis2000.c @@ -156,8 +156,7 @@ void amis2000_device::device_start() m_bu = 0; m_acc = 0; m_e = 0; - m_i = 0; - m_k = 0; + m_ki_mask = 0; m_d = 0; m_d_active = false; m_d_polarity = 0; @@ -177,8 +176,7 @@ void amis2000_device::device_start() save_item(NAME(m_bu)); save_item(NAME(m_acc)); save_item(NAME(m_e)); - save_item(NAME(m_i)); - save_item(NAME(m_k)); + save_item(NAME(m_ki_mask)); save_item(NAME(m_d)); save_item(NAME(m_d_active)); save_item(NAME(m_d_polarity)); @@ -214,8 +212,7 @@ void amis2000_device::device_reset() m_d_polarity = 0; m_d = 0; d_latch_out(false); m_a = 0; m_write_a(0, 0, 0xffff); - m_i = 0xf; - m_k = 0xf; + m_ki_mask = 0xf; } diff --git a/src/emu/cpu/amis2000/amis2000.h b/src/emu/cpu/amis2000/amis2000.h index 2d70b6c887b..6eae4738fc3 100644 --- a/src/emu/cpu/amis2000/amis2000.h +++ b/src/emu/cpu/amis2000/amis2000.h @@ -91,8 +91,7 @@ protected: UINT8 m_bu; // 2/3-bit ram index y UINT8 m_acc; // 4-bit accumulator UINT8 m_e; // 4-bit generic register - UINT8 m_i; // 4-bit i-pins latch - UINT8 m_k; // 4-bit k-pins latch + UINT8 m_ki_mask; // 4-bit k/i-pins select latch UINT8 m_d; // 8-bit d-pins latch bool m_d_active; // d-pins available for direct i/o(floating), or outputting d-latch UINT8 m_d_polarity; // invert d-latch output diff --git a/src/emu/cpu/amis2000/amis2000op.inc b/src/emu/cpu/amis2000/amis2000op.inc index 5859516124c..e6a0822a15b 100644 --- a/src/emu/cpu/amis2000/amis2000op.inc +++ b/src/emu/cpu/amis2000/amis2000op.inc @@ -45,8 +45,7 @@ void amis2000_device::op_lai() { UINT8 param = m_op & 0x0f; m_acc = param; - m_i = m_read_i(0, 0xff) & param; - m_k = m_read_k(0, 0xff) & param; + m_ki_mask = param; } } @@ -371,14 +370,16 @@ void amis2000_device::op_szm() void amis2000_device::op_szi() { - // SZI: skip next on zero I pin(s) - m_skip = !m_i; + // SZI: skip next on I pin(s) + // note: AMI's manual is ambiguous here + m_skip = ((m_read_i(0, 0xff) & m_ki_mask) != 0); } void amis2000_device::op_szk() { - // SZK: skip next on zero K pin(s) - m_skip = !m_k; + // SZK: skip next on K pin(s) + // note: AMI's manual is ambiguous here + m_skip = ((m_read_k(0, 0xff) & m_ki_mask) != 0); } void amis2000_device::op_sbe() -- cgit v1.2.3