required_ioport_array. (nw)

This commit is contained in:
Curt Coder 2016-10-09 10:19:27 +03:00
parent f9f983759d
commit 745f59d3ea
33 changed files with 223 additions and 848 deletions

View File

@ -422,50 +422,13 @@ inline void abc77_device::key_down(int state)
// abc77_device - constructor
//-------------------------------------------------
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__),
abc_keyboard_interface(mconfig, *this),
m_maincpu(*this, I8035_TAG),
m_watchdog(*this, "watchdog"),
m_discrete(*this, DISCRETE_TAG),
m_x0(*this, "X0"),
m_x1(*this, "X1"),
m_x2(*this, "X2"),
m_x3(*this, "X3"),
m_x4(*this, "X4"),
m_x5(*this, "X5"),
m_x6(*this, "X6"),
m_x7(*this, "X7"),
m_x8(*this, "X8"),
m_x9(*this, "X9"),
m_x10(*this, "X10"),
m_x11(*this, "X11"),
m_dsw(*this, "DSW"),
m_txd(1), m_keylatch(0),
m_keydown(1),
m_clock(0), m_hys(0), m_reset(0),
m_stb(1), m_j3(0), m_serial_timer(nullptr), m_reset_timer(nullptr)
{
}
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),
abc_keyboard_interface(mconfig, *this),
m_maincpu(*this, I8035_TAG),
m_watchdog(*this, "watchdog"),
m_discrete(*this, DISCRETE_TAG),
m_x0(*this, "X0"),
m_x1(*this, "X1"),
m_x2(*this, "X2"),
m_x3(*this, "X3"),
m_x4(*this, "X4"),
m_x5(*this, "X5"),
m_x6(*this, "X6"),
m_x7(*this, "X7"),
m_x8(*this, "X8"),
m_x9(*this, "X9"),
m_x10(*this, "X10"),
m_x11(*this, "X11"),
m_x(*this, "X%u", 0),
m_dsw(*this, "DSW"),
m_txd(1), m_keylatch(0),
m_keydown(1),
@ -477,6 +440,9 @@ abc77_device::abc77_device(const machine_config &mconfig, device_type type, cons
abc55_device::abc55_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
abc77_device(mconfig, ABC55, "Luxor ABC 55", tag, owner, clock, "abc55", __FILE__) { }
abc77_device::abc77_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
abc77_device(mconfig, ABC77, "Luxor ABC 77", tag, owner, clock, "abc77", __FILE__) { }
//-------------------------------------------------
// device_start - device-specific startup
@ -565,20 +531,9 @@ READ8_MEMBER( abc77_device::p1_r )
if (m_stb)
{
switch (m_keylatch)
if (m_keylatch < 12)
{
case 0: data = m_x0->read(); break;
case 1: data = m_x1->read(); break;
case 2: data = m_x2->read(); break;
case 3: data = m_x3->read(); break;
case 4: data = m_x4->read(); break;
case 5: data = m_x5->read(); break;
case 6: data = m_x6->read(); break;
case 7: data = m_x7->read(); break;
case 8: data = m_x8->read(); break;
case 9: data = m_x9->read(); break;
case 10: data = m_x10->read(); break;
case 11: data = m_x11->read(); break;
data = m_x[m_keylatch]->read();
}
}

View File

@ -69,18 +69,7 @@ protected:
required_device<cpu_device> m_maincpu;
required_device<watchdog_timer_device> m_watchdog;
required_device<discrete_sound_device> m_discrete;
required_ioport m_x0;
required_ioport m_x1;
required_ioport m_x2;
required_ioport m_x3;
required_ioport m_x4;
required_ioport m_x5;
required_ioport m_x6;
required_ioport m_x7;
required_ioport m_x8;
required_ioport m_x9;
required_ioport m_x10;
required_ioport m_x11;
required_ioport_array<12> m_x;
required_ioport m_dsw;
int m_txd; // transmit data

View File

@ -332,27 +332,16 @@ inline void abc800_keyboard_device::key_down(int state)
// abc800_keyboard_device - constructor
//-------------------------------------------------
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__),
abc_keyboard_interface(mconfig, *this),
m_maincpu(*this, I8048_TAG),
m_x0(*this, "X0"),
m_x1(*this, "X1"),
m_x2(*this, "X2"),
m_x3(*this, "X3"),
m_x4(*this, "X4"),
m_x5(*this, "X5"),
m_x6(*this, "X6"),
m_x7(*this, "X7"),
m_x8(*this, "X8"),
m_x9(*this, "X9"),
m_x10(*this, "X10"),
m_x11(*this, "X11"),
m_row(0),
m_txd(1),
m_clk(0),
m_stb(1),
m_keydown(1), m_serial_timer(nullptr)
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__),
abc_keyboard_interface(mconfig, *this),
m_maincpu(*this, I8048_TAG),
m_x(*this, "X%u", 0),
m_row(0),
m_txd(1),
m_clk(0),
m_stb(1),
m_keydown(1),
m_serial_timer(nullptr)
{
}
@ -415,20 +404,9 @@ READ8_MEMBER( abc800_keyboard_device::kb_p1_r )
if (m_stb)
{
switch (m_row)
if (m_row < 12)
{
case 0: data = m_x0->read(); break;
case 1: data = m_x1->read(); break;
case 2: data = m_x2->read(); break;
case 3: data = m_x3->read(); break;
case 4: data = m_x4->read(); break;
case 5: data = m_x5->read(); break;
case 6: data = m_x6->read(); break;
case 7: data = m_x7->read(); break;
case 8: data = m_x8->read(); break;
case 9: data = m_x9->read(); break;
case 10: data = m_x10->read(); break;
case 11: data = m_x11->read(); break;
data = m_x[m_row]->read();
}
}

View File

@ -58,18 +58,7 @@ private:
inline void key_down(int state);
required_device<cpu_device> m_maincpu;
required_ioport m_x0;
required_ioport m_x1;
required_ioport m_x2;
required_ioport m_x3;
required_ioport m_x4;
required_ioport m_x5;
required_ioport m_x6;
required_ioport m_x7;
required_ioport m_x8;
required_ioport m_x9;
required_ioport m_x10;
required_ioport m_x11;
required_ioport_array<12> m_x;
int m_row;
int m_txd;

View File

