started thinking about how multi-endpoint devices will work, using a hierarchy has too many limitations (nw)

This commit is contained in:
smf- 2012-10-25 11:21:16 +00:00
parent 4212614f83
commit fae0bac008
3 changed files with 13 additions and 6 deletions

View File

@ -46,6 +46,7 @@ void scsibus_device::device_start()
if( scsidev != NULL )
{
devices[ deviceCount++ ] = scsidev;
scsidev->m_scsibus = this;
}
}

View File

@ -151,6 +151,5 @@ void scsidev_device::scsi_out( UINT32 data, UINT32 mask )
data_out = ( data_out & ~mask ) | ( data & mask );
scsibus_device *m_scsibus = downcast<scsibus_device *>( owner() );
m_scsibus->scsi_update();
}

View File

@ -25,21 +25,28 @@ Base class for SCSI devices.
#define SCSI_MASK_RST ( 0x2000000 )
#define SCSI_MASK_ALL ( 0x3ffffff )
class scsibus_device;
// base handler
class scsidev_device : public device_t
{
friend class scsibus_device;
public:
// construction/destruction
scsidev_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock);
virtual void scsi_in( UINT32 data, UINT32 mask ) = 0;
void scsi_out( UINT32 data, UINT32 mask );
UINT32 data_out;
protected:
// device-level overrides
virtual void device_start();
void scsi_out( UINT32 data, UINT32 mask );
private:
virtual void scsi_in( UINT32 data, UINT32 mask ) = 0;
UINT32 data_out;
scsibus_device *m_scsibus;
};
#endif