From 63117eb131602863cb7f0f4a98f1068180541195 Mon Sep 17 00:00:00 2001 From: hap Date: Sun, 7 May 2023 16:58:51 +0200 Subject: mn1400: add i/o ports --- src/devices/cpu/mn1400/mn1400.cpp | 6 ++- src/devices/cpu/mn1400/mn1400base.cpp | 93 +++++++++++++++++++++++++--------- src/devices/cpu/mn1400/mn1400base.h | 39 ++++++++++++-- src/devices/cpu/mn1400/mn1400op.cpp | 24 +++++++-- src/devices/cpu/tms1000/tms1k_base.cpp | 24 +++++---- src/mame/handheld/hh_mn1400.cpp | 32 +++++++++++- src/mame/ti/snspell.cpp | 8 +-- src/mame/ti/snspellc.cpp | 2 +- src/mame/ti/spellb.cpp | 8 +-- src/mame/tiger/k28.cpp | 2 +- src/mame/tiger/k28m2.cpp | 2 +- 11 files changed, 184 insertions(+), 56 deletions(-) diff --git a/src/devices/cpu/mn1400/mn1400.cpp b/src/devices/cpu/mn1400/mn1400.cpp index 3981866938b..974e8a9393c 100644 --- a/src/devices/cpu/mn1400/mn1400.cpp +++ b/src/devices/cpu/mn1400/mn1400.cpp @@ -5,7 +5,11 @@ Matsushita MN1400, MN1405 TODO: -- stuff +- counter input pin (CSLCT and SNS1) +- are illegal opcodes 0x38/0xe0 and 0x39/0xe1 branch-always and branch-never? + right now they're implemented as such +- is branch emulation correct when near the end of a page? +- add other MCUs when needed */ diff --git a/src/devices/cpu/mn1400/mn1400base.cpp b/src/devices/cpu/mn1400/mn1400base.cpp index d6868956925..409f9f9521a 100644 --- a/src/devices/cpu/mn1400/mn1400base.cpp +++ b/src/devices/cpu/mn1400/mn1400base.cpp @@ -6,7 +6,7 @@ 4-bit microcontroller introduced in 1977, possibly Matsushita's first MCU. -Basic models: +Basic MN1400 series: MN1400: 1KB ROM, 64 nibbles RAM MN1402: 768 bytes ROM, 32 nibbles RAM @@ -24,6 +24,13 @@ MN1435: high-voltage version of MN1405 MN1450/MN1460: CMOS version of MN1400 MN1455/MN1465: CMOS version of MN1405 +Other models: + +MN1450B: internal FLT driver +MN1456A: MN1455 with double amount ROM/RAM +MN148x: DAC for TV/VTR tuner +MN1427: support for FM audio tuner + */ #include "emu.h" @@ -34,12 +41,38 @@ mn1400_base_device::mn1400_base_device(const machine_config &mconfig, device_typ cpu_device(mconfig, type, tag, owner, clock), m_program_config("program", ENDIANNESS_LITTLE, 8, prgwidth, 0, program), m_data_config("data", ENDIANNESS_LITTLE, 8, datawidth, 0, data), + m_opla(*this, "opla"), m_stack_levels(stack_levels), m_prgwidth(prgwidth), - m_datawidth(datawidth) + m_datawidth(datawidth), + m_read_a(*this), + m_read_b(*this), + m_read_sns(*this), + m_write_c(*this), + m_write_d(*this), + m_write_e(*this) { } +//------------------------------------------------- +// disasm +//------------------------------------------------- + +void mn1400_base_device::state_string_export(const device_state_entry &entry, std::string &str) const +{ + switch (entry.index()) + { + case STATE_GENFLAGS: + str = string_format("%c%c%c", + (m_status & FLAG_P) ? 'P' : 'p', + (m_status & FLAG_C) ? 'C' : 'c', + (m_status & FLAG_Z) ? 'Z' : 'z' + ); + break; + } +} + + //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -52,6 +85,12 @@ void mn1400_base_device::device_start() m_datamask = (1 << m_datawidth) - 1; // resolve callbacks + m_read_a.resolve_safe(0xf); + m_read_b.resolve_safe(0xf); + m_read_sns.resolve_safe(3); + m_write_c.resolve_safe(); + m_write_d.resolve_safe(); + m_write_e.resolve_safe(); // zerofill m_pc = 0; @@ -104,28 +143,6 @@ void mn1400_base_device::device_start() set_icountptr(m_icount); } -device_memory_interface::space_config_vector mn1400_base_device::memory_space_config() const -{ - return space_config_vector { - std::make_pair(AS_PROGRAM, &m_program_config), - std::make_pair(AS_DATA, &m_data_config) - }; -} - -void mn1400_base_device::state_string_export(const device_state_entry &entry, std::string &str) const -{ - switch (entry.index()) - { - case STATE_GENFLAGS: - str = string_format("%c%c%c", - (m_status & FLAG_P) ? 'P' : 'p', - (m_status & FLAG_C) ? 'C' : 'c', - (m_status & FLAG_Z) ? 'Z' : 'z' - ); - break; - } -} - //------------------------------------------------- // device_reset - device-specific reset @@ -136,9 +153,27 @@ void mn1400_base_device::device_reset() m_pc = m_prev_pc = 0; m_op = m_prev_op = 0; m_status = 0; + m_ec = false; // clear output ports - m_c = 0; + m_write_c(m_c = 0); + write_d(0); + m_write_e(0); +} + + +//------------------------------------------------- +// D output port +//------------------------------------------------- + +void mn1400_base_device::device_add_mconfig(machine_config &config) +{ + PLA(config, m_opla, 5, 8, 24).set_format(pla_device::FMT::BERKELEY); +} + +void mn1400_base_device::write_d(u8 data) +{ + m_write_d(m_opla->read(data)); } @@ -146,6 +181,14 @@ void mn1400_base_device::device_reset() // common internal memory maps //------------------------------------------------- +device_memory_interface::space_config_vector mn1400_base_device::memory_space_config() const +{ + return space_config_vector { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config) + }; +} + void mn1400_base_device::program_1kx8(address_map &map) { map(0x000, 0x3ff).rom(); diff --git a/src/devices/cpu/mn1400/mn1400base.h b/src/devices/cpu/mn1400/mn1400base.h index b0596a46dd7..f7232d5a277 100644 --- a/src/devices/cpu/mn1400/mn1400base.h +++ b/src/devices/cpu/mn1400/mn1400base.h @@ -14,6 +14,8 @@ #pragma once +#include "machine/pla.h" + class mn1400_base_device : public cpu_device { @@ -21,6 +23,23 @@ public: // configuration helpers // I/O ports: + // 4-bit A/B input ports + auto read_a() { return m_read_a.bind(); } + auto read_b() { return m_read_b.bind(); } + + // SNS0/SNS1 input pins + auto read_sns() { return m_read_sns.bind(); } + + // up to 12-bit C output port + auto write_c() { return m_write_c.bind(); } + + // up to 8-bit D output port + // for 4-bit, it uses D1-D4 or D1-D3,D5 + auto write_d() { return m_write_d.bind(); } + + // 4-bit E output port + auto write_e() { return m_write_e.bind(); } + protected: // construction/destruction mn1400_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int stack_levels, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data); @@ -28,6 +47,7 @@ protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; + virtual void device_add_mconfig(machine_config &config) override; virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; @@ -42,15 +62,17 @@ protected: // device_memory_interface overrides virtual space_config_vector memory_space_config() const override; + void program_1kx8(address_map &map); + void program_2kx8(address_map &map); + void data_64x4(address_map &map); + void data_128x4(address_map &map); + address_space_config m_program_config; address_space_config m_data_config; address_space *m_program; address_space *m_data; - void program_1kx8(address_map &map); - void program_2kx8(address_map &map); - void data_64x4(address_map &map); - void data_128x4(address_map &map); + optional_device m_opla; // D port output PLA int m_icount; int m_state_count; @@ -61,6 +83,7 @@ protected: u16 m_prgmask; // " u16 m_datamask; // " + virtual void write_d(u8 data); virtual void cycle(); virtual void increment_pc(); virtual bool op_has_param(u8 op) = 0; @@ -71,7 +94,7 @@ protected: u8 m_prev_op; u8 m_param; u8 m_ram_address; - u16 m_stack[2]; + u16 m_stack[2]; // max 2 u8 m_sp; u8 m_a; @@ -90,6 +113,12 @@ protected: }; // i/o handlers + devcb_read8 m_read_a; + devcb_read8 m_read_b; + devcb_read8 m_read_sns; + devcb_write16 m_write_c; + devcb_write8 m_write_d; + devcb_write8 m_write_e; }; diff --git a/src/devices/cpu/mn1400/mn1400op.cpp b/src/devices/cpu/mn1400/mn1400op.cpp index eb37c18ebd8..21e51d4cc2b 100644 --- a/src/devices/cpu/mn1400/mn1400op.cpp +++ b/src/devices/cpu/mn1400/mn1400op.cpp @@ -208,9 +208,9 @@ void mn1400_cpu_device::op_xor() void mn1400_cpu_device::op_a() { - // A: add memory + carry to A - u8 c = (m_status & FLAG_C) ? 1 : 0; - m_a += ram_r() + c; + // A: add memory + CF to A + u8 cf = (m_status & FLAG_C) ? 1 : 0; + m_a += ram_r() + cf; set_cz(m_a); m_a &= 0xf; } @@ -314,46 +314,61 @@ void mn1400_cpu_device::op_tb() void mn1400_cpu_device::op_ina() { // INA: input from port A + m_a = m_read_a() & 0xf; + set_z(m_a); } void mn1400_cpu_device::op_inb() { // INB: input from port B + m_a = m_read_b() & 0xf; + set_z(m_a); } void mn1400_cpu_device::op_otd() { // OTD: output A + PS to port D + u8 ps = (m_status & FLAG_P) ? 1 : 0; + write_d(ps << 4 | m_a); } void mn1400_cpu_device::op_otmd() { // OTMD: output memory + PS to port D + u8 ps = (m_status & FLAG_P) ? 1 : 0; + write_d(ps << 4 | ram_r()); } void mn1400_cpu_device::op_ote() { // OTE: output A to port E + m_write_e(m_a); } void mn1400_cpu_device::op_otie() { // OTIE: output immediate to port E + m_write_e(m_op & 0xf); } void mn1400_cpu_device::op_rco() { // RCO: reset C pin + m_c &= ~(1 << m_y); + m_write_c(m_c); } void mn1400_cpu_device::op_sco() { // SCO: set C pin + m_c |= 1 << m_y; + m_write_c(m_c); } void mn1400_cpu_device::op_cco() { // CCO: clear C port + m_write_c(m_c = 0); } @@ -386,6 +401,9 @@ void mn1400_cpu_device::op_sp() void mn1400_cpu_device::op_bs01() { // BS(N)0/1: branch on S pins + u8 mask = m_read_sns() & (m_op >> 1 & 3); + if (bool(m_op & 1) == bool(mask)) + m_pc = (m_prev_pc & ~0xff) | m_param; } void mn1400_cpu_device::op_bpcz() diff --git a/src/devices/cpu/tms1000/tms1k_base.cpp b/src/devices/cpu/tms1000/tms1k_base.cpp index 28ef3121199..7fb2395f639 100644 --- a/src/devices/cpu/tms1000/tms1k_base.cpp +++ b/src/devices/cpu/tms1000/tms1k_base.cpp @@ -93,7 +93,12 @@ tms1k_base_device::tms1k_base_device(const machine_config &mconfig, device_type m_decode_micro(*this) { } -// disasm + + +//------------------------------------------------- +// disasm +//------------------------------------------------- + void tms1k_base_device::state_string_export(const device_state_entry &entry, std::string &str) const { switch (entry.index()) @@ -118,6 +123,7 @@ void tms1k_base_device::state_string_export(const device_state_entry &entry, std } + //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -242,14 +248,6 @@ void tms1k_base_device::device_start() set_icountptr(m_icount); } -device_memory_interface::space_config_vector tms1k_base_device::memory_space_config() const -{ - return space_config_vector { - std::make_pair(AS_PROGRAM, &m_program_config), - std::make_pair(AS_DATA, &m_data_config) - }; -} - //------------------------------------------------- @@ -291,6 +289,14 @@ void tms1k_base_device::device_reset() // common internal memory maps //------------------------------------------------- +device_memory_interface::space_config_vector tms1k_base_device::memory_space_config() const +{ + return space_config_vector { + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config) + }; +} + void tms1k_base_device::rom_10bit(address_map &map) { map(0x000, 0x3ff).rom(); diff --git a/src/mame/handheld/hh_mn1400.cpp b/src/mame/handheld/hh_mn1400.cpp index 7befe2ce49d..d8aa905ecc7 100644 --- a/src/mame/handheld/hh_mn1400.cpp +++ b/src/mame/handheld/hh_mn1400.cpp @@ -125,10 +125,17 @@ public: void compperf(machine_config &config); private: + void write_e(u8 data); }; // handlers +void compperf_state::write_e(u8 data) +{ + // E2,E3: speaker out + m_speaker->level_w(data >> 2 & 3); +} + // inputs static INPUT_PORTS_START( compperf ) @@ -140,6 +147,7 @@ void compperf_state::compperf(machine_config &config) { // basic machine hardware MN1400(config, m_maincpu, 300000); // approximation - RC osc. R=18K, C=100pF + m_maincpu->write_e().set(FUNC(compperf_state::write_e)); // video hardware PWM_DISPLAY(config, m_display).set_size(1, 10); @@ -147,7 +155,10 @@ void compperf_state::compperf(machine_config &config) // sound hardware SPEAKER(config, "mono").front_center(); - SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25); + SPEAKER_SOUND(config, m_speaker); + static const double speaker_levels[4] = { 0.0, 1.0, -1.0, 0.0 }; + m_speaker->set_levels(4, speaker_levels); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.125); } // roms @@ -155,6 +166,9 @@ void compperf_state::compperf(machine_config &config) ROM_START( compperf ) ROM_REGION( 0x0400, "maincpu", 0 ) ROM_LOAD( "mn1400ml", 0x0000, 0x0400, NO_DUMP ) + + ROM_REGION( 200, "maincpu:opla", 0 ) + ROM_LOAD( "mn1400_compperf_output.pla", 0, 200, NO_DUMP ) ROM_END @@ -182,10 +196,17 @@ public: void scrablexa(machine_config &config); private: + void write_e(u8 data); }; // handlers +void scrablexa_state::write_e(u8 data) +{ + // E2,E3: speaker out + m_speaker->level_w(data >> 2 & 3); +} + // inputs static INPUT_PORTS_START( scrablexa ) @@ -197,6 +218,7 @@ void scrablexa_state::scrablexa(machine_config &config) { // basic machine hardware MN1405(config, m_maincpu, 300000); // approximation - RC osc. R=15K, C=100pF + m_maincpu->write_e().set(FUNC(scrablexa_state::write_e)); // video hardware PWM_DISPLAY(config, m_display).set_size(1, 1); @@ -204,7 +226,10 @@ void scrablexa_state::scrablexa(machine_config &config) // sound hardware SPEAKER(config, "mono").front_center(); - SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25); + SPEAKER_SOUND(config, m_speaker); + static const double speaker_levels[4] = { 0.0, 1.0, -1.0, 0.0 }; + m_speaker->set_levels(4, speaker_levels); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.125); } // roms @@ -212,6 +237,9 @@ void scrablexa_state::scrablexa(machine_config &config) ROM_START( scrablexa ) ROM_REGION( 0x0800, "maincpu", 0 ) ROM_LOAD( "mn1405ms", 0x0000, 0x0800, NO_DUMP ) + + ROM_REGION( 200, "maincpu:opla", 0 ) + ROM_LOAD( "mn1400_scrablexa_output.pla", 0, 200, NO_DUMP ) ROM_END diff --git a/src/mame/ti/snspell.cpp b/src/mame/ti/snspell.cpp index b9ea1527621..c095a6910c1 100644 --- a/src/mame/ti/snspell.cpp +++ b/src/mame/ti/snspell.cpp @@ -508,7 +508,7 @@ static INPUT_PORTS_START( snspell ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_CHAR('Z') PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'') PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_NAME("Module Select") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(127) PORT_NAME("Erase") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) PORT_NAME("Erase") PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) PORT_NAME("Enter") PORT_START("IN.6") // R6 @@ -534,7 +534,7 @@ static INPUT_PORTS_START( snspellfr ) // French button names PORT_MODIFY("IN.5") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_NAME("Module 2") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(127) PORT_NAME("Efface") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) PORT_NAME("Efface") PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) PORT_NAME("Essaie") PORT_MODIFY("IN.7") @@ -557,7 +557,7 @@ static INPUT_PORTS_START( snspellit ) // Italian button names PORT_MODIFY("IN.5") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_NAME("Moduli") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(127) PORT_NAME("Cancella") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) PORT_NAME("Cancella") PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) PORT_NAME("Controllo") PORT_MODIFY("IN.7") @@ -625,7 +625,7 @@ static INPUT_PORTS_START( snspellsp ) // Spanish button names, different alphabe PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'') PORT_NAME("Acento") PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_HOME) PORT_NAME("Listo") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_NAME("Programa") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(127) PORT_NAME("Borra") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) PORT_NAME("Borra") PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_NAME("Repite") PORT_START("IN.8") // Vss! diff --git a/src/mame/ti/snspellc.cpp b/src/mame/ti/snspellc.cpp index 3c3971c3afb..da38401ebd4 100644 --- a/src/mame/ti/snspellc.cpp +++ b/src/mame/ti/snspellc.cpp @@ -490,7 +490,7 @@ static INPUT_PORTS_START( snspellc ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V) PORT_CHAR('V') PORT_START("IN.4") // R4 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(127) PORT_NAME("Erase") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) PORT_NAME("Erase") PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_CHAR('E') PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N) PORT_CHAR('N') PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_CHAR('W') diff --git a/src/mame/ti/spellb.cpp b/src/mame/ti/spellb.cpp index 6775c5947e5..3746840bf04 100644 --- a/src/mame/ti/spellb.cpp +++ b/src/mame/ti/spellb.cpp @@ -325,7 +325,7 @@ static INPUT_PORTS_START( spellb ) PORT_START("IN.5") // R5 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_NAME("Memory") PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_NAME("Clue") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(127) PORT_NAME("Erase") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) PORT_NAME("Erase") PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) PORT_NAME("Enter") PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_CHAR('Z') @@ -350,7 +350,7 @@ static INPUT_PORTS_START( spellabc ) PORT_MODIFY("IN.5") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_NAME("Speicher") PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_NAME("Rat") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(127) PORT_NAME("Tilgen") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) PORT_NAME("Tilgen") PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) PORT_NAME("Eingabe") PORT_MODIFY("IN.6") @@ -386,7 +386,7 @@ static INPUT_PORTS_START( letterlf ) PORT_MODIFY("IN.5") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_NAME("Joueur 2") PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_NAME("Aide") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(127) PORT_NAME("Effacez") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) PORT_NAME("Effacez") PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) PORT_NAME("Marque") PORT_MODIFY("IN.6") @@ -406,7 +406,7 @@ static INPUT_PORTS_START( letterlg ) PORT_MODIFY("IN.5") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_NAME("Spieler 2") PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_NAME("Rat") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(127) PORT_NAME("Tilgen") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) PORT_NAME("Tilgen") PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) PORT_NAME("Punkte") PORT_MODIFY("IN.6") diff --git a/src/mame/tiger/k28.cpp b/src/mame/tiger/k28.cpp index c93a3232329..34be91990fd 100644 --- a/src/mame/tiger/k28.cpp +++ b/src/mame/tiger/k28.cpp @@ -237,7 +237,7 @@ static INPUT_PORTS_START( k28 ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA) PORT_NAME("<") PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I) PORT_CHAR('I') PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_CHAR('S') - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(127) PORT_NAME("Erase/Clear") + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) PORT_NAME("Erase/Clear") PORT_START("IN.2") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_HOME) PORT_NAME("Menu") diff --git a/src/mame/tiger/k28m2.cpp b/src/mame/tiger/k28m2.cpp index f8547de9751..0e871125329 100644 --- a/src/mame/tiger/k28m2.cpp +++ b/src/mame/tiger/k28m2.cpp @@ -271,7 +271,7 @@ static INPUT_PORTS_START( k28m2 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_CHAR('Y') PORT_START("IN.7") // O7 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(127) PORT_NAME("Clear") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) PORT_NAME("Clear") PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CHAR('H') PORT_NAME("H/8") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_CHAR('Q') PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_CHAR('Z') -- cgit v1.2.3