1 // license:BSD-3-Clause
2 // copyright-holders:AJR
3 /***************************************************************************
4 
5     Roland MB63H149 gate array
6 
7 ***************************************************************************/
8 
9 #ifndef MAME_MACHINE_MB63H149_H
10 #define MAME_MACHINE_MB63H149_H
11 
12 #pragma once
13 
14 //**************************************************************************
15 //  TYPE DEFINITIONS
16 //**************************************************************************
17 
18 // ======================> mb63h149_device
19 
20 class mb63h149_device : public device_t
21 {
22 public:
23 	// device type constructor
24 	mb63h149_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
25 
26 	// configuration
int_callback()27 	auto int_callback() { return m_int_callback.bind(); }
28 
29 	// CPU read/write handlers
30 	u8 read(offs_t offset);
31 	void write(offs_t offset, u8 data);
32 
33 protected:
34 	mb63h149_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
35 
36 	// device-specific overrides
37 	virtual void device_resolve_objects() override;
38 	virtual void device_start() override;
39 	virtual void device_reset() override;
40 
41 private:
42 	// callback objects
43 	devcb_write_line m_int_callback;
44 };
45 
46 // ======================> mb63h130_device
47 
48 class mb63h130_device : public mb63h149_device
49 {
50 public:
51 	// device type constructor
52 	mb63h130_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
53 };
54 
55 
56 // device type declarations
57 DECLARE_DEVICE_TYPE(MB63H149, mb63h149_device)
58 DECLARE_DEVICE_TYPE(MB63H130, mb63h130_device)
59 
60 #endif // MAME_MACHINE_MB63H149_H
61