@ -248,34 +248,12 @@ ioport_constructor ibm_pc_83_keyboard_device::device_input_ports() const
// ibm_pc_83_keyboard_device - constructor
//-------------------------------------------------
ibm_pc_83_keyboard_device::ibm_pc_83_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, PC_KBD_IBM_PC_83, "IBM PC Keyboard", tag, owner, clock, "kb_pc83", __FILE__),
device_pc_kbd_interface(mconfig, *this),
m_maincpu(*this, I8048_TAG),
m_dr00(*this, "DR00"),
m_dr01(*this, "DR01"),
m_dr02(*this, "DR02"),
m_dr03(*this, "DR03"),
m_dr04(*this, "DR04"),
m_dr05(*this, "DR05"),
m_dr06(*this, "DR06"),
m_dr07(*this, "DR07"),
m_dr08(*this, "DR08"),
m_dr09(*this, "DR09"),
m_dr10(*this, "DR10"),
m_dr11(*this, "DR11"),
m_dr12(*this, "DR12"),
m_dr13(*this, "DR13"),
m_dr14(*this, "DR14"),
m_dr15(*this, "DR15"),
m_dr16(*this, "DR16"),
m_dr17(*this, "DR17"),
m_dr18(*this, "DR18"),
m_dr19(*this, "DR19"),
m_dr20(*this, "DR20"),
m_dr21(*this, "DR21"),
m_dr22(*this, "DR22"),
m_dr23(*this, "DR23"), m_cnt(0)
ibm_pc_83_keyboard_device::ibm_pc_83_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
device_t(mconfig, PC_KBD_IBM_PC_83, "IBM PC Keyboard", tag, owner, clock, "kb_pc83", __FILE__),
device_pc_kbd_interface(mconfig, *this),
m_maincpu(*this, I8048_TAG),
m_dr(*this, "DR%02u", 0),
m_cnt(0)
{
}
@ -390,32 +368,11 @@ READ8_MEMBER( ibm_pc_83_keyboard_device::t1_r )
{
UINT8 data = 0xff;
switch (m_cnt >> 2)
int keylatch = m_cnt >> 2;
if (keylatch < 24)
{
case 0: data = m_dr00->read(); break;
case 1: data = m_dr01->read(); break;
case 2: data = m_dr02->read(); break;
case 3: data = m_dr03->read(); break;
case 4: data = m_dr04->read(); break;
case 5: data = m_dr05->read(); break;
case 6: data = m_dr06->read(); break;
case 7: data = m_dr07->read(); break;
case 8: data = m_dr08->read(); break;
case 9: data = m_dr09->read(); break;
case 10: data = m_dr10->read(); break;
case 11: data = m_dr11->read(); break;
case 12: data = m_dr12->read(); break;
case 13: data = m_dr13->read(); break;
case 14: data = m_dr14->read(); break;
case 15: data = m_dr15->read(); break;
case 16: data = m_dr16->read(); break;
case 17: data = m_dr17->read(); break;
case 18: data = m_dr18->read(); break;
case 19: data = m_dr19->read(); break;
case 20: data = m_dr20->read(); break;
case 21: data = m_dr21->read(); break;
case 22: data = m_dr22->read(); break;
case 23: data = m_dr23->read(); break;
data = m_dr[keylatch]->read();
}
int sense = m_cnt & 0x03;

View File

@ -52,30 +52,7 @@ protected:
private:
required_device<cpu_device> m_maincpu;
required_ioport m_dr00;
required_ioport m_dr01;
required_ioport m_dr02;
required_ioport m_dr03;
required_ioport m_dr04;
required_ioport m_dr05;
required_ioport m_dr06;
required_ioport m_dr07;
required_ioport m_dr08;
required_ioport m_dr09;
required_ioport m_dr10;
required_ioport m_dr11;
required_ioport m_dr12;
required_ioport m_dr13;
required_ioport m_dr14;
required_ioport m_dr15;
required_ioport m_dr16;
required_ioport m_dr17;
required_ioport m_dr18;
required_ioport m_dr19;
required_ioport m_dr20;
required_ioport m_dr21;
required_ioport m_dr22;
required_ioport m_dr23;
required_ioport_array<24> m_dr;
UINT8 m_cnt;
};

View File

@ -353,66 +353,25 @@ ioport_constructor ibm_3270pc_122_keyboard_device::device_input_ports() const
// ibm_pc_at_84_keyboard_device - constructor
//-------------------------------------------------
ibm_pc_at_84_keyboard_device::ibm_pc_at_84_keyboard_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_pc_kbd_interface(mconfig, *this),
m_maincpu(*this, I8048_TAG),
m_dr00(*this, "DR00"),
m_dr01(*this, "DR01"),
m_dr02(*this, "DR02"),
m_dr03(*this, "DR03"),
m_dr04(*this, "DR04"),
m_dr05(*this, "DR05"),
m_dr06(*this, "DR06"),
m_dr07(*this, "DR07"),
m_dr08(*this, "DR08"),
m_dr09(*this, "DR09"),
m_dr10(*this, "DR10"),
m_dr11(*this, "DR11"),
m_dr12(*this, "DR12"),
m_dr13(*this, "DR13"),
m_dr14(*this, "DR14"),
m_dr15(*this, "DR15"),
m_kbdida(*this, "KBDIDA"),
m_kbdidb(*this, "KBDIDB"),
m_db(0),
m_cnt(0),
m_sense(0),
m_t1(1)
ibm_pc_at_84_keyboard_device::ibm_pc_at_84_keyboard_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_pc_kbd_interface(mconfig, *this),
m_maincpu(*this, I8048_TAG),
m_dr(*this, "DR%02u", 0),
m_kbdida(*this, "KBDIDA"),
m_kbdidb(*this, "KBDIDB"),
m_db(0),
m_cnt(0),
m_sense(0),
m_t1(1)
{
}
ibm_pc_at_84_keyboard_device::ibm_pc_at_84_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, PC_KBD_IBM_PC_AT_84, "IBM PC/AT Keyboard", tag, owner, clock, "kb_pcat84", __FILE__),
device_pc_kbd_interface(mconfig, *this),
m_maincpu(*this, I8048_TAG),
m_dr00(*this, "DR00"),
m_dr01(*this, "DR01"),
m_dr02(*this, "DR02"),
m_dr03(*this, "DR03"),
m_dr04(*this, "DR04"),
m_dr05(*this, "DR05"),
m_dr06(*this, "DR06"),
m_dr07(*this, "DR07"),
m_dr08(*this, "DR08"),
m_dr09(*this, "DR09"),
m_dr10(*this, "DR10"),
m_dr11(*this, "DR11"),
m_dr12(*this, "DR12"),
m_dr13(*this, "DR13"),
m_dr14(*this, "DR14"),
m_dr15(*this, "DR15"),
m_kbdida(*this, "KBDIDA"),
m_kbdidb(*this, "KBDIDB"),
m_db(0),
m_cnt(0),
m_sense(0),
m_t1(1)
{
}
ibm_pc_at_84_keyboard_device::ibm_pc_at_84_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
ibm_pc_at_84_keyboard_device(mconfig, PC_KBD_IBM_PC_AT_84, "IBM PC/AT Keyboard", tag, owner, clock, "kb_pcat84", __FILE__) { }
ibm_3270pc_122_keyboard_device::ibm_3270pc_122_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: ibm_pc_at_84_keyboard_device(mconfig, PC_KBD_IBM_3270PC_122, "IBM 3270PC Keyboard", tag, owner, clock, "kb_3270pc", __FILE__) { }
ibm_3270pc_122_keyboard_device::ibm_3270pc_122_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
ibm_pc_at_84_keyboard_device(mconfig, PC_KBD_IBM_3270PC_122, "IBM 3270PC Keyboard", tag, owner, clock, "kb_3270pc", __FILE__) { }
//-------------------------------------------------
@ -615,27 +574,7 @@ READ8_MEMBER( ibm_pc_at_84_keyboard_device::t1_r )
int ibm_pc_at_84_keyboard_device::key_depressed()
{
UINT8 data = 0xff;
switch (m_cnt)
{
case 0: data = m_dr00->read(); break;
case 1: data = m_dr01->read(); break;
case 2: data = m_dr02->read(); break;
case 3: data = m_dr03->read(); break;
case 4: data = m_dr04->read(); break;
case 5: data = m_dr05->read(); break;
case 6: data = m_dr06->read(); break;
case 7: data = m_dr07->read(); break;
case 8: data = m_dr08->read(); break;
case 9: data = m_dr09->read(); break;
case 10: data = m_dr10->read(); break;
case 11: data = m_dr11->read(); break;
case 12: data = m_dr12->read(); break;
case 13: data = m_dr13->read(); break;
case 14: data = m_dr14->read(); break;
case 15: data = m_dr15->read(); break;
}
UINT8 data = m_dr[m_cnt]->read();
return m_t1 && BIT(data, m_sense);
}

View File

