From f915c802c66b4097218bc10e9817397507b50d28 Mon Sep 17 00:00:00 2001 From: hap Date: Thu, 30 Mar 2023 21:24:25 +0200 Subject: New working systems ------------------- Les Maths Magiques (France) [hap, Sean Riddle] --- src/mame/handheld/tispeak.cpp | 14 +++--- src/mame/mame.lst | 1 + src/mame/ti/snspellc.cpp | 99 ++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 101 insertions(+), 13 deletions(-) diff --git a/src/mame/handheld/tispeak.cpp b/src/mame/handheld/tispeak.cpp index 1f51b549cf7..34e44133cb2 100644 --- a/src/mame/handheld/tispeak.cpp +++ b/src/mame/handheld/tispeak.cpp @@ -68,7 +68,7 @@ above expectations. TI continued to manufacture many products for this line. Speak & Spell (US), 1981 - MCU: same as 1980 version - TMS51xx: TMC0281D - - VSM: 16KB CD2350(rev.A) + - VSM: 16KB CD2350A - notes: only 1 VSM, meaning much smaller internal vocabulary Speak & Spell (Japan), 1980 @@ -124,7 +124,7 @@ Note that they are interchangeable, eg. you can use a French module on a US Spea English: - Vowel Power: VSM: 16KB CD2302 - Number Stumpers 4-6: VSM: 16KB CD2305 - - Number Stumpers 7-8: VSM: 16KB CD2307(rev.A) + - Number Stumpers 7-8: VSM: 16KB CD2307A - Basic Builders: VSM: 16KB CD2308 - Mighty Verbs: VSM: 16KB CD2309(rev.B) - Homonym Heroes: VSM: 16KB CD2310 @@ -169,16 +169,16 @@ Speak & Read: Speak & Read (US), 1980 - MCU: CD2705, label CD2705B-N2L (die label: TMC0270E, 2705B) - 2nd revision?(late-1981) - TMS51xx: CD2801 - - VSM(1/2): 16KB CD2394(rev.A) - - VSM(2/2): 16KB CD2395(rev.A) + - VSM(1/2): 16KB CD2394A + - VSM(2/2): 16KB CD2395A - VFD: same as Language Translator, rightmost digit unused Speak & Read modules: English: - - Sea Sights: VSM: 16KB CD2396(rev.A) + - Sea Sights: VSM: 16KB CD2396A - Who's Who at the Zoo: VSM: 16KB CD2397 - - A Dog on a Log: VSM: 16KB CD3534(rev.A) + - A Dog on a Log: VSM: 16KB CD3534A - The Seal That Could Fly: VSM: 16KB CD3535 - A Ghost in the House: VSM: 16KB CD3536 - On the Track: VSM: 16KB CD3538 @@ -287,7 +287,7 @@ namespace { // The typical osc freq curve for TMS5100 is unknown. Let's assume it is set to the default frequency, // which is 640kHz for 8KHz according to the TMS5100 documentation. -#define MASTER_CLOCK 640000 +static constexpr u32 MASTER_CLOCK = 640'000; class tispeak_state : public hh_tms1k_state diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 22f56dea06d..42ef1987782 100755 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -43476,6 +43476,7 @@ geneve // 1987 Myarc Geneve 9640 genmod // 1990 Myarc / Ron G. Walters Geneve 9640 Mod @source:ti/snspellc.cpp +mathsmag // snspellc // snspellca // snwrite // diff --git a/src/mame/ti/snspellc.cpp b/src/mame/ti/snspellc.cpp index b64d9147694..63e2a04b37d 100644 --- a/src/mame/ti/snspellc.cpp +++ b/src/mame/ti/snspellc.cpp @@ -8,13 +8,13 @@ Texas Instruments Speak & Spell Compact, Touch & Tell Speak & Spell Compact (US), 1981 - MCU: CD8011, label CD8011A-NL (die label: 1100B, CD8011A) - TMS51xx: TMC0281D (die label: T0280F 0281D) -- VSM: 16KB CD2354, CD2354(rev.A) +- VSM: 16KB CD2354, CD2354A - notes: no display, MCU is TMS1100 instead of TMS0270, overall similar to Touch & Tell Speak & Spell Compact (UK) "Speak & Write", 1981 - MCU: same as US 1981 version - TMS51xx: CD2801A -- VSM: 16KB CD62174(rev.A) +- VSM: 16KB CD62174A - notes: BTANB: gibberish when the module button is pressed (with module present) Speak & Spell Compact is compatible with Speak & Spell modules. @@ -36,7 +36,8 @@ Speak & Math 'Compact' (France) "Les Maths Magiques", 1982 - notes: this is not the same as "Le Calcul Magique", that's from a series centered around a TMS50C40 instead of MCU+TMS51xx -No known external modules were released. +There is no English version, but likewise there is no French version of the +regular Speak & Math. No known external modules were released. ================================================================================ @@ -76,7 +77,7 @@ Touch & Tell modules: English: - Alphabet Fun: VSM: 4KB CD2611 - Animal Friends: VSM: 16KB CD2355 -- Number Fun: VSM: 4KB CD2612*, CD2612(rev.A) +- Number Fun: VSM: 4KB CD2612*, CD2612A - All About Me: VSM: 4KB CD2613 - World of Transportation: VSM: 16KB CD2361 - Little Creatures: VSM: 16KB CD2362 @@ -171,6 +172,11 @@ $00: none inserted, and $1F is for diagnostics namespace { +// master clock for TMS5100, see snspell driver + +static constexpr u32 MASTER_CLOCK = 640'000; + + // Speak & Spell Compact / common class snspellc_state : public driver_device @@ -190,6 +196,7 @@ public: void tms5110_route(machine_config &config); void snspellc(machine_config &config); void snwrite(machine_config &config); + void mathsmag(machine_config &config); void init_snspellc(); @@ -218,8 +225,6 @@ protected: u16 m_inp_mux = 0; u16 m_o = 0; u32 m_r = 0; - - static constexpr u32 MASTER_CLOCK = 640'000; // approximation }; void snspellc_state::machine_start() @@ -534,6 +539,63 @@ static INPUT_PORTS_START( snwrite ) INPUT_PORTS_END +static INPUT_PORTS_START( mathsmag ) + PORT_START("IN.0") // R0 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME(u8"Répète") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_STOP) PORT_NAME(">") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_COMMA) PORT_NAME("<") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("Efface") + + PORT_START("IN.1") // R1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("7") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("4") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("0") + + PORT_START("IN.2") // R2 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("8") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("5") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN.3") // R3 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("6") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("3") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME("*") + + PORT_START("IN.4") // R4 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(u8"÷") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME(u8"×") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS_PAD) PORT_NAME("-") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("+") + + PORT_START("IN.5") // R5 + PORT_BIT( 0x0f, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN.6") // R6 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Q) PORT_NAME(u8"Problèmes") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_W) PORT_NAME("Plus grand, plus petit que") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_NAME(u8"Dictée") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN.7") // R7 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_HOME) PORT_NAME(u8"Départ / Continue") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Essaie") + + PORT_START("IN.8") // R8 + PORT_BIT( 0x0f, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN.9") // Vss! + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_F1) PORT_NAME("Marche / Calcule") PORT_CHANGED_MEMBER(DEVICE_SELF, snspellc_state, power_on, 0) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_F2) PORT_NAME(u8"Arrét") // -> auto_power_off + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) +INPUT_PORTS_END + + static INPUT_PORTS_START( tntell ) PORT_INCLUDE( overlay ) @@ -647,6 +709,15 @@ void snspellc_state::snwrite(machine_config &config) tms5110_route(config); } +void snspellc_state::mathsmag(machine_config &config) +{ + snwrite(config); + + // cartridge + m_cart->set_interface("mathsmag"); + config.device_remove("cart_list"); // N/A +} + void tntell_state::tntell(machine_config &config) { @@ -720,6 +791,20 @@ ROM_START( snwrite ) ROM_END +ROM_START( mathsmag ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "cp3447-nl", 0x0000, 0x0800, CRC(890751a1) SHA1(bd8bbd50f8ed31b2ae2d567c22cd92b21021bd20) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_mathsmag_output.pla", 0, 365, CRC(d21f19a2) SHA1(9781da173d473c255fa5cc5fcc8ae09c097c682d) ) + + ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge? + ROM_LOAD( "cd62173a.vsm", 0x0000, 0x4000, CRC(a7230863) SHA1(8a6d1742fb94555f3b3fe37554a7c46fe4213116) ) +ROM_END + + ROM_START( tntell ) ROM_REGION( 0x0800, "maincpu", 0 ) ROM_LOAD( "cd8012nl", 0x0000, 0x0800, CRC(3d0fee24) SHA1(8b1b1df03d50ffe8adea59ece212dece5245fe86) ) @@ -799,6 +884,8 @@ COMP( 1982, snspellc, 0, 0, snspellc, snspellc, snspellc_state, init COMP( 1981, snspellca, snspellc, 0, snspellc, snspellc, snspellc_state, init_snspellc, "Texas Instruments", "Speak & Spell Compact (US, 1981 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) COMP( 1982, snwrite, snspellc, 0, snwrite, snwrite, snspellc_state, init_snspellc, "Texas Instruments", "Speak & Write (UK)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +COMP( 1982, mathsmag, 0, 0, mathsmag, mathsmag, snspellc_state, init_snspellc, "Texas Instruments", "Les Maths Magiques (France)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) + COMP( 1981, tntell, 0, 0, tntell, tntell, tntell_state, init_tntell, "Texas Instruments", "Touch & Tell (US)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK | MACHINE_REQUIRES_ARTWORK ) COMP( 1980, tntellp, tntell, 0, tntell, tntell, tntell_state, init_tntell, "Texas Instruments", "Touch & Tell (US, patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING ) COMP( 1981, tntelluk, tntell, 0, tntell, tntell, tntell_state, init_tntell, "Texas Instruments", "Touch & Tell (UK)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK | MACHINE_REQUIRES_ARTWORK ) -- cgit v1.2.3