1 // license:BSD-3-Clause 2 // copyright-holders:R. Belmont 3 #ifndef MAME_AUDIO_DECOBSMT_H 4 #define MAME_AUDIO_DECOBSMT_H 5 6 #pragma once 7 8 #include "cpu/m6809/m6809.h" 9 #include "sound/bsmt2000.h" 10 11 #define DECOBSMT_TAG "decobsmt" 12 13 14 //************************************************************************** 15 // TYPE DEFINITIONS 16 //************************************************************************** 17 18 class decobsmt_device : public device_t 19 { 20 public: 21 // construction/destruction 22 decobsmt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 23 24 void bsmt_reset_w(u8 data); 25 u8 bsmt_status_r(); 26 void bsmt0_w(u8 data); 27 void bsmt1_w(offs_t offset, u8 data); 28 u8 bsmt_comms_r(); 29 void bsmt_comms_w(u8 data); 30 31 DECLARE_WRITE_LINE_MEMBER(bsmt_reset_line); 32 33 void bsmt_map(address_map &map); 34 void decobsmt_map(address_map &map); 35 protected: 36 // device-level overrides 37 virtual void device_start() override; 38 virtual void device_reset() override; 39 virtual void device_add_mconfig(machine_config &config) override; 40 41 private: 42 required_device<cpu_device> m_ourcpu; 43 required_device<bsmt2000_device> m_bsmt; 44 45 uint8_t m_bsmt_latch; 46 uint8_t m_bsmt_reset; 47 uint8_t m_bsmt_comms; 48 49 INTERRUPT_GEN_MEMBER(decobsmt_firq_interrupt); 50 51 void bsmt_ready_callback(); 52 }; 53 54 55 // device type definition 56 DECLARE_DEVICE_TYPE(DECOBSMT, decobsmt_device) 57 58 #endif // MAME_AUDIO_DECOBSMT_H 59