(MESS) victor9k: Fixed keyboard. [Curt Coder]

This commit is contained in:
Curt Coder 2015-06-08 09:57:51 +03:00
parent dc3240fb51
commit 01eee78eca
2 changed files with 50 additions and 10 deletions

View File

@ -10,7 +10,6 @@
TODO:
- keyboard
- expansion bus
- Z80 card
- Winchester DMA card (Xebec S1410 + Tandon TM502/TM603SE)
@ -28,6 +27,14 @@
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
#define LOG 0
//**************************************************************************
// ADDRESS MAPS
//**************************************************************************
@ -272,6 +279,13 @@ WRITE8_MEMBER( victor9k_state::via2_pa_w )
*/
}
void victor9k_state::update_kback()
{
int kback = !(!(m_kbrdy && !m_via2_irq) && !(m_kbackctl && m_via2_irq));
m_kb->kback_w(kback);
}
WRITE8_MEMBER( victor9k_state::via2_pb_w )
{
/*
@ -290,7 +304,8 @@ WRITE8_MEMBER( victor9k_state::via2_pb_w )
*/
// keyboard acknowledge
m_kb->kback_w(BIT(data, 1));
m_kbackctl = BIT(data, 1);
update_kback();
// brightness
m_brt = (data >> 2) & 0x07;
@ -299,6 +314,14 @@ WRITE8_MEMBER( victor9k_state::via2_pb_w )
m_cont = data >> 5;
}
WRITE_LINE_MEMBER( victor9k_state::via2_irq_w )
{
m_via2_irq = state;
m_pic->ir6_w(m_via2_irq);
update_kback();
}
WRITE_LINE_MEMBER( victor9k_state::write_ria )
{
@ -360,14 +383,17 @@ WRITE_LINE_MEMBER( victor9k_state::via3_irq_w )
WRITE_LINE_MEMBER( victor9k_state::kbrdy_w )
{
//logerror("KBRDY %u\n", state);
if (LOG) logerror("KBRDY %u\n", state);
m_via2->write_cb1(state);
m_kbrdy = state;
update_kback();
}
WRITE_LINE_MEMBER( victor9k_state::kbdata_w )
{
//logerror("KBDATA %u\n", state);
if (LOG) logerror("KBDATA %u\n", state);
m_via2->write_cb2(state);
m_via2->write_pa6(state);
@ -392,9 +418,12 @@ void victor9k_state::machine_start()
save_item(NAME(m_brt));
save_item(NAME(m_cont));
save_item(NAME(m_via1_irq));
save_item(NAME(m_via2_irq));
save_item(NAME(m_via3_irq));
save_item(NAME(m_fdc_irq));
save_item(NAME(m_ssda_irq));
save_item(NAME(m_kbrdy));
save_item(NAME(m_kbackctl));
// patch out SCP self test
m_rom->base()[0x11ab] = 0xc3;
@ -499,7 +528,7 @@ static MACHINE_CONFIG_START( victor9k, victor9k_state )
MCFG_DEVICE_ADD(M6522_2_TAG, VIA6522, XTAL_30MHz/30)
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(victor9k_state, via2_pa_w))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor9k_state, via2_pb_w))
MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE(I8259A_TAG, pic8259_device, ir6_w))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via2_irq_w))
MCFG_DEVICE_ADD(M6522_3_TAG, VIA6522, XTAL_30MHz/30)
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor9k_state, via3_pb_w))

View File

@ -75,9 +75,12 @@ public:
m_brt(0),
m_cont(0),
m_via1_irq(CLEAR_LINE),
m_via2_irq(CLEAR_LINE),
m_via3_irq(CLEAR_LINE),
m_fdc_irq(CLEAR_LINE),
m_ssda_irq(CLEAR_LINE)
m_ssda_irq(CLEAR_LINE),
m_kbrdy(1),
m_kbackctl(0)
{ }
required_device<cpu_device> m_maincpu;
@ -114,6 +117,7 @@ public:
DECLARE_WRITE8_MEMBER( via2_pb_w );
DECLARE_WRITE_LINE_MEMBER( write_ria );
DECLARE_WRITE_LINE_MEMBER( write_rib );
DECLARE_WRITE_LINE_MEMBER( via2_irq_w );
DECLARE_WRITE8_MEMBER( via3_pb_w );
DECLARE_WRITE_LINE_MEMBER( via3_irq_w );
@ -128,18 +132,25 @@ public:
MC6845_UPDATE_ROW( crtc_update_row );
/* video state */
DECLARE_WRITE_LINE_MEMBER( mux_serial_b_w );
DECLARE_WRITE_LINE_MEMBER( mux_serial_a_w );
// video state
int m_brt;
int m_cont;
/* interrupts */
// interrupts
int m_via1_irq;
int m_via2_irq;
int m_via3_irq;
int m_fdc_irq;
int m_ssda_irq;
DECLARE_WRITE_LINE_MEMBER(mux_serial_b_w);
DECLARE_WRITE_LINE_MEMBER(mux_serial_a_w);
// keyboard
int m_kbrdy;
int m_kbackctl;
void update_kback();
};
#endif