blob: a6e8ccdb0ad7bf5e5522e38dc4faf606b9288c63 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
// license:BSD-3-Clause
// copyright-holders:cam900
/***************************************************************************
Alpha denshi ALPHA-8921 emulation
***************************************************************************/
#ifndef MAME_MACHINE_ALPHA_8921_H
#define MAME_MACHINE_ALPHA_8921_H
#pragma once
// ======================> alpha_8921_device
class alpha_8921_device : public device_t
{
public:
// construction/destruction
alpha_8921_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inputs
DECLARE_WRITE_LINE_MEMBER(clk_w);
DECLARE_WRITE_LINE_MEMBER(load_w);
DECLARE_WRITE_LINE_MEMBER(even_w);
DECLARE_WRITE_LINE_MEMBER(h_w);
void c_w(u32 data);
// outputs
u8 gad_r();
u8 gbd_r();
DECLARE_READ_LINE_MEMBER(dota_r);
DECLARE_READ_LINE_MEMBER(dotb_r);
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
private:
// inputs
bool m_clk = false; // CLK pin
bool m_load = false; // LOAD pin
bool m_even = false; // EVEN pin
bool m_h = false; // H pin
u32 m_c = 0; // C data (32 bit)
// outputs
u8 m_gad = 0; // GAD data (4 bit)
u8 m_gbd = 0; // GBD data (4 bit)
bool m_dota = false; // DOTA pin
bool m_dotb = false; // DOTB pin
// internal status
u32 m_sr = 0;
u32 m_old_sr = ~0;
bool m_old_even = true;
bool m_old_h = true;
void update_output();
};
// device type definition
DECLARE_DEVICE_TYPE(ALPHA_8921, alpha_8921_device)
#endif // MAME_MACHINE_ALPHA_8921_H
|