@ -65,22 +65,7 @@ private:
int key_depressed();
required_device<cpu_device> m_maincpu;
required_ioport m_dr00;
required_ioport m_dr01;
required_ioport m_dr02;
required_ioport m_dr03;
required_ioport m_dr04;
required_ioport m_dr05;
required_ioport m_dr06;
required_ioport m_dr07;
required_ioport m_dr08;
required_ioport m_dr09;
required_ioport m_dr10;
required_ioport m_dr11;
required_ioport m_dr12;
required_ioport m_dr13;
required_ioport m_dr14;
required_ioport m_dr15;
required_ioport_array<16> m_dr;
optional_ioport m_kbdida;
optional_ioport m_kbdidb;

View File

@ -251,18 +251,7 @@ ibm_pc_xt_83_keyboard_device::ibm_pc_xt_83_keyboard_device(const machine_config
: device_t(mconfig, PC_KBD_IBM_PC_XT_83, "IBM PC/XT Keyboard", tag, owner, clock, "kb_pcxt83", __FILE__),
device_pc_kbd_interface(mconfig, *this),
m_maincpu(*this, I8048_TAG),
m_md00(*this, "MD00"),
m_md01(*this, "MD01"),
m_md02(*this, "MD02"),
m_md03(*this, "MD03"),
m_md04(*this, "MD04"),
m_md05(*this, "MD05"),
m_md06(*this, "MD06"),
m_md07(*this, "MD07"),
m_md08(*this, "MD08"),
m_md09(*this, "MD09"),
m_md10(*this, "MD10"),
m_md11(*this, "MD11"),
m_md(*this, "MD%02u", 0),
m_bus(0xff),
m_p1(0xff),
m_p2(0xff),
@ -356,18 +345,18 @@ WRITE8_MEMBER( ibm_pc_xt_83_keyboard_device::bus_w )
{
UINT8 data = 0xff;
if (BIT(m_p1, 0)) data &= m_md00->read();
if (BIT(m_p1, 1)) data &= m_md01->read();
if (BIT(m_p1, 2)) data &= m_md02->read();
if (BIT(m_p1, 3)) data &= m_md03->read();
if (BIT(m_p1, 4)) data &= m_md04->read();
if (BIT(m_p1, 5)) data &= m_md05->read();
if (BIT(m_p1, 6)) data &= m_md06->read();
if (BIT(m_p1, 7)) data &= m_md07->read();
if (BIT(m_p2, 4)) data &= m_md08->read();
if (BIT(m_p2, 5)) data &= m_md09->read();
if (BIT(m_p2, 6)) data &= m_md10->read();
if (BIT(m_p2, 7)) data &= m_md11->read();
if (BIT(m_p1, 0)) data &= m_md[0]->read();
if (BIT(m_p1, 1)) data &= m_md[1]->read();
if (BIT(m_p1, 2)) data &= m_md[2]->read();
if (BIT(m_p1, 3)) data &= m_md[3]->read();
if (BIT(m_p1, 4)) data &= m_md[4]->read();
if (BIT(m_p1, 5)) data &= m_md[5]->read();
if (BIT(m_p1, 6)) data &= m_md[6]->read();
if (BIT(m_p1, 7)) data &= m_md[7]->read();
if (BIT(m_p2, 4)) data &= m_md[8]->read();
if (BIT(m_p2, 5)) data &= m_md[9]->read();
if (BIT(m_p2, 6)) data &= m_md[10]->read();
if (BIT(m_p2, 7)) data &= m_md[11]->read();
m_q = BIT(data, m_sense);
}

View File

@ -54,18 +54,7 @@ protected:
private:
required_device<cpu_device> m_maincpu;
required_ioport m_md00;
required_ioport m_md01;
required_ioport m_md02;
required_ioport m_md03;
required_ioport m_md04;
required_ioport m_md05;
required_ioport m_md06;
required_ioport m_md07;
required_ioport m_md08;
required_ioport m_md09;
required_ioport m_md10;
required_ioport m_md11;
required_ioport_array<12> m_md;
UINT8 m_bus;
UINT8 m_p1;

View File

@ -12,7 +12,6 @@
TODO:
- floppy
- interlaced video
- add-on ROM
- add-on RAM
@ -36,34 +35,19 @@
class compucolor2_state : public driver_device
{
public:
compucolor2_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, I8080_TAG),
m_mioc(*this, TMS5501_TAG),
m_vtac(*this, CRT5027_TAG),
m_palette(*this, "palette"),
m_rs232(*this, RS232_TAG),
m_floppy0(*this, "cd0"),
m_floppy1(*this, "cd1"),
m_char_rom(*this, "chargen"),
m_video_ram(*this, "videoram"),
m_y0(*this, "Y0"),
m_y1(*this, "Y1"),
m_y2(*this, "Y2"),
m_y3(*this, "Y3"),
m_y4(*this, "Y4"),
m_y5(*this, "Y5"),
m_y6(*this, "Y6"),
m_y7(*this, "Y7"),
m_y8(*this, "Y8"),
m_y9(*this, "Y9"),
m_y10(*this, "Y10"),
m_y11(*this, "Y11"),
m_y12(*this, "Y12"),
m_y13(*this, "Y13"),
m_y14(*this, "Y14"),
m_y15(*this, "Y15"),
m_y128(*this, "Y128")
compucolor2_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, I8080_TAG),
m_mioc(*this, TMS5501_TAG),
m_vtac(*this, CRT5027_TAG),
m_palette(*this, "palette"),
m_rs232(*this, RS232_TAG),
m_floppy0(*this, "cd0"),
m_floppy1(*this, "cd1"),
m_char_rom(*this, "chargen"),
m_video_ram(*this, "videoram"),
m_y(*this, "Y%u", 0),
m_y128(*this, "Y128")
{ }
required_device<cpu_device> m_maincpu;
@ -75,22 +59,7 @@ public:
required_device<compucolor_floppy_port_device> m_floppy1;
required_memory_region m_char_rom;
required_shared_ptr<UINT8> m_video_ram;
required_ioport m_y0;
required_ioport m_y1;
required_ioport m_y2;
required_ioport m_y3;
required_ioport m_y4;
required_ioport m_y5;
required_ioport m_y6;
required_ioport m_y7;
required_ioport m_y8;
required_ioport m_y9;
required_ioport m_y10;
required_ioport m_y11;
required_ioport m_y12;
required_ioport m_y13;
required_ioport m_y14;
required_ioport m_y15;
required_ioport_array<16> m_y;
required_ioport m_y128;
virtual void machine_start() override;
@ -327,25 +296,7 @@ READ8_MEMBER( compucolor2_state::xi_r )
switch ((m_xo >> 4) & 0x03)
{
case 0:
switch (m_xo & 0x0f)
{
case 0: data &= m_y0->read(); break;
case 1: data &= m_y1->read(); break;
case 2: data &= m_y2->read(); break;
case 3: data &= m_y3->read(); break;
case 4: data &= m_y4->read(); break;
case 5: data &= m_y5->read(); break;
case 6: data &= m_y6->read(); break;
case 7: data &= m_y7->read(); break;
case 8: data &= m_y8->read(); break;
case 9: data &= m_y9->read(); break;
case 10: data &= m_y10->read(); break;
case 11: data &= m_y11->read(); break;
case 12: data &= m_y12->read(); break;
case 13: data &= m_y13->read(); break;
case 14: data &= m_y14->read(); break;
case 15: data &= m_y15->read(); break;
}
data &= m_y[m_xo & 0x0f]->read();
if (BIT(m_xo, 7))
{

View File

@ -180,20 +180,9 @@ READ8_MEMBER( tiki100_state::keyboard_r )
{
UINT8 data = 0xff;
switch (m_keylatch)
if (m_keylatch < 12)
{
case 0: data = m_y1->read(); break;
case 1: data = m_y2->read(); break;
case 2: data = m_y3->read(); break;
case 3: data = m_y4->read(); break;
case 4: data = m_y5->read(); break;
case 5: data = m_y6->read(); break;
case 6: data = m_y7->read(); break;
case 7: data = m_y8->read(); break;
case 8: data = m_y9->read(); break;
case 9: data = m_y10->read(); break;
case 10: data = m_y11->read(); break;
case 11: data = m_y12->read(); break;
data = m_y[m_keylatch]->read();
}
m_keylatch++;

View File

@ -59,18 +59,7 @@ public:
m_rom(*this, Z80_TAG),
m_prom(*this, "u4"),
m_video_ram(*this, "video_ram"),
m_y1(*this, "Y1"),
m_y2(*this, "Y2"),
m_y3(*this, "Y3"),
m_y4(*this, "Y4"),
m_y5(*this, "Y5"),
m_y6(*this, "Y6"),
m_y7(*this, "Y7"),
m_y8(*this, "Y8"),
m_y9(*this, "Y9"),
m_y10(*this, "Y10"),
m_y11(*this, "Y11"),
m_y12(*this, "Y12"),
m_y(*this, "Y%u", 1),
m_st_io(*this, "ST"),
m_palette(*this, "palette"),
m_rome(1),
@ -92,18 +81,7 @@ public:
required_memory_region m_rom;
required_memory_region m_prom;
optional_shared_ptr<UINT8> m_video_ram;
required_ioport m_y1;
required_ioport m_y2;
required_ioport m_y3;
required_ioport m_y4;
required_ioport m_y5;
required_ioport m_y6;
required_ioport m_y7;
required_ioport m_y8;
required_ioport m_y9;
required_ioport m_y10;
required_ioport m_y11;
required_ioport m_y12;
required_ioport_array<12> m_y;
required_ioport m_st_io;
required_device<palette_device> m_palette;

View File

@ -190,7 +190,7 @@ INPUT_PORTS_START( apricot_keyboard )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
PORT_START("YA")
PORT_START("Y10")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
@ -200,7 +200,7 @@ INPUT_PORTS_START( apricot_keyboard )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
PORT_START("YB")
PORT_START("Y11")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
@ -210,7 +210,7 @@ INPUT_PORTS_START( apricot_keyboard )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD )
PORT_START("YC")
PORT_START("Y12")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD )
@ -248,19 +248,7 @@ ioport_constructor apricot_keyboard_device::device_input_ports() const
apricot_keyboard_device::apricot_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
device_t(mconfig, APRICOT_KEYBOARD, "Apricot Keyboard", tag, owner, clock, "aprikb", __FILE__),
m_write_txd(*this),
m_y0(*this, "Y0"),
m_y1(*this, "Y1"),
m_y2(*this, "Y2"),
m_y3(*this, "Y3"),
m_y4(*this, "Y4"),
m_y5(*this, "Y5"),
m_y6(*this, "Y6"),
m_y7(*this, "Y7"),
m_y8(*this, "Y8"),
m_y9(*this, "Y9"),
m_ya(*this, "YA"),
m_yb(*this, "YB"),
m_yc(*this, "YC"),
m_y(*this, "Y%u", 0),
m_modifiers(*this, "MODIFIERS")
{
}
@ -294,19 +282,10 @@ UINT8 apricot_keyboard_device::read_keyboard()
{
UINT8 data = 0xff;
if (!BIT(m_kb_y, 0)) data &= m_y0->read();
if (!BIT(m_kb_y, 1)) data &= m_y1->read();
if (!BIT(m_kb_y, 2)) data &= m_y2->read();
if (!BIT(m_kb_y, 3)) data &= m_y3->read();
if (!BIT(m_kb_y, 4)) data &= m_y4->read();
if (!BIT(m_kb_y, 5)) data &= m_y5->read();
if (!BIT(m_kb_y, 6)) data &= m_y6->read();
if (!BIT(m_kb_y, 7)) data &= m_y7->read();
if (!BIT(m_kb_y, 8)) data &= m_y8->read();
if (!BIT(m_kb_y, 9)) data &= m_y9->read();
if (!BIT(m_kb_y, 10)) data &= m_ya->read();
if (!BIT(m_kb_y, 11)) data &= m_yb->read();
if (!BIT(m_kb_y, 12)) data &= m_yc->read();
for (int i = 0; i < 13; i++)
{
if (!BIT(m_kb_y, i)) data &= m_y[i]->read();
}
return data;
}

View File

@ -70,19 +70,7 @@ protected:
private:
devcb_write_line m_write_txd;
required_ioport m_y0;
required_ioport m_y1;
required_ioport m_y2;
required_ioport m_y3;
required_ioport m_y4;
required_ioport m_y5;
required_ioport m_y6;
required_ioport m_y7;
required_ioport m_y8;
required_ioport m_y9;
required_ioport m_ya;
required_ioport m_yb;
required_ioport m_yc;
required_ioport_array<13> m_y;
required_ioport m_modifiers;
UINT16 m_kb_y;

View File

@ -239,15 +239,7 @@ compis_keyboard_device::compis_keyboard_device(const machine_config &mconfig, co
: device_t(mconfig, COMPIS_KEYBOARD, "Compis Keyboard", tag, owner, clock, "compiskb", __FILE__),
m_maincpu(*this, I8748_TAG),
m_speaker(*this, SPEAKER_TAG),
m_y1(*this, "Y1"),
m_y2(*this, "Y2"),
m_y3(*this, "Y3"),
m_y4(*this, "Y4"),
m_y5(*this, "Y5"),
m_y6(*this, "Y6"),
m_y7(*this, "Y7"),
m_y8(*this, "Y8"),
m_y9(*this, "Y9"),
m_y(*this, "Y%u", 1),
m_special(*this, "SPECIAL"),
m_out_tx_handler(*this),
m_bus(0xff),
@ -336,15 +328,15 @@ READ8_MEMBER( compis_keyboard_device::p1_r )
switch (m_keylatch)
{
case 1: data &= m_y1->read(); break;
case 2: data &= m_y2->read(); break;
case 3: data &= m_y3->read(); break;
case 4: data &= m_y4->read(); break;
case 5: data &= m_y5->read(); break;
case 6: data &= m_y6->read(); break;
case 7: data &= m_y7->read(); break;
case 8: data &= m_y8->read(); break;
case 9: data &= m_y9->read(); break;
case 1: data &= m_y[0]->read(); break;
case 2: data &= m_y[1]->read(); break;
case 3: data &= m_y[2]->read(); break;
case 4: data &= m_y[3]->read(); break;
case 5: data &= m_y[4]->read(); break;
case 6: data &= m_y[5]->read(); break;
case 7: data &= m_y[6]->read(); break;
case 8: data &= m_y[7]->read(); break;
case 9: data &= m_y[8]->read(); break;
}
return data;
@ -361,15 +353,15 @@ READ8_MEMBER( compis_keyboard_device::p2_r )
switch (m_keylatch)
{
case 1: data &= m_y1->read() >> 8; break;
case 2: data &= m_y2->read() >> 8; break;
case 3: data &= m_y3->read() >> 8; break;
case 4: data &= m_y4->read() >> 8; break;
case 5: data &= m_y5->read() >> 8; break;
case 6: data &= m_y6->read() >> 8; break;
case 7: data &= m_y7->read() >> 8; break;
case 8: data &= m_y8->read() >> 8; break;
case 9: data &= m_y9->read() >> 8; break;
case 1: data &= m_y[0]->read() >> 8; break;
case 2: data &= m_y[1]->read() >> 8; break;
case 3: data &= m_y[2]->read() >> 8; break;
case 4: data &= m_y[3]->read() >> 8; break;
case 5: data &= m_y[4]->read() >> 8; break;
case 6: data &= m_y[5]->read() >> 8; break;
case 7: data &= m_y[6]->read() >> 8; break;
case 8: data &= m_y[7]->read() >> 8; break;
case 9: data &= m_y[8]->read() >> 8; break;
}
data &= m_special->read();

View File

@ -65,15 +65,7 @@ private:
required_device<cpu_device> m_maincpu;
required_device<speaker_sound_device> m_speaker;
required_ioport m_y1;
required_ioport m_y2;
required_ioport m_y3;
required_ioport m_y4;
required_ioport m_y5;
required_ioport m_y6;
required_ioport m_y7;
required_ioport m_y8;
required_ioport m_y9;
required_ioport_array<9> m_y;
required_ioport m_special;
devcb_write_line m_out_tx_handler;

View File

@ -210,16 +210,7 @@ mm1_keyboard_t::mm1_keyboard_t(const machine_config &mconfig, const char *tag, d
m_write_kbst(*this),
m_samples(*this, "keyboard_and_chassis_sounds"),
m_rom(*this, "keyboard"),
m_y0(*this, "Y0"),
m_y1(*this, "Y1"),
m_y2(*this, "Y2"),
m_y3(*this, "Y3"),
m_y4(*this, "Y4"),
m_y5(*this, "Y5"),
m_y6(*this, "Y6"),
m_y7(*this, "Y7"),
m_y8(*this, "Y8"),
m_y9(*this, "Y9"),
m_y(*this, "Y%u", 0),
m_special(*this, "SPECIAL"),
m_sense(0),
m_drive(0),
@ -268,18 +259,9 @@ void mm1_keyboard_t::device_timer(emu_timer &timer, device_timer_id id, int para
// handle scan timer
UINT8 data = 0xff;
switch (m_drive)
if (m_drive < 10)
{
case 0: data = m_y0->read(); break;
case 1: data = m_y1->read(); break;
case 2: data = m_y2->read(); break;
case 3: data = m_y3->read(); break;
case 4: data = m_y4->read(); break;
case 5: data = m_y5->read(); break;
case 6: data = m_y6->read(); break;
case 7: data = m_y7->read(); break;
case 8: data = m_y8->read(); break;
case 9: data = m_y9->read(); break;
data = m_y[m_drive]->read();
}
UINT8 special = m_special->read();

View File

@ -71,16 +71,7 @@ private:
required_device<samples_device> m_samples;
required_memory_region m_rom;
required_ioport m_y0;
required_ioport m_y1;
required_ioport m_y2;
required_ioport m_y3;
required_ioport m_y4;
required_ioport m_y5;
required_ioport m_y6;
required_ioport m_y7;
required_ioport m_y8;
required_ioport m_y9;
required_ioport_array<10> m_y;
required_ioport m_special;
int m_sense;

View File

@ -221,17 +221,7 @@ pc1512_keyboard_t::pc1512_keyboard_t(const machine_config &mconfig, const char *
device_t(mconfig, PC1512_KEYBOARD, "Amstrad PC1512 Keyboard", tag, owner, clock, "pc1512kb", __FILE__),
m_maincpu(*this, I8048_TAG),
m_joy(*this, "joy"),
m_y1(*this, "Y1"),
m_y2(*this, "Y2"),
m_y3(*this, "Y3"),
m_y4(*this, "Y4"),
m_y5(*this, "Y5"),
m_y6(*this, "Y6"),
m_y7(*this, "Y7"),
m_y8(*this, "Y8"),
m_y9(*this, "Y9"),
m_y10(*this, "Y10"),
m_y11(*this, "Y11"),
m_y(*this, "Y%u", 1),
m_write_clock(*this),
m_write_data(*this),
m_data_in(1),
@ -365,17 +355,17 @@ READ8_MEMBER( pc1512_keyboard_t::kb_bus_r )
UINT8 data = 0xff;
if (!BIT(m_kb_y, 0)) data &= m_y1->read();
if (!BIT(m_kb_y, 1)) data &= m_y2->read();
if (!BIT(m_kb_y, 2)) data &= m_y3->read();
if (!BIT(m_kb_y, 3)) data &= m_y4->read();
if (!BIT(m_kb_y, 4)) data &= m_y5->read();
if (!BIT(m_kb_y, 5)) data &= m_y6->read();
if (!BIT(m_kb_y, 6)) data &= m_y7->read();
if (!BIT(m_kb_y, 7)) data &= m_y8->read();
if (!BIT(m_kb_y, 8)) data &= m_y9->read();
if (!BIT(m_kb_y, 9)) data &= m_y10->read();
if (!BIT(m_kb_y, 10)) data &= m_y11->read();
if (!BIT(m_kb_y, 0)) data &= m_y[0]->read();
if (!BIT(m_kb_y, 1)) data &= m_y[1]->read();
if (!BIT(m_kb_y, 2)) data &= m_y[2]->read();
if (!BIT(m_kb_y, 3)) data &= m_y[3]->read();
if (!BIT(m_kb_y, 4)) data &= m_y[4]->read();
if (!BIT(m_kb_y, 5)) data &= m_y[5]->read();
if (!BIT(m_kb_y, 6)) data &= m_y[6]->read();
if (!BIT(m_kb_y, 7)) data &= m_y[7]->read();
if (!BIT(m_kb_y, 8)) data &= m_y[8]->read();
if (!BIT(m_kb_y, 9)) data &= m_y[9]->read();
if (!BIT(m_kb_y, 10)) data &= m_y[10]->read();
if (!m_joy_com)
{
data &= m_joy->joy_r();

View File

@ -86,17 +86,7 @@ private:
required_device<cpu_device> m_maincpu;
required_device<vcs_control_port_device> m_joy;
required_ioport m_y1;
required_ioport m_y2;
required_ioport m_y3;
required_ioport m_y4;
required_ioport m_y5;
required_ioport m_y6;
required_ioport m_y7;
required_ioport m_y8;
required_ioport m_y9;
required_ioport m_y10;
required_ioport m_y11;
required_ioport_array<11> m_y;
devcb_write_line m_write_clock;
devcb_write_line m_write_data;

View File

@ -225,26 +225,15 @@ ioport_constructor tandy2k_keyboard_device::device_input_ports() const
// tandy2k_keyboard_device - constructor
//-------------------------------------------------
tandy2k_keyboard_device::tandy2k_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, TANDY2K_KEYBOARD, "Tandy 2000 Keyboard", tag, owner, clock, "tandy2kb", __FILE__),
m_maincpu(*this, I8048_TAG),
m_y0(*this, "Y0"),
m_y1(*this, "Y1"),
m_y2(*this, "Y2"),
m_y3(*this, "Y3"),
m_y4(*this, "Y4"),
m_y5(*this, "Y5"),
m_y6(*this, "Y6"),
m_y7(*this, "Y7"),
m_y8(*this, "Y8"),
m_y9(*this, "Y9"),
m_y10(*this, "Y10"),
m_y11(*this, "Y11"),
m_write_clock(*this),
m_write_data(*this),
m_keylatch(0xffff),
m_clock(0),
m_data(0)
tandy2k_keyboard_device::tandy2k_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
device_t(mconfig, TANDY2K_KEYBOARD, "Tandy 2000 Keyboard", tag, owner, clock, "tandy2kb", __FILE__),
m_maincpu(*this, I8048_TAG),
m_y(*this, "Y%u", 0),
m_write_clock(*this),
m_write_data(*this),
m_keylatch(0xffff),
m_clock(0),
m_data(0)
{
}
@ -339,18 +328,10 @@ READ8_MEMBER( tandy2k_keyboard_device::kb_p1_r )
UINT8 data = 0xff;
if (!BIT(m_keylatch, 0)) data &= m_y0->read();
if (!BIT(m_keylatch, 1)) data &= m_y1->read();
if (!BIT(m_keylatch, 2)) data &= m_y2->read();
if (!BIT(m_keylatch, 3)) data &= m_y3->read();
if (!BIT(m_keylatch, 4)) data &= m_y4->read();
if (!BIT(m_keylatch, 5)) data &= m_y5->read();
if (!BIT(m_keylatch, 6)) data &= m_y6->read();
if (!BIT(m_keylatch, 7)) data &= m_y7->read();
if (!BIT(m_keylatch, 8)) data &= m_y8->read();
if (!BIT(m_keylatch, 9)) data &= m_y9->read();
if (!BIT(m_keylatch, 10)) data &= m_y10->read();
if (!BIT(m_keylatch, 11)) data &= m_y11->read();
for (int i = 0; i < 12; i++)
{
if (!BIT(m_keylatch, i)) data &= m_y[i]->read();
}
return ~data;
}

View File

@ -79,18 +79,7 @@ private:
};
required_device<cpu_device> m_maincpu;
required_ioport m_y0;
required_ioport m_y1;
required_ioport m_y2;
required_ioport m_y3;
required_ioport m_y4;
required_ioport m_y5;
required_ioport m_y6;
required_ioport m_y7;
required_ioport m_y8;
required_ioport m_y9;
required_ioport m_y10;
required_ioport m_y11;
required_ioport_array<12> m_y;
devcb_write_line m_write_clock;
devcb_write_line m_write_data;

View File

@ -185,7 +185,7 @@ INPUT_PORTS_START( trs80m2_keyboard )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("YA")
PORT_START("Y10")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':')
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&')
@ -195,7 +195,7 @@ INPUT_PORTS_START( trs80m2_keyboard )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("ESC") PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC))
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("YB")
PORT_START("Y11")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
@ -226,25 +226,14 @@ ioport_constructor trs80m2_keyboard_device::device_input_ports() const
// trs80m2_keyboard_device - constructor
//-------------------------------------------------
trs80m2_keyboard_device::trs80m2_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, TRS80M2_KEYBOARD, "TRS-80 Model II Keyboard", tag, owner, clock, "trs80m2kb", __FILE__),
m_maincpu(*this, I8021_TAG),
m_y0(*this, "Y0"),
m_y1(*this, "Y1"),
m_y2(*this, "Y2"),
m_y3(*this, "Y3"),
m_y4(*this, "Y4"),
m_y5(*this, "Y5"),
m_y6(*this, "Y6"),
m_y7(*this, "Y7"),
m_y8(*this, "Y8"),
m_y9(*this, "Y9"),
m_ya(*this, "YA"),
m_yb(*this, "YB"),
m_write_clock(*this),
m_busy(1),
m_data(1),
m_clk(0)
trs80m2_keyboard_device::trs80m2_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
device_t(mconfig, TRS80M2_KEYBOARD, "TRS-80 Model II Keyboard", tag, owner, clock, "trs80m2kb", __FILE__),
m_maincpu(*this, I8021_TAG),
m_y(*this, "Y%u", 0),
m_write_clock(*this),
m_busy(1),
m_data(1),
m_clk(0)
{
}
@ -262,7 +251,7 @@ void trs80m2_keyboard_device::device_start()
save_item(NAME(m_busy));
save_item(NAME(m_data));
save_item(NAME(m_clk));
save_item(NAME(m_y));
save_item(NAME(m_keylatch));
}
@ -312,20 +301,9 @@ READ8_MEMBER( trs80m2_keyboard_device::kb_p0_r )
{
UINT8 data = 0xff;
switch (m_y)
if (m_keylatch < 12)
{
case 0: data &= m_y0->read(); break;
case 1: data &= m_y1->read(); break;
case 2: data &= m_y2->read(); break;
case 3: data &= m_y3->read(); break;
case 4: data &= m_y4->read(); break;
case 5: data &= m_y5->read(); break;
case 6: data &= m_y6->read(); break;
case 7: data &= m_y7->read(); break;
case 8: data &= m_y8->read(); break;
case 9: data &= m_y9->read(); break;
case 0xa: data &= m_ya->read(); break;
case 0xb: data &= m_yb->read(); break;
data &= m_y[m_keylatch]->read();
}
return data;
@ -388,5 +366,5 @@ WRITE8_MEMBER( trs80m2_keyboard_device::kb_p2_w )
*/
m_y = BITSWAP8(data, 7, 6, 5, 4, 0, 1, 2, 3) & 0x0f;
m_keylatch = BITSWAP8(data, 7, 6, 5, 4, 0, 1, 2, 3) & 0x0f;
}

