Changed victor9000 keyboard to push the data line to the 6522 [smf]

This commit is contained in:
smf- 2014-01-01 14:59:52 +00:00
parent c8c13800b8
commit 0c0ee4823f
4 changed files with 25 additions and 20 deletions

View File

@ -1114,8 +1114,6 @@ static MACHINE_CONFIG_START( victor9k, victor9k_state )
MCFG_DEVICE_ADD(M6522_2_TAG, VIA6522, XTAL_30MHz/30)
MCFG_VIA6522_READPA_HANDLER(READ8(victor9k_state, via2_pa_r))
MCFG_VIA6522_READCB1_HANDLER(DEVREADLINE(VICTOR9K_KEYBOARD_TAG, victor9k_keyboard_device, kbrdy_r))
MCFG_VIA6522_READCB2_HANDLER(DEVREADLINE(VICTOR9K_KEYBOARD_TAG, victor9k_keyboard_device, kbdata_r))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(victor9k_state, via2_pa_w))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor9k_state, via2_pb_w))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via2_irq_w))
@ -1172,7 +1170,9 @@ static MACHINE_CONFIG_START( victor9k, victor9k_state )
MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, rib_w))
MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, ctsb_w))
MCFG_VICTOR9K_KEYBOARD_ADD(WRITELINE(victor9k_state, kbrdy_w))
MCFG_DEVICE_ADD(VICTOR9K_KEYBOARD_TAG, VICTOR9K_KEYBOARD, 0)
MCFG_VICTOR9K_KBRDY_HANDLER(WRITELINE(victor9k_state, kbrdy_w))
MCFG_VICTOR9K_KBDATA_HANDLER(DEVWRITELINE(M6522_2_TAG, via6522_device, write_cb2))
// internal ram
MCFG_RAM_ADD(RAM_TAG)

View File

@ -51,6 +51,7 @@
#define RS232_A_TAG "rs232a"
#define RS232_B_TAG "rs232b"
#define SCREEN_TAG "screen"
#define VICTOR9K_KEYBOARD_TAG "victor9kb"
class victor9k_state : public driver_device
{

View File

@ -253,7 +253,8 @@ victor9k_keyboard_device::victor9k_keyboard_device(const machine_config &mconfig
m_ya(*this, "YA"),
m_yb(*this, "YB"),
m_yc(*this, "YC"),
m_write_kbrdy(*this),
m_kbrdy_handler(*this),
m_kbdata_handler(*this),
m_y(0),
m_kbrdy(1),
m_kbdata(1),
@ -269,7 +270,8 @@ victor9k_keyboard_device::victor9k_keyboard_device(const machine_config &mconfig
void victor9k_keyboard_device::device_start()
{
// resolve callbacks
m_write_kbrdy.resolve_safe();
m_kbrdy_handler.resolve_safe();
m_kbdata_handler.resolve_safe();
// state saving
save_item(NAME(m_y));
@ -384,10 +386,16 @@ WRITE8_MEMBER( victor9k_keyboard_device::kb_p2_w )
if (m_kbrdy != kbrdy)
{
m_kbrdy = kbrdy;
m_write_kbrdy(m_kbrdy);
m_kbrdy_handler(m_kbrdy);
}
m_kbdata = BIT(data, 3);
int kbdata = BIT(data, 3);
if (m_kbdata != kbdata)
{
m_kbdata = kbdata;
m_kbdata_handler(m_kbdata);
}
logerror("P2 %01x\n", data & 0x0f);
}

View File

@ -20,21 +20,15 @@
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
#define VICTOR9K_KEYBOARD_TAG "victor9kb"
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
#define MCFG_VICTOR9K_KEYBOARD_ADD(_kbrdy) \
MCFG_DEVICE_ADD(VICTOR9K_KEYBOARD_TAG, VICTOR9K_KEYBOARD, 0) \
downcast<victor9k_keyboard_device *>(device)->set_kbrdy_callback(DEVCB2_##_kbrdy);
#define MCFG_VICTOR9K_KBRDY_HANDLER(_devcb) \
devcb = &victor9k_keyboard_device::set_kbrdy_handler(*device, DEVCB2_##_devcb);
#define MCFG_VICTOR9K_KBDATA_HANDLER(_devcb) \
devcb = &victor9k_keyboard_device::set_kbdata_handler(*device, DEVCB2_##_devcb);
//**************************************************************************
@ -49,7 +43,8 @@ public:
// construction/destruction
victor9k_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
template<class _kbrdy> void set_kbrdy_callback(_kbrdy kbrdy) { m_write_kbrdy.set_callback(kbrdy); }
template<class _Object> static devcb2_base &set_kbrdy_handler(device_t &device, _Object object) { return downcast<victor9k_keyboard_device &>(device).m_kbrdy_handler.set_callback(object); }
template<class _Object> static devcb2_base &set_kbdata_handler(device_t &device, _Object object) { return downcast<victor9k_keyboard_device &>(device).m_kbdata_handler.set_callback(object); }
// optional information overrides
virtual const rom_entry *device_rom_region() const;
@ -87,7 +82,8 @@ private:
required_ioport m_yb;
required_ioport m_yc;
devcb2_write_line m_write_kbrdy;
devcb2_write_line m_kbrdy_handler;
devcb2_write_line m_kbdata_handler;
UINT8 m_y;
int m_kbrdy;