From 9c08e3cb6a52d8fcc92b55151508770a2af12298 Mon Sep 17 00:00:00 2001 From: hap Date: Thu, 5 Sep 2019 00:40:37 +0200 Subject: New working machines -------------------- Kasparov Turbostar 432 [hap, anonymous] New working software list additions ----------------------------------- saitek_kso: Kasparov Selected Openings [Berger, anonymous] --- hash/saitek_kso.xml | 20 ++ src/mame/drivers/saitek_superstar.cpp | 86 +++++- src/mame/layout/saitek_tstar432.lay | 514 ++++++++++++++++++++++++++++++++++ src/mame/mame.lst | 1 + 4 files changed, 615 insertions(+), 6 deletions(-) create mode 100644 hash/saitek_kso.xml create mode 100644 src/mame/layout/saitek_tstar432.lay diff --git a/hash/saitek_kso.xml b/hash/saitek_kso.xml new file mode 100644 index 00000000000..a1d5155ea59 --- /dev/null +++ b/hash/saitek_kso.xml @@ -0,0 +1,20 @@ + + + + + + + + + + Kasparov Selected Openings + 1985 + SciSys + + + + + + + + diff --git a/src/mame/drivers/saitek_superstar.cpp b/src/mame/drivers/saitek_superstar.cpp index 3f61540178f..cc2521ae54f 100644 --- a/src/mame/drivers/saitek_superstar.cpp +++ b/src/mame/drivers/saitek_superstar.cpp @@ -13,23 +13,41 @@ Hardware notes (Superstar 28K): - 24KB ROM (3*M5L2764K) - TTL, buzzer, 28 LEDs, 8*8 chessboard buttons +Turbostar 432: +- PCB label: SUPERSTAR REV 3 +- R65C02P4 @ 4MHz +- 4KB RAM (2*HM6116P-4) +- 32KB ROM (custom label), extension ROM slot + +There are 2 versions of Turbostar 432, the 2nd one has a lighter shade and +the top-right is gray instead of red. + +I.C.D. (a reseller in USA, NY) also sold an overclocked version (first 5MHz, +and later 5.53MHz), and named it Turbostar 540 Plus. The ROM is unmodified, +so the internal chess clock would run too fast. + TODO: -- verify CPU speed -- add sstar36k, and Turbostar versions (assuming it's similar hardware) -- add KSO module, sstar28k doesn't support it? +- verify sstar28k CPU speed +- dump/add sstar36k (is it simply a 2MHz version of tstar432?) ******************************************************************************/ #include "emu.h" #include "cpu/m6502/m6502.h" +#include "cpu/m6502/r65c02.h" #include "machine/sensorboard.h" #include "sound/dac.h" #include "sound/volt_reg.h" #include "video/pwm.h" +#include "bus/generic/slot.h" +#include "bus/generic/carts.h" + +#include "softlist.h" #include "speaker.h" // internal artwork #include "saitek_sstar28k.lh" // clickable +#include "saitek_tstar432.lh" // clickable namespace { @@ -43,11 +61,13 @@ public: m_board(*this, "board"), m_display(*this, "display"), m_dac(*this, "dac"), + m_extrom(*this, "extrom"), m_inputs(*this, "IN.%u", 0) { } // machine drivers void sstar28k(machine_config &config); + void tstar432(machine_config &config); protected: virtual void machine_start() override; @@ -58,16 +78,20 @@ private: required_device m_board; required_device m_display; required_device m_dac; + optional_device m_extrom; required_ioport_array<2> m_inputs; // address maps - void main_map(address_map &map); + void sstar28k_map(address_map &map); + void tstar432_map(address_map &map); // I/O handlers DECLARE_WRITE8_MEMBER(control_w); DECLARE_READ8_MEMBER(input_r); u8 m_inp_mux; + + DECLARE_DEVICE_IMAGE_LOAD_MEMBER(extrom_load); }; void star_state::machine_start() @@ -82,6 +106,20 @@ void star_state::machine_start() I/O ******************************************************************************/ +// Extension ROM + +DEVICE_IMAGE_LOAD_MEMBER(star_state::extrom_load) +{ + u32 size = m_extrom->common_get_size("rom"); + m_extrom->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE); + m_extrom->common_load_rom(m_extrom->get_rom_base(), size, "rom"); + + return image_init_result::PASS; +} + + +// TTL + WRITE8_MEMBER(star_state::control_w) { // d0-d3: input mux, led select @@ -116,7 +154,7 @@ READ8_MEMBER(star_state::input_r) Address Maps ******************************************************************************/ -void star_state::main_map(address_map &map) +void star_state::sstar28k_map(address_map &map) { map(0x0000, 0x07ff).mirror(0x1800).ram(); map(0x2000, 0x27ff).mirror(0x1800).ram(); @@ -125,6 +163,14 @@ void star_state::main_map(address_map &map) map(0xa000, 0xffff).rom(); } +void star_state::tstar432_map(address_map &map) +{ + sstar28k_map(map); + + map(0x4000, 0x5fff).r("extrom", FUNC(generic_slot_device::read_rom)); + map(0x8000, 0x9fff).rom(); +} + /****************************************************************************** @@ -163,7 +209,7 @@ void star_state::sstar28k(machine_config &config) { /* basic machine hardware */ M6502(config, m_maincpu, 2000000); // no XTAL - m_maincpu->set_addrmap(AS_PROGRAM, &star_state::main_map); + m_maincpu->set_addrmap(AS_PROGRAM, &star_state::sstar28k_map); const attotime irq_period = attotime::from_hz(2000000 / 0x2000); // 4020 Q13 m_maincpu->set_periodic_int(FUNC(star_state::nmi_line_pulse), irq_period); @@ -182,6 +228,26 @@ void star_state::sstar28k(machine_config &config) VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); } +void star_state::tstar432(machine_config &config) +{ + sstar28k(config); + + /* basic machine hardware */ + R65C02(config.replace(), m_maincpu, 4_MHz_XTAL); + m_maincpu->set_addrmap(AS_PROGRAM, &star_state::tstar432_map); + + const attotime irq_period = attotime::from_hz(4_MHz_XTAL / 0x4000); // 4020 Q14 + m_maincpu->set_periodic_int(FUNC(star_state::nmi_line_pulse), irq_period); + + config.set_default_layout(layout_saitek_tstar432); + + /* extension rom */ + GENERIC_CARTSLOT(config, m_extrom, generic_plain_slot, "saitek_kso", "bin"); + m_extrom->set_device_load(FUNC(star_state::extrom_load), this); + + SOFTWARE_LIST(config, "cart_list").set_original("saitek_kso"); +} + /****************************************************************************** @@ -195,6 +261,12 @@ ROM_START( sstar28k ) ROM_LOAD("yo1c-v25_e0.u5", 0xe000, 0x2000, CRC(371b81fe) SHA1(c08dd0de8eebd7c1ed2d2281bf0241a83ee0f391) ) // " ROM_END + +ROM_START( tstar432 ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD("yo1d-j.u4", 0x8000, 0x8000, CRC(aa993096) SHA1(06db69a284eaf022b26e1087e09d8d459d270d03) ) +ROM_END + } // anonymous namespace @@ -205,3 +277,5 @@ ROM_END // YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS CONS( 1983, sstar28k, 0, 0, sstar28k, sstar28k, star_state, empty_init, "SciSys", "Superstar 28K", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) + +CONS( 1985, tstar432, 0, 0, tstar432, sstar28k, star_state, empty_init, "SciSys", "Kasparov Turbostar 432", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) diff --git a/src/mame/layout/saitek_tstar432.lay b/src/mame/layout/saitek_tstar432.lay new file mode 100644 index 00000000000..a4e44caf698 --- /dev/null +++ b/src/mame/layout/saitek_tstar432.lay @@ -0,0 +1,514 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 96f16da9be9..893da9150c4 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -34260,6 +34260,7 @@ tkingb @source:saitek_superstar.cpp sstar28k +tstar432 @source:sam.cpp 24_130 // -- cgit v1.2.3