diff options
Diffstat (limited to 'src/mame/drivers/proteus3.cpp')
-rw-r--r-- | src/mame/drivers/proteus3.cpp | 30 |
1 files changed, 12 insertions, 18 deletions
diff --git a/src/mame/drivers/proteus3.cpp b/src/mame/drivers/proteus3.cpp index c18892408bf..31e7b205429 100644 --- a/src/mame/drivers/proteus3.cpp +++ b/src/mame/drivers/proteus3.cpp @@ -85,10 +85,9 @@ private: DECLARE_WRITE_LINE_MEMBER(ca2_w); DECLARE_WRITE8_MEMBER(video_w); void kbd_put(u8 data); - DECLARE_WRITE_LINE_MEMBER(acia1_txdata_w); DECLARE_WRITE_LINE_MEMBER(acia1_clock_w); - TIMER_DEVICE_CALLBACK_MEMBER(timer_c); - TIMER_DEVICE_CALLBACK_MEMBER(timer_p); + TIMER_DEVICE_CALLBACK_MEMBER(kansas_w); + TIMER_DEVICE_CALLBACK_MEMBER(kansas_r); uint32_t screen_update_proteus3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); // Clocks @@ -115,7 +114,7 @@ private: uint8_t m_flashcnt; uint16_t m_curs_pos; uint8_t m_cass_data[4]; - bool m_cass_state; + bool m_cassbit; bool m_cassold; uint8_t m_clockcnt; virtual void machine_reset() override; @@ -200,23 +199,23 @@ void proteus3_state::write_acia_clocks(int id, int state) /****************************************************************************** Cassette ******************************************************************************/ -TIMER_DEVICE_CALLBACK_MEMBER( proteus3_state::timer_c ) +TIMER_DEVICE_CALLBACK_MEMBER( proteus3_state::kansas_w ) { m_cass_data[3]++; - if (m_cass_state != m_cassold) + if (m_cassbit != m_cassold) { m_cass_data[3] = 0; - m_cassold = m_cass_state; + m_cassold = m_cassbit; } - if (m_cass_state) + if (m_cassbit) m_cass->output(BIT(m_cass_data[3], 0) ? -1.0 : +1.0); // 2400Hz else m_cass->output(BIT(m_cass_data[3], 1) ? -1.0 : +1.0); // 1200Hz } -TIMER_DEVICE_CALLBACK_MEMBER( proteus3_state::timer_p ) +TIMER_DEVICE_CALLBACK_MEMBER( proteus3_state::kansas_r ) { /* cassette - turn 1200/2400Hz to a bit */ m_cass_data[1]++; @@ -230,11 +229,6 @@ TIMER_DEVICE_CALLBACK_MEMBER( proteus3_state::timer_p ) } } -WRITE_LINE_MEMBER( proteus3_state::acia1_txdata_w ) -{ - m_cass_state = state; -} - WRITE_LINE_MEMBER( proteus3_state::acia1_clock_w ) { m_clockcnt++; @@ -361,7 +355,7 @@ void proteus3_state::machine_reset() { m_curs_pos = 0; m_cass_data[0] = m_cass_data[1] = m_cass_data[2] = m_cass_data[3] = 0; - m_cass_state = 1; + m_cassbit = 1; m_cassold = 1; m_acia1->write_rxd(1); @@ -408,14 +402,14 @@ void proteus3_state::proteus3(machine_config &config) /* cassette */ ACIA6850(config, m_acia1, 0); - m_acia1->txd_handler().set(FUNC(proteus3_state::acia1_txdata_w)); + m_acia1->txd_handler().set([this] (bool state) { m_cassbit = state; }); CASSETTE(config, m_cass); m_cass->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED); SPEAKER(config, "mono").front_center(); WAVE(config, "wave", m_cass).add_route(ALL_OUTPUTS, "mono", 0.25); - TIMER(config, "timer_c").configure_periodic(FUNC(proteus3_state::timer_c), attotime::from_hz(4800)); - TIMER(config, "timer_p").configure_periodic(FUNC(proteus3_state::timer_p), attotime::from_hz(40000)); + TIMER(config, "kansas_w").configure_periodic(FUNC(proteus3_state::kansas_w), attotime::from_hz(4800)); + TIMER(config, "kansas_r").configure_periodic(FUNC(proteus3_state::kansas_r), attotime::from_hz(40000)); // optional tty keyboard ACIA6850(config, m_acia2, 0); |