mirror of
https://github.com/holub/mame
synced 2025-04-20 23:42:22 +03:00
mn1400: add i/o ports
This commit is contained in:
parent
eadecec11a
commit
63117eb131
@ -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
|
||||
|
||||
*/
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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<pla_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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -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()
|
||||
|
@ -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();
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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!
|
||||
|
@ -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')
|
||||
|
@ -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")
|
||||
|
@ -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")
|
||||
|
@ -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')
|
||||
|
Loading…
Reference in New Issue
Block a user