-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.h
281 lines (272 loc) · 4.89 KB
/
setup.h
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
#ifndef _8085_CPU_H_
#define _8085_CPU_H_
#include <cstdint>
#include<iostream>
#include<queue>
#include<vector>
using namespace std;
#include "memory.h"
class CPU{
public:
uint8_t A, B, C, D, E, H, L,F;
uint16_t PC, SP;
bool sign, zero, aux_carry, parity, carry;
memory obj;
uint16_t end;
queue<uint16_t> bp;
CPU(vector<string> s,uint16_t start)
{
obj.x=start;
obj.fins(s);
end=obj.x;
A=0;
B=0;
C=0;
D=0;
E=0;
H=0;
L=0;
F=0;
PC=start;
SP=0;
sign=false;
zero=false;
aux_carry=false;
carry=false;
parity=false;
}
// Flags
// Execute the next instruction
bool parity_check(uint8_t);
void add_req(uint8_t*,uint16_t);
void sub_req(uint8_t*);
void logic_ana_req();
void logic_xra_req();
void execute();
void initialize_instruction_table();
void debug(uint16_t);
void CPU_state();
void add_c();
void add_a();
void add_d();
void add_b();
void add_e();
void add_h();
void add_l();
void add_m();
void daa();
void dad_b();
void dad_d();
void dad_h();
void dad_sp();
void adc_a();
void adc_b();
void adc_c();
void adc_d();
void adc_e();
void adc_h();
void adc_l();
void adc_m();
void sub_c();
void sub_a();
void sub_d();
void sub_b();
void sub_e();
void sub_h();
void sub_l();
void sub_m();
void sbb_c();
void sbb_a();
void sbb_d();
void sbb_b();
void sbb_e();
void sbb_h();
void sbb_l();
void sbb_m();
void ana_c();
void ana_a();
void ana_d();
void ana_b();
void ana_e();
void ana_h();
void ana_l();
void ana_m();
void xra_c();
void xra_a();
void xra_d();
void xra_b();
void xra_e();
void xra_h();
void xra_l();
void xra_m();
void ora_c();
void ora_a();
void ora_d();
void ora_b();
void ora_e();
void ora_h();
void ora_l();
void ora_m();
void cmp_c();
void cmp_a();
void cmp_d();
void cmp_b();
void cmp_e();
void cmp_h();
void cmp_l();
void cmp_m();
void cma();
void cmc();
void jmp();
void jz();
void jnz();
void jc();
void jnc();
void jm();
void jp();
void adi();
void aci();
void xri();
void ani();
void ori();
void cpi();
void sbi();
void sui();
void mov_ab();
void mov_ac();
void mov_ad();
void mov_ae();
void mov_ah();
void mov_al();
void mov_ba();
void mov_bc();
void mov_bd();
void mov_be();
void mov_bh();
void mov_bl();
void mov_ca();
void mov_cb();
void mov_cd();
void mov_ce();
void mov_ch();
void mov_cl();
void mov_da();
void mov_db();
void mov_dc();
void mov_de();
void mov_dh();
void mov_dl();
void mov_ea();
void mov_eb();
void mov_ec();
void mov_ed();
void mov_eh();
void mov_el();
void mov_ha();
void mov_hb();
void mov_hc();
void mov_hd();
void mov_he();
void mov_hl();
void mov_la();
void mov_lb();
void mov_lc();
void mov_ld();
void mov_le();
void mov_lh();
void mov_am();
void mov_bm();
void mov_cm();
void mov_dm();
void mov_em();
void mov_hm();
void mov_lm();
void mov_ma();
void mov_mb();
void mov_mc();
void mov_md();
void mov_me();
void mov_mh();
void mov_ml();
//immediate
void mvi_a();
void mvi_b();
void mvi_c();
void mvi_d();
void mvi_e();
void mvi_h();
void mvi_l();
void mvi_m();
void lhld();
void shld();
void lda();
void sta();
void lxi_b();
void lxi_d();
void lxi_h();
void lxi_sp();
void ldax_b();
void ldax_d();
void stax_b();
void stax_d();
void xchg();
void inr_b();
void inr_c();
void inr_d();
void inr_e();
void inr_h();
void inr_l();
void inr_m();
void inr_a();
void inx_b();
void inx_d();
void inx_h();
void inx_sp();
void dcr_b();
void dcr_c();
void dcr_d();
void dcr_e();
void dcr_h();
void dcr_l();
void dcr_m();
void dcr_a();
void dcx_b();
void dcx_d();
void dcx_h();
void dcx_sp();
void rlc();
void rrc();
void rar();
void ral();
void subr_init();
void call();
void cc();
void cnc();
void cz();
void cnz();
void cp();
void cm();
void cpe();
void cpo();
void ret();
void rc();
void rnc();
void rz();
void rnz();
void rp();
void rm();
void rpe();
void rpo();
void push_b();
void push_d();
void push_h();
void push_psw();
void pop_b();
void pop_d();
void pop_h();
void pop_psw();
void xthl();
void pchl();
void sphl();
};
#endif /* _8085_CPU_H_ */