diff options
author | 2019-12-18 22:48:08 -0500 | |
---|---|---|
committer | 2019-12-18 22:48:26 -0500 | |
commit | e665b95e65f853b4a82e75f55ac354035852d41f (patch) | |
tree | d01fb8db668c8f87bb7736e5c78b0f118fbaad93 /src/devices/cpu/vt50/vt50.cpp | |
parent | 449f853d2f57eec34e5bb5792440ddb203e9d061 (diff) |
vt52: Add bell (not working now) (nw)
Diffstat (limited to 'src/devices/cpu/vt50/vt50.cpp')
-rw-r--r-- | src/devices/cpu/vt50/vt50.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/devices/cpu/vt50/vt50.cpp b/src/devices/cpu/vt50/vt50.cpp index 9fbdcc35070..5a49110bb3f 100644 --- a/src/devices/cpu/vt50/vt50.cpp +++ b/src/devices/cpu/vt50/vt50.cpp @@ -26,6 +26,7 @@ vt5x_cpu_device::vt5x_cpu_device(const machine_config &mconfig, device_type type , m_ut_flag_callback(*this) , m_ruf_callback(*this) , m_key_up_callback(*this) + , m_bell_callback(*this) , m_bbits(bbits) , m_ybits(ybits) , m_pc(0) @@ -44,6 +45,7 @@ vt5x_cpu_device::vt5x_cpu_device(const machine_config &mconfig, device_type type , m_write_ff(false) , m_flag_test_ff(false) , m_m2u_ff(false) + , m_bell_ff(false) , m_load_pc(false) , m_qa_e23(0) , m_icount(0) @@ -89,6 +91,7 @@ void vt5x_cpu_device::device_resolve_objects() m_ut_flag_callback.resolve_safe(0); m_ruf_callback.resolve_safe(); m_key_up_callback.resolve_safe(1); + m_bell_callback.resolve_safe(); } void vt5x_cpu_device::device_start() @@ -133,6 +136,7 @@ void vt5x_cpu_device::device_start() save_item(NAME(m_write_ff)); save_item(NAME(m_flag_test_ff)); save_item(NAME(m_m2u_ff)); + save_item(NAME(m_bell_ff)); save_item(NAME(m_load_pc)); save_item(NAME(m_qa_e23)); } @@ -298,7 +302,9 @@ void vt5x_cpu_device::execute_tw(u8 inst) break; case 0060: - // CBFF (TODO) + // CBFF + m_bell_ff = !m_bell_ff; + m_bell_callback(m_bell_ff); break; case 0100: @@ -330,6 +336,8 @@ void vt5x_cpu_device::execute_tw(u8 inst) m_write_ff = (m_mode_ff || m_ac >= m_ram_do) && !m_done_ff; else m_write_ff = (inst & 0162) == 0022 || (inst & 0162) == 0062 || (inst & 0162) == 0122; + + // DONE is set by any RAM write, not just LD if (m_write_ff) m_done_ff = true; } @@ -470,7 +478,7 @@ void vt5x_cpu_device::execute_th(u8 inst) case 0160: // M0: TOSJ (TODO) - // M1: KEYJ (TODO) + // M1: KEYJ if (m_mode_ff) m_load_pc = m_key_up_callback(m_ac) & 1; break; |