fork of PCE focusing on macplus, supporting DaynaPort SCSI network emulation
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at master 718 lines 17 kB view raw
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}