diff options
Diffstat (limited to 'src/emu/bus/ieee488/c8050fdc.h')
-rw-r--r-- | src/emu/bus/ieee488/c8050fdc.h | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/emu/bus/ieee488/c8050fdc.h b/src/emu/bus/ieee488/c8050fdc.h index 15b51a88088..7d72bdfafe8 100644 --- a/src/emu/bus/ieee488/c8050fdc.h +++ b/src/emu/bus/ieee488/c8050fdc.h @@ -32,9 +32,15 @@ #define MCFG_C8050_READY_CALLBACK(_write) \ devcb = &c8050_fdc_t::set_ready_wr_callback(*device, DEVCB_##_write); +#define MCFG_C8050_BRDY_CALLBACK(_write) \ + devcb = &c8050_fdc_t::set_brdy_wr_callback(*device, DEVCB_##_write); + #define MCFG_C8050_ERROR_CALLBACK(_write) \ devcb = &c8050_fdc_t::set_error_wr_callback(*device, DEVCB_##_write); +#define MCFG_C8050_WPS_CALLBACK(_write) \ + devcb = &c8050_fdc_t::set_wps_wr_callback(*device, DEVCB_##_write); + //************************************************************************** @@ -51,11 +57,15 @@ public: template<class _Object> static devcb_base &set_sync_wr_callback(device_t &device, _Object object) { return downcast<c8050_fdc_t &>(device).m_write_sync.set_callback(object); } template<class _Object> static devcb_base &set_ready_wr_callback(device_t &device, _Object object) { return downcast<c8050_fdc_t &>(device).m_write_ready.set_callback(object); } + template<class _Object> static devcb_base &set_brdy_wr_callback(device_t &device, _Object object) { return downcast<c8050_fdc_t &>(device).m_write_brdy.set_callback(object); } template<class _Object> static devcb_base &set_error_wr_callback(device_t &device, _Object object) { return downcast<c8050_fdc_t &>(device).m_write_error.set_callback(object); } + template<class _Object> static devcb_base &set_wps_wr_callback(device_t &device, _Object object) { return downcast<c8050_fdc_t &>(device).m_write_wps.set_callback(object); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); + DECLARE_WRITE_LINE_MEMBER( ds0_w ); + DECLARE_WRITE_LINE_MEMBER( ds1_w ); DECLARE_WRITE_LINE_MEMBER( drv_sel_w ); DECLARE_WRITE_LINE_MEMBER( mode_sel_w ); DECLARE_WRITE_LINE_MEMBER( rw_sel_w ); @@ -64,13 +74,13 @@ public: DECLARE_WRITE_LINE_MEMBER( odd_hd_w ); DECLARE_WRITE_LINE_MEMBER( pull_sync_w ); - DECLARE_READ_LINE_MEMBER( wps_r ) { return checkpoint_live.drv_sel ? m_floppy1->wpt_r() : m_floppy0->wpt_r(); } - void stp0_w(int stp); void stp1_w(int stp); void ds_w(int ds); void set_floppy(floppy_image_device *floppy0, floppy_image_device *floppy1); + void wps0_w(floppy_image_device *floppy, int state); + void wps1_w(floppy_image_device *floppy, int state); protected: // device-level overrides @@ -82,6 +92,7 @@ protected: virtual const rom_entry *device_rom_region() const; void stp_w(floppy_image_device *floppy, int mtr, int &old_stp, int stp); + void update_wps(); enum { IDLE, @@ -94,6 +105,7 @@ protected: int state, next_state; int sync; int ready; + int brdy; int error; int ds; int drv_sel; @@ -111,11 +123,14 @@ protected: UINT8 pi; UINT16 shift_reg_write; + int wps; }; devcb_write_line m_write_sync; devcb_write_line m_write_ready; + devcb_write_line m_write_brdy; devcb_write_line m_write_error; + devcb_write_line m_write_wps; required_memory_region m_gcr_rom; @@ -127,11 +142,16 @@ protected: int m_stp0; int m_stp1; int m_ds; + int m_ds0; + int m_ds1; int m_drv_sel; int m_mode_sel; int m_rw_sel; int m_odd_hd; UINT8 m_pi; + int m_wps; + int m_wps0; + int m_wps1; live_info cur_live, checkpoint_live; fdc_pll_t cur_pll, checkpoint_pll; |