Previous 199869 Revisions Next

r17487 Sunday 26th August, 2012 at 17:29:45 UTC by smf
use ncr5380 as a c++ device (nw)
[src/mess/machine]a2scsi.c a2scsi.h mac.c ncr5380.c ncr5380.h

trunk/src/mess/machine/a2scsi.c
r17486r17487
145145        case 5:
146146        case 6:
147147        case 7:
148            return ncr5380_read_reg(m_ncr5380, offset);
148            return m_ncr5380->ncr5380_read_reg(offset);
149149
150150    case 9:         // card's ID?
151151        return 7;
r17486r17487
173173        case 5:
174174        case 6:
175175        case 7:
176            ncr5380_write_reg(m_ncr5380, offset, data);
176            m_ncr5380->ncr5380_write_reg(offset, data);
177177            break;
178178
179179        case 0xa:  // ROM and RAM banking (74LS273 at U3E)
trunk/src/mess/machine/a2scsi.h
r17486r17487
4242    virtual UINT8 read_c800(address_space &space, UINT16 offset);
4343    virtual void write_c800(address_space &space, UINT16 offset, UINT8 data);
4444
45    required_device<device_t> m_ncr5380;
45    required_device<ncr5380_device> m_ncr5380;
4646
4747private:
4848    UINT8 *m_rom;
trunk/src/mess/machine/ncr5380.c
r17486r17487
156156//-------------------------------------------------
157157//  Public API
158158//-------------------------------------------------
159READ8_DEVICE_HANDLER_TRAMPOLINE(ncr5380, ncr5380_read_reg)
159UINT8 ncr5380_device::ncr5380_read_reg(UINT32 offset)
160160{
161161   int reg = offset & 7;
162162   UINT8 rv = 0;
r17486r17487
240240   return rv;
241241}
242242
243WRITE8_DEVICE_HANDLER_TRAMPOLINE(ncr5380, ncr5380_write_reg)
243void ncr5380_device::ncr5380_write_reg(UINT32 offset, UINT8 data)
244244{
245245   int reg = offset & 7;
246246
r17486r17487
472472      logerror("ncr5380: write to unknown device SCSI ID %d\n", m_last_id);
473473   }
474474}
475
476void ncr5380_read_data(device_t *dev, UINT8 bytes, UINT8 *pData)
477{
478   return downcast<ncr5380_device*>(dev)->ncr5380_read_data(bytes, pData);
479}
480
481void ncr5380_write_data(device_t *dev, UINT8 bytes, UINT8 *pData)
482{
483   downcast<ncr5380_device*>(dev)->ncr5380_write_data(bytes, pData);
484}
trunk/src/mess/machine/ncr5380.h
r17486r17487
7676// device type definition
7777extern const device_type NCR5380;
7878
79/***************************************************************************
80    PROTOTYPES
81***************************************************************************/
82READ8_DEVICE_HANDLER(ncr5380_read_reg);
83WRITE8_DEVICE_HANDLER(ncr5380_write_reg);
84
85void ncr5380_read_data(device_t *dev, int bytes, UINT8 *pData);
86void ncr5380_write_data(device_t *dev, int bytes, UINT8 *pData);
87
8879#endif
trunk/src/mess/machine/mac.c
r17486r17487
974974READ16_MEMBER ( mac_state::macplus_scsi_r )
975975{
976976   int reg = (offset>>3) & 0xf;
977   device_t *ncr = space.machine().device("ncr5380");
977   ncr5380_device *ncr = space.machine().device<ncr5380_device>("ncr5380");
978978
979979//  logerror("macplus_scsi_r: offset %x mask %x\n", offset, mem_mask);
980980
r17486r17487
983983      reg = R5380_CURDATA_DTACK;
984984   }
985985
986   return ncr5380_read_reg(ncr, reg)<<8;
986   return ncr->ncr5380_read_reg(reg)<<8;
987987}
988988
989989READ32_MEMBER (mac_state::macii_scsi_drq_r)
990990{
991   device_t *ncr = space.machine().device("ncr5380");
991   ncr5380_device *ncr = space.machine().device<ncr5380_device>("ncr5380");
992992
993993   switch (mem_mask)
994994   {
995995      case 0xff000000:
996         return ncr5380_read_reg(ncr, R5380_CURDATA_DTACK)<<24;
996         return ncr->ncr5380_read_reg(R5380_CURDATA_DTACK)<<24;
997997
998998      case 0xffff0000:
999         return (ncr5380_read_reg(ncr, R5380_CURDATA_DTACK)<<24) | (ncr5380_read_reg(ncr, R5380_CURDATA_DTACK)<<16);
999         return (ncr->ncr5380_read_reg(R5380_CURDATA_DTACK)<<24) | (ncr->ncr5380_read_reg(R5380_CURDATA_DTACK)<<16);
10001000
10011001      case 0xffffffff:
1002         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);
1002         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);
10031003
10041004      default:
10051005         logerror("macii_scsi_drq_r: unknown mem_mask %08x\n", mem_mask);
r17486r17487
10101010
10111011WRITE32_MEMBER (mac_state::macii_scsi_drq_w)
10121012{
1013   device_t *ncr = space.machine().device("ncr5380");
1013   ncr5380_device *ncr = space.machine().device<ncr5380_device>("ncr5380");
10141014
10151015   switch (mem_mask)
10161016   {
10171017      case 0xff000000:
1018         ncr5380_write_reg(ncr, R5380_OUTDATA_DTACK, data>>24);
1018         ncr->ncr5380_write_reg(R5380_OUTDATA_DTACK, data>>24);
10191019         break;
10201020
10211021      case 0xffff0000:
1022         ncr5380_write_reg(ncr, R5380_OUTDATA_DTACK, data>>24);
1023         ncr5380_write_reg(ncr, R5380_OUTDATA_DTACK, data>>16);
1022         ncr->ncr5380_write_reg(R5380_OUTDATA_DTACK, data>>24);
1023         ncr->ncr5380_write_reg(R5380_OUTDATA_DTACK, data>>16);
10241024         break;
10251025
10261026      case 0xffffffff:
1027         ncr5380_write_reg(ncr, R5380_OUTDATA_DTACK, data>>24);
1028         ncr5380_write_reg(ncr, R5380_OUTDATA_DTACK, data>>16);
1029         ncr5380_write_reg(ncr, R5380_OUTDATA_DTACK, data>>8);
1030         ncr5380_write_reg(ncr, R5380_OUTDATA_DTACK, data&0xff);
1027         ncr->ncr5380_write_reg(R5380_OUTDATA_DTACK, data>>24);
1028         ncr->ncr5380_write_reg(R5380_OUTDATA_DTACK, data>>16);
1029         ncr->ncr5380_write_reg(R5380_OUTDATA_DTACK, data>>8);
1030         ncr->ncr5380_write_reg(R5380_OUTDATA_DTACK, data&0xff);
10311031         break;
10321032
10331033      default:
r17486r17487
10391039WRITE16_MEMBER ( mac_state::macplus_scsi_w )
10401040{
10411041   int reg = (offset>>3) & 0xf;
1042   device_t *ncr = space.machine().device("ncr5380");
1042   ncr5380_device *ncr = space.machine().device<ncr5380_device>("ncr5380");
10431043
10441044//  logerror("macplus_scsi_w: data %x offset %x mask %x\n", data, offset, mem_mask);
10451045
r17486r17487
10481048      reg = R5380_OUTDATA_DTACK;
10491049   }
10501050
1051   ncr5380_write_reg(ncr, reg, data);
1051   ncr->ncr5380_write_reg(reg, data);
10521052}
10531053
10541054WRITE16_MEMBER ( mac_state::macii_scsi_w )
10551055{
10561056   int reg = (offset>>3) & 0xf;
1057   device_t *ncr = space.machine().device("ncr5380");
1057   ncr5380_device *ncr = space.machine().device<ncr5380_device>("ncr5380");
10581058
10591059//  logerror("macplus_scsi_w: data %x offset %x mask %x (PC=%x)\n", data, offset, mem_mask, cpu_get_pc(&space->device()));
10601060
r17486r17487
10631063      reg = R5380_OUTDATA_DTACK;
10641064   }
10651065
1066   ncr5380_write_reg(ncr, reg, data>>8);
1066   ncr->ncr5380_write_reg(reg, data>>8);
10671067}
10681068
10691069void mac_scsi_irq(running_machine &machine, int state)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team