ctk-530: New working machine (#10445)

New working machine
--------------------
Casio CTK-530 [Devin Acker]
This commit is contained in:
Devin Acker 2022-10-19 07:08:24 -04:00 committed by GitHub
parent 0e4fe13abf
commit 9f4d3ddfe6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 592 additions and 15 deletions

View File

@ -50,6 +50,12 @@ void gt913_device::map(address_map &map)
map(0x0000, 0x7fff).rom();
map(0x8000, 0xbfff).rw(FUNC(gt913_device::data_r), FUNC(gt913_device::data_w));
map(0xc000, 0xf7ff).rom();
/* ctk530 writes here to latch LED matrix data, which generates an active high strobe on pin 99 (PLE/P16)
there's otherwise no external address decoding (or the usual read/write strobes) used for the LED latches.
just treat as a 16-bit write-only port for now */
map(0xe000, 0xe001).lw16(NAME([this](uint16_t data) { io.write_word(h8_device::PORT_4, data); }));
map(0xfac0, 0xffbf).ram();
/* ffc0-ffcb: sound */

View File

@ -37,6 +37,31 @@
is supposed to trigger a NMI which updates the RAM checksum, but the NMI handler
always proceeds to fully start up the system as if the power is being turned on
-------------------------------------------------------------------------------
CTK-530/540 (1995)
Main board (JCM460-MA1M):
LSI101: CPU (Casio/NEC uPD912GF)
LSI102: 8Mbit ROM (Macronix MX23C8100PC-12)
IC103: stereo DAC (NEC uPD6379GR)
X301: 20MHz crystal
Service manual with schematics, pinouts, etc.:
https://revenant1.net/casio/manuals/upd91x/ctk530.pdf
To access the test mode (not mentioned in the service manual):
Hold the keypad 0 button while turning on the keyboard, then release the button.
"TST" will appear on the LCD. Afterwards, press one of these buttons:
- Keypad 0: switch test (press all front panel buttons in each column, top to bottom and left to right)
- Keypad 1: key test
- Keypad 2: ROM test
- Keypad 4/5/6: sound volume test
- Keypad 7/8: stereo test
- Keypad 9: MIDI loopback test
- Keypad +: LED/display test
- Mode: power off
-------------------------------------------------------------------------------
General MIDI modules (1996)
@ -123,6 +148,10 @@
Adds velocity-sensitive keys
- CTK-551, CTK-558, Radio Shack MD-1160 (2000)
Adds pitch wheel and different selection of demo songs
- CT-588 (2001)
Chinese localized version of CTK-541
- CT-688 (2001)
Chinese localized version of CTK-551
Main board (JCM453-MA1M / JCM456-MA1M):
LSI1: CPU (Casio GT913F)
@ -160,11 +189,13 @@
#include "cpu/h8/gt913.h"
#include "machine/nvram.h"
#include "video/hd44780.h"
#include "video/pwm.h"
#include "emupal.h"
#include "screen.h"
#include "speaker.h"
#include "ap10.lh"
#include "ctk530.lh"
namespace {
@ -174,6 +205,7 @@ public:
ctk551_state(machine_config const &mconfig, device_type type, char const *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_pwm(*this, "pwm")
, m_lcdc(*this, "lcdc")
, m_inputs(*this, "IN%u", 0U)
, m_outputs(*this, "%02x.%d.%d", 0U, 0U, 0U)
@ -184,14 +216,21 @@ public:
}
void ap10(machine_config& config);
void ctk530(machine_config& config);
void gz70sp(machine_config& config);
void ctk601(machine_config& config);
void ctk551(machine_config &config);
void init_ap10();
void init_ctk530();
void init_gz70sp();
DECLARE_CUSTOM_INPUT_MEMBER(lcd_r) { return m_lcdc->db_r() >> 4; }
TIMER_CALLBACK_MEMBER(nmi_clear) { m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); }
DECLARE_WRITE_LINE_MEMBER(pwm_row_w) { m_pwm->write_my(state); }
DECLARE_WRITE_LINE_MEMBER(pwm_col_w) { m_pwm->write_mx(state ^ 0xff); }
DECLARE_CUSTOM_INPUT_MEMBER(lcd_r) { return m_lcdc->db_r() >> 4; }
DECLARE_WRITE_LINE_MEMBER(lcd_w)
{
m_lcd_data = state << 4;
@ -230,19 +269,23 @@ public:
private:
void ap10_map(address_map& map);
void ctk530_map(address_map& map);
void gz70sp_map(address_map& map);
void ctk601_map(address_map& map);
void ctk551_map(address_map& map);
void ap10_io_map(address_map& map);
void ctk530_io_map(address_map& map);
void gz70sp_io_map(address_map& map);
void ctk551_io_map(address_map &map);
virtual void driver_start() override;
required_device<gt913_device> m_maincpu;
optional_device<pwm_display_device> m_pwm;
optional_device<hd44780_device> m_lcdc;
emu_timer* m_nmi_timer = nullptr;
optional_ioport_array<4> m_inputs;
output_finder<64, 8, 5> m_outputs;
@ -267,7 +310,17 @@ INPUT_CHANGED_MEMBER(ctk551_state::switch_w)
INPUT_CHANGED_MEMBER(ctk551_state::power_w)
{
m_maincpu->set_input_line(INPUT_LINE_NMI, newval ? ASSERT_LINE : CLEAR_LINE);
if (newval)
{
m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
m_nmi_timer->adjust(attotime::never);
}
else
{
// give the CPU enough time to switch NMI to active-high so it fires again
// otherwise, releasing the power button too quickly may be ignored
m_nmi_timer->adjust(attotime::from_msec(100));
}
}
INPUT_CHANGED_MEMBER(ctk551_state::switch_power_w)
@ -315,8 +368,13 @@ WRITE_LINE_MEMBER(ctk551_state::apo_w)
logerror("apo_w: %x\n", state);
/* auto power off - disable the LCD and speakers
the CPU will go to sleep until the power switch triggers a NMI */
if (!state && m_lcdc.found())
m_lcdc->reset();
if (!state)
{
if (m_pwm.found())
m_pwm->clear();
if (m_lcdc.found())
m_lcdc->reset();
}
m_led_power = state;
m_maincpu->set_output_gain(ALL_OUTPUTS, state ? 1.0 : 0.0);
}
@ -350,6 +408,11 @@ void ctk551_state::ap10_map(address_map& map)
map(0x380003, 0x380003).w(FUNC(ctk551_state::led_console_w));
}
void ctk551_state::ctk530_map(address_map& map)
{
map(0x000000, 0x0fffff).rom().region("maincpu", 0).mirror(0x100000);
}
void ctk551_state::gz70sp_map(address_map& map)
{
map(0x000000, 0x1fffff).rom().region("maincpu", 0);
@ -368,15 +431,18 @@ void ctk551_state::ctk601_map(address_map& map)
map(0x380002, 0x380003).portr("PB").portw("PA").umask16(0x00ff);
}
void ctk551_state::ctk551_map(address_map& map)
{
map(0x000000, 0x0fffff).rom().region("maincpu", 0).mirror(0x100000);
}
void ctk551_state::ap10_io_map(address_map& map)
{
map(h8_device::PORT_1, h8_device::PORT_1).portrw("P1").umask16(0x00ff);
map(h8_device::PORT_2, h8_device::PORT_4).noprw();
map(h8_device::ADC_0, h8_device::ADC_1).nopr();
}
void ctk551_state::ctk530_io_map(address_map& map)
{
map(h8_device::PORT_1, h8_device::PORT_1).portrw("P1").umask16(0x00ff);
map(h8_device::PORT_2, h8_device::PORT_3).noprw();
map(h8_device::PORT_4, h8_device::PORT_4).portw("PLE");
map(h8_device::ADC_0, h8_device::ADC_1).nopr();
}
@ -384,7 +450,7 @@ void ctk551_state::gz70sp_io_map(address_map& map)
{
map(h8_device::PORT_1, h8_device::PORT_1).portrw("P1").umask16(0x00ff);
map(h8_device::PORT_2, h8_device::PORT_2).portrw("P2").umask16(0x00ff);
map(h8_device::PORT_3, h8_device::PORT_3).noprw();
map(h8_device::PORT_3, h8_device::PORT_4).noprw();
map(h8_device::ADC_0, h8_device::ADC_1).nopr();
}
@ -392,7 +458,7 @@ void ctk551_state::ctk551_io_map(address_map &map)
{
map(h8_device::PORT_1, h8_device::PORT_1).portr("P1_R").portw("P1_W").umask16(0x00ff);
map(h8_device::PORT_2, h8_device::PORT_2).portrw("P2").umask16(0x00ff);
map(h8_device::PORT_3, h8_device::PORT_3).noprw(); // port 3 pins are shared w/ key matrix
map(h8_device::PORT_3, h8_device::PORT_4).noprw(); // port 3 pins are shared w/ key matrix
map(h8_device::ADC_0, h8_device::ADC_0).portr("AN0");
map(h8_device::ADC_1, h8_device::ADC_1).portr("AN1");
}
@ -404,6 +470,8 @@ void ctk551_state::driver_start()
m_led_power.resolve();
m_outputs.resolve();
m_nmi_timer = timer_alloc(FUNC(ctk551_state::nmi_clear), this);
m_input_sel = 0xf;
save_item(NAME(m_switch));
@ -441,6 +509,34 @@ void ctk551_state::ap10(machine_config& config)
config.set_default_layout(layout_ap10);
}
void ctk551_state::ctk530(machine_config& config)
{
// CPU
GT913(config, m_maincpu, 20_MHz_XTAL / 2);
m_maincpu->set_addrmap(AS_DATA, &ctk551_state::ctk530_map);
m_maincpu->set_addrmap(AS_IO, &ctk551_state::ctk530_io_map);
m_maincpu->add_route(0, "lspeaker", 1.0);
m_maincpu->add_route(1, "rspeaker", 1.0);
// MIDI
auto& mdin(MIDI_PORT(config, "mdin"));
midiin_slot(mdin);
mdin.rxd_handler().set("maincpu:sci0", FUNC(h8_sci_device::rx_w));
auto& mdout(MIDI_PORT(config, "mdout"));
midiout_slot(mdout);
m_maincpu->subdevice<h8_sci_device>("sci0")->tx_handler().set(mdout, FUNC(midi_port_device::write_txd));
PWM_DISPLAY(config, m_pwm, 0);
m_pwm->set_size(4, 8);
m_pwm->set_segmask(0x7, 0xff);
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
config.set_default_layout(layout_ctk530);
}
void ctk551_state::gz70sp(machine_config& config)
{
// CPU
@ -499,7 +595,7 @@ void ctk551_state::ctk551(machine_config &config)
{
// CPU
GT913(config, m_maincpu, 30'000'000 / 2);
m_maincpu->set_addrmap(AS_DATA, &ctk551_state::ctk551_map);
m_maincpu->set_addrmap(AS_DATA, &ctk551_state::ctk530_map);
m_maincpu->set_addrmap(AS_IO, &ctk551_state::ctk551_io_map);
m_maincpu->add_route(0, "lspeaker", 1.0);
m_maincpu->add_route(1, "rspeaker", 1.0);
@ -787,6 +883,75 @@ INPUT_PORTS_START(base_61key)
PORT_BIT( 0xe0, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
INPUT_PORTS_START(ctk530)
PORT_INCLUDE(base_61key)
PORT_START("maincpu:kbd:FI8")
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("maincpu:kbd:FI9")
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("maincpu:kbd:FI10")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Keypad +") PORT_CODE(KEYCODE_PLUS_PAD)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Keypad -") PORT_CODE(KEYCODE_MINUS_PAD)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Keypad 0") PORT_CODE(KEYCODE_0_PAD)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Accomp Volume Up")
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Main Volume Up")
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Mode")
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("maincpu:kbd:KI0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Demo")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Keypad 3") PORT_CODE(KEYCODE_3_PAD)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Keypad 2") PORT_CODE(KEYCODE_2_PAD)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Keypad 1") PORT_CODE(KEYCODE_1_PAD)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Tempo Up")
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Main Volume Down")
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Intro / Fill In")
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("maincpu:kbd:KI1")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Transpose / Tune / MIDI")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Keypad 6") PORT_CODE(KEYCODE_6_PAD)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Keypad 5") PORT_CODE(KEYCODE_5_PAD)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Keypad 4") PORT_CODE(KEYCODE_4_PAD)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Rhythm")
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Accomp Volume Down")
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Synchro / Ending")
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("maincpu:kbd:KI2")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Touch Response")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Keypad 9") PORT_CODE(KEYCODE_9_PAD)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Keypad 8") PORT_CODE(KEYCODE_8_PAD)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Keypad 7") PORT_CODE(KEYCODE_7_PAD)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Tone")
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Tempo Down")
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Start / Stop")
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("maincpu:kbd:VELOCITY")
PORT_BIT( 0x7f, 0x7f, IPT_POSITIONAL ) PORT_NAME("Key Velocity") PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_CENTERDELTA(0)
PORT_START("SWITCH")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POWER_ON ) PORT_NAME("Power") PORT_CHANGED_MEMBER(DEVICE_SELF, ctk551_state, power_w, 0)
PORT_START("P1")
PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_MEMBER(ctk551_state, apo_w)
PORT_BIT( 0x78, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_CONFNAME( 0x80, 0x80, "Power Source" )
PORT_CONFSETTING( 0x80, "AC Adapter" )
PORT_CONFSETTING( 0x00, "Battery" )
PORT_START("PLE")
PORT_BIT( 0x00ff, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_MEMBER(ctk551_state, pwm_col_w)
PORT_BIT( 0x0f00, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_MEMBER(ctk551_state, pwm_row_w)
PORT_BIT( 0xf000, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
INPUT_PORTS_START(ctk601)
PORT_INCLUDE(base_61key)
@ -1004,6 +1169,13 @@ ROM_START(ap10)
ROM_LOAD16_WORD_SWAP("ap10.lsi303", 0x000000, 0x100000, CRC(39caa214) SHA1(3b484628c1e6f0ad7c11e2ec7eff664294f9ec83)) // MX23C8100MC-12CA27
ROM_END
ROM_START(ctk530)
ROM_REGION(0x100000, "maincpu", ROMREGION_ERASE00)
ROM_REGION16_BE(0x100000, "lsi102", 0)
ROM_LOAD16_WORD_SWAP("ctk530.lsi102", 0x000000, 0x100000, CRC(961bff85) SHA1(adfd46ef96fb53981b1b66cb89e3d716b0792ef0)) // MX23C8100PC-12CA19
ROM_END
ROM_START(gz70sp)
ROM_REGION(0x200000, "maincpu", 0)
ROM_LOAD("romsxgm.bin", 0x000000, 0x200000, CRC(c392cf89) SHA1(93ebe213ea7a085c67d88974ed39ac3e9bf8059b)) // from the SW-10 softsynth
@ -1033,6 +1205,17 @@ void ctk551_state::init_ap10()
rom[addr] = bitswap(rom[addr], 15, 14, 13, 10, 11, 12, 9, 8, 7, 6, 2, 3, 4, 5, 1, 0);
}
void ctk551_state::init_ctk530()
{
uint16_t* dest = (uint16_t*)memregion("maincpu")->base();
const uint16_t* src = (uint16_t*)memregion("lsi102")->base();
for (uint32_t i = 0; i < 0x80000; i++)
{
const uint32_t addr = bitswap(i, 8, 9, 0, 2, 4, 6, 17, 16, 14, 12, 10, 11, 13, 15, 18, 7, 5, 3, 1);
dest[addr] = bitswap(src[i], 0, 2, 15, 13, 4, 6, 11, 9, 1, 3, 14, 12, 5, 7, 10, 8);
}
}
void ctk551_state::init_gz70sp()
{
/*
@ -1048,7 +1231,8 @@ void ctk551_state::init_gz70sp()
// models with MACHINE_IMPERFECT_SOUND are missing DSP emulation
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
SYST( 1995, ap10, 0, 0, ap10, ap10, ctk551_state, init_ap10, "Casio", "Celviano AP-10", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_SOUND)
SYST( 1995, ap10, 0, 0, ap10, ap10, ctk551_state, init_ap10, "Casio", "Celviano AP-10", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_SOUND )
SYST( 1995, ctk530, 0, 0, ctk530, ctk530, ctk551_state, init_ctk530, "Casio", "CTK-530", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
SYST( 1996, gz70sp, 0, 0, gz70sp, gz70sp, ctk551_state, init_gz70sp, "Casio", "GZ-70SP", MACHINE_SUPPORTS_SAVE )
SYST( 1997, ctk601, 0, 0, ctk601, ctk601, ctk551_state, empty_init, "Casio", "CTK-601", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND)
SYST( 1997, ctk601, 0, 0, ctk601, ctk601, ctk551_state, empty_init, "Casio", "CTK-601", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
SYST( 2000, ctk551, 0, 0, ctk551, ctk551, ctk551_state, empty_init, "Casio", "CTK-551", MACHINE_SUPPORTS_SAVE )

386
src/mame/layout/ctk530.lay Normal file
View File

@ -0,0 +1,386 @@
<?xml version="1.0"?>
<!--
license:CC0
-->
<mamelayout version="2">
<!-- general grey backdrop -->
<element name="greyback">
<rect>
<bounds left="0" top="0" right="1" bottom="1" />
<color red="0.1" green="0.1" blue="0.1" />
</rect>
</element>
<element name="border">
<rect>
<bounds left="0" top="0" right="1" bottom="1" />
<color red="0.05" green="0.05" blue="0.05" />
</rect>
</element>
<!-- text elements -->
<element name="power"><text string="POWER" /></element>
<element name="mode"><text string="MODE" /></element>
<element name="casio_chord"><text string="CASIO CHORD" align="2" /></element>
<element name="fingered"><text string="FINGERED" align="2" /></element>
<element name="full_range"><text string="FULL RANGE" align="2" /></element>
<element name="chord_1"><text string="CHORD 1" align="2" /></element>
<element name="chord_2"><text string="CHORD 2" align="2" /></element>
<element name="main"><text string="MAIN" /></element>
<element name="accomp"><text string="ACCOMP" /></element>
<element name="volume"><text string="VOLUME" /></element>
<element name="tempo"><text string="TEMPO" /></element>
<element name="intro"><text string="INTRO/" /></element>
<element name="fill_in"><text string="FILL-IN" /></element>
<element name="synchro"><text string="SYNCHRO/" /></element>
<element name="ending"><text string="ENDING" /></element>
<element name="start"><text string="START/" /></element>
<element name="stop"><text string="STOP" /></element>
<element name="rhythm"><text string="RHYTHM" /></element>
<element name="tone"><text string="TONE" /></element>
<element name="touch_response"><text string="TOUCH RESPONSE" /></element>
<element name="transpose"><text string="TRANSPOSE/" /></element>
<element name="tune_midi"><text string="TUNE/MIDI" /></element>
<element name="demo"><text string="DEMO" /></element>
<element name="kp0"><text string="0" /></element>
<element name="kp1"><text string="1" /></element>
<element name="kp2"><text string="2" /></element>
<element name="kp3"><text string="3" /></element>
<element name="kp4"><text string="4" /></element>
<element name="kp5"><text string="5" /></element>
<element name="kp6"><text string="6" /></element>
<element name="kp7"><text string="7" /></element>
<element name="kp8"><text string="8" /></element>
<element name="kp9"><text string="9" /></element>
<element name="plus"><text string="+" /></element>
<element name="minus"><text string="-" /></element>
<element name="chord_keys"><text string="&#x25c0; CHORD" align="1" /></element>
<!-- button primitives -->
<element name="button-circ" defstate="0">
<disk><bounds x="0" y="0" width="40" height="40" /><color red="0.0" green="0.0" blue="0.0" /></disk>
<disk state="0"><bounds x="2" y="2" width="36" height="36" /><color red="0.5" green="0.5" blue="0.5" /></disk>
<disk state="1"><bounds x="2" y="2" width="36" height="36" /><color red="0.3" green="0.3" blue="0.3" /></disk>
</element>
<element name="button-circ-up" defstate="0">
<disk><bounds x="0" y="0" width="40" height="40" /><color red="0.0" green="0.0" blue="0.0" /></disk>
<disk state="0"><bounds x="2" y="2" width="36" height="36" /><color red="0.5" green="0.5" blue="0.5" /></disk>
<disk state="1"><bounds x="2" y="2" width="36" height="36" /><color red="0.3" green="0.3" blue="0.3" /></disk>
<text string="&#x25b2;" align="1"><bounds x="10" y="-2" width="30" height="36"/><color red="0.2" green="0.2" blue="0.2" /></text>
</element>
<element name="button-circ-down" defstate="0">
<disk><bounds x="0" y="0" width="40" height="40" /><color red="0.0" green="0.0" blue="0.0" /></disk>
<disk state="0"><bounds x="2" y="2" width="36" height="36" /><color red="0.5" green="0.5" blue="0.5" /></disk>
<disk state="1"><bounds x="2" y="2" width="36" height="36" /><color red="0.3" green="0.3" blue="0.3" /></disk>
<text string="&#x25bc;" align="1"><bounds x="10" y="2" width="30" height="36"/><color red="0.2" green="0.2" blue="0.2" /></text>
</element>
<element name="button-demo" defstate="0">
<disk><bounds x="0" y="0" width="50" height="50" /><color red="0.0" green="0.0" blue="0.0" /></disk>
<disk state="0"><bounds x="7" y="7" width="36" height="36" /><color red="1.0" green="0.2" blue="0.2" /></disk>
<disk state="1"><bounds x="7" y="7" width="36" height="36" /><color red="0.8" green="0.0" blue="0.0" /></disk>
</element>
<element name="button-rect" defstate="0">
<rect><bounds x="0" y="0" width="56" height="32" /><color red="0.0" green="0.0" blue="0.0" /></rect>
<rect state="0"><bounds x="2" y="2" width="52" height="28" /><color red="0.5" green="0.5" blue="0.5" /></rect>
<rect state="1"><bounds x="2" y="2" width="52" height="28" /><color red="0.3" green="0.3" blue="0.3" /></rect>
</element>
<element name="button-rect-tall" defstate="0">
<rect><bounds x="0" y="0" width="56" height="128" /><color red="0.0" green="0.0" blue="0.0" /></rect>
<rect state="0"><bounds x="2" y="2" width="52" height="124" /><color red="0.6" green="0.9" blue="1.0" /></rect>
<rect state="1"><bounds x="2" y="2" width="52" height="124" /><color red="0.5" green="0.7" blue="0.8" /></rect>
</element>
<element name="button-rect-num" defstate="0">
<rect><bounds x="0" y="0" width="32" height="32" /><color red="0.0" green="0.0" blue="0.0" /></rect>
<rect state="0"><bounds x="2" y="2" width="28" height="28" /><color red="0.5" green="0.5" blue="0.5" /></rect>
<rect state="1"><bounds x="2" y="2" width="28" height="28" /><color red="0.3" green="0.3" blue="0.3" /></rect>
</element>
<element name="button-rect-center" defstate="0"> <!-- these are supposed to be triangular -->
<rect><bounds x="0" y="0" width="56" height="32" /><color red="0.0" green="0.0" blue="0.0" /></rect>
<rect state="0"><bounds x="2" y="2" width="52" height="28" /><color red="1.0" green="0.8" blue="0.0" /></rect>
<rect state="1"><bounds x="2" y="2" width="52" height="28" /><color red="0.8" green="0.6" blue="0.0" /></rect>
</element>
<!-- LED primitive -->
<element name="led" defstate="0">
<disk state="0"><color red="0.4" green="0.3" blue="0.3" /></disk>
<disk state="1"><color red="1.0" green="0.1" blue="0.1" /></disk>
</element>
<element name="digit" defstate="0">
<led7seg><color red="1.0" green="0.1" blue="0.1" /></led7seg>
</element>
<!-- keyboard primitives -->
<element name="keyfill"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
<element name="whitekey" defstate="0">
<rect state="0"><bounds x="0" y="0" width="45" height="504" /><color red="1.0" green="1.0" blue="1.0" /></rect>
<rect state="1"><bounds x="0" y="0" width="45" height="504" /><color red="0.9" green="0.9" blue="0.9" /></rect>
</element>
<element name="whitekey-l" defstate="0">
<rect state="0"><bounds x="0" y="0" width="45" height="332" /><color red="1.0" green="1.0" blue="1.0" /></rect>
<rect state="0"><bounds x="0" y="332" width="79" height="172" /><color red="1.0" green="1.0" blue="1.0" /></rect>
<rect state="1"><bounds x="0" y="0" width="45" height="332" /><color red="0.9" green="0.9" blue="0.9" /></rect>
<rect state="1"><bounds x="0" y="332" width="79" height="172" /><color red="0.9" green="0.9" blue="0.9" /></rect>
</element>
<element name="whitekey-m" defstate="0">
<rect state="0"><bounds x="13" y="0" width="53" height="332" /><color red="1.0" green="1.0" blue="1.0" /></rect>
<rect state="0"><bounds x="0" y="332" width="79" height="172" /><color red="1.0" green="1.0" blue="1.0" /></rect>
<rect state="1"><bounds x="13" y="0" width="53" height="332" /><color red="0.9" green="0.9" blue="0.9" /></rect>
<rect state="1"><bounds x="0" y="332" width="79" height="172" /><color red="0.9" green="0.9" blue="0.9" /></rect>
</element>
<element name="whitekey-lm" defstate="0">
<rect state="0"><bounds x="10" y="0" width="44" height="332" /><color red="1.0" green="1.0" blue="1.0" /></rect>
<rect state="0"><bounds x="0" y="332" width="79" height="172" /><color red="1.0" green="1.0" blue="1.0" /></rect>
<rect state="1"><bounds x="10" y="0" width="44" height="332" /><color red="0.9" green="0.9" blue="0.9" /></rect>
<rect state="1"><bounds x="0" y="332" width="79" height="172" /><color red="0.9" green="0.9" blue="0.9" /></rect>
</element>
<element name="whitekey-rm" defstate="0">
<rect state="0"><bounds x="22" y="0" width="44" height="332" /><color red="1.0" green="1.0" blue="1.0" /></rect>
<rect state="0"><bounds x="0" y="332" width="79" height="172" /><color red="1.0" green="1.0" blue="1.0" /></rect>
<rect state="1"><bounds x="22" y="0" width="44" height="332" /><color red="0.9" green="0.9" blue="0.9" /></rect>
<rect state="1"><bounds x="0" y="332" width="79" height="172" /><color red="0.9" green="0.9" blue="0.9" /></rect>
</element>
<element name="whitekey-r" defstate="0">
<rect state="0"><bounds x="34" y="0" width="45" height="332" /><color red="1.0" green="1.0" blue="1.0" /></rect>
<rect state="0"><bounds x="0" y="332" width="79" height="172" /><color red="1.0" green="1.0" blue="1.0" /></rect>
<rect state="1"><bounds x="34" y="0" width="45" height="332" /><color red="0.9" green="0.9" blue="0.9" /></rect>
<rect state="1"><bounds x="0" y="332" width="79" height="172" /><color red="0.9" green="0.9" blue="0.9" /></rect>
</element>
<element name="blackkey" defstate="0">
<rect state="0"><bounds x="0" y="0" width="44" height="324" /><color red="0.0" green="0.0" blue="0.0" /></rect>
<rect state="0"><bounds x="4" y="0" width="36" height="320" /><color red="0.1" green="0.1" blue="0.1" /></rect>
<rect state="1"><bounds x="0" y="0" width="44" height="324" /><color red="0.1" green="0.1" blue="0.1" /></rect>
<rect state="1"><bounds x="4" y="0" width="36" height="320" /><color red="0.1" green="0.1" blue="0.1" /></rect>
</element>
<!-- button group -->
<group name="keypad">
<element ref="border"><bounds x="0" y="-0" width="280" height="338"/></element>
<element ref="greyback"><bounds x="8" y="8" width="264" height="322"/></element>
<element ref="kp7"><bounds x="20" y="30" width="24" height="24"/></element>
<element ref="button-rect-num" inputtag="maincpu:kbd:KI2" inputmask="0x08"><bounds xc="60" y="30" width="32" height="32" /></element>
<element ref="kp8"><bounds x="100" y="30" width="24" height="24"/></element>
<element ref="button-rect-num" inputtag="maincpu:kbd:KI2" inputmask="0x04"><bounds xc="140" y="30" width="32" height="32" /></element>
<element ref="kp9"><bounds x="180" y="30" width="24" height="24"/></element>
<element ref="button-rect-num" inputtag="maincpu:kbd:KI2" inputmask="0x02"><bounds xc="220" y="30" width="32" height="32" /></element>
<element ref="kp4"><bounds x="20" y="112" width="24" height="24"/></element>
<element ref="button-rect-num" inputtag="maincpu:kbd:KI1" inputmask="0x08"><bounds xc="60" y="112" width="32" height="32" /></element>
<element ref="kp5"><bounds x="100" y="112" width="24" height="24"/></element>
<element ref="button-rect-num" inputtag="maincpu:kbd:KI1" inputmask="0x04"><bounds xc="140" y="112" width="32" height="32" /></element>
<element ref="kp6"><bounds x="180" y="112" width="24" height="24"/></element>
<element ref="button-rect-num" inputtag="maincpu:kbd:KI1" inputmask="0x02"><bounds xc="220" y="112" width="32" height="32" /></element>
<element ref="kp1"><bounds x="20" y="194" width="24" height="24"/></element>
<element ref="button-rect-num" inputtag="maincpu:kbd:KI0" inputmask="0x08"><bounds xc="60" y="194" width="32" height="32" /></element>
<element ref="kp2"><bounds x="100" y="194" width="24" height="24"/></element>
<element ref="button-rect-num" inputtag="maincpu:kbd:KI0" inputmask="0x04"><bounds xc="140" y="194" width="32" height="32" /></element>
<element ref="kp3"><bounds x="180" y="194" width="24" height="24"/></element>
<element ref="button-rect-num" inputtag="maincpu:kbd:KI0" inputmask="0x02"><bounds xc="220" y="194" width="32" height="32" /></element>
<element ref="kp0"><bounds x="20" y="276" width="24" height="24"/></element>
<element ref="button-rect-num" inputtag="maincpu:kbd:FI10" inputmask="0x08"><bounds xc="60" y="276" width="32" height="32" /></element>
<element ref="minus"><bounds x="100" y="276" width="24" height="24"/></element>
<element ref="button-rect-num" inputtag="maincpu:kbd:FI10" inputmask="0x04"><bounds xc="140" y="276" width="32" height="32" /></element>
<element ref="plus"><bounds x="180" y="276" width="24" height="24"/></element>
<element ref="button-rect-num" inputtag="maincpu:kbd:FI10" inputmask="0x02"><bounds xc="220" y="276" width="32" height="32" /></element>
</group>
<group name="buttons">
<bounds x="0" y="-120" width="3154" height="420" />
<element ref="led" name="led_power"><bounds xc="680" y="140" width="20" height="20" /></element>
<element ref="power"><bounds xc="680" y="170" width="100" height="24"/></element>
<element ref="button-rect" inputtag="SWITCH" inputmask="0x01"><bounds xc="680" y="200" width="56" height="28" /></element>
<element ref="full_range"><bounds xc="820" y="-15" width="140" height="24"/></element>
<element ref="chord_2"><bounds xc="820" y="5" width="140" height="24"/></element>
<element ref="led" name="3.3"><bounds xc="900" y="-3" width="20" height="20" /></element>
<element ref="full_range"><bounds xc="820" y="30" width="140" height="24"/></element>
<element ref="chord_1"><bounds xc="820" y="50" width="140" height="24"/></element>
<element ref="led" name="3.2"><bounds xc="900" y="42" width="20" height="20" /></element>
<element ref="fingered"><bounds xc="820" y="85" width="140" height="24"/></element>
<element ref="led" name="3.1"><bounds xc="900" y="87" width="20" height="20" /></element>
<element ref="casio_chord"><bounds xc="820" y="130" width="140" height="24"/></element>
<element ref="led" name="3.0"><bounds xc="900" y="132" width="20" height="20" /></element>
<element ref="mode"><bounds xc="840" y="170" width="80" height="24"/></element>
<element ref="button-rect" inputtag="maincpu:kbd:FI10" inputmask="0x40"><bounds xc="840" y="200" width="56" height="28" /></element>
<element ref="main"><bounds xc="1020" y="-110" width="140" height="24"/></element>
<element ref="volume"><bounds xc="1020" y="-90" width="140" height="24"/></element>
<element ref="button-circ-up" inputtag="maincpu:kbd:FI10" inputmask="0x20"><bounds xc="1020" y="-60" width="40" height="40" /></element>
<element ref="button-circ-down" inputtag="maincpu:kbd:KI0" inputmask="0x20"><bounds xc="1020" y="-10" width="40" height="40" /></element>
<element ref="intro"><bounds xc="1020" y="50" width="140" height="24"/></element>
<element ref="fill_in"><bounds xc="1020" y="70" width="140" height="24"/></element>
<element ref="button-rect-tall" inputtag="maincpu:kbd:KI0" inputmask="0x40"><bounds xc="1020" y="100" width="56" height="128" /></element>
<element ref="accomp"><bounds xc="1140" y="-110" width="140" height="24"/></element>
<element ref="volume"><bounds xc="1140" y="-90" width="140" height="24"/></element>
<element ref="button-circ-up" inputtag="maincpu:kbd:FI10" inputmask="0x10"><bounds xc="1140" y="-60" width="40" height="40" /></element>
<element ref="button-circ-down" inputtag="maincpu:kbd:KI1" inputmask="0x20"><bounds xc="1140" y="-10" width="40" height="40" /></element>
<element ref="synchro"><bounds xc="1140" y="50" width="140" height="24"/></element>
<element ref="ending"><bounds xc="1140" y="70" width="140" height="24"/></element>
<element ref="button-rect-tall" inputtag="maincpu:kbd:KI1" inputmask="0x40"><bounds xc="1140" y="100" width="56" height="128" /></element>
<element ref="tempo"><bounds xc="1260" y="-110" width="140" height="24"/></element>
<element ref="button-circ-up" inputtag="maincpu:kbd:KI0" inputmask="0x10"><bounds xc="1260" y="-60" width="40" height="40" /></element>
<element ref="button-circ-down" inputtag="maincpu:kbd:KI2" inputmask="0x20"><bounds xc="1260" y="-10" width="40" height="40" /></element>
<element ref="start"><bounds xc="1260" y="50" width="140" height="24"/></element>
<element ref="stop"><bounds xc="1260" y="70" width="140" height="24"/></element>
<element ref="button-rect-tall" inputtag="maincpu:kbd:KI2" inputmask="0x40"><bounds xc="1260" y="100" width="56" height="128" /></element>
<element ref="led" name="3.4"><bounds xc="1320" y="100" width="20" height="20" /></element>
<element ref="keyfill"><bounds x="1420" y="-80" width="280" height="140" /></element>
<element ref="digit" name="digit0"><bounds x="1440" y="-60" width="80" height="100" /></element>
<element ref="digit" name="digit1"><bounds x="1520" y="-60" width="80" height="100" /></element>
<element ref="digit" name="digit2"><bounds x="1600" y="-60" width="80" height="100" /></element>
<element ref="rhythm"><bounds xc="1480" y="170" width="140" height="24"/></element>
<element ref="button-rect-center" inputtag="maincpu:kbd:KI1" inputmask="0x10"><bounds xc="1480" y="200" width="56" height="28" /></element>
<element ref="tone"><bounds xc="1640" y="170" width="140" height="24"/></element>
<element ref="button-rect-center" inputtag="maincpu:kbd:KI2" inputmask="0x10"><bounds xc="1640" y="200" width="56" height="28" /></element>
<group ref="keypad"><bounds x="1800" y="-110" width="280" height="338"/></group>
<element ref="led" name="3.5"><bounds xc="2200" y="-110" width="20" height="20" /></element>
<element ref="touch_response"><bounds xc="2200" y="-85" width="240" height="24"/></element>
<element ref="button-circ" inputtag="maincpu:kbd:KI2" inputmask="0x01"><bounds xc="2200" y="-50" width="40" height="40" /></element>
<element ref="transpose"><bounds xc="2200" y="0" width="140" height="24"/></element>
<element ref="tune_midi"><bounds xc="2200" y="20" width="140" height="24"/></element>
<element ref="button-circ" inputtag="maincpu:kbd:KI1" inputmask="0x01"><bounds xc="2200" y="50" width="40" height="40" /></element>
<element ref="demo"><bounds xc="2200" y="148" width="240" height="24"/></element>
<element ref="button-demo" inputtag="maincpu:kbd:KI0" inputmask="0x01"><bounds xc="2200" y="178" width="50" height="50" /></element>
</group>
<!-- keyboard group -->
<group name="keyboard">
<element ref="keyfill"><bounds x="72" y="98" width="2970" height="524" /></element>
<element ref="chord_keys"><bounds x="960" y="50" width="140" height="35"/></element>
<!-- octave 2 -->
<element ref="blackkey" inputtag="maincpu:kbd:FI0" inputmask="0x02"><bounds x="130" y="108" width="44" height="324" /></element>
<element ref="blackkey" inputtag="maincpu:kbd:FI0" inputmask="0x08"><bounds x="233" y="108" width="44" height="324" /></element>
<element ref="blackkey" inputtag="maincpu:kbd:FI0" inputmask="0x40"><bounds x="373" y="108" width="44" height="324" /></element>
<element ref="blackkey" inputtag="maincpu:kbd:FI1" inputmask="0x01"><bounds x="467" y="108" width="44" height="324" /></element>
<element ref="blackkey" inputtag="maincpu:kbd:FI1" inputmask="0x04"><bounds x="561" y="108" width="44" height="324" /></element>
<element ref="whitekey-l" inputtag="maincpu:kbd:FI0" inputmask="0x01"><bounds x="82" y="108" width="79" height="504" /></element>
<element ref="whitekey-m" inputtag="maincpu:kbd:FI0" inputmask="0x04"><bounds x="164" y="108" width="79" height="504" /></element>
<element ref="whitekey-r" inputtag="maincpu:kbd:FI0" inputmask="0x10"><bounds x="246" y="108" width="79" height="504" /></element>
<element ref="whitekey-l" inputtag="maincpu:kbd:FI0" inputmask="0x20"><bounds x="328" y="108" width="79" height="504" /></element>
<element ref="whitekey-lm" inputtag="maincpu:kbd:FI0" inputmask="0x80"><bounds x="410" y="108" width="79" height="504" /></element>
<element ref="whitekey-rm" inputtag="maincpu:kbd:FI1" inputmask="0x02"><bounds x="492" y="108" width="79" height="504" /></element>
<element ref="whitekey-r" inputtag="maincpu:kbd:FI1" inputmask="0x08"><bounds x="574" y="108" width="79" height="504" /></element>
<!-- octave 3 -->
<element ref="blackkey" inputtag="maincpu:kbd:FI1" inputmask="0x20"><bounds x="704" y="108" width="44" height="324" /></element>
<element ref="blackkey" inputtag="maincpu:kbd:FI1" inputmask="0x80"><bounds x="807" y="108" width="44" height="324" /></element>
<element ref="blackkey" inputtag="maincpu:kbd:FI2" inputmask="0x04"><bounds x="947" y="108" width="44" height="324" /></element>
<element ref="blackkey" inputtag="maincpu:kbd:FI2" inputmask="0x10"><bounds x="1041" y="108" width="44" height="324" /></element>
<element ref="blackkey" inputtag="maincpu:kbd:FI2" inputmask="0x40"><bounds x="1135" y="108" width="44" height="324" /></element>
<element ref="whitekey-l" inputtag="maincpu:kbd:FI1" inputmask="0x10"><bounds x="656" y="108" width="79" height="504" /></element>
<element ref="whitekey-m" inputtag="maincpu:kbd:FI1" inputmask="0x40"><bounds x="738" y="108" width="79" height="504" /></element>
<element ref="whitekey-r" inputtag="maincpu:kbd:FI2" inputmask="0x01"><bounds x="820" y="108" width="79" height="504" /></element>
<element ref="whitekey-l" inputtag="maincpu:kbd:FI2" inputmask="0x02"><bounds x="902" y="108" width="79" height="504" /></element>
<element ref="whitekey-lm" inputtag="maincpu:kbd:FI2" inputmask="0x08"><bounds x="984" y="108" width="79" height="504" /></element>
<element ref="whitekey-rm" inputtag="maincpu:kbd:FI2" inputmask="0x20"><bounds x="1066" y="108" width="79" height="504" /></element>
<element ref="whitekey-r" inputtag="maincpu:kbd:FI2" inputmask="0x80"><bounds x="1148" y="108" width="79" height="504" /></element>
<!-- octave 4 -->
<element ref="blackkey" inputtag="maincpu:kbd:FI3" inputmask="0x02"><bounds x="1278" y="108" width="44" height="324" /></element>
<element ref="blackkey" inputtag="maincpu:kbd:FI3" inputmask="0x08"><bounds x="1381" y="108" width="44" height="324" /></element>
<element ref="blackkey" inputtag="maincpu:kbd:FI3" inputmask="0x40"><bounds x="1521" y="108" width="44" height="324" /></element>
<element ref="blackkey" inputtag="maincpu:kbd:FI4" inputmask="0x01"><bounds x="1615" y="108" width="44" height="324" /></element>
<element ref="blackkey" inputtag="maincpu:kbd:FI4" inputmask="0x04"><bounds x="1709" y="108" width="44" height="324" /></element>
<element ref="whitekey-l" inputtag="maincpu:kbd:FI3" inputmask="0x01"><bounds x="1230" y="108" width="79" height="504" /></element>
<element ref="whitekey-m" inputtag="maincpu:kbd:FI3" inputmask="0x04"><bounds x="1312" y="108" width="79" height="504" /></element>
<element ref="whitekey-r" inputtag="maincpu:kbd:FI3" inputmask="0x10"><bounds x="1394" y="108" width="79" height="504" /></element>
<element ref="whitekey-l" inputtag="maincpu:kbd:FI3" inputmask="0x20"><bounds x="1476" y="108" width="79" height="504" /></element>
<element ref="whitekey-lm" inputtag="maincpu:kbd:FI3" inputmask="0x80"><bounds x="1558" y="108" width="79" height="504" /></element>
<element ref="whitekey-rm" inputtag="maincpu:kbd:FI4" inputmask="0x02"><bounds x="1640" y="108" width="79" height="504" /></element>
<element ref="whitekey-r" inputtag="maincpu:kbd:FI4" inputmask="0x08"><bounds x="1722" y="108" width="79" height="504" /></element>
<!-- octave 5 -->
<element ref="blackkey" inputtag="maincpu:kbd:FI4" inputmask="0x20"><bounds x="1852" y="108" width="44" height="324" /></element>
<element ref="blackkey" inputtag="maincpu:kbd:FI4" inputmask="0x80"><bounds x="1955" y="108" width="44" height="324" /></element>
<element ref="blackkey" inputtag="maincpu:kbd:FI5" inputmask="0x04"><bounds x="2095" y="108" width="44" height="324" /></element>
<element ref="blackkey" inputtag="maincpu:kbd:FI5" inputmask="0x10"><bounds x="2189" y="108" width="44" height="324" /></element>
<element ref="blackkey" inputtag="maincpu:kbd:FI5" inputmask="0x40"><bounds x="2283" y="108" width="44" height="324" /></element>
<element ref="whitekey-l" inputtag="maincpu:kbd:FI4" inputmask="0x10"><bounds x="1804" y="108" width="79" height="504" /></element>
<element ref="whitekey-m" inputtag="maincpu:kbd:FI4" inputmask="0x40"><bounds x="1886" y="108" width="79" height="504" /></element>
<element ref="whitekey-r" inputtag="maincpu:kbd:FI5" inputmask="0x01"><bounds x="1968" y="108" width="79" height="504" /></element>
<element ref="whitekey-l" inputtag="maincpu:kbd:FI5" inputmask="0x02"><bounds x="2050" y="108" width="79" height="504" /></element>
<element ref="whitekey-lm" inputtag="maincpu:kbd:FI5" inputmask="0x08"><bounds x="2132" y="108" width="79" height="504" /></element>
<element ref="whitekey-rm" inputtag="maincpu:kbd:FI5" inputmask="0x20"><bounds x="2214" y="108" width="79" height="504" /></element>
<element ref="whitekey-r" inputtag="maincpu:kbd:FI5" inputmask="0x80"><bounds x="2296" y="108" width="79" height="504" /></element>
<!-- octave 6 -->
<element ref="blackkey" inputtag="maincpu:kbd:FI6" inputmask="0x02"><bounds x="2426" y="108" width="44" height="324" /></element>
<element ref="blackkey" inputtag="maincpu:kbd:FI6" inputmask="0x08"><bounds x="2529" y="108" width="44" height="324" /></element>
<element ref="blackkey" inputtag="maincpu:kbd:FI6" inputmask="0x40"><bounds x="2669" y="108" width="44" height="324" /></element>
<element ref="blackkey" inputtag="maincpu:kbd:FI7" inputmask="0x04"><bounds x="2857" y="108" width="44" height="324" /></element>
<element ref="blackkey" inputtag="maincpu:kbd:FI7" inputmask="0x01"><bounds x="2763" y="108" width="44" height="324" /></element>
<element ref="whitekey-l" inputtag="maincpu:kbd:FI6" inputmask="0x01"><bounds x="2378" y="108" width="79" height="504" /></element>
<element ref="whitekey-m" inputtag="maincpu:kbd:FI6" inputmask="0x04"><bounds x="2460" y="108" width="79" height="504" /></element>
<element ref="whitekey-r" inputtag="maincpu:kbd:FI6" inputmask="0x10"><bounds x="2542" y="108" width="79" height="504" /></element>
<element ref="whitekey-l" inputtag="maincpu:kbd:FI6" inputmask="0x20"><bounds x="2624" y="108" width="79" height="504" /></element>
<element ref="whitekey-lm" inputtag="maincpu:kbd:FI6" inputmask="0x80"><bounds x="2706" y="108" width="79" height="504" /></element>
<element ref="whitekey-rm" inputtag="maincpu:kbd:FI7" inputmask="0x02"><bounds x="2788" y="108" width="79" height="504" /></element>
<element ref="whitekey-r" inputtag="maincpu:kbd:FI7" inputmask="0x08"><bounds x="2870" y="108" width="79" height="504" /></element>
<!-- final key -->
<element ref="whitekey" inputtag="maincpu:kbd:FI7" inputmask="0x10"><bounds x="2952" y="108" width="79" height="504" /></element>
</group>
<!-- speaker grill -->
<element name="speaker">
<rect><bounds x="0" y="0" width="630" height="555" /><color red="0.1" green="0.1" blue="0.1" /></rect>
<disk><bounds x="60" y="11" width="510" height="510" /><color red="0.0" green="0.0" blue="0.0" /></disk>
<rect><bounds x="2" y="2" width="626" height="15" /><color red="0.05" green="0.05" blue="0.05" /></rect>
<rect><bounds x="2" y="25" width="626" height="15" /><color red="0.05" green="0.05" blue="0.05" /></rect>
<rect><bounds x="2" y="48" width="626" height="15" /><color red="0.05" green="0.05" blue="0.05" /></rect>
<rect><bounds x="2" y="71" width="626" height="15" /><color red="0.05" green="0.05" blue="0.05" /></rect>
<rect><bounds x="2" y="94" width="626" height="15" /><color red="0.05" green="0.05" blue="0.05" /></rect>
<rect><bounds x="2" y="117" width="626" height="15" /><color red="0.05" green="0.05" blue="0.05" /></rect>
<rect><bounds x="2" y="140" width="626" height="15" /><color red="0.05" green="0.05" blue="0.05" /></rect>
<rect><bounds x="2" y="163" width="626" height="15" /><color red="0.05" green="0.05" blue="0.05" /></rect>
<rect><bounds x="2" y="186" width="626" height="15" /><color red="0.05" green="0.05" blue="0.05" /></rect>
<rect><bounds x="2" y="209" width="626" height="15" /><color red="0.05" green="0.05" blue="0.05" /></rect>
<rect><bounds x="2" y="232" width="626" height="15" /><color red="0.05" green="0.05" blue="0.05" /></rect>
<rect><bounds x="2" y="255" width="626" height="15" /><color red="0.05" green="0.05" blue="0.05" /></rect>
<rect><bounds x="2" y="278" width="626" height="15" /><color red="0.05" green="0.05" blue="0.05" /></rect>
<rect><bounds x="2" y="301" width="626" height="15" /><color red="0.05" green="0.05" blue="0.05" /></rect>
<rect><bounds x="2" y="324" width="626" height="15" /><color red="0.05" green="0.05" blue="0.05" /></rect>
<rect><bounds x="2" y="347" width="626" height="15" /><color red="0.05" green="0.05" blue="0.05" /></rect>
<rect><bounds x="2" y="370" width="626" height="15" /><color red="0.05" green="0.05" blue="0.05" /></rect>
<rect><bounds x="2" y="393" width="626" height="15" /><color red="0.05" green="0.05" blue="0.05" /></rect>
<rect><bounds x="2" y="416" width="626" height="15" /><color red="0.05" green="0.05" blue="0.05" /></rect>
<rect><bounds x="2" y="439" width="626" height="15" /><color red="0.05" green="0.05" blue="0.05" /></rect>
<rect><bounds x="2" y="462" width="626" height="15" /><color red="0.05" green="0.05" blue="0.05" /></rect>
<rect><bounds x="2" y="485" width="626" height="15" /><color red="0.05" green="0.05" blue="0.05" /></rect>
<rect><bounds x="2" y="508" width="626" height="15" /><color red="0.05" green="0.05" blue="0.05" /></rect>
<rect><bounds x="2" y="531" width="626" height="15" /><color red="0.05" green="0.05" blue="0.05" /></rect>
</element>
<view name="Keyboard">
<!-- overall background -->
<element ref="greyback"><bounds x="0" y="-240" width="3154" height="1104" /></element>
<!-- speakers -->
<element ref="speaker"><bounds x="0" y="-240" width="600" height="528"/></element>
<element ref="speaker"><bounds x="2554" y="-240" width="600" height="528"/></element>
<!-- buttons -->
<group ref="buttons"><bounds x="0" y="-120" width="3154" height="420" /></group>
<!-- keyboard -->
<group ref="keyboard"><bounds x="72" y="340" width="3010" height="524" /></group>
</view>
</mamelayout>

View File

@ -11680,6 +11680,7 @@ megatrix
@source:casio/ctk551.cpp
ap10 //
ctk530 //
ctk551 //
ctk601 //
gz70sp //