diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index 4ef2d162be6..45b82a5353e 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -1258,8 +1258,8 @@ function linkProjects_mame_mess(_target, _subtarget) "eaca", "einis", "elektor", - "elektrka", "elektron", + "elektronika", "emusys", "ensoniq", "enterprise", @@ -2328,22 +2328,6 @@ files { MAME_DIR .. "src/mame/video/pecom.cpp", } -createMESSProjects(_target, _subtarget, "elektrka") -files { - MAME_DIR .. "src/mame/drivers/bk.cpp", - MAME_DIR .. "src/mame/includes/bk.h", - MAME_DIR .. "src/mame/machine/bk.cpp", - MAME_DIR .. "src/mame/drivers/dvk_kcgd.cpp", - MAME_DIR .. "src/mame/drivers/dvk_ksm.cpp", - MAME_DIR .. "src/mame/machine/ms7004.cpp", - MAME_DIR .. "src/mame/machine/ms7004.h", - MAME_DIR .. "src/mame/drivers/mk85.cpp", - MAME_DIR .. "src/mame/drivers/mk90.cpp", - MAME_DIR .. "src/mame/drivers/ms6102.cpp", - MAME_DIR .. "src/mame/machine/kr1601rr1.cpp", - MAME_DIR .. "src/mame/machine/kr1601rr1.h", -} - createMESSProjects(_target, _subtarget, "elektor") files { MAME_DIR .. "src/mame/drivers/avrmax.cpp", @@ -2357,6 +2341,23 @@ files { MAME_DIR .. "src/mame/drivers/elektronmono.cpp", } +createMESSProjects(_target, _subtarget, "elektronika") +files { + MAME_DIR .. "src/mame/drivers/bk.cpp", + MAME_DIR .. "src/mame/includes/bk.h", + MAME_DIR .. "src/mame/machine/bk.cpp", + MAME_DIR .. "src/mame/drivers/dvk_kcgd.cpp", + MAME_DIR .. "src/mame/drivers/dvk_ksm.cpp", + MAME_DIR .. "src/mame/drivers/im01.cpp", + MAME_DIR .. "src/mame/machine/ms7004.cpp", + MAME_DIR .. "src/mame/machine/ms7004.h", + MAME_DIR .. "src/mame/drivers/mk85.cpp", + MAME_DIR .. "src/mame/drivers/mk90.cpp", + MAME_DIR .. "src/mame/drivers/ms6102.cpp", + MAME_DIR .. "src/mame/machine/kr1601rr1.cpp", + MAME_DIR .. "src/mame/machine/kr1601rr1.h", +} + createMESSProjects(_target, _subtarget, "emusys") files { MAME_DIR .. "src/mame/drivers/emax.cpp", diff --git a/src/mame/drivers/im01.cpp b/src/mame/drivers/im01.cpp new file mode 100644 index 00000000000..2b4bc84cb73 --- /dev/null +++ b/src/mame/drivers/im01.cpp @@ -0,0 +1,149 @@ +// license:BSD-3-Clause +// copyright-holders:hap +/****************************************************************************** + +Электроника ИМ-01 (Elektronika IM-01) + +Soviet chess computer, produced by Svetana from 1986-1992. +IM-01T is the same hardware, the program has more difficulty levels. + +Hardware notes: +- К1801ВМ1 CPU (PDP-11 derived) +- 16KB ROM (2*К1809РЕ1), 4KB RAM(К1809РУ1) +- K1809BB1 (I/O, counter) +- 4-digit 7seg panel, beeper + +TODO: +- emulate К1801ВМ1, using T11 for now and I hope it works ok +- emulate K1809BB1 +- inputs, 7segs, sound +- cpu frequency, irq frequency + +******************************************************************************/ + +#include "emu.h" + +#include "cpu/t11/t11.h" + + +namespace { + +class im01_state : public driver_device +{ +public: + im01_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu") + { } + + void im01(machine_config &config); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + +private: + required_device m_maincpu; + + void main_map(address_map &map); + + u8 irq_callback(offs_t offset); + INTERRUPT_GEN_MEMBER(interrupt); +}; + +void im01_state::machine_start() +{ +} + +void im01_state::machine_reset() +{ + m_maincpu->set_input_line(t11_device::VEC_LINE, ASSERT_LINE); +} + + + +/****************************************************************************** + Interrupts +******************************************************************************/ + +u8 im01_state::irq_callback(offs_t offset) +{ + m_maincpu->set_input_line(t11_device::CP0_LINE, CLEAR_LINE); + m_maincpu->set_input_line(t11_device::CP1_LINE, CLEAR_LINE); + m_maincpu->set_input_line(t11_device::CP3_LINE, CLEAR_LINE); + return 0; +} + +INTERRUPT_GEN_MEMBER(im01_state::interrupt) +{ + // indirect interrupt vector at 0100 + m_maincpu->set_input_line(t11_device::CP0_LINE, ASSERT_LINE); + m_maincpu->set_input_line(t11_device::CP1_LINE, ASSERT_LINE); + m_maincpu->set_input_line(t11_device::CP3_LINE, ASSERT_LINE); +} + + + +/****************************************************************************** + I/O +******************************************************************************/ + + + +/****************************************************************************** + Address Maps +******************************************************************************/ + +void im01_state::main_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x2000, 0x5fff).rom(); +} + + + +/****************************************************************************** + Input Ports +******************************************************************************/ + +static INPUT_PORTS_START( im01 ) +INPUT_PORTS_END + + + +/****************************************************************************** + Machine Configs +******************************************************************************/ + +void im01_state::im01(machine_config &config) +{ + // basic machine hardware + T11(config, m_maincpu, 5'000'000); + m_maincpu->set_initial_mode(3 << 13); + m_maincpu->set_addrmap(AS_PROGRAM, &im01_state::main_map); + m_maincpu->in_iack().set(FUNC(im01_state::irq_callback)); + m_maincpu->set_periodic_int(FUNC(im01_state::interrupt), attotime::from_hz(50)); +} + + + +/****************************************************************************** + ROM Definitions +******************************************************************************/ + +ROM_START( im01 ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD("0000148", 0x2000, 0x2000, CRC(327c6055) SHA1(b90b3b1261d677eb93014ea9e809e45b3b25152a) ) + ROM_LOAD("0000149", 0x4000, 0x2000, CRC(43b14589) SHA1(b083b631f38a26a335226bc474669ef7f332f541) ) +ROM_END + +} // anonymous namespace + + + +/****************************************************************************** + Drivers +******************************************************************************/ + +// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS +CONS( 1986, im01, 0, 0, im01, im01, im01_state, empty_init, "Svetlana", "Elektronika IM-01", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/intellect02.cpp b/src/mame/drivers/intellect02.cpp index 016f0bb5cf4..4f68c243a99 100644 --- a/src/mame/drivers/intellect02.cpp +++ b/src/mame/drivers/intellect02.cpp @@ -39,12 +39,13 @@ keypad legend: #include "emu.h" +#include "bus/generic/slot.h" +#include "bus/generic/carts.h" #include "cpu/i8085/i8085.h" #include "machine/i8255.h" #include "sound/beep.h" #include "video/pwm.h" -#include "bus/generic/slot.h" -#include "bus/generic/carts.h" + #include "softlist.h" #include "speaker.h" @@ -215,7 +216,7 @@ INPUT_PORTS_END void intel02_state::intel02(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware I8080A(config, m_maincpu, 1500000); // measured (no XTAL) m_maincpu->set_addrmap(AS_PROGRAM, &intel02_state::main_map); m_maincpu->set_addrmap(AS_IO, &intel02_state::main_io); @@ -227,17 +228,17 @@ void intel02_state::intel02(machine_config &config) m_ppi8255->out_pc_callback().set(FUNC(intel02_state::control_w)); m_ppi8255->tri_pc_callback().set_constant(0x80); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(6, 7); m_display->set_segmask(0xf, 0x7f); config.set_default_layout(layout_intellect02); - /* sound hardware */ + // sound hardware SPEAKER(config, "speaker").front_center(); BEEP(config, m_beeper, 3640); // measured, from RC circuit m_beeper->add_route(ALL_OUTPUTS, "speaker", 0.25); - /* cartridge */ + // cartridge GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "intellect02").set_must_be_loaded(true); SOFTWARE_LIST(config, "cart_list").set_original("intellect02"); } diff --git a/src/mame/drivers/saitek_cp2000.cpp b/src/mame/drivers/saitek_cp2000.cpp index 78b4f609857..7a859615626 100644 --- a/src/mame/drivers/saitek_cp2000.cpp +++ b/src/mame/drivers/saitek_cp2000.cpp @@ -26,11 +26,13 @@ Capturing pieces is also unintuitive, having to press the destination square twi ******************************************************************************/ #include "emu.h" + #include "cpu/f8/f8.h" #include "machine/f3853.h" -#include "video/pwm.h" #include "machine/sensorboard.h" #include "sound/dac.h" +#include "video/pwm.h" + #include "speaker.h" // internal artwork @@ -213,7 +215,7 @@ INPUT_PORTS_END void cp2000_state::cp2000(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware F8(config, m_maincpu, 2750000); // see driver notes m_maincpu->set_addrmap(AS_PROGRAM, &cp2000_state::main_map); m_maincpu->set_addrmap(AS_IO, &cp2000_state::main_io); @@ -226,12 +228,12 @@ void cp2000_state::cp2000(machine_config &config) m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); m_board->set_delay(attotime::from_msec(100)); - /* video hardware */ + // video hardware PWM_DISPLAY(config, m_display).set_size(4, 7); m_display->set_segmask(0xf, 0x7f); config.set_default_layout(layout_saitek_cp2000); - /* sound hardware */ + // sound hardware SPEAKER(config, "speaker").front_center(); DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25); } diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 99ff571b1cf..b46808fb488 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -17140,6 +17140,9 @@ ikki // TVG17 (c) 1985 Sun Electronics (Japan) @source:ikt5a.cpp ikt5a // +@source:im01.cpp +im01 + @source:imds2.cpp imds2 // Intellec MDS series-II diff --git a/src/mame/mess.flt b/src/mame/mess.flt index a3dd243601c..ebb1b8afafe 100644 --- a/src/mame/mess.flt +++ b/src/mame/mess.flt @@ -449,6 +449,7 @@ ie15.cpp iez80.cpp if800.cpp ikt5a.cpp +im01.cpp imds2.cpp imsai.cpp indiana.cpp