1 // license:BSD-3-Clause 2 // copyright-holders:Fabio Priuli 3 #ifndef MAME_BUS_SPC1000_FDD_H 4 #define MAME_BUS_SPC1000_FDD_H 5 6 #pragma once 7 8 #include "exp.h" 9 #include "cpu/z80/z80.h" 10 #include "imagedev/floppy.h" 11 #include "machine/i8255.h" 12 #include "machine/upd765.h" 13 14 //************************************************************************** 15 // TYPE DEFINITIONS 16 //************************************************************************** 17 18 // ======================> spc1000_fdd_exp_device 19 20 class spc1000_fdd_exp_device : public device_t, public device_spc1000_card_interface 21 { 22 public: 23 // construction/destruction 24 spc1000_fdd_exp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 25 26 protected: 27 // device-level overrides 28 virtual void device_start() override; 29 virtual void device_reset() override; 30 virtual void device_add_mconfig(machine_config &config) override; 31 virtual const tiny_rom_entry *device_rom_region() const override; 32 virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; 33 34 virtual uint8_t read(offs_t offset) override; 35 virtual void write(offs_t offset, uint8_t data) override; 36 37 private: 38 static constexpr device_timer_id TIMER_TC = 0; 39 40 // internal state 41 required_device<z80_device> m_cpu; 42 required_device<upd765a_device> m_fdc; 43 required_device<i8255_device> m_ppi; 44 45 floppy_image_device *m_fd0; 46 floppy_image_device *m_fd1; 47 48 emu_timer *m_timer_tc; 49 50 uint8_t m_i8255_0_pc; 51 uint8_t m_i8255_1_pc; 52 uint8_t m_i8255_portb; 53 54 void i8255_b_w(uint8_t data); 55 uint8_t i8255_c_r(); 56 void i8255_c_w(uint8_t data); 57 58 uint8_t tc_r(); 59 void control_w(uint8_t data); 60 61 void sd725_io(address_map &map); 62 void sd725_mem(address_map &map); 63 }; 64 65 66 // device type definition 67 DECLARE_DEVICE_TYPE(SPC1000_FDD_EXP, spc1000_fdd_exp_device) 68 69 #endif // MAME_BUS_SPC1000_FDD_H 70