blob: 4e7a25e3915cfbd5ce0726c2114f9c58a98c98a4 (
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
// license:BSD-3-Clause
// copyright-holders:Ryan Holtz
/***************************************************************************
am2901b.h
AMD Am2901B / Am2901C
Four-Bit Bipolar Microprocessor Slice
***************************************************************************/
#ifndef MAME_MACHINE_AM2901B_H
#define MAME_MACHINE_AM2901B_H
#pragma once
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
// ======================> am2901b_device
class am2901b_device : public device_t
{
public:
// construction/destruction
am2901b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
auto y() { return m_y.bind(); }
auto g() { return m_g.bind(); }
auto p() { return m_p.bind(); }
auto q0() { return m_q0.bind(); }
auto q3() { return m_q3.bind(); }
auto ram0() { return m_ram0.bind(); }
auto ram3() { return m_ram3.bind(); }
auto ovr() { return m_ovr.bind(); }
auto f0() { return m_f0.bind(); }
auto f3() { return m_f3.bind(); }
void a_w(uint8_t data);
void b_w(uint8_t data);
void d_w(uint8_t data);
void i_w(uint16_t data);
DECLARE_WRITE_LINE_MEMBER(q0_w);
DECLARE_WRITE_LINE_MEMBER(q3_w);
DECLARE_WRITE_LINE_MEMBER(ram0_w);
DECLARE_WRITE_LINE_MEMBER(ram3_w);
DECLARE_WRITE_LINE_MEMBER(ci_w);
DECLARE_WRITE_LINE_MEMBER(cp_w);
private:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
void execute();
void disassemble();
uint8_t m_a[16];
uint8_t m_d;
uint8_t m_q;
uint16_t m_i;
uint8_t m_a_addr;
uint8_t m_b_addr;
uint8_t m_a_latch;
uint8_t m_b_latch;
bool m_q0_in;
bool m_q3_in;
bool m_ram0_in;
bool m_ram3_in;
bool m_ci;
bool m_cp;
uint8_t m_y_out;
bool m_g_out;
bool m_p_out;
bool m_q0_out;
bool m_q3_out;
bool m_ram0_out;
bool m_ram3_out;
bool m_ovr_out;
bool m_f0_out;
bool m_f3_out;
bool m_co_out;
devcb_write8 m_y;
devcb_write_line m_g;
devcb_write_line m_p;
devcb_write_line m_q0;
devcb_write_line m_q3;
devcb_write_line m_ram0;
devcb_write_line m_ram3;
devcb_write_line m_ovr;
devcb_write_line m_f0;
devcb_write_line m_f3;
devcb_write_line m_co;
};
// device type definition
DECLARE_DEVICE_TYPE(AM2901B, am2901b_device)
#endif // MAME_MACHINE_AM2901B_H
|