summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/machine/wd_fdc.h
diff options
context:
space:
mode:
author Curt Coder <curtcoder@mail.com>2014-03-16 22:26:55 +0000
committer Curt Coder <curtcoder@mail.com>2014-03-16 22:26:55 +0000
commit22556b3d67120727dd319899e805fb18ebff18d8 (patch)
treefdec1e81a65d9794105e3da8ed91ce3767b78882 /src/emu/machine/wd_fdc.h
parent1ebb23b34fde88b6c6cd472f7d166123bc90d760 (diff)
wd_fdc: Refactored to use devcb2 callbacks. [Curt Coder]
Diffstat (limited to 'src/emu/machine/wd_fdc.h')
-rw-r--r--src/emu/machine/wd_fdc.h26
1 files changed, 19 insertions, 7 deletions
diff --git a/src/emu/machine/wd_fdc.h b/src/emu/machine/wd_fdc.h
index 96cc81be9b5..18fe007eee7 100644
--- a/src/emu/machine/wd_fdc.h
+++ b/src/emu/machine/wd_fdc.h
@@ -111,20 +111,31 @@
#define MCFG_WD_FDC_FORCE_READY \
downcast<wd_fdc_t *>(device)->set_force_ready(true);
+#define MCFG_WD_FDC_INTRQ_CALLBACK(_write) \
+ devcb = &wd_fdc_t::set_intrq_wr_callback(*device, DEVCB2_##_write);
+
+#define MCFG_WD_FDC_DRQ_CALLBACK(_write) \
+ devcb = &wd_fdc_t::set_drq_wr_callback(*device, DEVCB2_##_write);
+
+#define MCFG_WD_FDC_HLD_CALLBACK(_write) \
+ devcb = &wd_fdc_t::set_hld_wr_callback(*device, DEVCB2_##_write);
+
+#define MCFG_WD_FDC_ENP_CALLBACK(_write) \
+ devcb = &wd_fdc_t::set_enp_wr_callback(*device, DEVCB2_##_write);
+
class wd_fdc_t : public device_t {
public:
- typedef delegate<void (bool state)> line_cb;
-
wd_fdc_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
+ template<class _Object> static devcb2_base &set_intrq_wr_callback(device_t &device, _Object object) { return downcast<wd_fdc_t &>(device).intrq_cb.set_callback(object); }
+ template<class _Object> static devcb2_base &set_drq_wr_callback(device_t &device, _Object object) { return downcast<wd_fdc_t &>(device).drq_cb.set_callback(object); }
+ template<class _Object> static devcb2_base &set_hld_wr_callback(device_t &device, _Object object) { return downcast<wd_fdc_t &>(device).hld_cb.set_callback(object); }
+ template<class _Object> static devcb2_base &set_enp_wr_callback(device_t &device, _Object object) { return downcast<wd_fdc_t &>(device).enp_cb.set_callback(object); }
+
void soft_reset();
void dden_w(bool dden);
void set_floppy(floppy_image_device *floppy);
- void setup_intrq_cb(line_cb cb);
- void setup_drq_cb(line_cb cb);
- void setup_hld_cb(line_cb cb);
- void setup_enp_cb(line_cb cb);
void set_force_ready(bool force_ready);
void cmd_w(UINT8 val);
@@ -352,7 +363,8 @@ private:
int cmd_buffer, track_buffer, sector_buffer;
live_info cur_live, checkpoint_live;
- line_cb intrq_cb, drq_cb, hld_cb, enp_cb;
+
+ devcb2_write_line intrq_cb, drq_cb, hld_cb, enp_cb;
UINT8 format_last_byte;
int format_last_byte_count;