summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--scripts/target/mame/mess.lua1
-rw-r--r--src/mame/drivers/conic_cchess2.cpp10
-rw-r--r--src/mame/drivers/conic_cchess3.cpp161
-rw-r--r--src/mame/mame.lst3
-rw-r--r--src/mame/mess.flt1
5 files changed, 172 insertions, 4 deletions
diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua
index f8f9e672ac4..72d252ced5e 100644
--- a/scripts/target/mame/mess.lua
+++ b/scripts/target/mame/mess.lua
@@ -2176,6 +2176,7 @@ files {
createMESSProjects(_target, _subtarget, "conic")
files {
MAME_DIR .. "src/mame/drivers/conic_cchess2.cpp",
+ MAME_DIR .. "src/mame/drivers/conic_cchess3.cpp",
}
createMESSProjects(_target, _subtarget, "consumenta")
diff --git a/src/mame/drivers/conic_cchess2.cpp b/src/mame/drivers/conic_cchess2.cpp
index 3f5150d7de3..f2613fee8a9 100644
--- a/src/mame/drivers/conic_cchess2.cpp
+++ b/src/mame/drivers/conic_cchess2.cpp
@@ -27,11 +27,13 @@ BTANB:
******************************************************************************/
#include "emu.h"
+
#include "cpu/m6502/m6504.h"
#include "machine/6821pia.h"
#include "machine/sensorboard.h"
#include "sound/dac.h"
#include "video/pwm.h"
+
#include "speaker.h"
// internal artwork
@@ -234,7 +236,7 @@ INPUT_PORTS_END
void cchess2_state::cncchess2(machine_config &config)
{
- /* basic machine hardware */
+ // basic machine hardware
M6504(config, m_maincpu, 1000000); // approximation, no XTAL
m_maincpu->set_addrmap(AS_PROGRAM, &cchess2_state::main_map);
@@ -251,11 +253,11 @@ void cchess2_state::cncchess2(machine_config &config)
m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess));
m_board->set_delay(attotime::from_msec(150));
- /* video hardware */
+ // video hardware
PWM_DISPLAY(config, m_display).set_size(8, 8);
config.set_default_layout(layout_conic_cchess2);
- /* sound hardware */
+ // sound hardware
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
}
@@ -267,7 +269,7 @@ void cchess2_state::cncchess2(machine_config &config)
******************************************************************************/
ROM_START( cncchess2 )
- ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_REGION( 0x2000, "maincpu", 0 )
ROM_LOAD("c11485.u2", 0x1000, 0x1000, CRC(b179d536) SHA1(0b1f9c247a4a3e2ccbf8d3ae5efa62b8938f572f) ) // AMI 2332
ROM_END
diff --git a/src/mame/drivers/conic_cchess3.cpp b/src/mame/drivers/conic_cchess3.cpp
new file mode 100644
index 00000000000..243278c67cf
--- /dev/null
+++ b/src/mame/drivers/conic_cchess3.cpp
@@ -0,0 +1,161 @@
+// license:BSD-3-Clause
+// copyright-holders:hap
+// thanks-to:Berger
+/******************************************************************************
+
+Conic Computer Chess (model 07013), more commonly known as Conic "Korchnoi".
+
+The interface is similar to the previous model (07012), where the user needs
+to press Enter after their move.
+
+Hardware notes:
+- Synertek 6502A @ 2MHz
+- OKI MSM5840H-41RS @ 3.57MHz (2KB internal ROM)
+- 2*4KB ROM(AMI), 1KB RAM(2*2114)
+- beeper, 8*8+4 leds, magnets chessboard
+
+TODO:
+- It does not work, MSM5840 is unemulated, and the internal ROM is not dumped.
+ MCU handles inputs, leds, sound, and it communicates with maincpu after
+ triggering an IRQ.
+
+******************************************************************************/
+
+#include "emu.h"
+
+#include "cpu/m6502/m6502.h"
+#include "machine/sensorboard.h"
+#include "sound/dac.h"
+#include "video/pwm.h"
+
+#include "speaker.h"
+
+// internal artwork
+//#include "conic_cchess3.lh" // clickable
+
+
+namespace {
+
+class cchess3_state : public driver_device
+{
+public:
+ cchess3_state(const machine_config &mconfig, device_type type, const char *tag) :
+ driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_board(*this, "board"),
+ m_display(*this, "display"),
+ m_dac(*this, "dac")
+ { }
+
+ // machine configs
+ void cncchess3(machine_config &config);
+
+protected:
+ virtual void machine_start() override;
+
+private:
+ // devices/pointers
+ required_device<cpu_device> m_maincpu;
+ required_device<sensorboard_device> m_board;
+ required_device<pwm_display_device> m_display;
+ required_device<dac_bit_interface> m_dac;
+
+ void main_map(address_map &map);
+
+ // I/O handlers
+ void main_comm_w(u8 data);
+ u8 main_comm_r();
+};
+
+void cchess3_state::machine_start()
+{
+}
+
+
+
+/******************************************************************************
+ I/O
+******************************************************************************/
+
+void cchess3_state::main_comm_w(u8 data)
+{
+}
+
+u8 cchess3_state::main_comm_r()
+{
+ return 0;
+}
+
+
+
+/******************************************************************************
+ Address Maps
+******************************************************************************/
+
+void cchess3_state::main_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x03ff).ram();
+ map(0x1000, 0x1000).rw(FUNC(cchess3_state::main_comm_r), FUNC(cchess3_state::main_comm_w));
+ map(0x2000, 0x3fff).rom();
+}
+
+
+
+/******************************************************************************
+ Input Ports
+******************************************************************************/
+
+static INPUT_PORTS_START( cncchess3 )
+INPUT_PORTS_END
+
+
+
+/******************************************************************************
+ Machine Configs
+******************************************************************************/
+
+void cchess3_state::cncchess3(machine_config &config)
+{
+ // basic machine hardware
+ M6502(config, m_maincpu, 2_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &cchess3_state::main_map);
+
+ SENSORBOARD(config, m_board).set_type(sensorboard_device::MAGNETS);
+ m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess));
+ m_board->set_delay(attotime::from_msec(150));
+
+ // video hardware
+ PWM_DISPLAY(config, m_display).set_size(8+1, 8);
+ //config.set_default_layout(layout_conic_cchess3);
+
+ // sound hardware
+ SPEAKER(config, "speaker").front_center();
+ DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
+}
+
+
+
+/******************************************************************************
+ ROM Definitions
+******************************************************************************/
+
+ROM_START( cncchess3 )
+ ROM_REGION( 0x4000, "maincpu", 0 )
+ ROM_LOAD("c107013-1", 0x2000, 0x1000, CRC(3251a529) SHA1(729b22d7653761ff0951ce1da58fdfcd474a700d) ) // AMI 2332
+ ROM_LOAD("c107013-2", 0x3000, 0x1000, CRC(0f38dcef) SHA1(f8fb7e12b41753fe52dd2eb2edb843211b5ca7c1) ) // "
+
+ ROM_REGION( 0x0800, "mcu", 0 )
+ ROM_LOAD("msm5840h-41rs", 0x0000, 0x0800, NO_DUMP )
+ROM_END
+
+} // anonymous namespace
+
+
+
+/******************************************************************************
+ Drivers
+******************************************************************************/
+
+// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
+CONS( 1981, cncchess3, 0, 0, cncchess3, cncchess3, cchess3_state, empty_init, "Conic", "Computer Chess (Conic, model 7013)", MACHINE_SUPPORTS_SAVE | MACHINE_IS_SKELETON )
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 964478252c7..95987a38562 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -10799,6 +10799,9 @@ concept // 1982 Corvus Concept
@source:conic_cchess2.cpp
cncchess2
+@source:conic_cchess3.cpp
+cncchess3
+
@source:consola_emt.cpp
consoemt //
diff --git a/src/mame/mess.flt b/src/mame/mess.flt
index c9f74340d49..1e597a7f6fd 100644
--- a/src/mame/mess.flt
+++ b/src/mame/mess.flt
@@ -199,6 +199,7 @@ comx35.cpp
concept.cpp
conchess.cpp
conic_cchess2.cpp
+conic_cchess3.cpp
consola_emt.cpp
controlid.cpp
cortex.cpp