diff options
Diffstat (limited to 'src/mame/drivers/mmd1.cpp')
-rw-r--r-- | src/mame/drivers/mmd1.cpp | 73 |
1 files changed, 22 insertions, 51 deletions
diff --git a/src/mame/drivers/mmd1.cpp b/src/mame/drivers/mmd1.cpp index c04f6967165..d09e61806e3 100644 --- a/src/mame/drivers/mmd1.cpp +++ b/src/mame/drivers/mmd1.cpp @@ -98,16 +98,12 @@ public: DECLARE_INPUT_CHANGED_MEMBER(reset_button); -protected: +private: virtual void machine_start() override; virtual void machine_reset() override; - -private: - void port00_w(uint8_t data); - void port01_w(uint8_t data); - void port02_w(uint8_t data); - uint8_t keyboard_r(); - uint8_t port13_r(); + void round_leds_w(offs_t offset, u8 data); + u8 keyboard_r(); + u8 port13_r(); DECLARE_READ_LINE_MEMBER(si); DECLARE_WRITE_LINE_MEMBER(so); TIMER_DEVICE_CALLBACK_MEMBER(kansas_r); @@ -118,7 +114,7 @@ private: u8 m_cass_data[4]; bool m_cassinbit, m_cassoutbit, m_cassold; - uint8_t m_return_code; + u8 m_return_code; required_device<i8080_cpu_device> m_maincpu; required_device<cassette_image_device> m_cass; @@ -128,48 +124,19 @@ private: }; -void mmd1_state::port00_w(uint8_t data) -{ - m_p[0][7] = BIT(data,7) ? 0 : 1; - m_p[0][6] = BIT(data,6) ? 0 : 1; - m_p[0][5] = BIT(data,5) ? 0 : 1; - m_p[0][4] = BIT(data,4) ? 0 : 1; - m_p[0][3] = BIT(data,3) ? 0 : 1; - m_p[0][2] = BIT(data,2) ? 0 : 1; - m_p[0][1] = BIT(data,1) ? 0 : 1; - m_p[0][0] = BIT(data,0) ? 0 : 1; -} - -void mmd1_state::port01_w(uint8_t data) +void mmd1_state::round_leds_w(offs_t offset, u8 data) { - m_p[1][7] = BIT(data,7) ? 0 : 1; - m_p[1][6] = BIT(data,6) ? 0 : 1; - m_p[1][5] = BIT(data,5) ? 0 : 1; - m_p[1][4] = BIT(data,4) ? 0 : 1; - m_p[1][3] = BIT(data,3) ? 0 : 1; - m_p[1][2] = BIT(data,2) ? 0 : 1; - m_p[1][1] = BIT(data,1) ? 0 : 1; - m_p[1][0] = BIT(data,0) ? 0 : 1; + for (u8 i = 0; i < 8; i++) + m_p[offset][i] = BIT(data, i) ? 0 : 1; } -void mmd1_state::port02_w(uint8_t data) -{ - m_p[2][7] = BIT(data,7) ? 0 : 1; - m_p[2][6] = BIT(data,6) ? 0 : 1; - m_p[2][5] = BIT(data,5) ? 0 : 1; - m_p[2][4] = BIT(data,4) ? 0 : 1; - m_p[2][3] = BIT(data,3) ? 0 : 1; - m_p[2][2] = BIT(data,2) ? 0 : 1; - m_p[2][1] = BIT(data,1) ? 0 : 1; - m_p[2][0] = BIT(data,0) ? 0 : 1; -} // keyboard has a keydown and a keyup code. Keyup = last keydown + bit 7 set -uint8_t mmd1_state::keyboard_r() +u8 mmd1_state::keyboard_r() { - uint8_t line1 = ioport("LINE1")->read(); - uint8_t line2 = ioport("LINE2")->read(); - uint8_t i, data = 0xff; + u8 line1 = ioport("LINE1")->read(); + u8 line2 = ioport("LINE2")->read(); + u8 i, data = 0xff; for (i = 0; i < 8; i++) @@ -193,7 +160,7 @@ uint8_t mmd1_state::keyboard_r() return m_return_code; } -uint8_t mmd1_state::port13_r() +u8 mmd1_state::port13_r() { u8 data = 0xfa; data |= m_uart->dav_r() ? 1 : 0; @@ -250,7 +217,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( mmd1_state::kansas_r ) return; /* cassette - turn 1200/2400Hz to a bit */ - uint8_t cass_ws = (m_cass->input() > +0.04) ? 1 : 0; + u8 cass_ws = (m_cass->input() > +0.04) ? 1 : 0; if (cass_ws != m_cass_data[0]) { @@ -273,9 +240,8 @@ void mmd1_state::mem_map(address_map &map) void mmd1_state::io_map(address_map &map) { map.unmap_value_high(); - map(0x00, 0x00).rw(FUNC(mmd1_state::keyboard_r), FUNC(mmd1_state::port00_w)); - map(0x01, 0x01).w(FUNC(mmd1_state::port01_w)); - map(0x02, 0x02).w(FUNC(mmd1_state::port02_w)); + map(0x00, 0x02).w(FUNC(mmd1_state::round_leds_w)); + map(0x00, 0x00).r(FUNC(mmd1_state::keyboard_r)); //map(0x10, 0x11).rw TTY UART map(0x12, 0x12).rw(m_uart, FUNC(ay51013_device::receive), FUNC(ay51013_device::transmit)); map(0x13, 0x13).r(FUNC(mmd1_state::port13_r)); @@ -317,6 +283,11 @@ void mmd1_state::machine_start() { m_digits.resolve(); m_p.resolve(); + save_item(NAME(m_cass_data)); + save_item(NAME(m_cassinbit)); + save_item(NAME(m_cassoutbit)); + save_item(NAME(m_cassold)); + save_item(NAME(m_return_code)); } void mmd1_state::machine_reset() @@ -368,4 +339,4 @@ ROM_END /* Driver */ // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1976, mmd1, 0, 0, mmd1, mmd1, mmd1_state, empty_init, "E&L Instruments Inc", "MMD-1", MACHINE_NO_SOUND_HW ) +COMP( 1976, mmd1, 0, 0, mmd1, mmd1, mmd1_state, empty_init, "E&L Instruments Inc", "MMD-1 Mini-Micro Designer", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE ) |