summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/mephisto_glasgow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/mephisto_glasgow.cpp')
-rw-r--r--src/mame/drivers/mephisto_glasgow.cpp349
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 )