Started to remove via port read handlers, prematurely stopped because IEEE488 code derives the clock from the read handler being called [smf]

This commit is contained in:
smf- 2014-01-02 13:54:31 +00:00
parent 86e75fa9c1
commit be9a5785e4
2 changed files with 91 additions and 173 deletions

View File

@ -299,6 +299,12 @@ static MC6845_UPDATE_ROW( victor9k_update_row )
}
}
WRITE_LINE_MEMBER(victor9k_state::vert_w)
{
m_via2->write_pa7(state);
m_pic->ir7_w(state);
}
static MC6845_INTERFACE( hd46505s_intf )
{
false,
@ -309,7 +315,7 @@ static MC6845_INTERFACE( hd46505s_intf )
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir7_w),
DEVCB_DRIVER_LINE_MEMBER(victor9k_state, vert_w),
NULL
};
@ -442,36 +448,16 @@ WRITE8_MEMBER( victor9k_state::via1_pa_w )
m_ieee488->dio_w(data);
}
READ8_MEMBER( victor9k_state::via1_pb_r )
DECLARE_WRITE_LINE_MEMBER( victor9k_state::write_nfrd )
{
/*
m_via1->write_pb6(state);
m_via1->write_ca1(state);
}
bit description
PB0 DAV
PB1 EOI
PB2 REN
PB3 ATN
PB4 IFC
PB5 SRQ
PB6 NRFD
PB7 NDAC
*/
UINT8 data = 0;
// IEEE-488
data |= m_ieee488->dav_r();
data |= m_ieee488->eoi_r() << 1;
data |= m_ieee488->ren_r() << 2;
data |= m_ieee488->atn_r() << 3;
data |= m_ieee488->ifc_r() << 4;
data |= m_ieee488->srq_r() << 5;
data |= m_ieee488->nrfd_r() << 6;
data |= m_ieee488->ndac_r() << 7;
return data;
DECLARE_WRITE_LINE_MEMBER( victor9k_state::write_ndac )
{
m_via1->write_pb7(state);
m_via1->write_ca2(state);
}
WRITE8_MEMBER( victor9k_state::via1_pb_w )
@ -513,41 +499,6 @@ WRITE_LINE_MEMBER( victor9k_state::via1_irq_w )
m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq);
}
READ8_MEMBER( victor9k_state::via2_pa_r )
{
/*
bit description
PA0
PA1
PA2 RIA
PA3 DSRA
PA4 RIB
PA5 DSRB
PA6 KBDATA
PA7 VERT
*/
UINT8 data = 0;
// serial
data |= m_rs232a->ri_r() << 2;
data |= m_rs232a->dsr_r() << 3;
data |= m_rs232b->ri_r() << 4;
data |= m_rs232b->dsr_r() << 5;
// keyboard data
data |= m_kb->kbdata_r() << 6;
// vertical sync
data |= m_crtc->vsync_r() << 7;
return data;
}
WRITE8_MEMBER( victor9k_state::via2_pa_w )
{
/*
@ -593,6 +544,21 @@ WRITE8_MEMBER( victor9k_state::via2_pb_w )
m_cont = data >> 5;
}
WRITE_LINE_MEMBER( victor9k_state::write_ria )
{
m_upd7201->ria_w(state);
m_via2->write_pa2(state);
}
WRITE_LINE_MEMBER( victor9k_state::write_rib )
{
m_upd7201->rib_w(state);
m_via2->write_pa4(state);
}
WRITE_LINE_MEMBER( victor9k_state::via2_irq_w )
{
m_via2_irq = state;
@ -601,10 +567,7 @@ WRITE_LINE_MEMBER( victor9k_state::via2_irq_w )
}
READ8_MEMBER( victor9k_state::via3_pa_r )
{
/*
/*
bit description
PA0 J5-16
@ -615,36 +578,6 @@ READ8_MEMBER( victor9k_state::via3_pa_r )
PA5 J5-26
PA6 J5-28
PA7 J5-30
*/
return 0;
}
WRITE8_MEMBER( victor9k_state::via3_pa_w )
{
/*
bit description
PA0 J5-16
PA1 J5-18
PA2 J5-20
PA3 J5-22
PA4 J5-24
PA5 J5-26
PA6 J5-28
PA7 J5-30
*/
}
READ8_MEMBER( victor9k_state::via3_pb_r )
{
/*
bit description
PB0 J5-32
PB1 J5-34
PB2 J5-36
@ -653,29 +586,14 @@ READ8_MEMBER( victor9k_state::via3_pb_r )
PB5 J5-42
PB6 J5-44
PB7 J5-46
*/
return 0;
}
CA1 J5-12
CB1 J5-48
CA2 J5-14
CB2 J5-50
*/
WRITE8_MEMBER( victor9k_state::via3_pb_w )
{
/*
bit description
PB0 J5-32
PB1 J5-34
PB2 J5-36
PB3 J5-38
PB4 J5-40
PB5 J5-42
PB6 J5-44
PB7 J5-46
*/
// codec clock output
m_ssda->rx_clk_w(BIT(data, 7));
m_ssda->tx_clk_w(BIT(data, 7));
@ -743,9 +661,7 @@ WRITE_LINE_MEMBER( victor9k_state::via4_irq_w )
}
READ8_MEMBER( victor9k_state::via5_pa_r )
{
/*
/*
bit description
@ -758,10 +674,7 @@ READ8_MEMBER( victor9k_state::via5_pa_r )
PA6 I7
PA7 E6
*/
return 0;
}
*/
WRITE8_MEMBER( victor9k_state::via5_pb_w )
{
@ -945,6 +858,11 @@ WRITE_LINE_MEMBER( victor9k_state::kbrdy_w )
m_pic->ir6_w(state ? CLEAR_LINE : ASSERT_LINE);
}
WRITE_LINE_MEMBER( victor9k_state::kbdata_w )
{
m_via2->write_cb2(state);
m_via2->write_pa6(state);
}
//-------------------------------------------------
// SLOT_INTERFACE( victor9k_floppies )
@ -1068,8 +986,15 @@ static MACHINE_CONFIG_START( victor9k, victor9k_state )
// devices
MCFG_IEEE488_BUS_ADD()
MCFG_IEEE488_NRFD_CALLBACK(DEVWRITELINE(M6522_1_TAG, via6522_device, write_ca1))
MCFG_IEEE488_NDAC_CALLBACK(DEVWRITELINE(M6522_1_TAG, via6522_device, write_ca2))
MCFG_IEEE488_DAV_CALLBACK(DEVWRITELINE(M6522_1_TAG, via6522_device, write_pb0))
MCFG_IEEE488_EOI_CALLBACK(DEVWRITELINE(M6522_1_TAG, via6522_device, write_pb1))
MCFG_IEEE488_REN_CALLBACK(DEVWRITELINE(M6522_1_TAG, via6522_device, write_pb2))
MCFG_IEEE488_ATN_CALLBACK(DEVWRITELINE(M6522_1_TAG, via6522_device, write_pb3))
MCFG_IEEE488_IFC_CALLBACK(DEVWRITELINE(M6522_1_TAG, via6522_device, write_pb4))
MCFG_IEEE488_SRQ_CALLBACK(DEVWRITELINE(M6522_1_TAG, via6522_device, write_pb5))
MCFG_IEEE488_NRFD_CALLBACK(WRITELINE(victor9k_state, write_nfrd))
MCFG_IEEE488_NDAC_CALLBACK(WRITELINE(victor9k_state, write_ndac))
MCFG_PIC8259_ADD(I8259A_TAG, INPUTLINE(I8088_TAG, INPUT_LINE_IRQ0), VCC, NULL)
MCFG_PIT8253_ADD(I8253_TAG, pit_intf)
MCFG_UPD7201_ADD(UPD7201_TAG, XTAL_30MHz/30, mpsc_intf)
@ -1077,26 +1002,17 @@ static MACHINE_CONFIG_START( victor9k, victor9k_state )
MCFG_DEVICE_ADD(M6522_1_TAG, VIA6522, XTAL_30MHz/30)
MCFG_VIA6522_READPA_HANDLER(DEVREAD8(IEEE488_TAG, ieee488_device, dio_r))
MCFG_VIA6522_READPB_HANDLER(READ8(victor9k_state, via1_pb_r))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(victor9k_state, via1_pa_w))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor9k_state, via1_pb_w))
MCFG_VIA6522_CB2_HANDLER(WRITELINE(victor9k_state, codec_vol_w))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via1_irq_w))
MCFG_DEVICE_ADD(M6522_2_TAG, VIA6522, XTAL_30MHz/30)
MCFG_VIA6522_READPA_HANDLER(READ8(victor9k_state, via2_pa_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))
MCFG_DEVICE_ADD(M6522_3_TAG, VIA6522, XTAL_30MHz/30)
MCFG_VIA6522_READPA_HANDLER(READ8(victor9k_state, via3_pa_r))
MCFG_VIA6522_READPB_HANDLER(READ8(victor9k_state, via3_pb_r))
// CA1 J5-12
// CB1 J5-48
// CA2 J5-14
// CB2 J5-50
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(victor9k_state, via3_pa_w))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor9k_state, via3_pb_w))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via3_irq_w))
@ -1107,8 +1023,6 @@ static MACHINE_CONFIG_START( victor9k, victor9k_state )
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via4_irq_w))
MCFG_DEVICE_ADD(M6522_5_TAG, VIA6522, XTAL_30MHz/30)
MCFG_VIA6522_READPA_HANDLER(READ8(victor9k_state, via5_pa_r))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor9k_state, via5_pb_w))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via5_irq_w))
MCFG_DEVICE_ADD(M6522_6_TAG, VIA6522, XTAL_30MHz/30)
@ -1126,18 +1040,20 @@ static MACHINE_CONFIG_START( victor9k, victor9k_state )
MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL)
MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, rxa_w))
MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, dcda_w))
MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, ria_w))
MCFG_RS232_OUT_RI_HANDLER(WRITELINE(victor9k_state, write_ria))
MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, ctsa_w))
MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(M6522_2_TAG, via6522_device, write_pa3))
MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL)
MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, rxb_w))
MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, dcdb_w))
MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, rib_w))
MCFG_RS232_OUT_RI_HANDLER(WRITELINE(victor9k_state, write_ria))
MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, ctsb_w))
MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(M6522_2_TAG, via6522_device, write_pa5))
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))
MCFG_VICTOR9K_KBDATA_HANDLER(WRITELINE(victor9k_state, kbdata_w))
// internal ram
MCFG_RAM_ADD(RAM_TAG)

