diff options
author | 2017-04-21 16:39:44 +0100 | |
---|---|---|
committer | 2017-04-21 16:42:52 +0100 | |
commit | 735ab4f3551840a5c642c2ae719fdd578e9fc154 (patch) | |
tree | 4a38c7ed92df805461a00cfeab5f0f634b30ed72 /src/devices/bus/electron | |
parent | 5ed2b2aaaf11535acbc9b71d075210701073ba32 (diff) |
electron: Added Power Software joystick interface
Diffstat (limited to 'src/devices/bus/electron')
-rw-r--r-- | src/devices/bus/electron/exp.cpp | 4 | ||||
-rw-r--r-- | src/devices/bus/electron/pwrjoy.cpp | 97 | ||||
-rw-r--r-- | src/devices/bus/electron/pwrjoy.h | 52 |
3 files changed, 151 insertions, 2 deletions
diff --git a/src/devices/bus/electron/exp.cpp b/src/devices/bus/electron/exp.cpp index d3f719d02e7..93175809a57 100644 --- a/src/devices/bus/electron/exp.cpp +++ b/src/devices/bus/electron/exp.cpp @@ -105,7 +105,7 @@ void electron_expansion_slot_device::device_reset() //#include "jafamode7.h" //#include "plus1.h" #include "plus3.h" -//#include "pwrjoy.h" +#include "pwrjoy.h" //#include "rombox.h" //#include "romboxplus.h" #include "m2105.h" @@ -119,7 +119,7 @@ SLOT_INTERFACE_START( electron_expansion_devices ) //SLOT_INTERFACE("jafamode7", ELECTRON_JAFAMODE7) //SLOT_INTERFACE("plus1", ELECTRON_PLUS1) SLOT_INTERFACE("plus3", ELECTRON_PLUS3) - //SLOT_INTERFACE("pwrjoy", ELECTRON_PWRJOY) + SLOT_INTERFACE("pwrjoy", ELECTRON_PWRJOY) //SLOT_INTERFACE("rombox", ELECTRON_ROMBOX) //SLOT_INTERFACE("romboxplus", ELECTRON_ROMBOXPLUS) SLOT_INTERFACE("m2105", ELECTRON_M2105) diff --git a/src/devices/bus/electron/pwrjoy.cpp b/src/devices/bus/electron/pwrjoy.cpp new file mode 100644 index 00000000000..02f65b277e9 --- /dev/null +++ b/src/devices/bus/electron/pwrjoy.cpp @@ -0,0 +1,97 @@ +// license:BSD-3-Clause +// copyright-holders:Nigel Barnes +/********************************************************************** + + Power Software Joystick Interface + +**********************************************************************/ + +#include "emu.h" +#include "pwrjoy.h" + +//************************************************************************** +// DEVICE DEFINITIONS +//************************************************************************** + +const device_type ELECTRON_PWRJOY = device_creator<electron_pwrjoy_device>; + + +ROM_START( pwrjoy ) + // Bank 12 Expansion module operating system + ROM_REGION(0x2000, "exp_rom", 0) + ROM_LOAD("power_joystick.rom", 0x0000, 0x2000, CRC(44fb9360) SHA1(6d3aa85a436db952906e84839496e681ea115168)) +ROM_END + + +static INPUT_PORTS_START( pwrjoy ) + PORT_START("JOY") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) PORT_8WAY + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN) PORT_8WAY + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT) PORT_8WAY + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_8WAY + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_NAME("Fire") +INPUT_PORTS_END + + +//------------------------------------------------- +// input_ports - device-specific input ports +//------------------------------------------------- + +ioport_constructor electron_pwrjoy_device::device_input_ports() const +{ + return INPUT_PORTS_NAME( pwrjoy ); +} + +const tiny_rom_entry *electron_pwrjoy_device::device_rom_region() const +{ + return ROM_NAME( pwrjoy ); +} + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// electron_pwrjoy_device - constructor +//------------------------------------------------- + +electron_pwrjoy_device::electron_pwrjoy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, ELECTRON_PWRJOY, "Power Software Joystick Interface", tag, owner, clock, "electron_pwrjoy", __FILE__), + device_electron_expansion_interface(mconfig, *this), + m_exp_rom(*this, "exp_rom"), + m_joy(*this, "JOY") +{ +} + + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void electron_pwrjoy_device::device_start() +{ + address_space& space = machine().device("maincpu")->memory().space(AS_PROGRAM); + m_slot = dynamic_cast<electron_expansion_slot_device *>(owner()); + + space.install_read_handler(0xfcc0, 0xfcc0, READ8_DELEGATE(electron_pwrjoy_device, joystick_r)); +} + + +//------------------------------------------------- +// device_reset - device-specific reset +//------------------------------------------------- + +void electron_pwrjoy_device::device_reset() +{ + machine().root_device().membank("bank2")->configure_entry(15, memregion("exp_rom")->base()); +} + + +//************************************************************************** +// IMPLEMENTATION +//************************************************************************** + +READ8_MEMBER(electron_pwrjoy_device::joystick_r) +{ + return m_joy->read() | 0xe0; +} diff --git a/src/devices/bus/electron/pwrjoy.h b/src/devices/bus/electron/pwrjoy.h new file mode 100644 index 00000000000..fba6b1b8c1e --- /dev/null +++ b/src/devices/bus/electron/pwrjoy.h @@ -0,0 +1,52 @@ +// license:BSD-3-Clause +// copyright-holders:Nigel Barnes +/********************************************************************** + + Power Software Joystick Interface + +**********************************************************************/ + +#pragma once + +#ifndef __ELECTRON_PWRJOY__ +#define __ELECTRON_PWRJOY__ + + +#include "exp.h" + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> electron_pwrjoy_device + +class electron_pwrjoy_device : + public device_t, + public device_electron_expansion_interface +{ +public: + // construction/destruction + electron_pwrjoy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + // optional information overrides + virtual const tiny_rom_entry *device_rom_region() const override; + virtual ioport_constructor device_input_ports() const override; + + DECLARE_READ8_MEMBER(joystick_r); + +protected: + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + +private: + required_memory_region m_exp_rom; + required_ioport m_joy; +}; + + +// device type definition +extern const device_type ELECTRON_PWRJOY; + + +#endif |