View File

@ -75,18 +75,7 @@ private:
};
required_device<cpu_device> m_maincpu;
required_ioport m_y0;
required_ioport m_y1;
required_ioport m_y2;
required_ioport m_y3;
required_ioport m_y4;
required_ioport m_y5;
required_ioport m_y6;
required_ioport m_y7;
required_ioport m_y8;
required_ioport m_y9;
required_ioport m_ya;
required_ioport m_yb;
required_ioport_array<12> m_y;
devcb_write_line m_write_clock;
@ -94,7 +83,7 @@ private:
int m_data;
int m_clk;
UINT8 m_y;
UINT8 m_keylatch;
};

View File

@ -208,7 +208,7 @@ INPUT_PORTS_START( v1050_keyboard )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
PORT_START("YA")
PORT_START("Y10")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_TILDE) PORT_CHAR('~') PORT_CHAR('\'')
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CHAR('0') PORT_CHAR(')')
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CHAR('9') PORT_CHAR('(')
@ -218,7 +218,7 @@ INPUT_PORTS_START( v1050_keyboard )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('*')
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&')
PORT_START("YB")
PORT_START("Y11")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':')
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'') PORT_CHAR('"')
@ -301,24 +301,13 @@ ioport_constructor v1050_keyboard_device::device_input_ports() const
// v1050_keyboard_device - constructor
//-------------------------------------------------
v1050_keyboard_device::v1050_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, V1050_KEYBOARD, "Visual 1050 Keyboard", tag, owner, clock, "v1050kb", __FILE__),
m_maincpu(*this, I8049_TAG),
m_discrete(*this, DISCRETE_TAG),
m_y0(*this, "Y0"),
m_y1(*this, "Y1"),
m_y2(*this, "Y2"),
m_y3(*this, "Y3"),
m_y4(*this, "Y4"),
m_y5(*this, "Y5"),
m_y6(*this, "Y6"),
m_y7(*this, "Y7"),
m_y8(*this, "Y8"),
m_y9(*this, "Y9"),
m_ya(*this, "YA"),
m_yb(*this, "YB"),
m_out_tx_handler(*this),
m_y(0)
v1050_keyboard_device::v1050_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
device_t(mconfig, V1050_KEYBOARD, "Visual 1050 Keyboard", tag, owner, clock, "v1050kb", __FILE__),
m_maincpu(*this, I8049_TAG),
m_discrete(*this, DISCRETE_TAG),
m_y(*this, "Y%u", 0),
m_out_tx_handler(*this),
m_keylatch(0)
{
}
@ -330,7 +319,7 @@ v1050_keyboard_device::v1050_keyboard_device(const machine_config &mconfig, cons
void v1050_keyboard_device::device_start()
{
// state saving
save_item(NAME(m_y));
save_item(NAME(m_keylatch));
}
@ -363,20 +352,9 @@ READ8_MEMBER( v1050_keyboard_device::kb_p1_r )
{
UINT8 data = 0xff;
switch (m_y)
if (m_keylatch < 12)
{
case 0: data &= m_y0->read(); break;
case 1: data &= m_y1->read(); break;
case 2: data &= m_y2->read(); break;
case 3: data &= m_y3->read(); break;
case 4: data &= m_y4->read(); break;
case 5: data &= m_y5->read(); break;
case 6: data &= m_y6->read(); break;
case 7: data &= m_y7->read(); break;
case 8: data &= m_y8->read(); break;
case 9: data &= m_y9->read(); break;
case 0xa: data &= m_ya->read(); break;
case 0xb: data &= m_yb->read(); break;
data &= m_y[m_keylatch]->read();
}
return data;
@ -389,7 +367,7 @@ READ8_MEMBER( v1050_keyboard_device::kb_p1_r )
WRITE8_MEMBER( v1050_keyboard_device::kb_p1_w )
{
m_y = data & 0x0f;
m_keylatch = data & 0x0f;
}

View File

@ -60,21 +60,10 @@ protected:
private:
required_device<cpu_device> m_maincpu;
required_device<discrete_sound_device> m_discrete;
required_ioport m_y0;
required_ioport m_y1;
required_ioport m_y2;
required_ioport m_y3;
required_ioport m_y4;
required_ioport m_y5;
required_ioport m_y6;
required_ioport m_y7;
required_ioport m_y8;
required_ioport m_y9;
required_ioport m_ya;
required_ioport m_yb;
required_ioport_array<12> m_y;
devcb_write_line m_out_tx_handler;
UINT8 m_y;
UINT8 m_keylatch;
};

View File

@ -513,7 +513,7 @@ INPUT_PORTS_START( victor9k_keyboard )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 3") PORT_CODE(KEYCODE_3_PAD) // S93
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad Enter") PORT_CODE(KEYCODE_ENTER_PAD) // S94
PORT_START("YA")
PORT_START("Y10")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad " UTF8_MULTIPLY) PORT_CODE(KEYCODE_ASTERISK) // unicode multiply sign U+00D7 // S32
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F10 [10]") PORT_CODE(KEYCODE_F10) // S11
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad -") PORT_CODE(KEYCODE_MINUS_PAD) // S53
@ -523,7 +523,7 @@ INPUT_PORTS_START( victor9k_keyboard )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F7 [7]") PORT_CODE(KEYCODE_F7) // S07
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F6 [6]") PORT_CODE(KEYCODE_F6) // S06
PORT_START("YB")
PORT_START("Y11")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UNUSED S04") // unused // S104
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad .") PORT_CODE(KEYCODE_DEL_PAD) // S103
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 00") PORT_CODE(KEYCODE_00_PAD) // S102
@ -533,7 +533,7 @@ INPUT_PORTS_START( victor9k_keyboard )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("PAUSE/CONT") PORT_CODE(KEYCODE_PAUSE) // S98
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Spacebar") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') // S97
PORT_START("YC")
PORT_START("Y12")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F5 [5]") PORT_CODE(KEYCODE_F5) // S05
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F4 [4]") PORT_CODE(KEYCODE_F4) // S04
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F3 [3]") PORT_CODE(KEYCODE_F3) // S03
@ -567,22 +567,10 @@ ioport_constructor victor_9000_keyboard_t::device_input_ports() const
victor_9000_keyboard_t::victor_9000_keyboard_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
device_t(mconfig, VICTOR9K_KEYBOARD, "Victor 9000 Keyboard", tag, owner, clock, "victor9kb", __FILE__),
m_maincpu(*this, I8021_TAG),
m_y0(*this, "Y0"),
m_y1(*this, "Y1"),
m_y2(*this, "Y2"),
m_y3(*this, "Y3"),
m_y4(*this, "Y4"),
m_y5(*this, "Y5"),
m_y6(*this, "Y6"),
m_y7(*this, "Y7"),
m_y8(*this, "Y8"),
m_y9(*this, "Y9"),
m_ya(*this, "YA"),
m_yb(*this, "YB"),
m_yc(*this, "YC"),
m_y(*this, "Y%u", 0),
m_kbrdy_cb(*this),
m_kbdata_cb(*this),
m_y(0),
m_keylatch(0),
m_kbrdy(-1),
m_kbdata(-1),
m_kback(1)
@ -602,7 +590,7 @@ void victor_9000_keyboard_t::device_start()
// state saving
save_item(NAME(m_p1));
save_item(NAME(m_y));
save_item(NAME(m_keylatch));
save_item(NAME(m_stb));
save_item(NAME(m_y12));
save_item(NAME(m_kbrdy));
@ -631,25 +619,14 @@ READ8_MEMBER( victor_9000_keyboard_t::kb_p1_r )
{
UINT8 data = 0xff;
switch (m_y)
if (m_keylatch < 12)
{
case 0: data &= m_y0->read(); break;
case 1: data &= m_y1->read(); break;
case 2: data &= m_y2->read(); break;
case 3: data &= m_y3->read(); break;
case 4: data &= m_y4->read(); break;
case 5: data &= m_y5->read(); break;
case 6: data &= m_y6->read(); break;
case 7: data &= m_y7->read(); break;
case 8: data &= m_y8->read(); break;
case 9: data &= m_y9->read(); break;
case 0xa: data &= m_ya->read(); break;
case 0xb: data &= m_yb->read(); break;
data &= m_y[m_keylatch]->read();
}
if (!m_y12)
{
data &= m_yc->read();
data &= m_y[12]->read();
}
return data;
@ -686,7 +663,7 @@ WRITE8_MEMBER( victor_9000_keyboard_t::kb_p2_w )
// falling (?edge or level?), latch keyboard rows 0-11
if (!BIT(data, 0))
{
m_y = m_p1 & 0x0f;
m_keylatch = m_p1 & 0x0f;
m_y12 = BIT(data, 2);
}

View File

@ -62,25 +62,13 @@ protected:
private:
required_device<cpu_device> m_maincpu;
required_ioport m_y0;
required_ioport m_y1;
required_ioport m_y2;
required_ioport m_y3;
required_ioport m_y4;
required_ioport m_y5;
required_ioport m_y6;
required_ioport m_y7;
required_ioport m_y8;
required_ioport m_y9;
required_ioport m_ya;
required_ioport m_yb;
required_ioport m_yc;
required_ioport_array<13> m_y;
devcb_write_line m_kbrdy_cb;
devcb_write_line m_kbdata_cb;
UINT8 m_p1;
UINT8 m_y;
UINT8 m_keylatch;
int m_stb;
int m_y12;
int m_kbrdy;

View File

@ -239,7 +239,7 @@ INPUT_PORTS_START( wangpc_keyboard )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("2ND") PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_MAMEKEY(RCONTROL)) // 25
PORT_START("YA")
PORT_START("Y10")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("DEC TAB") PORT_CODE(KEYCODE_F4) // 7b
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("FORMAT") PORT_CODE(KEYCODE_F5) // 7a
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x95") // 71
@ -249,7 +249,7 @@ INPUT_PORTS_START( wangpc_keyboard )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) // 27
PORT_START("YB")
PORT_START("Y11")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("PAGE") PORT_CODE(KEYCODE_F2) // 7d
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("CENTER") PORT_CODE(KEYCODE_F3) // 7c
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("MOVE") PORT_CODE(KEYCODE_F12) // 73
@ -259,7 +259,7 @@ INPUT_PORTS_START( wangpc_keyboard )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("YC")
PORT_START("Y12")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("HELP") PORT_CODE(KEYCODE_ESC) // 36
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("INDENT") PORT_CODE(KEYCODE_F1) // 7e
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("REPLC") PORT_CODE(KEYCODE_F10) // 75
@ -269,7 +269,7 @@ INPUT_PORTS_START( wangpc_keyboard )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // 1d
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("YD")
PORT_START("Y13")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad \xC3\x97") PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR(UCHAR_MAMEKEY(ASTERISK)) // 14
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad \xC3\xB7") PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD)) // 18
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("PRINT") // 19
@ -279,7 +279,7 @@ INPUT_PORTS_START( wangpc_keyboard )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) // 1c
PORT_START("YE")
PORT_START("Y14")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad + *") PORT_CODE(KEYCODE_NUMLOCK) PORT_CHAR(UCHAR_MAMEKEY(NUMLOCK))// 60
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad - !") PORT_CODE(KEYCODE_SLASH_PAD) PORT_CHAR(UCHAR_MAMEKEY(SLASH_PAD)) // 13
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 8 >") PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(UCHAR_MAMEKEY(8_PAD)) // 15
@ -289,7 +289,7 @@ INPUT_PORTS_START( wangpc_keyboard )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 3 #") PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD)) // 10
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) // 1b
PORT_START("YF")
PORT_START("Y15")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("INSERT") PORT_CODE(KEYCODE_HOME) PORT_CHAR(UCHAR_MAMEKEY(HOME)) // 62
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("PREV") PORT_CODE(KEYCODE_PGUP) PORT_CHAR(UCHAR_MAMEKEY(PGUP)) // 61
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("NEXT") PORT_CODE(KEYCODE_PGDN) PORT_CHAR(UCHAR_MAMEKEY(PGDN)) // 51
@ -376,23 +376,10 @@ wangpc_keyboard_t::wangpc_keyboard_t(const machine_config &mconfig, const char *
device_t(mconfig, WANGPC_KEYBOARD, "Wang PC Keyboard", tag, owner, clock, "wangpckb", __FILE__),
device_serial_interface(mconfig, *this),
m_maincpu(*this, I8051_TAG),
m_y0(*this, "Y0"),
m_y1(*this, "Y1"),
m_y2(*this, "Y2"),
m_y3(*this, "Y3"),
m_y4(*this, "Y4"),
m_y5(*this, "Y5"),
m_y6(*this, "Y6"),
m_y7(*this, "Y7"),
m_y8(*this, "Y8"),
m_y9(*this, "Y9"),
m_ya(*this, "YA"),
m_yb(*this, "YB"),
m_yc(*this, "YC"),
m_yd(*this, "YD"),
m_ye(*this, "YE"),
m_yf(*this, "YF"),
m_txd_handler(*this)
m_y(*this, "Y%u", 0),
m_txd_handler(*this),
m_keylatch(0),
m_rxd(1)
{
}
@ -409,6 +396,9 @@ void wangpc_keyboard_t::device_start()
set_rcv_rate(62500);
//set_tra_rate(62500);
save_item(NAME(m_keylatch));
save_item(NAME(m_rxd));
}
@ -533,29 +523,7 @@ WRITE8_MEMBER(wangpc_keyboard_t::mcs51_tx_callback)
READ8_MEMBER( wangpc_keyboard_t::kb_p1_r )
{
UINT8 data = 0xff;
switch (m_y & 0x0f)
{
case 0: data &= m_y0->read(); break;
case 1: data &= m_y1->read(); break;
case 2: data &= m_y2->read(); break;
case 3: data &= m_y3->read(); break;
case 4: data &= m_y4->read(); break;
case 5: data &= m_y5->read(); break;
case 6: data &= m_y6->read(); break;
case 7: data &= m_y7->read(); break;
case 8: data &= m_y8->read(); break;
case 9: data &= m_y9->read(); break;
case 0xa: data &= m_ya->read(); break;
case 0xb: data &= m_yb->read(); break;
case 0xc: data &= m_yc->read(); break;
case 0xd: data &= m_yd->read(); break;
case 0xe: data &= m_ye->read(); break;
case 0xf: data &= m_yf->read(); break;
}
return data;
return m_y[m_keylatch]->read();
}
@ -610,7 +578,7 @@ WRITE8_MEMBER( wangpc_keyboard_t::kb_p2_w )
*/
m_y = data & 0x0f;
m_keylatch = data & 0x0f;
//if (LOG) logerror("P2 %02x\n", data);
}

