1 // license:GPL-2.0+ 2 // copyright-holders:Dirk Best 3 /*************************************************************************** 4 5 EACA Colour Genie Floppy Controller Cartridge 6 7 ***************************************************************************/ 8 9 #ifndef MAME_BUS_CGENIE_EXPANSION_FLOPPY_H 10 #define MAME_BUS_CGENIE_EXPANSION_FLOPPY_H 11 12 #pragma once 13 14 #include "expansion.h" 15 #include "imagedev/floppy.h" 16 #include "machine/timer.h" 17 #include "machine/wd_fdc.h" 18 #include "bus/generic/slot.h" 19 20 21 //************************************************************************** 22 // TYPE DEFINITIONS 23 //************************************************************************** 24 25 // ======================> floppy_controller_device 26 27 class cgenie_fdc_device : public device_t, public device_cg_exp_interface 28 { 29 public: 30 // construction/destruction 31 cgenie_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 32 33 protected: 34 virtual const tiny_rom_entry *device_rom_region() const override; 35 virtual void device_add_mconfig(machine_config &config) override; 36 virtual void device_start() override; 37 virtual void device_reset() override; 38 39 private: 40 DECLARE_DEVICE_IMAGE_LOAD_MEMBER(socket_load); 41 42 DECLARE_WRITE_LINE_MEMBER(intrq_w); 43 44 TIMER_DEVICE_CALLBACK_MEMBER(timer_callback); 45 46 uint8_t irq_r(); 47 void select_w(uint8_t data); 48 void command_w(uint8_t data); 49 50 void mmio(address_map &map); 51 52 DECLARE_FLOPPY_FORMATS(floppy_formats); 53 54 required_device<wd2793_device> m_fdc; 55 required_device<floppy_connector> m_floppy0; 56 required_device<floppy_connector> m_floppy1; 57 required_device<floppy_connector> m_floppy2; 58 required_device<floppy_connector> m_floppy3; 59 required_device<generic_slot_device> m_socket; 60 61 enum 62 { 63 IRQ_WDC = 0x40, 64 IRQ_TIMER = 0x80 65 }; 66 67 floppy_image_device *m_floppy; 68 69 uint8_t m_irq_status; 70 }; 71 72 // device type definition 73 DECLARE_DEVICE_TYPE(CGENIE_FDC, cgenie_fdc_device) 74 75 #endif // MAME_BUS_CGENIE_EXPANSION_FLOPPY_H 76