diff options
29 files changed, 200 insertions, 175 deletions
diff --git a/.gitattributes b/.gitattributes index 666655783a1..ff2289e9951 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1191,6 +1191,8 @@ src/emu/machine/s3c2440.h svneol=native#text/plain src/emu/machine/s3c24xx.c svneol=native#text/plain src/emu/machine/scsibus.c svneol=native#text/plain src/emu/machine/scsibus.h svneol=native#text/plain +src/emu/machine/scsicb.c svneol=native#text/plain +src/emu/machine/scsicb.h svneol=native#text/plain src/emu/machine/scsicd.c svneol=native#text/plain src/emu/machine/scsicd.h svneol=native#text/plain src/emu/machine/scsidev.c svneol=native#text/plain diff --git a/src/emu/emu.mak b/src/emu/emu.mak index ee79e13173a..6351390faee 100644 --- a/src/emu/emu.mak +++ b/src/emu/emu.mak @@ -244,7 +244,8 @@ EMUMACHINEOBJS = \ $(EMUMACHINE)/s3c2410.o \ $(EMUMACHINE)/s3c2440.o \ $(EMUMACHINE)/s3520cf.o \ - $(EMUMACHINE)/scsibus.o \ + $(EMUMACHINE)/scsicb.o \ + $(EMUMACHINE)/scsibus.o \ $(EMUMACHINE)/scsicd.o \ $(EMUMACHINE)/scsidev.o \ $(EMUMACHINE)/scsihd.o \ diff --git a/src/emu/machine/scsibus.c b/src/emu/machine/scsibus.c index 0bb74d4708b..2a2e827ee77 100644 --- a/src/emu/machine/scsibus.c +++ b/src/emu/machine/scsibus.c @@ -594,18 +594,21 @@ void scsibus_device::scsi_out_line_change_now(UINT8 line, UINT8 state) LOG(3,"scsi_out_line_change(%s,%d)\n",linenames[line],state); - if(line_change_cb!=NULL) - line_change_cb(this, line,state); - - switch (line) + if(m_scsicb != NULL) { - case SCSI_LINE_BSY: out_bsy_func(state); break; - case SCSI_LINE_SEL: out_sel_func(state); break; - case SCSI_LINE_CD: out_cd_func(state); break; - case SCSI_LINE_IO: out_io_func(state); break; - case SCSI_LINE_MSG: out_msg_func(state); break; - case SCSI_LINE_REQ: out_req_func(state); break; - case SCSI_LINE_RESET: out_rst_func(state); break; + if(m_scsicb->line_change_cb!=NULL) + m_scsicb->line_change_cb(this, line,state); + + switch (line) + { + case SCSI_LINE_BSY: m_scsicb->out_bsy_func(state); break; + case SCSI_LINE_SEL: m_scsicb->out_sel_func(state); break; + case SCSI_LINE_CD: m_scsicb->out_cd_func(state); break; + case SCSI_LINE_IO: m_scsicb->out_io_func(state); break; + case SCSI_LINE_MSG: m_scsicb->out_msg_func(state); break; + case SCSI_LINE_REQ: m_scsicb->out_req_func(state); break; + case SCSI_LINE_RESET: m_scsicb->out_rst_func(state); break; + } } } @@ -746,28 +749,10 @@ scsibus_device::scsibus_device(const machine_config &mconfig, const char *tag, d { } -void scsibus_device::device_config_complete() -{ - // inherit a copy of the static data - const SCSIBus_interface *intf = reinterpret_cast<const SCSIBus_interface *>(static_config()); - if (intf != NULL) - { - *static_cast<SCSIBus_interface *>(this) = *intf; - } -} - void scsibus_device::device_start() { memset(devices, 0, sizeof(devices)); - out_bsy_func.resolve(_out_bsy_func, *this); - out_sel_func.resolve(_out_sel_func, *this); - out_cd_func.resolve(_out_cd_func, *this); - out_io_func.resolve(_out_io_func, *this); - out_msg_func.resolve(_out_msg_func, *this); - out_req_func.resolve(_out_req_func, *this); - out_rst_func.resolve(_out_rst_func, *this); - // All lines start high - inactive linestate=0xFF; @@ -787,6 +772,11 @@ void scsibus_device::device_start() { devices[scsidev->GetDeviceID()] = scsidev; } + else + { + scsicb_device *scsicb = dynamic_cast<scsicb_device *>(device); + m_scsicb = scsicb; + } } } diff --git a/src/emu/machine/scsibus.h b/src/emu/machine/scsibus.h index 27dc3d6a10a..a4b6c385726 100644 --- a/src/emu/machine/scsibus.h +++ b/src/emu/machine/scsibus.h @@ -1,43 +1,23 @@ /* SCSIBus.h - Implementation of a raw SCSI/SASI bus for machines that don't use a SCSI - controler chip such as the RM Nimbus, which implements it as a bunch of - 74LS series chips. - */ +#pragma once + #ifndef _SCSIBUS_H_ #define _SCSIBUS_H_ +#include "machine/scsicb.h" #include "machine/scsidev.h" /*************************************************************************** - INTERFACE -***************************************************************************/ - -typedef struct _SCSIBus_interface SCSIBus_interface; -struct _SCSIBus_interface -{ - void (*line_change_cb)(device_t *, UINT8 line, UINT8 state); - - devcb_write_line _out_bsy_func; - devcb_write_line _out_sel_func; - devcb_write_line _out_cd_func; - devcb_write_line _out_io_func; - devcb_write_line _out_msg_func; - devcb_write_line _out_req_func; - devcb_write_line _out_rst_func; -}; - -/*************************************************************************** MACROS ***************************************************************************/ -#define MCFG_SCSIBUS_ADD(_tag, _intrf) \ - MCFG_DEVICE_ADD(_tag, SCSIBUS, 0) \ - MCFG_DEVICE_CONFIG(_intrf) +#define MCFG_SCSIBUS_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, SCSIBUS, 0) /*************************************************************************** @@ -144,8 +124,7 @@ typedef struct UINT8 sectors_per_track; } adaptec_sense_t; -class scsibus_device : public device_t, - public SCSIBus_interface +class scsibus_device : public device_t { public: // construction/destruction @@ -185,7 +164,6 @@ public: protected: // device-level overrides - virtual void device_config_complete(); virtual void device_start(); virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); @@ -210,14 +188,7 @@ private: void dump_bytes(UINT8 *buff, int count); scsidev_device *devices[8]; - - devcb_resolved_write_line out_bsy_func; - devcb_resolved_write_line out_sel_func; - devcb_resolved_write_line out_cd_func; - devcb_resolved_write_line out_io_func; - devcb_resolved_write_line out_msg_func; - devcb_resolved_write_line out_req_func; - devcb_resolved_write_line out_rst_func; + scsicb_device *m_scsicb; UINT8 linestate; UINT8 last_id; diff --git a/src/emu/machine/scsicb.c b/src/emu/machine/scsicb.c new file mode 100644 index 00000000000..508c11274da --- /dev/null +++ b/src/emu/machine/scsicb.c @@ -0,0 +1,29 @@ +#include "scsicb.h" + +scsicb_device::scsicb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, SCSICB, "SCSI callback", tag, owner, clock) +{ +} + +void scsicb_device::device_config_complete() +{ + // inherit a copy of the static data + const SCSICB_interface *intf = reinterpret_cast<const SCSICB_interface *>(static_config()); + if (intf != NULL) + { + *static_cast<SCSICB_interface *>(this) = *intf; + } +} + +void scsicb_device::device_start() +{ + out_bsy_func.resolve(_out_bsy_func, *this); + out_sel_func.resolve(_out_sel_func, *this); + out_cd_func.resolve(_out_cd_func, *this); + out_io_func.resolve(_out_io_func, *this); + out_msg_func.resolve(_out_msg_func, *this); + out_req_func.resolve(_out_req_func, *this); + out_rst_func.resolve(_out_rst_func, *this); +} + +const device_type SCSICB = &device_creator<scsicb_device>; diff --git a/src/emu/machine/scsicb.h b/src/emu/machine/scsicb.h new file mode 100644 index 00000000000..e9cff5385fd --- /dev/null +++ b/src/emu/machine/scsicb.h @@ -0,0 +1,64 @@ +/* + SCSICB.h + + Callbacks from SCSI/SASI bus for machines that don't use a SCSI + controler chip such as the RM Nimbus, which implements it as a bunch of + 74LS series chips. + +*/ + +#pragma once + +#ifndef _SCSICB_H_ +#define _SCSICB_H_ + +#include "emu.h" + +/*************************************************************************** + MACROS +***************************************************************************/ + +#define MCFG_SCSICB_ADD(_tag, _intf) \ + MCFG_DEVICE_ADD(_tag, SCSICB, 0) \ + MCFG_DEVICE_CONFIG(_intf) + + +typedef struct _SCSICB_interface SCSICB_interface; +struct _SCSICB_interface +{ + void (*line_change_cb)(device_t *, UINT8 line, UINT8 state); + + devcb_write_line _out_bsy_func; + devcb_write_line _out_sel_func; + devcb_write_line _out_cd_func; + devcb_write_line _out_io_func; + devcb_write_line _out_msg_func; + devcb_write_line _out_req_func; + devcb_write_line _out_rst_func; +}; + +class scsicb_device : public device_t, + public SCSICB_interface +{ +public: + // construction/destruction + scsicb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + devcb_resolved_write_line out_bsy_func; + devcb_resolved_write_line out_sel_func; + devcb_resolved_write_line out_cd_func; + devcb_resolved_write_line out_io_func; + devcb_resolved_write_line out_msg_func; + devcb_resolved_write_line out_req_func; + devcb_resolved_write_line out_rst_func; + +protected: + // device-level overrides + virtual void device_config_complete(); + virtual void device_start(); +}; + +// device type definition +extern const device_type SCSICB; + +#endif diff --git a/src/mame/drivers/cps3.c b/src/mame/drivers/cps3.c index a002277ce3e..86278880de1 100644 --- a/src/mame/drivers/cps3.c +++ b/src/mame/drivers/cps3.c @@ -2262,10 +2262,6 @@ static INTERRUPT_GEN(cps3_other_interrupt) //static sh2_cpu_core sh2cp_conf_slave = { 1, NULL }; -static const SCSIBus_interface scsibus_intf = -{ -}; - static const struct WD33C93interface wd33c93_intf = { NULL /* command completion IRQ */ @@ -2505,7 +2501,7 @@ static MACHINE_CONFIG_START( cps3, cps3_state ) MCFG_CPU_PERIODIC_INT(cps3_other_interrupt,80) /* ?source? */ MCFG_CPU_CONFIG(sh2_conf_cps3) - MCFG_SCSIBUS_ADD("scsi", scsibus_intf) + MCFG_SCSIBUS_ADD("scsi") MCFG_SCSIDEV_ADD("scsi:cdrom", SCSICD, SCSI_ID_1) MCFG_WD33C93_ADD("scsi:wd33c93", wd33c93_intf) diff --git a/src/mame/drivers/konamigq.c b/src/mame/drivers/konamigq.c index 625a27fc93a..9baafd45b55 100644 --- a/src/mame/drivers/konamigq.c +++ b/src/mame/drivers/konamigq.c @@ -306,10 +306,6 @@ static void scsi_irq(running_machine &machine) psx_irq_set(machine, 0x400); } -static const SCSIBus_interface scsibus_intf = -{ -}; - static const struct AM53CF96interface am53cf96_intf = { &scsi_irq, /* command completion IRQ */ @@ -354,7 +350,7 @@ static MACHINE_CONFIG_START( konamigq, konamigq_state ) MCFG_EEPROM_93C46_ADD("eeprom") MCFG_EEPROM_DATA(konamigq_def_eeprom, 128) - MCFG_SCSIBUS_ADD("scsi", scsibus_intf) + MCFG_SCSIBUS_ADD("scsi") MCFG_SCSIDEV_ADD("scsi:disk", SCSIHD, SCSI_ID_0) MCFG_AM53CF96_ADD("scsi:am53cf96", am53cf96_intf) diff --git a/src/mame/drivers/konamigv.c b/src/mame/drivers/konamigv.c index e8e80ddff97..f1ecd4ac25d 100644 --- a/src/mame/drivers/konamigv.c +++ b/src/mame/drivers/konamigv.c @@ -296,10 +296,6 @@ static void scsi_irq(running_machine &machine) psx_irq_set(machine, 0x400); } -static const SCSIBus_interface scsibus_intf = -{ -}; - static const struct AM53CF96interface am53cf96_intf = { &scsi_irq, /* command completion IRQ */ @@ -352,7 +348,7 @@ static MACHINE_CONFIG_START( konamigv, konamigv_state ) MCFG_EEPROM_93C46_ADD("eeprom") - MCFG_SCSIBUS_ADD("scsi", scsibus_intf) + MCFG_SCSIBUS_ADD("scsi") MCFG_SCSIDEV_ADD("scsi:cdrom", SCSICD, SCSI_ID_4) MCFG_AM53CF96_ADD("scsi:am53cf96", am53cf96_intf) diff --git a/src/mame/drivers/model3.c b/src/mame/drivers/model3.c index 3ea391836eb..3658cd1a3ca 100644 --- a/src/mame/drivers/model3.c +++ b/src/mame/drivers/model3.c @@ -1204,10 +1204,6 @@ static const eeprom_interface eeprom_intf = 5 /* reset_delay (Lost World needs this, very similar to wbeachvl in playmark.c) */ }; -static const SCSIBus_interface scsibus_intf = -{ -}; - static const struct LSI53C810interface lsi53c810_intf = { &scsi_irq_callback, @@ -5336,7 +5332,7 @@ static MACHINE_CONFIG_START( model3_10, model3_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 2.0) MCFG_SOUND_ROUTE(0, "rspeaker", 2.0) - MCFG_SCSIBUS_ADD("scsi", scsibus_intf) + MCFG_SCSIBUS_ADD("scsi") MCFG_LSI53C810_ADD( "scsi:lsi53c810", lsi53c810_intf) MACHINE_CONFIG_END @@ -5378,7 +5374,7 @@ static MACHINE_CONFIG_START( model3_15, model3_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 2.0) MCFG_SOUND_ROUTE(0, "rspeaker", 2.0) - MCFG_SCSIBUS_ADD("scsi", scsibus_intf) + MCFG_SCSIBUS_ADD("scsi") MCFG_LSI53C810_ADD( "scsi:lsi53c810", lsi53c810_intf) MACHINE_CONFIG_END diff --git a/src/mame/drivers/twinkle.c b/src/mame/drivers/twinkle.c index 8941ae96ae6..7441dcf953e 100644 --- a/src/mame/drivers/twinkle.c +++ b/src/mame/drivers/twinkle.c @@ -854,10 +854,6 @@ static void scsi_irq(running_machine &machine) psx_irq_set(machine, 0x400); } -static const SCSIBus_interface scsibus_intf = -{ -}; - static const struct AM53CF96interface am53cf96_intf = { &scsi_irq, /* command completion IRQ */ @@ -924,7 +920,7 @@ static MACHINE_CONFIG_START( twinkle, twinkle_state ) MCFG_MACHINE_RESET( twinkle ) MCFG_I2CMEM_ADD("security",i2cmem_interface) - MCFG_SCSIBUS_ADD("scsi", scsibus_intf) + MCFG_SCSIBUS_ADD("scsi") MCFG_SCSIDEV_ADD("scsi:cdrom", SCSICD, SCSI_ID_4) MCFG_AM53CF96_ADD("scsi:am53cf96", am53cf96_intf) diff --git a/src/mess/drivers/bebox.c b/src/mess/drivers/bebox.c index 2742ca8b4d7..853667d423d 100644 --- a/src/mess/drivers/bebox.c +++ b/src/mess/drivers/bebox.c @@ -117,10 +117,6 @@ static void scsi53c810_dma_callback(running_machine &machine, UINT32 src, UINT32 } -static const SCSIBus_interface scsibus_intf = -{ -}; - static const struct LSI53C810interface lsi53c810_intf = { &scsi53c810_irq_callback, @@ -197,7 +193,7 @@ static MACHINE_CONFIG_START( bebox, bebox_state ) MCFG_FUJITSU_29F016A_ADD("flash") - MCFG_SCSIBUS_ADD("scsi", scsibus_intf) + MCFG_SCSIBUS_ADD("scsi") MCFG_SCSIDEV_ADD("scsi:harddisk1", SCSIHD, SCSI_ID_0) MCFG_SCSIDEV_ADD("scsi:cdrom", SCSICD, SCSI_ID_3) MCFG_LSI53C810_ADD( "scsi:lsi53c810", lsi53c810_intf) diff --git a/src/mess/drivers/bullet.c b/src/mess/drivers/bullet.c index d4956206784..8ebc48d6c6b 100644 --- a/src/mess/drivers/bullet.c +++ b/src/mess/drivers/bullet.c @@ -58,6 +58,7 @@ Notes: */ #include "includes/bullet.h" +#include "machine/scsicb.h" #include "machine/scsihd.h" @@ -1021,7 +1022,7 @@ static const wd17xx_interface bulletf_fdc_intf = //------------------------------------------------- -// SCSIBus_interface scsi_intf +// SCSICB_interface scsi_intf //------------------------------------------------- WRITE_LINE_MEMBER( bulletf_state::req_w ) @@ -1037,7 +1038,7 @@ WRITE_LINE_MEMBER( bulletf_state::req_w ) update_dma_rdy(); } -static const SCSIBus_interface scsi_intf = +static const SCSICB_interface scsi_intf = { NULL, DEVCB_NULL, @@ -1206,8 +1207,9 @@ static MACHINE_CONFIG_START( bulletf, bulletf_state ) MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics) MCFG_SERIAL_TERMINAL_ADD(TERMINAL_TAG, terminal_intf, 4800) - MCFG_SCSIBUS_ADD(SCSIBUS_TAG, scsi_intf) + MCFG_SCSIBUS_ADD(SCSIBUS_TAG) MCFG_SCSIDEV_ADD(SCSIBUS_TAG ":harddisk0", SCSIHD, SCSI_ID_0) + MCFG_SCSICB_ADD(SCSIBUS_TAG ":host", scsi_intf) // software lists MCFG_SOFTWARE_LIST_ADD("flop_list", "wmbullet") diff --git a/src/mess/drivers/fmtowns.c b/src/mess/drivers/fmtowns.c index d30ae2cccad..4cf8db6b298 100644 --- a/src/mess/drivers/fmtowns.c +++ b/src/mess/drivers/fmtowns.c @@ -2626,10 +2626,6 @@ static const rf5c68_interface rf5c68_intf = towns_pcm_irq }; -static const SCSIBus_interface scsibus_intf = -{ -}; - static const FMSCSIinterface towns_scsi_config = { DEVCB_LINE(towns_scsi_irq), @@ -2713,7 +2709,7 @@ static MACHINE_CONFIG_FRAGMENT( towns_base ) MCFG_CDROM_ADD("cdrom",towns_cdrom) - MCFG_SCSIBUS_ADD("scsi", scsibus_intf) + MCFG_SCSIBUS_ADD("scsi") MCFG_SCSIDEV_ADD("scsi:harddisk0", SCSIHD, SCSI_ID_0) MCFG_SCSIDEV_ADD("scsi:harddisk1", SCSIHD, SCSI_ID_1) MCFG_SCSIDEV_ADD("scsi:harddisk2", SCSIHD, SCSI_ID_2) diff --git a/src/mess/drivers/ip20.c b/src/mess/drivers/ip20.c index 918ab01156c..9c37d309fb7 100644 --- a/src/mess/drivers/ip20.c +++ b/src/mess/drivers/ip20.c @@ -483,10 +483,6 @@ static void scsi_irq(running_machine &machine, int state) { } -static const SCSIBus_interface scsibus_intf = -{ -}; - static const struct WD33C93interface wd33c93_intf = { &scsi_irq, /* command completion IRQ */ @@ -610,7 +606,7 @@ static MACHINE_CONFIG_START( ip204415, ip20_state ) MCFG_SCC8530_ADD("scc", 7000000, line_cb_t()) - MCFG_SCSIBUS_ADD("scsi", scsibus_intf) + MCFG_SCSIBUS_ADD("scsi") MCFG_SCSIDEV_ADD("scsi:cdrom", SCSICD, SCSI_ID_6) MCFG_WD33C93_ADD("scsi:wd33c93", wd33c93_intf) diff --git a/src/mess/drivers/ip22.c b/src/mess/drivers/ip22.c index 845654482b3..0215b776bbc 100644 --- a/src/mess/drivers/ip22.c +++ b/src/mess/drivers/ip22.c @@ -1496,10 +1496,6 @@ static void scsi_irq(running_machine &machine, int state) } } -static const SCSIBus_interface scsibus_intf = -{ -}; - static const struct WD33C93interface wd33c93_intf = { &scsi_irq, /* command completion IRQ */ @@ -1671,7 +1667,7 @@ static MACHINE_CONFIG_START( ip225015, ip22_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) - MCFG_SCSIBUS_ADD("scsi", scsibus_intf) + MCFG_SCSIBUS_ADD("scsi") MCFG_SCSIDEV_ADD("scsi:harddisk1", SCSIHD, SCSI_ID_1) MCFG_SCSIDEV_ADD("scsi:cdrom", SCSICD, SCSI_ID_4) MCFG_WD33C93_ADD("scsi:wd33c93", wd33c93_intf) diff --git a/src/mess/drivers/mac.c b/src/mess/drivers/mac.c index 01b64a051c0..26c003d99ce 100644 --- a/src/mess/drivers/mac.c +++ b/src/mess/drivers/mac.c @@ -813,10 +813,6 @@ static const applefdc_interface mac_iwm_interface = sony_read_status }; -static const SCSIBus_interface scsibus_intf = -{ -}; - static const struct NCR5380interface macplus_5380intf = { mac_scsi_irq // IRQ (unconnected on the Mac Plus) @@ -931,7 +927,7 @@ static MACHINE_CONFIG_DERIVED( macplus, mac512ke ) MCFG_CPU_MODIFY( "maincpu" ) MCFG_CPU_PROGRAM_MAP(macplus_map) - MCFG_SCSIBUS_ADD("scsi", scsibus_intf) + MCFG_SCSIBUS_ADD("scsi") MCFG_SCSIDEV_ADD("scsi:harddisk1", SCSIHD, SCSI_ID_6) MCFG_SCSIDEV_ADD("scsi:harddisk2", SCSIHD, SCSI_ID_5) MCFG_NCR5380_ADD("scsi:ncr5380", C7M, macplus_5380intf) @@ -990,7 +986,7 @@ static MACHINE_CONFIG_START( macprtb, mac_state ) MCFG_NVRAM_HANDLER(mac) /* devices */ - MCFG_SCSIBUS_ADD("scsi", scsibus_intf) + MCFG_SCSIBUS_ADD("scsi") MCFG_SCSIDEV_ADD("scsi:harddisk1", SCSIHD, SCSI_ID_6) MCFG_SCSIDEV_ADD("scsi:harddisk2", SCSIHD, SCSI_ID_5) MCFG_NCR5380_ADD("scsi:ncr5380", C7M, macplus_5380intf) @@ -1036,7 +1032,7 @@ static MACHINE_CONFIG_START( macii, mac_state ) MCFG_NUBUS_SLOT_ADD("nubus","nbd", mac_nubus_cards, NULL, NULL) MCFG_NUBUS_SLOT_ADD("nubus","nbe", mac_nubus_cards, NULL, NULL) - MCFG_SCSIBUS_ADD("scsi", scsibus_intf) + MCFG_SCSIBUS_ADD("scsi") MCFG_SCSIDEV_ADD("scsi:harddisk1", SCSIHD, SCSI_ID_6) MCFG_SCSIDEV_ADD("scsi:harddisk2", SCSIHD, SCSI_ID_5) MCFG_NCR5380_ADD("scsi:ncr5380", C7M, macplus_5380intf) @@ -1088,7 +1084,7 @@ static MACHINE_CONFIG_START( maciifx, mac_state ) MCFG_NUBUS_SLOT_ADD("nubus","nbd", mac_nubus_cards, NULL, NULL) MCFG_NUBUS_SLOT_ADD("nubus","nbe", mac_nubus_cards, NULL, NULL) - MCFG_SCSIBUS_ADD("scsi", scsibus_intf) + MCFG_SCSIBUS_ADD("scsi") MCFG_SCSIDEV_ADD("scsi:harddisk1", SCSIHD, SCSI_ID_6) MCFG_SCSIDEV_ADD("scsi:harddisk2", SCSIHD, SCSI_ID_5) MCFG_NCR5380_ADD("scsi:ncr5380", C7M, macplus_5380intf) @@ -1286,7 +1282,7 @@ static MACHINE_CONFIG_START( macse30, mac_state ) MCFG_NVRAM_HANDLER(mac) /* devices */ - MCFG_SCSIBUS_ADD("scsi", scsibus_intf) + MCFG_SCSIBUS_ADD("scsi") MCFG_SCSIDEV_ADD("scsi:harddisk1", SCSIHD, SCSI_ID_6) MCFG_SCSIDEV_ADD("scsi:harddisk2", SCSIHD, SCSI_ID_5) MCFG_NCR5380_ADD("scsi:ncr5380", C7M, macplus_5380intf) @@ -1337,7 +1333,7 @@ static MACHINE_CONFIG_START( macpb140, mac_state ) MCFG_NVRAM_HANDLER(mac) /* devices */ - MCFG_SCSIBUS_ADD("scsi", scsibus_intf) + MCFG_SCSIBUS_ADD("scsi") MCFG_SCSIDEV_ADD("scsi:harddisk1", SCSIHD, SCSI_ID_6) MCFG_SCSIDEV_ADD("scsi:harddisk2", SCSIHD, SCSI_ID_5) MCFG_NCR5380_ADD("scsi:ncr5380", C7M, macplus_5380intf) @@ -1408,7 +1404,7 @@ static MACHINE_CONFIG_START( macpb160, mac_state ) MCFG_NVRAM_HANDLER(mac) /* devices */ - MCFG_SCSIBUS_ADD("scsi", scsibus_intf) + MCFG_SCSIBUS_ADD("scsi") MCFG_SCSIDEV_ADD("scsi:harddisk1", SCSIHD, SCSI_ID_6) MCFG_SCSIDEV_ADD("scsi:harddisk2", SCSIHD, SCSI_ID_5) MCFG_NCR5380_ADD("scsi:ncr5380", C7M, macplus_5380intf) @@ -1579,7 +1575,7 @@ static MACHINE_CONFIG_START( pwrmac, mac_state ) MCFG_NVRAM_HANDLER(mac) /* devices */ - MCFG_SCSIBUS_ADD("scsi", scsibus_intf) + MCFG_SCSIBUS_ADD("scsi") MCFG_SCSIDEV_ADD("scsi:harddisk1", SCSIHD, SCSI_ID_6) MCFG_SCSIDEV_ADD("scsi:harddisk2", SCSIHD, SCSI_ID_5) MCFG_NCR5380_ADD("scsi:ncr5380", C7M, macplus_5380intf) @@ -1639,7 +1635,7 @@ static MACHINE_CONFIG_START( macqd700, mac_state ) MCFG_VIA6522_ADD("via6522_0", C7M/10, mac_via6522_adb_intf) MCFG_VIA6522_ADD("via6522_1", C7M/10, mac_via6522_2_intf) - MCFG_SCSIBUS_ADD("scsi", scsibus_intf) + MCFG_SCSIBUS_ADD("scsi") MCFG_SCSIDEV_ADD("scsi:harddisk1", SCSIHD, SCSI_ID_6) MCFG_SCSIDEV_ADD("scsi:harddisk2", SCSIHD, SCSI_ID_5) MCFG_NCR539X_ADD(MAC_539X_1_TAG, C7M, mac_539x_intf) diff --git a/src/mess/drivers/rmnimbus.c b/src/mess/drivers/rmnimbus.c index 2e970bf829e..d8f25ab0260 100644 --- a/src/mess/drivers/rmnimbus.c +++ b/src/mess/drivers/rmnimbus.c @@ -15,6 +15,7 @@ #include "formats/pc_dsk.h" #include "includes/rmnimbus.h" #include "machine/er59256.h" +#include "machine/scsicb.h" #include "machine/scsihd.h" #include "machine/s1410.h" #include "machine/acb4070.h" @@ -78,7 +79,11 @@ static const msm5205_interface msm5205_config = MSM5205_S48_4B /* 8 kHz */ }; -static const SCSIBus_interface scsibus_config = +//------------------------------------------------- +// SCSICB_interface sasi_intf +//------------------------------------------------- + +static const SCSICB_interface scsibus_config = { &nimbus_scsi_linechange }; @@ -321,11 +326,12 @@ static MACHINE_CONFIG_START( nimbus, rmnimbus_state ) MCFG_WD2793_ADD(FDC_TAG, nimbus_wd17xx_interface ) MCFG_LEGACY_FLOPPY_4_DRIVES_ADD(nimbus_floppy_interface) - MCFG_SCSIBUS_ADD(SCSIBUS_TAG, scsibus_config) + MCFG_SCSIBUS_ADD(SCSIBUS_TAG) MCFG_SCSIDEV_ADD(SCSIBUS_TAG ":harddisk0", ACB4070, SCSI_ID_0) MCFG_SCSIDEV_ADD(SCSIBUS_TAG ":harddisk1", S1410, SCSI_ID_1) MCFG_SCSIDEV_ADD(SCSIBUS_TAG ":harddisk2", SCSIHD, SCSI_ID_2) MCFG_SCSIDEV_ADD(SCSIBUS_TAG ":harddisk3", SCSIHD, SCSI_ID_3) + MCFG_SCSICB_ADD(SCSIBUS_TAG ":host", scsibus_config) MCFG_RAM_ADD(RAM_TAG) MCFG_RAM_DEFAULT_SIZE("1536K") diff --git a/src/mess/drivers/v1050.c b/src/mess/drivers/v1050.c index ea7b785ea75..1d2318b5f35 100644 --- a/src/mess/drivers/v1050.c +++ b/src/mess/drivers/v1050.c @@ -106,6 +106,7 @@ Notes: */ #include "includes/v1050.h" +#include "machine/scsicb.h" #include "machine/scsihd.h" #include "machine/s1410.h" @@ -987,10 +988,10 @@ static const floppy_interface v1050_floppy_interface = //------------------------------------------------- -// SCSIBus_interface sasi_intf +// SCSICB_interface sasi_intf //------------------------------------------------- -static const SCSIBus_interface sasi_intf = +static const SCSICB_interface sasi_intf = { NULL, DEVCB_NULL, @@ -1112,8 +1113,9 @@ static MACHINE_CONFIG_START( v1050, v1050_state ) MCFG_TIMER_ADD(TIMER_SIO_TAG, sio_8251_tick) // SASI bus - MCFG_SCSIBUS_ADD(SASIBUS_TAG, sasi_intf) + MCFG_SCSIBUS_ADD(SASIBUS_TAG) MCFG_SCSIDEV_ADD(SASIBUS_TAG ":harddisk0", S1410, SCSI_ID_0) + MCFG_SCSICB_ADD(SASIBUS_TAG ":host", sasi_intf) MCFG_TIMER_ADD(TIMER_ACK_TAG, sasi_ack_tick) MCFG_TIMER_ADD(TIMER_RST_TAG, sasi_rst_tick) diff --git a/src/mess/drivers/x68k.c b/src/mess/drivers/x68k.c index f4019693f7c..9ca53a751dd 100644 --- a/src/mess/drivers/x68k.c +++ b/src/mess/drivers/x68k.c @@ -2528,10 +2528,6 @@ static const floppy_interface x68k_floppy_interface = NULL }; -static const SCSIBus_interface scsibus_intf = -{ -}; - static const mb89352_interface x68k_scsi_intf = { DEVCB_LINE(x68k_scsi_irq), @@ -2821,7 +2817,7 @@ static MACHINE_CONFIG_START( x68ksupr, x68k_state ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(x68kxvi_map) - MCFG_SCSIBUS_ADD("scsi", scsibus_intf) + MCFG_SCSIBUS_ADD("scsi") MCFG_SCSIDEV_ADD("scsi:harddisk0", SCSIHD, SCSI_ID_0) MCFG_SCSIDEV_ADD("scsi:harddisk1", SCSIHD, SCSI_ID_1) MCFG_SCSIDEV_ADD("scsi:harddisk2", SCSIHD, SCSI_ID_2) @@ -2842,7 +2838,7 @@ static MACHINE_CONFIG_START( x68kxvi, x68k_state ) MCFG_CPU_CLOCK(16000000) /* 16 MHz */ MCFG_CPU_PROGRAM_MAP(x68kxvi_map) - MCFG_SCSIBUS_ADD("scsi", scsibus_intf) + MCFG_SCSIBUS_ADD("scsi") MCFG_SCSIDEV_ADD("scsi:harddisk0", SCSIHD, SCSI_ID_0) MCFG_SCSIDEV_ADD("scsi:harddisk1", SCSIHD, SCSI_ID_1) MCFG_SCSIDEV_ADD("scsi:harddisk2", SCSIHD, SCSI_ID_2) @@ -2864,7 +2860,7 @@ static MACHINE_CONFIG_START( x68030, x68k_state ) MCFG_NVRAM_ADD_0FILL("nvram32") - MCFG_SCSIBUS_ADD("scsi", scsibus_intf) + MCFG_SCSIBUS_ADD("scsi") MCFG_SCSIDEV_ADD("scsi:harddisk0", SCSIHD, SCSI_ID_0) MCFG_SCSIDEV_ADD("scsi:harddisk1", SCSIHD, SCSI_ID_1) MCFG_SCSIDEV_ADD("scsi:harddisk2", SCSIHD, SCSI_ID_2) diff --git a/src/mess/machine/a2scsi.c b/src/mess/machine/a2scsi.c index 171f15dc487..2609be4ce99 100644 --- a/src/mess/machine/a2scsi.c +++ b/src/mess/machine/a2scsi.c @@ -36,17 +36,13 @@ const device_type A2BUS_SCSI = &device_creator<a2bus_scsi_device>; #define SCSI_ROM_REGION "scsi_rom" #define SCSI_5380_TAG "scsi:ncr5380" -static const SCSIBus_interface scsibus_intf = -{ -}; - static const struct NCR5380interface a2scsi_5380_intf = { NULL // IRQ handler (unconnected according to schematic) }; MACHINE_CONFIG_FRAGMENT( scsi ) - MCFG_SCSIBUS_ADD("scsi", scsibus_intf) + MCFG_SCSIBUS_ADD("scsi") MCFG_NCR5380_ADD(SCSI_5380_TAG, (XTAL_28_63636MHz/4), a2scsi_5380_intf) MACHINE_CONFIG_END diff --git a/src/mess/machine/abc_hdc.c b/src/mess/machine/abc_hdc.c index a155d0e1129..b87ed3808b4 100644 --- a/src/mess/machine/abc_hdc.c +++ b/src/mess/machine/abc_hdc.c @@ -8,6 +8,9 @@ *********************************************************************/ #include "abc_hdc.h" +#include "machine/scsibus.h" +#include "machine/scsicb.h" +#include "machine/scsihd.h" @@ -85,10 +88,10 @@ static const z80_daisy_config daisy_chain[] = //------------------------------------------------- -// SCSIBus_interface sasi_intf +// SCSICB_interface sasi_intf //------------------------------------------------- -static const SCSIBus_interface sasi_intf = +static const SCSICB_interface sasi_intf = { NULL, DEVCB_NULL, @@ -111,8 +114,9 @@ static MACHINE_CONFIG_FRAGMENT( abc_hdc ) MCFG_CPU_IO_MAP(abc_hdc_io) MCFG_CPU_CONFIG(daisy_chain) - MCFG_SCSIBUS_ADD(SASIBUS_TAG, sasi_intf) + MCFG_SCSIBUS_ADD(SASIBUS_TAG) MCFG_SCSIDEV_ADD(SASIBUS_TAG ":harddisk0", SCSIHD, SCSI_ID_0) + MCFG_SCSICB_ADD(SASIBUS_TAG ":host", sasi_intf) MACHINE_CONFIG_END diff --git a/src/mess/machine/abc_hdc.h b/src/mess/machine/abc_hdc.h index 191a273744e..0bdd3e06c62 100644 --- a/src/mess/machine/abc_hdc.h +++ b/src/mess/machine/abc_hdc.h @@ -17,8 +17,6 @@ #include "cpu/z80/z80.h" #include "cpu/z80/z80daisy.h" #include "machine/abcbus.h" -#include "machine/scsibus.h" -#include "machine/scsihd.h" diff --git a/src/mess/machine/abc_xebec.c b/src/mess/machine/abc_xebec.c index 39396c5b9ba..53e385a050a 100644 --- a/src/mess/machine/abc_xebec.c +++ b/src/mess/machine/abc_xebec.c @@ -8,6 +8,9 @@ *********************************************************************/ #include "abc_xebec.h" +#include "machine/scsibus.h" +#include "machine/scsicb.h" +#include "machine/scsihd.h" @@ -78,10 +81,10 @@ static const z80_daisy_config daisy_chain[] = //------------------------------------------------- -// SCSIBus_interface sasi_intf +// SCSICB_interface sasi_intf //------------------------------------------------- -static const SCSIBus_interface sasi_intf = +static const SCSICB_interface sasi_intf = { NULL, DEVCB_NULL, @@ -104,8 +107,9 @@ static MACHINE_CONFIG_FRAGMENT( abc_xebec ) MCFG_CPU_IO_MAP(abc_xebec_io) MCFG_CPU_CONFIG(daisy_chain) - MCFG_SCSIBUS_ADD(SASIBUS_TAG, sasi_intf) + MCFG_SCSIBUS_ADD(SASIBUS_TAG) MCFG_SCSIDEV_ADD(SASIBUS_TAG ":harddisk0", SCSIHD, SCSI_ID_0) + MCFG_SCSICB_ADD(SASIBUS_TAG ":host", sasi_intf) MACHINE_CONFIG_END diff --git a/src/mess/machine/abc_xebec.h b/src/mess/machine/abc_xebec.h index 793ddbb4e72..4d5457729a0 100644 --- a/src/mess/machine/abc_xebec.h +++ b/src/mess/machine/abc_xebec.h @@ -17,8 +17,6 @@ #include "cpu/z80/z80.h" #include "cpu/z80/z80daisy.h" #include "machine/abcbus.h" -#include "machine/scsibus.h" -#include "machine/scsihd.h" diff --git a/src/mess/machine/d9060.c b/src/mess/machine/d9060.c index 5f16324d94b..e251e3ae196 100644 --- a/src/mess/machine/d9060.c +++ b/src/mess/machine/d9060.c @@ -8,6 +8,7 @@ **********************************************************************/ #include "d9060.h" +#include "machine/scsicb.h" #include "machine/d9060hd.h" @@ -136,7 +137,7 @@ ADDRESS_MAP_END //------------------------------------------------- -// SCSIBus_interface sasi_intf +// SCSICB_interface sasi_intf //------------------------------------------------- WRITE_LINE_MEMBER( base_d9060_device::req_w ) @@ -144,7 +145,7 @@ WRITE_LINE_MEMBER( base_d9060_device::req_w ) m_via->write_ca1(!state); } -static const SCSIBus_interface sasi_intf = +static const SCSICB_interface sasi_intf = { NULL, DEVCB_NULL, @@ -152,7 +153,7 @@ static const SCSIBus_interface sasi_intf = DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, base_d9060_device, req_w), + DEVCB_DEVICE_LINE_MEMBER("^^", base_d9060_device, req_w), DEVCB_NULL }; @@ -459,8 +460,9 @@ static MACHINE_CONFIG_FRAGMENT( d9060 ) MCFG_VIA6522_ADD(M6522_TAG, XTAL_4MHz/4, via_intf) - MCFG_SCSIBUS_ADD(SASIBUS_TAG, sasi_intf) + MCFG_SCSIBUS_ADD(SASIBUS_TAG) MCFG_SCSIDEV_ADD(SASIBUS_TAG ":harddisk0", D9060HD, SCSI_ID_0) + MCFG_SCSICB_ADD(SASIBUS_TAG ":host", sasi_intf) MACHINE_CONFIG_END diff --git a/src/mess/machine/e01.c b/src/mess/machine/e01.c index c414bcf00d9..2cac1732a7e 100644 --- a/src/mess/machine/e01.c +++ b/src/mess/machine/e01.c @@ -54,6 +54,7 @@ */ #include "e01.h" +#include "machine/scsicb.h" #include "machine/scsihd.h" @@ -259,7 +260,7 @@ static const wd17xx_interface fdc_intf = //------------------------------------------------- -// SCSIBus_interface scsi_intf +// SCSICB_interface scsi_intf //------------------------------------------------- WRITE_LINE_MEMBER( e01_device::scsi_bsy_w ) @@ -281,15 +282,15 @@ WRITE_LINE_MEMBER( e01_device::scsi_req_w ) update_interrupts(); } -static const SCSIBus_interface scsi_intf = +static const SCSICB_interface scsi_intf = { NULL, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, e01_device, scsi_bsy_w), + DEVCB_DEVICE_LINE_MEMBER("^^", e01_device, scsi_bsy_w), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, e01_device, scsi_req_w), + DEVCB_DEVICE_LINE_MEMBER("^^", e01_device, scsi_req_w), DEVCB_NULL }; @@ -347,8 +348,9 @@ static MACHINE_CONFIG_FRAGMENT( e01 ) MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(e01_floppy_interface) MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, e01_centronics_intf) - MCFG_SCSIBUS_ADD(SCSIBUS_TAG, scsi_intf) + MCFG_SCSIBUS_ADD(SCSIBUS_TAG) MCFG_SCSIDEV_ADD(SCSIBUS_TAG ":harddisk0", SCSIHD, SCSI_ID_0) + MCFG_SCSICB_ADD(SCSIBUS_TAG ":host", scsi_intf) // internal ram MCFG_RAM_ADD(RAM_TAG) diff --git a/src/mess/machine/lux4105.c b/src/mess/machine/lux4105.c index b8c65ea5fa4..287fa3985e5 100644 --- a/src/mess/machine/lux4105.c +++ b/src/mess/machine/lux4105.c @@ -8,6 +8,7 @@ *********************************************************************/ #include "lux4105.h" +#include "machine/scsicb.h" #include "machine/scsihd.h" #include "machine/s1410.h" @@ -29,7 +30,7 @@ const device_type LUXOR_4105 = &device_creator<luxor_4105_device>; //------------------------------------------------- -// SCSIBus_interface sasi_intf +// SCSICB_interface sasi_intf //------------------------------------------------- WRITE_LINE_MEMBER( luxor_4105_device::sasi_bsy_w ) @@ -62,15 +63,15 @@ WRITE_LINE_MEMBER( luxor_4105_device::sasi_req_w ) update_trrq_int(); } -static const SCSIBus_interface sasi_intf = +static const SCSICB_interface sasi_intf = { NULL, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, luxor_4105_device, sasi_bsy_w), + DEVCB_DEVICE_LINE_MEMBER("^^", luxor_4105_device, sasi_bsy_w), DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, luxor_4105_device, sasi_io_w), + DEVCB_DEVICE_LINE_MEMBER("^^", luxor_4105_device, sasi_io_w), DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, luxor_4105_device, sasi_req_w), + DEVCB_DEVICE_LINE_MEMBER("^^", luxor_4105_device, sasi_req_w), DEVCB_NULL }; @@ -80,8 +81,9 @@ static const SCSIBus_interface sasi_intf = //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( luxor_4105 ) - MCFG_SCSIBUS_ADD(SASIBUS_TAG, sasi_intf) + MCFG_SCSIBUS_ADD(SASIBUS_TAG) MCFG_SCSIDEV_ADD(SASIBUS_TAG ":harddisk0", S1410, SCSI_ID_0) + MCFG_SCSICB_ADD(SASIBUS_TAG ":host", sasi_intf) MACHINE_CONFIG_END diff --git a/src/mess/machine/x68k_scsiext.c b/src/mess/machine/x68k_scsiext.c index 516ed13bb92..4627592dcc8 100644 --- a/src/mess/machine/x68k_scsiext.c +++ b/src/mess/machine/x68k_scsiext.c @@ -18,10 +18,6 @@ const device_type X68K_SCSIEXT = &device_creator<x68k_scsiext_device>; -static const SCSIBus_interface scsibus_intf = -{ -}; - static const mb89352_interface mb89352_intf = { DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER,x68k_scsiext_device,irq_w), @@ -44,7 +40,7 @@ const rom_entry *x68k_scsiext_device::device_rom_region() const // device machine config static MACHINE_CONFIG_FRAGMENT( x68k_scsiext ) - MCFG_SCSIBUS_ADD("scsi", scsibus_intf) + MCFG_SCSIBUS_ADD("scsi") MCFG_SCSIDEV_ADD("scsi:harddisk0", SCSIHD, SCSI_ID_0) MCFG_SCSIDEV_ADD("scsi:harddisk1", SCSIHD, SCSI_ID_1) MCFG_SCSIDEV_ADD("scsi:harddisk2", SCSIHD, SCSI_ID_2) |