summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2015-02-15 20:31:35 +0100
committer hap <happppp@users.noreply.github.com>2015-02-15 20:31:35 +0100
commit6b6019207b4610f40ec4f3a870aa891a58520d9f (patch)
treeeb088508a695ff0a59a140d2793889008383e9aa
parent925035f8f7da79ed013529702942a1b8d3ba7d68 (diff)
fix k/i input handling
-rw-r--r--src/emu/cpu/amis2000/amis2000.c9
-rw-r--r--src/emu/cpu/amis2000/amis2000.h3
-rw-r--r--src/emu/cpu/amis2000/amis2000op.inc13
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()