mirror of
https://github.com/holub/mame
synced 2025-06-28 07:04:35 +03:00
(MESS) abc80x, abc1600: Added Luxor ABC keyboard port slot interface. [Curt Coder]
This commit is contained in:
parent
48736e0700
commit
86b2a50fe3
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -6911,6 +6911,8 @@ src/mess/machine/abc_xebec.c svneol=native#text/plain
|
|||||||
src/mess/machine/abc_xebec.h svneol=native#text/plain
|
src/mess/machine/abc_xebec.h svneol=native#text/plain
|
||||||
src/mess/machine/abcbus.c svneol=native#text/plain
|
src/mess/machine/abcbus.c svneol=native#text/plain
|
||||||
src/mess/machine/abcbus.h svneol=native#text/plain
|
src/mess/machine/abcbus.h svneol=native#text/plain
|
||||||
|
src/mess/machine/abckb.c svneol=native#text/plain
|
||||||
|
src/mess/machine/abckb.h svneol=native#text/plain
|
||||||
src/mess/machine/ac1.c svneol=native#text/plain
|
src/mess/machine/ac1.c svneol=native#text/plain
|
||||||
src/mess/machine/acb4070.c svneol=native#text/plain
|
src/mess/machine/acb4070.c svneol=native#text/plain
|
||||||
src/mess/machine/acb4070.h svneol=native#text/plain
|
src/mess/machine/acb4070.h svneol=native#text/plain
|
||||||
|
@ -1531,8 +1531,8 @@ static Z80DART_INTERFACE( dart_intf )
|
|||||||
DEVCB_NULL,
|
DEVCB_NULL,
|
||||||
DEVCB_NULL,
|
DEVCB_NULL,
|
||||||
|
|
||||||
DEVCB_DEVICE_LINE_MEMBER(ABC99_TAG, abc99_device, txd_r),
|
DEVCB_DEVICE_LINE_MEMBER(ABC_KEYBOARD_PORT_TAG, abc_keyboard_port_device, rxd_r),
|
||||||
DEVCB_DEVICE_LINE_MEMBER(ABC99_TAG, abc99_device, rxd_w),
|
DEVCB_DEVICE_LINE_MEMBER(ABC_KEYBOARD_PORT_TAG, abc_keyboard_port_device, txd_w),
|
||||||
DEVCB_NULL,
|
DEVCB_NULL,
|
||||||
DEVCB_NULL,
|
DEVCB_NULL,
|
||||||
DEVCB_NULL,
|
DEVCB_NULL,
|
||||||
@ -1730,17 +1730,6 @@ void abc1600_state::fdc_drq_w(bool state)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
|
||||||
// ABC99_INTERFACE( abc99_intf )
|
|
||||||
//-------------------------------------------------
|
|
||||||
|
|
||||||
static ABC99_INTERFACE( abc99_intf )
|
|
||||||
{
|
|
||||||
DEVCB_DEVICE_LINE_MEMBER(Z8470AB1_TAG, z80dart_device, rxtxcb_w),
|
|
||||||
DEVCB_DEVICE_LINE_MEMBER(Z8470AB1_TAG, z80dart_device, dcdb_w)
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// ABC1600BUS_INTERFACE( abcbus_intf )
|
// ABC1600BUS_INTERFACE( abcbus_intf )
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
@ -1955,7 +1944,7 @@ static MACHINE_CONFIG_START( abc1600, abc1600_state )
|
|||||||
MCFG_FLOPPY_DRIVE_ADD(SAB1797_02P_TAG":2", abc1600_floppies, "525qd", floppy_image_device::default_floppy_formats)
|
MCFG_FLOPPY_DRIVE_ADD(SAB1797_02P_TAG":2", abc1600_floppies, "525qd", floppy_image_device::default_floppy_formats)
|
||||||
MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL)
|
MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL)
|
||||||
MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL)
|
MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL)
|
||||||
MCFG_ABC99_ADD(abc99_intf)
|
MCFG_ABC_KEYBOARD_PORT_ADD("abc99", DEVWRITELINE(Z8470AB1_TAG, z80dart_device, rxtxcb_w), DEVWRITELINE(Z8470AB1_TAG, z80dart_device, dcdb_w))
|
||||||
|
|
||||||
MCFG_ABC1600BUS_SLOT_ADD("bus0i", bus0i_intf, abc1600bus_cards, NULL)
|
MCFG_ABC1600BUS_SLOT_ADD("bus0i", bus0i_intf, abc1600bus_cards, NULL)
|
||||||
MCFG_ABC1600BUS_SLOT_ADD("bus0x", bus0x_intf, abc1600bus_cards, NULL)
|
MCFG_ABC1600BUS_SLOT_ADD("bus0x", bus0x_intf, abc1600bus_cards, NULL)
|
||||||
|
@ -433,11 +433,6 @@ WRITE_LINE_MEMBER( abc80_state::keydown_w )
|
|||||||
m_pio->port_a_write(m_key_strobe << 7);
|
m_pio->port_a_write(m_key_strobe << 7);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ABC80_KEYBOARD_INTERFACE( kb_intf )
|
|
||||||
{
|
|
||||||
DEVCB_DRIVER_LINE_MEMBER(abc80_state, keydown_w)
|
|
||||||
};
|
|
||||||
|
|
||||||
WRITE8_MEMBER( abc80_state::kbd_w )
|
WRITE8_MEMBER( abc80_state::kbd_w )
|
||||||
{
|
{
|
||||||
m_key_data = data;
|
m_key_data = data;
|
||||||
@ -587,7 +582,7 @@ static MACHINE_CONFIG_START( abc80, abc80_state )
|
|||||||
// devices
|
// devices
|
||||||
MCFG_Z80PIO_ADD(Z80PIO_TAG, XTAL_11_9808MHz/2/2, pio_intf)
|
MCFG_Z80PIO_ADD(Z80PIO_TAG, XTAL_11_9808MHz/2/2, pio_intf)
|
||||||
MCFG_CASSETTE_ADD("cassette", abc80_cassette_interface)
|
MCFG_CASSETTE_ADD("cassette", abc80_cassette_interface)
|
||||||
MCFG_ABC80_KEYBOARD_ADD(kb_intf)
|
MCFG_ABC80_KEYBOARD_ADD(WRITELINE(abc80_state, keydown_w))
|
||||||
MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_intf, abcbus_cards, "slow")
|
MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_intf, abcbus_cards, "slow")
|
||||||
MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("slow", abc830_slow)
|
MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("slow", abc830_slow)
|
||||||
MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL)
|
MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL)
|
||||||
|
@ -773,8 +773,8 @@ static Z80DART_INTERFACE( abc800_dart_intf )
|
|||||||
DEVCB_NULL,
|
DEVCB_NULL,
|
||||||
DEVCB_NULL,
|
DEVCB_NULL,
|
||||||
|
|
||||||
DEVCB_DEVICE_LINE_MEMBER(ABC800_KEYBOARD_TAG, abc800_keyboard_device, txd_r),
|
DEVCB_DEVICE_LINE_MEMBER(ABC_KEYBOARD_PORT_TAG, abc_keyboard_port_device, rxd_r),
|
||||||
DEVCB_DEVICE_LINE_MEMBER(ABC800_KEYBOARD_TAG, abc800_keyboard_device, rxd_w),
|
DEVCB_DEVICE_LINE_MEMBER(ABC_KEYBOARD_PORT_TAG, abc_keyboard_port_device, txd_w),
|
||||||
DEVCB_NULL,
|
DEVCB_NULL,
|
||||||
DEVCB_NULL,
|
DEVCB_NULL,
|
||||||
DEVCB_NULL,
|
DEVCB_NULL,
|
||||||
@ -811,8 +811,8 @@ static Z80DART_INTERFACE( abc802_dart_intf )
|
|||||||
DEVCB_NULL,
|
DEVCB_NULL,
|
||||||
DEVCB_NULL,
|
DEVCB_NULL,
|
||||||
|
|
||||||
DEVCB_DEVICE_LINE_MEMBER(ABC77_TAG, abc77_device, txd_r),
|
DEVCB_DEVICE_LINE_MEMBER(ABC_KEYBOARD_PORT_TAG, abc_keyboard_port_device, rxd_r),
|
||||||
DEVCB_DEVICE_LINE_MEMBER(ABC77_TAG, abc77_device, rxd_w),
|
DEVCB_DEVICE_LINE_MEMBER(ABC_KEYBOARD_PORT_TAG, abc_keyboard_port_device, txd_w),
|
||||||
DEVCB_DRIVER_LINE_MEMBER(abc802_state, lrs_w),
|
DEVCB_DRIVER_LINE_MEMBER(abc802_state, lrs_w),
|
||||||
DEVCB_DRIVER_LINE_MEMBER(abc802_state, mux80_40_w),
|
DEVCB_DRIVER_LINE_MEMBER(abc802_state, mux80_40_w),
|
||||||
DEVCB_NULL,
|
DEVCB_NULL,
|
||||||
@ -844,8 +844,8 @@ static Z80DART_INTERFACE( abc806_dart_intf )
|
|||||||
DEVCB_NULL,
|
DEVCB_NULL,
|
||||||
DEVCB_NULL,
|
DEVCB_NULL,
|
||||||
|
|
||||||
DEVCB_DEVICE_LINE_MEMBER(ABC77_TAG, abc77_device, txd_r),
|
DEVCB_DEVICE_LINE_MEMBER(ABC_KEYBOARD_PORT_TAG, abc_keyboard_port_device, rxd_r),
|
||||||
DEVCB_DEVICE_LINE_MEMBER(ABC77_TAG, abc77_device, rxd_w),
|
DEVCB_DEVICE_LINE_MEMBER(ABC_KEYBOARD_PORT_TAG, abc_keyboard_port_device, txd_w),
|
||||||
DEVCB_DRIVER_LINE_MEMBER(abc806_state, keydtr_w),
|
DEVCB_DRIVER_LINE_MEMBER(abc806_state, keydtr_w),
|
||||||
DEVCB_NULL,
|
DEVCB_NULL,
|
||||||
DEVCB_NULL,
|
DEVCB_NULL,
|
||||||
@ -855,28 +855,6 @@ static Z80DART_INTERFACE( abc806_dart_intf )
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
|
||||||
// ABC800_KEYBOARD_INTERFACE( abc800_kb_intf )
|
|
||||||
//-------------------------------------------------
|
|
||||||
|
|
||||||
static ABC800_KEYBOARD_INTERFACE( abc800_kb_intf )
|
|
||||||
{
|
|
||||||
DEVCB_DEVICE_LINE_MEMBER(Z80DART_TAG, z80dart_device, rxtxcb_w),
|
|
||||||
DEVCB_DEVICE_LINE_MEMBER(Z80DART_TAG, z80dart_device, dcdb_w)
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
|
||||||
// ABC77_INTERFACE( kb_intf )
|
|
||||||
//-------------------------------------------------
|
|
||||||
|
|
||||||
static ABC77_INTERFACE( kb_intf )
|
|
||||||
{
|
|
||||||
DEVCB_DEVICE_LINE_MEMBER(Z80DART_TAG, z80dart_device, rxtxcb_w),
|
|
||||||
DEVCB_DEVICE_LINE_MEMBER(Z80DART_TAG, z80dart_device, dcdb_w)
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// z80_daisy_config abc800_daisy_chain
|
// z80_daisy_config abc800_daisy_chain
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
@ -1211,7 +1189,7 @@ static MACHINE_CONFIG_START( abc800c, abc800c_state )
|
|||||||
MCFG_CASSETTE_ADD("cassette", cass_intf)
|
MCFG_CASSETTE_ADD("cassette", cass_intf)
|
||||||
MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL)
|
MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL)
|
||||||
MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL)
|
MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL)
|
||||||
MCFG_ABC800_KEYBOARD_ADD(abc800_kb_intf)
|
MCFG_ABC_KEYBOARD_PORT_ADD("abc800", DEVWRITELINE(Z80DART_TAG, z80dart_device, rxtxcb_w), DEVWRITELINE(Z80DART_TAG, z80dart_device, dcdb_w))
|
||||||
|
|
||||||
// ABC bus
|
// ABC bus
|
||||||
MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_intf, abcbus_cards, "fast")
|
MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_intf, abcbus_cards, "fast")
|
||||||
@ -1254,7 +1232,7 @@ static MACHINE_CONFIG_START( abc800m, abc800m_state )
|
|||||||
MCFG_CASSETTE_ADD("cassette", cass_intf)
|
MCFG_CASSETTE_ADD("cassette", cass_intf)
|
||||||
MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL)
|
MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL)
|
||||||
MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL)
|
MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL)
|
||||||
MCFG_ABC800_KEYBOARD_ADD(abc800_kb_intf)
|
MCFG_ABC_KEYBOARD_PORT_ADD("abc800", DEVWRITELINE(Z80DART_TAG, z80dart_device, rxtxcb_w), DEVWRITELINE(Z80DART_TAG, z80dart_device, dcdb_w))
|
||||||
|
|
||||||
// ABC bus
|
// ABC bus
|
||||||
MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_intf, abcbus_cards, "fast")
|
MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_intf, abcbus_cards, "fast")
|
||||||
@ -1297,7 +1275,7 @@ static MACHINE_CONFIG_START( abc802, abc802_state )
|
|||||||
MCFG_CASSETTE_ADD("cassette", cass_intf)
|
MCFG_CASSETTE_ADD("cassette", cass_intf)
|
||||||
MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL)
|
MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL)
|
||||||
MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL)
|
MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL)
|
||||||
MCFG_ABC55_ADD(kb_intf)
|
MCFG_ABC_KEYBOARD_PORT_ADD("abc55", DEVWRITELINE(Z80DART_TAG, z80dart_device, rxtxcb_w), DEVWRITELINE(Z80DART_TAG, z80dart_device, dcdb_w))
|
||||||
|
|
||||||
// ABC bus
|
// ABC bus
|
||||||
MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_intf, abcbus_cards, "fast")
|
MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_intf, abcbus_cards, "fast")
|
||||||
@ -1330,7 +1308,7 @@ static MACHINE_CONFIG_START( abc806, abc806_state )
|
|||||||
MCFG_Z80DART_ADD(Z80DART_TAG, ABC800_X01/2/2, abc806_dart_intf)
|
MCFG_Z80DART_ADD(Z80DART_TAG, ABC800_X01/2/2, abc806_dart_intf)
|
||||||
MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL)
|
MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL)
|
||||||
MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL)
|
MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL)
|
||||||
MCFG_ABC77_ADD(kb_intf)
|
MCFG_ABC_KEYBOARD_PORT_ADD("abc77", DEVWRITELINE(Z80DART_TAG, z80dart_device, rxtxcb_w), DEVWRITELINE(Z80DART_TAG, z80dart_device, dcdb_w))
|
||||||
|
|
||||||
// ABC bus
|
// ABC bus
|
||||||
MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_intf, abcbus_cards, "fast")
|
MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_intf, abcbus_cards, "fast")
|
||||||
@ -1338,8 +1316,8 @@ static MACHINE_CONFIG_START( abc806, abc806_state )
|
|||||||
|
|
||||||
// internal ram
|
// internal ram
|
||||||
MCFG_RAM_ADD(RAM_TAG)
|
MCFG_RAM_ADD(RAM_TAG)
|
||||||
MCFG_RAM_DEFAULT_SIZE("160K") // 32KB + 128KB
|
MCFG_RAM_DEFAULT_SIZE("128K")
|
||||||
MCFG_RAM_EXTRA_OPTIONS("544K") // 32KB + 512KB
|
MCFG_RAM_EXTRA_OPTIONS("512K")
|
||||||
|
|
||||||
// software list
|
// software list
|
||||||
MCFG_SOFTWARE_LIST_ADD("flop_list", "abc806")
|
MCFG_SOFTWARE_LIST_ADD("flop_list", "abc806")
|
||||||
|
@ -5,13 +5,13 @@
|
|||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "cpu/m68000/m68000.h"
|
#include "cpu/m68000/m68000.h"
|
||||||
#include "machine/ram.h"
|
|
||||||
#include "machine/8530scc.h"
|
#include "machine/8530scc.h"
|
||||||
#include "machine/abc99.h"
|
#include "machine/abckb.h"
|
||||||
#include "machine/abc1600_bus.h"
|
#include "machine/abc1600_bus.h"
|
||||||
#include "machine/e0516.h"
|
#include "machine/e0516.h"
|
||||||
#include "machine/lux4105.h"
|
#include "machine/lux4105.h"
|
||||||
#include "machine/nmc9306.h"
|
#include "machine/nmc9306.h"
|
||||||
|
#include "machine/ram.h"
|
||||||
#include "machine/serial.h"
|
#include "machine/serial.h"
|
||||||
#include "machine/wd_fdc.h"
|
#include "machine/wd_fdc.h"
|
||||||
#include "machine/z80dart.h"
|
#include "machine/z80dart.h"
|
||||||
@ -42,8 +42,8 @@
|
|||||||
#define BUS0X_TAG "bus0x"
|
#define BUS0X_TAG "bus0x"
|
||||||
#define BUS1_TAG "bus1"
|
#define BUS1_TAG "bus1"
|
||||||
#define BUS2_TAG "bus2"
|
#define BUS2_TAG "bus2"
|
||||||
#define RS232_A_TAG "rs232a"
|
#define RS232_A_TAG "rs232a"
|
||||||
#define RS232_B_TAG "rs232b"
|
#define RS232_B_TAG "rs232b"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
#include "cpu/z80/z80daisy.h"
|
#include "cpu/z80/z80daisy.h"
|
||||||
#include "cpu/mcs48/mcs48.h"
|
#include "cpu/mcs48/mcs48.h"
|
||||||
#include "imagedev/cassette.h"
|
#include "imagedev/cassette.h"
|
||||||
#include "machine/abc77.h"
|
#include "machine/abckb.h"
|
||||||
#include "machine/abc800kb.h"
|
#include "machine/abc800kb.h"
|
||||||
#include "machine/abc830.h"
|
#include "machine/abc830.h"
|
||||||
#include "machine/abcbus.h"
|
#include "machine/abcbus.h"
|
||||||
@ -219,13 +219,11 @@ public:
|
|||||||
abc802_state(const machine_config &mconfig, device_type type, const char *tag)
|
abc802_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: abc800_state(mconfig, type, tag),
|
: abc800_state(mconfig, type, tag),
|
||||||
m_crtc(*this, MC6845_TAG),
|
m_crtc(*this, MC6845_TAG),
|
||||||
m_abc77(*this, ABC77_TAG),
|
|
||||||
m_char_rom(*this, MC6845_TAG),
|
m_char_rom(*this, MC6845_TAG),
|
||||||
m_config(*this, "CONFIG")
|
m_config(*this, "CONFIG")
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
required_device<mc6845_device> m_crtc;
|
required_device<mc6845_device> m_crtc;
|
||||||
optional_device<abc77_device> m_abc77;
|
|
||||||
required_memory_region m_char_rom;
|
required_memory_region m_char_rom;
|
||||||
required_ioport m_config;
|
required_ioport m_config;
|
||||||
|
|
||||||
@ -263,7 +261,6 @@ public:
|
|||||||
: abc800_state(mconfig, type, tag),
|
: abc800_state(mconfig, type, tag),
|
||||||
m_crtc(*this, MC6845_TAG),
|
m_crtc(*this, MC6845_TAG),
|
||||||
m_rtc(*this, E0516_TAG),
|
m_rtc(*this, E0516_TAG),
|
||||||
m_abc77(*this, ABC77_TAG),
|
|
||||||
m_rad_prom(*this, "rad"),
|
m_rad_prom(*this, "rad"),
|
||||||
m_hru2_prom(*this, "hru"),
|
m_hru2_prom(*this, "hru"),
|
||||||
m_char_rom(*this, MC6845_TAG)
|
m_char_rom(*this, MC6845_TAG)
|
||||||
@ -271,7 +268,6 @@ public:
|
|||||||
|
|
||||||
required_device<mc6845_device> m_crtc;
|
required_device<mc6845_device> m_crtc;
|
||||||
required_device<e0516_device> m_rtc;
|
required_device<e0516_device> m_rtc;
|
||||||
optional_device<abc77_device> m_abc77;
|
|
||||||
required_memory_region m_rad_prom;
|
required_memory_region m_rad_prom;
|
||||||
required_memory_region m_hru2_prom;
|
required_memory_region m_hru2_prom;
|
||||||
required_memory_region m_char_rom;
|
required_memory_region m_char_rom;
|
||||||
|
@ -63,28 +63,6 @@ const device_type ABC77 = &device_creator<abc77_device>;
|
|||||||
const device_type ABC55 = &device_creator<abc55_device>;
|
const device_type ABC55 = &device_creator<abc55_device>;
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
|
||||||
// device_config_complete - perform any
|
|
||||||
// operations now that the configuration is
|
|
||||||
// complete
|
|
||||||
//-------------------------------------------------
|
|
||||||
|
|
||||||
void abc77_device::device_config_complete()
|
|
||||||
{
|
|
||||||
// inherit a copy of the static data
|
|
||||||
const abc77_interface *intf = reinterpret_cast<const abc77_interface *>(static_config());
|
|
||||||
if (intf != NULL)
|
|
||||||
*static_cast<abc77_interface *>(this) = *intf;
|
|
||||||
|
|
||||||
// or initialize to defaults if none provided
|
|
||||||
else
|
|
||||||
{
|
|
||||||
memset(&m_out_clock_cb, 0, sizeof(m_out_clock_cb));
|
|
||||||
memset(&m_out_keydown_cb, 0, sizeof(m_out_keydown_cb));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// ROM( abc77 )
|
// ROM( abc77 )
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
@ -415,7 +393,7 @@ inline void abc77_device::serial_clock()
|
|||||||
{
|
{
|
||||||
m_clock = !m_clock;
|
m_clock = !m_clock;
|
||||||
|
|
||||||
m_out_clock_func(!m_clock);
|
m_slot->trxc_w(!m_clock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -427,7 +405,7 @@ inline void abc77_device::key_down(int state)
|
|||||||
{
|
{
|
||||||
if (m_keydown != state)
|
if (m_keydown != state)
|
||||||
{
|
{
|
||||||
m_out_keydown_func(state);
|
m_slot->keydown_w(state);
|
||||||
m_keydown = state;
|
m_keydown = state;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -444,6 +422,7 @@ inline void abc77_device::key_down(int state)
|
|||||||
|
|
||||||
abc77_device::abc77_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
abc77_device::abc77_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||||
: device_t(mconfig, ABC77, "Luxor ABC 77", tag, owner, clock, "abc77", __FILE__),
|
: device_t(mconfig, ABC77, "Luxor ABC 77", tag, owner, clock, "abc77", __FILE__),
|
||||||
|
abc_keyboard_interface(mconfig, *this),
|
||||||
m_maincpu(*this, I8035_TAG),
|
m_maincpu(*this, I8035_TAG),
|
||||||
m_discrete(*this, DISCRETE_TAG),
|
m_discrete(*this, DISCRETE_TAG),
|
||||||
m_x0(*this, "X0"),
|
m_x0(*this, "X0"),
|
||||||
@ -468,6 +447,7 @@ abc77_device::abc77_device(const machine_config &mconfig, const char *tag, devic
|
|||||||
|
|
||||||
abc77_device::abc77_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
|
abc77_device::abc77_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
|
||||||
: device_t(mconfig, type, name, tag, owner, clock, shortname, source),
|
: device_t(mconfig, type, name, tag, owner, clock, shortname, source),
|
||||||
|
abc_keyboard_interface(mconfig, *this),
|
||||||
m_maincpu(*this, I8035_TAG),
|
m_maincpu(*this, I8035_TAG),
|
||||||
m_discrete(*this, DISCRETE_TAG),
|
m_discrete(*this, DISCRETE_TAG),
|
||||||
m_x0(*this, "X0"),
|
m_x0(*this, "X0"),
|
||||||
@ -505,10 +485,6 @@ void abc77_device::device_start()
|
|||||||
m_serial_timer->adjust(attotime::from_hz(19200), 0, attotime::from_hz(19200)); // ALE/32
|
m_serial_timer->adjust(attotime::from_hz(19200), 0, attotime::from_hz(19200)); // ALE/32
|
||||||
|
|
||||||
m_reset_timer = timer_alloc(TIMER_RESET);
|
m_reset_timer = timer_alloc(TIMER_RESET);
|
||||||
|
|
||||||
// resolve callbacks
|
|
||||||
m_out_clock_func.resolve(m_out_clock_cb, *this);
|
|
||||||
m_out_keydown_func.resolve(m_out_keydown_cb, *this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -548,6 +524,26 @@ void abc77_device::device_timer(emu_timer &timer, device_timer_id id, int param,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// rxd_r -
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
int abc77_device::rxd_r()
|
||||||
|
{
|
||||||
|
return m_txd;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// txd_w -
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void abc77_device::txd_w(int state)
|
||||||
|
{
|
||||||
|
m_maincpu->set_input_line(MCS48_INPUT_IRQ, state ? CLEAR_LINE : ASSERT_LINE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// p1_r -
|
// p1_r -
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
@ -667,38 +663,3 @@ WRITE8_MEMBER( abc77_device::j3_w )
|
|||||||
{
|
{
|
||||||
m_j3 = data;
|
m_j3 = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
|
||||||
// rxd_w -
|
|
||||||
//-------------------------------------------------
|
|
||||||
|
|
||||||
WRITE_LINE_MEMBER( abc77_device::rxd_w )
|
|
||||||
{
|
|
||||||
m_maincpu->set_input_line(MCS48_INPUT_IRQ, state ? CLEAR_LINE : ASSERT_LINE);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
|
||||||
// txd_r -
|
|
||||||
//-------------------------------------------------
|
|
||||||
|
|
||||||
READ_LINE_MEMBER( abc77_device::txd_r )
|
|
||||||
{
|
|
||||||
return m_txd;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
|
||||||
// reset_w -
|
|
||||||
//-------------------------------------------------
|
|
||||||
|
|
||||||
WRITE_LINE_MEMBER( abc77_device::reset_w )
|
|
||||||
{
|
|
||||||
if (m_reset && !state)
|
|
||||||
{
|
|
||||||
device_reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
m_reset = state;
|
|
||||||
}
|
|
||||||
|
@ -12,58 +12,22 @@
|
|||||||
#ifndef __ABC77__
|
#ifndef __ABC77__
|
||||||
#define __ABC77__
|
#define __ABC77__
|
||||||
|
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "cpu/mcs48/mcs48.h"
|
#include "cpu/mcs48/mcs48.h"
|
||||||
|
#include "machine/abckb.h"
|
||||||
#include "sound/discrete.h"
|
#include "sound/discrete.h"
|
||||||
#include "sound/speaker.h"
|
#include "sound/speaker.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
|
||||||
// MACROS / CONSTANTS
|
|
||||||
//**************************************************************************
|
|
||||||
|
|
||||||
#define ABC77_TAG "abc77"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
|
||||||
// INTERFACE CONFIGURATION MACROS
|
|
||||||
//**************************************************************************
|
|
||||||
|
|
||||||
#define MCFG_ABC55_ADD(_config) \
|
|
||||||
MCFG_DEVICE_ADD(ABC77_TAG, ABC55, 0) \
|
|
||||||
MCFG_DEVICE_CONFIG(_config)
|
|
||||||
|
|
||||||
|
|
||||||
#define MCFG_ABC77_ADD(_config) \
|
|
||||||
MCFG_DEVICE_ADD(ABC77_TAG, ABC77, 0) \
|
|
||||||
MCFG_DEVICE_CONFIG(_config)
|
|
||||||
|
|
||||||
|
|
||||||
#define ABC77_INTERFACE(_name) \
|
|
||||||
const abc77_interface (_name) =
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
// TYPE DEFINITIONS
|
// TYPE DEFINITIONS
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
|
|
||||||
// ======================> abc77_interface
|
|
||||||
|
|
||||||
struct abc77_interface
|
|
||||||
{
|
|
||||||
devcb_write_line m_out_clock_cb;
|
|
||||||
devcb_write_line m_out_keydown_cb;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// ======================> abc77_device
|
// ======================> abc77_device
|
||||||
|
|
||||||
class abc77_device : public device_t,
|
class abc77_device : public device_t,
|
||||||
public abc77_interface
|
public abc_keyboard_interface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// construction/destruction
|
// construction/destruction
|
||||||
@ -75,6 +39,10 @@ public:
|
|||||||
virtual machine_config_constructor device_mconfig_additions() const;
|
virtual machine_config_constructor device_mconfig_additions() const;
|
||||||
virtual ioport_constructor device_input_ports() const;
|
virtual ioport_constructor device_input_ports() const;
|
||||||
|
|
||||||
|
// abc_keyboard_interface overrides
|
||||||
|
virtual int rxd_r();
|
||||||
|
virtual void txd_w(int state);
|
||||||
|
|
||||||
DECLARE_INPUT_CHANGED_MEMBER( keyboard_reset );
|
DECLARE_INPUT_CHANGED_MEMBER( keyboard_reset );
|
||||||
|
|
||||||
DECLARE_READ8_MEMBER( p1_r );
|
DECLARE_READ8_MEMBER( p1_r );
|
||||||
@ -83,19 +51,17 @@ public:
|
|||||||
DECLARE_WRITE8_MEMBER( prog_w );
|
DECLARE_WRITE8_MEMBER( prog_w );
|
||||||
DECLARE_WRITE8_MEMBER( j3_w );
|
DECLARE_WRITE8_MEMBER( j3_w );
|
||||||
|
|
||||||
DECLARE_WRITE_LINE_MEMBER( rxd_w );
|
|
||||||
DECLARE_READ_LINE_MEMBER( txd_r );
|
|
||||||
DECLARE_WRITE_LINE_MEMBER( reset_w );
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// device-level overrides
|
// device-level overrides
|
||||||
virtual void device_start();
|
virtual void device_start();
|
||||||
virtual void device_reset();
|
virtual void device_reset();
|
||||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
|
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
|
||||||
virtual void device_config_complete();
|
|
||||||
|
|
||||||
static const device_timer_id TIMER_SERIAL = 0;
|
enum
|
||||||
static const device_timer_id TIMER_RESET = 1;
|
{
|
||||||
|
TIMER_SERIAL,
|
||||||
|
TIMER_RESET
|
||||||
|
};
|
||||||
|
|
||||||
inline void serial_output(int state);
|
inline void serial_output(int state);
|
||||||
inline void serial_clock();
|
inline void serial_clock();
|
||||||
|
@ -88,28 +88,6 @@ XR22-050-3B Pinout
|
|||||||
const device_type ABC800_KEYBOARD = &device_creator<abc800_keyboard_device>;
|
const device_type ABC800_KEYBOARD = &device_creator<abc800_keyboard_device>;
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
|
||||||
// device_config_complete - perform any
|
|
||||||
// operations now that the configuration is
|
|
||||||
// complete
|
|
||||||
//-------------------------------------------------
|
|
||||||
|
|
||||||
void abc800_keyboard_device::device_config_complete()
|
|
||||||
{
|
|
||||||
// inherit a copy of the static data
|
|
||||||
const abc800_keyboard_interface *intf = reinterpret_cast<const abc800_keyboard_interface *>(static_config());
|
|
||||||
if (intf != NULL)
|
|
||||||
*static_cast<abc800_keyboard_interface *>(this) = *intf;
|
|
||||||
|
|
||||||
// or initialize to defaults if none provided
|
|
||||||
else
|
|
||||||
{
|
|
||||||
memset(&m_out_clock_cb, 0, sizeof(m_out_clock_cb));
|
|
||||||
memset(&m_out_keydown_cb, 0, sizeof(m_out_keydown_cb));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// ROM( abc800_keyboard )
|
// ROM( abc800_keyboard )
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
@ -325,7 +303,7 @@ inline void abc800_keyboard_device::serial_clock()
|
|||||||
{
|
{
|
||||||
m_clk = !m_clk;
|
m_clk = !m_clk;
|
||||||
|
|
||||||
m_out_clock_func(!m_clk);
|
m_slot->trxc_w(!m_clk);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -339,7 +317,7 @@ inline void abc800_keyboard_device::key_down(int state)
|
|||||||
{
|
{
|
||||||
m_keydown = state;
|
m_keydown = state;
|
||||||
|
|
||||||
m_out_keydown_func(state);
|
m_slot->keydown_w(state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -355,6 +333,7 @@ inline void abc800_keyboard_device::key_down(int state)
|
|||||||
|
|
||||||
abc800_keyboard_device::abc800_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
abc800_keyboard_device::abc800_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||||
: device_t(mconfig, ABC800_KEYBOARD, "ABC-800 Keyboard", tag, owner, clock, "abc800kb", __FILE__),
|
: device_t(mconfig, ABC800_KEYBOARD, "ABC-800 Keyboard", tag, owner, clock, "abc800kb", __FILE__),
|
||||||
|
abc_keyboard_interface(mconfig, *this),
|
||||||
m_maincpu(*this, I8048_TAG),
|
m_maincpu(*this, I8048_TAG),
|
||||||
m_x0(*this, "X0"),
|
m_x0(*this, "X0"),
|
||||||
m_x1(*this, "X1"),
|
m_x1(*this, "X1"),
|
||||||
@ -387,10 +366,6 @@ void abc800_keyboard_device::device_start()
|
|||||||
m_serial_timer = timer_alloc();
|
m_serial_timer = timer_alloc();
|
||||||
m_serial_timer->adjust(attotime::from_hz(XTAL_5_9904MHz/(3*5)/20), 0, attotime::from_hz(XTAL_5_9904MHz/(3*5)/20)); // ???
|
m_serial_timer->adjust(attotime::from_hz(XTAL_5_9904MHz/(3*5)/20), 0, attotime::from_hz(XTAL_5_9904MHz/(3*5)/20)); // ???
|
||||||
|
|
||||||
// resolve callbacks
|
|
||||||
m_out_clock_func.resolve(m_out_clock_cb, *this);
|
|
||||||
m_out_keydown_func.resolve(m_out_keydown_cb, *this);
|
|
||||||
|
|
||||||
// state saving
|
// state saving
|
||||||
save_item(NAME(m_row));
|
save_item(NAME(m_row));
|
||||||
save_item(NAME(m_clk));
|
save_item(NAME(m_clk));
|
||||||
@ -420,22 +395,22 @@ void abc800_keyboard_device::device_timer(emu_timer &timer, device_timer_id id,
|
|||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// rxd_w - keyboard receive data write
|
// rxd_r -
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
WRITE_LINE_MEMBER( abc800_keyboard_device::rxd_w )
|
int abc800_keyboard_device::rxd_r()
|
||||||
{
|
{
|
||||||
m_maincpu->set_input_line(MCS48_INPUT_IRQ, state ? CLEAR_LINE : ASSERT_LINE);
|
return m_txd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// txd_r - keyboard transmit data read
|
// txd_w -
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
READ_LINE_MEMBER( abc800_keyboard_device::txd_r )
|
void abc800_keyboard_device::txd_w(int state)
|
||||||
{
|
{
|
||||||
return m_txd;
|
m_maincpu->set_input_line(MCS48_INPUT_IRQ, state ? CLEAR_LINE : ASSERT_LINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -15,49 +15,19 @@
|
|||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "cpu/mcs48/mcs48.h"
|
#include "cpu/mcs48/mcs48.h"
|
||||||
|
#include "machine/abckb.h"
|
||||||
#include "sound/discrete.h"
|
#include "sound/discrete.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
|
||||||
// MACROS / CONSTANTS
|
|
||||||
//**************************************************************************
|
|
||||||
|
|
||||||
#define ABC800_KEYBOARD_TAG "abc800kb"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
|
||||||
// INTERFACE CONFIGURATION MACROS
|
|
||||||
//**************************************************************************
|
|
||||||
|
|
||||||
#define MCFG_ABC800_KEYBOARD_ADD(_config) \
|
|
||||||
MCFG_DEVICE_ADD(ABC800_KEYBOARD_TAG, ABC800_KEYBOARD, 0) \
|
|
||||||
MCFG_DEVICE_CONFIG(_config)
|
|
||||||
|
|
||||||
|
|
||||||
#define ABC800_KEYBOARD_INTERFACE(_name) \
|
|
||||||
const abc800_keyboard_interface (_name) =
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
// TYPE DEFINITIONS
|
// TYPE DEFINITIONS
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
|
|
||||||
// ======================> abc800_keyboard_interface
|
|
||||||
|
|
||||||
struct abc800_keyboard_interface
|
|
||||||
{
|
|
||||||
devcb_write_line m_out_clock_cb;
|
|
||||||
devcb_write_line m_out_keydown_cb;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// ======================> abc800_keyboard_device
|
// ======================> abc800_keyboard_device
|
||||||
|
|
||||||
class abc800_keyboard_device : public device_t,
|
class abc800_keyboard_device : public device_t,
|
||||||
public abc800_keyboard_interface
|
public abc_keyboard_interface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// construction/destruction
|
// construction/destruction
|
||||||
@ -68,8 +38,9 @@ public:
|
|||||||
virtual machine_config_constructor device_mconfig_additions() const;
|
virtual machine_config_constructor device_mconfig_additions() const;
|
||||||
virtual ioport_constructor device_input_ports() const;
|
virtual ioport_constructor device_input_ports() const;
|
||||||
|
|
||||||
DECLARE_WRITE_LINE_MEMBER( rxd_w );
|
// abc_keyboard_interface overrides
|
||||||
DECLARE_READ_LINE_MEMBER( txd_r );
|
virtual int rxd_r();
|
||||||
|
virtual void txd_w(int state);
|
||||||
|
|
||||||
// not really public
|
// not really public
|
||||||
DECLARE_READ8_MEMBER( kb_p1_r );
|
DECLARE_READ8_MEMBER( kb_p1_r );
|
||||||
@ -79,7 +50,6 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
// device-level overrides
|
// device-level overrides
|
||||||
virtual void device_config_complete();
|
|
||||||
virtual void device_start();
|
virtual void device_start();
|
||||||
virtual void device_reset();
|
virtual void device_reset();
|
||||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
|
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
|
||||||
|
@ -91,27 +91,6 @@ Notes:
|
|||||||
const device_type ABC80_KEYBOARD = &device_creator<abc80_keyboard_device>;
|
const device_type ABC80_KEYBOARD = &device_creator<abc80_keyboard_device>;
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
|
||||||
// device_config_complete - perform any
|
|
||||||
// operations now that the configuration is
|
|
||||||
// complete
|
|
||||||
//-------------------------------------------------
|
|
||||||
|
|
||||||
void abc80_keyboard_device::device_config_complete()
|
|
||||||
{
|
|
||||||
// inherit a copy of the static data
|
|
||||||
const abc80_keyboard_interface *intf = reinterpret_cast<const abc80_keyboard_interface *>(static_config());
|
|
||||||
if (intf != NULL)
|
|
||||||
*static_cast<abc80_keyboard_interface *>(this) = *intf;
|
|
||||||
|
|
||||||
// or initialize to defaults if none provided
|
|
||||||
else
|
|
||||||
{
|
|
||||||
memset(&m_out_keydown_cb, 0, sizeof(m_out_keydown_cb));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// ROM( abc80_keyboard )
|
// ROM( abc80_keyboard )
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
@ -191,6 +170,7 @@ ioport_constructor abc80_keyboard_device::device_input_ports() const
|
|||||||
|
|
||||||
abc80_keyboard_device::abc80_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
abc80_keyboard_device::abc80_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||||
: device_t(mconfig, ABC80_KEYBOARD, "ABC-80 Keyboard", tag, owner, clock, "abc80kb", __FILE__),
|
: device_t(mconfig, ABC80_KEYBOARD, "ABC-80 Keyboard", tag, owner, clock, "abc80kb", __FILE__),
|
||||||
|
m_write_keydown(*this),
|
||||||
m_maincpu(*this, I8048_TAG)
|
m_maincpu(*this, I8048_TAG)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -203,7 +183,7 @@ abc80_keyboard_device::abc80_keyboard_device(const machine_config &mconfig, cons
|
|||||||
void abc80_keyboard_device::device_start()
|
void abc80_keyboard_device::device_start()
|
||||||
{
|
{
|
||||||
// resolve callbacks
|
// resolve callbacks
|
||||||
m_out_keydown_func.resolve(m_out_keydown_cb, *this);
|
m_write_keydown.resolve_safe();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#ifndef __ABC80_KEYBOARD__
|
#ifndef __ABC80_KEYBOARD__
|
||||||
#define __ABC80_KEYBOARD__
|
#define __ABC80_KEYBOARD__
|
||||||
|
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "cpu/mcs48/mcs48.h"
|
#include "cpu/mcs48/mcs48.h"
|
||||||
|
|
||||||
@ -30,13 +29,9 @@
|
|||||||
// INTERFACE CONFIGURATION MACROS
|
// INTERFACE CONFIGURATION MACROS
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
|
|
||||||
#define MCFG_ABC80_KEYBOARD_ADD(_config) \
|
#define MCFG_ABC80_KEYBOARD_ADD(_keydown) \
|
||||||
MCFG_DEVICE_ADD(ABC80_KEYBOARD_TAG, ABC80_KEYBOARD, 0) \
|
MCFG_DEVICE_ADD(ABC80_KEYBOARD_TAG, ABC80_KEYBOARD, 0) \
|
||||||
MCFG_DEVICE_CONFIG(_config)
|
downcast<abc80_keyboard_device *>(device)->set_callback(DEVCB2_##_keydown);
|
||||||
|
|
||||||
|
|
||||||
#define ABC80_KEYBOARD_INTERFACE(_name) \
|
|
||||||
const abc80_keyboard_interface (_name) =
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -44,23 +39,16 @@
|
|||||||
// TYPE DEFINITIONS
|
// TYPE DEFINITIONS
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
|
|
||||||
// ======================> abc80_keyboard_interface
|
|
||||||
|
|
||||||
struct abc80_keyboard_interface
|
|
||||||
{
|
|
||||||
devcb_write_line m_out_keydown_cb;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// ======================> abc80_keyboard_device
|
// ======================> abc80_keyboard_device
|
||||||
|
|
||||||
class abc80_keyboard_device : public device_t,
|
class abc80_keyboard_device : public device_t
|
||||||
public abc80_keyboard_interface
|
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// construction/destruction
|
// construction/destruction
|
||||||
abc80_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
abc80_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||||
|
|
||||||
|
template<class _keydown> void set_callback(_keydown keydown) { m_write_keydown.set_callback(keydown); }
|
||||||
|
|
||||||
// optional information overrides
|
// optional information overrides
|
||||||
virtual const rom_entry *device_rom_region() const;
|
virtual const rom_entry *device_rom_region() const;
|
||||||
virtual machine_config_constructor device_mconfig_additions() const;
|
virtual machine_config_constructor device_mconfig_additions() const;
|
||||||
@ -70,12 +58,11 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
// device-level overrides
|
// device-level overrides
|
||||||
virtual void device_config_complete();
|
|
||||||
virtual void device_start();
|
virtual void device_start();
|
||||||
virtual void device_reset();
|
virtual void device_reset();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
devcb_resolved_write_line m_out_keydown_func;
|
devcb2_write_line m_write_keydown;
|
||||||
|
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
};
|
};
|
||||||
|
@ -74,28 +74,6 @@ Notes:
|
|||||||
const device_type ABC99 = &device_creator<abc99_device>;
|
const device_type ABC99 = &device_creator<abc99_device>;
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
|
||||||
// device_config_complete - perform any
|
|
||||||
// operations now that the configuration is
|
|
||||||
// complete
|
|
||||||
//-------------------------------------------------
|
|
||||||
|
|
||||||
void abc99_device::device_config_complete()
|
|
||||||
{
|
|
||||||
// inherit a copy of the static data
|
|
||||||
const abc99_interface *intf = reinterpret_cast<const abc99_interface *>(static_config());
|
|
||||||
if (intf != NULL)
|
|
||||||
*static_cast<abc99_interface *>(this) = *intf;
|
|
||||||
|
|
||||||
// or initialize to defaults if none provided
|
|
||||||
else
|
|
||||||
{
|
|
||||||
memset(&m_out_clock_cb, 0, sizeof(m_out_clock_cb));
|
|
||||||
memset(&m_out_keydown_cb, 0, sizeof(m_out_keydown_cb));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// ROM( abc99 )
|
// ROM( abc99 )
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
@ -456,8 +434,8 @@ inline void abc99_device::serial_input()
|
|||||||
|
|
||||||
inline void abc99_device::serial_clock()
|
inline void abc99_device::serial_clock()
|
||||||
{
|
{
|
||||||
m_out_clock_func(1);
|
m_slot->trxc_w(1);
|
||||||
m_out_clock_func(0);
|
m_slot->trxc_w(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -469,7 +447,7 @@ inline void abc99_device::key_down(int state)
|
|||||||
{
|
{
|
||||||
if (m_keydown != state)
|
if (m_keydown != state)
|
||||||
{
|
{
|
||||||
m_out_keydown_func(state);
|
m_slot->keydown_w(state);
|
||||||
m_keydown = state;
|
m_keydown = state;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -495,6 +473,7 @@ inline void abc99_device::scan_mouse()
|
|||||||
|
|
||||||
abc99_device::abc99_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
abc99_device::abc99_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||||
: device_t(mconfig, ABC99, "Luxor ABC 99", tag, owner, clock, "abc99", __FILE__),
|
: device_t(mconfig, ABC99, "Luxor ABC 99", tag, owner, clock, "abc99", __FILE__),
|
||||||
|
abc_keyboard_interface(mconfig, *this),
|
||||||
m_maincpu(*this, I8035_Z2_TAG),
|
m_maincpu(*this, I8035_Z2_TAG),
|
||||||
m_mousecpu(*this, I8035_Z5_TAG),
|
m_mousecpu(*this, I8035_Z5_TAG),
|
||||||
m_speaker(*this, "speaker"),
|
m_speaker(*this, "speaker"),
|
||||||
@ -525,10 +504,6 @@ void abc99_device::device_start()
|
|||||||
|
|
||||||
m_mouse_timer = timer_alloc(TIMER_MOUSE);
|
m_mouse_timer = timer_alloc(TIMER_MOUSE);
|
||||||
|
|
||||||
// resolve callbacks
|
|
||||||
m_out_clock_func.resolve(m_out_clock_cb, *this);
|
|
||||||
m_out_keydown_func.resolve(m_out_keydown_cb, *this);
|
|
||||||
|
|
||||||
// state saving
|
// state saving
|
||||||
save_item(NAME(m_si));
|
save_item(NAME(m_si));
|
||||||
save_item(NAME(m_si_en));
|
save_item(NAME(m_si_en));
|
||||||
@ -573,6 +548,30 @@ void abc99_device::device_timer(emu_timer &timer, device_timer_id id, int param,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// rxd_r -
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
int abc99_device::rxd_r()
|
||||||
|
{
|
||||||
|
return m_so_z2 && m_so_z5;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// txd_w -
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void abc99_device::txd_w(int state)
|
||||||
|
{
|
||||||
|
if (m_si != state)
|
||||||
|
{
|
||||||
|
m_si = state;
|
||||||
|
serial_input();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// z2_bus_w -
|
// z2_bus_w -
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
@ -771,27 +770,3 @@ READ8_MEMBER( abc99_device::z5_t1_r )
|
|||||||
{
|
{
|
||||||
return m_t1_z5;
|
return m_t1_z5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
|
||||||
// rxd_w -
|
|
||||||
//-------------------------------------------------
|
|
||||||
|
|
||||||
WRITE_LINE_MEMBER( abc99_device::rxd_w )
|
|
||||||
{
|
|
||||||
if (m_si != state)
|
|
||||||
{
|
|
||||||
m_si = state;
|
|
||||||
serial_input();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
|
||||||
// txd_r -
|
|
||||||
//-------------------------------------------------
|
|
||||||
|
|
||||||
READ_LINE_MEMBER( abc99_device::txd_r )
|
|
||||||
{
|
|
||||||
return m_so_z2 && m_so_z5;
|
|
||||||
}
|
|
||||||
|
@ -14,48 +14,19 @@
|
|||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "cpu/mcs48/mcs48.h"
|
#include "cpu/mcs48/mcs48.h"
|
||||||
|
#include "machine/abckb.h"
|
||||||
#include "sound/speaker.h"
|
#include "sound/speaker.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
|
||||||
// MACROS / CONSTANTS
|
|
||||||
//**************************************************************************
|
|
||||||
|
|
||||||
#define ABC99_TAG "abc99"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
|
||||||
// INTERFACE CONFIGURATION MACROS
|
|
||||||
//**************************************************************************
|
|
||||||
|
|
||||||
#define MCFG_ABC99_ADD(_config) \
|
|
||||||
MCFG_DEVICE_ADD(ABC99_TAG, ABC99, 0) \
|
|
||||||
MCFG_DEVICE_CONFIG(_config)
|
|
||||||
|
|
||||||
|
|
||||||
#define ABC99_INTERFACE(_name) \
|
|
||||||
const abc99_interface (_name) =
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
// TYPE DEFINITIONS
|
// TYPE DEFINITIONS
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
|
|
||||||
// ======================> abc99_interface
|
|
||||||
|
|
||||||
struct abc99_interface
|
|
||||||
{
|
|
||||||
devcb_write_line m_out_clock_cb;
|
|
||||||
devcb_write_line m_out_keydown_cb;
|
|
||||||
};
|
|
||||||
|
|
||||||
// ======================> abc99_device
|
// ======================> abc99_device
|
||||||
|
|
||||||
class abc99_device : public device_t,
|
class abc99_device : public device_t,
|
||||||
public abc99_interface
|
public abc_keyboard_interface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// construction/destruction
|
// construction/destruction
|
||||||
@ -66,6 +37,10 @@ public:
|
|||||||
virtual machine_config_constructor device_mconfig_additions() const;
|
virtual machine_config_constructor device_mconfig_additions() const;
|
||||||
virtual ioport_constructor device_input_ports() const;
|
virtual ioport_constructor device_input_ports() const;
|
||||||
|
|
||||||
|
// abc_keyboard_interface overrides
|
||||||
|
virtual int rxd_r();
|
||||||
|
virtual void txd_w(int state);
|
||||||
|
|
||||||
DECLARE_INPUT_CHANGED_MEMBER( keyboard_reset );
|
DECLARE_INPUT_CHANGED_MEMBER( keyboard_reset );
|
||||||
|
|
||||||
DECLARE_WRITE8_MEMBER( z2_led_w );
|
DECLARE_WRITE8_MEMBER( z2_led_w );
|
||||||
@ -77,15 +52,11 @@ public:
|
|||||||
DECLARE_WRITE8_MEMBER( z5_p2_w );
|
DECLARE_WRITE8_MEMBER( z5_p2_w );
|
||||||
DECLARE_READ8_MEMBER( z5_t1_r );
|
DECLARE_READ8_MEMBER( z5_t1_r );
|
||||||
|
|
||||||
DECLARE_WRITE_LINE_MEMBER( rxd_w );
|
|
||||||
DECLARE_READ_LINE_MEMBER( txd_r );
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// device-level overrides
|
// device-level overrides
|
||||||
virtual void device_start();
|
virtual void device_start();
|
||||||
virtual void device_reset();
|
virtual void device_reset();
|
||||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
|
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
|
||||||
virtual void device_config_complete();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
enum
|
enum
|
||||||
|
140
src/mess/machine/abckb.c
Normal file
140
src/mess/machine/abckb.c
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
/**********************************************************************
|
||||||
|
|
||||||
|
Luxor ABC 800/802/806/1600 keyboard port emulation
|
||||||
|
|
||||||
|
Copyright MESS Team.
|
||||||
|
Visit http://mamedev.org for licensing and usage restrictions.
|
||||||
|
|
||||||
|
**********************************************************************/
|
||||||
|
|
||||||
|
#include "abckb.h"
|
||||||
|
|
||||||
|
// supported devices
|
||||||
|
#include "machine/abc800kb.h"
|
||||||
|
#include "machine/abc77.h"
|
||||||
|
#include "machine/abc99.h"
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// DEVICE DEFINITIONS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
// device type definition
|
||||||
|
const device_type ABC_KEYBOARD_PORT = &device_creator<abc_keyboard_port_device>;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// CARD INTERFACE
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// abc_keyboard_interface - constructor
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
abc_keyboard_interface::abc_keyboard_interface(const machine_config &mconfig, device_t &device)
|
||||||
|
: device_slot_card_interface(mconfig,device)
|
||||||
|
{
|
||||||
|
m_slot = dynamic_cast<abc_keyboard_port_device *>(device.owner());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// LIVE DEVICE
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// abc_keyboard_port_device - constructor
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
abc_keyboard_port_device::abc_keyboard_port_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
|
||||||
|
device_t(mconfig, ABC_KEYBOARD_PORT, "Luxor ABC keyboard port", tag, owner, clock),
|
||||||
|
device_slot_interface(mconfig, *this),
|
||||||
|
m_write_trxc(*this),
|
||||||
|
m_write_keydown(*this)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// device_start - device-specific startup
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void abc_keyboard_port_device::device_start()
|
||||||
|
{
|
||||||
|
m_card = dynamic_cast<abc_keyboard_interface *>(get_card_device());
|
||||||
|
|
||||||
|
// resolve callbacks
|
||||||
|
m_write_trxc.resolve_safe();
|
||||||
|
m_write_keydown.resolve_safe();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// device_reset - device-specific reset
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void abc_keyboard_port_device::device_reset()
|
||||||
|
{
|
||||||
|
if (m_card != NULL)
|
||||||
|
get_card_device()->reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// rxd_r -
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
READ_LINE_MEMBER( abc_keyboard_port_device::rxd_r )
|
||||||
|
{
|
||||||
|
int state = 1;
|
||||||
|
|
||||||
|
if (m_card != NULL)
|
||||||
|
state = m_card->rxd_r();
|
||||||
|
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// txd_w -
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
WRITE_LINE_MEMBER( abc_keyboard_port_device::txd_w )
|
||||||
|
{
|
||||||
|
if (m_card != NULL)
|
||||||
|
m_card->txd_w(state);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// trxc_w -
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
WRITE_LINE_MEMBER( abc_keyboard_port_device::trxc_w )
|
||||||
|
{
|
||||||
|
m_write_trxc(state);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// keydown_w -
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
WRITE_LINE_MEMBER( abc_keyboard_port_device::keydown_w )
|
||||||
|
{
|
||||||
|
m_write_keydown(state);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// SLOT INTERFACE
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
SLOT_INTERFACE_START( abc_keyboard_devices )
|
||||||
|
SLOT_INTERFACE("abc800", ABC800_KEYBOARD)
|
||||||
|
SLOT_INTERFACE("abc55", ABC55)
|
||||||
|
SLOT_INTERFACE("abc77", ABC77)
|
||||||
|
SLOT_INTERFACE("abc99", ABC99)
|
||||||
|
SLOT_INTERFACE_END
|
99
src/mess/machine/abckb.h
Normal file
99
src/mess/machine/abckb.h
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
/**********************************************************************
|
||||||
|
|
||||||
|
Luxor ABC 800/802/806/1600 keyboard port emulation
|
||||||
|
|
||||||
|
Copyright MESS Team.
|
||||||
|
Visit http://mamedev.org for licensing and usage restrictions.
|
||||||
|
|
||||||
|
**********************************************************************/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef __ABC_KEYBOARD_PORT__
|
||||||
|
#define __ABC_KEYBOARD_PORT__
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// MACROS / CONSTANTS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
#define ABC_KEYBOARD_PORT_TAG "kb"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// INTERFACE CONFIGURATION MACROS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
#define MCFG_ABC_KEYBOARD_PORT_ADD(_def_slot, _trxc, _keydown) \
|
||||||
|
MCFG_DEVICE_ADD(ABC_KEYBOARD_PORT_TAG, ABC_KEYBOARD_PORT, 0) \
|
||||||
|
MCFG_DEVICE_SLOT_INTERFACE(abc_keyboard_devices, _def_slot, false) \
|
||||||
|
downcast<abc_keyboard_port_device *>(device)->set_callbacks(DEVCB2_##_trxc, DEVCB2_##_keydown);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// TYPE DEFINITIONS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
class abc_keyboard_interface;
|
||||||
|
|
||||||
|
class abc_keyboard_port_device : public device_t,
|
||||||
|
public device_slot_interface
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// construction/destruction
|
||||||
|
abc_keyboard_port_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||||
|
|
||||||
|
template<class _trxc, class _keydown> void set_callbacks(_trxc trxc, _keydown keydown) {
|
||||||
|
m_write_trxc.set_callback(trxc);
|
||||||
|
m_write_keydown.set_callback(keydown);
|
||||||
|
}
|
||||||
|
|
||||||
|
// computer interface
|
||||||
|
DECLARE_READ_LINE_MEMBER( rxd_r );
|
||||||
|
DECLARE_WRITE_LINE_MEMBER( txd_w );
|
||||||
|
|
||||||
|
// peripheral interface
|
||||||
|
DECLARE_WRITE_LINE_MEMBER( trxc_w );
|
||||||
|
DECLARE_WRITE_LINE_MEMBER( keydown_w );
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// device-level overrides
|
||||||
|
virtual void device_start();
|
||||||
|
virtual void device_reset();
|
||||||
|
|
||||||
|
devcb2_write_line m_write_trxc;
|
||||||
|
devcb2_write_line m_write_keydown;
|
||||||
|
|
||||||
|
abc_keyboard_interface *m_card;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class abc_keyboard_interface : public device_slot_card_interface
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// construction/destruction
|
||||||
|
abc_keyboard_interface(const machine_config &mconfig, device_t &device);
|
||||||
|
|
||||||
|
virtual int rxd_r() { return 1; };
|
||||||
|
virtual void txd_w(int state) { };
|
||||||
|
|
||||||
|
protected:
|
||||||
|
abc_keyboard_port_device *m_slot;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// device type definition
|
||||||
|
extern const device_type ABC_KEYBOARD_PORT;
|
||||||
|
|
||||||
|
|
||||||
|
// supported devices
|
||||||
|
SLOT_INTERFACE_EXTERN( abc_keyboard_devices );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
@ -1293,6 +1293,7 @@ $(MESSOBJ)/luxor.a: \
|
|||||||
$(MESS_MACHINE)/abc_slutprov.o \
|
$(MESS_MACHINE)/abc_slutprov.o \
|
||||||
$(MESS_MACHINE)/abc_turbo.o \
|
$(MESS_MACHINE)/abc_turbo.o \
|
||||||
$(MESS_MACHINE)/abc_xebec.o \
|
$(MESS_MACHINE)/abc_xebec.o \
|
||||||
|
$(MESS_MACHINE)/abckb.o \
|
||||||
$(MESS_MACHINE)/abc77.o \
|
$(MESS_MACHINE)/abc77.o \
|
||||||
$(MESS_MACHINE)/abc99.o \
|
$(MESS_MACHINE)/abc99.o \
|
||||||
$(MESS_MACHINE)/lux10828.o \
|
$(MESS_MACHINE)/lux10828.o \
|
||||||
|
Loading…
Reference in New Issue
Block a user