mephisto_polgar.cpp: split driver into polgar, risc, milano

This commit is contained in:
hap 2021-04-07 23:11:02 +02:00
parent e0d69fad4c
commit 0dca4d3106
21 changed files with 1026 additions and 341 deletions

View File

@ -2537,6 +2537,7 @@ files {
MAME_DIR .. "src/mame/drivers/mephisto_berlin.cpp", MAME_DIR .. "src/mame/drivers/mephisto_berlin.cpp",
MAME_DIR .. "src/mame/drivers/mephisto_brikett.cpp", MAME_DIR .. "src/mame/drivers/mephisto_brikett.cpp",
MAME_DIR .. "src/mame/drivers/mephisto_glasgow.cpp", MAME_DIR .. "src/mame/drivers/mephisto_glasgow.cpp",
MAME_DIR .. "src/mame/drivers/mephisto_milano.cpp",
MAME_DIR .. "src/mame/drivers/mephisto_mm1.cpp", MAME_DIR .. "src/mame/drivers/mephisto_mm1.cpp",
MAME_DIR .. "src/mame/drivers/mephisto_mm2.cpp", MAME_DIR .. "src/mame/drivers/mephisto_mm2.cpp",
MAME_DIR .. "src/mame/drivers/mephisto_modena.cpp", MAME_DIR .. "src/mame/drivers/mephisto_modena.cpp",
@ -2546,6 +2547,7 @@ files {
MAME_DIR .. "src/mame/drivers/mephisto_mondial68k.cpp", MAME_DIR .. "src/mame/drivers/mephisto_mondial68k.cpp",
MAME_DIR .. "src/mame/drivers/mephisto_montec.cpp", MAME_DIR .. "src/mame/drivers/mephisto_montec.cpp",
MAME_DIR .. "src/mame/drivers/mephisto_polgar.cpp", MAME_DIR .. "src/mame/drivers/mephisto_polgar.cpp",
MAME_DIR .. "src/mame/drivers/mephisto_risc.cpp",
MAME_DIR .. "src/mame/machine/mmboard.cpp", MAME_DIR .. "src/mame/machine/mmboard.cpp",
MAME_DIR .. "src/mame/machine/mmboard.h", MAME_DIR .. "src/mame/machine/mmboard.h",
MAME_DIR .. "src/mame/video/mmdisplay2.cpp", MAME_DIR .. "src/mame/video/mmdisplay2.cpp",

View File

@ -10,14 +10,15 @@ This is the 2nd (1992) version of The ChessMachine, it is used in:
- The ChessMachine EC2, Amiga external module - The ChessMachine EC2, Amiga external module
- Mephisto Risc 1MB/II, chess computer - Mephisto Risc 1MB/II, chess computer
Unlike the SR model (devices/bus/isa/chessmsr.*), RAM size and CPU type Hardware notes:
are the same on every known device.
- VLSI-ARM VY86C010-12QC (ARM2 CPU) - VLSI-ARM VY86C010-12QC (ARM2 CPU)
- 1MB RAM (8*Siemens HYB514256B-60) - 1MB RAM (8*Siemens HYB514256B-60)
- 128 bytes PROM (4*DM74S288AN) - 128 bytes PROM (4*DM74S288AN)
- 2 GALs for I/O handling - 2 GALs for I/O handling
Unlike the SR model (devices/bus/isa/chessmsr.*), RAM size and CPU type
are the same on every known device.
Only 4 lines for I/O, so that part is much slower than the SR model. Only 4 lines for I/O, so that part is much slower than the SR model.
There is no XTAL, it looks like there's a variable resistor for tweaking There is no XTAL, it looks like there's a variable resistor for tweaking

View File

@ -20,12 +20,14 @@ TODO:
******************************************************************************/ ******************************************************************************/
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "machine/sensorboard.h" #include "machine/sensorboard.h"
#include "machine/bankdev.h" #include "machine/bankdev.h"
#include "machine/timer.h" #include "machine/timer.h"
#include "sound/dac.h" #include "sound/dac.h"
#include "video/pwm.h" #include "video/pwm.h"
#include "speaker.h" #include "speaker.h"
// internal artwork // internal artwork

View File

@ -7,12 +7,12 @@ Mephisto Academy
Hardware notes: Hardware notes:
- PCB label HGS 10 130 01 - PCB label HGS 10 130 01
- VL65NC02-04PC, 4.91MHz XTAL - VL65NC02-04PC @ 4.91MHz
- 2*32KB ROM(TC57256AD-12), 1st ROM half-empty - 2*32KB ROM(TC57256AD-12), 1st ROM half-empty
- 8KB battery-backed RAM(TC5564APL-15) - 8KB battery-backed RAM(TC5564APL-15)
- HD44100H, HD44780, 2*16 chars LCD screen - HD44100H, HD44780, 2*16 chars LCD screen
- 8 tri-color leds (not fully used: always outputs 6 red, 2 green) - 8 tri-color leds (not fully used: always outputs 6 red, 2 green)
- magnets chessboard with leds, beeper - magnets chessboard with leds, piezo
Since the program is on an external module, it appears it was meant to be Since the program is on an external module, it appears it was meant to be
a modular chesscomputer. However, no extra modules were sold separately. a modular chesscomputer. However, no extra modules were sold separately.
@ -29,6 +29,7 @@ Module PCB is the same as Super Mondial II College, label HGS 10 116 05.
#include "video/mmdisplay2.h" #include "video/mmdisplay2.h"
#include "video/pwm.h" #include "video/pwm.h"
// internal artwork
#include "mephisto_academy.lh" #include "mephisto_academy.lh"
@ -125,7 +126,6 @@ INPUT_PORTS_END
void academy_state::academy(machine_config &config) void academy_state::academy(machine_config &config)
{ {
/* basic machine hardware */
M65C02(config, m_maincpu, 4.9152_MHz_XTAL); M65C02(config, m_maincpu, 4.9152_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &academy_state::main_map); m_maincpu->set_addrmap(AS_PROGRAM, &academy_state::main_map);
@ -137,7 +137,7 @@ void academy_state::academy(machine_config &config)
HC259(config, m_outlatch); // SN74HC259N HC259(config, m_outlatch); // SN74HC259N
m_outlatch->parallel_out_cb().set("display:dac", FUNC(dac_byte_interface::write)).rshift(2).mask(0x03); m_outlatch->parallel_out_cb().set("display:dac", FUNC(dac_byte_interface::write)).rshift(2).mask(0x03);
MEPHISTO_SENSORS_BOARD(config, "board"); MEPHISTO_SENSORS_BOARD(config, "board"); // internal
MEPHISTO_DISPLAY_MODULE2(config, "display"); // internal MEPHISTO_DISPLAY_MODULE2(config, "display"); // internal
PWM_DISPLAY(config, m_led_pwm).set_size(4, 4); PWM_DISPLAY(config, m_led_pwm).set_size(4, 4);
@ -176,7 +176,7 @@ ROM_END
Game Drivers Game Drivers
***************************************************************************/ ***************************************************************************/
/* YEAR, NAME, PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS */ /* YEAR, NAME, PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
CONS( 1989, academy, 0, 0, academy, academy, academy_state, empty_init, "Hegener + Glaser", "Mephisto Academy (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1989, academy, 0, 0, academy, academy, academy_state, empty_init, "Hegener + Glaser", "Mephisto Academy (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1989, academyg, academy, 0, academy, academy, academy_state, empty_init, "Hegener + Glaser", "Mephisto Academy (German, 06-03-89)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1989, academyg, academy, 0, academy, academy, academy_state, empty_init, "Hegener + Glaser", "Mephisto Academy (German, 06-03-89)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1989, academyga, academy, 0, academy, academy, academy_state, empty_init, "Hegener + Glaser", "Mephisto Academy (German, 04-10-88)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1989, academyga, academy, 0, academy, academy, academy_state, empty_init, "Hegener + Glaser", "Mephisto Academy (German, 04-10-88)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )

View File

@ -33,6 +33,7 @@ public:
: driver_device(mconfig, type, tag) : driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu") , m_maincpu(*this, "maincpu")
, m_board(*this, "board") , m_board(*this, "board")
, m_display(*this, "display")
, m_keys(*this, "KEY") , m_keys(*this, "KEY")
{ } { }
@ -48,6 +49,7 @@ private:
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<mephisto_board_device> m_board; required_device<mephisto_board_device> m_board;
required_device<mephisto_display_module2_device> m_display;
required_ioport m_keys; required_ioport m_keys;
}; };
@ -59,10 +61,9 @@ private:
u8 berlin_state::input_r() u8 berlin_state::input_r()
{ {
if (m_board->mux_r() == 0xff) // display i/o d7 selects keypad
return m_keys->read(); u8 data = (m_display->io_r() & 0x80) ? 0 : m_keys->read();
else return ~m_board->input_r() | data;
return m_board->input_r() ^ 0xff;
} }
@ -84,8 +85,8 @@ void berlin_state::berlin_mem(address_map &map)
map(0x900000, 0x903fff).m("nvram_map", FUNC(address_map_bank_device::amap8)).umask16(0xff00); map(0x900000, 0x903fff).m("nvram_map", FUNC(address_map_bank_device::amap8)).umask16(0xff00);
map(0xa00000, 0xa00000).r(FUNC(berlin_state::input_r)); map(0xa00000, 0xa00000).r(FUNC(berlin_state::input_r));
map(0xb00000, 0xb00000).w(m_board, FUNC(mephisto_board_device::mux_w)); map(0xb00000, 0xb00000).w(m_board, FUNC(mephisto_board_device::mux_w));
map(0xc00000, 0xc00000).w("display", FUNC(mephisto_display_module2_device::latch_w)); map(0xc00000, 0xc00000).w(m_display, FUNC(mephisto_display_module2_device::latch_w));
map(0xd00008, 0xd00008).w("display", FUNC(mephisto_display_module2_device::io_w)); map(0xd00008, 0xd00008).w(m_display, FUNC(mephisto_display_module2_device::io_w));
map(0xe00000, 0xe00000).w(m_board, FUNC(mephisto_board_device::led_w)); map(0xe00000, 0xe00000).w(m_board, FUNC(mephisto_board_device::led_w));
} }
@ -96,8 +97,8 @@ void berlin_state::berlinp_mem(address_map &map)
map(0x800000, 0x800000).r(FUNC(berlin_state::input_r)); map(0x800000, 0x800000).r(FUNC(berlin_state::input_r));
map(0x900000, 0x900000).w(m_board, FUNC(mephisto_board_device::mux_w)); map(0x900000, 0x900000).w(m_board, FUNC(mephisto_board_device::mux_w));
map(0xa00000, 0xa00000).w(m_board, FUNC(mephisto_board_device::led_w)); map(0xa00000, 0xa00000).w(m_board, FUNC(mephisto_board_device::led_w));
map(0xb00000, 0xb00000).w("display", FUNC(mephisto_display_module2_device::io_w)); map(0xb00000, 0xb00000).w(m_display, FUNC(mephisto_display_module2_device::io_w));
map(0xc00000, 0xc00000).w("display", FUNC(mephisto_display_module2_device::latch_w)); map(0xc00000, 0xc00000).w(m_display, FUNC(mephisto_display_module2_device::latch_w));
map(0xd00000, 0xd07fff).m("nvram_map", FUNC(address_map_bank_device::amap8)).umask32(0xff000000); map(0xd00000, 0xd07fff).m("nvram_map", FUNC(address_map_bank_device::amap8)).umask32(0xff000000);
} }
@ -109,14 +110,14 @@ void berlin_state::berlinp_mem(address_map &map)
static INPUT_PORTS_START( berlin ) static INPUT_PORTS_START( berlin )
PORT_START("KEY") PORT_START("KEY")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENTER") PORT_CODE(KEYCODE_ENTER) PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CLEAR") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Clear") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL)
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("UP") PORT_CODE(KEYCODE_UP) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Up") PORT_CODE(KEYCODE_UP)
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DOWN") PORT_CODE(KEYCODE_DOWN) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN)
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LEFT") PORT_CODE(KEYCODE_LEFT) PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT)
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RIGHT") PORT_CODE(KEYCODE_RIGHT) PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Right") PORT_CODE(KEYCODE_RIGHT)
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("NEW GAME (1/2)") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_F1) PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("New Game (1/2)") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_F1) // combine for NEW GAME
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("NEW GAME (2/2)") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_F1) PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("New Game (2/2)") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_F1) // "
INPUT_PORTS_END INPUT_PORTS_END
@ -137,10 +138,10 @@ void berlin_state::berlin(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
ADDRESS_MAP_BANK(config, "nvram_map").set_map(&berlin_state::nvram_map).set_options(ENDIANNESS_BIG, 8, 13); ADDRESS_MAP_BANK(config, "nvram_map").set_map(&berlin_state::nvram_map).set_options(ENDIANNESS_BIG, 8, 13);
MEPHISTO_BUTTONS_BOARD(config, m_board); MEPHISTO_BUTTONS_BOARD(config, m_board); // internal
subdevice<sensorboard_device>("board:board")->set_nvram_enable(true); subdevice<sensorboard_device>("board:board")->set_nvram_enable(true);
MEPHISTO_DISPLAY_MODULE2(config, "display"); MEPHISTO_DISPLAY_MODULE2(config, m_display); // internal
config.set_default_layout(layout_mephisto_berlin); config.set_default_layout(layout_mephisto_berlin);
} }

View File

@ -0,0 +1,178 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
/******************************************************************************
Mephisto Milano
Hardware notes:
- RP65C02G or W65C02P-8 @ 4.91MHz
- 8KB RAM(battery-backed), 64KB ROM
- HD44100H, HD44780, 2*16 chars LCD screen
- 8*8 chessboard buttons, 16 leds, piezo
Nigel Short is basically a Milano 2.00
******************************************************************************/
#include "emu.h"
#include "cpu/m6502/r65c02.h"
#include "machine/74259.h"
#include "machine/nvram.h"
#include "machine/mmboard.h"
#include "video/mmdisplay2.h"
// internal artwork
#include "mephisto_milano.lh"
namespace {
class mephisto_milano_state : public driver_device
{
public:
mephisto_milano_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_board(*this, "board")
, m_display(*this, "display")
, m_keys(*this, "KEY")
{ }
void milano(machine_config &config);
private:
required_device<cpu_device> m_maincpu;
required_device<mephisto_board_device> m_board;
required_device<mephisto_display_module2_device> m_display;
required_ioport m_keys;
void milano_mem(address_map &map);
u8 keys_r(offs_t offset);
u8 board_r();
void io_w(u8 data);
};
/******************************************************************************
I/O
******************************************************************************/
u8 mephisto_milano_state::keys_r(offs_t offset)
{
return (BIT(m_keys->read(), offset) << 7) | 0x7f;
}
u8 mephisto_milano_state::board_r()
{
return m_board->input_r() ^ 0xff;
}
void mephisto_milano_state::io_w(u8 data)
{
// default display module
m_display->io_w(data & 0x0f);
// high bits go to board leds
m_board->led_w(data >> 4);
}
/******************************************************************************
Address Maps
******************************************************************************/
void mephisto_milano_state::milano_mem(address_map &map)
{
map(0x0000, 0x1fbf).ram().share("nvram");
map(0x1fc0, 0x1fc0).w(m_display, FUNC(mephisto_display_module2_device::latch_w));
map(0x1fd0, 0x1fd0).w(m_board, FUNC(mephisto_board_device::mux_w));
map(0x1fe0, 0x1fe0).r(FUNC(mephisto_milano_state::board_r));
map(0x1fe8, 0x1fef).w("outlatch", FUNC(hc259_device::write_d7)).nopr();
map(0x1fd8, 0x1fdf).r(FUNC(mephisto_milano_state::keys_r));
map(0x1ff0, 0x1ff0).w(FUNC(mephisto_milano_state::io_w));
map(0x2000, 0xffff).rom();
}
/******************************************************************************
Input Ports
******************************************************************************/
static INPUT_PORTS_START( milano )
PORT_START("KEY")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Training / Pawn") PORT_CODE(KEYCODE_T)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Info / Knight") PORT_CODE(KEYCODE_I)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Memory / Bishop") PORT_CODE(KEYCODE_M)
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Position / Rook") PORT_CODE(KEYCODE_O)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Level / Queen") PORT_CODE(KEYCODE_L)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Function / King") PORT_CODE(KEYCODE_F)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Enter / New Game") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_F1) // combine for NEW GAME
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Clear / New Game") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_F1) // "
INPUT_PORTS_END
/******************************************************************************
Machine Configs
******************************************************************************/
void mephisto_milano_state::milano(machine_config &config)
{
R65C02(config, m_maincpu, 4.9152_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_milano_state::milano_mem);
m_maincpu->set_periodic_int(FUNC(mephisto_milano_state::nmi_line_pulse), attotime::from_hz(4.9152_MHz_XTAL / (1 << 13)));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
hc259_device &outlatch(HC259(config, "outlatch"));
outlatch.q_out_cb<0>().set_output("led100");
outlatch.q_out_cb<1>().set_output("led101");
outlatch.q_out_cb<2>().set_output("led102");
outlatch.q_out_cb<3>().set_output("led103");
outlatch.q_out_cb<4>().set_output("led104");
outlatch.q_out_cb<5>().set_output("led105");
MEPHISTO_BUTTONS_BOARD(config, m_board); // internal
MEPHISTO_DISPLAY_MODULE2(config, m_display); // internal
config.set_default_layout(layout_mephisto_milano);
}
/******************************************************************************
ROM Definitions
******************************************************************************/
ROM_START( milano ) // 1.02
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("milano_b958", 0x0000, 0x10000, CRC(0e9c8fe1) SHA1(e9176f42d86fe57e382185c703c7eff7e63ca711) )
ROM_END
ROM_START( milanoa ) // 1.01
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("milano_4af8", 0x0000, 0x10000, CRC(22efc0be) SHA1(921607d6dacf72c0686b8970261c43e2e244dc9f) )
ROM_END
ROM_START( nshort ) // 2.00
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("nshort.bin", 0x00000, 0x10000, CRC(4bd51e23) SHA1(3f55cc1c55dae8818b7e9384b6b8d43dc4f0a1af) )
ROM_END
} // anonymous namespace
/***************************************************************************
Game Drivers
***************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
CONS( 1991, milano, 0, 0, milano, milano, mephisto_milano_state, empty_init, "Hegener + Glaser", "Mephisto Milano (v1.02)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1991, milanoa, milano, 0, milano, milano, mephisto_milano_state, empty_init, "Hegener + Glaser", "Mephisto Milano (v1.01)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1993, nshort, 0, 0, milano, milano, mephisto_milano_state, empty_init, "Hegener + Glaser", "Mephisto Nigel Short", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )

View File

@ -22,6 +22,7 @@ Hold Pawn + Knight buttons at boot for test mode.
#include "speaker.h" #include "speaker.h"
// internal artwork
#include "mephisto_modena.lh" #include "mephisto_modena.lh"
@ -61,7 +62,7 @@ private:
void led_w(u8 data); void led_w(u8 data);
void update_display(); void update_display();
u8 m_board_mux = 0xff; u8 m_board_mux = 0;
u8 m_digits_idx = 0; u8 m_digits_idx = 0;
u8 m_io_ctrl = 0; u8 m_io_ctrl = 0;
}; };
@ -70,6 +71,7 @@ void modena_state::machine_start()
{ {
m_digits.resolve(); m_digits.resolve();
save_item(NAME(m_board_mux));
save_item(NAME(m_digits_idx)); save_item(NAME(m_digits_idx));
save_item(NAME(m_io_ctrl)); save_item(NAME(m_io_ctrl));
} }
@ -82,7 +84,7 @@ void modena_state::machine_start()
void modena_state::update_display() void modena_state::update_display()
{ {
m_display->matrix(m_io_ctrl >> 1 & 7, ~m_board_mux); m_display->matrix(m_io_ctrl >> 1 & 7, m_board_mux);
} }
u8 modena_state::input_r() u8 modena_state::input_r()
@ -94,8 +96,8 @@ u8 modena_state::input_r()
data |= m_keys->read(); data |= m_keys->read();
// read chessboard sensors // read chessboard sensors
for (int i=0; i<8; i++) for (int i = 0; i < 8; i++)
if (!BIT(m_board_mux, i)) if (BIT(m_board_mux, i))
data |= m_board->read_rank(i); data |= m_board->read_rank(i);
return data; return data;
@ -104,7 +106,7 @@ u8 modena_state::input_r()
void modena_state::led_w(u8 data) void modena_state::led_w(u8 data)
{ {
// d0-d7: chessboard mux, led data // d0-d7: chessboard mux, led data
m_board_mux = data; m_board_mux = ~data;
update_display(); update_display();
} }
@ -150,14 +152,14 @@ void modena_state::modena_mem(address_map &map)
static INPUT_PORTS_START( modena ) static INPUT_PORTS_START( modena )
PORT_START("KEY") PORT_START("KEY")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("BOOK") PORT_CODE(KEYCODE_B) PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Book / Pawn") PORT_CODE(KEYCODE_B)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("INFO") PORT_CODE(KEYCODE_I) PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Info / Knight") PORT_CODE(KEYCODE_I)
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("MEMORY") PORT_CODE(KEYCODE_M) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Memory / Bishop") PORT_CODE(KEYCODE_M)
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("POSITION") PORT_CODE(KEYCODE_O) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Position / Rook") PORT_CODE(KEYCODE_O)
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LEVEL") PORT_CODE(KEYCODE_L) PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Level / Queen") PORT_CODE(KEYCODE_L)
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("FUNCTION") PORT_CODE(KEYCODE_F) PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Function / King") PORT_CODE(KEYCODE_F)
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENTER") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_F1) // combine for NEW GAME PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Enter / New Game") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_F1) // combine for NEW GAME
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CLEAR") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_F1) // " PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Clear / New Game") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_F1) // "
INPUT_PORTS_END INPUT_PORTS_END

View File

@ -91,7 +91,7 @@ void mondial68k_state::update_display()
void mondial68k_state::lcd_s_w(u32 data) void mondial68k_state::lcd_s_w(u32 data)
{ {
// output LCD digits (note: last digit DP segment is unused) // output LCD digits (note: last digit DP segment is unused)
for (int i=0; i<4; i++) for (int i = 0; i < 4; i++)
m_digits[i] = bitswap<8>((data & 0x7fffffff) >> (8 * i), 7,4,5,0,1,2,3,6); m_digits[i] = bitswap<8>((data & 0x7fffffff) >> (8 * i), 7,4,5,0,1,2,3,6);
} }
@ -115,12 +115,12 @@ u8 mondial68k_state::inputs_r()
u8 data = 0x00; u8 data = 0x00;
// read buttons // read buttons
for (int i=0; i<4; i++) for (int i = 0; i < 4; i++)
if (!BIT(m_input_mux, i)) if (!BIT(m_input_mux, i))
data |= m_inputs[i]->read(); data |= m_inputs[i]->read();
// read chessboard sensors // read chessboard sensors
for (int i=0; i<8; i++) for (int i = 0; i < 8; i++)
if (!BIT(m_board_mux, i)) if (!BIT(m_board_mux, i))
data |= m_board->read_rank(i); data |= m_board->read_rank(i);

View File

@ -1,34 +1,34 @@
// license:BSD-3-Clause // license:BSD-3-Clause
// copyright-holders:Sandro Ronco // copyright-holders:Sandro Ronco
/************************************************************************************************** /******************************************************************************
Mephisto Polgar and RISC Mephisto Polgar
The chess engine in Mephisto Risc is also compatible with Tasc's The ChessMachine. Hardware notes:
- RP65C02G @ 4.91MHz
- 64KB ROM
- Mephisto modular display module
- Mephisto Exclusive/Muenchen chessboard
TODO: The 10MHz version has a W65C02P-8 @ 9.83MHz.
- split driver into several files? mrisc for example is completely different hw
**************************************************************************************************/
******************************************************************************/
#include "emu.h" #include "emu.h"
#include "cpu/m6502/m65c02.h" #include "cpu/m6502/m65c02.h"
#include "cpu/m6502/m65sc02.h" #include "cpu/m6502/r65c02.h"
#include "machine/74259.h" #include "machine/74259.h"
#include "machine/nvram.h" #include "machine/nvram.h"
#include "machine/mmboard.h" #include "machine/mmboard.h"
#include "machine/chessmachine.h"
#include "video/mmdisplay2.h" #include "video/mmdisplay2.h"
#include "speaker.h"
// internal artwork // internal artwork
#include "mephisto_milano.lh"
#include "mephisto_polgar.lh" #include "mephisto_polgar.lh"
namespace {
class mephisto_polgar_state : public driver_device class mephisto_polgar_state : public driver_device
{ {
public: public:
@ -38,71 +38,35 @@ public:
, m_keys(*this, "KEY") , m_keys(*this, "KEY")
{ } { }
uint8_t polgar_keys_r(offs_t offset);
void polgar10(machine_config &config); void polgar10(machine_config &config);
void polgar(machine_config &config); void polgar(machine_config &config);
void polgar_mem(address_map &map);
protected: private:
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_ioport m_keys; required_ioport m_keys;
void polgar_mem(address_map &map);
u8 keys_r(offs_t offset);
}; };
class mephisto_risc_state : public mephisto_polgar_state
{
public:
mephisto_risc_state(const machine_config &mconfig, device_type type, const char *tag)
: mephisto_polgar_state(mconfig, type, tag)
, m_chessm(*this, "chessm")
, m_rombank(*this, "rombank")
{ }
uint8_t chessm_r();
void chessm_w(uint8_t data);
void mrisc(machine_config &config); /******************************************************************************
void mrisc_mem(address_map &map); I/O
protected: ******************************************************************************/
virtual void machine_start() override;
private: u8 mephisto_polgar_state::keys_r(offs_t offset)
required_device<chessmachine_device> m_chessm;
required_memory_bank m_rombank;
uint8_t m_bank;
};
class mephisto_milano_state : public mephisto_polgar_state
{
public:
mephisto_milano_state(const machine_config &mconfig, device_type type, const char *tag)
: mephisto_polgar_state(mconfig, type, tag)
, m_board(*this, "board")
, m_display(*this, "display")
, m_leds(*this, "led%u", 0U)
{ }
uint8_t milano_input_r();
void milano_led_w(uint8_t data);
void milano_io_w(uint8_t data);
void milano(machine_config &config);
void milano_mem(address_map &map);
protected:
virtual void machine_reset() override;
virtual void machine_start() override;
private:
required_device<mephisto_board_device> m_board;
required_device<mephisto_display_module2_device> m_display;
output_finder<16> m_leds;
uint8_t m_led_latch;
};
uint8_t mephisto_polgar_state::polgar_keys_r(offs_t offset)
{ {
return (BIT(m_keys->read(), offset) << 7) | 0x7f; return (BIT(m_keys->read(), offset) << 7) | 0x7f;
} }
/******************************************************************************
Address Maps
******************************************************************************/
void mephisto_polgar_state::polgar_mem(address_map &map) void mephisto_polgar_state::polgar_mem(address_map &map)
{ {
map(0x0000, 0x1fff).ram().share("nvram"); map(0x0000, 0x1fff).ram().share("nvram");
@ -110,120 +74,41 @@ void mephisto_polgar_state::polgar_mem(address_map &map)
map(0x2004, 0x2004).w("display", FUNC(mephisto_display_module2_device::io_w)); map(0x2004, 0x2004).w("display", FUNC(mephisto_display_module2_device::io_w));
map(0x2400, 0x2400).w("board", FUNC(mephisto_board_device::led_w)); map(0x2400, 0x2400).w("board", FUNC(mephisto_board_device::led_w));
map(0x2800, 0x2800).w("board", FUNC(mephisto_board_device::mux_w)); map(0x2800, 0x2800).w("board", FUNC(mephisto_board_device::mux_w));
map(0x2c00, 0x2c07).r(FUNC(mephisto_polgar_state::polgar_keys_r)); map(0x2c00, 0x2c07).r(FUNC(mephisto_polgar_state::keys_r));
map(0x3000, 0x3000).r("board", FUNC(mephisto_board_device::input_r)); map(0x3000, 0x3000).r("board", FUNC(mephisto_board_device::input_r));
map(0x3400, 0x3407).w("outlatch", FUNC(hc259_device::write_d7)); map(0x3400, 0x3407).w("outlatch", FUNC(hc259_device::write_d7));
map(0x4000, 0xffff).rom(); map(0x4000, 0xffff).rom();
} }
uint8_t mephisto_risc_state::chessm_r()
{
return m_chessm->data_r();
}
void mephisto_risc_state::chessm_w(uint8_t data)
{
m_chessm->data0_w(data & 1);
m_chessm->data1_w(data & 0x80);
m_chessm->reset_w(data & 2);
}
void mephisto_risc_state::mrisc_mem(address_map &map)
{
map.unmap_value_high();
map(0x0000, 0x1fff).ram().share("nvram");
map(0x2000, 0x2000).w("display", FUNC(mephisto_display_module2_device::latch_w));
map(0x2004, 0x2004).w("display", FUNC(mephisto_display_module2_device::io_w));
map(0x2c00, 0x2c07).r(FUNC(mephisto_risc_state::polgar_keys_r));
map(0x2400, 0x2400).w("board", FUNC(mephisto_board_device::led_w));
map(0x2800, 0x2800).w("board", FUNC(mephisto_board_device::mux_w));
map(0x3000, 0x3000).r("board", FUNC(mephisto_board_device::input_r));
map(0x3400, 0x3407).w("outlatch", FUNC(hc259_device::write_d7)).nopr();
map(0x3800, 0x3800).w(FUNC(mephisto_risc_state::chessm_w));
map(0x3c00, 0x3c00).r(FUNC(mephisto_risc_state::chessm_r));
map(0x4000, 0x7fff).rom();
map(0x8000, 0xffff).bankr("rombank");
}
uint8_t mephisto_milano_state::milano_input_r()
{
return m_board->input_r() ^ 0xff;
}
void mephisto_milano_state::milano_led_w(uint8_t data)
{
m_led_latch = data;
m_board->mux_w(data);
}
void mephisto_milano_state::milano_io_w(uint8_t data)
{
if ((data & 0xf0) == 0x90 || (data & 0xf0) == 0x60)
{
uint8_t base = (data & 0xf0) == 0x90 ? 0 : 8;
for(int i=0; i<8; i++)
m_leds[base + i] = BIT(m_led_latch, i) ? 0 : 1;
}
else
{
for(int i=0; i<16; i++)
m_leds[i] = 0;
}
m_display->io_w(data & 0x0f);
}
void mephisto_milano_state::milano_mem(address_map &map)
{
map(0x0000, 0x1fbf).ram().share("nvram");
map(0x1fc0, 0x1fc0).w(m_display, FUNC(mephisto_display_module2_device::latch_w));
map(0x1fd0, 0x1fd0).w(FUNC(mephisto_milano_state::milano_led_w));
map(0x1fe0, 0x1fe0).r(FUNC(mephisto_milano_state::milano_input_r));
map(0x1fe8, 0x1fef).w("outlatch", FUNC(hc259_device::write_d7));
map(0x1fd8, 0x1fdf).r(FUNC(mephisto_milano_state::polgar_keys_r));
map(0x1ff0, 0x1ff0).w(FUNC(mephisto_milano_state::milano_io_w));
map(0x2000, 0xffff).rom();
}
/******************************************************************************
Input Ports
******************************************************************************/
static INPUT_PORTS_START( polgar ) static INPUT_PORTS_START( polgar )
PORT_START("KEY") PORT_START("KEY")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Trn") PORT_CODE(KEYCODE_T) PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("TRN / Pawn") PORT_CODE(KEYCODE_T)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Info") PORT_CODE(KEYCODE_I) PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("INFO / Knight") PORT_CODE(KEYCODE_I)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Mem") PORT_CODE(KEYCODE_M) PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("MEM / Bishop") PORT_CODE(KEYCODE_M)
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Pos") PORT_CODE(KEYCODE_O) PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("POS / Rook") PORT_CODE(KEYCODE_O)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("LEV") PORT_CODE(KEYCODE_L) PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("LEV / Queen") PORT_CODE(KEYCODE_L)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("FCT") PORT_CODE(KEYCODE_F) PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("FCT / King") PORT_CODE(KEYCODE_F)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_F1) // combine for NEW GAME PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("ENT / New Game") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_F1) // combine for NEW GAME
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_F1) // " PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("CL / New Game") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_F1) // "
INPUT_PORTS_END INPUT_PORTS_END
void mephisto_risc_state::machine_start()
{
m_rombank->configure_entries(0, 4, memregion("maincpu")->base(), 0x8000);
save_item(NAME(m_bank));
}
void mephisto_milano_state::machine_start()
{
m_leds.resolve();
save_item(NAME(m_led_latch));
}
void mephisto_milano_state::machine_reset() /******************************************************************************
{ Machine Configs
m_led_latch = 0; ******************************************************************************/
}
void mephisto_polgar_state::polgar(machine_config &config) void mephisto_polgar_state::polgar(machine_config &config)
{ {
M65C02(config, m_maincpu, XTAL(4'915'200)); // RP65C02G R65C02(config, m_maincpu, 4.9152_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_polgar_state::polgar_mem); m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_polgar_state::polgar_mem);
m_maincpu->set_periodic_int(FUNC(mephisto_polgar_state::nmi_line_pulse), attotime::from_hz(XTAL(4'915'200) / (1 << 13))); m_maincpu->set_periodic_int(FUNC(mephisto_polgar_state::nmi_line_pulse), attotime::from_hz(4.9152_MHz_XTAL / (1 << 13)));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@ -243,45 +128,17 @@ void mephisto_polgar_state::polgar(machine_config &config)
void mephisto_polgar_state::polgar10(machine_config &config) void mephisto_polgar_state::polgar10(machine_config &config)
{ {
polgar(config); polgar(config);
m_maincpu->set_clock(9.8304_MHz_XTAL); // W65C02P-8
M65C02(config.replace(), m_maincpu, 9.8304_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_polgar_state::polgar_mem);
m_maincpu->set_periodic_int(FUNC(mephisto_polgar_state::nmi_line_pulse), attotime::from_hz(9.8304_MHz_XTAL / (1 << 13))); m_maincpu->set_periodic_int(FUNC(mephisto_polgar_state::nmi_line_pulse), attotime::from_hz(9.8304_MHz_XTAL / (1 << 13)));
} }
void mephisto_risc_state::mrisc(machine_config &config)
{
M65SC02(config, m_maincpu, XTAL(10'000'000) / 4); // G65SC02P-4
m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_risc_state::mrisc_mem);
m_maincpu->set_periodic_int(FUNC(mephisto_risc_state::irq0_line_hold), attotime::from_hz(XTAL(10'000'000) / (1 << 14)));
CHESSMACHINE(config, m_chessm, 14'000'000); // Tasc ChessMachine EC PCB, Mephisto manual says 14MHz (no XTAL)
config.set_perfect_quantum(m_maincpu);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
hc259_device &outlatch(HC259(config, "outlatch"));
outlatch.q_out_cb<0>().set_output("led100");
outlatch.q_out_cb<1>().set_output("led101");
outlatch.q_out_cb<2>().set_output("led102");
outlatch.q_out_cb<3>().set_output("led103");
outlatch.q_out_cb<4>().set_output("led104");
outlatch.q_out_cb<5>().set_output("led105");
outlatch.parallel_out_cb().set_membank("rombank").rshift(6).mask(0x03).exor(0x01);
MEPHISTO_SENSORS_BOARD(config, "board");
MEPHISTO_DISPLAY_MODULE2(config, "display");
config.set_default_layout(layout_mephisto_polgar);
}
void mephisto_milano_state::milano(machine_config &config)
{
polgar(config); // CPU: W65C02P-8, 4.9152MHz
m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_milano_state::milano_mem);
MEPHISTO_BUTTONS_BOARD(config.replace(), m_board);
m_board->set_disable_leds(true);
config.set_default_layout(layout_mephisto_milano);
}
/******************************************************************************
ROM Definitions
******************************************************************************/
ROM_START( polgar ) ROM_START( polgar )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
@ -303,50 +160,16 @@ ROM_START( polgar101 )
ROM_LOAD("polg_101.bin", 0x00000, 0x10000, CRC(8fb6afa4) SHA1(d1cf868302a665ff351686b26a149ced0045fc81) ) ROM_LOAD("polg_101.bin", 0x00000, 0x10000, CRC(8fb6afa4) SHA1(d1cf868302a665ff351686b26a149ced0045fc81) )
ROM_END ROM_END
ROM_START( mrisc ) } // anonymous namespace
ROM_REGION( 0x20000, "maincpu", 0 )
// contains ChessMachine engine at 0x0-0x03fff + 0x10000-0x1c74f, concatenate those sections and make a .bin file,
// then it will work on ChessMachine software. It identifies as R E B E L ver. HG-021 03-04-92
ROM_LOAD("meph-risci-v1-2.bin", 0x00000, 0x20000, CRC(19c6ab83) SHA1(0baab84e5aa6999c24250938d207145144945fd5) )
ROM_END
ROM_START( mrisc2 )
ROM_REGION( 0x20000, "maincpu", 0 )
// contains ChessMachine engine at 0x0-0x03fff + 0x10000-0x1cb7f, concatenate those sections and make a .bin file,
// then it will work on ChessMachine software. It identifies as R E B E L ver. 2.31 22-07-93, world champion Madrid 1992
ROM_LOAD("risc_2.31", 0x00000, 0x20000, CRC(9ecf9cd3) SHA1(7bfc628183037a172242c9589f15aca218d8fb12) )
ROM_END
ROM_START( milano )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("milano102.bin", 0x0000, 0x10000, CRC(0e9c8fe1) SHA1(e9176f42d86fe57e382185c703c7eff7e63ca711) )
ROM_END
ROM_START( milanoa )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("milano101.bin", 0x0000, 0x10000, CRC(22efc0be) SHA1(921607d6dacf72c0686b8970261c43e2e244dc9f) )
ROM_END
ROM_START( nshort )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("nshort.bin", 0x00000, 0x10000, CRC(4bd51e23) SHA1(3f55cc1c55dae8818b7e9384b6b8d43dc4f0a1af) )
ROM_END
/*************************************************************************** /***************************************************************************
Game driver(s) Game Drivers
***************************************************************************/ ***************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ /* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
CONS( 1990, polgar, 0, 0, polgar, polgar, mephisto_polgar_state, empty_init, "Hegener + Glaser", "Mephisto Polgar (v1.50)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1990, polgar, 0, 0, polgar, polgar, mephisto_polgar_state, empty_init, "Hegener + Glaser", "Mephisto Polgar (v1.50)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1989, polgara, polgar, 0, polgar, polgar, mephisto_polgar_state, empty_init, "Hegener + Glaser", "Mephisto Polgar (v1.10)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1989, polgara, polgar, 0, polgar, polgar, mephisto_polgar_state, empty_init, "Hegener + Glaser", "Mephisto Polgar (v1.10)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1990, polgar10, polgar, 0, polgar10, polgar, mephisto_polgar_state, empty_init, "Hegener + Glaser", "Mephisto Polgar 10 MHz (v10.0)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1990, polgar10, polgar, 0, polgar10, polgar, mephisto_polgar_state, empty_init, "Hegener + Glaser", "Mephisto Polgar 10 MHz (v10.0)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1990, polgar101, polgar, 0, polgar10, polgar, mephisto_polgar_state, empty_init, "Hegener + Glaser", "Mephisto Polgar 10 MHz (v10.1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1990, polgar101, polgar, 0, polgar10, polgar, mephisto_polgar_state, empty_init, "Hegener + Glaser", "Mephisto Polgar 10 MHz (v10.1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1992, mrisc, 0, 0, mrisc, polgar, mephisto_risc_state, empty_init, "Hegener + Glaser / Tasc", "Mephisto Risc 1MB", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1994, mrisc2, mrisc, 0, mrisc, polgar, mephisto_risc_state, empty_init, "Hegener + Glaser / Tasc", "Mephisto Risc II", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
// not modular boards
CONS( 1991, milano, 0, 0, milano, polgar, mephisto_milano_state, empty_init, "Hegener + Glaser", "Mephisto Milano (v1.02)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1991, milanoa, milano, 0, milano, polgar, mephisto_milano_state, empty_init, "Hegener + Glaser", "Mephisto Milano (v1.01)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1993, nshort, milano, 0, milano, polgar, mephisto_milano_state, empty_init, "Hegener + Glaser", "Mephisto Nigel Short", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )

View File

@ -0,0 +1,197 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco, hap
/******************************************************************************
Mephisto Risc 1MB/II (stylized "risc")
The chess engine in Mephisto Risc is also compatible with Tasc's The ChessMachine,
see ROM defs for details.
Hardware notes:
- G65SC02P-4 @ 2.5MHz
- 128KB ROM
- Tasc ChessMachine EC PCB
- Mephisto modular display module
- Mephisto Exclusive/Muenchen chessboard
******************************************************************************/
#include "emu.h"
#include "cpu/m6502/m65sc02.h"
#include "machine/74259.h"
#include "machine/nvram.h"
#include "machine/mmboard.h"
#include "machine/chessmachine.h"
#include "video/mmdisplay2.h"
// internal artwork
#include "mephisto_risc.lh"
namespace {
class mephisto_risc_state : public driver_device
{
public:
mephisto_risc_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_chessm(*this, "chessm")
, m_rombank(*this, "rombank")
, m_keys(*this, "KEY")
{ }
void mrisc(machine_config &config);
protected:
virtual void machine_start() override;
private:
required_device<cpu_device> m_maincpu;
required_device<chessmachine_device> m_chessm;
required_memory_bank m_rombank;
required_ioport m_keys;
void mrisc_mem(address_map &map);
u8 keys_r(offs_t offset);
u8 chessm_r();
void chessm_w(u8 data);
};
void mephisto_risc_state::machine_start()
{
m_rombank->configure_entries(0, 4, memregion("maincpu")->base(), 0x8000);
}
/******************************************************************************
I/O
******************************************************************************/
u8 mephisto_risc_state::keys_r(offs_t offset)
{
return (BIT(m_keys->read(), offset) << 7) | 0x7f;
}
u8 mephisto_risc_state::chessm_r()
{
// d0: chessmachine data
return m_chessm->data_r();
}
void mephisto_risc_state::chessm_w(u8 data)
{
// d0,d7: chessmachine data
m_chessm->data0_w(BIT(data, 0));
m_chessm->data1_w(BIT(data, 7));
// d1: chessmachine reset
m_chessm->reset_w(BIT(data, 1));
}
/******************************************************************************
Address Maps
******************************************************************************/
void mephisto_risc_state::mrisc_mem(address_map &map)
{
map.unmap_value_high();
map(0x0000, 0x1fff).ram().share("nvram");
map(0x2000, 0x2000).w("display", FUNC(mephisto_display_module2_device::latch_w));
map(0x2004, 0x2004).w("display", FUNC(mephisto_display_module2_device::io_w));
map(0x2c00, 0x2c07).r(FUNC(mephisto_risc_state::keys_r));
map(0x2400, 0x2400).w("board", FUNC(mephisto_board_device::led_w));
map(0x2800, 0x2800).w("board", FUNC(mephisto_board_device::mux_w));
map(0x3000, 0x3000).r("board", FUNC(mephisto_board_device::input_r));
map(0x3400, 0x3407).w("outlatch", FUNC(hc259_device::write_d7)).nopr();
map(0x3800, 0x3800).w(FUNC(mephisto_risc_state::chessm_w));
map(0x3c00, 0x3c00).r(FUNC(mephisto_risc_state::chessm_r));
map(0x4000, 0x7fff).rom();
map(0x8000, 0xffff).bankr("rombank");
}
/******************************************************************************
Input Ports
******************************************************************************/
static INPUT_PORTS_START( mrisc )
PORT_START("KEY")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("TRN / Pawn") PORT_CODE(KEYCODE_T)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("INFO / Knight") PORT_CODE(KEYCODE_I)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("MEM / Bishop") PORT_CODE(KEYCODE_M)
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("POS / Rook") PORT_CODE(KEYCODE_O)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("LEV / Queen") PORT_CODE(KEYCODE_L)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("FCT / King") PORT_CODE(KEYCODE_F)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("ENT / New Game") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_F1) // combine for NEW GAME
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("CL / New Game") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_F1) // "
INPUT_PORTS_END
/******************************************************************************
Machine Configs
******************************************************************************/
void mephisto_risc_state::mrisc(machine_config &config)
{
M65SC02(config, m_maincpu, 10_MHz_XTAL / 4);
m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_risc_state::mrisc_mem);
m_maincpu->set_periodic_int(FUNC(mephisto_risc_state::irq0_line_hold), attotime::from_hz(10_MHz_XTAL / (1 << 14)));
CHESSMACHINE(config, m_chessm, 14'000'000); // Mephisto manual says 14MHz (no XTAL)
config.set_perfect_quantum(m_maincpu);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
hc259_device &outlatch(HC259(config, "outlatch"));
outlatch.q_out_cb<0>().set_output("led100");
outlatch.q_out_cb<1>().set_output("led101");
outlatch.q_out_cb<2>().set_output("led102");
outlatch.q_out_cb<3>().set_output("led103");
outlatch.q_out_cb<4>().set_output("led104");
outlatch.q_out_cb<5>().set_output("led105");
outlatch.parallel_out_cb().set_membank("rombank").rshift(6).mask(0x03).exor(0x01);
MEPHISTO_SENSORS_BOARD(config, "board");
MEPHISTO_DISPLAY_MODULE2(config, "display");
config.set_default_layout(layout_mephisto_risc);
}
/******************************************************************************
ROM Definitions
******************************************************************************/
ROM_START( mrisc )
ROM_REGION( 0x20000, "maincpu", 0 )
// contains ChessMachine engine at 0x0-0x03fff + 0x10000-0x1c74f, concatenate those sections and make a .bin file,
// then it will work on ChessMachine software. It identifies as R E B E L ver. HG-021 03-04-92
ROM_LOAD("meph-risci-v1-2.bin", 0x00000, 0x20000, CRC(19c6ab83) SHA1(0baab84e5aa6999c24250938d207145144945fd5) )
ROM_END
ROM_START( mrisc2 )
ROM_REGION( 0x20000, "maincpu", 0 )
// contains ChessMachine engine at 0x0-0x03fff + 0x10000-0x1cb7f, concatenate those sections and make a .bin file,
// then it will work on ChessMachine software. It identifies as R E B E L ver. 2.31 22-07-93, world champion Madrid 1992
ROM_LOAD("risc_2.31", 0x00000, 0x20000, CRC(9ecf9cd3) SHA1(7bfc628183037a172242c9589f15aca218d8fb12) )
ROM_END
} // anonymous namespace
/***************************************************************************
Game Drivers
***************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
CONS( 1992, mrisc, 0, 0, mrisc, mrisc, mephisto_risc_state, empty_init, "Hegener + Glaser / Tasc", "Mephisto Risc 1MB", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1994, mrisc2, mrisc, 0, mrisc, mrisc, mephisto_risc_state, empty_init, "Hegener + Glaser / Tasc", "Mephisto Risc II", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )

View File

@ -468,9 +468,9 @@ license:CC0
<!-- build screen --> <!-- build screen -->
<view name="Internal Layout"> <view name="Internal Layout">
<bounds left="0" right="100" top="0" bottom="98" /> <bounds left="0" right="101" top="-1" bottom="98" />
<element ref="background"><bounds x="13" y="0" width="87" height="98" /></element> <element ref="background"><bounds x="13" y="-1" width="88" height="99" /></element>
<!-- chessboard coords --> <!-- chessboard coords -->
<element ref="white"><bounds x="16.5" y="2.5" width="81" height="81" /></element> <element ref="white"><bounds x="16.5" y="2.5" width="81" height="81" /></element>

View File

@ -460,7 +460,7 @@ license:CC0
<element ref="cblack"><bounds x="13" y="-2" width="89" height="89" /></element> <element ref="cblack"><bounds x="13" y="-2" width="89" height="89" /></element>
<element ref="cwhite"><bounds x="17" y="2" width="81" height="81" /></element> <element ref="cwhite"><bounds x="17" y="2" width="81" height="81" /></element>
<element ref="text_lcd"><bounds x="47.5" y="89" width="24.5" height="2" /></element> <element ref="text_lcd"><bounds x="47.5" y="89.3" width="24.5" height="1.5" /></element>
<group ref="panel"><bounds x="47.5" y="91.8" width="24.5" height="6.5" /></group> <group ref="panel"><bounds x="47.5" y="91.8" width="24.5" height="6.5" /></group>
<group ref="buttons"><bounds x="77.5" y="88.5" width="13" height="13" /></group> <group ref="buttons"><bounds x="77.5" y="88.5" width="13" height="13" /></group>

View File

@ -460,7 +460,7 @@ license:CC0
<element ref="cblack"><bounds x="13" y="-2" width="89" height="89" /></element> <element ref="cblack"><bounds x="13" y="-2" width="89" height="89" /></element>
<element ref="cwhite"><bounds x="17" y="2" width="81" height="81" /></element> <element ref="cwhite"><bounds x="17" y="2" width="81" height="81" /></element>
<element ref="text_lcd"><bounds x="47.5" y="89" width="24.5" height="2" /></element> <element ref="text_lcd"><bounds x="47.5" y="89.3" width="24.5" height="1.5" /></element>
<group ref="panel"><bounds x="47.5" y="91.8" width="24.5" height="6.5" /></group> <group ref="panel"><bounds x="47.5" y="91.8" width="24.5" height="6.5" /></group>
<group ref="buttons"><bounds x="77.5" y="88.5" width="13" height="13" /></group> <group ref="buttons"><bounds x="77.5" y="88.5" width="13" height="13" /></group>

View File

@ -25,22 +25,22 @@ license:CC0
</rect> </rect>
</element> </element>
<element name="text_1"> <text string="1"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_1"> <text string="1"> <color red="0.9" green="0.9" blue="0.9" /></text> </element>
<element name="text_2"> <text string="2"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_2"> <text string="2"> <color red="0.9" green="0.9" blue="0.9" /></text> </element>
<element name="text_3"> <text string="3"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_3"> <text string="3"> <color red="0.9" green="0.9" blue="0.9" /></text> </element>
<element name="text_4"> <text string="4"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_4"> <text string="4"> <color red="0.9" green="0.9" blue="0.9" /></text> </element>
<element name="text_5"> <text string="5"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_5"> <text string="5"> <color red="0.9" green="0.9" blue="0.9" /></text> </element>
<element name="text_6"> <text string="6"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_6"> <text string="6"> <color red="0.9" green="0.9" blue="0.9" /></text> </element>
<element name="text_7"> <text string="7"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_7"> <text string="7"> <color red="0.9" green="0.9" blue="0.9" /></text> </element>
<element name="text_8"> <text string="8"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_8"> <text string="8"> <color red="0.9" green="0.9" blue="0.9" /></text> </element>
<element name="text_a"> <text string="A"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_a"> <text string="A"> <color red="0.9" green="0.9" blue="0.9" /></text> </element>
<element name="text_b"> <text string="B"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_b"> <text string="B"> <color red="0.9" green="0.9" blue="0.9" /></text> </element>
<element name="text_c"> <text string="C"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_c"> <text string="C"> <color red="0.9" green="0.9" blue="0.9" /></text> </element>
<element name="text_d"> <text string="D"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_d"> <text string="D"> <color red="0.9" green="0.9" blue="0.9" /></text> </element>
<element name="text_e"> <text string="E"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_e"> <text string="E"> <color red="0.9" green="0.9" blue="0.9" /></text> </element>
<element name="text_f"> <text string="F"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_f"> <text string="F"> <color red="0.9" green="0.9" blue="0.9" /></text> </element>
<element name="text_g"> <text string="G"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_g"> <text string="G"> <color red="0.9" green="0.9" blue="0.9" /></text> </element>
<element name="text_h"> <text string="H"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_h"> <text string="H"> <color red="0.9" green="0.9" blue="0.9" /></text> </element>
<element name="text_up"> <text string="UP"> <color red="0.9" green="0.85" blue="0.55" /></text> </element> <element name="text_up"> <text string="UP"> <color red="0.9" green="0.85" blue="0.55" /></text> </element>
<element name="text_down"> <text string="DOWN"> <color red="0.9" green="0.85" blue="0.55" /></text> </element> <element name="text_down"> <text string="DOWN"> <color red="0.9" green="0.85" blue="0.55" /></text> </element>
@ -390,30 +390,31 @@ license:CC0
<!-- build screen --> <!-- build screen -->
<view name="Internal Layout"> <view name="Internal Layout">
<bounds left="2" right="129" top="0.5" bottom="89" /> <bounds left="2.5" right="129" top="0.5" bottom="88.5" />
<element ref="cwhite"><bounds x="19.5" y="2.5" width="81" height="81" /></element> <element ref="cwhite"><bounds x="19.5" y="2.5" width="81" height="81" /></element>
<!-- chessboard coords --> <!-- chessboard coords -->
<element ref="text_8"><bounds x="15.7" y="7" width="2" height="2" /></element> <element ref="text_8"><bounds x="16.2" y="7" width="2" height="2" /></element>
<element ref="text_7"><bounds x="15.7" y="17" width="2" height="2" /></element> <element ref="text_7"><bounds x="16.2" y="17" width="2" height="2" /></element>
<element ref="text_6"><bounds x="15.7" y="27" width="2" height="2" /></element> <element ref="text_6"><bounds x="16.2" y="27" width="2" height="2" /></element>
<element ref="text_5"><bounds x="15.7" y="37" width="2" height="2" /></element> <element ref="text_5"><bounds x="16.2" y="37" width="2" height="2" /></element>
<element ref="text_4"><bounds x="15.7" y="47" width="2" height="2" /></element> <element ref="text_4"><bounds x="16.2" y="47" width="2" height="2" /></element>
<element ref="text_3"><bounds x="15.7" y="57" width="2" height="2" /></element> <element ref="text_3"><bounds x="16.2" y="57" width="2" height="2" /></element>
<element ref="text_2"><bounds x="15.7" y="67" width="2" height="2" /></element> <element ref="text_2"><bounds x="16.2" y="67" width="2" height="2" /></element>
<element ref="text_1"><bounds x="15.7" y="77" width="2" height="2" /></element> <element ref="text_1"><bounds x="16.2" y="77" width="2" height="2" /></element>
<element ref="text_a"><bounds x="24" y="85.5" width="2" height="2" /></element>
<element ref="text_b"><bounds x="34" y="85.5" width="2" height="2" /></element> <element ref="text_a"><bounds x="24" y="85" width="2" height="2" /></element>
<element ref="text_c"><bounds x="44" y="85.5" width="2" height="2" /></element> <element ref="text_b"><bounds x="34" y="85" width="2" height="2" /></element>
<element ref="text_d"><bounds x="54" y="85.5" width="2" height="2" /></element> <element ref="text_c"><bounds x="44" y="85" width="2" height="2" /></element>
<element ref="text_e"><bounds x="64" y="85.5" width="2" height="2" /></element> <element ref="text_d"><bounds x="54" y="85" width="2" height="2" /></element>
<element ref="text_f"><bounds x="74" y="85.5" width="2" height="2" /></element> <element ref="text_e"><bounds x="64" y="85" width="2" height="2" /></element>
<element ref="text_g"><bounds x="84" y="85.5" width="2" height="2" /></element> <element ref="text_f"><bounds x="74" y="85" width="2" height="2" /></element>
<element ref="text_h"><bounds x="94" y="85.5" width="2" height="2" /></element> <element ref="text_g"><bounds x="84" y="85" width="2" height="2" /></element>
<element ref="text_h"><bounds x="94" y="85" width="2" height="2" /></element>
<group ref="sb_board"><bounds x="20" y="3" width="80" height="80" /></group> <group ref="sb_board"><bounds x="20" y="3" width="80" height="80" /></group>
<group ref="sb_ui"><bounds x="3.5" y="3" width="10" height="80" /></group> <group ref="sb_ui"><bounds x="4" y="3" width="10" height="80" /></group>
<!-- LCD panel --> <!-- LCD panel -->
<group ref="panel1"><bounds x="103.5" y="56.9" width="23" height="6.1" /></group> <group ref="panel1"><bounds x="103.5" y="56.9" width="23" height="6.1" /></group>

View File

@ -460,7 +460,7 @@ license:CC0
<element ref="cblack"><bounds x="13" y="-2" width="89" height="89" /></element> <element ref="cblack"><bounds x="13" y="-2" width="89" height="89" /></element>
<element ref="cwhite"><bounds x="17" y="2" width="81" height="81" /></element> <element ref="cwhite"><bounds x="17" y="2" width="81" height="81" /></element>
<element ref="text_lcd"><bounds x="47.5" y="89" width="24.5" height="2" /></element> <element ref="text_lcd"><bounds x="47.5" y="89.3" width="24.5" height="1.5" /></element>
<group ref="panel"><bounds x="47.5" y="91.8" width="24.5" height="6.5" /></group> <group ref="panel"><bounds x="47.5" y="91.8" width="24.5" height="6.5" /></group>
<group ref="buttons"><bounds x="77.5" y="88.5" width="13" height="13" /></group> <group ref="buttons"><bounds x="77.5" y="88.5" width="13" height="13" /></group>

View File

@ -430,22 +430,23 @@ license:CC0
<element ref="text_h"><bounds x="94" y="86.5" width="2" height="2" /></element> <element ref="text_h"><bounds x="94" y="86.5" width="2" height="2" /></element>
<!-- chessboard leds --> <!-- chessboard leds -->
<element name="led0" ref="ledr"><bounds x="24" y="85" width="2" height="1" /></element> <element name="led0" ref="ledr"><bounds x="24" y="85" width="2" height="1" /></element>
<element name="led1" ref="ledr"><bounds x="34" y="85" width="2" height="1" /></element> <element name="led8" ref="ledr"><bounds x="34" y="85" width="2" height="1" /></element>
<element name="led2" ref="ledr"><bounds x="44" y="85" width="2" height="1" /></element> <element name="led16" ref="ledr"><bounds x="44" y="85" width="2" height="1" /></element>
<element name="led3" ref="ledr"><bounds x="54" y="85" width="2" height="1" /></element> <element name="led24" ref="ledr"><bounds x="54" y="85" width="2" height="1" /></element>
<element name="led4" ref="ledr"><bounds x="64" y="85" width="2" height="1" /></element> <element name="led32" ref="ledr"><bounds x="64" y="85" width="2" height="1" /></element>
<element name="led5" ref="ledr"><bounds x="74" y="85" width="2" height="1" /></element> <element name="led40" ref="ledr"><bounds x="74" y="85" width="2" height="1" /></element>
<element name="led6" ref="ledr"><bounds x="84" y="85" width="2" height="1" /></element> <element name="led48" ref="ledr"><bounds x="84" y="85" width="2" height="1" /></element>
<element name="led7" ref="ledr"><bounds x="94" y="85" width="2" height="1" /></element> <element name="led56" ref="ledr"><bounds x="94" y="85" width="2" height="1" /></element>
<element name="led8" ref="ledr"><bounds x="16.5" y="77.5" width="2" height="1" /></element>
<element name="led9" ref="ledr"><bounds x="16.5" y="67.5" width="2" height="1" /></element> <element name="led1" ref="ledr"><bounds x="16.5" y="77.5" width="2" height="1" /></element>
<element name="led10" ref="ledr"><bounds x="16.5" y="57.5" width="2" height="1" /></element> <element name="led9" ref="ledr"><bounds x="16.5" y="67.5" width="2" height="1" /></element>
<element name="led11" ref="ledr"><bounds x="16.5" y="47.5" width="2" height="1" /></element> <element name="led17" ref="ledr"><bounds x="16.5" y="57.5" width="2" height="1" /></element>
<element name="led12" ref="ledr"><bounds x="16.5" y="37.5" width="2" height="1" /></element> <element name="led25" ref="ledr"><bounds x="16.5" y="47.5" width="2" height="1" /></element>
<element name="led13" ref="ledr"><bounds x="16.5" y="27.5" width="2" height="1" /></element> <element name="led33" ref="ledr"><bounds x="16.5" y="37.5" width="2" height="1" /></element>
<element name="led14" ref="ledr"><bounds x="16.5" y="17.5" width="2" height="1" /></element> <element name="led41" ref="ledr"><bounds x="16.5" y="27.5" width="2" height="1" /></element>
<element name="led15" ref="ledr"><bounds x="16.5" y="7.5" width="2" height="1" /></element> <element name="led49" ref="ledr"><bounds x="16.5" y="17.5" width="2" height="1" /></element>
<element name="led57" ref="ledr"><bounds x="16.5" y="7.5" width="2" height="1" /></element>
<group ref="sb_board"><bounds x="20" y="3" width="80" height="80" /></group> <group ref="sb_board"><bounds x="20" y="3" width="80" height="80" /></group>
<group ref="sb_ui"><bounds x="2.5" y="3" width="10" height="80" /></group> <group ref="sb_ui"><bounds x="2.5" y="3" width="10" height="80" /></group>

View File

@ -2,8 +2,13 @@
<!-- <!--
license:CC0 license:CC0
--> -->
<!-- mephisto_polgar.lay and mephisto_risc.lay are identical -->
<mamelayout version="2"> <mamelayout version="2">
<!-- define elements --> <!-- define elements -->
<element name="led" defstate="0"> <element name="led" defstate="0">
<disk state="0"> <disk state="0">
<color red="0.20" green="0.0" blue="0.0" /> <color red="0.20" green="0.0" blue="0.0" />
@ -39,15 +44,15 @@ license:CC0
<element name="text_f"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="F"><color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_f"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="F"><color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_g"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="G"><color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_g"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="G"><color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_h"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="H"><color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_h"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="H"><color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_trn"> <rect><color red="0" green="0" blue="0" /></rect> <text string="TRN"> <color red="0.76" green="0.74" blue="0.41" /></text> </element> <element name="text_trn"> <rect><color red="0" green="0" blue="0" /></rect> <text string="TRN"> <color red="0.76" green="0.74" blue="0.41" /></text> </element>
<element name="text_info"> <rect><color red="0" green="0" blue="0" /></rect> <text string="INFO"> <color red="0.76" green="0.74" blue="0.41" /></text> </element> <element name="text_info"> <rect><color red="0" green="0" blue="0" /></rect> <text string="INFO"> <color red="0.76" green="0.74" blue="0.41" /></text> </element>
<element name="text_mem"> <rect><color red="0" green="0" blue="0" /></rect> <text string="MEM"> <color red="0.76" green="0.74" blue="0.41" /></text> </element> <element name="text_mem"> <rect><color red="0" green="0" blue="0" /></rect> <text string="MEM"> <color red="0.76" green="0.74" blue="0.41" /></text> </element>
<element name="text_pos"> <rect><color red="0" green="0" blue="0" /></rect> <text string="POS"> <color red="0.76" green="0.74" blue="0.41" /></text> </element> <element name="text_pos"> <rect><color red="0" green="0" blue="0" /></rect> <text string="POS"> <color red="0.76" green="0.74" blue="0.41" /></text> </element>
<element name="text_lev"> <rect><color red="0" green="0" blue="0" /></rect> <text string="LEV"> <color red="0.76" green="0.74" blue="0.41" /></text> </element> <element name="text_lev"> <rect><color red="0" green="0" blue="0" /></rect> <text string="LEV"> <color red="0.76" green="0.74" blue="0.41" /></text> </element>
<element name="text_fct"> <rect><color red="0" green="0" blue="0" /></rect> <text string="FCT"> <color red="0.76" green="0.74" blue="0.41" /></text> </element> <element name="text_fct"> <rect><color red="0" green="0" blue="0" /></rect> <text string="FCT"> <color red="0.76" green="0.74" blue="0.41" /></text> </element>
<element name="text_ent"> <rect><color red="0" green="0" blue="0" /></rect> <text string="ENT"> <color red="0.76" green="0.74" blue="0.41" /></text> </element> <element name="text_ent"> <rect><color red="0" green="0" blue="0" /></rect> <text string="ENT"> <color red="0.76" green="0.74" blue="0.41" /></text> </element>
<element name="text_cl"> <rect><color red="0" green="0" blue="0" /></rect> <text string="CL"> <color red="0.76" green="0.74" blue="0.41" /></text> </element> <element name="text_cl"> <rect><color red="0" green="0" blue="0" /></rect> <text string="CL"> <color red="0.76" green="0.74" blue="0.41" /></text> </element>
<element name="text_lcd"> <rect><color red="0" green="0" blue="0" /></rect> <text string="16/32 BIT DISPLAY MODUL"><color red="0.76" green="0.74" blue="0.41" /></text> </element> <element name="text_lcd"> <rect><color red="0" green="0" blue="0" /></rect> <text string="GRAPHIC DISPLAY MODUL"><color red="0.76" green="0.74" blue="0.41" /></text> </element>
<element name="static_lcd"><rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect></element> <element name="static_lcd"><rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect></element>
<element name="yellow_mask"><rect><color red="0.76" green="0.74" blue="0.41" /></rect></element> <element name="yellow_mask"><rect><color red="0.76" green="0.74" blue="0.41" /></rect></element>
@ -386,7 +391,7 @@ license:CC0
<element ref="text_p1"> <bounds x="55.25" y="5.55" width="2" height="2" /></element> <element ref="text_p1"> <bounds x="55.25" y="5.55" width="2" height="2" /></element>
<element ref="yellow_mask" blend="multiply"><bounds x="30" y="5.51" width="28" height="2.2" /></element> <element ref="yellow_mask" blend="multiply"><bounds x="30" y="5.51" width="28" height="2.2" /></element>
<element ref="text_lcd"><bounds x="1" y="0.5" width="24" height="1.5" /></element> <element ref="text_lcd"><bounds x="1" y="0.5" width="24.5" height="1.5" /></element>
<element name="led100" ref="led"> <bounds x="29.1" y="1" width="1.3" height="1.3" /> </element> <element name="led100" ref="led"> <bounds x="29.1" y="1" width="1.3" height="1.3" /> </element>
<element name="led101" ref="led"> <bounds x="34.1" y="1" width="1.3" height="1.3" /> </element> <element name="led101" ref="led"> <bounds x="34.1" y="1" width="1.3" height="1.3" /> </element>
@ -404,6 +409,10 @@ license:CC0
<element ref="text_ent"> <bounds x="49.5" y="8" width="3.5" height="1.2" /> </element> <element ref="text_ent"> <bounds x="49.5" y="8" width="3.5" height="1.2" /> </element>
<element ref="text_cl"> <bounds x="54.5" y="8" width="3.5" height="1.3" /> </element> <element ref="text_cl"> <bounds x="54.5" y="8" width="3.5" height="1.3" /> </element>
<element ref="yellow_mask"><bounds x="52.5" y="8.5" width="2.5" height="0.1" /></element>
<element ref="yellow_mask"><bounds x="51.2" y="9.25" width="0.1" height="0.5" /></element>
<element ref="yellow_mask"><bounds x="56.2" y="9.25" width="0.1" height="0.5" /></element>
<element ref="hlb" inputtag="KEY" inputmask="0x01"> <bounds x="29.5" y="3" width="3.5" height="2.5" /> </element> <element ref="hlb" inputtag="KEY" inputmask="0x01"> <bounds x="29.5" y="3" width="3.5" height="2.5" /> </element>
<element ref="hlb" inputtag="KEY" inputmask="0x02"> <bounds x="34.5" y="3" width="3.5" height="2.5" /> </element> <element ref="hlb" inputtag="KEY" inputmask="0x02"> <bounds x="34.5" y="3" width="3.5" height="2.5" /> </element>
<element ref="hlb" inputtag="KEY" inputmask="0x04"> <bounds x="39.5" y="3" width="3.5" height="2.5" /> </element> <element ref="hlb" inputtag="KEY" inputmask="0x04"> <bounds x="39.5" y="3" width="3.5" height="2.5" /> </element>

View File

@ -0,0 +1,461 @@
<?xml version="1.0"?>
<!--
license:CC0
-->
<!-- mephisto_polgar.lay and mephisto_risc.lay are identical -->
<mamelayout version="2">
<!-- define elements -->
<element name="led" defstate="0">
<disk state="0">
<color red="0.20" green="0.0" blue="0.0" />
</disk>
<disk state="1">
<color red="0.95" green="0.0" blue="0.0" />
</disk>
</element>
<element name="hlb" defstate="0">
<rect state="0">
<bounds x="0.0" y="0.0" width="1.0" height="1.0" />
<color red="0.4" green="0.4" blue="0.4" />
</rect>
<rect state="1">
<bounds x="0.0" y="0.0" width="1.0" height="1.0" />
<color red="0.7" green="0.7" blue="0.7" />
</rect>
</element>
<element name="text_1"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="1"><color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_2"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="2"><color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_3"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="3"><color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_4"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="4"><color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_5"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="5"><color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_6"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="6"><color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_7"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="7"><color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_8"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="8"><color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_a"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="A"><color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_b"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="B"><color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_c"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="C"><color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_d"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="D"><color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_e"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="E"><color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_f"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="F"><color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_g"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="G"><color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_h"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="H"><color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_trn"> <rect><color red="0" green="0" blue="0" /></rect> <text string="TRN"> <color red="0.76" green="0.74" blue="0.41" /></text> </element>
<element name="text_info"> <rect><color red="0" green="0" blue="0" /></rect> <text string="INFO"> <color red="0.76" green="0.74" blue="0.41" /></text> </element>
<element name="text_mem"> <rect><color red="0" green="0" blue="0" /></rect> <text string="MEM"> <color red="0.76" green="0.74" blue="0.41" /></text> </element>
<element name="text_pos"> <rect><color red="0" green="0" blue="0" /></rect> <text string="POS"> <color red="0.76" green="0.74" blue="0.41" /></text> </element>
<element name="text_lev"> <rect><color red="0" green="0" blue="0" /></rect> <text string="LEV"> <color red="0.76" green="0.74" blue="0.41" /></text> </element>
<element name="text_fct"> <rect><color red="0" green="0" blue="0" /></rect> <text string="FCT"> <color red="0.76" green="0.74" blue="0.41" /></text> </element>
<element name="text_ent"> <rect><color red="0" green="0" blue="0" /></rect> <text string="ENT"> <color red="0.76" green="0.74" blue="0.41" /></text> </element>
<element name="text_cl"> <rect><color red="0" green="0" blue="0" /></rect> <text string="CL"> <color red="0.76" green="0.74" blue="0.41" /></text> </element>
<element name="text_lcd"> <rect><color red="0" green="0" blue="0" /></rect> <text string="GRAPHIC DISPLAY MODUL"><color red="0.76" green="0.74" blue="0.41" /></text> </element>
<element name="static_lcd"><rect><color red="0.5412" green="0.57255" blue="0.5804" /></rect></element>
<element name="yellow_mask"><rect><color red="0.76" green="0.74" blue="0.41" /></rect></element>
<element name="text_p1"><image file="chess/wk.svg"/></element>
<element name="text_p2"><image file="chess/wq.svg"/></element>
<element name="text_p3"><image file="chess/wr.svg"/></element>
<element name="text_p4"><image file="chess/wb.svg"/></element>
<element name="text_p5"><image file="chess/wn.svg"/></element>
<element name="text_p6"><image file="chess/wp.svg"/></element>
<element name="piece" defstate="0">
<image file="chess/wp.svg" state="1"/>
<image file="chess/wn.svg" state="2"/>
<image file="chess/wb.svg" state="3"/>
<image file="chess/wr.svg" state="4"/>
<image file="chess/wq.svg" state="5"/>
<image file="chess/wk.svg" state="6"/>
<image file="chess/bp.svg" state="7"/>
<image file="chess/bn.svg" state="8"/>
<image file="chess/bb.svg" state="9"/>
<image file="chess/br.svg" state="10"/>
<image file="chess/bq.svg" state="11"/>
<image file="chess/bk.svg" state="12"/>
<!-- selected pieces -->
<image file="chess/wp.svg" state="13"><color alpha="0.5" /></image>
<image file="chess/wn.svg" state="14"><color alpha="0.5" /></image>
<image file="chess/wb.svg" state="15"><color alpha="0.5" /></image>
<image file="chess/wr.svg" state="16"><color alpha="0.5" /></image>
<image file="chess/wq.svg" state="17"><color alpha="0.5" /></image>
<image file="chess/wk.svg" state="18"><color alpha="0.5" /></image>
<image file="chess/bp.svg" state="19"><color alpha="0.5" /></image>
<image file="chess/bn.svg" state="20"><color alpha="0.5" /></image>
<image file="chess/bb.svg" state="21"><color alpha="0.5" /></image>
<image file="chess/br.svg" state="22"><color alpha="0.5" /></image>
<image file="chess/bq.svg" state="23"><color alpha="0.5" /></image>
<image file="chess/bk.svg" state="24"><color alpha="0.5" /></image>
</element>
<!-- sb board -->
<element name="cblack"><rect><color red="0.56" green="0.33" blue="0.12" /></rect></element>
<element name="cwhite"><rect><color red="0.84" green="0.75" blue="0.50" /></rect></element>
<element name="hlbb" defstate="0">
<text string=" "><bounds x="0" y="0" width="1" height="1" /></text>
<disk state="1">
<bounds x="0.12" y="0.12" width="0.76" height="0.76" />
<color red="0" green="0" blue="0" />
</disk>
</element>
<group name="sb_board">
<bounds x="0" y="0" width="80" height="80" />
<!-- squares (avoid seams) -->
<element ref="cwhite"><bounds x="0" y="0" width="11" height="11" /></element>
<element ref="cblack"><bounds x="10" y="0" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="20" y="0" width="11" height="11" /></element>
<element ref="cblack"><bounds x="30" y="0" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="40" y="0" width="11" height="11" /></element>
<element ref="cblack"><bounds x="50" y="0" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="60" y="0" width="11" height="11" /></element>
<element ref="cblack"><bounds x="70" y="0" width="10" height="11" /></element>
<element ref="cblack"><bounds x="0" y="10" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="10" y="10" width="11" height="11" /></element>
<element ref="cblack"><bounds x="20" y="10" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="30" y="10" width="11" height="11" /></element>
<element ref="cblack"><bounds x="40" y="10" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="50" y="10" width="11" height="11" /></element>
<element ref="cblack"><bounds x="60" y="10" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="70" y="10" width="10" height="11" /></element>
<element ref="cwhite"><bounds x="0" y="20" width="11" height="11" /></element>
<element ref="cblack"><bounds x="10" y="20" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="20" y="20" width="11" height="11" /></element>
<element ref="cblack"><bounds x="30" y="20" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="40" y="20" width="11" height="11" /></element>
<element ref="cblack"><bounds x="50" y="20" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="60" y="20" width="11" height="11" /></element>
<element ref="cblack"><bounds x="70" y="20" width="10" height="11" /></element>
<element ref="cblack"><bounds x="0" y="30" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="10" y="30" width="11" height="11" /></element>
<element ref="cblack"><bounds x="20" y="30" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="30" y="30" width="11" height="11" /></element>
<element ref="cblack"><bounds x="40" y="30" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="50" y="30" width="11" height="11" /></element>
<element ref="cblack"><bounds x="60" y="30" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="70" y="30" width="10" height="11" /></element>
<element ref="cwhite"><bounds x="0" y="40" width="11" height="11" /></element>
<element ref="cblack"><bounds x="10" y="40" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="20" y="40" width="11" height="11" /></element>
<element ref="cblack"><bounds x="30" y="40" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="40" y="40" width="11" height="11" /></element>
<element ref="cblack"><bounds x="50" y="40" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="60" y="40" width="11" height="11" /></element>
<element ref="cblack"><bounds x="70" y="40" width="10" height="11" /></element>
<element ref="cblack"><bounds x="0" y="50" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="10" y="50" width="11" height="11" /></element>
<element ref="cblack"><bounds x="20" y="50" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="30" y="50" width="11" height="11" /></element>
<element ref="cblack"><bounds x="40" y="50" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="50" y="50" width="11" height="11" /></element>
<element ref="cblack"><bounds x="60" y="50" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="70" y="50" width="10" height="11" /></element>
<element ref="cwhite"><bounds x="0" y="60" width="11" height="11" /></element>
<element ref="cblack"><bounds x="10" y="60" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="20" y="60" width="11" height="11" /></element>
<element ref="cblack"><bounds x="30" y="60" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="40" y="60" width="11" height="11" /></element>
<element ref="cblack"><bounds x="50" y="60" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="60" y="60" width="11" height="11" /></element>
<element ref="cblack"><bounds x="70" y="60" width="10" height="11" /></element>
<element ref="cblack"><bounds x="0" y="70" width="11" height="10" /></element>
<element ref="cwhite"><bounds x="10" y="70" width="11" height="10" /></element>
<element ref="cblack"><bounds x="20" y="70" width="11" height="10" /></element>
<element ref="cwhite"><bounds x="30" y="70" width="11" height="10" /></element>
<element ref="cblack"><bounds x="40" y="70" width="11" height="10" /></element>
<element ref="cwhite"><bounds x="50" y="70" width="11" height="10" /></element>
<element ref="cblack"><bounds x="60" y="70" width="11" height="10" /></element>
<element ref="cwhite"><bounds x="70" y="70" width="10" height="10" /></element>
<!-- chessboard leds -->
<repeat count="8">
<param name="x" start="8.2" increment="10" />
<param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" />
<param name="ld" start="24" increment="1" />
<param name="le" start="32" increment="1" />
<param name="lf" start="40" increment="1" />
<param name="lg" start="48" increment="1" />
<param name="lh" start="56" increment="1" />
<element name="led~la~" ref="led"><bounds x="~x~" y="78.3" width="1.5" height="1.5" /></element>
<element name="led~lb~" ref="led"><bounds x="~x~" y="68.3" width="1.5" height="1.5" /></element>
<element name="led~lc~" ref="led"><bounds x="~x~" y="58.3" width="1.5" height="1.5" /></element>
<element name="led~ld~" ref="led"><bounds x="~x~" y="48.3" width="1.5" height="1.5" /></element>
<element name="led~le~" ref="led"><bounds x="~x~" y="38.3" width="1.5" height="1.5" /></element>
<element name="led~lf~" ref="led"><bounds x="~x~" y="28.3" width="1.5" height="1.5" /></element>
<element name="led~lg~" ref="led"><bounds x="~x~" y="18.3" width="1.5" height="1.5" /></element>
<element name="led~lh~" ref="led"><bounds x="~x~" y="8.3" width="1.5" height="1.5" /></element>
</repeat>
<!-- sensors, pieces -->
<repeat count="8">
<param name="y" start="0" increment="10" />
<param name="i" start="8" increment="-1" />
<element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x01"><bounds x="0" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x02"><bounds x="10" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x04"><bounds x="20" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x08"><bounds x="30" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x10"><bounds x="40" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x20"><bounds x="50" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x40"><bounds x="60" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x80"><bounds x="70" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element name="piece_a~i~" ref="piece"><bounds x="0" y="~y~" width="10" height="10" /></element>
<element name="piece_b~i~" ref="piece"><bounds x="10" y="~y~" width="10" height="10" /></element>
<element name="piece_c~i~" ref="piece"><bounds x="20" y="~y~" width="10" height="10" /></element>
<element name="piece_d~i~" ref="piece"><bounds x="30" y="~y~" width="10" height="10" /></element>
<element name="piece_e~i~" ref="piece"><bounds x="40" y="~y~" width="10" height="10" /></element>
<element name="piece_f~i~" ref="piece"><bounds x="50" y="~y~" width="10" height="10" /></element>
<element name="piece_g~i~" ref="piece"><bounds x="60" y="~y~" width="10" height="10" /></element>
<element name="piece_h~i~" ref="piece"><bounds x="70" y="~y~" width="10" height="10" /></element>
</repeat>
</group>
<!-- sb ui -->
<element name="hlub" defstate="0">
<rect state="1"><color red="0" green="0" blue="0" /></rect>
</element>
<element name="text_uit1"><text string="S.BOARD"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_uit2"><text string="INTERFACE"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_uib1"><text string="BOARD:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_uib2">
<rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string="RESET"><color red="0.01" green="0.01" blue="0.01" /></text>
</element>
<element name="text_uib3">
<rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string="CLEAR"><color red="0.01" green="0.01" blue="0.01" /></text>
</element>
<element name="text_uis1"><text string="SPAWN:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_uih1"><text string="HAND:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_uih2">
<rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string="REMOVE"><color red="0.01" green="0.01" blue="0.01" /></text>
</element>
<element name="text_uiu1"><text string="UNDO:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_uiu2a">
<rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string=" &lt;&lt;"><color red="0.01" green="0.01" blue="0.01" /></text>
</element>
<element name="text_uiu2b">
<rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string=" &lt; "><color red="0.01" green="0.01" blue="0.01" /></text>
</element>
<element name="text_uiu2c">
<rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string=" &gt;"><color red="0.01" green="0.01" blue="0.01" /></text>
</element>
<element name="text_uiu2d">
<rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string=" &gt;&gt;"><color red="0.01" green="0.01" blue="0.01" /></text>
</element>
<element name="text_uiu3a" defstate="0">
<simplecounter maxstate="999" digits="1" align="2">
<color red="0.81" green="0.8" blue="0.79" />
</simplecounter>
</element>
<element name="text_uiu3b"><text string="/"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_uiu3c" defstate="0">
<simplecounter maxstate="999" digits="1" align="1">
<color red="0.81" green="0.8" blue="0.79" />
</simplecounter>
</element>
<group name="sb_ui">
<bounds x="0" y="0" width="10" height="80" />
<element ref="cblack"><bounds x="0" y="0" width="10" height="1" /></element>
<element ref="cblack"><bounds x="0" y="7" width="10" height="1" /></element>
<element ref="cblack"><bounds x="0" y="79" width="10" height="1" /></element>
<element ref="text_uit1"><bounds x="0" y="2" width="10" height="2" /></element>
<element ref="text_uit2"><bounds x="0" y="4" width="10" height="2" /></element>
<!-- board -->
<element ref="text_uib1"><bounds x="0" y="9" width="10" height="2" /></element>
<element ref="cwhite"><bounds x="1" y="11.5" width="8" height="2.5" /></element>
<element ref="cwhite"><bounds x="1" y="15" width="8" height="2.5" /></element>
<element ref="text_uib2"><bounds x="1.5" y="11.75" width="7" height="2" /></element>
<element ref="text_uib3"><bounds x="1.5" y="15.25" width="7" height="2" /></element>
<element ref="hlub" inputtag="board:board:UI" inputmask="0x200"><bounds x="1" y="11.5" width="8" height="2.5" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:UI" inputmask="0x100"><bounds x="1" y="15" width="8" height="2.5" /><color alpha="0.25" /></element>
<!-- spawn -->
<element ref="text_uis1"><bounds x="0" y="20.5" width="10" height="2" /></element>
<element ref="cwhite"><bounds x="1" y="23" width="8" height="12" /></element>
<element ref="cwhite"><bounds x="1" y="36" width="8" height="12" /></element>
<element name="piece_ui1" ref="piece"><bounds x="1" y="23" width="4" height="4" /></element>
<element name="piece_ui2" ref="piece"><bounds x="1" y="27" width="4" height="4" /></element>
<element name="piece_ui3" ref="piece"><bounds x="1" y="31" width="4" height="4" /></element>
<element name="piece_ui4" ref="piece"><bounds x="5" y="23" width="4" height="4" /></element>
<element name="piece_ui5" ref="piece"><bounds x="5" y="27" width="4" height="4" /></element>
<element name="piece_ui6" ref="piece"><bounds x="5" y="31" width="4" height="4" /></element>
<element name="piece_ui7" ref="piece"><bounds x="1" y="36" width="4" height="4" /></element>
<element name="piece_ui8" ref="piece"><bounds x="1" y="40" width="4" height="4" /></element>
<element name="piece_ui9" ref="piece"><bounds x="1" y="44" width="4" height="4" /></element>
<element name="piece_ui10" ref="piece"><bounds x="5" y="36" width="4" height="4" /></element>
<element name="piece_ui11" ref="piece"><bounds x="5" y="40" width="4" height="4" /></element>
<element name="piece_ui12" ref="piece"><bounds x="5" y="44" width="4" height="4" /></element>
<element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0001"><bounds x="1" y="23" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0002"><bounds x="1" y="27" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0004"><bounds x="1" y="31" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0008"><bounds x="5" y="23" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0010"><bounds x="5" y="27" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0020"><bounds x="5" y="31" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0040"><bounds x="1" y="36" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0080"><bounds x="1" y="40" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0100"><bounds x="1" y="44" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0200"><bounds x="5" y="36" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0400"><bounds x="5" y="40" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0800"><bounds x="5" y="44" width="4" height="4" /><color alpha="0.25" /></element>
<!-- hand -->
<element ref="text_uih1"><bounds x="0" y="51" width="10" height="2" /></element>
<element ref="cblack"><bounds x="1" y="53.5" width="8" height="6" /></element>
<element name="piece_ui0" ref="piece"><bounds x="2" y="53.5" width="6" height="6" /></element>
<element ref="cwhite"><bounds x="1" y="60.5" width="8" height="2.5" /></element>
<element ref="text_uih2"><bounds x="1.5" y="60.75" width="7" height="2" /></element>
<element ref="hlub" inputtag="board:board:UI" inputmask="0x08"><bounds x="1" y="60.5" width="8" height="2.5" /><color alpha="0.25" /></element>
<!-- undo -->
<element ref="text_uiu1"><bounds x="0" y="66" width="10" height="2" /></element>
<element ref="cwhite"><bounds x="1" y="68.5" width="1.7" height="6" /></element>
<element ref="cwhite"><bounds x="3.1" y="68.5" width="1.7" height="6" /></element>
<element ref="cwhite"><bounds x="5.2" y="68.5" width="1.7" height="6" /></element>
<element ref="cwhite"><bounds x="7.3" y="68.5" width="1.7" height="6" /></element>
<element ref="text_uiu2a"><bounds x="1" y="69.5" width="1.7" height="4" /></element>
<element ref="text_uiu2b"><bounds x="3.1" y="69.5" width="1.7" height="4" /></element>
<element ref="text_uiu2c"><bounds x="5.2" y="69.5" width="1.7" height="4" /></element>
<element ref="text_uiu2d"><bounds x="7.3" y="69.5" width="1.7" height="4" /></element>
<element ref="hlub" inputtag="board:board:UI" inputmask="0x10"><bounds x="1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:UI" inputmask="0x20"><bounds x="3.1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:UI" inputmask="0x40"><bounds x="5.2" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:UI" inputmask="0x80"><bounds x="7.3" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
<element name="count_ui0" ref="text_uiu3a"><bounds x="0" y="75" width="4" height="2" /></element>
<element name="count_ui1" ref="text_uiu3c"><bounds x="6" y="75" width="4" height="2" /></element>
<element ref="text_uiu3b"><bounds x="4" y="75" width="2" height="2" /></element>
</group>
<!-- lcd/button panel -->
<element name="lcdw"><rect><color red="1" green="1" blue="1" /></rect></element>
<element name="lcdm"><rect><color red="0.36" green="0.42" blue="0.42" /></rect></element>
<element name="lcda"><rect><color red="0.20" green="0.16" blue="0.17" /></rect></element>
<group name="lcd">
<element ref="lcdw"><bounds x="0" y="0" width="1" height="1" /></element>
<screen index="0"><bounds x="0.02" y="0.1" width="0.96" height="0.8" /></screen>
<element ref="lcdm" blend="multiply"><bounds x="0" y="0" width="1" height="1" /></element>
<element ref="lcda" blend="add"><bounds x="0" y="0" width="1" height="1" /></element>
</group>
<group name="panel">
<bounds left="0" right="60" top="0" bottom="14" />
<group ref="lcd"><bounds x="1" y="3" width="24.5" height="6.5" /></group>
<element ref="text_p6"> <bounds x="30.25" y="5.55" width="2" height="2" /></element>
<element ref="text_p5"> <bounds x="35.25" y="5.55" width="2" height="2" /></element>
<element ref="text_p4"> <bounds x="40.25" y="5.55" width="2" height="2" /></element>
<element ref="text_p3"> <bounds x="45.25" y="5.55" width="2" height="2" /></element>
<element ref="text_p2"> <bounds x="50.25" y="5.55" width="2" height="2" /></element>
<element ref="text_p1"> <bounds x="55.25" y="5.55" width="2" height="2" /></element>
<element ref="yellow_mask" blend="multiply"><bounds x="30" y="5.51" width="28" height="2.2" /></element>
<element ref="text_lcd"><bounds x="1" y="0.5" width="24.5" height="1.5" /></element>
<element name="led100" ref="led"> <bounds x="29.1" y="1" width="1.3" height="1.3" /> </element>
<element name="led101" ref="led"> <bounds x="34.1" y="1" width="1.3" height="1.3" /> </element>
<element name="led102" ref="led"> <bounds x="39.1" y="1" width="1.3" height="1.3" /> </element>
<element name="led103" ref="led"> <bounds x="44.1" y="1" width="1.3" height="1.3" /> </element>
<element name="led104" ref="led"> <bounds x="49.1" y="1" width="1.3" height="1.3" /> </element>
<element name="led105" ref="led"> <bounds x="54.1" y="1" width="1.3" height="1.3" /> </element>
<element ref="text_trn"> <bounds x="30.5" y="1" width="2.5" height="1.2" /> </element>
<element ref="text_info"> <bounds x="35.5" y="1" width="2.5" height="1.2" /> </element>
<element ref="text_mem"> <bounds x="40.5" y="1" width="2.5" height="1.2" /> </element>
<element ref="text_pos"> <bounds x="45.5" y="1" width="2.5" height="1.2" /> </element>
<element ref="text_lev"> <bounds x="50.5" y="1" width="2.5" height="1.2" /> </element>
<element ref="text_fct"> <bounds x="55.5" y="1" width="2.5" height="1.2" /> </element>
<element ref="text_ent"> <bounds x="49.5" y="8" width="3.5" height="1.2" /> </element>
<element ref="text_cl"> <bounds x="54.5" y="8" width="3.5" height="1.3" /> </element>
<element ref="yellow_mask"><bounds x="52.5" y="8.5" width="2.5" height="0.1" /></element>
<element ref="yellow_mask"><bounds x="51.2" y="9.25" width="0.1" height="0.5" /></element>
<element ref="yellow_mask"><bounds x="56.2" y="9.25" width="0.1" height="0.5" /></element>
<element ref="hlb" inputtag="KEY" inputmask="0x01"> <bounds x="29.5" y="3" width="3.5" height="2.5" /> </element>
<element ref="hlb" inputtag="KEY" inputmask="0x02"> <bounds x="34.5" y="3" width="3.5" height="2.5" /> </element>
<element ref="hlb" inputtag="KEY" inputmask="0x04"> <bounds x="39.5" y="3" width="3.5" height="2.5" /> </element>
<element ref="hlb" inputtag="KEY" inputmask="0x08"> <bounds x="44.5" y="3" width="3.5" height="2.5" /> </element>
<element ref="hlb" inputtag="KEY" inputmask="0x10"> <bounds x="49.5" y="3" width="3.5" height="2.5" /> </element>
<element ref="hlb" inputtag="KEY" inputmask="0x20"> <bounds x="54.5" y="3" width="3.5" height="2.5" /> </element>
<element ref="hlb" inputtag="KEY" inputmask="0x40"> <bounds x="49.5" y="10" width="3.5" height="2.5" /> </element>
<element ref="hlb" inputtag="KEY" inputmask="0x80"> <bounds x="54.5" y="10" width="3.5" height="2.5" /> </element>
</group>
<!-- build screen -->
<view name="Internal Layout">
<bounds left="0" right="102" top="-2" bottom="101.5" />
<element ref="cblack"><bounds x="13" y="-2" width="89" height="89" /></element>
<element ref="cwhite"><bounds x="17" y="2" width="81" height="81" /></element>
<!-- chessboard coords -->
<element ref="text_8"><bounds x="14.2" y="6.5" width="2" height="2" /></element>
<element ref="text_7"><bounds x="14.2" y="16.5" width="2" height="2" /></element>
<element ref="text_6"><bounds x="14.2" y="26.5" width="2" height="2" /></element>
<element ref="text_5"><bounds x="14.2" y="36.5" width="2" height="2" /></element>
<element ref="text_4"><bounds x="14.2" y="46.5" width="2" height="2" /></element>
<element ref="text_3"><bounds x="14.2" y="56.5" width="2" height="2" /></element>
<element ref="text_2"><bounds x="14.2" y="66.5" width="2" height="2" /></element>
<element ref="text_1"><bounds x="14.2" y="76.5" width="2" height="2" /></element>
<element ref="text_a"><bounds x="21.5" y="84" width="2" height="2" /></element>
<element ref="text_b"><bounds x="31.5" y="84" width="2" height="2" /></element>
<element ref="text_c"><bounds x="41.5" y="84" width="2" height="2" /></element>
<element ref="text_d"><bounds x="51.5" y="84" width="2" height="2" /></element>
<element ref="text_e"><bounds x="61.5" y="84" width="2" height="2" /></element>
<element ref="text_f"><bounds x="71.5" y="84" width="2" height="2" /></element>
<element ref="text_g"><bounds x="81.5" y="84" width="2" height="2" /></element>
<element ref="text_h"><bounds x="91.5" y="84" width="2" height="2" /></element>
<!-- LCD panel -->
<group ref="panel"><bounds x="40" y="87.5" width="60" height="14" /></group>
<group ref="sb_board"><bounds x="17.5" y="2.5" width="80" height="80" /></group>
<group ref="sb_ui"><bounds x="1.5" y="3" width="10" height="80" /></group>
</view>
</mamelayout>

View File

@ -22720,6 +22720,11 @@ roma16 // Roma
roma16a // Roma roma16a // Roma
roma32 // Roma roma32 // Roma
@source:mephisto_milano.cpp
milano // 1991 Mephisto Milano
milanoa // 1991 Mephisto Milano
nshort // 1993 Mephisto Nigel Short
@source:mephisto_mm1.cpp @source:mephisto_mm1.cpp
mm1 mm1
mm1b mm1b
@ -22798,11 +22803,10 @@ polgar // 1990 Mephisto Polgar
polgara // 1989 Mephisto Polgar polgara // 1989 Mephisto Polgar
polgar10 // 1990 Mephisto Polgar 10MHz polgar10 // 1990 Mephisto Polgar 10MHz
polgar101 // 1990 Mephisto Polgar 10MHz polgar101 // 1990 Mephisto Polgar 10MHz
@source:mephisto_risc.cpp
mrisc // 1992 Mephisto RISC 1MB mrisc // 1992 Mephisto RISC 1MB
mrisc2 // 1994 Mephisto RISC II mrisc2 // 1994 Mephisto RISC II
milano // 1991 Mephisto Milano
milanoa // 1991 Mephisto Milano
nshort // 1993 Mephisto Nigel Short
@source:mephistp.cpp @source:mephistp.cpp
mephistp // mephistp //

View File

@ -578,6 +578,7 @@ mephisto_academy.cpp
mephisto_berlin.cpp mephisto_berlin.cpp
mephisto_brikett.cpp mephisto_brikett.cpp
mephisto_glasgow.cpp mephisto_glasgow.cpp
mephisto_milano.cpp
mephisto_mm1.cpp mephisto_mm1.cpp
mephisto_mm2.cpp mephisto_mm2.cpp
mephisto_modena.cpp mephisto_modena.cpp
@ -587,6 +588,7 @@ mephisto_mondial.cpp
mephisto_mondial68k.cpp mephisto_mondial68k.cpp
mephisto_montec.cpp mephisto_montec.cpp
mephisto_polgar.cpp mephisto_polgar.cpp
mephisto_risc.cpp
meritum.cpp meritum.cpp
mes.cpp mes.cpp
mfabfz.cpp mfabfz.cpp

View File

@ -31,6 +31,7 @@ public:
void latch_w(uint8_t data); void latch_w(uint8_t data);
void io_w(uint8_t data); void io_w(uint8_t data);
u8 io_r() { return m_ctrl; }
protected: protected:
// device-level overrides // device-level overrides