summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/53c7xx.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/53c7xx.cpp')
-rw-r--r--src/devices/machine/53c7xx.cpp69
1 files changed, 35 insertions, 34 deletions
diff --git a/src/devices/machine/53c7xx.cpp b/src/devices/machine/53c7xx.cpp
index 21fa52528be..f5cd79abf42 100644
--- a/src/devices/machine/53c7xx.cpp
+++ b/src/devices/machine/53c7xx.cpp
@@ -88,7 +88,8 @@ DEFINE_DEVICE_TYPE(NCR53C7XX, ncr53c7xx_device, "ncr537xx", "NCR 53C7xx SCSI")
//-------------------------------------------------
ncr53c7xx_device::ncr53c7xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- nscsi_device(mconfig, NCR53C7XX, tag, owner, clock),
+ device_t(mconfig, NCR53C7XX, tag, owner, clock),
+ nscsi_device_interface(mconfig, *this),
nscsi_slot_card_interface(mconfig, *this, DEVICE_SELF),
device_execute_interface(mconfig, *this),
m_icount(0),
@@ -192,7 +193,7 @@ void ncr53c7xx_device::device_reset()
m_finished = false;
m_connected = false;
- scsi_bus->ctrl_wait(scsi_refid, S_SEL | S_BSY | S_RST, S_ALL);
+ m_scsi_bus->ctrl_wait(m_scsi_refid, S_SEL | S_BSY | S_RST, S_ALL);
set_scripts_state(SCRIPTS_IDLE);
set_scsi_state(IDLE);
@@ -732,9 +733,9 @@ void ncr53c7xx_device::send_byte()
++m_dnad;
--m_dbc;
- scsi_bus->data_w(scsi_refid, data);
- scsi_bus->ctrl_w(scsi_refid, S_ACK, S_ACK);
- scsi_bus->ctrl_wait(scsi_refid, S_REQ, S_REQ);
+ m_scsi_bus->data_w(m_scsi_refid, data);
+ m_scsi_bus->ctrl_w(m_scsi_refid, S_ACK, S_ACK);
+ m_scsi_bus->ctrl_wait(m_scsi_refid, S_REQ, S_REQ);
delay(attotime::from_nsec(5));
}
@@ -745,7 +746,7 @@ void ncr53c7xx_device::send_byte()
void ncr53c7xx_device::recv_byte()
{
- scsi_bus->ctrl_wait(scsi_refid, S_REQ, S_REQ);
+ m_scsi_bus->ctrl_wait(m_scsi_refid, S_REQ, S_REQ);
set_scsi_state( (m_scsi_state & STATE_MASK) | (RECV_WAIT_REQ_1 << SUB_SHIFT) );
step(false);
}
@@ -768,8 +769,8 @@ TIMER_CALLBACK_MEMBER(ncr53c7xx_device::step_timer)
void ncr53c7xx_device::step(bool timeout)
{
- uint32_t ctrl = scsi_bus->ctrl_r();
- uint32_t data = scsi_bus->data_r();
+ uint32_t ctrl = m_scsi_bus->ctrl_r();
+ uint32_t data = m_scsi_bus->data_r();
LOGMASKED(LOG_STATE, "Step: CTRL:%x DATA:%x (%d.%d) Timeout:%d\n", ctrl, data, m_scsi_state & STATE_MASK, m_scsi_state >> SUB_SHIFT, timeout);
@@ -825,17 +826,17 @@ void ncr53c7xx_device::step(bool timeout)
if ((ctrl & (S_BSY | S_SEL)) == 0)
{
// Bus is free - assert the controller SCSI ID and BUSY
- scsi_bus->ctrl_w(scsi_refid, S_BSY, S_BSY);
+ m_scsi_bus->ctrl_w(m_scsi_refid, S_BSY, S_BSY);
if (((m_scntl[0] >> SCNTL0_ARB_SHIFT) & SCNTL0_ARB_MASK) == 3)
{
// Full arbitration
- scsi_bus->data_w(scsi_refid, m_scid);
+ m_scsi_bus->data_w(m_scsi_refid, m_scid);
}
else
{
// Simple arbitration
- scsi_bus->data_w(scsi_refid, m_sodl);
+ m_scsi_bus->data_w(m_scsi_refid, m_sodl);
}
set_scsi_state(ARBITRATE_EXAMINE_BUS);
@@ -852,8 +853,8 @@ void ncr53c7xx_device::step(bool timeout)
if (ctrl & S_SEL)
{
- scsi_bus->ctrl_w(scsi_refid, 0, S_BSY);
- scsi_bus->data_w(scsi_refid, 0);
+ m_scsi_bus->ctrl_w(m_scsi_refid, 0, S_BSY);
+ m_scsi_bus->data_w(m_scsi_refid, 0);
if (((m_scntl[0] >> SCNTL0_ARB_SHIFT) & SCNTL0_ARB_MASK) == 3)
{
@@ -884,8 +885,8 @@ void ncr53c7xx_device::step(bool timeout)
if ((1 << win) != m_scid)
{
- scsi_bus->data_w(scsi_refid, 0);
- scsi_bus->ctrl_w(scsi_refid, 0, S_ALL);
+ m_scsi_bus->data_w(m_scsi_refid, 0);
+ m_scsi_bus->ctrl_w(m_scsi_refid, 0, S_ALL);
delay(attotime::from_nsec(2400));
break;
@@ -893,7 +894,7 @@ void ncr53c7xx_device::step(bool timeout)
// Begin the select phase; assert SEL
m_sstat[1] |= SSTAT1_WOA;
- scsi_bus->ctrl_w(scsi_refid, S_SEL, S_SEL);
+ m_scsi_bus->ctrl_w(m_scsi_refid, S_SEL, S_SEL);
set_scsi_state(ARBITRATE_ASSERT_SEL);
delay(attotime::from_nsec(1200));
}
@@ -916,7 +917,7 @@ void ncr53c7xx_device::step(bool timeout)
break;
// Activate data line of the thing
- scsi_bus->data_w(scsi_refid, m_sdid);
+ m_scsi_bus->data_w(m_scsi_refid, m_sdid);
set_scsi_state(ARBITRATE_SELECT_DEST);
delay(attotime::from_nsec(2));
@@ -929,7 +930,7 @@ void ncr53c7xx_device::step(bool timeout)
if (!timeout)
break;
- scsi_bus->ctrl_w(scsi_refid, m_scntl[0] & SCNTL0_WATN ? S_ATN : 0, S_ATN | S_BSY);
+ m_scsi_bus->ctrl_w(m_scsi_refid, m_scntl[0] & SCNTL0_WATN ? S_ATN : 0, S_ATN | S_BSY);
set_scsi_state(ARBITRATE_RELEASE_BSY);
delay(attotime::from_nsec(20));
@@ -954,8 +955,8 @@ void ncr53c7xx_device::step(bool timeout)
break;
// Clear everything
- scsi_bus->data_w(scsi_refid, 0);
- scsi_bus->ctrl_w(scsi_refid, 0, S_SEL);
+ m_scsi_bus->data_w(m_scsi_refid, 0);
+ m_scsi_bus->ctrl_w(m_scsi_refid, 0, S_SEL);
// Done?
m_sstat[0] |= SSTAT0_CMP;
@@ -980,7 +981,7 @@ void ncr53c7xx_device::step(bool timeout)
else
{
if (m_dbc == 1)
- scsi_bus->ctrl_w(scsi_refid, 0, S_ATN);
+ m_scsi_bus->ctrl_w(m_scsi_refid, 0, S_ATN);
set_scsi_state(INIT_XFER_SEND_BYTE);
send_byte();
@@ -1007,7 +1008,7 @@ void ncr53c7xx_device::step(bool timeout)
case INIT_XFER_RECV_BYTE_ACK:
{
set_scsi_state(INIT_XFER_WAIT_REQ);
- scsi_bus->ctrl_w(scsi_refid, 0, S_ACK);
+ m_scsi_bus->ctrl_w(m_scsi_refid, 0, S_ACK);
break;
}
@@ -1056,8 +1057,8 @@ void ncr53c7xx_device::step(bool timeout)
break;
set_scsi_state(m_scsi_state & STATE_MASK);
- scsi_bus->data_w(scsi_refid, 0);
- scsi_bus->ctrl_w(scsi_refid, 0, S_ACK);
+ m_scsi_bus->data_w(m_scsi_refid, 0);
+ m_scsi_bus->ctrl_w(m_scsi_refid, 0, S_ACK);
step(false);
@@ -1082,7 +1083,7 @@ void ncr53c7xx_device::step(bool timeout)
if ((m_scsi_state & STATE_MASK) != INIT_XFER_RECV_PAD)
{
- m_last_data = scsi_bus->data_r();
+ m_last_data = m_scsi_bus->data_r();
uint32_t shift = (8 * (m_dnad & 3));
uint32_t mem_mask = 0xff << shift;
@@ -1092,7 +1093,7 @@ void ncr53c7xx_device::step(bool timeout)
--m_dbc;
}
- scsi_bus->ctrl_w(scsi_refid, S_ACK, S_ACK);
+ m_scsi_bus->ctrl_w(m_scsi_refid, S_ACK, S_ACK);
set_scsi_state( (m_scsi_state & STATE_MASK) | (RECV_WAIT_REQ_0 << SUB_SHIFT) );
step(false);
@@ -1422,7 +1423,7 @@ void ncr53c7xx_device::bm_i_wmov()
m_dnad = m_host_read(m_dnad, 0xffffffff);
// Compare the phase bits
- if ((scsi_bus->ctrl_r() & 7) == (m_dcmd & 7))
+ if ((m_scsi_bus->ctrl_r() & 7) == (m_dcmd & 7))
{
// Transfer bytes
set_scsi_state(INIT_XFER);
@@ -1537,7 +1538,7 @@ void ncr53c7xx_device::io_i_select()
void ncr53c7xx_device::io_i_waitdisconnect()
{
- if (scsi_bus->ctrl_r() & (S_BSY | S_SEL))
+ if (m_scsi_bus->ctrl_r() & (S_BSY | S_SEL))
scripts_yield();
else
set_scripts_state(SCRIPTS_FETCH);
@@ -1568,7 +1569,7 @@ void ncr53c7xx_device::io_i_set()
if (m_dbc & (1 << 6))
mask |= S_ACK;
- scsi_bus->ctrl_w(scsi_refid, mask, mask);
+ m_scsi_bus->ctrl_w(m_scsi_refid, mask, mask);
set_scripts_state(SCRIPTS_FETCH);
}
@@ -1588,7 +1589,7 @@ void ncr53c7xx_device::io_i_clear()
if (m_dbc & (1 << 6))
mask |= S_ACK;
- scsi_bus->ctrl_w(scsi_refid, 0, mask);
+ m_scsi_bus->ctrl_w(m_scsi_refid, 0, mask);
set_scripts_state(SCRIPTS_FETCH);
}
@@ -1608,7 +1609,7 @@ void ncr53c7xx_device::tc_jump()
if (m_dbc & (1 << 17))
{
// Phase
- jump &= (m_dcmd & 7) == (scsi_bus->ctrl_r() & 7);
+ jump &= (m_dcmd & 7) == (m_scsi_bus->ctrl_r() & 7);
}
if (m_dbc & (1 << 18))
{
@@ -1638,7 +1639,7 @@ void ncr53c7xx_device::tc_call()
if (m_dbc & (1 << 17))
{
// Phase
- jump &= (m_dcmd & 7) == (scsi_bus->ctrl_r() & 7);
+ jump &= (m_dcmd & 7) == (m_scsi_bus->ctrl_r() & 7);
}
if (m_dbc & (1 << 18))
{
@@ -1669,7 +1670,7 @@ void ncr53c7xx_device::tc_return()
if (m_dbc & (1 << 17))
{
// Phase
- jump &= (m_dcmd & 7) == (scsi_bus->ctrl_r() & 7);
+ jump &= (m_dcmd & 7) == (m_scsi_bus->ctrl_r() & 7);
}
if (m_dbc & (1 << 18))
{
@@ -1699,7 +1700,7 @@ void ncr53c7xx_device::tc_int()
if (m_dbc & (1 << 17))
{
// Phase
- jump &= (m_dcmd & 7) == (scsi_bus->ctrl_r() & 7);
+ jump &= (m_dcmd & 7) == (m_scsi_bus->ctrl_r() & 7);
}
if (m_dbc & (1 << 18))
{