diff options
author | Robbbert <Robbbert@users.noreply.github.com> | 2020-05-15 17:25:40 +1000 |
---|---|---|
committer | Robbbert <Robbbert@users.noreply.github.com> | 2020-05-15 17:25:40 +1000 |
commit | a8a043cfad150a070014ba588901a8d595a3fea5 (patch) | |
tree | 14e575213c3bf599d10f4803b0d6c5aee505e6df /src/mame/drivers/emma2.cpp | |
parent | 1726cfe706d87669df4e8a8a63d6c95fe094b7ee (diff) |
(nw) emma2: added pwm device
Diffstat (limited to 'src/mame/drivers/emma2.cpp')
-rw-r--r-- | src/mame/drivers/emma2.cpp | 33 |
1 files changed, 10 insertions, 23 deletions
diff --git a/src/mame/drivers/emma2.cpp b/src/mame/drivers/emma2.cpp index e348dd17dc8..b8446b2772e 100644 --- a/src/mame/drivers/emma2.cpp +++ b/src/mame/drivers/emma2.cpp @@ -52,6 +52,7 @@ To Do: #include "machine/6821pia.h" #include "imagedev/cassette.h" #include "speaker.h" +#include "video/pwm.h" #include "emma2.lh" @@ -64,8 +65,8 @@ public: , m_cassette(*this, "cassette") , m_via(*this, "via") , m_pia(*this, "pia") - , m_keyboard(*this, "X%u", 0) - , m_digits(*this, "digit%u", 0U) + , m_display(*this, "display") + , m_io_keyboard(*this, "X%u", 0U) { } void emma2(machine_config &config); @@ -75,18 +76,16 @@ private: DECLARE_WRITE8_MEMBER(digit_w); DECLARE_READ8_MEMBER(keyboard_r); virtual void machine_reset() override; - virtual void machine_start() override; void mem_map(address_map &map); uint8_t m_digit; - bool m_dig_change; required_device<cpu_device> m_maincpu; required_device<cassette_image_device> m_cassette; required_device<via6522_device> m_via; required_device<pia6821_device> m_pia; - required_ioport_array<8> m_keyboard; - output_finder<8> m_digits; + required_device<pwm_display_device> m_display; + required_ioport_array<8> m_io_keyboard; }; void emma2_state::mem_map(address_map &map) @@ -156,38 +155,24 @@ WRITE8_MEMBER( emma2_state::digit_w ) m_cassette->output( BIT(data, 6) ? +1.0 : -1.0); data &= 7; - if (data != m_digit) - { - m_digit = data; - m_dig_change = true; - } + m_digit = data; } WRITE8_MEMBER( emma2_state::segment_w ) { - if (m_dig_change) - { - m_dig_change = false; - m_digits[m_digit] = data; - } + m_display->matrix(1<<m_digit, data); } READ8_MEMBER( emma2_state::keyboard_r ) { - u8 data = m_keyboard[m_digit]->read(); + u8 data = m_io_keyboard[m_digit]->read(); data |= ((m_cassette)->input() < 0.0) ? 0x80 : 0; return data; } -void emma2_state::machine_start() -{ - m_digits.resolve(); -} - void emma2_state::machine_reset() { m_digit = 0; - m_dig_change = 0; } void emma2_state::emma2(machine_config &config) @@ -198,6 +183,8 @@ void emma2_state::emma2(machine_config &config) /* video hardware */ config.set_default_layout(layout_emma2); + PWM_DISPLAY(config, m_display).set_size(8, 8); + m_display->set_segmask(0xff, 0xff); /* Devices */ VIA6522(config, m_via, 1'000'000); // #2 from cpu |