diff options
Diffstat (limited to 'src/mame/machine/k573cass.c')
-rw-r--r-- | src/mame/machine/k573cass.c | 120 |
1 files changed, 52 insertions, 68 deletions
diff --git a/src/mame/machine/k573cass.c b/src/mame/machine/k573cass.c index 53c6edb6bfa..e181dffbebc 100644 --- a/src/mame/machine/k573cass.c +++ b/src/mame/machine/k573cass.c @@ -7,6 +7,20 @@ #include "k573cass.h" +// class konami573_cassette_interface + +konami573_cassette_interface::konami573_cassette_interface(const machine_config &mconfig, device_t &device) + : device_slot_card_interface(mconfig, device) +{ + m_slot = dynamic_cast<konami573_cassette_slot_device *>(device.owner()); +} + +konami573_cassette_interface::~konami573_cassette_interface() +{ +} + + + WRITE_LINE_MEMBER(konami573_cassette_interface::write_line_d0) { } @@ -31,11 +45,6 @@ WRITE_LINE_MEMBER(konami573_cassette_interface::write_line_zs01_sda) { } -READ_LINE_MEMBER(konami573_cassette_interface::read_line_dsr) -{ - return 1; -} - READ_LINE_MEMBER(konami573_cassette_interface::read_line_ds2401) { return 0; @@ -56,14 +65,14 @@ const device_type KONAMI573_CASSETTE_X = &device_creator<konami573_cassette_x_de konami573_cassette_x_device::konami573_cassette_x_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, KONAMI573_CASSETTE_X, "Konami 573 Cassette X", tag, owner, clock, "k573cassx", __FILE__), - device_slot_card_interface(mconfig, *this), + konami573_cassette_interface(mconfig, *this), m_x76f041(*this, "eeprom") { } konami573_cassette_x_device::konami573_cassette_x_device(const machine_config &mconfig, const device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) : device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__), - device_slot_card_interface(mconfig, *this), + konami573_cassette_interface(mconfig, *this), m_x76f041(*this, "eeprom") { } @@ -79,6 +88,7 @@ machine_config_constructor konami573_cassette_x_device::device_mconfig_additions void konami573_cassette_x_device::device_start() { + output_dsr(0); } WRITE_LINE_MEMBER(konami573_cassette_x_device::write_line_d0) @@ -171,7 +181,7 @@ const device_type KONAMI573_CASSETTE_Y = &device_creator<konami573_cassette_y_de konami573_cassette_y_device::konami573_cassette_y_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, KONAMI573_CASSETTE_Y, "Konami 573 Cassette Y", tag, owner, clock, "k573cassy", __FILE__), - device_slot_card_interface(mconfig, *this), + konami573_cassette_interface(mconfig, *this), m_x76f100(*this, "eeprom"), m_d0_handler(*this), m_d1_handler(*this), @@ -186,7 +196,7 @@ konami573_cassette_y_device::konami573_cassette_y_device(const machine_config &m konami573_cassette_y_device::konami573_cassette_y_device(const machine_config &mconfig, const device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) : device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__), - device_slot_card_interface(mconfig, *this), + konami573_cassette_interface(mconfig, *this), m_x76f100(*this, "eeprom"), m_d0_handler(*this), m_d1_handler(*this), @@ -218,6 +228,8 @@ void konami573_cassette_y_device::device_start() m_d5_handler.resolve_safe(); m_d6_handler.resolve_safe(); m_d7_handler.resolve_safe(); + + output_dsr(0); } READ_LINE_MEMBER(konami573_cassette_y_device::read_line_secflash_sda) @@ -305,7 +317,7 @@ const device_type KONAMI573_CASSETTE_ZI = &device_creator<konami573_cassette_zi_ konami573_cassette_zi_device::konami573_cassette_zi_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, KONAMI573_CASSETTE_ZI, "Konami 573 Cassette ZI", tag, owner, clock, "k573casszi", __FILE__), - device_slot_card_interface(mconfig, *this), + konami573_cassette_interface(mconfig, *this), m_zs01(*this,"eeprom"), m_ds2401(*this, "id") { @@ -324,6 +336,7 @@ machine_config_constructor konami573_cassette_zi_device::device_mconfig_addition void konami573_cassette_zi_device::device_start() { + output_dsr(0); } WRITE_LINE_MEMBER(konami573_cassette_zi_device::write_line_d1) @@ -362,128 +375,99 @@ READ_LINE_MEMBER(konami573_cassette_zi_device::read_line_secflash_sda) } -const device_type KONAMI573_CASSETTE_SLOT_SERIAL = &device_creator<konami573_cassette_slot_serial_device>; - -konami573_cassette_slot_serial_device::konami573_cassette_slot_serial_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : - psxsiodev_device(mconfig, KONAMI573_CASSETTE_SLOT, "Konami 573 Cassette Slot (SERIAL)", tag, owner, clock, "k573cassslotserial", __FILE__) -{ -} - -void konami573_cassette_slot_serial_device::device_start() -{ - psxsiodev_device::device_start(); -} - -void konami573_cassette_slot_serial_device::_data_out( int data, int mask ) -{ - data_out( data, mask ); -} - -void konami573_cassette_slot_serial_device::data_in( int data, int mask ) -{ -} - - const device_type KONAMI573_CASSETTE_SLOT = &device_creator<konami573_cassette_slot_device>; konami573_cassette_slot_device::konami573_cassette_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, KONAMI573_CASSETTE_SLOT, "Konami 573 Cassette Slot", tag, owner, clock, "k573cassslot", __FILE__), device_slot_interface(mconfig, *this), - m_serial(*this, ":maincpu:sio1:cassette") /// HACK: this shouldn't know where the actual slot is. + m_dsr_handler(*this) { } void konami573_cassette_slot_device::device_start() { - m_cassette = dynamic_cast<konami573_cassette_interface *>(get_card_device()); + m_dsr_handler.resolve_safe(); - if( m_cassette != NULL && m_cassette->read_line_dsr() ) - { - m_serial->_data_out( PSX_SIO_IN_DSR, PSX_SIO_IN_DSR ); - } - else - { - m_serial->_data_out( PSX_SIO_IN_DSR, 0 ); - } + m_dev = dynamic_cast<konami573_cassette_interface *>(get_card_device()); } WRITE_LINE_MEMBER(konami573_cassette_slot_device::write_line_d0) { - if( m_cassette ) + if( m_dev ) { - m_cassette->write_line_d0( state ); + m_dev->write_line_d0( state ); } } WRITE_LINE_MEMBER(konami573_cassette_slot_device::write_line_d1) { - if( m_cassette ) + if( m_dev ) { - m_cassette->write_line_d1( state ); + m_dev->write_line_d1( state ); } } WRITE_LINE_MEMBER(konami573_cassette_slot_device::write_line_d2) { - if( m_cassette ) + if( m_dev ) { - m_cassette->write_line_d2( state ); + m_dev->write_line_d2( state ); } } WRITE_LINE_MEMBER(konami573_cassette_slot_device::write_line_d3) { - if( m_cassette ) + if( m_dev ) { - m_cassette->write_line_d3( state ); + m_dev->write_line_d3( state ); } } WRITE_LINE_MEMBER(konami573_cassette_slot_device::write_line_d4) { - if( m_cassette ) + if( m_dev ) { - m_cassette->write_line_d4( state ); + m_dev->write_line_d4( state ); } } WRITE_LINE_MEMBER(konami573_cassette_slot_device::write_line_d5) { - if( m_cassette ) + if( m_dev ) { - m_cassette->write_line_d5( state ); + m_dev->write_line_d5( state ); } } WRITE_LINE_MEMBER(konami573_cassette_slot_device::write_line_d6) { - if( m_cassette ) + if( m_dev ) { - m_cassette->write_line_d6( state ); + m_dev->write_line_d6( state ); } } WRITE_LINE_MEMBER(konami573_cassette_slot_device::write_line_d7) { - if( m_cassette ) + if( m_dev ) { - m_cassette->write_line_d7( state ); + m_dev->write_line_d7( state ); } } WRITE_LINE_MEMBER(konami573_cassette_slot_device::write_line_zs01_sda) { - if( m_cassette ) + if( m_dev ) { - m_cassette->write_line_zs01_sda( state ); + m_dev->write_line_zs01_sda( state ); } } READ_LINE_MEMBER(konami573_cassette_slot_device::read_line_ds2401) { - if( m_cassette ) + if( m_dev ) { - return m_cassette->read_line_ds2401(); + return m_dev->read_line_ds2401(); } return 0; @@ -491,9 +475,9 @@ READ_LINE_MEMBER(konami573_cassette_slot_device::read_line_ds2401) READ_LINE_MEMBER(konami573_cassette_slot_device::read_line_secflash_sda) { - if( m_cassette ) + if( m_dev ) { - return m_cassette->read_line_secflash_sda(); + return m_dev->read_line_secflash_sda(); } return 0; @@ -501,9 +485,9 @@ READ_LINE_MEMBER(konami573_cassette_slot_device::read_line_secflash_sda) READ_LINE_MEMBER(konami573_cassette_slot_device::read_line_adc083x_do) { - if( m_cassette ) + if( m_dev ) { - return m_cassette->read_line_adc083x_do(); + return m_dev->read_line_adc083x_do(); } return 0; @@ -511,9 +495,9 @@ READ_LINE_MEMBER(konami573_cassette_slot_device::read_line_adc083x_do) READ_LINE_MEMBER(konami573_cassette_slot_device::read_line_adc083x_sars) { - if( m_cassette ) + if( m_dev ) { - return m_cassette->read_line_adc083x_sars(); + return m_dev->read_line_adc083x_sars(); } return 0; |