1 // license:BSD-3-Clause 2 // copyright-holders:Nathan Woods 3 /********************************************************************* 4 5 coco_fdc.h 6 7 CoCo/Dragon Floppy Disk Controller base classes 8 9 *********************************************************************/ 10 11 #ifndef MAME_BUS_COCO_COCO_FDC_H 12 #define MAME_BUS_COCO_COCO_FDC_H 13 14 #include "cococart.h" 15 #include "imagedev/floppy.h" 16 17 18 /*************************************************************************** 19 TYPE DEFINITIONS 20 ***************************************************************************/ 21 22 // ======================> coco_family_fdc_device_base 23 24 class coco_family_fdc_device_base : 25 public device_t, 26 public device_cococart_interface 27 { 28 public: DECLARE_WRITE_LINE_MEMBER(fdc_intrq_w)29 DECLARE_WRITE_LINE_MEMBER(fdc_intrq_w) { m_intrq = state; update_lines(); } DECLARE_WRITE_LINE_MEMBER(fdc_drq_w)30 DECLARE_WRITE_LINE_MEMBER(fdc_drq_w) { m_drq = state; update_lines(); } 31 32 DECLARE_FLOPPY_FORMATS(floppy_formats); 33 34 protected: 35 // construction/destruction coco_family_fdc_device_base(const machine_config & mconfig,device_type type,const char * tag,device_t * owner,u32 clock)36 coco_family_fdc_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock) 37 : device_t(mconfig, type, tag, owner, clock) 38 , device_cococart_interface(mconfig, *this) 39 { 40 }; 41 42 // device-level overrides 43 virtual void device_start() override; 44 virtual void device_reset() override; 45 46 // FDC overrides 47 virtual void update_lines() = 0; 48 virtual u8 *get_cart_base() override; 49 virtual memory_region *get_cart_memregion() override; 50 51 // accessors dskreg()52 u8 dskreg() const { return m_dskreg; } intrq()53 bool intrq() const { return m_intrq; } drq()54 bool drq() const { return m_drq; } set_dskreg(u8 data)55 void set_dskreg(u8 data) { m_dskreg = data; } 56 57 private: 58 // registers 59 u8 m_dskreg; 60 bool m_intrq; 61 bool m_drq; 62 }; 63 64 // device type definitions - CoCo FDC 65 DECLARE_DEVICE_TYPE(COCO_FDC, coco_family_fdc_device_base) 66 DECLARE_DEVICE_TYPE(COCO_FDC_V11, coco_family_fdc_device_base) 67 DECLARE_DEVICE_TYPE(COCO3_HDB1, coco_family_fdc_device_base) 68 DECLARE_DEVICE_TYPE(COCO2_HDB1, coco_family_fdc_device_base) 69 DECLARE_DEVICE_TYPE(CP450_FDC, coco_family_fdc_device_base) 70 DECLARE_DEVICE_TYPE(CD6809_FDC, coco_family_fdc_device_base) 71 72 #endif // MAME_BUS_COCO_COCO_FDC_H 73