From 20a03efe41b7d02ec80c1d711a2116f0dbaf1dec Mon Sep 17 00:00:00 2001 From: hap Date: Mon, 21 Jun 2021 14:00:45 +0200 Subject: New working software list additions ----------------------------------- lk3000: Calculator, Electronic Notebook [hap, Sean Riddle] New NOT_WORKING software list additions --------------------------------------- lk3000: English-German [hap, Sean Riddle] --- hash/lk3000.xml | 81 +++++++++++++++++ scripts/src/bus.lua | 2 - src/devices/bus/saitek_osa/expansion.cpp | 16 ++++ src/devices/bus/saitek_osa/expansion.h | 6 +- src/devices/bus/saitek_osa/modules.cpp | 22 ----- src/devices/bus/saitek_osa/modules.h | 16 ---- src/mame/drivers/ave_arb.cpp | 5 +- src/mame/drivers/hh_cops1.cpp | 4 +- src/mame/drivers/lk3000.cpp | 145 ++++++++++++++++++++++--------- 9 files changed, 209 insertions(+), 88 deletions(-) create mode 100644 hash/lk3000.xml delete mode 100644 src/devices/bus/saitek_osa/modules.cpp delete mode 100644 src/devices/bus/saitek_osa/modules.h diff --git a/hash/lk3000.xml b/hash/lk3000.xml new file mode 100644 index 00000000000..ad06a522df1 --- /dev/null +++ b/hash/lk3000.xml @@ -0,0 +1,81 @@ + + + + + + + + + + Calculator + 1979 + Lexicon + + + + + + + + + + English-German + 1979 + Lexicon + + + + + + + + + + + + Electronic Notebook + 1980 + Lexicon + + + + + + + + + + diff --git a/scripts/src/bus.lua b/scripts/src/bus.lua index 88345bbc04e..ae7ff3bfba9 100644 --- a/scripts/src/bus.lua +++ b/scripts/src/bus.lua @@ -4497,8 +4497,6 @@ if (BUSES["SAITEK_OSA"]~=null) then files { MAME_DIR .. "src/devices/bus/saitek_osa/expansion.cpp", MAME_DIR .. "src/devices/bus/saitek_osa/expansion.h", - MAME_DIR .. "src/devices/bus/saitek_osa/modules.cpp", - MAME_DIR .. "src/devices/bus/saitek_osa/modules.h", MAME_DIR .. "src/devices/bus/saitek_osa/maestro.cpp", MAME_DIR .. "src/devices/bus/saitek_osa/maestro.h", MAME_DIR .. "src/devices/bus/saitek_osa/maestroa.cpp", diff --git a/src/devices/bus/saitek_osa/expansion.cpp b/src/devices/bus/saitek_osa/expansion.cpp index bae1dfe0eb5..0c7e6be78bc 100644 --- a/src/devices/bus/saitek_osa/expansion.cpp +++ b/src/devices/bus/saitek_osa/expansion.cpp @@ -11,6 +11,10 @@ Used by Saitek(SciSys) chess computers Leonardo, Galileo, Renaissance. #include "emu.h" #include "expansion.h" +#include "maestro.h" +#include "maestroa.h" +#include "sparc.h" + //************************************************************************** // DEVICE DEFINITIONS @@ -153,3 +157,15 @@ device_saitekosa_expansion_interface::device_saitekosa_expansion_interface(const device_saitekosa_expansion_interface::~device_saitekosa_expansion_interface() { } + +//------------------------------------------------- +// module list +//------------------------------------------------- + +void saitekosa_expansion_modules(device_slot_interface &device) +{ + device.option_add("analyst", OSA_ANALYST); + device.option_add("maestro", OSA_MAESTRO); + device.option_add("maestroa", OSA_MAESTROA); + device.option_add("sparc", OSA_SPARC); +} diff --git a/src/devices/bus/saitek_osa/expansion.h b/src/devices/bus/saitek_osa/expansion.h index 2c245ada301..cb513bf2f4e 100644 --- a/src/devices/bus/saitek_osa/expansion.h +++ b/src/devices/bus/saitek_osa/expansion.h @@ -119,10 +119,10 @@ protected: saitekosa_expansion_device *m_expansion; }; +void saitekosa_expansion_modules(device_slot_interface &device); + + // device type definition DECLARE_DEVICE_TYPE(SAITEKOSA_EXPANSION, saitekosa_expansion_device) -// include here so drivers don't need to -#include "modules.h" - #endif // MAME_BUS_SAITEKOSA_EXPANSION_H diff --git a/src/devices/bus/saitek_osa/modules.cpp b/src/devices/bus/saitek_osa/modules.cpp deleted file mode 100644 index 19b7af1ff13..00000000000 --- a/src/devices/bus/saitek_osa/modules.cpp +++ /dev/null @@ -1,22 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:hap -/*************************************************************************** - - Saitek OSA Expansion Slot modules - -***************************************************************************/ - -#include "emu.h" -#include "modules.h" - -#include "maestro.h" -#include "maestroa.h" -#include "sparc.h" - -void saitekosa_expansion_modules(device_slot_interface &device) -{ - device.option_add("analyst", OSA_ANALYST); - device.option_add("maestro", OSA_MAESTRO); - device.option_add("maestroa", OSA_MAESTROA); - device.option_add("sparc", OSA_SPARC); -} diff --git a/src/devices/bus/saitek_osa/modules.h b/src/devices/bus/saitek_osa/modules.h deleted file mode 100644 index 009daf69cec..00000000000 --- a/src/devices/bus/saitek_osa/modules.h +++ /dev/null @@ -1,16 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:hap -/*************************************************************************** - - Saitek OSA Expansion Slot modules - -***************************************************************************/ - -#ifndef MAME_BUS_SAITEKOSA_MODULES_H -#define MAME_BUS_SAITEKOSA_MODULES_H - -#pragma once - -void saitekosa_expansion_modules(device_slot_interface &device); - -#endif // MAME_BUS_SAITEKOSA_MODULES_H diff --git a/src/mame/drivers/ave_arb.cpp b/src/mame/drivers/ave_arb.cpp index f9eebdfa314..5d2273d959d 100644 --- a/src/mame/drivers/ave_arb.cpp +++ b/src/mame/drivers/ave_arb.cpp @@ -38,6 +38,9 @@ TODO: ******************************************************************************/ #include "emu.h" + +#include "bus/generic/carts.h" +#include "bus/generic/slot.h" #include "cpu/m6502/m6502.h" #include "cpu/m6502/m65c02.h" #include "video/pwm.h" @@ -45,8 +48,6 @@ TODO: #include "machine/6522via.h" #include "machine/nvram.h" #include "sound/dac.h" -#include "bus/generic/slot.h" -#include "bus/generic/carts.h" #include "speaker.h" #include "softlist.h" diff --git a/src/mame/drivers/hh_cops1.cpp b/src/mame/drivers/hh_cops1.cpp index 12f23182242..f17c55c4f07 100644 --- a/src/mame/drivers/hh_cops1.cpp +++ b/src/mame/drivers/hh_cops1.cpp @@ -403,13 +403,13 @@ static INPUT_PORTS_START( qkracerm ) 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_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("8") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(u8"÷") PORT_START("IN.2") // DS8874 OUT 6 port K PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("4") 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_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("6") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME(UTF8_MULTIPLY) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME(u8"×") PORT_START("IN.3") // DS8874 OUT 7 port K PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1") diff --git a/src/mame/drivers/lk3000.cpp b/src/mame/drivers/lk3000.cpp index 47a1ab8dbaa..e1c7dd84b7d 100644 --- a/src/mame/drivers/lk3000.cpp +++ b/src/mame/drivers/lk3000.cpp @@ -8,7 +8,7 @@ It was also licensed to Nixdorf. Hardware notes: - 3870 MCU (Motorola brand) @ 4MHz(2MHz internal) -- optional extra ROM or RAM +- optional external ROM or RAM - 4*Litronix DL 1414 (16*17segs total) - 33-button keypad @@ -16,13 +16,20 @@ The CPU and memory is on the cartridge. In theory, any hardware configuration is possible, but it looks like they always used a 3870. cartridge types known: -- CPU + 4KB ROM (ROM may be unpopulated) +- CPU + 4/8KB ROM (ROM may be unpopulated) - CPU + 2*4KB ROM - CPU + 1KB battery-backed RAM (2*NEC D444) +TODO: +- external rom access doesn't work ("german" locks up) +- external ram should be battery-backed + ******************************************************************************/ #include "emu.h" + +#include "bus/generic/carts.h" +#include "bus/generic/slot.h" #include "cpu/f8/f8.h" #include "machine/f3853.h" #include "video/dl1416.h" @@ -40,6 +47,7 @@ public: driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_dl1414(*this, "dl1414_%u", 0), + m_cart(*this, "cartslot"), m_inputs(*this, "IN.%u", 0), m_digits(*this, "digit%u", 0U) { } @@ -56,12 +64,14 @@ private: // devices/pointers required_device m_maincpu; required_device_array m_dl1414; + required_device m_cart; required_ioport_array<8> m_inputs; output_finder<16> m_digits; void main_map(address_map &map); void main_io(address_map &map); + DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load); template void update_display(offs_t offset, u16 data); u8 p0_r(); @@ -77,17 +87,23 @@ private: u8 m_p1 = 0; u8 m_p4 = 0; u8 m_p5 = 0; + + bool m_has_ram = false; + u8 m_ram[0x400]; }; void lk3000_state::machine_start() { m_digits.resolve(); + memset(m_ram, 0xff, 0x400); // register for savestates save_item(NAME(m_p0)); save_item(NAME(m_p1)); save_item(NAME(m_p4)); save_item(NAME(m_p5)); + save_item(NAME(m_has_ram)); + save_item(NAME(m_ram)); } @@ -96,29 +112,62 @@ void lk3000_state::machine_start() I/O ******************************************************************************/ +// misc + +DEVICE_IMAGE_LOAD_MEMBER(lk3000_state::cart_load) +{ + u32 size = m_cart->common_get_size("rom"); + m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE); + m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom"); + + // extra ram (optional) + m_has_ram = image.get_feature("ram") != nullptr; + + return image_init_result::PASS; +} + template void lk3000_state::update_display(offs_t offset, u16 data) { m_digits[N * 4 + offset] = data; } + +// 3870 ports + u8 lk3000_state::p0_r() { - return 0; + return m_p0; } void lk3000_state::p0_w(u8 data) { + m_p0 = data; } u8 lk3000_state::p1_r() { - u8 data = 0; + u8 data = m_p1; // P10-P13: multiplexed inputs if (m_p4 & 0x10) data |= m_inputs[~m_p4 & 7]->read(); + // read rom data + if (m_p5 & 0x20) + { + // P00-P06: A0-A6, P50-P54: A7-A11, P07 selects chip + u16 offset = (m_p0 & 0x7f) | (m_p5 << 7 & 0xf80) | (m_p0 << 5 & 0x1000); + data |= m_cart->read_rom(offset + 0x800); + } + + // read ram data + if (m_has_ram && m_p4 & 0xc0) + { + u16 offset = (m_p0 & 0xff) | (m_p5 << 8 & 0x300); + data |= m_ram[offset]; + } + return data; } @@ -133,7 +182,7 @@ void lk3000_state::p1_w(u8 data) u8 lk3000_state::p4_r() { - return 0; + return m_p4; } void lk3000_state::p4_w(u8 data) @@ -146,17 +195,25 @@ void lk3000_state::p4_w(u8 data) for (int i = 0; i < 4; i++) m_dl1414[i]->wr_w(BIT(1 << (~data >> 2 & 0xb), i)); + // P46: write ram data + if (m_has_ram && ~data & m_p4 & 0x40) + { + u16 offset = (m_p0 & 0xff) | (m_p5 << 8 & 0x300); + m_ram[offset] = m_p1; + } + // P40,P41,P42,P44: 7442 to keypad mux m_p4 = data; } u8 lk3000_state::p5_r() { - return 0; + return m_p5; } void lk3000_state::p5_w(u8 data) { + m_p5 = data; } @@ -168,7 +225,7 @@ void lk3000_state::p5_w(u8 data) void lk3000_state::main_map(address_map &map) { map.global_mask(0x7ff); - map(0x0000, 0x07ff).rom(); + map(0x0000, 0x07ff).r("cartslot", FUNC(generic_slot_device::read_rom)); } void lk3000_state::main_io(address_map &map) @@ -186,55 +243,55 @@ void lk3000_state::main_io(address_map &map) static INPUT_PORTS_START( lk3000 ) PORT_START("IN.0") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_NAME("A / MET") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_NAME("B / US") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_NAME("C / X>M") + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_NAME("D / K") PORT_START("IN.1") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_NAME("J / C1") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_NAME("K / C2") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_NAME("L / RM") + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_NAME("M / %") PORT_START("IN.2") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_NAME("S / EXC") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_NAME("T / +/-") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_NAME("U / M+") + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("V / 0") PORT_START("IN.3") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_I) + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CHAR('e') PORT_NAME("E / 7") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CHAR('f') PORT_NAME("F / 8") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CHAR('g') PORT_NAME("G / 9") + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_SLASH_PAD) PORT_CHAR('h') PORT_NAME(u8"H / ÷") PORT_START("IN.4") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_CHAR('n') PORT_NAME("N / 4") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_CHAR('o') PORT_NAME("O / 5") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_CHAR('p') PORT_NAME("P / 6") + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR('q') PORT_NAME("Q / +") PORT_START("IN.5") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_G) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_H) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_J) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_CHAR('w') PORT_NAME("W / 1") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_CHAR('x') PORT_NAME("X / 2") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_CHAR('y') PORT_NAME("Y / 3") + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR('z') PORT_NAME("Z / .") PORT_START("IN.6") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('?') PORT_NAME("? / P2") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) PORT_NAME("bs / P1") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR('r') PORT_NAME("R / -") + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR('i') PORT_NAME(u8"I / ×") PORT_START("IN.7") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) PORT_NAME("def / P4") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_TAB) PORT_CHAR('\t') PORT_NAME("stp / P3") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(' ') PORT_NAME("sp / =") + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1)) PORT_NAME("f") PORT_START("RESET") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, lk3000_state, reset_button, 0) PORT_NAME("clr") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL) PORT_CHANGED_MEMBER(DEVICE_SELF, lk3000_state, reset_button, 0) PORT_CHAR(127) PORT_NAME("clr") INPUT_PORTS_END @@ -265,6 +322,13 @@ void lk3000_state::lk3000(machine_config &config) DL1414T(config, m_dl1414[2], u32(0)).update().set(FUNC(lk3000_state::update_display<2>)); DL1414T(config, m_dl1414[3], u32(0)).update().set(FUNC(lk3000_state::update_display<3>)); config.set_default_layout(layout_lk3000); + + // cartridge + GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "lk3000"); + m_cart->set_device_load(FUNC(lk3000_state::cart_load)); + m_cart->set_must_be_loaded(true); + + SOFTWARE_LIST(config, "cart_list").set_original("lk3000"); } @@ -276,7 +340,6 @@ void lk3000_state::lk3000(machine_config &config) ROM_START( lk3000 ) ROM_REGION( 0x0800, "maincpu", ROMREGION_ERASE00 ) // none here, it's in the module slot - //ROM_LOAD("sc80249p_lk3900m", 0x0000, 0x0800, CRC(192edfcf) SHA1(527216b6e15b9ab5f83742f437a5a8d8eef14ce2) ) // will be moved to swlist ROM_END } // anonymous namespace -- cgit v1.2.3