1 // license:BSD-3-Clause 2 // copyright-holders:Barry Rodewald 3 /* 4 * symbfac2.h 5 * 6 * Created on: 2/08/2014 7 */ 8 9 #ifndef MAME_BUS_CPC_SYMBFAC2_H 10 #define MAME_BUS_CPC_SYMBFAC2_H 11 12 #pragma once 13 14 #include "cpcexp.h" 15 #include "bus/ata/ataintf.h" 16 #include "machine/ds128x.h" 17 #include "machine/nvram.h" 18 19 class cpc_symbiface2_device : public device_t, 20 public device_cpc_expansion_card_interface 21 { 22 public: 23 // construction/destruction 24 cpc_symbiface2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 25 26 uint8_t ide_cs0_r(offs_t offset); 27 void ide_cs0_w(offs_t offset, uint8_t data); 28 uint8_t ide_cs1_r(offs_t offset); 29 void ide_cs1_w(offs_t offset, uint8_t data); 30 uint8_t rtc_r(offs_t offset); 31 void rtc_w(offs_t offset, uint8_t data); 32 uint8_t mouse_r(); 33 uint8_t rom_rewrite_r(); 34 void rom_rewrite_w(uint8_t data); 35 DECLARE_INPUT_CHANGED_MEMBER(mouse_change_x); 36 DECLARE_INPUT_CHANGED_MEMBER(mouse_change_y); 37 DECLARE_INPUT_CHANGED_MEMBER(mouse_change_buttons); 38 39 enum 40 { 41 PS2_MOUSE_IDLE = 0, 42 PS2_MOUSE_X, 43 PS2_MOUSE_Y, 44 PS2_MOUSE_BUTTONS, 45 PS2_MOUSE_SCROLL 46 }; 47 48 protected: 49 // device-level overrides 50 virtual void device_start() override; 51 virtual void device_reset() override; 52 53 // optional information overrides 54 virtual void device_add_mconfig(machine_config &config) override; 55 virtual ioport_constructor device_input_ports() const override; 56 57 private: 58 cpc_expansion_slot_device *m_slot; 59 required_device<ata_interface_device> m_ide; 60 required_device<ds12885_device> m_rtc; 61 required_device<nvram_device> m_nvram; 62 63 required_ioport m_mouse_x; 64 required_ioport m_mouse_y; 65 required_ioport m_mouse_buttons; 66 67 std::vector<uint8_t> m_rom_space; 68 69 bool m_iohigh; 70 uint16_t m_ide_data; 71 72 uint8_t m_mouse_state; 73 uint8_t m_input_x; 74 uint8_t m_input_y; 75 76 // stores backup pointers so that mapping can be restored 77 uint8_t* m_4xxx_ptr_r; 78 uint8_t* m_4xxx_ptr_w; 79 uint8_t* m_6xxx_ptr_r; 80 uint8_t* m_6xxx_ptr_w; 81 }; 82 83 // device type definition 84 DECLARE_DEVICE_TYPE(CPC_SYMBIFACE2, cpc_symbiface2_device) 85 86 87 #endif // MAME_BUS_CPC_SYMBFAC2_H 88