1 // license:BSD-3-Clause 2 // copyright-holders:Nigel Barnes 3 /********************************************************************** 4 5 Acorn SCSI Host Adaptor 6 7 **********************************************************************/ 8 9 10 #ifndef MAME_BUS_BBC_1MHZBUS_SCSI_H 11 #define MAME_BUS_BBC_1MHZBUS_SCSI_H 12 13 #include "1mhzbus.h" 14 #include "machine/nscsi_cb.h" 15 16 17 //************************************************************************** 18 // TYPE DEFINITIONS 19 //************************************************************************** 20 21 class bbc_scsi_device: 22 public device_t, 23 public device_bbc_1mhzbus_interface 24 { 25 public: 26 // construction/destruction 27 bbc_scsi_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock); 28 29 DECLARE_WRITE_LINE_MEMBER(bsy_w); 30 DECLARE_WRITE_LINE_MEMBER(req_w); 31 32 protected: 33 bbc_scsi_device(const machine_config& mconfig, device_type type, const char* tag, device_t* owner, uint32_t clock); 34 35 // device-level overrides 36 virtual void device_start() override; 37 38 // optional information overrides 39 virtual void device_add_mconfig(machine_config& config) override; 40 41 virtual uint8_t fred_r(offs_t offset) override; 42 virtual void fred_w(offs_t offset, uint8_t data) override; 43 44 private: 45 required_device<nscsi_callback_device> m_scsi; 46 47 int m_irq_enable; 48 int m_irq_state; 49 }; 50 51 52 // ======================> bbc_awhd_device 53 54 class bbc_awhd_device : public bbc_scsi_device 55 { 56 public: imperfect_features()57 static constexpr feature_type imperfect_features() { return feature::DISK; } 58 59 // construction/destruction 60 bbc_awhd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 61 62 protected: 63 // optional information overrides 64 virtual void device_add_mconfig(machine_config &config) override; 65 66 virtual uint8_t fred_r(offs_t offset) override; 67 virtual void fred_w(offs_t offset, uint8_t data) override; 68 virtual uint8_t jim_r(offs_t offset) override; 69 virtual void jim_w(offs_t offset, uint8_t data) override; 70 71 private: 72 required_device<bbc_1mhzbus_slot_device> m_1mhzbus; 73 }; 74 75 76 // device type definition 77 DECLARE_DEVICE_TYPE(BBC_SCSI, bbc_scsi_device); 78 DECLARE_DEVICE_TYPE(BBC_AWHD, bbc_awhd_device); 79 80 81 #endif /* MAME_BUS_BBC_1MHZBUS_SCSI_H */ 82