View File

@ -62,6 +62,7 @@ public:
m_fdc_cpu(*this, I8048_TAG),
m_ieee488(*this, IEEE488_TAG),
m_pic(*this, I8259A_TAG),
m_upd7201(*this, UPD7201_TAG),
m_ssda(*this, MC6852_TAG),
m_via1(*this, M6522_1_TAG),
m_via2(*this, M6522_2_TAG),
@ -99,6 +100,7 @@ public:
required_device<cpu_device> m_fdc_cpu;
required_device<ieee488_device> m_ieee488;
required_device<pic8259_device> m_pic;
required_device<upd7201_device> m_upd7201;
required_device<mc6852_device> m_ssda;
required_device<via6522_device> m_via1;
required_device<via6522_device> m_via2;
@ -125,19 +127,18 @@ public:
DECLARE_WRITE8_MEMBER( da_w );
DECLARE_WRITE8_MEMBER( via1_pa_w );
DECLARE_READ8_MEMBER( via1_pb_r );
DECLARE_WRITE_LINE_MEMBER( write_nfrd );
DECLARE_WRITE_LINE_MEMBER( write_ndac );
DECLARE_WRITE8_MEMBER( via1_pb_w );
DECLARE_WRITE_LINE_MEMBER( via1_irq_w );
DECLARE_WRITE_LINE_MEMBER( codec_vol_w );
DECLARE_READ8_MEMBER( via2_pa_r );
DECLARE_WRITE8_MEMBER( via2_pa_w );
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_READ8_MEMBER( via3_pa_r );
DECLARE_READ8_MEMBER( via3_pb_r );
DECLARE_WRITE8_MEMBER( via3_pa_w );
DECLARE_WRITE8_MEMBER( via3_pb_w );
DECLARE_WRITE_LINE_MEMBER( via3_irq_w );
@ -146,7 +147,6 @@ public:
DECLARE_WRITE_LINE_MEMBER( mode_w );
DECLARE_WRITE_LINE_MEMBER( via4_irq_w );
DECLARE_READ8_MEMBER( via5_pa_r );
DECLARE_WRITE8_MEMBER( via5_pb_w );
DECLARE_WRITE_LINE_MEMBER( via5_irq_w );
@ -157,6 +157,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( drw_w );
DECLARE_WRITE_LINE_MEMBER( erase_w );
DECLARE_WRITE_LINE_MEMBER( kbrdy_w );
DECLARE_WRITE_LINE_MEMBER( kbdata_w );
DECLARE_WRITE_LINE_MEMBER( vert_w );
DECLARE_WRITE_LINE_MEMBER( via6_irq_w );
DECLARE_WRITE_LINE_MEMBER( ssda_irq_w );