diff options
Diffstat (limited to 'src/mame/drivers/mephisto_glasgow.cpp')
-rw-r--r-- | src/mame/drivers/mephisto_glasgow.cpp | 349 |
1 files changed, 81 insertions, 268 deletions
diff --git a/src/mame/drivers/mephisto_glasgow.cpp b/src/mame/drivers/mephisto_glasgow.cpp index 794fa4da8db..f4ab6e85c5a 100644 --- a/src/mame/drivers/mephisto_glasgow.cpp +++ b/src/mame/drivers/mephisto_glasgow.cpp @@ -1,15 +1,23 @@ // license:BSD-3-Clause -// copyright-holders:Dirk Verwiebe, Cowering -/*************************************************************************** +// copyright-holders:Dirk Verwiebe, Cowering, hap +// thanks-to:Berger +/****************************************************************************** Mephisto Glasgow 3 S chess computer Dirk V. sp_rinter@gmx.de -68000 CPU -64 KB ROM -16 KB RAM -4 Digit LCD +TODO: +- add waitstates, CPU is 12MHz but with DTACK waitstates for slow EPROMs, + effective speed is less than 10MHz + +=============================================================================== + +Hardware notes: +- 68000 CPU +- 64 KB ROM +- 16 KB RAM +- 4 Digit LCD 3*74LS138 Decoder/Multiplexer 1*74LS74 Dual positive edge triggered D Flip Flop @@ -23,34 +31,18 @@ sp_rinter@gmx.de 1*74LS367 3 State Hex Buffers 1*SG-10 Seiko 4-pin plastic XTAL chip "50H", to IPL0+2 - -How to play (quick guide) -1. You are the white player. -2. Click on the piece to move (LED starts flashing), then click where it goes -3. Computer plays black, it will work out its move and beep. -4. Read the move in the display, or look for the flashing LEDs. -5. Move the computer's piece in the same way you moved yours. -6. You'll need to read the official user manual for advanced features, or if - you get messages such as "Err1". - -TODO: -- add waitstates(applies to glasgow, amsterd, others?), CPU is 12MHz but with DTACK - waitstates for slow EPROMs, effective speed is less than 10MHz -- use mmdisplay1 device -- split driver (glasgow/amsterdam) - -***************************************************************************/ +******************************************************************************/ #include "emu.h" #include "cpu/m68000/m68000.h" #include "machine/mmboard.h" #include "sound/dac.h" +#include "video/mmdisplay1.h" #include "speaker.h" // internal artwork -#include "mephisto_amsterdam.lh" #include "mephisto_glasgow.lh" @@ -62,150 +54,71 @@ public: glasgow_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") - , m_dac(*this, "dac") , m_board(*this, "board") - , m_keyboard(*this, "LINE%u", 0) - , m_digits(*this, "digit%u", 0U) + , m_display(*this, "display") + , m_dac(*this, "dac") + , m_keys(*this, "KEY.%u", 0) { } void glasgow(machine_config &config); protected: - 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; - - void glasgow_mem(address_map &map); +private: required_device<cpu_device> m_maincpu; - required_device<dac_bit_interface> m_dac; required_device<mephisto_board_device> m_board; - required_ioport_array<2> m_keyboard; - output_finder<4> m_digits; - - u8 m_lcd_shift_counter; - u8 m_led7; - u8 m_key_select; -}; + required_device<mephisto_display1_device> m_display; + required_device<dac_bit_interface> m_dac; + required_ioport_array<2> m_keys; -class amsterd_state : public glasgow_state -{ -public: - using glasgow_state::glasgow_state; + void glasgow_mem(address_map &map); - void amsterd(machine_config &config); - void dallas32(machine_config &config); + void control_w(u8 data); + u8 keys_r(); + void keys_w(u8 data); -protected: - 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); + u8 m_kp_mux = 0; }; - - -/****************************************************************************** - I/O -******************************************************************************/ - -void glasgow_state::glasgow_lcd_w(u8 data) -{ - if (m_led7 == 0) - m_digits[m_lcd_shift_counter] = data; - - m_lcd_shift_counter++; - m_lcd_shift_counter &= 3; -} - -void glasgow_state::glasgow_lcd_flag_w(u8 data) -{ - u8 const lcd_flag = data & 0x81; - - m_dac->write(BIT(lcd_flag, 0)); - - if (lcd_flag) - m_led7 = 255; - else - m_led7 = 0; -} - -u8 glasgow_state::glasgow_keys_r() +void glasgow_state::machine_start() { - // See if any keys pressed - u8 data = 3; - - if (m_key_select == m_keyboard[0]->read()) - data &= 1; - - if (m_key_select == m_keyboard[1]->read()) - data &= 2; - - return data; + save_item(NAME(m_kp_mux)); } -void glasgow_state::glasgow_keys_w(u8 data) -{ - m_key_select = data; -} -void amsterd_state::write_lcd(u8 data) -{ - if (m_lcd_shift_counter & 4) - m_digits[m_lcd_shift_counter & 3] = data; - m_lcd_shift_counter++; - m_lcd_shift_counter &= 7; -} +/****************************************************************************** + I/O +******************************************************************************/ -void amsterd_state::write_lcd_flag(u8 data) +void glasgow_state::control_w(u8 data) { - // The key function in the rom expects a value from the - // second key row after writing to here - m_key_select = 1; - - m_led7 = data ? 255 : 0; -} + // d0: speaker out + m_dac->write(BIT(data, 0)); -void amsterd_state::write_board(u8 data) -{ - m_key_select = 0; - m_board->led_w(0); - m_board->mux_w(data); + // d7: lcd strobe + m_display->strobe_w(BIT(data, 7)); } -void amsterd_state::write_beeper(u8 data) +u8 glasgow_state::keys_r() { - m_dac->write(BIT(data, 0)); -} + u8 data = 0; -u8 amsterd_state::read_newkeys() -{ - return m_keyboard[m_key_select & 1]->read(); -} + // d0,d1: multiplexed inputs + for (int i = 0; i < 2; i++) + if (m_kp_mux & m_keys[i]->read()) + data |= 1 << i; -void glasgow_state::machine_start() -{ - m_digits.resolve(); + // reading keypad also clears irq + m_maincpu->set_input_line(M68K_IRQ_5, CLEAR_LINE); - save_item(NAME(m_lcd_shift_counter)); - save_item(NAME(m_led7)); - save_item(NAME(m_key_select)); + return ~data; } -void glasgow_state::machine_reset() +void glasgow_state::keys_w(u8 data) { - m_lcd_shift_counter = 0; - m_key_select = 0; - m_led7 = 0; + m_kp_mux = ~data; } @@ -218,38 +131,12 @@ void glasgow_state::glasgow_mem(address_map &map) { map.global_mask(0x1ffff); map(0x000000, 0x00ffff).rom(); - map(0x010000, 0x010000).w(FUNC(glasgow_state::glasgow_lcd_w)); - map(0x010002, 0x010002).rw(FUNC(glasgow_state::glasgow_keys_r), FUNC(glasgow_state::glasgow_keys_w)); - map(0x010004, 0x010004).w(FUNC(glasgow_state::glasgow_lcd_flag_w)); - map(0x010006, 0x010006).rw("board", FUNC(mephisto_board_device::input_r), FUNC(mephisto_board_device::led_w)); - map(0x010008, 0x010008).w("board", FUNC(mephisto_board_device::mux_w)); - map(0x01c000, 0x01ffff).ram(); // 16KB -} - -void amsterd_state::amsterd_mem(address_map &map) -{ - map(0x000000, 0x00ffff).rom(); - map(0x800002, 0x800002).w(FUNC(amsterd_state::write_lcd)); - map(0x800004, 0x800004).w(FUNC(amsterd_state::write_beeper)); - map(0x800008, 0x800008).w(FUNC(amsterd_state::write_lcd_flag)); - map(0x800010, 0x800010).w(FUNC(amsterd_state::write_board)); - map(0x800020, 0x800020).r("board", FUNC(mephisto_board_device::input_r)); - map(0x800040, 0x800040).r(FUNC(amsterd_state::read_newkeys)); - map(0x800088, 0x800088).w("board", FUNC(mephisto_board_device::led_w)); - map(0xffc000, 0xffffff).ram(); // 16KB -} - -void amsterd_state::dallas32_mem(address_map &map) -{ - map(0x000000, 0x00ffff).rom(); - map(0x010000, 0x01ffff).ram(); // 64KB - map(0x800002, 0x800002).w(FUNC(amsterd_state::write_lcd)); - map(0x800004, 0x800004).w(FUNC(amsterd_state::write_beeper)); - map(0x800008, 0x800008).w(FUNC(amsterd_state::write_lcd_flag)); - map(0x800010, 0x800010).w(FUNC(amsterd_state::write_board)); - map(0x800020, 0x800020).r("board", FUNC(mephisto_board_device::input_r)); - map(0x800040, 0x800040).r(FUNC(amsterd_state::read_newkeys)); - map(0x800088, 0x800088).w("board", FUNC(mephisto_board_device::led_w)); + map(0x010000, 0x010000).w(m_display, FUNC(mephisto_display1_device::data_w)); + map(0x010002, 0x010002).rw(FUNC(glasgow_state::keys_r), FUNC(glasgow_state::keys_w)); + map(0x010004, 0x010004).w(FUNC(glasgow_state::control_w)); + map(0x010006, 0x010006).rw(m_board, FUNC(mephisto_board_device::input_r), FUNC(mephisto_board_device::led_w)); + map(0x010008, 0x010008).w(m_board, FUNC(mephisto_board_device::mux_w)); + map(0x01c000, 0x01ffff).ram(); } @@ -258,48 +145,26 @@ void amsterd_state::dallas32_mem(address_map &map) 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) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B / 2 / Pawn") PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) +static INPUT_PORTS_START( glasgow ) + PORT_START("KEY.0") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Left / Black / 9") PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CODE(KEYCODE_LEFT) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C / 3 / Knight") PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D / 4 / Bishop") PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E / 5 / Rook") PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F / 6 / Queen") PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Left / Black / 9") PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CODE(KEYCODE_LEFT) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Right / White / 0") PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(KEYCODE_RIGHT) - - PORT_START("LINE1") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("INFO") PORT_CODE(KEYCODE_I) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("POS") PORT_CODE(KEYCODE_O) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LEV") PORT_CODE(KEYCODE_L) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("MEM") PORT_CODE(KEYCODE_M) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D / 4 / Bishop") PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A / 1") PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F / 6 / Queen") PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B / 2 / Pawn") PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) + + PORT_START("KEY.1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E / 5 / Rook") PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("INFO") PORT_CODE(KEYCODE_I) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Right / White / 0") PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(KEYCODE_RIGHT) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("POS") PORT_CODE(KEYCODE_O) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H / 8") PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LEV") PORT_CODE(KEYCODE_L) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G / 7 / King") PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H / 8") PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) -INPUT_PORTS_END - -static INPUT_PORTS_START( old_keyboard ) - PORT_START("LINE0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Left / Black / 9") PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CODE(KEYCODE_LEFT) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("C / 3 / Knight") PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("D / 4 / Bishop") PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("A / 1") PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("F / 6 / Queen") PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("B / 2 / Pawn") PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) - - PORT_START("LINE1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("E / 5 / Rook") PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("INFO") PORT_CODE(KEYCODE_I) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Right / White / 0") PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(KEYCODE_RIGHT) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("POS") PORT_CODE(KEYCODE_O) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("H / 8") PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("LEV") PORT_CODE(KEYCODE_L) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("G / 7 / King") PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("MEM") PORT_CODE(KEYCODE_M) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("MEM") PORT_CODE(KEYCODE_M) INPUT_PORTS_END @@ -312,13 +177,14 @@ void glasgow_state::glasgow(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, 12_MHz_XTAL); - m_maincpu->set_periodic_int(FUNC(glasgow_state::irq5_line_hold), attotime::from_hz(50)); + m_maincpu->set_periodic_int(FUNC(glasgow_state::irq5_line_assert), attotime::from_hz(50)); m_maincpu->set_addrmap(AS_PROGRAM, &glasgow_state::glasgow_mem); MEPHISTO_SENSORS_BOARD(config, m_board); m_board->set_delay(attotime::from_msec(200)); /* video hardware */ + MEPHISTO_DISPLAY_MODULE1(config, m_display); config.set_default_layout(layout_mephisto_glasgow); /* sound hardware */ @@ -326,26 +192,6 @@ void glasgow_state::glasgow(machine_config &config) DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25); } -void amsterd_state::amsterd(machine_config &config) -{ - glasgow(config); - - /* basic machine hardware */ - m_maincpu->set_addrmap(AS_PROGRAM, &amsterd_state::amsterd_mem); - - config.set_default_layout(layout_mephisto_amsterdam); -} - -void amsterd_state::dallas32(machine_config &config) -{ - amsterd(config); - - /* basic machine hardware */ - M68020(config.replace(), m_maincpu, 14_MHz_XTAL); - m_maincpu->set_periodic_int(FUNC(amsterd_state::irq5_line_hold), attotime::from_hz(50)); - m_maincpu->set_addrmap(AS_PROGRAM, &amsterd_state::dallas32_mem); -} - /****************************************************************************** @@ -360,11 +206,6 @@ ROM_START( glasgow ) ROM_LOAD16_BYTE("me3_2_2l.410", 0x08001, 0x04000, CRC(b3f27827) SHA1(864ba897d24024592d08c4ae090aa70a2cc5f213) ) ROM_END -ROM_START( amsterd ) - ROM_REGION16_BE( 0x1000000, "maincpu", 0 ) - ROM_LOAD16_BYTE("amsterda-u.bin", 0x00000, 0x08000, CRC(0a75514e) SHA1(27daf78b0aba4d7a293b96b3c1fa92f6ee9bcb59) ) - ROM_LOAD16_BYTE("amsterda-l.bin", 0x00001, 0x08000, CRC(6e17d8fa) SHA1(e0f9e57aaa445f6ff7cbe868658ed7bcfa7e31fb) ) -ROM_END ROM_START( amsterda ) ROM_REGION( 0x10000, "maincpu", 0 ) @@ -374,17 +215,6 @@ ROM_START( amsterda ) ROM_LOAD16_BYTE("bl_4_1", 0x08001, 0x04000, CRC(533e584a) SHA1(0e4510977dc627125c278920492bc137793a9554) ) ROM_END -ROM_START( dallas32 ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD("dallas32.epr", 0x000000, 0x10000, CRC(83b9ff3f) SHA1(97bf4cb3c61f8ec328735b3c98281bba44b30a28) ) -ROM_END - -ROM_START( dallas16 ) - ROM_REGION16_BE( 0x1000000, "maincpu", 0 ) - ROM_LOAD16_BYTE("dallas-u.bin", 0x00000, 0x08000, CRC(70b741f7) SHA1(23d55ed0fea127b727d725c367ee1932ff5af39f) ) - ROM_LOAD16_BYTE("dallas-l.bin", 0x00001, 0x08000, CRC(69300ad3) SHA1(57ec1b955b1ddfe722011ff5da68a0cd71af9251) ) -ROM_END - ROM_START( dallas16a ) ROM_REGION16_BE( 0x1000000, "maincpu", 0 ) ROM_LOAD16_BYTE("dal_g_pr", 0x00000, 0x04000, CRC(66deade9) SHA1(07ec6b923f2f053172737f1fc94aec84f3ea8da1) ) @@ -393,17 +223,6 @@ ROM_START( dallas16a ) ROM_LOAD16_BYTE("dal_g_bl", 0x08001, 0x04000, CRC(144a15e2) SHA1(c4fcc23d55fa5262f5e01dbd000644a7feb78f32) ) ROM_END -ROM_START( roma32 ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD("roma32.bin", 0x000000, 0x10000, CRC(587d03bf) SHA1(504e9ff958084700076d633f9c306fc7baf64ffd) ) -ROM_END - -ROM_START( roma16 ) - ROM_REGION16_BE( 0x1000000, "maincpu", 0 ) - ROM_LOAD16_BYTE("roma16-u.bin", 0x00000, 0x08000, CRC(111d030f) SHA1(e027f7e7018d28ab794e7730392506056809db6b) ) - ROM_LOAD16_BYTE("roma16-l.bin", 0x00001, 0x08000, CRC(8245ddd2) SHA1(ab048b60fdc4358913a5d07b6fee863b66dd6734) ) -ROM_END - ROM_START( roma16a ) ROM_REGION16_BE( 0x1000000, "maincpu", 0 ) ROM_LOAD16_BYTE("roma_r_low", 0x00000, 0x04000, CRC(f2312170) SHA1(82a50ba59f74365aa77478adaadbbace6693dcc1) ) @@ -420,16 +239,10 @@ ROM_END 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 ) - -CONS( 1985, amsterd, 0, 0, amsterd, new_keyboard, amsterd_state, empty_init, "Hegener + Glaser", "Mephisto Amsterdam", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1985, amsterda, amsterd, 0, glasgow, old_keyboard, glasgow_state, empty_init, "Hegener + Glaser", "Mephisto Amsterdam (Glasgow hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) - -CONS( 1986, dallas32, 0, 0, dallas32, new_keyboard, amsterd_state, empty_init, "Hegener + Glaser", "Mephisto Dallas 68020", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1986, dallas16, dallas32, 0, amsterd, new_keyboard, amsterd_state, empty_init, "Hegener + Glaser", "Mephisto Dallas 68000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1986, dallas16a, dallas32, 0, glasgow, old_keyboard, glasgow_state, empty_init, "Hegener + Glaser", "Mephisto Dallas 68000 (Glasgow hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +/* YEAR, NAME, PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +CONS( 1984, glasgow, 0, 0, glasgow, glasgow, glasgow_state, empty_init, "Hegener + Glaser", "Mephisto III-S Glasgow", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1987, roma32, 0, 0, dallas32, new_keyboard, amsterd_state, empty_init, "Hegener + Glaser", "Mephisto Roma 68020", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1987, roma16, roma32, 0, amsterd, new_keyboard, amsterd_state, empty_init, "Hegener + Glaser", "Mephisto Roma 68000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1987, roma16a, roma32, 0, glasgow, old_keyboard, glasgow_state, empty_init, "Hegener + Glaser", "Mephisto Roma 68000 (Glasgow hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +// newer chesscomputers on 4-ROM hardware (see mephisto_amsterdam.cpp for parent sets) +CONS( 1985, amsterda, amsterd, 0, glasgow, glasgow, glasgow_state, empty_init, "Hegener + Glaser", "Mephisto Amsterdam (Glasgow hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1986, dallas16a, dallas32, 0, glasgow, glasgow, glasgow_state, empty_init, "Hegener + Glaser", "Mephisto Dallas 68000 (Glasgow hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1987, roma16a, roma32, 0, glasgow, glasgow, glasgow_state, empty_init, "Hegener + Glaser", "Mephisto Roma 68000 (Glasgow hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) |