-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtypes.cpp
More file actions
127 lines (104 loc) · 1.76 KB
/
Copy pathtypes.cpp
File metadata and controls
127 lines (104 loc) · 1.76 KB
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include "types.h"
/*
Âñïîìîãàòåëüíûå ôóíêöèè
*/
Byte high_byte(Byte_2 target)
{
return (Byte)(target >> 8) & 0xFF;
}
Byte low_byte(Byte_2 target)
{
return (Byte)target;
}
Byte high_nibble(Byte target)
{
return ((target >> 4) & 0xF);
}
Byte low_nibble(Byte target)
{
Byte test = (target & 0xF);
return (target & 0xF);
}
Byte_2 combine(Byte high, Byte low)
{
return (high << 8 | low);
}
bool between(Byte target, int low, int high)
{
return (target >= low && target <= high);
}
Byte set_bit(Byte data, Byte bit)
{
return data | (1 << bit);
}
Byte clear_bit(Byte data, Byte bit)
{
return data & (~(1 << bit));
}
bool is_bit_set(Byte data, Byte bit)
{
return ((data >> bit) & 1) ? true : false;
}
/*
Êëàññ ïîìîùíèê äëÿ ïàðû 8-áèòíûõ çíà÷åíèé
*/
void Pair::inc()
{
Address addr = address() + 1;
set(addr);
}
void Pair::dec()
{
Address addr = address() - 1;
set(addr);
}
void Pair::set(Byte_2 value)
{
high = high_byte(value);
low = low_byte(value);
}
void Pair::set(Byte upper, Byte lower)
{
high = upper;
low = lower;
}
Byte_2 Pair::get()
{
return address();
}
Address Pair::address()
{
return combine(high, low);
}
/*
Êëàññ ïîìîùíèê äëÿ ðåãèñòðà ïàìÿòè
*/
MemoryRegister::MemoryRegister() {}
MemoryRegister::MemoryRegister(Byte* _data)
{
value = _data;
}
Byte MemoryRegister::get()
{
return *value;
}
void MemoryRegister::set(Byte data)
{
*value = data;
}
void MemoryRegister::clear()
{
set(0x00);
}
void MemoryRegister::set_bit(Byte bit)
{
*value |= 1 << bit;
}
void MemoryRegister::clear_bit(Byte bit)
{
*value &= ~(1 << bit);
}
bool MemoryRegister::is_bit_set(Byte bit)
{
return ((*value >> bit) & 1) ? true : false;
}