diff options
author | AJR <ajrhacker@users.noreply.github.com> | 2018-08-31 23:17:49 -0400 |
---|---|---|
committer | AJR <ajrhacker@users.noreply.github.com> | 2018-08-31 23:17:59 -0400 |
commit | 0efc0f2dc3b03759acde81dd6827e9708bb1c4a1 (patch) | |
tree | 69b6e183fd209cd8b19451a67404956e113dab85 | |
parent | cdc0fb684fc06a6444db825c60c5cd2788da0836 (diff) |
m79152pc: Issue a beep (nw)
-rw-r--r-- | src/mame/drivers/m79152pc.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/mame/drivers/m79152pc.cpp b/src/mame/drivers/m79152pc.cpp index 431bd4fad96..2c37227a46e 100644 --- a/src/mame/drivers/m79152pc.cpp +++ b/src/mame/drivers/m79152pc.cpp @@ -1,5 +1,5 @@ // license:BSD-3-Clause -// copyright-holders:Miodrag Milanovic +// copyright-holders:Miodrag Milanovic,AJR /*************************************************************************** Mera-Elzab 79152pc @@ -19,9 +19,11 @@ #include "machine/z80ctc.h" #include "machine/z80sio.h" #include "machine/clock.h" +#include "sound/beep.h" #include "bus/rs232/rs232.h" #include "emupal.h" #include "screen.h" +#include "speaker.h" class m79152pc_state : public driver_device @@ -34,11 +36,13 @@ public: , m_maincpu(*this, "maincpu") , m_p_chargen(*this, "chargen") , m_uart(*this, "uart") + , m_beep(*this, "beep") { } void m79152pc(machine_config &config); private: + DECLARE_WRITE8_MEMBER(beep_w); DECLARE_WRITE_LINE_MEMBER(latch_full_w); DECLARE_READ_LINE_MEMBER(mcu_t0_r); @@ -54,10 +58,16 @@ private: required_device<z80_device> m_maincpu; required_region_ptr<u8> m_p_chargen; required_device<z80sio_device> m_uart; + required_device<beep_device> m_beep; bool m_latch_full; }; +WRITE8_MEMBER(m79152pc_state::beep_w) +{ + m_beep->set_state(BIT(offset, 2)); +} + WRITE_LINE_MEMBER(m79152pc_state::latch_full_w) { m_latch_full = state == ASSERT_LINE; @@ -86,6 +96,7 @@ void m79152pc_state::io_map(address_map &map) map(0x48, 0x4b).w("pit", FUNC(pit8253_device::write)); map(0x4c, 0x4c).w("mculatch", FUNC(i8212_device::strobe)); map(0x54, 0x57).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x58, 0x58).select(4).w(FUNC(m79152pc_state::beep_w)); } void m79152pc_state::mcu_map(address_map &map) @@ -182,6 +193,8 @@ MACHINE_CONFIG_START(m79152pc_state::m79152pc) MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 300-1) MCFG_SCREEN_UPDATE_DRIVER(m79152pc_state, screen_update) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("ctc", z80ctc_device, trg0)) // determines beep duration (probably too slow) + MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_m79152pc) MCFG_PALETTE_ADD_MONOCHROME("palette") @@ -221,6 +234,10 @@ MACHINE_CONFIG_START(m79152pc_state::m79152pc) MCFG_DEVICE_ADD("modem", RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart, z80sio_device, rxb_w)) //MCFG_RS232_CTS_HANDLER(WRITELINE(m_uart, z80sio_device, ctsb_w)) + + SPEAKER(config, "mono").front_center(); + BEEP(config, m_beep, 1000); + m_beep->add_route(ALL_OUTPUTS, "mono", 0.50); MACHINE_CONFIG_END /* ROM definition */ @@ -238,4 +255,4 @@ ROM_END /* Driver */ // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( ????, m79152pc, 0, 0, m79152pc, m79152pc, m79152pc_state, empty_init, "Mera-Elzab", "MERA 79152 PC", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 198?, m79152pc, 0, 0, m79152pc, m79152pc, m79152pc_state, empty_init, "Mera-Elzab", "MERA 79152 PC", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) |