summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2017-12-17 11:22:07 +0100
committer hap <happppp@users.noreply.github.com>2017-12-17 11:22:26 +0100
commitb3428ef5056082ff3725c531b2286158fc87385d (patch)
treef5b039ff76f505464fa1480e6980470552c875dd /src
parentd818fd5eab9dda0138de5fa9661e0a5da04bbc39 (diff)
New working machines
----------- Chess King Master [hap, Berger]
Diffstat (limited to 'src')
-rw-r--r--src/mame/drivers/ckz80.cpp117
-rw-r--r--src/mame/layout/ck_master.lay303
2 files changed, 390 insertions, 30 deletions
diff --git a/src/mame/drivers/ckz80.cpp b/src/mame/drivers/ckz80.cpp
index 98155c6073d..5c7459d85b4 100644
--- a/src/mame/drivers/ckz80.cpp
+++ b/src/mame/drivers/ckz80.cpp
@@ -11,18 +11,24 @@
such as Arena(in editmode).
TODO:
- - x
+ - ckmaster 1 WAIT CLK per M1, workaround with z80_set_cycle_tables is possible
+ (wait state is similar to MSX) but I can't be bothered, better solution
+ is to add M1 pin to the z80 core. Until then, it'll run ~20% too fast.
******************************************************************************
Master:
-- x
+- Z80 CPU(NEC D780C-1) @ 4MHz(8MHz XTAL), IRQ from 555 timer
+- 8KB ROM(NEC D2764C-3), 2KB RAM(NEC D4016C)
+- simple I/O via 2*74373 and a 74145
+- 8*8 chessboard buttons, 32+1 border leds, piezo
******************************************************************************/
#include "emu.h"
#include "cpu/z80/z80.h"
#include "machine/timer.h"
+#include "machine/bankdev.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
#include "speaker.h"
@@ -38,6 +44,7 @@ public:
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_dac(*this, "dac"),
+ m_master_map(*this, "master_map"),
m_inp_matrix(*this, "IN.%u", 0),
m_out_x(*this, "%u.%u", 0U, 0U),
m_out_a(*this, "%u.a", 0U),
@@ -49,7 +56,8 @@ public:
// devices/pointers
required_device<cpu_device> m_maincpu;
- required_device<dac_bit_interface> m_dac;
+ required_device<dac_2bit_binary_weighted_ones_complement_device> m_dac;
+ optional_device<address_map_bank_device> m_master_map;
optional_ioport_array<10> m_inp_matrix; // max 10
output_finder<0x20, 0x20> m_out_x;
output_finder<0x20> m_out_a;
@@ -80,8 +88,11 @@ public:
void display_matrix(int maxx, int maxy, u32 setx, u32 sety, bool update = true);
// Master
- //DECLARE_READ8_MEMBER(master_input_r);
+ DECLARE_READ8_MEMBER(master_input_r);
+ DECLARE_WRITE8_MEMBER(master_control_w);
DECLARE_DRIVER_INIT(master);
+ DECLARE_READ8_MEMBER(master_trampoline_r);
+ DECLARE_WRITE8_MEMBER(master_trampoline_w);
protected:
virtual void machine_start() override;
@@ -220,6 +231,26 @@ u16 ckz80_state::read_inputs(int columns)
// TTL/generic
+WRITE8_MEMBER(ckz80_state::master_control_w)
+{
+ // d0-d3: 74145 A-D
+ // 74145 0-9: input mux, led select
+ u16 sel = 1 << (data & 0xf) & 0x3ff;
+ m_inp_mux = sel;
+
+ // d4,d5: led data
+ display_matrix(2, 9, data >> 4 & 3, sel & 0x1ff);
+
+ // d6,d7: speaker +/-
+ m_dac->write(data >> 6 & 3);
+}
+
+READ8_MEMBER(ckz80_state::master_input_r)
+{
+ // d0-d7: multiplexed inputs (active low)
+ return ~read_inputs(10);
+}
+
DRIVER_INIT_MEMBER(ckz80_state, master)
{
u8 *rom = memregion("maincpu")->base();
@@ -237,6 +268,7 @@ DRIVER_INIT_MEMBER(ckz80_state, master)
}
+
/******************************************************************************
Address Maps
******************************************************************************/
@@ -244,8 +276,35 @@ DRIVER_INIT_MEMBER(ckz80_state, master)
// Master
static ADDRESS_MAP_START( master_map, AS_PROGRAM, 8, ckz80_state )
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
+ AM_RANGE(0x0000, 0x1fff) AM_MIRROR(0x6000) AM_ROM AM_REGION("maincpu", 0) // _A15
+ AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1fff) AM_READWRITE(master_input_r, master_control_w) // A13
+ AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x3800) AM_RAM // A14
+ADDRESS_MAP_END
+
+// PCB design is prone to bus conflicts, but should be fine if software obeys
+WRITE8_MEMBER(ckz80_state::master_trampoline_w)
+{
+ if (offset & 0x2000)
+ m_master_map->write8(space, (offset & 0x3fff) | 0x8000, data);
+ if (offset & 0x4000)
+ m_master_map->write8(space, (offset & 0x7fff) | 0x8000, data);
+}
+
+READ8_MEMBER(ckz80_state::master_trampoline_r)
+{
+ u8 data = 0xff;
+ if (~offset & 0x8000)
+ data &= m_master_map->read8(space, offset);
+ if (offset & 0x2000)
+ data &= m_master_map->read8(space, (offset & 0x3fff) | 0x8000);
+ if (offset & 0x4000)
+ data &= m_master_map->read8(space, (offset & 0x7fff) | 0x8000);
+
+ return data;
+}
+
+static ADDRESS_MAP_START( master_trampoline, AS_PROGRAM, 8, ckz80_state )
+ AM_RANGE(0x0000, 0xffff) AM_READWRITE(master_trampoline_r, master_trampoline_w)
ADDRESS_MAP_END
@@ -341,24 +400,24 @@ static INPUT_PORTS_START( master )
PORT_INCLUDE( cb_buttons )
PORT_START("IN.8")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Black")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_NAME("King")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_NAME("Queen")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_NAME("Rook")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("Bishop")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Knight")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("Pawn")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_NAME("White")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_NAME("Change Position")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_NAME("Clear Board")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_NAME("New Game")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_NAME("Take Back")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_NAME("King")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_NAME("Queen")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_NAME("Rook")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_START("IN.9")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_NAME("Set up")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("New Game")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_U) PORT_NAME("Take Back")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) PORT_NAME("Forward")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_NAME("Hint")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_I) PORT_NAME("Move")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_NAME("Level")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_NAME("Sound")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_NAME("Bishop")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_9) PORT_NAME("Knight")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_0) PORT_NAME("Pawn")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("White")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("Black")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Move")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("Level")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Sound")
INPUT_PORTS_END
@@ -371,19 +430,25 @@ static MACHINE_CONFIG_START( master )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, XTAL_8MHz/2)
- MCFG_CPU_PROGRAM_MAP(master_map)
+ MCFG_CPU_PROGRAM_MAP(master_trampoline)
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", ckz80_state, irq_on, attotime::from_hz(429)) // theoretical frequency from 555 timer (22nF, 150K, 1K5), measurement was 418Hz
MCFG_TIMER_START_DELAY(attotime::from_hz(429) - attotime::from_nsec(22870)) // active for 22.87us
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", ckz80_state, irq_off, attotime::from_hz(429))
+ MCFG_DEVICE_ADD("master_map", ADDRESS_MAP_BANK, 0)
+ MCFG_DEVICE_PROGRAM_MAP(master_map)
+ MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
+ MCFG_ADDRESS_MAP_BANK_DATA_WIDTH(8)
+ MCFG_ADDRESS_MAP_BANK_ADDR_WIDTH(16)
+
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", ckz80_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_ck_master)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("speaker")
- MCFG_SOUND_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
+ MCFG_SOUND_ADD("dac", DAC_2BIT_BINARY_WEIGHTED_ONES_COMPLEMENT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT)
+ MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END
@@ -394,7 +459,7 @@ MACHINE_CONFIG_END
ROM_START( ckmaster )
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("ckmaster.bin", 0x0000, 0x2000, CRC(59cbec9e) SHA1(2e0629e65778da62bed857406b91a334698d2fe8) ) // D2764C, no label
+ ROM_LOAD("ckmaster.ic2", 0x0000, 0x2000, CRC(59cbec9e) SHA1(2e0629e65778da62bed857406b91a334698d2fe8) ) // D2764C, no label
ROM_END
diff --git a/src/mame/layout/ck_master.lay b/src/mame/layout/ck_master.lay
index 9d3e4d2766a..1b16de82f8a 100644
--- a/src/mame/layout/ck_master.lay
+++ b/src/mame/layout/ck_master.lay
@@ -4,17 +4,312 @@
<!-- define elements -->
<element name="led" defstate="0">
- <disk state="0"><color red="0.2" green="0.04" blue="0.046" /></disk>
- <disk state="1"><color red="1.0" green="0.2" blue="0.23" /></disk>
+ <disk state="1"><color red="1.0" green="0.1" blue="0.15" /></disk>
+ <disk state="0"><color red="0.1" green="0.01" blue="0.015" /></disk>
+ </element>
+ <element name="ledg" defstate="0">
+ <disk state="1"><color red="0.15" green="1.0" blue="0.1" /></disk>
+ <disk state="0"><color red="0.015" green="0.1" blue="0.01" /></disk>
+ </element>
+
+ <element name="hl" defstate="0">
+ <text string=" ">
+ <bounds x="0.0" y="0.0" width="1.0" height="1.0" />
+ <color red="0.0" green="0.0" blue="0.0" />
+ </text>
+ <disk state="1">
+ <bounds x="0.12" y="0.12" width="0.76" height="0.76" />
+ <color red="1.0" green="1.0" blue="1.0" />
+ </disk>
+ </element>
+ <element name="hlb" defstate="0">
+ <text string=" ">
+ <bounds x="0.0" y="0.0" width="1.0" height="1.0" />
+ <color red="0.0" green="0.0" blue="0.0" />
+ </text>
+ <rect state="1">
+ <bounds x="0.0" y="0.0" width="1.0" height="1.0" />
+ <color red="1.0" green="1.0" blue="1.0" />
+ </rect>
+ </element>
+
+ <element name="black"><rect><color red="0.17" green="0.15" blue="0.15" /></rect></element>
+ <element name="white"><rect><color red="0.81" green="0.8" blue="0.79" /></rect></element>
+
+ <element name="text_l1">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="CHANGE POSITION"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_l2">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="CLEAR BOARD"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_l3">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="NEW GAME"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_l4">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="TAKE BACK"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_l13">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="MOVE"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_l14">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="LEVEL"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_l15">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="SOUND"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+
+ <element name="text_king">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="&#x2654;"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_queen">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="&#x2655;"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_rook">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="&#x2656;"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_bishop">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="&#x2657;"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_knight">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="&#x2658;"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_pawn">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="&#x2659;"><color red="0.17" green="0.15" blue="0.15" /></text>
</element>
<!-- build screen -->
<view name="Internal Layout">
- <bounds left="0" right="100" top="0" bottom="100" />
+ <bounds left="-2.5" right="106.5" top="-2.5" bottom="88.5" />
+
+ <!-- chessboard leds -->
+
+ <bezel name="0.0" element="led"><bounds x="-1" y="7.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.0" element="led"><bounds x="-1" y="17.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="2.0" element="led"><bounds x="-1" y="27.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="3.0" element="led"><bounds x="-1" y="37.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="4.0" element="led"><bounds x="-1" y="47.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.0" element="led"><bounds x="-1" y="57.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.0" element="led"><bounds x="-1" y="67.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.0" element="led"><bounds x="-1" y="77.25" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="0.0" element="led"><bounds x="85.5" y="7.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.0" element="led"><bounds x="85.5" y="17.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="2.0" element="led"><bounds x="85.5" y="27.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="3.0" element="led"><bounds x="85.5" y="37.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="4.0" element="led"><bounds x="85.5" y="47.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.0" element="led"><bounds x="85.5" y="57.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.0" element="led"><bounds x="85.5" y="67.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.0" element="led"><bounds x="85.5" y="77.25" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="0.1" element="led"><bounds x="7.25" y="-1" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.1" element="led"><bounds x="17.25" y="-1" width="1.5" height="1.5" /></bezel>
+ <bezel name="2.1" element="led"><bounds x="27.25" y="-1" width="1.5" height="1.5" /></bezel>
+ <bezel name="3.1" element="led"><bounds x="37.25" y="-1" width="1.5" height="1.5" /></bezel>
+ <bezel name="4.1" element="led"><bounds x="47.25" y="-1" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.1" element="led"><bounds x="57.25" y="-1" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.1" element="led"><bounds x="67.25" y="-1" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.1" element="led"><bounds x="77.25" y="-1" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="0.1" element="led"><bounds x="7.25" y="85.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.1" element="led"><bounds x="17.25" y="85.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="2.1" element="led"><bounds x="27.25" y="85.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="3.1" element="led"><bounds x="37.25" y="85.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="4.1" element="led"><bounds x="47.25" y="85.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.1" element="led"><bounds x="57.25" y="85.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.1" element="led"><bounds x="67.25" y="85.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.1" element="led"><bounds x="77.25" y="85.5" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="8.1" element="ledg"><bounds x="85.5" y="3.5" width="1.5" height="1.5" /></bezel>
+
+ <!-- chessboard bezel -->
+
+ <bezel element="black"><bounds x="2" y="2" width="82" height="82" /></bezel>
+ <bezel element="white"><bounds x="3" y="3" width="80" height="80" /></bezel>
+
+ <bezel element="black"><bounds x="13" y="2.5" width="10" height="10.5" /></bezel>
+ <bezel element="black"><bounds x="33" y="2.5" width="10" height="10.5" /></bezel>
+ <bezel element="black"><bounds x="53" y="2.5" width="10" height="10.5" /></bezel>
+ <bezel element="black"><bounds x="73" y="2.5" width="10.5" height="10.5" /></bezel>
+
+ <bezel element="black"><bounds x="2.5" y="13" width="10.5" height="10" /></bezel>
+ <bezel element="black"><bounds x="23" y="13" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="43" y="13" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="63" y="13" width="10" height="10" /></bezel>
+
+ <bezel element="black"><bounds x="13" y="23" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="33" y="23" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="53" y="23" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="73" y="23" width="10.5" height="10" /></bezel>
+
+ <bezel element="black"><bounds x="2.5" y="33" width="10.5" height="10" /></bezel>
+ <bezel element="black"><bounds x="23" y="33" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="43" y="33" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="63" y="33" width="10" height="10" /></bezel>
+
+ <bezel element="black"><bounds x="13" y="43" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="33" y="43" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="53" y="43" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="73" y="43" width="10.5" height="10" /></bezel>
+
+ <bezel element="black"><bounds x="2.5" y="53" width="10.5" height="10" /></bezel>
+ <bezel element="black"><bounds x="23" y="53" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="43" y="53" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="63" y="53" width="10" height="10" /></bezel>
+
+ <bezel element="black"><bounds x="13" y="63" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="33" y="63" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="53" y="63" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="73" y="63" width="10.5" height="10" /></bezel>
+
+ <bezel element="black"><bounds x="2.5" y="73" width="10.5" height="10.5" /></bezel>
+ <bezel element="black"><bounds x="23" y="73" width="10" height="10.5" /></bezel>
+ <bezel element="black"><bounds x="43" y="73" width="10" height="10.5" /></bezel>
+ <bezel element="black"><bounds x="63" y="73" width="10" height="10.5" /></bezel>
+
+ <!-- chessboard sensors -->
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x01"><bounds x="3" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x01"><bounds x="13" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x01"><bounds x="23" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x01"><bounds x="33" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x01"><bounds x="43" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x01"><bounds x="53" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x01"><bounds x="63" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x01"><bounds x="73" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x02"><bounds x="3" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x02"><bounds x="13" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x02"><bounds x="23" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x02"><bounds x="33" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x02"><bounds x="43" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x02"><bounds x="53" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x02"><bounds x="63" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x02"><bounds x="73" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x04"><bounds x="3" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x04"><bounds x="13" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x04"><bounds x="23" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x04"><bounds x="33" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x04"><bounds x="43" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x04"><bounds x="53" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x04"><bounds x="63" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x04"><bounds x="73" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x08"><bounds x="3" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x08"><bounds x="13" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x08"><bounds x="23" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x08"><bounds x="33" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x08"><bounds x="43" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x08"><bounds x="53" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x08"><bounds x="63" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x08"><bounds x="73" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x10"><bounds x="3" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x10"><bounds x="13" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x10"><bounds x="23" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x10"><bounds x="33" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x10"><bounds x="43" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x10"><bounds x="53" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x10"><bounds x="63" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x10"><bounds x="73" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x20"><bounds x="3" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x20"><bounds x="13" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x20"><bounds x="23" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x20"><bounds x="33" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x20"><bounds x="43" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x20"><bounds x="53" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x20"><bounds x="63" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x20"><bounds x="73" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x40"><bounds x="3" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x40"><bounds x="13" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x40"><bounds x="23" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x40"><bounds x="33" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x40"><bounds x="43" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x40"><bounds x="53" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x40"><bounds x="63" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x40"><bounds x="73" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x80"><bounds x="3" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x80"><bounds x="13" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x80"><bounds x="23" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x80"><bounds x="33" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x80"><bounds x="43" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x80"><bounds x="53" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x80"><bounds x="63" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x80"><bounds x="73" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <!-- right side -->
+
+ <bezel element="white"><bounds x="88.5" y="-2.5" width="18" height="91" /></bezel>
+ <bezel element="black"><bounds x="90.666" y="2.833" width="13.666" height="80.333" /></bezel>
+
+ <bezel element="white"><bounds x="91" y="3.166" width="13" height="5" /></bezel>
+ <bezel element="white"><bounds x="91" y="8.500" width="13" height="5" /></bezel>
+ <bezel element="white"><bounds x="91" y="13.833" width="13" height="5" /></bezel>
+ <bezel element="white"><bounds x="91" y="19.166" width="13" height="5" /></bezel>
+ <bezel element="white"><bounds x="91" y="24.500" width="13" height="5" /></bezel>
+ <bezel element="white"><bounds x="91" y="29.833" width="13" height="5" /></bezel>
+ <bezel element="white"><bounds x="91" y="35.166" width="13" height="5" /></bezel>
+ <bezel element="white"><bounds x="91" y="40.500" width="13" height="5" /></bezel>
+ <bezel element="white"><bounds x="91" y="45.833" width="13" height="5" /></bezel>
+ <bezel element="white"><bounds x="91" y="51.166" width="13" height="5" /></bezel>
+ <bezel element="white"><bounds x="91" y="56.500" width="13" height="5" /></bezel>
+ <bezel element="white"><bounds x="91" y="61.833" width="13" height="5" /></bezel>
+ <bezel element="white"><bounds x="91" y="67.166" width="13" height="5" /></bezel>
+ <bezel element="white"><bounds x="91" y="72.500" width="13" height="5" /></bezel>
+ <bezel element="white"><bounds x="91" y="77.833" width="13" height="5" /></bezel>
+
+ <bezel element="text_l1"><bounds x="91.4" y="4.916" width="12.5" height="1.5" /></bezel>
+ <bezel element="text_l2"><bounds x="91.4" y="10.250" width="12.5" height="1.5" /></bezel>
+ <bezel element="text_l3"><bounds x="91.4" y="15.583" width="12.5" height="1.5" /></bezel>
+ <bezel element="text_l4"><bounds x="91.4" y="20.916" width="12.5" height="1.5" /></bezel>
+ <bezel element="text_l13"><bounds x="91.4" y="68.916" width="12.5" height="1.5" /></bezel>
+ <bezel element="text_l14"><bounds x="91.4" y="74.250" width="12.5" height="1.5" /></bezel>
+ <bezel element="text_l15"><bounds x="91.4" y="79.583" width="12.5" height="1.5" /></bezel>
+
+ <bezel element="text_king"><bounds x="91.4" y="24.500" width="12.5" height="5" /></bezel>
+ <bezel element="text_queen"><bounds x="91.4" y="29.833" width="12.5" height="5" /></bezel>
+ <bezel element="text_rook"><bounds x="91.4" y="35.166" width="12.5" height="5" /></bezel>
+ <bezel element="text_bishop"><bounds x="91.4" y="40.500" width="12.5" height="5" /></bezel>
+ <bezel element="text_knight"><bounds x="91.4" y="45.833" width="12.5" height="5" /></bezel>
+ <bezel element="text_pawn"><bounds x="91.4" y="51.166" width="12.5" height="5" /></bezel>
+
+ <bezel element="black"><bounds x="96.25" y="57.75" width="2.5" height="2.5" /></bezel>
+ <bezel element="white"><bounds x="96.5" y="58" width="2.0" height="2.0" /></bezel>
+ <bezel element="black"><bounds x="96.25" y="63.083" width="2.5" height="2.5" /></bezel>
- <bezel name="0.0" element="led"><bounds x="1" y="1" width="1" height="1" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x01"><bounds x="91" y="3.166" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x02"><bounds x="91" y="8.500" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x04"><bounds x="91" y="13.833" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x08"><bounds x="91" y="19.166" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x10"><bounds x="91" y="24.500" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x20"><bounds x="91" y="29.833" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x40"><bounds x="91" y="35.166" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.9" inputmask="0x01"><bounds x="91" y="40.500" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.9" inputmask="0x02"><bounds x="91" y="45.833" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.9" inputmask="0x04"><bounds x="91" y="51.166" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.9" inputmask="0x08"><bounds x="91" y="56.500" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.9" inputmask="0x10"><bounds x="91" y="61.833" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.9" inputmask="0x20"><bounds x="91" y="67.166" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.9" inputmask="0x40"><bounds x="91" y="72.500" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.9" inputmask="0x80"><bounds x="91" y="77.833" width="13" height="5" /><color alpha="0.4" /></bezel>
</view>
</mamelayout>