Previous 199869 Revisions Next

r29256 Friday 4th April, 2014 at 13:29:48 UTC by Osso
ncr5380_device: converted to devcb2 (nw)
[src/emu/machine]ncr5380.c ncr5380.h
[src/mess/drivers]mac.c

trunk/src/emu/machine/ncr5380.c
r29255r29256
6464   return 6;
6565}
6666
67//-------------------------------------------------
68//  device_config_complete - perform any
69//  operations now that the configuration is
70//  complete
71//-------------------------------------------------
7267
73void ncr5380_device::device_config_complete()
74{
75   // inherit a copy of the static data
76   const NCR5380interface *intf = reinterpret_cast<const NCR5380interface *>(static_config());
77   if (intf != NULL)
78      *static_cast<NCR5380interface *>(this) = *intf;
79
80   // or initialize to defaults if none provided
81   else
82   {
83      memset(&m_irq_cb, 0, sizeof(m_irq_cb));
84   }
85}
86
8768//**************************************************************************
8869//  LIVE DEVICE
8970//**************************************************************************
r29255r29256
9576//-------------------------------------------------
9677
9778ncr5380_device::ncr5380_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
98   : device_t(mconfig, NCR5380, "5380 SCSI", tag, owner, clock, "ncr5380", __FILE__)
79   : device_t(mconfig, NCR5380, "5380 SCSI", tag, owner, clock, "ncr5380", __FILE__),
80   m_irq_cb(*this)
9981{
10082}
10183
r29255r29256
11092   memset(m_scsi_devices, 0, sizeof(m_scsi_devices));
11193
11294   m_next_req_flag = 0;
113   m_irq_func.resolve(m_irq_cb, *this);
95   m_irq_cb.resolve_safe();
11496
11597   save_item(NAME(m_5380_Registers));
11698   save_item(NAME(m_5380_Command));
trunk/src/emu/machine/ncr5380.h
r29255r29256
88
99#include "machine/scsihle.h"
1010
11struct NCR5380interface
12{
13   devcb_write_line m_irq_cb;  /* irq callback */
14};
15
1611// 5380 registers
1712enum
1813{
r29255r29256
3631#define R5380_CURDATA_DTACK (R5380_CURDATA | 0x10)
3732
3833// device stuff
39#define MCFG_NCR5380_ADD(_tag, _clock, _intrf) \
40   MCFG_DEVICE_ADD(_tag, NCR5380, _clock) \
41   MCFG_DEVICE_CONFIG(_intrf)
4234
43class ncr5380_device : public device_t,
44                  public NCR5380interface
35#define MCFG_NCR5380_IRQ_CB(_devcb) \
36   devcb = &ncr5380_device::set_irq_callback(*device, DEVCB2_##_devcb);
37
38class ncr5380_device : public device_t
4539{
4640public:
4741   // construction/destruction
4842   ncr5380_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
43   
44   template<class _Object> static devcb2_base &set_irq_callback(device_t &device, _Object object) { return downcast<ncr5380_device &>(device).m_irq_cb.set_callback(object); }
4945
5046   // our API
5147   UINT8 ncr5380_read_reg(UINT32 offset);
r29255r29256
5955   virtual void device_start();
6056   virtual void device_reset();
6157   virtual void device_stop();
62   virtual void device_config_complete();
6358
6459private:
6560   scsihle_device *m_scsi_devices[8];
r29255r29256
6964   UINT8 m_5380_Command[32];
7065   INT32 m_cmd_ptr, m_d_ptr, m_d_limit, m_next_req_flag;
7166   UINT8 m_5380_Data[512];
72   devcb_resolved_write_line m_irq_func;
67   devcb2_write_line m_irq_cb;  /* irq callback */
7368};
7469
7570// device type definition
trunk/src/mess/drivers/mac.c
r29255r29256
4848#include "cpu/powerpc/ppc.h"
4949#include "cpu/m6805/m6805.h"
5050#include "machine/6522via.h"
51#include "machine/ncr5380.h"
5251#include "machine/applefdc.h"
5352#include "machine/swim.h"
5453#include "machine/sonydriv.h"
r29255r29256
842841   sony_read_status
843842};
844843
845static const struct NCR5380interface macplus_5380intf =
846{
847   DEVCB_DRIVER_LINE_MEMBER(mac_state,mac_scsi_irq)    // IRQ (unconnected on the Mac Plus)
848};
849
850844static const struct NCR539Xinterface mac_539x_intf =
851845{
852846   DEVCB_DRIVER_LINE_MEMBER(mac_state, irq_539x_1_w),
r29255r29256
987981   MCFG_SCSIBUS_ADD("scsi")
988982   MCFG_SCSIDEV_ADD("scsi:harddisk1", SCSIHD, SCSI_ID_6)
989983   MCFG_SCSIDEV_ADD("scsi:harddisk2", SCSIHD, SCSI_ID_5)
990   MCFG_NCR5380_ADD("scsi:ncr5380", C7M, macplus_5380intf)
984   MCFG_DEVICE_ADD("scsi:ncr5380", NCR5380, C7M)
985   MCFG_NCR5380_IRQ_CB(DEVWRITELINE(DEVICE_SELF_OWNER, mac_state, mac_scsi_irq))
991986
992987   MCFG_LEGACY_FLOPPY_SONY_2_DRIVES_MODIFY(mac_floppy_interface)
993988
r29255r29256
10781073   MCFG_SCSIBUS_ADD("scsi")
10791074   MCFG_SCSIDEV_ADD("scsi:harddisk1", SCSIHD, SCSI_ID_6)
10801075   MCFG_SCSIDEV_ADD("scsi:harddisk2", SCSIHD, SCSI_ID_5)
1081   MCFG_NCR5380_ADD("scsi:ncr5380", C7M, macplus_5380intf)
1076   MCFG_DEVICE_ADD("scsi:ncr5380", NCR5380, C7M)
1077   MCFG_NCR5380_IRQ_CB(DEVWRITELINE(DEVICE_SELF_OWNER, mac_state, mac_scsi_irq))
10821078
10831079   MCFG_IWM_ADD("fdc", mac_iwm_interface)
10841080   MCFG_LEGACY_FLOPPY_SONY_2_DRIVES_ADD(mac_floppy_interface)
r29255r29256
11301126   MCFG_SCSIDEV_ADD("scsi:harddisk1", SCSIHD, SCSI_ID_6)
11311127   MCFG_SCSIDEV_ADD("scsi:harddisk2", SCSIHD, SCSI_ID_5)
11321128   MCFG_SCSIDEV_ADD("scsi:cdrom1", SCSICD, SCSI_ID_4)
1133   MCFG_NCR5380_ADD("scsi:ncr5380", C7M, macplus_5380intf)
1129   MCFG_DEVICE_ADD("scsi:ncr5380", NCR5380, C7M)
1130   MCFG_NCR5380_IRQ_CB(DEVWRITELINE(DEVICE_SELF_OWNER, mac_state, mac_scsi_irq))
11341131
11351132   MCFG_IWM_ADD("fdc", mac_iwm_interface)
11361133   MCFG_LEGACY_FLOPPY_SONY_2_DRIVES_ADD(mac_floppy_interface)
r29255r29256
11931190   MCFG_SCSIBUS_ADD("scsi")
11941191   MCFG_SCSIDEV_ADD("scsi:harddisk1", SCSIHD, SCSI_ID_6)
11951192   MCFG_SCSIDEV_ADD("scsi:harddisk2", SCSIHD, SCSI_ID_5)
1196   MCFG_NCR5380_ADD("scsi:ncr5380", C7M, macplus_5380intf)
1193   MCFG_DEVICE_ADD("scsi:ncr5380", NCR5380, C7M)
1194   MCFG_NCR5380_IRQ_CB(DEVWRITELINE(DEVICE_SELF_OWNER, mac_state, mac_scsi_irq))
11971195
11981196   MCFG_IWM_ADD("fdc", mac_iwm_interface)
11991197   MCFG_LEGACY_FLOPPY_SONY_2_DRIVES_ADD(mac_floppy_interface)
r29255r29256
14351433   MCFG_SCSIBUS_ADD("scsi")
14361434   MCFG_SCSIDEV_ADD("scsi:harddisk1", SCSIHD, SCSI_ID_6)
14371435   MCFG_SCSIDEV_ADD("scsi:harddisk2", SCSIHD, SCSI_ID_5)
1438   MCFG_NCR5380_ADD("scsi:ncr5380", C7M, macplus_5380intf)
1436   MCFG_DEVICE_ADD("scsi:ncr5380", NCR5380, C7M)
1437   MCFG_NCR5380_IRQ_CB(DEVWRITELINE(DEVICE_SELF_OWNER, mac_state, mac_scsi_irq))
14391438
14401439   MCFG_NUBUS_BUS_ADD("pds", "maincpu", nubus_intf)
14411440   MCFG_NUBUS_SLOT_ADD("pds","pds030", mac_pds030_cards, NULL)
r29255r29256
15001499   MCFG_SCSIBUS_ADD("scsi")
15011500   MCFG_SCSIDEV_ADD("scsi:harddisk1", SCSIHD, SCSI_ID_6)
15021501   MCFG_SCSIDEV_ADD("scsi:harddisk2", SCSIHD, SCSI_ID_5)
1503   MCFG_NCR5380_ADD("scsi:ncr5380", C7M, macplus_5380intf)
1502   MCFG_DEVICE_ADD("scsi:ncr5380", NCR5380, C7M)
1503   MCFG_NCR5380_IRQ_CB(DEVWRITELINE(DEVICE_SELF_OWNER, mac_state, mac_scsi_irq))
15041504
15051505   MCFG_SWIM_ADD("fdc", mac_iwm_interface)
15061506   MCFG_LEGACY_FLOPPY_SONY_2_DRIVES_ADD(mac_floppy_interface)
r29255r29256
15821582   MCFG_SCSIBUS_ADD("scsi")
15831583   MCFG_SCSIDEV_ADD("scsi:harddisk1", SCSIHD, SCSI_ID_6)
15841584   MCFG_SCSIDEV_ADD("scsi:harddisk2", SCSIHD, SCSI_ID_5)
1585   MCFG_NCR5380_ADD("scsi:ncr5380", C7M, macplus_5380intf)
1585   MCFG_DEVICE_ADD("scsi:ncr5380", NCR5380, C7M)
1586   MCFG_NCR5380_IRQ_CB(DEVWRITELINE(DEVICE_SELF_OWNER, mac_state, mac_scsi_irq))
15861587
15871588   MCFG_SWIM_ADD("fdc", mac_iwm_interface)
15881589   MCFG_LEGACY_FLOPPY_SONY_2_DRIVES_ADD(mac_floppy_interface)
r29255r29256
17781779   MCFG_SCSIBUS_ADD("scsi")
17791780   MCFG_SCSIDEV_ADD("scsi:harddisk1", SCSIHD, SCSI_ID_6)
17801781   MCFG_SCSIDEV_ADD("scsi:harddisk2", SCSIHD, SCSI_ID_5)
1781   MCFG_NCR5380_ADD("scsi:ncr5380", C7M, macplus_5380intf)
1782   MCFG_DEVICE_ADD("scsi:ncr5380", NCR5380, C7M)
1783   MCFG_NCR5380_IRQ_CB(DEVWRITELINE(DEVICE_SELF_OWNER, mac_state, mac_scsi_irq))
17821784
17831785   MCFG_IWM_ADD("fdc", mac_iwm_interface)
17841786   MCFG_LEGACY_FLOPPY_SONY_2_DRIVES_ADD(mac_floppy_interface)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team