(MESS) use DEVCB2 for callbacks & run srcclean (nw)
This commit is contained in:
parent
088b56fab9
commit
6fe2c474c1
@ -2617,12 +2617,6 @@ static const rf5c68_interface rf5c68_intf =
|
||||
towns_pcm_irq
|
||||
};
|
||||
|
||||
static const FMSCSIinterface towns_scsi_config =
|
||||
{
|
||||
DEVCB_DRIVER_LINE_MEMBER(towns_state,towns_scsi_irq),
|
||||
DEVCB_DRIVER_LINE_MEMBER(towns_state,towns_scsi_drq)
|
||||
};
|
||||
|
||||
static const gfx_layout fnt_chars_16x16 =
|
||||
{
|
||||
16,16,
|
||||
@ -2663,7 +2657,7 @@ static MACHINE_CONFIG_FRAGMENT( towns_base )
|
||||
MCFG_CPU_IO_MAP(towns_io)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", towns_state, towns_vsync_irq)
|
||||
|
||||
// MCFG_MACHINE_RESET_OVERRIDE(towns_state,towns)
|
||||
//MCFG_MACHINE_RESET_OVERRIDE(towns_state,towns)
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
@ -2706,7 +2700,9 @@ static MACHINE_CONFIG_FRAGMENT( towns_base )
|
||||
MCFG_SCSIDEV_ADD("scsi:harddisk2", SCSIHD, SCSI_ID_2)
|
||||
MCFG_SCSIDEV_ADD("scsi:harddisk3", SCSIHD, SCSI_ID_3)
|
||||
MCFG_SCSIDEV_ADD("scsi:harddisk4", SCSIHD, SCSI_ID_4)
|
||||
MCFG_FMSCSI_ADD("scsi:fm",towns_scsi_config)
|
||||
MCFG_FMSCSI_ADD("scsi:fm")
|
||||
MCFG_FMSCSI_IRQ_HANDLER(DEVWRITELINE("^", towns_state, towns_scsi_irq))
|
||||
MCFG_FMSCSI_DRQ_HANDLER(DEVWRITELINE("^", towns_state, towns_scsi_drq))
|
||||
|
||||
MCFG_UPD71071_ADD("dma_1",towns_dma_config)
|
||||
MCFG_UPD71071_ADD("dma_2",towns_dma_config)
|
||||
@ -2869,4 +2865,3 @@ COMP( 1992, fmtownshr,fmtowns, 0, townshr, towns, driver_device, 0, "Fujitsu"
|
||||
COMP( 19??, fmtownssj,fmtowns, 0, townssj, towns, driver_device, 0, "Fujitsu", "FM-Towns II SJ", GAME_NOT_WORKING)
|
||||
CONS( 1993, fmtmarty, 0, 0, marty, marty, driver_device, 0, "Fujitsu", "FM-Towns Marty", GAME_NOT_WORKING)
|
||||
CONS( 1994, carmarty, fmtmarty, 0, marty, marty, driver_device, 0, "Fujitsu", "FM-Towns Car Marty", GAME_NOT_WORKING)
|
||||
|
||||
|
@ -33,27 +33,14 @@
|
||||
|
||||
const device_type FMSCSI = &device_creator<fmscsi_device>;
|
||||
|
||||
void fmscsi_device::device_config_complete()
|
||||
{
|
||||
// copy static configuration if present
|
||||
const FMSCSIinterface *intf = reinterpret_cast<const FMSCSIinterface *>(static_config());
|
||||
if (intf != NULL)
|
||||
*static_cast<FMSCSIinterface *>(this) = *intf;
|
||||
|
||||
// otherwise, initialize it to defaults
|
||||
else
|
||||
{
|
||||
memset(&irq_callback,0,sizeof(irq_callback));
|
||||
memset(&drq_callback,0,sizeof(drq_callback));
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Device
|
||||
*/
|
||||
|
||||
fmscsi_device::fmscsi_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: device_t(mconfig, FMSCSI, "FM-SCSI", tag, owner, clock)
|
||||
: device_t(mconfig, FMSCSI, "FM-SCSI", tag, owner, clock),
|
||||
m_irq_handler(*this),
|
||||
m_drq_handler(*this)
|
||||
{
|
||||
}
|
||||
|
||||
@ -67,8 +54,8 @@ void fmscsi_device::device_start()
|
||||
m_target = 0;
|
||||
m_phase = SCSI_PHASE_BUS_FREE;
|
||||
|
||||
m_irq_func.resolve(irq_callback,*this);
|
||||
m_drq_func.resolve(drq_callback,*this);
|
||||
m_irq_handler.resolve_safe();
|
||||
m_drq_handler.resolve_safe();
|
||||
|
||||
memset(m_SCSIdevices,0,sizeof(m_SCSIdevices));
|
||||
|
||||
@ -126,7 +113,7 @@ void fmscsi_device::device_timer(emu_timer &timer, device_timer_id id, int param
|
||||
//logerror("FMSCSI: timer triggered: %i/%i\n",m_result_index,m_result_length);
|
||||
if(m_output_lines & FMSCSI_LINE_DMAE)
|
||||
{
|
||||
m_drq_func(1);
|
||||
m_drq_handler(1);
|
||||
}
|
||||
break;
|
||||
case TIMER_PHASE:
|
||||
@ -156,7 +143,7 @@ UINT8 fmscsi_device::fmscsi_data_r(void)
|
||||
m_phase_timer->adjust(attotime::from_usec(800),SCSI_PHASE_STATUS);
|
||||
if(m_output_lines & FMSCSI_LINE_DMAE)
|
||||
{
|
||||
m_drq_func(0);
|
||||
m_drq_handler(0);
|
||||
}
|
||||
logerror("FMSCSI: Stopping transfer : (%i/%i)\n",m_result_index,m_result_length);
|
||||
}
|
||||
@ -220,7 +207,7 @@ void fmscsi_device::fmscsi_data_w(UINT8 data)
|
||||
m_phase_timer->adjust(attotime::from_usec(800),SCSI_PHASE_STATUS);
|
||||
if(m_output_lines & FMSCSI_LINE_DMAE)
|
||||
{
|
||||
m_drq_func(0);
|
||||
m_drq_handler(0);
|
||||
}
|
||||
logerror("FMSCSI: Stopping transfer : (%i/%i)\n",m_result_index,m_result_length);
|
||||
}
|
||||
@ -331,7 +318,7 @@ void fmscsi_device::set_input_line(UINT8 line, UINT8 state)
|
||||
if(m_output_lines & FMSCSI_LINE_IMSK && m_phase != SCSI_PHASE_DATAIN && m_phase != SCSI_PHASE_DATAOUT)
|
||||
{
|
||||
set_input_line(FMSCSI_LINE_INT,1);
|
||||
m_irq_func(1);
|
||||
m_irq_handler(1);
|
||||
logerror("FMSCSI: IRQ high\n");
|
||||
}
|
||||
}
|
||||
@ -340,7 +327,7 @@ void fmscsi_device::set_input_line(UINT8 line, UINT8 state)
|
||||
if(m_output_lines & FMSCSI_LINE_IMSK && m_phase != SCSI_PHASE_DATAIN && m_phase != SCSI_PHASE_DATAOUT)
|
||||
{
|
||||
set_input_line(FMSCSI_LINE_INT,0);
|
||||
m_irq_func(0);
|
||||
m_irq_handler(0);
|
||||
logerror("FMSCSI: IRQ low\n");
|
||||
}
|
||||
}
|
||||
|
@ -30,23 +30,25 @@
|
||||
#define FMSCSI_LINE_DMAE 0x02
|
||||
#define FMSCSI_LINE_RST 0x01
|
||||
|
||||
struct FMSCSIinterface
|
||||
{
|
||||
devcb_write_line irq_callback; /* irq callback */
|
||||
devcb_write_line drq_callback; /* drq callback */
|
||||
};
|
||||
#define MCFG_FMSCSI_ADD(_tag) \
|
||||
MCFG_DEVICE_ADD(_tag, FMSCSI, 0)
|
||||
|
||||
#define MCFG_FMSCSI_ADD(_tag, _intrf) \
|
||||
MCFG_DEVICE_ADD(_tag, FMSCSI, 0) \
|
||||
MCFG_DEVICE_CONFIG(_intrf)
|
||||
#define MCFG_FMSCSI_IRQ_HANDLER(_devcb) \
|
||||
devcb = &fmscsi_device::set_irq_handler(*device, DEVCB2_##_devcb); \
|
||||
|
||||
class fmscsi_device : public device_t,
|
||||
public FMSCSIinterface
|
||||
#define MCFG_FMSCSI_DRQ_HANDLER(_devcb) \
|
||||
devcb = &fmscsi_device::set_drq_handler(*device, DEVCB2_##_devcb); \
|
||||
|
||||
class fmscsi_device : public device_t
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
fmscsi_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
// static configuration helpers
|
||||
template<class _Object> static devcb2_base &set_irq_handler(device_t &device, _Object object) { return downcast<fmscsi_device &>(device).m_irq_handler.set_callback(object); }
|
||||
template<class _Object> static devcb2_base &set_drq_handler(device_t &device, _Object object) { return downcast<fmscsi_device &>(device).m_drq_handler.set_callback(object); }
|
||||
|
||||
// any publically accessible interfaces needed for runtime
|
||||
UINT8 fmscsi_data_r(void);
|
||||
void fmscsi_data_w(UINT8 data);
|
||||
@ -67,7 +69,6 @@ protected:
|
||||
virtual void device_start();
|
||||
virtual void device_reset();
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
|
||||
virtual void device_config_complete();
|
||||
|
||||
private:
|
||||
// internal device state goes here
|
||||
@ -76,8 +77,8 @@ private:
|
||||
|
||||
int get_scsi_cmd_len(UINT8 cbyte);
|
||||
|
||||
devcb_resolved_write_line m_irq_func;
|
||||
devcb_resolved_write_line m_drq_func;
|
||||
devcb2_write_line m_irq_handler;
|
||||
devcb2_write_line m_drq_handler;
|
||||
|
||||
scsihle_device* m_SCSIdevices[8];
|
||||
UINT8 m_command[32];
|
||||
|
Loading…
Reference in New Issue
Block a user