mirror of
https://github.com/holub/mame
synced 2025-04-24 17:30:55 +03:00
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:
parent
f5bdd12674
commit
3614d52b49
@ -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); }
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user