diff --git a/src/emu/machine/scsibus.c b/src/emu/machine/scsibus.c index 72f667ec06d..e74384ac549 100644 --- a/src/emu/machine/scsibus.c +++ b/src/emu/machine/scsibus.c @@ -130,6 +130,7 @@ void scsibus_device::scsi_data_w( UINT8 data ) // only one line active. case SCSI_PHASE_BUS_FREE: last_id=scsibus_driveno(data); + sectorbytes = devices[last_id]->GetSectorBytes(); break; case SCSI_PHASE_COMMAND: @@ -690,11 +691,6 @@ int scsibus_device::get_scsi_cmd_len(int cbyte) return 6; } -void scsibus_device::init_scsibus(int _sectorbytes) -{ - sectorbytes = _sectorbytes; -} - scsibus_device::scsibus_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, SCSIBUS, "SCSI bus", tag, owner, clock) { diff --git a/src/emu/machine/scsibus.h b/src/emu/machine/scsibus.h index 16db3015759..d4b082896a0 100644 --- a/src/emu/machine/scsibus.h +++ b/src/emu/machine/scsibus.h @@ -118,9 +118,6 @@ public: DECLARE_WRITE_LINE_MEMBER( scsi_ack_w ); DECLARE_WRITE_LINE_MEMBER( scsi_rst_w ); - /* Initialisation at machine reset time */ - void init_scsibus(int sectorbytes); - protected: // device-level overrides virtual void device_start(); diff --git a/src/emu/machine/scsicd.c b/src/emu/machine/scsicd.c index b9fd87da85b..3d32e5ec890 100644 --- a/src/emu/machine/scsicd.c +++ b/src/emu/machine/scsicd.c @@ -773,3 +773,8 @@ void scsicd_device::SetDevice( void *_cdrom ) { cdrom = (cdrom_file *)_cdrom; } + +int scsicd_device::GetSectorBytes() +{ + return bytes_per_sector; +} diff --git a/src/emu/machine/scsicd.h b/src/emu/machine/scsicd.h index 1f108e6de79..79189656072 100644 --- a/src/emu/machine/scsicd.h +++ b/src/emu/machine/scsicd.h @@ -23,6 +23,7 @@ public: virtual void ExecCommand( int *transferLength ); virtual void WriteData( UINT8 *data, int dataLength ); virtual void ReadData( UINT8 *data, int dataLength ); + virtual int GetSectorBytes(); static struct cdrom_interface cd_intf; diff --git a/src/emu/machine/scsidev.c b/src/emu/machine/scsidev.c index 42858e7830b..d49004e3f24 100644 --- a/src/emu/machine/scsidev.c +++ b/src/emu/machine/scsidev.c @@ -128,6 +128,11 @@ int scsidev_device::GetDeviceID() return scsiID; } +int scsidev_device::GetSectorBytes() +{ + return 0; +} + void scsidev_device::static_set_deviceid( device_t &device, int _scsiID ) { scsidev_device &scsidev = downcast(device); diff --git a/src/emu/machine/scsidev.h b/src/emu/machine/scsidev.h index 8a3d4ca52c8..a66ede805df 100644 --- a/src/emu/machine/scsidev.h +++ b/src/emu/machine/scsidev.h @@ -24,6 +24,7 @@ public: virtual void SetPhase( int phase ); virtual void GetPhase( int *phase ); virtual int GetDeviceID(); + virtual int GetSectorBytes(); // configuration helpers static void static_set_deviceid(device_t &device, int _scsiID); diff --git a/src/emu/machine/scsihd.c b/src/emu/machine/scsihd.c index 5c555b82980..d3beba65544 100644 --- a/src/emu/machine/scsihd.c +++ b/src/emu/machine/scsihd.c @@ -324,3 +324,8 @@ void scsihd_device::SetDevice( void *_disk ) { disk = (hard_disk_file *)_disk; } + +int scsihd_device::GetSectorBytes() +{ + return sectorbytes; +} diff --git a/src/emu/machine/scsihd.h b/src/emu/machine/scsihd.h index 7dbe4a8a832..568f4f8a8e6 100644 --- a/src/emu/machine/scsihd.h +++ b/src/emu/machine/scsihd.h @@ -23,6 +23,7 @@ public: virtual void ExecCommand( int *transferLength ); virtual void WriteData( UINT8 *data, int dataLength ); virtual void ReadData( UINT8 *data, int dataLength ); + virtual int GetSectorBytes(); protected: // device-level overrides diff --git a/src/mess/drivers/bullet.c b/src/mess/drivers/bullet.c index 5cc349cfc7c..a6ea30c57c6 100644 --- a/src/mess/drivers/bullet.c +++ b/src/mess/drivers/bullet.c @@ -1102,9 +1102,6 @@ void bullet_state::machine_start() void bulletf_state::machine_start() { - // initialize SASI bus - m_scsibus->init_scsibus(512); - // state saving save_item(NAME(m_fdrdy)); save_item(NAME(m_rome)); diff --git a/src/mess/drivers/v1050.c b/src/mess/drivers/v1050.c index f7f0c48ec0d..fb9cad78936 100644 --- a/src/mess/drivers/v1050.c +++ b/src/mess/drivers/v1050.c @@ -1022,9 +1022,6 @@ void v1050_state::machine_start() { address_space &program = m_maincpu->space(AS_PROGRAM); - // initialize SASI bus - m_sasibus->init_scsibus(256); - // initialize I8214 m_pic->etlg_w(1); m_pic->inte_w(1); diff --git a/src/mess/machine/d9060.c b/src/mess/machine/d9060.c index e251e3ae196..1350e465635 100644 --- a/src/mess/machine/d9060.c +++ b/src/mess/machine/d9060.c @@ -560,8 +560,6 @@ void base_d9060_device::device_start() void base_d9060_device::device_reset() { - m_sasibus->init_scsibus(256); - m_maincpu->set_input_line(M6502_SET_OVERFLOW, ASSERT_LINE); m_maincpu->set_input_line(M6502_SET_OVERFLOW, CLEAR_LINE); diff --git a/src/mess/machine/e01.c b/src/mess/machine/e01.c index 2cac1732a7e..b5d5aa2b1a8 100644 --- a/src/mess/machine/e01.c +++ b/src/mess/machine/e01.c @@ -557,8 +557,6 @@ void e01_device::device_start() void e01_device::device_reset() { - m_scsibus->init_scsibus(512); - m_clk_timer->adjust(attotime::zero, 0, attotime::from_hz(200000)); membank("bank1")->set_entry(1); diff --git a/src/mess/machine/lux4105.c b/src/mess/machine/lux4105.c index 287fa3985e5..f1954dff053 100644 --- a/src/mess/machine/lux4105.c +++ b/src/mess/machine/lux4105.c @@ -206,8 +206,6 @@ void luxor_4105_device::device_start() void luxor_4105_device::device_reset() { - m_sasibus->init_scsibus(512); - m_cs = 0; m_data = 0; m_dma = 0; diff --git a/src/mess/machine/rmnimbus.c b/src/mess/machine/rmnimbus.c index 3df7947108d..94aca444667 100644 --- a/src/mess/machine/rmnimbus.c +++ b/src/mess/machine/rmnimbus.c @@ -2423,8 +2423,6 @@ static void hdc_reset(running_machine &machine) rmnimbus_state *state = machine.driver_data(); scsibus_device *hdc = machine.device(SCSIBUS_TAG); - hdc->init_scsibus(512); - state->m_nimbus_drives.reg410_in=0; state->m_nimbus_drives.reg410_in |= (hdc->get_scsi_line(SCSI_LINE_REQ) ? HDC_REQ_MASK : 0); state->m_nimbus_drives.reg410_in |= (hdc->get_scsi_line(SCSI_LINE_CD) ? HDC_CD_MASK : 0);