1 // license:GPL-2.0+ 2 // copyright-holders:Dirk Best 3 /********************************************************************** 4 5 EPSON TF-20 6 7 Dual 5.25" floppy drive with HX-20 factory option 8 9 **********************************************************************/ 10 11 #ifndef MAME_BUS_EPSON_SIO_TF20_H 12 #define MAME_BUS_EPSON_SIO_TF20_H 13 14 #pragma once 15 16 #include "epson_sio.h" 17 #include "cpu/z80/z80.h" 18 #include "imagedev/floppy.h" 19 #include "machine/ram.h" 20 #include "machine/upd765.h" 21 #include "machine/z80sio.h" 22 23 24 //************************************************************************** 25 // TYPE DEFINITIONS 26 //************************************************************************** 27 28 class epson_tf20_device : public device_t, 29 public device_epson_sio_interface 30 { 31 public: 32 // construction/destruction 33 epson_tf20_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 34 35 protected: 36 // device-level overrides 37 virtual void device_start() override; 38 virtual void device_reset() override; 39 virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; 40 41 // optional information overrides 42 virtual const tiny_rom_entry *device_rom_region() const override; 43 virtual void device_add_mconfig(machine_config &config) override; 44 virtual ioport_constructor device_input_ports() const override; 45 46 // device_epson_sio_interface overrides 47 virtual void tx_w(int level) override; 48 virtual void pout_w(int level) override; 49 50 private: 51 IRQ_CALLBACK_MEMBER( irq_callback ); 52 DECLARE_WRITE_LINE_MEMBER( txda_w ); 53 DECLARE_WRITE_LINE_MEMBER( dtra_w ); 54 55 // from sio output 56 DECLARE_WRITE_LINE_MEMBER( rxc_w ); 57 DECLARE_WRITE_LINE_MEMBER( pinc_w ); 58 59 uint8_t rom_disable_r(); 60 uint8_t upd765_tc_r(); 61 void fdc_control_w(uint8_t data); 62 63 void cpu_io(address_map &map); 64 void cpu_mem(address_map &map); 65 66 required_device<cpu_device> m_cpu; 67 required_device<ram_device> m_ram; 68 required_device<upd765a_device> m_fdc; 69 required_device<upd7201_device> m_mpsc; 70 required_device<epson_sio_device> m_sio_output; 71 required_device_array<floppy_connector, 2> m_fd; 72 73 emu_timer *m_timer_serial; 74 emu_timer *m_timer_tc; 75 76 int m_rxc; 77 int m_txda; 78 int m_dtra; 79 int m_pinc; 80 81 epson_sio_device *m_sio_input; 82 83 static constexpr XTAL XTAL_CR1 = XTAL(8'000'000); 84 static constexpr XTAL XTAL_CR2 = XTAL(4'915'200); 85 }; 86 87 88 // device type definition 89 DECLARE_DEVICE_TYPE(EPSON_TF20, epson_tf20_device) 90 91 92 #endif // MAME_BUS_EPSON_SIO_TF20_H 93