mirror of
https://github.com/holub/mame
synced 2025-06-03 19:36:26 +03:00
bus/bbc/userport/lvlecho.cpp: Added the LVL Echo Keyboard.
This commit is contained in:
parent
cd11096515
commit
e7038e81ce
@ -829,6 +829,8 @@ if (BUSES["BBC_USERPORT"]~=null) then
|
||||
MAME_DIR .. "src/devices/bus/bbc/userport/beebspch.h",
|
||||
MAME_DIR .. "src/devices/bus/bbc/userport/lcd.cpp",
|
||||
MAME_DIR .. "src/devices/bus/bbc/userport/lcd.h",
|
||||
MAME_DIR .. "src/devices/bus/bbc/userport/lvlecho.cpp",
|
||||
MAME_DIR .. "src/devices/bus/bbc/userport/lvlecho.h",
|
||||
MAME_DIR .. "src/devices/bus/bbc/userport/m4000.cpp",
|
||||
MAME_DIR .. "src/devices/bus/bbc/userport/m4000.h",
|
||||
MAME_DIR .. "src/devices/bus/bbc/userport/palext.cpp",
|
||||
|
278
src/devices/bus/bbc/userport/lvlecho.cpp
Normal file
278
src/devices/bus/bbc/userport/lvlecho.cpp
Normal file
@ -0,0 +1,278 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Nigel Barnes
|
||||
/**********************************************************************
|
||||
|
||||
LVL Echo Keyboard
|
||||
|
||||
Notes:
|
||||
- the Echo is a 3 octave keyboard with 37 keys, but the software seems to
|
||||
support a 5 octave keyboard.
|
||||
- keys 33, 34, 35 are polled additionally for an unknown reason, maybe an
|
||||
octave offset switch?
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#include "emu.h"
|
||||
#include "lvlecho.h"
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
class bbc_lvlecho_device : public device_t, public device_bbc_userport_interface
|
||||
{
|
||||
public:
|
||||
bbc_lvlecho_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: device_t(mconfig, BBC_LVLECHO, tag, owner, clock)
|
||||
, device_bbc_userport_interface(mconfig, *this)
|
||||
, m_kbd(*this, "KEY_%u", 0)
|
||||
, m_key(0)
|
||||
{
|
||||
}
|
||||
|
||||
protected:
|
||||
// device_t overrides
|
||||
virtual void device_start() override;
|
||||
|
||||
// optional information overrides
|
||||
virtual ioport_constructor device_input_ports() const override;
|
||||
|
||||
virtual uint8_t pb_r() override
|
||||
{
|
||||
return m_kbd[m_key]->read();
|
||||
}
|
||||
|
||||
virtual void pb_w(uint8_t data) override
|
||||
{
|
||||
m_key = data & 0x3f;
|
||||
}
|
||||
|
||||
private:
|
||||
required_ioport_array<64> m_kbd;
|
||||
|
||||
uint8_t m_key;
|
||||
};
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// INPUT_PORTS( lvlecho )
|
||||
//-------------------------------------------------
|
||||
|
||||
static INPUT_PORTS_START( lvlecho )
|
||||
PORT_START("KEY_0")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("C2")
|
||||
|
||||
PORT_START("KEY_1")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("C2#")
|
||||
|
||||
PORT_START("KEY_2")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("D2")
|
||||
|
||||
PORT_START("KEY_3")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("D2#")
|
||||
|
||||
PORT_START("KEY_4")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("E2")
|
||||
|
||||
PORT_START("KEY_5")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F2")
|
||||
|
||||
PORT_START("KEY_6")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F2#")
|
||||
|
||||
PORT_START("KEY_7")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("G2")
|
||||
|
||||
PORT_START("KEY_8")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("G2#")
|
||||
|
||||
PORT_START("KEY_9")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("A2")
|
||||
|
||||
PORT_START("KEY_10")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("A2#")
|
||||
|
||||
PORT_START("KEY_11")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("B2")
|
||||
|
||||
PORT_START("KEY_12")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("C3") PORT_CODE(KEYCODE_TAB)
|
||||
|
||||
PORT_START("KEY_13")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("C3#") PORT_CODE(KEYCODE_1)
|
||||
|
||||
PORT_START("KEY_14")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("D3") PORT_CODE(KEYCODE_Q)
|
||||
|
||||
PORT_START("KEY_15")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("D3#") PORT_CODE(KEYCODE_2)
|
||||
|
||||
PORT_START("KEY_16")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("E3") PORT_CODE(KEYCODE_W)
|
||||
|
||||
PORT_START("KEY_17")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F3") PORT_CODE(KEYCODE_E)
|
||||
|
||||
PORT_START("KEY_18")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F3#") PORT_CODE(KEYCODE_4)
|
||||
|
||||
PORT_START("KEY_19")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("G3") PORT_CODE(KEYCODE_R)
|
||||
|
||||
PORT_START("KEY_20")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("G3#") PORT_CODE(KEYCODE_5)
|
||||
|
||||
PORT_START("KEY_21")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("A3") PORT_CODE(KEYCODE_T)
|
||||
|
||||
PORT_START("KEY_22")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("A3#") PORT_CODE(KEYCODE_6)
|
||||
|
||||
PORT_START("KEY_23")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("B3") PORT_CODE(KEYCODE_Y)
|
||||
|
||||
PORT_START("KEY_24")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("C4") PORT_CODE(KEYCODE_U)
|
||||
|
||||
PORT_START("KEY_25")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("C4#") PORT_CODE(KEYCODE_8)
|
||||
|
||||
PORT_START("KEY_26")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("D4") PORT_CODE(KEYCODE_I)
|
||||
|
||||
PORT_START("KEY_27")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("D4#") PORT_CODE(KEYCODE_9)
|
||||
|
||||
PORT_START("KEY_28")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("E4") PORT_CODE(KEYCODE_O)
|
||||
|
||||
PORT_START("KEY_29")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F4") PORT_CODE(KEYCODE_P)
|
||||
|
||||
PORT_START("KEY_30")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F4#") PORT_CODE(KEYCODE_A)
|
||||
|
||||
PORT_START("KEY_31")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("G4") PORT_CODE(KEYCODE_Z)
|
||||
|
||||
PORT_START("KEY_32")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("G4#") PORT_CODE(KEYCODE_S)
|
||||
|
||||
PORT_START("KEY_33")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("A4") PORT_CODE(KEYCODE_X)
|
||||
|
||||
PORT_START("KEY_34")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("A4#") PORT_CODE(KEYCODE_D)
|
||||
|
||||
PORT_START("KEY_35")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("B4") PORT_CODE(KEYCODE_C)
|
||||
|
||||
PORT_START("KEY_36")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("C5") PORT_CODE(KEYCODE_V)
|
||||
|
||||
PORT_START("KEY_37")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("C5#") PORT_CODE(KEYCODE_G)
|
||||
|
||||
PORT_START("KEY_38")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("D5") PORT_CODE(KEYCODE_B)
|
||||
|
||||
PORT_START("KEY_39")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("D5#") PORT_CODE(KEYCODE_H)
|
||||
|
||||
PORT_START("KEY_40")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("E5") PORT_CODE(KEYCODE_N)
|
||||
|
||||
PORT_START("KEY_41")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F5") PORT_CODE(KEYCODE_M)
|
||||
|
||||
PORT_START("KEY_42")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F5#") PORT_CODE(KEYCODE_K)
|
||||
|
||||
PORT_START("KEY_43")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("G5") PORT_CODE(KEYCODE_COMMA)
|
||||
|
||||
PORT_START("KEY_44")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("G5#") PORT_CODE(KEYCODE_L)
|
||||
|
||||
PORT_START("KEY_45")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("A5") PORT_CODE(KEYCODE_STOP)
|
||||
|
||||
PORT_START("KEY_46")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("A5#") PORT_CODE(KEYCODE_COLON)
|
||||
|
||||
PORT_START("KEY_47")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("B5") PORT_CODE(KEYCODE_SLASH)
|
||||
|
||||
PORT_START("KEY_48")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("C6") PORT_CODE(KEYCODE_RSHIFT)
|
||||
|
||||
PORT_START("KEY_49")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("C6#")
|
||||
|
||||
PORT_START("KEY_50")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("D6")
|
||||
|
||||
PORT_START("KEY_51")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("D6#")
|
||||
|
||||
PORT_START("KEY_52")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("E6")
|
||||
|
||||
PORT_START("KEY_53")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F6")
|
||||
|
||||
PORT_START("KEY_54")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F6#")
|
||||
|
||||
PORT_START("KEY_55")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("G6")
|
||||
|
||||
PORT_START("KEY_56")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("G6#")
|
||||
|
||||
PORT_START("KEY_57")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("A6")
|
||||
|
||||
PORT_START("KEY_58")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("A6#")
|
||||
|
||||
PORT_START("KEY_59")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("B6")
|
||||
|
||||
PORT_START("KEY_60")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("C7")
|
||||
|
||||
PORT_START("KEY_61")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
PORT_START("KEY_62")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
PORT_START("KEY_63")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// input_ports - device-specific input ports
|
||||
//-------------------------------------------------
|
||||
|
||||
ioport_constructor bbc_lvlecho_device::device_input_ports() const
|
||||
{
|
||||
return INPUT_PORTS_NAME( lvlecho );
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void bbc_lvlecho_device::device_start()
|
||||
{
|
||||
save_item(NAME(m_key));
|
||||
}
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
|
||||
DEFINE_DEVICE_TYPE_PRIVATE(BBC_LVLECHO, device_bbc_userport_interface, bbc_lvlecho_device, "bbc_lvlecho", "LVL Echo Keyboard")
|
13
src/devices/bus/bbc/userport/lvlecho.h
Normal file
13
src/devices/bus/bbc/userport/lvlecho.h
Normal file
@ -0,0 +1,13 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Nigel Barnes
|
||||
#ifndef MAME_BUS_BBC_USERPORT_LVLECHO_H
|
||||
#define MAME_BUS_BBC_USERPORT_LVLECHO_H
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "userport.h"
|
||||
|
||||
|
||||
DECLARE_DEVICE_TYPE(BBC_LVLECHO, device_bbc_userport_interface)
|
||||
|
||||
#endif // MAME_BUS_BBC_USERPORT_LVLECHO_H
|
@ -26,10 +26,10 @@ DEFINE_DEVICE_TYPE(BBC_USERPORT_SLOT, bbc_userport_slot_device, "bbc_userport_sl
|
||||
// device_bbc_userport_interface - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
device_bbc_userport_interface::device_bbc_userport_interface(const machine_config &mconfig, device_t &device) :
|
||||
device_interface(device, "bbcuserport")
|
||||
device_bbc_userport_interface::device_bbc_userport_interface(const machine_config &mconfig, device_t &device)
|
||||
: device_interface(device, "bbcuserport")
|
||||
, m_slot(dynamic_cast<bbc_userport_slot_device *>(device.owner()))
|
||||
{
|
||||
m_slot = dynamic_cast<bbc_userport_slot_device *>(device.owner());
|
||||
}
|
||||
|
||||
|
||||
@ -128,6 +128,7 @@ void bbc_userport_slot_device::write_cb2(int state)
|
||||
//#include "digitiser.h"
|
||||
//#include "ev1.h"
|
||||
#include "lcd.h"
|
||||
#include "lvlecho.h"
|
||||
#include "m4000.h"
|
||||
#include "palext.h"
|
||||
#include "pointer.h"
|
||||
@ -149,6 +150,7 @@ void bbc_userport_devices(device_slot_interface &device)
|
||||
//device.option_add("ev1", BBC_EV1); /* Micro-Robotics EV1 */
|
||||
//device.option_add("hobbit", BBC_HOBBIT); /* Hobbit Floppy Tape System (Ikon) */
|
||||
device.option_add("lcd", BBC_LCD); /* Sprow LCD Display */
|
||||
device.option_add("lvlecho", BBC_LVLECHO); /* LVL Echo Keyboard */
|
||||
device.option_add("m4000", BBC_M4000); /* Hybrid Music 4000 Keyboard */
|
||||
device.option_add("m512mouse", BBC_M512MOUSE); /* Acorn Mouse (provided with Master 512) */
|
||||
device.option_add("sdcard", BBC_SDCARD); /* SD Card */
|
||||
|
@ -99,7 +99,7 @@ public:
|
||||
protected:
|
||||
device_bbc_userport_interface(const machine_config &mconfig, device_t &device);
|
||||
|
||||
bbc_userport_slot_device *m_slot;
|
||||
bbc_userport_slot_device *const m_slot;
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user