promoted tntell/vocaid to working

This commit is contained in:
hap 2015-08-10 23:45:05 +02:00
parent f3d337b25c
commit ddce21706b
2 changed files with 240 additions and 53 deletions

View File

@ -184,7 +184,7 @@ Touch & Tell:
Touch & Tell (US), 1981
- MCU: CD8012
- TMS51xx: CD2802
- VSM: 4KB CD2610, overlay codes a:04, b:01, c:05, d:09
- VSM: 4KB CD2610
- notes: MCU is TMS1100 instead of TMS0270. CD8010 is seen in some devices
too, maybe an earlier version?
@ -211,17 +211,82 @@ Touch & Tell:
you get a serious medical aid device for the voice-impaired. The PCB is
identical, it includes the edge connector for modules but no external slot.
Touch & Tell modules:
English:
- Alphabet Fun: VSM: 4KB CD2611, overlay codes 1a:0E, 1b:0D, 1c:0C, 1d:0B
- Animal Friends: VSM: 16KB CD2355, " 2a:0A, 2b:0F, 2c:0E, 2d:0D
- Number Fun: VSM: 4KB CD2612*, " 3a:02, 3b:03, 3c:07, 3d:06, CD2612(rev.A), " 3a:0A, 3b:0F, 3c:0D, 3d:0E
- All About Me: VSM: 4KB CD2613, " 4a:0E, 4b:0B, 4c:0D, 4d:0C
- World of Transportation: VSM: 16KB CD2361, " 5a:0A, 5b:0B, 5c:0C, 5d:0D, 5e:10, 5f:11, 5g:12, 5h:13
- Little Creatures: VSM: 16KB CD2362 " 6a:14, 6b:15, 6c:16, 6d:17, 6e:18, 6f:1A, 6g:19, 6h:1B
- E.T.: VSM: 16KB CD2363 " 7a:0F, 7b:10, 7c:11, 7d:12, 7e:13, 7f:14, 7g:15, 7h:16
- Alphabet Fun: VSM: 4KB CD2611
- Animal Friends: VSM: 16KB CD2355
- Number Fun: VSM: 4KB CD2612*, CD2612(rev.A)
- All About Me: VSM: 4KB CD2613
- World of Transportation: VSM: 16KB CD2361
- Little Creatures: VSM: 16KB CD2362
- E.T.: VSM: 16KB CD2363
Touch & Tell/Vocaid overlay reference:
tntell CD2610:
- 04: a - Colors
- 01: b - Objects
- 05: c - Shapes
- 09: d - Home Scene
tntelluk CD62170, tntellfr CD62171:
- see tntell
- see numfun(not A)
- see animalfr
- 08: ? - Clown Face
- 0B: ? - Body Parts
vocaid CD2357:
- 1C: 1 - Leisure
- 1E: 2 - Telephone
- 1B: 3 - Bedside
- 1D: 4 - Alphabet
alphabet CD2611:
- 0E: 1a - Alphabet A-M
- 0D: 1b - Alphabet N-Z
- 0C: 1c - Letter Jumble A-M
- 0B: 1d - Letter Jumble N-Z
animalfr CD2355:
- 0A: 2a - Farm Animals
- 0F: 2b - At The Farm
- 0E: 2c - Animal Babies
- 0D: 2d - In The Jungle
numfun CD2612:
- 02/0A(rev.A): 3a - Numbers 1-10
- 03/0F(rev.A): 3b - Numbers 11-30
- 07/0D(rev.A): 3c - How Many?
- 06/0E(rev.A): 3d - Hidden Numbers
aboutme CD2613:
- 0E: 4a - Clown Face
- 0B: 4b - Body Parts
- 0D: 4c - Things to Wear
- 0C: 4d - Just For Me
wot CD2361:
- 0A: 5a - On Land
- 0B: 5b - In The Air
- 0C: 5c - On The Water
- 0D: 5d - In Space
- 10: 5e - What Belongs Here?
- 11: 5f - How It Used To Be
- 12: 5g - Word Fun
- 13: 5h - In the Surprise Garage
lilcreat CD2362:
- 14: 6a - In The Park
- 15: 6b - In The Sea
- 16: 6c - In The Woods
- 17: 6d - Whose House?
- 18: 6e - Hide & Seek
- 1A: 6f - Who Is It?
- 19: 6g - But It's Not
- 1B: 6h - Word Fun
et CD2363:
- 0F: 7a - The Adventure On Earth I
- 10: 7b - The Adventure On Earth II
- 11: 7c - Fun And Friendship I
- 12: 7d - Fun And Friendship II
- 13: 7e - E.T. The Star I
- 14: 7f - E.T. The Star II
- 15: 7g - Do You Remember? I
- 16: 7h - Do You Remember? II
Language Tutor/Translator:
@ -265,6 +330,7 @@ Language Tutor modules:
TODO:
- why doesn't lantutor work?
- tntell/vocaid: able to get overlay code from external artwork file
- emulate other known devices
@ -279,6 +345,7 @@ Language Tutor modules:
// internal artwork
#include "lantutor.lh"
#include "snspell.lh"
#include "tntell.lh" // keyboard overlay
// The master clock is a single stage RC oscillator into TMS5100 RCOSC:
// In an early 1979 Speak & Spell, C is 68pf, R is a 50kohm trimpot which is set to around 33.6kohm
@ -327,6 +394,9 @@ public:
DECLARE_DRIVER_INIT(tntell);
DECLARE_DRIVER_INIT(lantutor);
UINT8 m_overlay;
TIMER_DEVICE_CALLBACK_MEMBER(tntell_get_overlay);
protected:
virtual void machine_start();
};
@ -350,6 +420,8 @@ void tispeak_state::machine_start()
void tispeak_state::init_cartridge()
{
m_overlay = 0;
if (m_cart != NULL && m_cart->exists())
{
std::string region_tag;
@ -500,12 +572,24 @@ READ8_MEMBER(tispeak_state::tntell_read_k)
k |= 4;
// K8: overlay code from R5,O4-O7
if (((m_r >> 1 & 0x10) | (m_o >> 4 & 0xf)) & m_inp_matrix[10]->read())
if (((m_r >> 1 & 0x10) | (m_o >> 4 & 0xf)) & m_overlay)
k |= 8;
return k;
}
TIMER_DEVICE_CALLBACK_MEMBER(tispeak_state::tntell_get_overlay)
{
// Each keyboard overlay insert has 5 holes, used by the game to determine
// which one is active(if any). If it matches with the internal ROM or
// external module, the game continues.
// 00 for none, 1F for diagnostics, see comment section above for a list
m_overlay = m_inp_matrix[10]->read();
for (int i = 0; i < 5; i++)
output_set_indexed_value("ol", i+1, m_overlay >> i & 1);
}
/***************************************************************************
@ -695,62 +779,62 @@ INPUT_PORTS_END
static INPUT_PORTS_START( tntell )
PORT_START("IN.0") // R0
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_4)
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_NAME("Grid 1-1")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_NAME("Grid 1-2")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_4) PORT_NAME("Grid 1-4")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_NAME("Grid 1-3")
PORT_START("IN.1") // R1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_5)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_6)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_7)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_8)
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Q) PORT_NAME("Grid 2-1")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_W) PORT_NAME("Grid 2-2")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME("Grid 2-4")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_NAME("Grid 2-3")
PORT_START("IN.2") // R2
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_0)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_EQUALS)
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_NAME("Grid 3-1")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("Grid 3-2")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_F) PORT_NAME("Grid 3-4")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_NAME("Grid 3-3")
PORT_START("IN.3") // R3
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Q)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_W)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_E)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R)
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Z) PORT_NAME("Grid 4-1")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_X) PORT_NAME("Grid 4-2")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_V) PORT_NAME("Grid 4-4")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_NAME("Grid 4-3")
PORT_START("IN.4") // R4
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_T)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Y)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_U)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_I)
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_7) PORT_NAME("Grid 5-1")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_8) PORT_NAME("Grid 5-2")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_U) PORT_NAME("Grid 5-4")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_NAME("Grid 5-3")
PORT_START("IN.5") // R5
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_O)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_A)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_S)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_D)
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_O) PORT_NAME("Grid 5-6")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_COMMA) PORT_NAME("Grid 6-5")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_I) PORT_NAME("Grid 5-5")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) // overlay code
PORT_START("IN.6") // R6
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_F)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_G)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_H)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_J)
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_G) PORT_NAME("Grid 3-5")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_NAME("Grid 2-5")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_B) PORT_NAME("Grid 4-5")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_5) PORT_NAME("Grid 1-5")
PORT_START("IN.7") // R7
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_K)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_L)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Z)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_X)
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_H) PORT_NAME("Grid 3-6")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Y) PORT_NAME("Grid 2-6")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_N) PORT_NAME("Grid 4-6")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_6) PORT_NAME("Grid 1-6")
PORT_START("IN.8") // R8
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Grid 6-1 (Off)") // -> auto_power_off
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_C)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_V)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_B)
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_J) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Grid 6-1 (Off)") // -> auto_power_off
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_K) PORT_NAME("Grid 6-2")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_M) PORT_NAME("Grid 6-4")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_L) PORT_NAME("Grid 6-3")
PORT_START("IN.9") // Vss!
PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Grid 6-6 (On)") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, snspell_power_button, (void *)true)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Grid 6-6 (On)") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, snspell_power_button, (void *)true)
PORT_START("IN.10")
PORT_CONFNAME( 0x1f, 0x01, "Overlay Code" )
@ -904,7 +988,9 @@ static MACHINE_CONFIG_START( vocaid, tispeak_state )
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tispeak_state, tntell_write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(tispeak_state, tntell_write_r))
// MCFG_DEFAULT_LAYOUT(layout_tntell)
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_TIMER_DRIVER_ADD_PERIODIC("ol_timer", tispeak_state, tntell_get_overlay, attotime::from_msec(50))
MCFG_DEFAULT_LAYOUT(layout_tntell)
/* no video! */
@ -1214,9 +1300,9 @@ COMP( 1980, snread, 0, 0, snread, snread, tispeak_state, snspe
COMP( 1979, lantutor, 0, 0, lantutor, lantutor, tispeak_state, lantutor, "Texas Instruments", "Language Tutor (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
COMP( 1981, tntell, 0, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (US, 1981 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // assume there is an older version too, with CD8010 MCU
COMP( 1981, tntelluk, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (UK)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
COMP( 1981, tntellfr, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Le Livre Magique (France)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
COMP( 1980, tntellp, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
COMP( 1981, tntell, 0, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (US, 1981 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK ) // assume there is an older version too, with CD8010 MCU
COMP( 1981, tntelluk, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (UK)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK )
COMP( 1981, tntellfr, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Le Livre Magique (France)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK )
COMP( 1980, tntellp, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING )
COMP( 1982, vocaid, 0, 0, vocaid, tntell, driver_device, 0, "Texas Instruments", "Vocaid", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
COMP( 1982, vocaid, 0, 0, vocaid, tntell, driver_device, 0, "Texas Instruments", "Vocaid", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK )

101
src/mess/layout/tntell.lay Normal file
View File

@ -0,0 +1,101 @@
<?xml version="1.0"?>
<mamelayout version="2">
<!-- define elements -->
<element name="static_black"><rect><color red="0.1" green="0.1" blue="0.1" /></rect></element>
<element name="static_white"><rect><color red="0.98" green="0.98" blue="1.0" /></rect></element>
<element name="text_on">
<rect><color red="0.98" green="0.98" blue="1.0" /></rect>
<text string="ON"><color red="0.9" green="0.7" blue="0.6" /></text>
</element>
<element name="text_off">
<rect><color red="0.98" green="0.98" blue="1.0" /></rect>
<text string="OFF"><color red="0.44" green="0.55" blue="0.9" /></text>
</element>
<element name="led" defstate="0">
<disk state="0"><color red="0.4" green="0.1" blue="0.11" /></disk>
<disk state="1"><color red="1.0" green="0.2" blue="0.22" /></disk>
</element>
<element name="hole" defstate="1">
<text state="0" string=" "><color red="0.0" green="0.0" blue="0.0" /></text>
<text state="1" string=" "><color red="0.0" green="0.0" blue="0.0" /></text>
<disk state="0"><color red="0.0" green="0.0" blue="0.0" /></disk>
</element>
<element name="button" defstate="0">
<rect state="0"><color red="0.98" green="0.98" blue="1.0" /></rect>
<rect state="1"><color red="0.98" green="0.98" blue="1.0" /></rect>
<disk state="1">
<bounds x="0.16" y="0.16" width="0.68" height="0.68"/>
<color red="0.88" green="0.88" blue="0.86" />
</disk>
</element>
<!-- build screen -->
<view name="Internal Layout">
<bounds left="3" right="71.8" top="9.7" bottom="71.8" />
<bezel element="static_black">
<bounds left="3" right="71.8" top="9.7" bottom="71.8" />
</bezel>
<bezel element="static_white"><bounds x="3.3" y="10.0" width="6.3" height="61.5" /></bezel>
<bezel name="ol1" element="hole"><bounds x="5.6" y="56.0" width="1.7" height="1.7" /></bezel>
<bezel name="ol2" element="hole"><bounds x="5.6" y="53.5" width="1.7" height="1.7" /></bezel>
<bezel name="ol3" element="hole"><bounds x="5.6" y="51.0" width="1.7" height="1.7" /></bezel>
<bezel name="ol4" element="hole"><bounds x="5.6" y="48.5" width="1.7" height="1.7" /></bezel>
<bezel name="ol5" element="hole"><bounds x="5.6" y="46.0" width="1.7" height="1.7" /></bezel>
<bezel element="button" inputtag="IN.0" inputmask="0x01"><bounds x="10.0" y="10.0" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.0" inputmask="0x02"><bounds x="20.3" y="10.0" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.0" inputmask="0x08"><bounds x="30.6" y="10.0" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.0" inputmask="0x04"><bounds x="40.9" y="10.0" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.6" inputmask="0x08"><bounds x="51.2" y="10.0" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.7" inputmask="0x08"><bounds x="61.5" y="10.0" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.1" inputmask="0x01"><bounds x="10.0" y="20.3" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.1" inputmask="0x02"><bounds x="20.3" y="20.3" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.1" inputmask="0x08"><bounds x="30.6" y="20.3" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.1" inputmask="0x04"><bounds x="40.9" y="20.3" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.6" inputmask="0x02"><bounds x="51.2" y="20.3" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.7" inputmask="0x02"><bounds x="61.5" y="20.3" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.2" inputmask="0x01"><bounds x="10.0" y="30.6" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.2" inputmask="0x02"><bounds x="20.3" y="30.6" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.2" inputmask="0x08"><bounds x="30.6" y="30.6" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.2" inputmask="0x04"><bounds x="40.9" y="30.6" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.6" inputmask="0x01"><bounds x="51.2" y="30.6" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.7" inputmask="0x01"><bounds x="61.5" y="30.6" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.3" inputmask="0x01"><bounds x="10.0" y="40.9" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.3" inputmask="0x02"><bounds x="20.3" y="40.9" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.3" inputmask="0x08"><bounds x="30.6" y="40.9" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.3" inputmask="0x04"><bounds x="40.9" y="40.9" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.6" inputmask="0x04"><bounds x="51.2" y="40.9" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.7" inputmask="0x04"><bounds x="61.5" y="40.9" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.4" inputmask="0x01"><bounds x="10.0" y="51.2" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.4" inputmask="0x02"><bounds x="20.3" y="51.2" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.4" inputmask="0x08"><bounds x="30.6" y="51.2" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.4" inputmask="0x04"><bounds x="40.9" y="51.2" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.5" inputmask="0x04"><bounds x="51.2" y="51.2" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.5" inputmask="0x01"><bounds x="61.5" y="51.2" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.8" inputmask="0x01"><bounds x="10.0" y="61.5" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.8" inputmask="0x02"><bounds x="20.3" y="61.5" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.8" inputmask="0x08"><bounds x="30.6" y="61.5" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.8" inputmask="0x04"><bounds x="40.9" y="61.5" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.5" inputmask="0x02"><bounds x="51.2" y="61.5" width="10" height="10" /></bezel>
<bezel element="button" inputtag="IN.9" inputmask="0x02"><bounds x="61.5" y="61.5" width="10" height="10" /></bezel>
<bezel element="text_off"><bounds x="10.6" y="69.8" width="3" height="1.6" /></bezel>
<bezel element="text_on"><bounds x="67.9" y="69.8" width="2.3" height="1.6" /></bezel>
<bezel name="power_led" element="led"><bounds x="70.1" y="70.1" width="1" height="1" /></bezel> <!-- fake -->
</view>
</mamelayout>