mirror of
https://github.com/holub/mame
synced 2025-07-04 17:38:08 +03:00
vt52: Add bell (not working now) (nw)
This commit is contained in:
parent
449f853d2f
commit
e665b95e65
@ -26,6 +26,7 @@ vt5x_cpu_device::vt5x_cpu_device(const machine_config &mconfig, device_type type
|
|||||||
, m_ut_flag_callback(*this)
|
, m_ut_flag_callback(*this)
|
||||||
, m_ruf_callback(*this)
|
, m_ruf_callback(*this)
|
||||||
, m_key_up_callback(*this)
|
, m_key_up_callback(*this)
|
||||||
|
, m_bell_callback(*this)
|
||||||
, m_bbits(bbits)
|
, m_bbits(bbits)
|
||||||
, m_ybits(ybits)
|
, m_ybits(ybits)
|
||||||
, m_pc(0)
|
, 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_write_ff(false)
|
||||||
, m_flag_test_ff(false)
|
, m_flag_test_ff(false)
|
||||||
, m_m2u_ff(false)
|
, m_m2u_ff(false)
|
||||||
|
, m_bell_ff(false)
|
||||||
, m_load_pc(false)
|
, m_load_pc(false)
|
||||||
, m_qa_e23(0)
|
, m_qa_e23(0)
|
||||||
, m_icount(0)
|
, m_icount(0)
|
||||||
@ -89,6 +91,7 @@ void vt5x_cpu_device::device_resolve_objects()
|
|||||||
m_ut_flag_callback.resolve_safe(0);
|
m_ut_flag_callback.resolve_safe(0);
|
||||||
m_ruf_callback.resolve_safe();
|
m_ruf_callback.resolve_safe();
|
||||||
m_key_up_callback.resolve_safe(1);
|
m_key_up_callback.resolve_safe(1);
|
||||||
|
m_bell_callback.resolve_safe();
|
||||||
}
|
}
|
||||||
|
|
||||||
void vt5x_cpu_device::device_start()
|
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_write_ff));
|
||||||
save_item(NAME(m_flag_test_ff));
|
save_item(NAME(m_flag_test_ff));
|
||||||
save_item(NAME(m_m2u_ff));
|
save_item(NAME(m_m2u_ff));
|
||||||
|
save_item(NAME(m_bell_ff));
|
||||||
save_item(NAME(m_load_pc));
|
save_item(NAME(m_load_pc));
|
||||||
save_item(NAME(m_qa_e23));
|
save_item(NAME(m_qa_e23));
|
||||||
}
|
}
|
||||||
@ -298,7 +302,9 @@ void vt5x_cpu_device::execute_tw(u8 inst)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 0060:
|
case 0060:
|
||||||
// CBFF (TODO)
|
// CBFF
|
||||||
|
m_bell_ff = !m_bell_ff;
|
||||||
|
m_bell_callback(m_bell_ff);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0100:
|
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;
|
m_write_ff = (m_mode_ff || m_ac >= m_ram_do) && !m_done_ff;
|
||||||
else
|
else
|
||||||
m_write_ff = (inst & 0162) == 0022 || (inst & 0162) == 0062 || (inst & 0162) == 0122;
|
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)
|
if (m_write_ff)
|
||||||
m_done_ff = true;
|
m_done_ff = true;
|
||||||
}
|
}
|
||||||
@ -470,7 +478,7 @@ void vt5x_cpu_device::execute_th(u8 inst)
|
|||||||
|
|
||||||
case 0160:
|
case 0160:
|
||||||
// M0: TOSJ (TODO)
|
// M0: TOSJ (TODO)
|
||||||
// M1: KEYJ (TODO)
|
// M1: KEYJ
|
||||||
if (m_mode_ff)
|
if (m_mode_ff)
|
||||||
m_load_pc = m_key_up_callback(m_ac) & 1;
|
m_load_pc = m_key_up_callback(m_ac) & 1;
|
||||||
break;
|
break;
|
||||||
|
@ -23,6 +23,7 @@ public:
|
|||||||
auto ut_flag_callback() { return m_ut_flag_callback.bind(); }
|
auto ut_flag_callback() { return m_ut_flag_callback.bind(); }
|
||||||
auto ruf_callback() { return m_ruf_callback.bind(); }
|
auto ruf_callback() { return m_ruf_callback.bind(); }
|
||||||
auto key_up_callback() { return m_key_up_callback.bind(); }
|
auto key_up_callback() { return m_key_up_callback.bind(); }
|
||||||
|
auto bell_callback() { return m_bell_callback.bind(); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// construction/destruction
|
// construction/destruction
|
||||||
@ -66,6 +67,7 @@ protected:
|
|||||||
devcb_read_line m_ut_flag_callback;
|
devcb_read_line m_ut_flag_callback;
|
||||||
devcb_write_line m_ruf_callback;
|
devcb_write_line m_ruf_callback;
|
||||||
devcb_read8 m_key_up_callback;
|
devcb_read8 m_key_up_callback;
|
||||||
|
devcb_write_line m_bell_callback;
|
||||||
|
|
||||||
// register dimensions
|
// register dimensions
|
||||||
const u8 m_bbits;
|
const u8 m_bbits;
|
||||||
@ -90,6 +92,7 @@ protected:
|
|||||||
bool m_write_ff;
|
bool m_write_ff;
|
||||||
bool m_flag_test_ff;
|
bool m_flag_test_ff;
|
||||||
bool m_m2u_ff;
|
bool m_m2u_ff;
|
||||||
|
bool m_bell_ff;
|
||||||
bool m_load_pc;
|
bool m_load_pc;
|
||||||
bool m_qa_e23;
|
bool m_qa_e23;
|
||||||
s32 m_icount;
|
s32 m_icount;
|
||||||
|
@ -23,7 +23,9 @@
|
|||||||
//#include "bus/rs232/rs232.h"
|
//#include "bus/rs232/rs232.h"
|
||||||
#include "cpu/vt50/vt50.h"
|
#include "cpu/vt50/vt50.h"
|
||||||
#include "machine/ay31015.h"
|
#include "machine/ay31015.h"
|
||||||
|
#include "sound/spkrdev.h"
|
||||||
#include "screen.h"
|
#include "screen.h"
|
||||||
|
#include "speaker.h"
|
||||||
|
|
||||||
class vt52_state : public driver_device
|
class vt52_state : public driver_device
|
||||||
{
|
{
|
||||||
@ -202,12 +204,16 @@ void vt52_state::vt52(machine_config &mconfig)
|
|||||||
m_maincpu->ut_flag_callback().set(FUNC(vt52_state::xrdy_eoc_r));
|
m_maincpu->ut_flag_callback().set(FUNC(vt52_state::xrdy_eoc_r));
|
||||||
m_maincpu->ruf_callback().set(m_uart, FUNC(ay51013_device::write_rdav));
|
m_maincpu->ruf_callback().set(m_uart, FUNC(ay51013_device::write_rdav));
|
||||||
m_maincpu->key_up_callback().set(FUNC(vt52_state::key_r));
|
m_maincpu->key_up_callback().set(FUNC(vt52_state::key_r));
|
||||||
|
m_maincpu->bell_callback().set("bell", FUNC(speaker_sound_device::level_w));
|
||||||
|
|
||||||
AY51013(mconfig, m_uart); // TR1402 or equivalent
|
AY51013(mconfig, m_uart); // TR1402 or equivalent
|
||||||
|
|
||||||
screen_device &screen(SCREEN(mconfig, "screen", SCREEN_TYPE_RASTER));
|
screen_device &screen(SCREEN(mconfig, "screen", SCREEN_TYPE_RASTER));
|
||||||
screen.set_raw(13.824_MHz_XTAL, 900, 0, 720, 256, 0, 192);
|
screen.set_raw(13.824_MHz_XTAL, 900, 0, 720, 256, 0, 192);
|
||||||
screen.set_screen_update(FUNC(vt52_state::screen_update));
|
screen.set_screen_update(FUNC(vt52_state::screen_update));
|
||||||
|
|
||||||
|
SPEAKER(mconfig, "mono").front_center();
|
||||||
|
SPEAKER_SOUND(mconfig, "bell").add_route(ALL_OUTPUTS, "mono", 0.05);
|
||||||
}
|
}
|
||||||
|
|
||||||
ROM_START(vt52)
|
ROM_START(vt52)
|
||||||
|
Loading…
Reference in New Issue
Block a user