From d9d9aefdf103684021dce9ed5bb85b3ae64d96cf Mon Sep 17 00:00:00 2001 From: hap Date: Thu, 4 Apr 2019 14:31:31 +0200 Subject: New working clone added ---------- Boris (rev. 01) [Sean Riddle] --- src/mame/drivers/aci_boris.cpp | 23 +++++++++++++++++------ src/mame/drivers/fidel_cc7.cpp | 2 +- src/mame/includes/fidelbase.h | 3 ++- src/mame/machine/fidelbase.cpp | 5 ++++- src/mame/mame.lst | 1 + 5 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/mame/drivers/aci_boris.cpp b/src/mame/drivers/aci_boris.cpp index 55817b69224..457a9807166 100644 --- a/src/mame/drivers/aci_boris.cpp +++ b/src/mame/drivers/aci_boris.cpp @@ -5,8 +5,8 @@ Applied Concepts Boris (electronic chess computer) -- MK3850N-3 CPU @ 2 MHz, MK3853N memory interface -- 256 bytes RAM(2*2112), AMI 2KB ROM + AMI 1KB(?*) ROM *: less than 512 bytes used +- MK3850N-3 CPU @ 2 MHz from XTAL, MK3853N memory interface +- 256 bytes RAM(2*2112), 2*AMI 2KB ROM (2nd ROM only half used) - 8-digit 16seg led panel When it was first released, it was in kit form. An extensive assembly manual with @@ -14,6 +14,10 @@ schematics was included. It was later distributed by Chafitz in pre-assembled fo There's also an updated revision, identifiable by the startup message "Boris awaits your move"(same as Boris Master) instead of "Boris plays black". +Boris Master included a battery, RESET was renamed to MEMORY. 2 known versions: +one with C10617/C10617 ROMs(same as Boris rev. 01), and one with a single 4KB +ROM labeled 007-7027-00. + ******************************************************************************/ #include "emu.h" @@ -219,7 +223,7 @@ INPUT_PORTS_END void boris_state::boris(machine_config &config) { /* basic machine hardware */ - F8(config, m_maincpu, 2_MHz_XTAL); // MK3850, 2MHz XTAL according to schematics + F8(config, m_maincpu, 2_MHz_XTAL); // MK3850 m_maincpu->set_addrmap(AS_PROGRAM, &boris_state::main_map); m_maincpu->set_addrmap(AS_IO, &boris_state::main_io); m_maincpu->set_irq_acknowledge_callback("smi", FUNC(f3853_device::int_acknowledge)); @@ -241,9 +245,15 @@ void boris_state::boris(machine_config &config) ******************************************************************************/ ROM_START( boris ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD("007-7020-01_c10617", 0x0000, 0x0800, CRC(dadf1693) SHA1(ffaef7a78f07dfcec9cc6e4034d665d188748225) ) + ROM_LOAD("007-7021-01_c10618", 0x0800, 0x0800, CRC(89b10faa) SHA1(b86cf42f93051b29f398691270e9a860b2978043) ) // identical halves +ROM_END + +ROM_START( borisa ) ROM_REGION( 0x1000, "maincpu", 0 ) ROM_LOAD("007-7020-00_c10502", 0x0000, 0x0800, CRC(18182870) SHA1(cb717a4b5269b04b0d7ae61aaf4a8f6a019626a5) ) - ROM_LOAD("007-7021-00_c10503", 0x0800, 0x0400, CRC(49b77505) SHA1(474b665ee2955497f6d70878d817f1783ba1a835) ) + ROM_LOAD("007-7021-00_c10503", 0x0800, 0x0800, CRC(4185d183) SHA1(43155493593d6f52a0f6906d4414f4eff3098c5f) ) // identical halves, less than 512 bytes used ROM_END } // anonymous namespace @@ -254,5 +264,6 @@ ROM_END Drivers ******************************************************************************/ -// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS -COMP( 1978, boris, 0, 0, boris, boris, boris_state, empty_init, "Applied Concepts", "Boris", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_CLICKABLE_ARTWORK ) +// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS +COMP( 1978, boris, 0, 0, boris, boris, boris_state, empty_init, "Applied Concepts", "Boris (rev. 01)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_CLICKABLE_ARTWORK ) // "Boris awaits your move" +COMP( 1978, borisa, boris, 0, boris, boris, boris_state, empty_init, "Applied Concepts", "Boris (rev. 00)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_CLICKABLE_ARTWORK ) // "Boris plays black" diff --git a/src/mame/drivers/fidel_cc7.cpp b/src/mame/drivers/fidel_cc7.cpp index 40ca74b4b0f..72c90f85d4d 100644 --- a/src/mame/drivers/fidel_cc7.cpp +++ b/src/mame/drivers/fidel_cc7.cpp @@ -248,6 +248,6 @@ ROM_END // YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS CONS( 1979, cc7, 0, 0, bcc, bcc, bcc_state, empty_init, "Fidelity Electronics", "Chess Challenger 7 (model BCC, rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1979, cc7o, cc7, 0, bcc, bcc, bcc_state, empty_init, "Fidelity Electronics", "Chess Challenger 7 (model CC7)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1979, cc7o, cc7, 0, bcc, bcc, bcc_state, empty_init, "Fidelity Electronics", "Chess Challenger 7 (model CC7)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // 2nd revision of model CC7? CONS( 1979, backgamc, 0, 0, bkc, bkc, bcc_state, empty_init, "Fidelity Electronics", "Backgammon Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/includes/fidelbase.h b/src/mame/includes/fidelbase.h index 938c01cb1df..93d69c75f27 100644 --- a/src/mame/includes/fidelbase.h +++ b/src/mame/includes/fidelbase.h @@ -69,11 +69,12 @@ protected: // dynamic cpu divider void div_trampoline_w(offs_t offset, u8 data); u8 div_trampoline_r(offs_t offset); - void div_set_cpu_freq(offs_t offset); + inline void div_set_cpu_freq(offs_t offset); void div_trampoline(address_map &map); void div_refresh(ioport_value val = 0xff); u16 m_div_status; ioport_value m_div_config; + double m_div_scale; emu_timer *m_div_timer; virtual void machine_start() override; diff --git a/src/mame/machine/fidelbase.cpp b/src/mame/machine/fidelbase.cpp index 2195dae45f0..50e7387ff74 100644 --- a/src/mame/machine/fidelbase.cpp +++ b/src/mame/machine/fidelbase.cpp @@ -51,11 +51,13 @@ void fidelbase_state::machine_start() // zerofill/register for savestates m_speech_data = 0; m_speech_bank = 0; + m_div_config = 0; save_item(NAME(m_speech_data)); save_item(NAME(m_speech_bank)); save_item(NAME(m_div_status)); save_item(NAME(m_div_config)); + save_item(NAME(m_div_scale)); // dummy timer for cpu divider m_div_timer = machine().scheduler().timer_alloc(timer_expired_delegate(), this); @@ -110,7 +112,7 @@ void fidelbase_state::div_set_cpu_freq(offs_t offset) { // when a13/a14 is high, XTAL goes through divider(s) // (depending on factory-set jumper, either one or two 7474) - m_maincpu->set_clock_scale(offset ? ((m_div_config & 1) ? 0.25 : 0.5) : 1.0); + m_maincpu->set_clock_scale(offset ? m_div_scale : 1.0); m_div_status = offset; } @@ -152,6 +154,7 @@ void fidelbase_state::div_refresh(ioport_value val) m_maincpu->set_clock_scale(1.0); m_div_status = ~0; m_div_config = val; + m_div_scale = (m_div_config & 1) ? 0.25 : 0.5; // stop high frequency background timer if cpu divider is disabled attotime period = (val) ? attotime::from_hz(m_maincpu->clock()) : attotime::never; diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 1750b094c8d..3b6eddcbfda 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -874,6 +874,7 @@ sp_zigzgm // @source:aci_boris.cpp boris // +borisa // @source:aci_borisdpl.cpp borisdpl // -- cgit v1.2.3