View File

@ -82,25 +82,10 @@ protected:
private:
required_device<i8051_device> m_maincpu;
required_ioport m_y0;
required_ioport m_y1;
required_ioport m_y2;
required_ioport m_y3;
required_ioport m_y4;
required_ioport m_y5;
required_ioport m_y6;
required_ioport m_y7;
required_ioport m_y8;
required_ioport m_y9;
required_ioport m_ya;
required_ioport m_yb;
required_ioport m_yc;
required_ioport m_yd;
required_ioport m_ye;
required_ioport m_yf;
required_ioport_array<16> m_y;
devcb_write_line m_txd_handler;
UINT8 m_y;
UINT8 m_keylatch;
int m_rxd;
};

View File

@ -208,7 +208,25 @@ INPUT_PORTS_START( xerox_820_keyboard )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
PORT_START("YF")
PORT_START("Y9")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("Y10")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("Y11")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("Y12")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("Y13")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("Y14")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("Y15")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("LOCK") PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK)) PORT_TOGGLE
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Left CTRL") PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL))
@ -242,16 +260,7 @@ ioport_constructor xerox_820_keyboard_t::device_input_ports() const
xerox_820_keyboard_t::xerox_820_keyboard_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
device_t(mconfig, XEROX_820_KEYBOARD, "Xerox 820 Keyboard", tag, owner, clock, "x820kb", __FILE__),
m_maincpu(*this, I8748_TAG),
m_y0(*this, "Y0"),
m_y1(*this, "Y1"),
m_y2(*this, "Y2"),
m_y3(*this, "Y3"),
m_y4(*this, "Y4"),
m_y5(*this, "Y5"),
m_y6(*this, "Y6"),
m_y7(*this, "Y7"),
m_y8(*this, "Y8"),
m_yf(*this, "YF"),
m_y(*this, "Y%u", 0),
m_kbstb_cb(*this),
m_p1(0xff),
m_bus(0xff)
@ -329,23 +338,7 @@ WRITE8_MEMBER( xerox_820_keyboard_t::kb_p1_w )
READ8_MEMBER( xerox_820_keyboard_t::kb_p2_r )
{
UINT8 data = 0xff;
switch (m_p1 & 0x0f)
{
case 0: data &= m_y0->read(); break;
case 1: data &= m_y1->read(); break;
case 2: data &= m_y2->read(); break;
case 3: data &= m_y3->read(); break;
case 4: data &= m_y4->read(); break;
case 5: data &= m_y5->read(); break;
case 6: data &= m_y6->read(); break;
case 7: data &= m_y7->read(); break;
case 8: data &= m_y8->read(); break;
case 0xf: data &= m_yf->read(); break;
}
return data;
return m_y[m_p1 & 0x0f]->read();
}

View File

@ -61,16 +61,7 @@ protected:
private:
required_device<cpu_device> m_maincpu;
required_ioport m_y0;
required_ioport m_y1;
required_ioport m_y2;
required_ioport m_y3;
required_ioport m_y4;
required_ioport m_y5;
required_ioport m_y6;
required_ioport m_y7;
required_ioport m_y8;
required_ioport m_yf;
required_ioport_array<16> m_y;
devcb_write_line m_kbstb_cb;