push all gpio values to allow interrupts to work. [smf]

This commit is contained in:
smf- 2013-12-28 23:07:16 +00:00
parent f03fe6e80a
commit 4f61954a68
2 changed files with 36 additions and 6 deletions

View File

@ -707,6 +707,12 @@ WRITE16_MEMBER( megast_state::fpu_w )
{
}
WRITE_LINE_MEMBER( st_state::write_monochrome )
{
m_monochrome = state;
m_mfp->i7_w(m_monochrome);
}
//**************************************************************************
@ -720,7 +726,8 @@ WRITE16_MEMBER( megast_state::fpu_w )
void ste_state::dmasound_set_state(int level)
{
m_dmasnd_active = level;
m_mfp->tai_w(level);
m_mfp->tai_w(m_dmasnd_active);
m_mfp->i7_w(m_monochrome ^ m_dmasnd_active);
if (level == 0)
{
@ -734,6 +741,12 @@ void ste_state::dmasound_set_state(int level)
}
WRITE_LINE_MEMBER( ste_state::write_monochrome )
{
m_monochrome = state;
m_mfp->i7_w(m_monochrome ^ m_dmasnd_active);
}
//-------------------------------------------------
// dmasound_tick -
//-------------------------------------------------
@ -1572,7 +1585,7 @@ static INPUT_PORTS_START( st )
PORT_CONFNAME( 0x01, 0x00, "Input Port 0 Device")
PORT_CONFSETTING( 0x00, "Mouse" )
PORT_CONFSETTING( 0x01, DEF_STR( Joystick ) )
PORT_CONFNAME( 0x80, 0x80, "Monitor")
PORT_CONFNAME( 0x80, 0x80, "Monitor") PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF, st_state, write_monochrome)
PORT_CONFSETTING( 0x00, "Monochrome (Atari SM124)" )
PORT_CONFSETTING( 0x80, "Color (Atari SC1224)" )
@ -1610,7 +1623,7 @@ static INPUT_PORTS_START( ste )
PORT_CONFNAME( 0x01, 0x00, "Input Port 0 Device")
PORT_CONFSETTING( 0x00, "Mouse" )
PORT_CONFSETTING( 0x01, DEF_STR( Joystick ) )
PORT_CONFNAME( 0x80, 0x80, "Monitor")
PORT_CONFNAME( 0x80, 0x80, "Monitor") PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF, ste_state, write_monochrome)
PORT_CONFSETTING( 0x00, "Monochrome (Atari SM124)" )
PORT_CONFSETTING( 0x80, "Color (Atari SC1435)" )
@ -1924,7 +1937,7 @@ READ8_MEMBER( st_state::mfp_gpio_r )
data |= m_rs232->ri_r() << 6;
// monochrome monitor detect
data |= m_config->read() & 0x80;
data |= m_monochrome << 7;
return data;
}
@ -1995,7 +2008,7 @@ READ8_MEMBER( ste_state::mfp_gpio_r )
data |= m_rs232->ri_r() << 6;
// monochrome monitor detect, DMA sound active
data |= (m_config->read() & 0x80) ^ (m_dmasnd_active << 7);
data |= (m_monochrome ^ m_dmasnd_active) << 7;
return data;
}
@ -2388,6 +2401,9 @@ static MACHINE_CONFIG_START( st, st_state )
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, write_rx))
MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i1_w))
MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i2_w))
MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i6_w))
MCFG_SERIAL_PORT_ADD("mdin", midiin_slot, "midiin")
MCFG_SERIAL_OUT_RX_HANDLER(WRITELINE(st_state, midi_rx_w))
@ -2448,6 +2464,9 @@ static MACHINE_CONFIG_START( megast, megast_state )
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, write_rx))
MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i1_w))
MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i2_w))
MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i6_w))
MCFG_SERIAL_PORT_ADD("mdin", midiin_slot, "midiin")
MCFG_SERIAL_OUT_RX_HANDLER(WRITELINE(st_state, midi_rx_w))
@ -2517,6 +2536,9 @@ static MACHINE_CONFIG_START( ste, ste_state )
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, write_rx))
MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i1_w))
MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i2_w))
MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i6_w))
MCFG_SERIAL_PORT_ADD("mdin", midiin_slot, "midiin")
MCFG_SERIAL_OUT_RX_HANDLER(WRITELINE(st_state, midi_rx_w))
@ -2596,6 +2618,9 @@ static MACHINE_CONFIG_START( stbook, stbook_state )
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, write_rx))
MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i1_w))
MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i2_w))
MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i6_w))
MCFG_SERIAL_PORT_ADD("mdin", midiin_slot, "midiin")
MCFG_SERIAL_OUT_RX_HANDLER(WRITELINE(st_state, midi_rx_w))

View File

@ -119,7 +119,8 @@ public:
m_ikbd_mouse_px(IKBD_MOUSE_PHASE_STATIC),
m_ikbd_mouse_py(IKBD_MOUSE_PHASE_STATIC),
m_ikbd_mouse_pc(0),
m_ikbd_joy(1)
m_ikbd_joy(1),
m_monochrome(1)
{ }
required_device<cpu_device> m_maincpu;
@ -330,6 +331,9 @@ public:
DECLARE_FLOPPY_FORMATS(floppy_formats);
IRQ_CALLBACK_MEMBER(atarist_int_ack);
int m_monochrome;
virtual DECLARE_WRITE_LINE_MEMBER( write_monochrome );
protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
};
@ -390,6 +394,7 @@ public:
DECLARE_WRITE16_MEMBER( microwire_mask_w );
DECLARE_READ8_MEMBER( mfp_gpio_r );
virtual DECLARE_WRITE_LINE_MEMBER( write_monochrome );
void dmasound_set_state(int level);
void dmasound_tick();