resolves the user port handlers in device_config_complete() & replaced calling reset() on user port with toggling of input line 3 as not all computers have reset hooked up on the user port. I believe device_reset() will always be called, which makes the call in the drivers machine_reset() unnecessary. [smf]

This commit is contained in:
smf- 2014-02-02 01:00:11 +00:00
parent f5bdd12674
commit 3614d52b49
6 changed files with 46 additions and 46 deletions

View File

@ -77,12 +77,7 @@ pet_user_port_device::pet_user_port_device(const machine_config &mconfig, const
{
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void pet_user_port_device::device_start()
void pet_user_port_device::device_config_complete()
{
m_card = dynamic_cast<device_pet_user_port_interface *>(get_card_device());
@ -104,7 +99,14 @@ void pet_user_port_device::device_start()
m_k_handler.resolve_safe();
m_l_handler.resolve_safe();
m_m_handler.resolve_safe();
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void pet_user_port_device::device_start()
{
// pull up
m_3_handler(1);
m_4_handler(1);
@ -126,19 +128,6 @@ void pet_user_port_device::device_start()
}
//-------------------------------------------------
// device_reset - device-specific reset
//-------------------------------------------------
void pet_user_port_device::device_reset()
{
if (get_card_device())
{
get_card_device()->reset();
}
}
WRITE_LINE_MEMBER( pet_user_port_device::write_3 ) { if (m_card != NULL) m_card->input_3(state); }
WRITE_LINE_MEMBER( pet_user_port_device::write_4 ) { if (m_card != NULL) m_card->input_4(state); }
WRITE_LINE_MEMBER( pet_user_port_device::write_5 ) { if (m_card != NULL) m_card->input_5(state); }

View File

@ -104,6 +104,8 @@ class device_pet_user_port_interface;
class pet_user_port_device : public device_t,
public device_slot_interface
{
friend class device_pet_user_port_interface;
public:
// construction/destruction
pet_user_port_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
@ -145,6 +147,11 @@ public:
DECLARE_WRITE_LINE_MEMBER( write_l );
DECLARE_WRITE_LINE_MEMBER( write_m );
protected:
// device-level overrides
virtual void device_start();
virtual void device_config_complete();
// device interface
devcb2_write_line m_3_handler;
devcb2_write_line m_4_handler;
@ -164,11 +171,6 @@ public:
devcb2_write_line m_l_handler;
devcb2_write_line m_m_handler;
protected:
// device-level overrides
virtual void device_start();
virtual void device_reset();
device_pet_user_port_interface *m_card;
};
@ -178,28 +180,12 @@ protected:
// class representing interface-specific pet_expansion card
class device_pet_user_port_interface : public device_slot_card_interface
{
friend class pet_user_port_device;
public:
device_pet_user_port_interface(const machine_config &mconfig, device_t &device);
virtual ~device_pet_user_port_interface();
virtual DECLARE_WRITE_LINE_MEMBER( input_3 ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_4 ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_5 ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_6 ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_7 ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_8 ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_9 ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_b ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_c ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_d ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_e ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_f ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_h ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_j ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_k ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_l ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_m ) {}
DECLARE_WRITE_LINE_MEMBER( output_3 ) { m_slot->m_3_handler(state); }
DECLARE_WRITE_LINE_MEMBER( output_4 ) { m_slot->m_4_handler(state); }
DECLARE_WRITE_LINE_MEMBER( output_5 ) { m_slot->m_5_handler(state); }
@ -219,6 +205,24 @@ public:
DECLARE_WRITE_LINE_MEMBER( output_m ) { m_slot->m_m_handler(state); }
protected:
virtual DECLARE_WRITE_LINE_MEMBER( input_3 ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_4 ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_5 ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_6 ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_7 ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_8 ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_9 ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_b ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_c ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_d ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_e ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_f ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_h ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_j ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_k ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_l ) {}
virtual DECLARE_WRITE_LINE_MEMBER( input_m ) {}
pet_user_port_device *m_slot;
};

View File

@ -1435,7 +1435,9 @@ void c128_state::machine_reset()
m_iec->reset();
m_exp->reset();
m_user->reset();
m_user->write_3(0);
m_user->write_3(1);
}

View File

@ -1064,7 +1064,9 @@ void c64_state::machine_reset()
m_iec->reset();
m_exp->reset();
m_user->reset();
m_user->write_3(0);
m_user->write_3(1);
}

View File

@ -712,7 +712,8 @@ void plus4_state::machine_reset()
if (m_user)
{
m_user->reset();
m_user->write_3(0);
m_user->write_3(1);
}
m_addr = 0;

View File

@ -610,7 +610,9 @@ void vic20_state::machine_reset()
m_iec->reset();
m_exp->reset();
m_user->reset();
m_user->write_3(0);
m_user->write_3(1);
}
WRITE_LINE_MEMBER(vic20_state::write_user_joy0)