fork of PCE focusing on macplus, supporting DaynaPort SCSI network emulation
1/*****************************************************************************
2 * pce *
3 *****************************************************************************/
4
5/*****************************************************************************
6 * File name: src/cpu/e8080/op_fd.c *
7 * Created: 2012-12-11 by Hampa Hug <hampa@hampa.ch> *
8 * Copyright: (C) 2012-2024 Hampa Hug <hampa@hampa.ch> *
9 *****************************************************************************/
10
11/*****************************************************************************
12 * This program is free software. You can redistribute it and / or modify it *
13 * under the terms of the GNU General Public License version 2 as published *
14 * by the Free Software Foundation. *
15 * *
16 * This program is distributed in the hope that it will be useful, but *
17 * WITHOUT ANY WARRANTY, without even the implied warranty of *
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General *
19 * Public License for more details. *
20 *****************************************************************************/
21
22
23#include "e8080.h"
24#include "internal.h"
25
26#include <stdlib.h>
27#include <stdio.h>
28
29
30#define op_fd_cb z80_op_fd_cb
31
32
33static void op_fd_ud (e8080_t *c)
34{
35 if (e8080_hook_undefined (c)) {
36 return;
37 }
38
39 e8080_set_clk (c, 1, 4);
40}
41
42static void op_noni (e8080_t *c)
43{
44 e8080_set_clk (c, 1, 4);
45}
46
47/* OP FD 09: ADD IY, BC */
48static void op_fd_09 (e8080_t *c)
49{
50 unsigned long d, s1, s2;
51
52 s1 = e8080_get_iy (c);
53 s2 = e8080_get_bc (c);
54 d = s1 + s2;
55 e8080_set_iy (c, d);
56 z80_set_psw_add16 (c, d, s1, s2);
57 e8080_set_clk (c, 2, 15);
58}
59
60/* OP FD 19: ADD IY, DE */
61static void op_fd_19 (e8080_t *c)
62{
63 unsigned long d, s1, s2;
64
65 s1 = e8080_get_iy (c);
66 s2 = e8080_get_de (c);
67 d = s1 + s2;
68 e8080_set_iy (c, d);
69 z80_set_psw_add16 (c, d, s1, s2);
70 e8080_set_clk (c, 2, 15);
71}
72
73/* OP FD 21: LD IY, nnnn */
74static void op_fd_21 (e8080_t *c)
75{
76 e8080_get_inst23 (c);
77 e8080_set_iy (c, e8080_uint16 (c->inst[2], c->inst[3]));
78 e8080_set_clk (c, 4, 14);
79}
80
81/* OP FD 22: LD (nnnn), IY */
82static void op_fd_22 (e8080_t *c)
83{
84 unsigned adr;
85
86 e8080_get_inst23 (c);
87 adr = e8080_uint16 (c->inst[2], c->inst[3]);
88 e8080_set_mem16 (c, adr, e8080_get_iy (c));
89 e8080_set_clk (c, 4, 20);
90}
91
92/* OP FD 23: INC IY */
93static void op_fd_23 (e8080_t *c)
94{
95 e8080_set_iy (c, e8080_get_iy (c) + 1);
96 e8080_set_clk (c, 2, 10);
97}
98
99/* OP FD 24: INC IYH */
100static void op_fd_24 (e8080_t *c)
101{
102 unsigned s;
103
104 s = e8080_get_iyh (c);
105 z80_set_psw_inc (c, s & 0xff);
106 e8080_set_iyh (c, s + 1);
107 e8080_set_clk (c, 2, 8);
108}
109
110/* OP FD 25: DEC I&H */
111static void op_fd_25 (e8080_t *c)
112{
113 unsigned s;
114
115 s = e8080_get_iyh (c);
116 z80_set_psw_dec (c, s & 0xff);
117 e8080_set_iyh (c, s - 1);
118 e8080_set_clk (c, 2, 8);
119}
120
121/* OP FD 26: LD IYH, nn */
122static void op_fd_26 (e8080_t *c)
123{
124 e8080_get_inst2 (c);
125 e8080_set_iyh (c, c->inst[2]);
126 e8080_set_clk (c, 3, 11);
127}
128
129/* OP FD 29: ADD IY, IY */
130static void op_fd_29 (e8080_t *c)
131{
132 unsigned long d, s;
133
134 s = e8080_get_iy (c);
135 d = s + s;
136 e8080_set_iy (c, d);
137 z80_set_psw_add16 (c, d, s, s);
138 e8080_set_clk (c, 2, 15);
139}
140
141/* OP FD 2A: LD IY, (nnnn) */
142static void op_fd_2a (e8080_t *c)
143{
144 unsigned short s, p;
145
146 e8080_get_inst23 (c);
147 p = e8080_uint16 (c->inst[2], c->inst[3]);
148 s = e8080_get_mem16 (c, p);
149 e8080_set_iy (c, s);
150 e8080_set_clk (c, 4, 20);
151}
152
153/* OP FD 2B: DEC IY */
154static void op_fd_2b (e8080_t *c)
155{
156 e8080_set_iy (c, e8080_get_iy (c) - 1);
157 e8080_set_clk (c, 2, 10);
158}
159
160/* OP FD 2C: INC IYL */
161static void op_fd_2c (e8080_t *c)
162{
163 unsigned s;
164
165 s = e8080_get_iyl (c);
166 z80_set_psw_inc (c, s & 0xff);
167 e8080_set_iyl (c, s + 1);
168 e8080_set_clk (c, 2, 8);
169}
170
171/* OP FD 2D: DEC IYL */
172static void op_fd_2d (e8080_t *c)
173{
174 unsigned s;
175
176 s = e8080_get_iyl (c);
177 z80_set_psw_dec (c, s & 0xff);
178 e8080_set_iyl (c, s - 1);
179 e8080_set_clk (c, 2, 8);
180}
181
182/* OP FD 2E: LD IYL, nn */
183static void op_fd_2e (e8080_t *c)
184{
185 e8080_get_inst2 (c);
186 e8080_set_iyl (c, c->inst[2]);
187 e8080_set_clk (c, 3, 11);
188}
189
190/* OP FD 34: INC (IY+d) */
191static void op_fd_34 (e8080_t *c)
192{
193 unsigned char s;
194 unsigned short p;
195
196 e8080_get_inst2 (c);
197
198 p = e8080_get_iyd (c, 2);
199 s = e8080_get_mem8 (c, p);
200 e8080_set_mem8 (c, p, s + 1);
201 z80_set_psw_inc (c, s);
202 e8080_set_clk (c, 3, 23);
203}
204
205/* OP FD 35: DEC (IY+d) */
206static void op_fd_35 (e8080_t *c)
207{
208 unsigned char s;
209 unsigned short p;
210
211 e8080_get_inst2 (c);
212 p = e8080_get_iyd (c, 2);
213 s = e8080_get_mem8 (c, p);
214 e8080_set_mem8 (c, p, s - 1);
215 z80_set_psw_dec (c, s);
216 e8080_set_clk (c, 3, 23);
217}
218
219/* OP FD 36: LD (IY+d), nn */
220static void op_fd_36 (e8080_t *c)
221{
222 unsigned short p;
223
224 e8080_get_inst23 (c);
225 p = e8080_get_iyd (c, 2);
226 e8080_set_mem8 (c, p, c->inst[3]);
227 e8080_set_clk (c, 4, 19);
228}
229
230/* OP FD 39: ADD IY, SP */
231static void op_fd_39 (e8080_t *c)
232{
233 unsigned long d, s1, s2;
234
235 s1 = e8080_get_iy (c);
236 s2 = e8080_get_sp (c);
237 d = s1 + s2;
238 e8080_set_iy (c, d);
239 z80_set_psw_add16 (c, d, s1, s2);
240 e8080_set_clk (c, 2, 15);
241}
242
243/* OP FD 44: LD r, IYH */
244static void op_fd_44 (e8080_t *c)
245{
246 e8080_set_reg8 (c, c->inst[1] >> 3, e8080_get_iyh (c));
247 e8080_set_clk (c, 2, 8);
248}
249
250/* OP FD 45: LD r, IYL */
251static void op_fd_45 (e8080_t *c)
252{
253 e8080_set_reg8 (c, c->inst[1] >> 3, e8080_get_iyl (c));
254 e8080_set_clk (c, 2, 8);
255}
256
257/* OP FD 46: LD r, (IY+d) */
258static void op_fd_46 (e8080_t *c)
259{
260 unsigned char s;
261 unsigned short p;
262
263 e8080_get_inst2 (c);
264 p = e8080_get_iyd (c, 2);
265 s = e8080_get_mem8 (c, p);
266 e8080_set_reg8 (c, c->inst[1] >> 3, s);
267 e8080_set_clk (c, 3, 19);
268}
269
270/* OP FD 60: LD IYH, r */
271static void op_fd_60 (e8080_t *c)
272{
273 e8080_set_iyh (c, e8080_get_reg8 (c, c->inst[1]));
274 e8080_set_clk (c, 2, 8);
275}
276
277/* OP FD 64: LD IYH, IYH */
278static void op_fd_64 (e8080_t *c)
279{
280 e8080_set_clk (c, 2, 8);
281}
282
283/* OP FD 65: LD IYH, IYL */
284static void op_fd_65 (e8080_t *c)
285{
286 e8080_set_iyh (c, e8080_get_iyl (c));
287 e8080_set_clk (c, 2, 8);
288}
289
290/* OP FD 68: LD IYL, r */
291static void op_fd_68 (e8080_t *c)
292{
293 e8080_set_iyl (c, e8080_get_reg8 (c, c->inst[1]));
294 e8080_set_clk (c, 2, 8);
295}
296
297/* OP FD 6C: LD IYL, IYH */
298static void op_fd_6c (e8080_t *c)
299{
300 e8080_set_iyl (c, e8080_get_iyh (c));
301 e8080_set_clk (c, 2, 8);
302}
303
304/* OP FD 6D: LD IXL, IXL */
305static void op_fd_6d (e8080_t *c)
306{
307 e8080_set_clk (c, 2, 8);
308}
309
310/* OP FD 70: LD (IY+d), r */
311static void op_fd_70 (e8080_t *c)
312{
313 unsigned char s;
314 unsigned short p;
315
316 e8080_get_inst2 (c);
317 p = e8080_get_iyd (c, 2);
318 s = e8080_get_reg8 (c, c->inst[1]);
319 e8080_set_mem8 (c, p, s);
320 e8080_set_clk (c, 3, 19);
321}
322
323/* OP FD 84: ADD A, IYH */
324static void op_fd_84 (e8080_t *c)
325{
326 unsigned char d, s1, s2;
327
328 s1 = e8080_get_a (c);
329 s2 = e8080_get_iyh (c);
330 d = s1 + s2;
331 e8080_set_a (c, d);
332 z80_set_psw_add (c, d, s1, s2);
333 e8080_set_clk (c, 2, 8);
334}
335
336/* OP FD 85: ADD A, IYL */
337static void op_fd_85 (e8080_t *c)
338{
339 unsigned char d, s1, s2;
340
341 s1 = e8080_get_a (c);
342 s2 = e8080_get_iyl (c);
343 d = s1 + s2;
344 e8080_set_a (c, d);
345 z80_set_psw_add (c, d, s1, s2);
346 e8080_set_clk (c, 2, 8);
347}
348
349/* OP FD 86: ADD A, (IY+d) */
350static void op_fd_86 (e8080_t *c)
351{
352 unsigned short d, s1, s2, p;
353
354 e8080_get_inst2 (c);
355 p = e8080_get_iyd (c, 2);
356 s1 = e8080_get_a (c);
357 s2 = e8080_get_mem8 (c, p);
358 d = s1 + s2;
359 e8080_set_a (c, d);
360 z80_set_psw_add (c, d, s1, s2);
361 e8080_set_clk (c, 3, 19);
362}
363
364/* OP FD 8C: ADC A, IYH */
365static void op_fd_8c (e8080_t *c)
366{
367 unsigned char d, s1, s2;
368
369 s1 = e8080_get_a (c);
370 s2 = e8080_get_iyh (c);
371 d = s1 + s2 + e8080_get_cf (c);
372 e8080_set_a (c, d);
373 z80_set_psw_add (c, d, s1, s2);
374 e8080_set_clk (c, 2, 8);
375}
376
377/* OP FD 8D: ADC A, IYL */
378static void op_fd_8d (e8080_t *c)
379{
380 unsigned char d, s1, s2;
381
382 s1 = e8080_get_a (c);
383 s2 = e8080_get_iyl (c);
384 d = s1 + s2 + e8080_get_cf (c);
385 e8080_set_a (c, d);
386 z80_set_psw_add (c, d, s1, s2);
387 e8080_set_clk (c, 2, 8);
388}
389
390/* OP FD 8E: ADC A, (IY+d) */
391static void op_fd_8e (e8080_t *c)
392{
393 unsigned d, s1, s2, p;
394
395 e8080_get_inst2 (c);
396 p = e8080_get_iyd (c, 2);
397 s1 = e8080_get_a (c);
398 s2 = e8080_get_mem8 (c, p);
399 d = s1 + s2 + e8080_get_cf (c);
400 e8080_set_a (c, d);
401 z80_set_psw_add (c, d, s1, s2);
402 e8080_set_clk (c, 3, 19);
403}
404
405/* OP FD 94: SUB A, IYH */
406static void op_fd_94 (e8080_t *c)
407{
408 unsigned char d, s1, s2;
409
410 s1 = e8080_get_a (c);
411 s2 = e8080_get_iyh (c);
412 d = s1 - s2;
413 e8080_set_a (c, d);
414 z80_set_psw_sub (c, d, s1, s2);
415 e8080_set_clk (c, 2, 8);
416}
417
418/* OP FD 95: SUB A, IYL */
419static void op_fd_95 (e8080_t *c)
420{
421 unsigned char d, s1, s2;
422
423 s1 = e8080_get_a (c);
424 s2 = e8080_get_iyl (c);
425 d = s1 - s2;
426 e8080_set_a (c, d);
427 z80_set_psw_sub (c, d, s1, s2);
428 e8080_set_clk (c, 2, 8);
429}
430
431/* OP FD 96: SUB A, (IY+d) */
432static void op_fd_96 (e8080_t *c)
433{
434 unsigned d, s1, s2, p;
435
436 e8080_get_inst2 (c);
437 p = e8080_get_iyd (c, 2);
438 s1 = e8080_get_a (c);
439 s2 = e8080_get_mem8 (c, p);
440 d = s1 - s2;
441 e8080_set_a (c, d);
442 z80_set_psw_sub (c, d, s1, s2);
443 e8080_set_clk (c, 3, 19);
444}
445
446/* OP FD 9C: SBC A, IYH */
447static void op_fd_9c (e8080_t *c)
448{
449 unsigned char d, s1, s2;
450
451 s1 = e8080_get_a (c);
452 s2 = e8080_get_iyh (c);
453 d = s1 - s2 - e8080_get_cf (c);
454 e8080_set_a (c, d);
455 z80_set_psw_sub (c, d, s1, s2);
456 e8080_set_clk (c, 2, 8);
457}
458
459/* OP FD 9D: SBC A, IYL */
460static void op_fd_9d (e8080_t *c)
461{
462 unsigned char d, s1, s2;
463
464 s1 = e8080_get_a (c);
465 s2 = e8080_get_iyl (c);
466 d = s1 - s2 - e8080_get_cf (c);
467 e8080_set_a (c, d);
468 z80_set_psw_sub (c, d, s1, s2);
469 e8080_set_clk (c, 2, 8);
470}
471
472/* OP FD 9E: SBC A, (IY+d) */
473static void op_fd_9e (e8080_t *c)
474{
475 unsigned d, s1, s2, p;
476
477 e8080_get_inst2 (c);
478 p = e8080_get_iyd (c, 2);
479 s1 = e8080_get_a (c);
480 s2 = e8080_get_mem8 (c, p);
481 d = s1 - s2 - e8080_get_cf (c);
482 e8080_set_a (c, d);
483 z80_set_psw_sub (c, d, s1, s2);
484 e8080_set_clk (c, 3, 19);
485}
486
487/* OP FD A4: AND A, IYH */
488static void op_fd_a4 (e8080_t *c)
489{
490 unsigned char d;
491
492 d = e8080_get_a (c) & e8080_get_iyh (c);
493 e8080_set_a (c, d);
494 e8080_set_psw_szp (c, d, E8080_FLG_A, E8080_FLG_N | E8080_FLG_C);
495 e8080_set_clk (c, 2, 8);
496}
497
498/* OP FD A5: AND A, IYL */
499static void op_fd_a5 (e8080_t *c)
500{
501 unsigned char d;
502
503 d = e8080_get_a (c) & e8080_get_iyl (c);
504 e8080_set_a (c, d);
505 e8080_set_psw_szp (c, d, E8080_FLG_A, E8080_FLG_N | E8080_FLG_C);
506 e8080_set_clk (c, 2, 8);
507}
508
509/* OP FD A6: AND A, (IY+d) */
510static void op_fd_a6 (e8080_t *c)
511{
512 unsigned short adr;
513 unsigned char d;
514
515 e8080_get_inst2 (c);
516 adr = e8080_get_iyd (c, 2);
517 d = e8080_get_a (c) & e8080_get_mem8 (c, adr);
518 e8080_set_a (c, d);
519 e8080_set_psw_szp (c, d, E8080_FLG_A, E8080_FLG_N | E8080_FLG_C);
520 e8080_set_clk (c, 3, 19);
521}
522
523/* OP FD AC: XOR A, IYH */
524static void op_fd_ac (e8080_t *c)
525{
526 unsigned char d;
527
528 d = e8080_get_a (c) ^ e8080_get_iyh (c);
529 e8080_set_a (c, d);
530 e8080_set_psw_szp (c, d, 0, E8080_FLG_A | E8080_FLG_N | E8080_FLG_C);
531 e8080_set_clk (c, 2, 8);
532}
533
534/* OP FD AD: XOR A, IYL */
535static void op_fd_ad (e8080_t *c)
536{
537 unsigned char d;
538
539 d = e8080_get_a (c) ^ e8080_get_iyl (c);
540 e8080_set_a (c, d);
541 e8080_set_psw_szp (c, d, 0, E8080_FLG_A | E8080_FLG_N | E8080_FLG_C);
542 e8080_set_clk (c, 2, 8);
543}
544
545/* OP FD AE: XOR A, (IY+d) */
546static void op_fd_ae (e8080_t *c)
547{
548 unsigned short adr;
549 unsigned char d;
550
551 e8080_get_inst2 (c);
552 adr = e8080_get_iyd (c, 2);
553 d = e8080_get_a (c) ^ e8080_get_mem8 (c, adr);
554 e8080_set_a (c, d);
555 e8080_set_psw_szp (c, d, 0, E8080_FLG_A | E8080_FLG_N | E8080_FLG_C);
556 e8080_set_clk (c, 3, 19);
557}
558
559/* OP FD B4: OR A, IYH */
560static void op_fd_b4 (e8080_t *c)
561{
562 unsigned char d;
563
564 d = e8080_get_a (c) | e8080_get_iyh (c);
565 e8080_set_a (c, d);
566 e8080_set_psw_szp (c, d, 0, E8080_FLG_A | E8080_FLG_N | E8080_FLG_C);
567 e8080_set_clk (c, 2, 8);
568}
569
570/* OP FD B5: OR A, IYL */
571static void op_fd_b5 (e8080_t *c)
572{
573 unsigned char d;
574
575 d = e8080_get_a (c) | e8080_get_iyl (c);
576 e8080_set_a (c, d);
577 e8080_set_psw_szp (c, d, 0, E8080_FLG_A | E8080_FLG_N | E8080_FLG_C);
578 e8080_set_clk (c, 2, 8);
579}
580
581/* OP FD B6: OR A, (IY+d) */
582static void op_fd_b6 (e8080_t *c)
583{
584 unsigned short adr;
585 unsigned char d;
586
587 e8080_get_inst2 (c);
588 adr = e8080_get_iyd (c, 2);
589 d = e8080_get_a (c) | e8080_get_mem8 (c, adr);
590 e8080_set_a (c, d);
591 e8080_set_psw_szp (c, d, 0, E8080_FLG_A | E8080_FLG_N | E8080_FLG_C);
592 e8080_set_clk (c, 3, 19);
593}
594
595/* OP FD BC: CP A, IYH */
596static void op_fd_bc (e8080_t *c)
597{
598 unsigned char d, s1, s2;
599
600 s1 = e8080_get_a (c);
601 s2 = e8080_get_iyh (c);
602 d = s1 - s2;
603 z80_set_psw_sub (c, d, s1, s2);
604 e8080_set_clk (c, 2, 8);
605}
606
607/* OP FD BD: CP A, IYL */
608static void op_fd_bd (e8080_t *c)
609{
610 unsigned char d, s1, s2;
611
612 s1 = e8080_get_a (c);
613 s2 = e8080_get_iyl (c);
614 d = s1 - s2;
615 z80_set_psw_sub (c, d, s1, s2);
616 e8080_set_clk (c, 2, 8);
617}
618
619/* OP FD BE: CP A, (IY+d) */
620static void op_fd_be (e8080_t *c)
621{
622 unsigned d, s1, s2, p;
623
624 e8080_get_inst2 (c);
625 p = e8080_get_iyd (c, 2);
626 s1 = e8080_get_a (c);
627 s2 = e8080_get_mem8 (c, p);
628 d = s1 - s2;
629 z80_set_psw_sub (c, d, s1, s2);
630 e8080_set_clk (c, 3, 19);
631}
632
633/* OP FD E1: POP IY */
634static void op_fd_e1 (e8080_t *c)
635{
636 e8080_set_iy (c, e8080_get_mem16 (c, e8080_get_sp (c)));
637 e8080_set_sp (c, e8080_get_sp (c) + 2);
638 e8080_set_clk (c, 2, 14);
639}
640
641/* OP FD E3: EX (SP), IY */
642static void op_fd_e3 (e8080_t *c)
643{
644 unsigned short sp, v;
645
646 sp = e8080_get_sp (c);
647
648 v = e8080_get_mem16 (c, sp);
649 e8080_set_mem16 (c, sp, e8080_get_iy (c));
650 e8080_set_iy (c, v);
651
652 e8080_set_clk (c, 2, 23);
653}
654
655/* OP FD E5: PUSH IY */
656static void op_fd_e5 (e8080_t *c)
657{
658 e8080_set_sp (c, e8080_get_sp (c) - 2);
659 e8080_set_mem16 (c, e8080_get_sp (c), e8080_get_iy (c));
660 e8080_set_clk (c, 2, 15);
661}
662
663/* OP FD E9: JMP (IY) */
664static void op_fd_e9 (e8080_t *c)
665{
666 e8080_set_pc (c, e8080_get_iy (c));
667 e8080_set_clk (c, 0, 8);
668}
669
670/* OP FD F9: LD SP, IY */
671static void op_fd_f9 (e8080_t *c)
672{
673 e8080_set_sp (c, e8080_get_iy (c));
674 e8080_set_clk (c, 2, 10);
675}
676
677
678static e8080_opcode_f opcodes_fd[256] = {
679 op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, /* 00 */
680 op_fd_ud, op_fd_09, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud,
681 op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, /* 10 */
682 op_fd_ud, op_fd_19, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud,
683 op_fd_ud, op_fd_21, op_fd_22, op_fd_23, op_fd_24, op_fd_25, op_fd_26, op_fd_ud, /* 20 */
684 op_fd_ud, op_fd_29, op_fd_2a, op_fd_2b, op_fd_2c, op_fd_2d, op_fd_2e, op_fd_ud,
685 op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_34, op_fd_35, op_fd_36, op_fd_ud, /* 30 */
686 op_fd_ud, op_fd_39, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud,
687 op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_44, op_fd_45, op_fd_46, op_fd_ud, /* 40 */
688 op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_44, op_fd_45, op_fd_46, op_fd_ud,
689 op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_44, op_fd_45, op_fd_46, op_fd_ud, /* 50 */
690 op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_44, op_fd_45, op_fd_46, op_fd_ud,
691 op_fd_60, op_fd_60, op_fd_60, op_fd_60, op_fd_64, op_fd_65, op_fd_46, op_fd_60, /* 60 */
692 op_fd_68, op_fd_68, op_fd_68, op_fd_68, op_fd_6c, op_fd_6d, op_fd_46, op_fd_68,
693 op_fd_70, op_fd_70, op_fd_70, op_fd_70, op_fd_70, op_fd_70, op_fd_ud, op_fd_70, /* 70 */
694 op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_44, op_fd_45, op_fd_46, op_fd_ud,
695 op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_84, op_fd_85, op_fd_86, op_fd_ud, /* 80 */
696 op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_8c, op_fd_8d, op_fd_8e, op_fd_ud,
697 op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_94, op_fd_95, op_fd_96, op_fd_ud, /* 90 */
698 op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_9c, op_fd_9d, op_fd_9e, op_fd_ud,
699 op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_a4, op_fd_a5, op_fd_a6, op_fd_ud, /* A0 */
700 op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ac, op_fd_ad, op_fd_ae, op_fd_ud,
701 op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_b4, op_fd_b5, op_fd_b6, op_fd_ud, /* B0 */
702 op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_bc, op_fd_bd, op_fd_be, op_fd_ud,
703 op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, /* C0 */
704 op_fd_ud, op_fd_ud, op_fd_ud, op_fd_cb, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud,
705 op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, /* D0 */
706 op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_noni, op_fd_ud, op_fd_ud,
707 op_fd_ud, op_fd_e1, op_fd_ud, op_fd_e3, op_fd_ud, op_fd_e5, op_fd_ud, op_fd_ud, /* E0 */
708 op_fd_ud, op_fd_e9, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud,
709 op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, op_fd_ud, /* F0 */
710 op_fd_ud, op_fd_f9, op_fd_ud, op_fd_ud, op_fd_ud, op_noni, op_fd_ud, op_fd_ud
711};
712
713void z80_op_fd (e8080_t *c)
714{
715 e8080_get_inst1 (c);
716 e8080_inc_r (c);
717 opcodes_fd[c->inst[1]] (c);
718}