summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/audio/segam1audio.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/audio/segam1audio.h')
-rw-r--r--src/mame/audio/segam1audio.h49
1 files changed, 25 insertions, 24 deletions
diff --git a/src/mame/audio/segam1audio.h b/src/mame/audio/segam1audio.h
index 6298ad7440f..61421bfb62d 100644
--- a/src/mame/audio/segam1audio.h
+++ b/src/mame/audio/segam1audio.h
@@ -6,6 +6,7 @@
#define __SEGAM1AUDIO_H__
#include "cpu/m68000/m68000.h"
+#include "machine/i8251.h"
#include "sound/2612intf.h"
#include "sound/multipcm.h"
@@ -13,9 +14,14 @@
#define M1AUDIO_MPCM1_REGION "m1pcm1"
#define M1AUDIO_MPCM2_REGION "m1pcm2"
+#define M1AUDIO_TXRX_CLOCK 100000 // unknown
+
#define MCFG_SEGAM1AUDIO_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, SEGAM1AUDIO, 0)
+#define MCFG_SEGAM1AUDIO_RXD_HANDLER(_devcb) \
+ devcb = &segam1audio_device::set_rxd_handler(*device, DEVCB_##_devcb);
+
//**************************************************************************
// TYPE DEFINITIONS
@@ -24,38 +30,33 @@
class segam1audio_device : public device_t
{
public:
- // construction/destruction
- segam1audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ segam1audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // optional information overrides
- virtual machine_config_constructor device_mconfig_additions() const override;
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
- required_device<cpu_device> m_audiocpu;
- required_device<multipcm_device> m_multipcm_1;
- required_device<multipcm_device> m_multipcm_2;
- required_device<ym3438_device> m_ym;
+ template<class _Object> static devcb_base &set_rxd_handler(device_t &device, _Object &&object) { return downcast<segam1audio_device &>(device).m_rxd_handler.set_callback(std::forward<_Object>(object)); }
- DECLARE_READ16_MEMBER(m1_snd_68k_latch_r);
- DECLARE_READ16_MEMBER(m1_snd_v60_ready_r);
- DECLARE_WRITE16_MEMBER(m1_snd_mpcm_bnk1_w);
- DECLARE_WRITE16_MEMBER(m1_snd_mpcm_bnk2_w);
- DECLARE_WRITE16_MEMBER(m1_snd_68k_latch1_w);
- DECLARE_WRITE16_MEMBER(m1_snd_68k_latch2_w);
- DECLARE_READ16_MEMBER(ready_r);
+ DECLARE_WRITE16_MEMBER(m1_snd_mpcm_bnk1_w);
+ DECLARE_WRITE16_MEMBER(m1_snd_mpcm_bnk2_w);
- void check_fifo_irq();
- void write_fifo(uint8_t data);
+ DECLARE_WRITE_LINE_MEMBER(write_txd);
+ DECLARE_WRITE_LINE_MEMBER(output_txd);
protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
private:
- int m_to_68k[8];
- int m_fifo_rptr;
- int m_fifo_wptr;
- devcb_write_line m_main_irq_cb;
+ required_device<cpu_device> m_audiocpu;
+ required_device<multipcm_device> m_multipcm_1;
+ required_device<multipcm_device> m_multipcm_2;
+ required_device<ym3438_device> m_ym;
+ required_device<i8251_device> m_uart;
+
+ devcb_write_line m_rxd_handler;
};