use ncr5380 as a c++ device (nw)

This commit is contained in:
smf- 2012-08-26 17:29:45 +00:00
parent 8786656348
commit 1537a32446
5 changed files with 23 additions and 42 deletions

View File

@ -145,7 +145,7 @@ UINT8 a2bus_scsi_device::read_c0nx(address_space &space, UINT8 offset)
case 5:
case 6:
case 7:
return ncr5380_read_reg(m_ncr5380, offset);
return m_ncr5380->ncr5380_read_reg(offset);
case 9: // card's ID?
return 7;
@ -173,7 +173,7 @@ void a2bus_scsi_device::write_c0nx(address_space &space, UINT8 offset, UINT8 dat
case 5:
case 6:
case 7:
ncr5380_write_reg(m_ncr5380, offset, data);
m_ncr5380->ncr5380_write_reg(offset, data);
break;
case 0xa: // ROM and RAM banking (74LS273 at U3E)

View File

@ -42,7 +42,7 @@ protected:
virtual UINT8 read_c800(address_space &space, UINT16 offset);
virtual void write_c800(address_space &space, UINT16 offset, UINT8 data);
required_device<device_t> m_ncr5380;
required_device<ncr5380_device> m_ncr5380;
private:
UINT8 *m_rom;

View File

@ -974,7 +974,7 @@ Note: Asserting the DACK signal applies only to write operations to
READ16_MEMBER ( mac_state::macplus_scsi_r )
{
int reg = (offset>>3) & 0xf;
device_t *ncr = space.machine().device("ncr5380");
ncr5380_device *ncr = space.machine().device<ncr5380_device>("ncr5380");
// logerror("macplus_scsi_r: offset %x mask %x\n", offset, mem_mask);
@ -983,23 +983,23 @@ READ16_MEMBER ( mac_state::macplus_scsi_r )
reg = R5380_CURDATA_DTACK;
}
return ncr5380_read_reg(ncr, reg)<<8;
return ncr->ncr5380_read_reg(reg)<<8;
}
READ32_MEMBER (mac_state::macii_scsi_drq_r)
{
device_t *ncr = space.machine().device("ncr5380");
ncr5380_device *ncr = space.machine().device<ncr5380_device>("ncr5380");
switch (mem_mask)
{
case 0xff000000:
return ncr5380_read_reg(ncr, R5380_CURDATA_DTACK)<<24;
return ncr->ncr5380_read_reg(R5380_CURDATA_DTACK)<<24;
case 0xffff0000:
return (ncr5380_read_reg(ncr, R5380_CURDATA_DTACK)<<24) | (ncr5380_read_reg(ncr, R5380_CURDATA_DTACK)<<16);
return (ncr->ncr5380_read_reg(R5380_CURDATA_DTACK)<<24) | (ncr->ncr5380_read_reg(R5380_CURDATA_DTACK)<<16);
case 0xffffffff:
return (ncr5380_read_reg(ncr, R5380_CURDATA_DTACK)<<24) | (ncr5380_read_reg(ncr, R5380_CURDATA_DTACK)<<16) | (ncr5380_read_reg(ncr, R5380_CURDATA_DTACK)<<8) | ncr5380_read_reg(ncr, R5380_CURDATA_DTACK);
return (ncr->ncr5380_read_reg(R5380_CURDATA_DTACK)<<24) | (ncr->ncr5380_read_reg(R5380_CURDATA_DTACK)<<16) | (ncr->ncr5380_read_reg(R5380_CURDATA_DTACK)<<8) | ncr->ncr5380_read_reg(R5380_CURDATA_DTACK);
default:
logerror("macii_scsi_drq_r: unknown mem_mask %08x\n", mem_mask);
@ -1010,24 +1010,24 @@ READ32_MEMBER (mac_state::macii_scsi_drq_r)
WRITE32_MEMBER (mac_state::macii_scsi_drq_w)
{
device_t *ncr = space.machine().device("ncr5380");
ncr5380_device *ncr = space.machine().device<ncr5380_device>("ncr5380");
switch (mem_mask)
{
case 0xff000000:
ncr5380_write_reg(ncr, R5380_OUTDATA_DTACK, data>>24);
ncr->ncr5380_write_reg(R5380_OUTDATA_DTACK, data>>24);
break;
case 0xffff0000:
ncr5380_write_reg(ncr, R5380_OUTDATA_DTACK, data>>24);
ncr5380_write_reg(ncr, R5380_OUTDATA_DTACK, data>>16);
ncr->ncr5380_write_reg(R5380_OUTDATA_DTACK, data>>24);
ncr->ncr5380_write_reg(R5380_OUTDATA_DTACK, data>>16);
break;
case 0xffffffff:
ncr5380_write_reg(ncr, R5380_OUTDATA_DTACK, data>>24);
ncr5380_write_reg(ncr, R5380_OUTDATA_DTACK, data>>16);
ncr5380_write_reg(ncr, R5380_OUTDATA_DTACK, data>>8);
ncr5380_write_reg(ncr, R5380_OUTDATA_DTACK, data&0xff);
ncr->ncr5380_write_reg(R5380_OUTDATA_DTACK, data>>24);
ncr->ncr5380_write_reg(R5380_OUTDATA_DTACK, data>>16);
ncr->ncr5380_write_reg(R5380_OUTDATA_DTACK, data>>8);
ncr->ncr5380_write_reg(R5380_OUTDATA_DTACK, data&0xff);
break;
default:
@ -1039,7 +1039,7 @@ WRITE32_MEMBER (mac_state::macii_scsi_drq_w)
WRITE16_MEMBER ( mac_state::macplus_scsi_w )
{
int reg = (offset>>3) & 0xf;
device_t *ncr = space.machine().device("ncr5380");
ncr5380_device *ncr = space.machine().device<ncr5380_device>("ncr5380");
// logerror("macplus_scsi_w: data %x offset %x mask %x\n", data, offset, mem_mask);
@ -1048,13 +1048,13 @@ WRITE16_MEMBER ( mac_state::macplus_scsi_w )
reg = R5380_OUTDATA_DTACK;
}
ncr5380_write_reg(ncr, reg, data);
ncr->ncr5380_write_reg(reg, data);
}
WRITE16_MEMBER ( mac_state::macii_scsi_w )
{
int reg = (offset>>3) & 0xf;
device_t *ncr = space.machine().device("ncr5380");
ncr5380_device *ncr = space.machine().device<ncr5380_device>("ncr5380");
// logerror("macplus_scsi_w: data %x offset %x mask %x (PC=%x)\n", data, offset, mem_mask, cpu_get_pc(&space->device()));
@ -1063,7 +1063,7 @@ WRITE16_MEMBER ( mac_state::macii_scsi_w )
reg = R5380_OUTDATA_DTACK;
}
ncr5380_write_reg(ncr, reg, data>>8);
ncr->ncr5380_write_reg(reg, data>>8);
}
void mac_scsi_irq(running_machine &machine, int state)

View File

@ -156,7 +156,7 @@ void ncr5380_device::device_stop()
//-------------------------------------------------
// Public API
//-------------------------------------------------
READ8_DEVICE_HANDLER_TRAMPOLINE(ncr5380, ncr5380_read_reg)
UINT8 ncr5380_device::ncr5380_read_reg(UINT32 offset)
{
int reg = offset & 7;
UINT8 rv = 0;
@ -240,7 +240,7 @@ READ8_DEVICE_HANDLER_TRAMPOLINE(ncr5380, ncr5380_read_reg)
return rv;
}
WRITE8_DEVICE_HANDLER_TRAMPOLINE(ncr5380, ncr5380_write_reg)
void ncr5380_device::ncr5380_write_reg(UINT32 offset, UINT8 data)
{
int reg = offset & 7;
@ -472,13 +472,3 @@ void ncr5380_device::ncr5380_write_data(int bytes, UINT8 *pData)
logerror("ncr5380: write to unknown device SCSI ID %d\n", m_last_id);
}
}
void ncr5380_read_data(device_t *dev, UINT8 bytes, UINT8 *pData)
{
return downcast<ncr5380_device*>(dev)->ncr5380_read_data(bytes, pData);
}
void ncr5380_write_data(device_t *dev, UINT8 bytes, UINT8 *pData)
{
downcast<ncr5380_device*>(dev)->ncr5380_write_data(bytes, pData);
}

View File

@ -76,13 +76,4 @@ private:
// device type definition
extern const device_type NCR5380;
/***************************************************************************
PROTOTYPES
***************************************************************************/
READ8_DEVICE_HANDLER(ncr5380_read_reg);
WRITE8_DEVICE_HANDLER(ncr5380_write_reg);
void ncr5380_read_data(device_t *dev, int bytes, UINT8 *pData);
void ncr5380_write_data(device_t *dev, int bytes, UINT8 *pData);
#endif