diff options
Diffstat (limited to 'src/mame/drivers/mephisto_glasgow.cpp')
-rw-r--r-- | src/mame/drivers/mephisto_glasgow.cpp | 86 |
1 files changed, 57 insertions, 29 deletions
diff --git a/src/mame/drivers/mephisto_glasgow.cpp b/src/mame/drivers/mephisto_glasgow.cpp index b12d54a0e89..6fd353da8a7 100644 --- a/src/mame/drivers/mephisto_glasgow.cpp +++ b/src/mame/drivers/mephisto_glasgow.cpp @@ -40,9 +40,11 @@ TODO: ***************************************************************************/ #include "emu.h" + #include "cpu/m68000/m68000.h" #include "machine/mmboard.h" #include "sound/dac.h" + #include "speaker.h" // internal artwork @@ -50,6 +52,8 @@ TODO: #include "mephisto_glasgow.lh" +namespace { + class glasgow_state : public driver_device { public: @@ -65,10 +69,10 @@ public: void glasgow(machine_config &config); protected: - void glasgow_lcd_w(uint8_t data); - void glasgow_lcd_flag_w(uint8_t data); - uint8_t glasgow_keys_r(); - void glasgow_keys_w(uint8_t data); + void glasgow_lcd_w(u8 data); + void glasgow_lcd_flag_w(u8 data); + u8 glasgow_keys_r(); + void glasgow_keys_w(u8 data); virtual void machine_start() override; virtual void machine_reset() override; @@ -81,9 +85,9 @@ protected: required_ioport_array<2> m_keyboard; output_finder<4> m_digits; - uint8_t m_lcd_shift_counter; - uint8_t m_led7; - uint8_t m_key_select; + u8 m_lcd_shift_counter; + u8 m_led7; + u8 m_key_select; }; @@ -96,11 +100,11 @@ public: void dallas32(machine_config &config); protected: - void write_lcd(uint8_t data); - void write_lcd_flag(uint8_t data); - void write_beeper(uint8_t data); - void write_board(uint8_t data); - uint8_t read_newkeys(); + void write_lcd(u8 data); + void write_lcd_flag(u8 data); + void write_beeper(u8 data); + void write_board(u8 data); + u8 read_newkeys(); void amsterd_mem(address_map &map); void dallas32_mem(address_map &map); @@ -108,7 +112,11 @@ protected: -void glasgow_state::glasgow_lcd_w(uint8_t data) +/****************************************************************************** + I/O +******************************************************************************/ + +void glasgow_state::glasgow_lcd_w(u8 data) { if (m_led7 == 0) m_digits[m_lcd_shift_counter] = data; @@ -117,9 +125,9 @@ void glasgow_state::glasgow_lcd_w(uint8_t data) m_lcd_shift_counter &= 3; } -void glasgow_state::glasgow_lcd_flag_w(uint8_t data) +void glasgow_state::glasgow_lcd_flag_w(u8 data) { - uint8_t const lcd_flag = data & 0x81; + u8 const lcd_flag = data & 0x81; m_dac->write(BIT(lcd_flag, 0)); @@ -129,10 +137,10 @@ void glasgow_state::glasgow_lcd_flag_w(uint8_t data) m_led7 = 0; } -uint8_t glasgow_state::glasgow_keys_r() +u8 glasgow_state::glasgow_keys_r() { // See if any keys pressed - uint8_t data = 3; + u8 data = 3; if (m_key_select == m_keyboard[0]->read()) data &= 1; @@ -143,12 +151,12 @@ uint8_t glasgow_state::glasgow_keys_r() return data; } -void glasgow_state::glasgow_keys_w(uint8_t data) +void glasgow_state::glasgow_keys_w(u8 data) { m_key_select = data; } -void amsterd_state::write_lcd(uint8_t data) +void amsterd_state::write_lcd(u8 data) { if (m_lcd_shift_counter & 4) m_digits[m_lcd_shift_counter & 3] = data; @@ -157,7 +165,7 @@ void amsterd_state::write_lcd(uint8_t data) m_lcd_shift_counter &= 7; } -void amsterd_state::write_lcd_flag(uint8_t data) +void amsterd_state::write_lcd_flag(u8 data) { // The key function in the rom expects a value from the // second key row after writing to here @@ -166,19 +174,19 @@ void amsterd_state::write_lcd_flag(uint8_t data) m_led7 = data ? 255 : 0; } -void amsterd_state::write_board(uint8_t data) +void amsterd_state::write_board(u8 data) { m_key_select = 0; m_board->led_w(0); m_board->mux_w(data); } -void amsterd_state::write_beeper(uint8_t data) +void amsterd_state::write_beeper(u8 data) { m_dac->write(BIT(data, 0)); } -uint8_t amsterd_state::read_newkeys() +u8 amsterd_state::read_newkeys() { return m_keyboard[m_key_select & 1]->read(); } @@ -201,6 +209,11 @@ void glasgow_state::machine_reset() } + +/****************************************************************************** + Address Maps +******************************************************************************/ + void glasgow_state::glasgow_mem(address_map &map) { map.global_mask(0x1ffff); @@ -239,6 +252,12 @@ void amsterd_state::dallas32_mem(address_map &map) map(0x800088, 0x800088).w("board", FUNC(mephisto_board_device::led_w)); } + + +/****************************************************************************** + Input Ports +******************************************************************************/ + static INPUT_PORTS_START( new_keyboard ) PORT_START("LINE0") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A / 1") PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) @@ -284,6 +303,11 @@ static INPUT_PORTS_START( old_keyboard ) INPUT_PORTS_END + +/****************************************************************************** + Machine Configs +******************************************************************************/ + void glasgow_state::glasgow(machine_config &config) { /* basic machine hardware */ @@ -323,9 +347,10 @@ void amsterd_state::dallas32(machine_config &config) } -/*************************************************************************** - ROM definitions -***************************************************************************/ + +/****************************************************************************** + ROM Definitions +******************************************************************************/ ROM_START( glasgow ) ROM_REGION( 0x10000, "maincpu", 0 ) @@ -387,10 +412,13 @@ ROM_START( roma16a ) ROM_LOAD16_BYTE("roma_l_high", 0x08001, 0x04000, CRC(0b20617b) SHA1(f0296c486ce9009a69de1e50b90b0e1b7555f468) ) ROM_END +} // anonymous namespace -/*************************************************************************** - Game drivers -***************************************************************************/ + + +/****************************************************************************** + Drivers +******************************************************************************/ /* YEAR, NAME, PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ CONS( 1984, glasgow, 0, 0, glasgow, old_keyboard, glasgow_state, empty_init, "Hegener + Glaser", "Mephisto III-S Glasgow", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) |