summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/mmd1.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/mmd1.cpp')
-rw-r--r--src/mame/drivers/mmd1.cpp27
1 files changed, 19 insertions, 8 deletions
diff --git a/src/mame/drivers/mmd1.cpp b/src/mame/drivers/mmd1.cpp
index d09e61806e3..84b2a07eaff 100644
--- a/src/mame/drivers/mmd1.cpp
+++ b/src/mame/drivers/mmd1.cpp
@@ -73,15 +73,20 @@ ToDo:
****************************************************************************/
#include "emu.h"
+
#include "cpu/i8085/i8085.h"
#include "imagedev/cassette.h"
#include "machine/ay31015.h"
#include "machine/clock.h"
#include "machine/timer.h"
+
#include "speaker.h"
+
#include "mmd1.lh"
+namespace {
+
class mmd1_state : public driver_device
{
public:
@@ -90,6 +95,7 @@ public:
, m_maincpu(*this, "maincpu")
, m_cass(*this, "cassette")
, m_uart(*this, "uart")
+ , m_lines(*this, "LINE%u", 1U)
, m_digits(*this, "digit%u", 0U)
, m_p(*this, "p%u_%u", 0U, 0U)
{ }
@@ -98,9 +104,11 @@ public:
DECLARE_INPUT_CHANGED_MEMBER(reset_button);
-private:
+protected:
virtual void machine_start() override;
virtual void machine_reset() override;
+
+private:
void round_leds_w(offs_t offset, u8 data);
u8 keyboard_r();
u8 port13_r();
@@ -119,6 +127,7 @@ private:
required_device<i8080_cpu_device> m_maincpu;
required_device<cassette_image_device> m_cass;
required_device<ay31015_device> m_uart;
+ required_ioport_array<2> m_lines;
output_finder<9> m_digits;
output_finder<3, 8> m_p;
};
@@ -134,21 +143,20 @@ void mmd1_state::round_leds_w(offs_t offset, u8 data)
// keyboard has a keydown and a keyup code. Keyup = last keydown + bit 7 set
u8 mmd1_state::keyboard_r()
{
- u8 line1 = ioport("LINE1")->read();
- u8 line2 = ioport("LINE2")->read();
- u8 i, data = 0xff;
-
+ const u8 line1 = m_lines[0]->read();
+ const u8 line2 = m_lines[1]->read();
+ u8 data = 0xff;
- for (i = 0; i < 8; i++)
+ for (unsigned i = 0; i < 8; i++)
{
if (!BIT(line1, i))
data = i;
}
- for (i = 0; i < 8; i++)
+ for (unsigned i = 0; i < 8; i++)
{
if (!BIT(line2, i))
- data = i+8;
+ data = i + 8;
}
if (data < 0x10)
@@ -336,6 +344,9 @@ ROM_START( mmd1 )
ROM_LOAD( "prom1.ic16", 0x0100, 0x0100, BAD_DUMP CRC(d23a6ac3) SHA1(469d981b635058dd23e843a3efc555316f87ece4) ) // Typed in by hand from the manual
ROM_END
+} // anonymous namespace
+
+
/* Driver */
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS