mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
(MESS) dmv: added dipswitches to K235 for configure INT5 and INT7 source. (nw)
This commit is contained in:
parent
5fcdaf0c95
commit
044f3688ac
@ -320,16 +320,28 @@ void dmvcart_slot_device::switch16_w(int state)
|
||||
m_cart->switch16_w(state);
|
||||
}
|
||||
|
||||
void dmvcart_slot_device::irq0_w(int state)
|
||||
void dmvcart_slot_device::timint_w(int state)
|
||||
{
|
||||
if (m_cart)
|
||||
m_cart->irq0_w(state);
|
||||
m_cart->timint_w(state);
|
||||
}
|
||||
|
||||
void dmvcart_slot_device::irq1_w(int state)
|
||||
void dmvcart_slot_device::keyint_w(int state)
|
||||
{
|
||||
if (m_cart)
|
||||
m_cart->irq1_w(state);
|
||||
m_cart->keyint_w(state);
|
||||
}
|
||||
|
||||
void dmvcart_slot_device::busint_w(int state)
|
||||
{
|
||||
if (m_cart)
|
||||
m_cart->busint_w(state);
|
||||
}
|
||||
|
||||
void dmvcart_slot_device::flexint_w(int state)
|
||||
{
|
||||
if (m_cart)
|
||||
m_cart->flexint_w(state);
|
||||
}
|
||||
|
||||
void dmvcart_slot_device::irq2_w(int state)
|
||||
@ -338,6 +350,12 @@ void dmvcart_slot_device::irq2_w(int state)
|
||||
m_cart->irq2_w(state);
|
||||
}
|
||||
|
||||
void dmvcart_slot_device::irq2a_w(int state)
|
||||
{
|
||||
if (m_cart)
|
||||
m_cart->irq2a_w(state);
|
||||
}
|
||||
|
||||
void dmvcart_slot_device::irq3_w(int state)
|
||||
{
|
||||
if (m_cart)
|
||||
@ -361,9 +379,3 @@ void dmvcart_slot_device::irq6_w(int state)
|
||||
if (m_cart)
|
||||
m_cart->irq6_w(state);
|
||||
}
|
||||
|
||||
void dmvcart_slot_device::irq7_w(int state)
|
||||
{
|
||||
if (m_cart)
|
||||
m_cart->irq7_w(state);
|
||||
}
|
||||
|
@ -35,14 +35,16 @@ public:
|
||||
virtual bool av16bit() { return false; }
|
||||
virtual void hold_w(int state) { }
|
||||
virtual void switch16_w(int state) { }
|
||||
virtual void irq0_w(int state) { }
|
||||
virtual void irq1_w(int state) { }
|
||||
virtual void timint_w(int state) { }
|
||||
virtual void keyint_w(int state) { }
|
||||
virtual void busint_w(int state) { }
|
||||
virtual void flexint_w(int state) { }
|
||||
virtual void irq2_w(int state) { }
|
||||
virtual void irq2a_w(int state) { }
|
||||
virtual void irq3_w(int state) { }
|
||||
virtual void irq4_w(int state) { }
|
||||
virtual void irq5_w(int state) { }
|
||||
virtual void irq6_w(int state) { }
|
||||
virtual void irq7_w(int state) { }
|
||||
};
|
||||
|
||||
|
||||
@ -74,14 +76,16 @@ public:
|
||||
virtual void io_write(address_space &space, int ifsel, offs_t offset, UINT8 data);
|
||||
virtual void hold_w(int state);
|
||||
virtual void switch16_w(int state);
|
||||
virtual void irq0_w(int state);
|
||||
virtual void irq1_w(int state);
|
||||
virtual void timint_w(int state);
|
||||
virtual void keyint_w(int state);
|
||||
virtual void busint_w(int state);
|
||||
virtual void flexint_w(int state);
|
||||
virtual void irq2_w(int state);
|
||||
virtual void irq2a_w(int state);
|
||||
virtual void irq3_w(int state);
|
||||
virtual void irq4_w(int state);
|
||||
virtual void irq5_w(int state);
|
||||
virtual void irq6_w(int state);
|
||||
virtual void irq7_w(int state);
|
||||
virtual bool av16bit();
|
||||
|
||||
// internal state
|
||||
|
@ -78,6 +78,17 @@ static MACHINE_CONFIG_FRAGMENT( dmv_k235 )
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
static INPUT_PORTS_START( dmv_k235 )
|
||||
PORT_START("DSW")
|
||||
PORT_DIPNAME( 0x01, 0x00, "K235 INT7" ) PORT_DIPLOCATION("S:1")
|
||||
PORT_DIPSETTING( 0x00, "Slot 5" )
|
||||
PORT_DIPSETTING( 0x01, "Slot 6" )
|
||||
PORT_DIPNAME( 0x02, 0x00, "K235 INT5" ) PORT_DIPLOCATION("S:2")
|
||||
PORT_DIPSETTING( 0x00, "Slot 2a" )
|
||||
PORT_DIPSETTING( 0x02, "Slot 2" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// GLOBAL VARIABLES
|
||||
//**************************************************************************
|
||||
@ -135,7 +146,8 @@ dmv_k234_device::dmv_k234_device(const machine_config &mconfig, const char *tag,
|
||||
|
||||
dmv_k235_device::dmv_k235_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: dmv_k230_device(mconfig, DMV_K235, "K235 8088 with interrupt controller", tag, owner, clock, "dmv_k235", __FILE__),
|
||||
m_pic(*this, "pic8259")
|
||||
m_pic(*this, "pic8259"),
|
||||
m_dsw(*this, "DSW")
|
||||
{
|
||||
}
|
||||
|
||||
@ -216,6 +228,15 @@ const rom_entry *dmv_k235_device::device_rom_region() const
|
||||
return ROM_NAME( dmv_k235 );
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// input_ports - device-specific input ports
|
||||
//-------------------------------------------------
|
||||
|
||||
ioport_constructor dmv_k235_device::device_input_ports() const
|
||||
{
|
||||
return INPUT_PORTS_NAME( dmv_k235 );
|
||||
}
|
||||
|
||||
bool dmv_k230_device::av16bit()
|
||||
{
|
||||
return true;
|
||||
|
@ -115,22 +115,26 @@ public:
|
||||
// construction/destruction
|
||||
dmv_k235_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
protected:
|
||||
// optional information overrides
|
||||
virtual const rom_entry *device_rom_region() const;
|
||||
virtual machine_config_constructor device_mconfig_additions() const;
|
||||
virtual ioport_constructor device_input_ports() const;
|
||||
|
||||
void irq0_w(int state) { m_pic->ir0_w(state); }
|
||||
void irq1_w(int state) { m_pic->ir1_w(state); }
|
||||
void irq2_w(int state) { m_pic->ir2_w(state); }
|
||||
void irq3_w(int state) { m_pic->ir3_w(state); }
|
||||
void irq4_w(int state) { m_pic->ir4_w(state); }
|
||||
void irq5_w(int state) { m_pic->ir5_w(state); }
|
||||
void irq6_w(int state) { m_pic->ir6_w(state); }
|
||||
void irq7_w(int state) { m_pic->ir7_w(state); }
|
||||
void timint_w(int state) { m_pic->ir0_w(state); }
|
||||
void keyint_w(int state) { m_pic->ir1_w(state); }
|
||||
void busint_w(int state) { m_pic->ir2_w(state); }
|
||||
void flexint_w(int state) { m_pic->ir6_w(state); }
|
||||
void irq2a_w(int state) { if (!(m_dsw->read() & 0x02)) m_pic->ir5_w(state); }
|
||||
void irq2_w(int state) { if ( (m_dsw->read() & 0x02)) m_pic->ir5_w(state); }
|
||||
void irq3_w(int state) { m_pic->ir3_w(state); }
|
||||
void irq4_w(int state) { m_pic->ir4_w(state); }
|
||||
void irq5_w(int state) { if (!(m_dsw->read() & 0x01)) m_pic->ir7_w(state); }
|
||||
void irq6_w(int state) { if ( (m_dsw->read() & 0x01)) m_pic->ir7_w(state); }
|
||||
|
||||
private:
|
||||
required_device<pic8259_device> m_pic;
|
||||
|
||||
required_ioport m_dsw;
|
||||
};
|
||||
|
||||
// device type definition
|
||||
|
@ -422,8 +422,8 @@ void dmv_state::update_busint(int slot, int state)
|
||||
break;
|
||||
}
|
||||
|
||||
m_slot7a->irq2_w(new_state);
|
||||
m_slot7->irq2_w(new_state);
|
||||
m_slot7a->busint_w(new_state);
|
||||
m_slot7->busint_w(new_state);
|
||||
m_maincpu->set_input_line(0, new_state);
|
||||
}
|
||||
|
||||
@ -433,9 +433,13 @@ void dmv_state::update_irqs(int slot, int state)
|
||||
|
||||
switch(slot)
|
||||
{
|
||||
case 0: // slot 2
|
||||
m_slot7->irq2_w(state);
|
||||
m_slot7a->irq2_w(state);
|
||||
break;
|
||||
case 1: // slot 2a
|
||||
m_slot7->irq5_w(state);
|
||||
m_slot7a->irq5_w(state);
|
||||
m_slot7->irq2a_w(state);
|
||||
m_slot7a->irq2a_w(state);
|
||||
break;
|
||||
case 2: // slot 3
|
||||
m_slot7->irq3_w(state);
|
||||
@ -446,8 +450,12 @@ void dmv_state::update_irqs(int slot, int state)
|
||||
m_slot7a->irq4_w(state);
|
||||
break;
|
||||
case 4: // slot 5
|
||||
m_slot7->irq7_w(state);
|
||||
m_slot7a->irq7_w(state);
|
||||
m_slot7->irq5_w(state);
|
||||
m_slot7a->irq5_w(state);
|
||||
break;
|
||||
case 5: // slot 6
|
||||
m_slot7->irq6_w(state);
|
||||
m_slot7a->irq6_w(state);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -537,8 +545,8 @@ WRITE8_MEMBER(dmv_state::kb_mcu_port1_w)
|
||||
WRITE8_MEMBER(dmv_state::kb_mcu_port2_w)
|
||||
{
|
||||
m_speaker->level_w(BIT(data, 0));
|
||||
m_slot7a->irq1_w(BIT(data, 4));
|
||||
m_slot7->irq1_w(BIT(data, 4));
|
||||
m_slot7a->keyint_w(BIT(data, 4));
|
||||
m_slot7->keyint_w(BIT(data, 4));
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( dmv_kb_ctrl_io, AS_IO, 8, dmv_state )
|
||||
@ -652,14 +660,14 @@ WRITE_LINE_MEMBER( dmv_state::pit_out0 )
|
||||
|
||||
WRITE_LINE_MEMBER( dmv_state::timint_w )
|
||||
{
|
||||
m_slot7a->irq0_w(state);
|
||||
m_slot7->irq0_w(state);
|
||||
m_slot7a->timint_w(state);
|
||||
m_slot7->timint_w(state);
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( dmv_state::fdc_irq )
|
||||
{
|
||||
m_slot7a->irq6_w(state);
|
||||
m_slot7->irq6_w(state);
|
||||
m_slot7a->flexint_w(state);
|
||||
m_slot7->flexint_w(state);
|
||||
|
||||
if (state)
|
||||
m_fdc->tc_w(false);
|
||||
|
Loading…
Reference in New Issue
Block a user