summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/machine/k573cass.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/machine/k573cass.c')
-rw-r--r--src/mame/machine/k573cass.c120
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;