1 // license:BSD-3-Clause 2 // copyright-holders:Sergey Svishchev 3 #ifndef MAME_MACHINE_IBM6580_FDC_H 4 #define MAME_MACHINE_IBM6580_FDC_H 5 6 #pragma once 7 8 #include "cpu/mcs48/mcs48.h" 9 #include "machine/i8255.h" 10 #include "machine/upd765.h" 11 12 13 class dw_fdc_device : public device_t 14 { 15 public: 16 dw_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 17 out_data_handler()18 auto out_data_handler() { return m_out_data.bind(); } out_clock_handler()19 auto out_clock_handler() { return m_out_clock.bind(); } out_strobe_handler()20 auto out_strobe_handler() { return m_out_strobe.bind(); } 21 22 DECLARE_WRITE_LINE_MEMBER(reset_w); 23 DECLARE_WRITE_LINE_MEMBER(ack_w); 24 25 protected: 26 virtual const tiny_rom_entry *device_rom_region() const override; 27 virtual void device_add_mconfig(machine_config &config) override; 28 29 void device_start() override; 30 void device_reset() override; 31 void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; 32 33 private: 34 uint8_t m_bus, m_t0, m_t1, m_p1, m_p2; 35 emu_timer *m_reset_timer; 36 37 devcb_write_line m_out_data; 38 devcb_write_line m_out_clock; 39 devcb_write_line m_out_strobe; 40 required_device<i8048_device> m_mcu; 41 42 void bus_w(uint8_t data); 43 uint8_t bus_r(); 44 void p1_w(uint8_t data); 45 void p2_w(uint8_t data); 46 uint8_t p2_r(); 47 DECLARE_READ_LINE_MEMBER(t0_r); 48 DECLARE_READ_LINE_MEMBER(t1_r); 49 }; 50 51 DECLARE_DEVICE_TYPE(DW_FDC, dw_fdc_device) 52 53 #endif // MAME_MACHINE_IBM6580_FDC_H 54