1 /** 2 * Zilog Z80 instruction tables. 3 */ 4 module d80.z80; 5 6 /** 7 * Strings and instruction lengths for Zilog Z80. 8 */ 9 struct z80 { 10 string s; /// Instruction name 11 ubyte n; /// Length of instruction in bytes 12 } 13 14 /** 15 * Main instructions table for Zilog Z80. 16 */ 17 immutable z80[] insnz80 = [ 18 { "nop", 1 }, 19 { "ld\tbc, ", 3 }, 20 { "ld\t(bc), a", 1 }, 21 { "inc\tbc", 1 }, 22 { "inc\tb", 1 }, 23 { "dec\tb", 1 }, 24 { "ld\tb, ", 2 }, 25 { "rlca", 1 }, 26 { "ex\taf, af'", 1 }, 27 { "add\thl, bc", 1 }, 28 { "ld\ta, (bc)", 1 }, 29 { "dec\tbc", 1 }, 30 { "inc\tc", 1 }, 31 { "dec\tc", 1 }, 32 { "ld\tc, ", 2 }, 33 { "rrca", 1 }, 34 { "djnz\t", 2 }, 35 { "ld\tde, ", 3 }, 36 { "ld\t(de), a", 1 }, 37 { "inc\tde", 1 }, 38 { "inc\td", 1 }, 39 { "dec\td", 1 }, 40 { "ld\td, ", 2 }, 41 { "rla", 1 }, 42 { "jr\t", 2 }, 43 { "add\thl, de", 1 }, 44 { "ld\ta, (de)", 1 }, 45 { "dec\tde" , 1 }, 46 { "inc\te", 1 }, 47 { "dec\te", 1 }, 48 { "ld\te, ", 2 }, 49 { "rra", 1 }, 50 { "jr\tnz, ", 2 }, 51 { "ld\thl, ", 3 }, 52 { "ld\t(%02x%02xh), hl", 3 }, 53 { "inc\thl", 1 }, 54 { "inc\th", 1 }, 55 { "dec\th", 1 }, 56 { "ld\th, ", 2 }, 57 { "daa", 1 }, 58 { "jr\tz, ", 2 }, 59 { "add\thl, hl", 1 }, 60 { "ld\thl, (%02x%02xh)", 3 }, 61 { "dec\thl", 1 }, 62 { "inc\tl", 1 }, 63 { "dec\tl", 1 }, 64 { "ld\tl, ", 2 }, 65 { "cpl", 1 }, 66 { "jr\tnc, ", 2 }, 67 { "ld\tsp, ", 3 }, 68 { "ld\t(%02x%02xh), a", 3 }, 69 { "inc\tsp", 1 }, 70 { "inc\t(hl)", 1 }, 71 { "dec\t(hl)", 1 }, 72 { "ld\t(hl), ", 2 }, 73 { "scf", 1 }, 74 { "jr\tc, ", 2 }, 75 { "add\thl, sp", 1 }, 76 { "ld\ta, (%02x%02xh)", 3 }, 77 { "dec\tsp", 1 }, 78 { "inc\ta", 1 }, 79 { "dec\ta", 1 }, 80 { "ld\ta, ", 2 }, 81 { "ccf", 1 }, 82 { "ld\tb, b", 1 }, 83 { "ld\tb, c", 1 }, 84 { "ld\tb, d", 1 }, 85 { "ld\tb, e", 1 }, 86 { "ld\tb, h", 1 }, 87 { "ld\tb, l", 1 }, 88 { "ld\tb, (hl)", 1 }, 89 { "ld\tb, a", 1 }, 90 { "ld\tc, b", 1 }, 91 { "ld\tc, c", 1 }, 92 { "ld\tc, d", 1 }, 93 { "ld\tc, e", 1 }, 94 { "ld\tc, h", 1 }, 95 { "ld\tc, l", 1 }, 96 { "ld\tc, (hl)", 1 }, 97 { "ld\tc, a", 1 }, 98 { "ld\td, b", 1 }, 99 { "ld\td, c", 1 }, 100 { "ld\td, d", 1 }, 101 { "ld\td, e", 1 }, 102 { "ld\td, h", 1 }, 103 { "ld\td, l", 1 }, 104 { "ld\td, (hl)", 1 }, 105 { "ld\td, a", 1 }, 106 { "ld\te, b", 1 }, 107 { "ld\te, c", 1 }, 108 { "ld\te, d", 1 }, 109 { "ld\te, e", 1 }, 110 { "ld\te, h", 1 }, 111 { "ld\te, l", 1 }, 112 { "ld\te, (hl)", 1 }, 113 { "ld\te, a", 1 }, 114 { "ld\th, b", 1 }, 115 { "ld\th, c", 1 }, 116 { "ld\th, d", 1 }, 117 { "ld\th, e", 1 }, 118 { "ld\th, h", 1 }, 119 { "ld\th, l", 1 }, 120 { "ld\th, (hl)", 1 }, 121 { "ld\th, a", 1 }, 122 { "ld\tl, b", 1 }, 123 { "ld\tl, c", 1 }, 124 { "ld\tl, d", 1 }, 125 { "ld\tl, e", 1 }, 126 { "ld\tl, h", 1 }, 127 { "ld\tl, l", 1 }, 128 { "ld\tl, (hl)", 1 }, 129 { "ld\tl, a", 1 }, 130 { "ld\t(hl), b", 1 }, 131 { "ld\t(hl), c", 1 }, 132 { "ld\t(hl), d", 1 }, 133 { "ld\t(hl), e", 1 }, 134 { "ld\t(hl), h", 1 }, 135 { "ld\t(hl), l", 1 }, 136 { "halt", 1 }, 137 { "ld\t(hl), a", 1 }, 138 { "ld\ta, b", 1 }, 139 { "ld\ta, c", 1 }, 140 { "ld\ta, d", 1 }, 141 { "ld\ta, e", 1 }, 142 { "ld\ta, h", 1 }, 143 { "ld\ta, l", 1 }, 144 { "ld\ta, (hl)", 1 }, 145 { "ld\ta, a", 1 }, 146 { "add\ta, b", 1 }, 147 { "add\ta, c", 1 }, 148 { "add\ta, d", 1 }, 149 { "add\ta, e", 1 }, 150 { "add\ta, h", 1 }, 151 { "add\ta, l", 1 }, 152 { "add\ta, (hl)", 1 }, 153 { "add\ta, a", 1 }, 154 { "adc\ta, b", 1 }, 155 { "adc\ta, c", 1 }, 156 { "adc\ta, d", 1 }, 157 { "adc\ta, e", 1 }, 158 { "adc\ta, h", 1 }, 159 { "adc\ta, l", 1 }, 160 { "adc\ta, (hl)", 1 }, 161 { "adc\ta, a", 1 }, 162 { "sub\tb", 1 }, 163 { "sub\tc", 1 }, 164 { "sub\td", 1 }, 165 { "sub\te", 1 }, 166 { "sub\th", 1 }, 167 { "sub\tl", 1 }, 168 { "sub\t(hl)", 1 }, 169 { "sub\ta", 1 }, 170 { "sbc\ta, b", 1 }, 171 { "sbc\ta, c", 1 }, 172 { "sbc\ta, d", 1 }, 173 { "sbc\ta, e", 1 }, 174 { "sbc\ta, h", 1 }, 175 { "sbc\ta, l", 1 }, 176 { "sbc\ta, (hl)", 1 }, 177 { "sbb\ta, a", 1 }, 178 { "and\tb", 1 }, 179 { "and\tc", 1 }, 180 { "and\td", 1 }, 181 { "and\te", 1 }, 182 { "and\th", 1 }, 183 { "and\tl", 1 }, 184 { "and\t(hl)", 1 }, 185 { "and\ta", 1 }, 186 { "xor\tb", 1 }, 187 { "xor\tc", 1 }, 188 { "xor\td", 1 }, 189 { "xor\te", 1 }, 190 { "xor\th", 1 }, 191 { "xor\tl", 1 }, 192 { "xor\t(hl)", 1 }, 193 { "xor\ta", 1 }, 194 { "or\tb", 1 }, 195 { "or\tc", 1 }, 196 { "or\td", 1 }, 197 { "or\te", 1 }, 198 { "or\th", 1 }, 199 { "or\tl", 1 }, 200 { "or\t(hl)", 1 }, 201 { "or\ta", 1 }, 202 { "cp\tb", 1 }, 203 { "cp\tc", 1 }, 204 { "cp\td", 1 }, 205 { "cp\te", 1 }, 206 { "cp\th", 1 }, 207 { "cp\tl", 1 }, 208 { "cp\t(hl)", 1 }, 209 { "cp\ta", 1 }, 210 { "ret\tnz", 1 }, 211 { "pop\tbc", 1 }, 212 { "jp\tnz, ", 3 }, 213 { "jp\t", 3 }, 214 { "call\t nz, ", 3 }, 215 { "push\tbc", 1 }, 216 { "add\ta, ", 2 }, 217 { "rst\t00h", 1 }, 218 { "ret\tz", 1 }, 219 { "ret", 1 }, 220 { "jp\tz, ", 3 }, 221 { "BITS", 2 }, 222 { "call\tz, ", 3 }, 223 { "call\t", 3 }, 224 { "adc\ta, ", 2 }, 225 { "rst\t08h", 1 }, 226 { "ret\tnc", 1 }, 227 { "pop\tde", 1 }, 228 { "jp\tnc, ", 3 }, 229 { "out\t(%02xh), a", 2 }, 230 { "call\tnc, ", 3 }, 231 { "push\tde", 1 }, 232 { "sub\t", 2 }, 233 { "rst\t10h", 1 }, 234 { "ret\tc", 1 }, 235 { "exx", 1 }, 236 { "jp\tc, ", 3 }, 237 { "in\ta, (%02xh)", 2 }, 238 { "call\tc, ", 3 }, 239 { "IX", 2 }, 240 { "sbc\ta, ", 2 }, 241 { "rst\t18h", 1 }, 242 { "ret\tpo", 1 }, 243 { "pop\thl", 1 }, 244 { "jp\tpo, ", 3 }, 245 { "ex\t(sp), hl", 1 }, 246 { "call\tpo, ", 3 }, 247 { "push\thl", 1 }, 248 { "and\t", 2 }, 249 { "rst\t20h", 1 }, 250 { "ret\tpe", 1 }, 251 { "jp\t(hl)", 1 }, 252 { "jp\tpe, ", 3 }, 253 { "ex\tde, hl", 1 }, 254 { "call\tpe, ", 3 }, 255 { "EXTD", 2 }, 256 { "xor\t", 2 }, 257 { "rst\t28h", 1 }, 258 { "ret\tp", 1 }, 259 { "pop\taf", 1 }, 260 { "jp\tp, ", 3 }, 261 { "di", 1 }, 262 { "call\tp, ", 3 }, 263 { "push\taf", 1 }, 264 { "or\t", 2 }, 265 { "rst\t30h", 1 }, 266 { "ret\tm", 1 }, 267 { "ld\tsp, hl", 1 }, 268 { "jp\tm, ", 3 }, 269 { "ei", 1 }, 270 { "call\tm, ", 3 }, 271 { "IY", 2 }, 272 { "cp\t", 2 }, 273 { "rst\t38h", 1 } 274 ]; 275 276 /** 277 * Bit instructions (CB) table for Z80. 278 * n = 0 because all instructions in this table are 279 * 2 bytes in length and we handle that in the 280 * primary table. 281 */ 282 immutable z80[] insnz80cb = [ 283 { "rlc\tb", 0 }, 284 { "rlc\tc", 0 }, 285 { "rlc\td", 0 }, 286 { "rlc\te", 0 }, 287 { "rlc\th", 0 }, 288 { "rlc\tl", 0 }, 289 { "rlc\t(hl)", 0 }, 290 { "rlc\ta", 0 }, 291 { "rrc\tb", 0 }, 292 { "rrc\tc", 0 }, 293 { "rrc\td", 0 }, 294 { "rrc\te", 0 }, 295 { "rrc\th", 0 }, 296 { "rrc\tl", 0 }, 297 { "rrc\t(hl)", 0 }, 298 { "rrc\ta", 0 }, 299 { "rl\tb", 0 }, 300 { "rl\tc", 0 }, 301 { "rl\td", 0 }, 302 { "rl\te", 0 }, 303 { "rl\th", 0 }, 304 { "rl\tl", 0 }, 305 { "rl\t(hl)", 0 }, 306 { "rl\ta", 0 }, 307 { "rr\tb", 0 }, 308 { "rr\tc", 0 }, 309 { "rr\td", 0 }, 310 { "rr\te", 0 }, 311 { "rr\th", 0 }, 312 { "rr\tl", 0 }, 313 { "rr\t(hl)", 0 }, 314 { "rr\ta", 0 }, 315 { "sla\tb", 0 }, 316 { "sla\tc", 0 }, 317 { "sla\td", 0 }, 318 { "sla\te", 0 }, 319 { "sla\th", 0 }, 320 { "sla\tl", 0 }, 321 { "sla\t(hl)", 0 }, 322 { "sla\ta", 0 }, 323 { "sra\tb", 0 }, 324 { "sra\tc", 0 }, 325 { "sra\td", 0 }, 326 { "sra\te", 0 }, 327 { "sra\th", 0 }, 328 { "sra\tl", 0 }, 329 { "sra\t(hl)", 0 }, 330 { "sra\ta", 0 }, 331 { "slr\tb", 0 }, 332 { "slr\tc", 0 }, 333 { "slr\td", 0 }, 334 { "slr\te", 0 }, 335 { "slr\th", 0 }, 336 { "slr\tl", 0 }, 337 { "slr\t(hl)", 0 }, 338 { "slr\ta", 0 }, 339 { "srr\tb", 0 }, 340 { "srr\tc", 0 }, 341 { "srr\td", 0 }, 342 { "srr\te", 0 }, 343 { "srr\th", 0 }, 344 { "srr\tl", 0 }, 345 { "srr\t(hl)", 0 }, 346 { "srr\ta", 0 }, 347 { "bit\t0, b", 0 }, 348 { "bit\t0, c", 0 }, 349 { "bit\t0, d", 0 }, 350 { "bit\t0, e", 0 }, 351 { "bit\t0, h", 0 }, 352 { "bit\t0, l", 0 }, 353 { "bit\t0, (hl)", 0 }, 354 { "bit\t0, a", 0 }, 355 { "bit\t1, b", 0 }, 356 { "bit\t1, c", 0 }, 357 { "bit\t1, d", 0 }, 358 { "bit\t1, e", 0 }, 359 { "bit\t1, h", 0 }, 360 { "bit\t1, l", 0 }, 361 { "bit\t1, (hl)", 0 }, 362 { "bit\t1, a", 0 }, 363 { "bit\t2, b", 0 }, 364 { "bit\t2, c", 0 }, 365 { "bit\t2, d", 0 }, 366 { "bit\t2, e", 0 }, 367 { "bit\t2, h", 0 }, 368 { "bit\t2, l", 0 }, 369 { "bit\t2, (hl)", 0 }, 370 { "bit\t2, a", 0 }, 371 { "bit\t3, b", 0 }, 372 { "bit\t3, c", 0 }, 373 { "bit\t3, d", 0 }, 374 { "bit\t3, e", 0 }, 375 { "bit\t3, h", 0 }, 376 { "bit\t3, l", 0 }, 377 { "bit\t3, (hl)", 0 }, 378 { "bit\t3, a", 0 }, 379 { "bit\t4, b", 0 }, 380 { "bit\t4, c", 0 }, 381 { "bit\t4, d", 0 }, 382 { "bit\t4, e", 0 }, 383 { "bit\t4, h", 0 }, 384 { "bit\t4, l", 0 }, 385 { "bit\t4, (hl)", 0 }, 386 { "bit\t4, a", 0 }, 387 { "bit\t5, b", 0 }, 388 { "bit\t5, c", 0 }, 389 { "bit\t5, d", 0 }, 390 { "bit\t5, e", 0 }, 391 { "bit\t5, h", 0 }, 392 { "bit\t5, l", 0 }, 393 { "bit\t5, (hl)", 0 }, 394 { "bit\t5, a", 0 }, 395 { "bit\t6, b", 0 }, 396 { "bit\t6, c", 0 }, 397 { "bit\t6, d", 0 }, 398 { "bit\t6, e", 0 }, 399 { "bit\t6, h", 0 }, 400 { "bit\t6, l", 0 }, 401 { "bit\t6, (hl)", 0 }, 402 { "bit\t6, a", 0 }, 403 { "bit\t7, b", 0 }, 404 { "bit\t7, c", 0 }, 405 { "bit\t7, d", 0 }, 406 { "bit\t7, e", 0 }, 407 { "bit\t7, h", 0 }, 408 { "bit\t7, l", 0 }, 409 { "bit\t7, (hl)", 0 }, 410 { "bit\t7, a", 0 }, 411 { "res\t0, b", 0 }, 412 { "res\t0, c", 0 }, 413 { "res\t0, d", 0 }, 414 { "res\t0, e", 0 }, 415 { "res\t0, h", 0 }, 416 { "res\t0, l", 0 }, 417 { "res\t0, (hl)", 0 }, 418 { "res\t0, a", 0 }, 419 { "res\t1, b", 0 }, 420 { "res\t1, c", 0 }, 421 { "res\t1, d", 0 }, 422 { "res\t1, e", 0 }, 423 { "res\t1, h", 0 }, 424 { "res\t1, l", 0 }, 425 { "res\t1, (hl)", 0 }, 426 { "res\t1, a", 0 }, 427 { "res\t2, b", 0 }, 428 { "res\t2, c", 0 }, 429 { "res\t2, d", 0 }, 430 { "res\t2, e", 0 }, 431 { "res\t2, h", 0 }, 432 { "res\t2, l", 0 }, 433 { "res\t2, (hl)", 0 }, 434 { "res\t2, a", 0 }, 435 { "res\t3, b", 0 }, 436 { "res\t3, c", 0 }, 437 { "res\t3, d", 0 }, 438 { "res\t3, e", 0 }, 439 { "res\t3, h", 0 }, 440 { "res\t3, l", 0 }, 441 { "res\t3, (hl)", 0 }, 442 { "res\t3, a", 0 }, 443 { "res\t4, b", 0 }, 444 { "res\t4, c", 0 }, 445 { "res\t4, d", 0 }, 446 { "res\t4, e", 0 }, 447 { "res\t4, h", 0 }, 448 { "res\t4, l", 0 }, 449 { "res\t4, (hl)", 0 }, 450 { "res\t4, a", 0 }, 451 { "res\t5, b", 0 }, 452 { "res\t5, c", 0 }, 453 { "res\t5, d", 0 }, 454 { "res\t5, e", 0 }, 455 { "res\t5, h", 0 }, 456 { "res\t5, l", 0 }, 457 { "res\t5, (hl)", 0 }, 458 { "res\t5, a", 0 }, 459 { "res\t6, b", 0 }, 460 { "res\t6, c", 0 }, 461 { "res\t6, d", 0 }, 462 { "res\t6, e", 0 }, 463 { "res\t6, h", 0 }, 464 { "res\t6, l", 0 }, 465 { "res\t6, (hl)", 0 }, 466 { "res\t6, a", 0 }, 467 { "res\t7, b", 0 }, 468 { "res\t7, c", 0 }, 469 { "res\t7, d", 0 }, 470 { "res\t7, e", 0 }, 471 { "res\t7, h", 0 }, 472 { "res\t7, l", 0 }, 473 { "res\t7, (hl)", 0 }, 474 { "res\t7, a", 0 }, 475 { "set\t0, c", 0 }, 476 { "set\t0, d", 0 }, 477 { "set\t0, e", 0 }, 478 { "set\t0, h", 0 }, 479 { "set\t0, l", 0 }, 480 { "set\t0, (hl)", 0 }, 481 { "set\t0, a", 0 }, 482 { "set\t1, b", 0 }, 483 { "set\t1, c", 0 }, 484 { "set\t1, d", 0 }, 485 { "set\t1, e", 0 }, 486 { "set\t1, h", 0 }, 487 { "set\t1, l", 0 }, 488 { "set\t1, (hl)", 0 }, 489 { "set\t1, a", 0 }, 490 { "set\t2, b", 0 }, 491 { "set\t2, c", 0 }, 492 { "set\t2, d", 0 }, 493 { "set\t2, e", 0 }, 494 { "set\t2, h", 0 }, 495 { "set\t2, l", 0 }, 496 { "set\t2, (hl)", 0 }, 497 { "set\t2, a", 0 }, 498 { "set\t3, b", 0 }, 499 { "set\t3, c", 0 }, 500 { "set\t3, d", 0 }, 501 { "set\t3, e", 0 }, 502 { "set\t3, h", 0 }, 503 { "set\t3, l", 0 }, 504 { "set\t3, (hl)", 0 }, 505 { "set\t3, a", 0 }, 506 { "set\t4, b", 0 }, 507 { "set\t4, c", 0 }, 508 { "set\t4, d", 0 }, 509 { "set\t4, e", 0 }, 510 { "set\t4, h", 0 }, 511 { "set\t4, l", 0 }, 512 { "set\t4, (hl)", 0 }, 513 { "set\t4, a", 0 }, 514 { "set\t5, b", 0 }, 515 { "set\t5, c", 0 }, 516 { "set\t5, d", 0 }, 517 { "set\t5, e", 0 }, 518 { "set\t5, h", 0 }, 519 { "set\t5, l", 0 }, 520 { "set\t5, (hl)", 0 }, 521 { "set\t5, a", 0 }, 522 { "set\t6, b", 0 }, 523 { "set\t6, c", 0 }, 524 { "set\t6, d", 0 }, 525 { "set\t6, e", 0 }, 526 { "set\t6, h", 0 }, 527 { "set\t6, l", 0 }, 528 { "set\t6, (hl)", 0 }, 529 { "set\t6, a", 0 }, 530 { "set\t7, b", 0 }, 531 { "set\t7, c", 0 }, 532 { "set\t7, d", 0 }, 533 { "set\t7, e", 0 }, 534 { "set\t7, h", 0 }, 535 { "set\t7, l", 0 }, 536 { "set\t7, (hl)", 0 }, 537 { "set\t7, a", 0 } 538 ]; 539 540 /** 541 * IX instructions (DD) table for Z80. 542 * Invalid instructions are marked nop. 543 */ 544 immutable z80[] insnz80dd = [ 545 { "nop", 0 }, 546 { "nop", 0 }, 547 { "nop", 0 }, 548 { "nop", 0 }, 549 { "nop", 0 }, 550 { "nop", 0 }, 551 { "nop", 0 }, 552 { "nop", 0 }, 553 { "nop", 0 }, 554 { "add\tix, bc", 0 }, 555 { "nop", 0 }, 556 { "nop", 0 }, 557 { "nop", 0 }, 558 { "nop", 0 }, 559 { "nop", 0 }, 560 { "nop", 0 }, 561 { "nop", 0 }, 562 { "nop", 0 }, 563 { "nop", 0 }, 564 { "nop", 0 }, 565 { "nop", 0 }, 566 { "nop", 0 }, 567 { "nop", 0 }, 568 { "nop", 0 }, 569 { "nop", 0 }, 570 { "add\tix, de", 0 }, 571 { "nop", 0 }, 572 { "nop", 0 }, 573 { "nop", 0 }, 574 { "nop", 0 }, 575 { "nop", 0 }, 576 { "nop", 0 }, 577 { "nop", 0 }, 578 { "ld\tix, %02x%02xh", 2 }, 579 { "ld\t(%02x%02xh), ix", 2 }, 580 { "inc\tix", 0 }, 581 { "inc\tixh", 0 }, 582 { "dec\tixh", 0 }, 583 { "ld\tixh, %02xh", 1 }, 584 { "nop", 0 }, 585 { "nop", 0 }, 586 { "add\tix, ix", 0 }, 587 { "ld\tix, (%02x%02xh)", 2 }, 588 { "dec\tix", 0 }, 589 { "inc\tixl", 0 }, 590 { "dec\tixl", 0 }, 591 { "ld\tixl, %02xh", 1 }, 592 { "nop", 0 }, 593 { "nop", 0 }, 594 { "nop", 0 }, 595 { "nop", 0 }, 596 { "nop", 0 }, 597 { "inc\t(ix+%02xh)", 1 }, 598 { "dec\t(ix+%02xh)", 1 }, 599 { "ld\t(ix+%02xh), %02xh", 2 }, 600 { "nop", 0 }, 601 { "nop", 0 }, 602 { "add\tix, sp", 0 }, 603 { "nop", 0 }, 604 { "nop", 0 }, 605 { "nop", 0 }, 606 { "nop", 0 }, 607 { "nop", 0 }, 608 { "nop", 0 }, 609 { "nop", 0 }, 610 { "nop", 0 }, 611 { "nop", 0 }, 612 { "nop", 0 }, 613 { "ld\tb, ixh", 0 }, 614 { "ld\tb, ixl", 0 }, 615 { "ld\tb, (ix+%02xh)", 1 }, 616 { "nop", 0 }, 617 { "nop", 0 }, 618 { "nop", 0 }, 619 { "nop", 0 }, 620 { "nop", 0 }, 621 { "ld\tc, ixh", 0 }, 622 { "ld\tc, ixl", 0 }, 623 { "ld\tc, (ix+%02xh)", 1 }, 624 { "nop", 0 }, 625 { "nop", 0 }, 626 { "nop", 0 }, 627 { "nop", 0 }, 628 { "nop", 0 }, 629 { "ld\td, ixh", 0 }, 630 { "ld\td, ixl", 0 }, 631 { "ld\td, (ix+%02xh)", 1 }, 632 { "nop", 0 }, 633 { "nop", 0 }, 634 { "nop", 0 }, 635 { "nop", 0 }, 636 { "nop", 0 }, 637 { "ld\te, ixh", 0 }, 638 { "ld\te, ixl", 0 }, 639 { "ld\te, (ix+%02xh)", 1 }, 640 { "nop", 0 }, 641 { "ld\tixh, b", 0 }, 642 { "ld\tixh, c", 0 }, 643 { "ld\tixh, d", 0 }, 644 { "ld\tixh, e", 0 }, 645 { "ld\tixh, ixh", 0 }, 646 { "ld\tixh, ixl", 0 }, 647 { "ld\th, (ix+%02xh)", 1 }, 648 { "ld\tixh, a", 0 }, 649 { "ld\tixl, b", 0 }, 650 { "ld\tixl, c", 0 }, 651 { "ld\tixl, d", 0 }, 652 { "ld\tixl, e", 0 }, 653 { "ld\tixl, ixh", 0 }, 654 { "ld\tixl, ixl", 0 }, 655 { "ld\tl, (ix+%02xh)", 1 }, 656 { "ld\tixl, a", 0 }, 657 { "ld\t(ix+%02xh), b", 1 }, 658 { "ld\t(ix+%02xh), c", 1 }, 659 { "ld\t(ix+%02xh), d", 1 }, 660 { "ld\t(ix+%02xh), e", 1 }, 661 { "ld\t(ix+%02xh), h", 1 }, 662 { "ld\t(ix+%02xh), l", 1 }, 663 { "nop", 0 }, 664 { "ld\t(ix+%02xh), a", 1 }, 665 { "nop", 0 }, 666 { "nop", 0 }, 667 { "nop", 0 }, 668 { "nop", 0 }, 669 { "ld\ta, ixh", 0 }, 670 { "ld\ta, ixl", 0 }, 671 { "ld\ta, (ix+%02xh)", 0 }, 672 { "nop", 0 }, 673 { "nop", 0 }, 674 { "nop", 0 }, 675 { "nop", 0 }, 676 { "nop", 0 }, 677 { "add\ta, ixh", 0 }, 678 { "add\ta, ixl", 0 }, 679 { "add\ta, (ix+%02xh)", 1 }, 680 { "nop", 0 }, 681 { "nop", 0 }, 682 { "nop", 0 }, 683 { "nop", 0 }, 684 { "nop", 0 }, 685 { "adc\ta, ixh", 0 }, 686 { "adc\ta, ixl", 0 }, 687 { "adc\ta, (ix+%02xh)", 0 }, 688 { "nop", 0 }, 689 { "nop", 0 }, 690 { "nop", 0 }, 691 { "nop", 0 }, 692 { "nop", 0 }, 693 { "sub\tixh", 0 }, 694 { "sub\tixl", 0 }, 695 { "sub\t(ix+%02xh)", 1 }, 696 { "nop", 0 }, 697 { "nop", 0 }, 698 { "nop", 0 }, 699 { "nop", 0 }, 700 { "nop", 0 }, 701 { "sbc\ta, ixh", 0 }, 702 { "sbc\ta, ixl", 0 }, 703 { "sbc\ta, (ix+%02xh)", 1 }, 704 { "nop", 0 }, 705 { "nop", 0 }, 706 { "nop", 0 }, 707 { "nop", 0 }, 708 { "nop", 0 }, 709 { "and\tixh", 0 }, 710 { "and\tixl", 0 }, 711 { "and\t(ix+%02xh)", 1 }, 712 { "nop", 0 }, 713 { "nop", 0 }, 714 { "nop", 0 }, 715 { "nop", 0 }, 716 { "nop", 0 }, 717 { "xor\tixh", 0 }, 718 { "xor\tixl", 0 }, 719 { "xor\t(ix+%02xh)", 1 }, 720 { "nop", 0 }, 721 { "nop", 0 }, 722 { "nop", 0 }, 723 { "nop", 0 }, 724 { "nop", 0 }, 725 { "or\tixh", 0 }, 726 { "or\tixl", 0 }, 727 { "or\t(ix+%02xh)", 1 }, 728 { "nop", 0 }, 729 { "nop", 0 }, 730 { "nop", 0 }, 731 { "nop", 0 }, 732 { "nop", 0 }, 733 { "cp\tixh", 0 }, 734 { "cp\tixl", 0 }, 735 { "cp\t(ix+%02xh)", 1 }, 736 { "nop", 0 }, 737 { "nop", 0 }, 738 { "nop", 0 }, 739 { "nop", 0 }, 740 { "nop", 0 }, 741 { "nop", 0 }, 742 { "nop", 0 }, 743 { "nop", 0 }, 744 { "nop", 0 }, 745 { "nop", 0 }, 746 { "nop", 0 }, 747 { "nop", 0 }, 748 { "IX BITS", 0 }, 749 { "nop", 0 }, 750 { "nop", 0 }, 751 { "nop", 0 }, 752 { "nop", 0 }, 753 { "nop", 0 }, 754 { "nop", 0 }, 755 { "nop", 0 }, 756 { "nop", 0 }, 757 { "nop", 0 }, 758 { "nop", 0 }, 759 { "nop", 0 }, 760 { "nop", 0 }, 761 { "nop", 0 }, 762 { "nop", 0 }, 763 { "nop", 0 }, 764 { "nop", 0 }, 765 { "nop", 0 }, 766 { "nop", 0 }, 767 { "nop", 0 }, 768 { "nop", 0 }, 769 { "nop", 0 }, 770 { "pop\tix", 0 }, 771 { "nop", 0 }, 772 { "ex\t(sp), ix", 0 }, 773 { "nop", 0 }, 774 { "push\tix", 0 }, 775 { "nop", 0 }, 776 { "nop", 0 }, 777 { "nop", 0 }, 778 { "jp\t(ix)", 0 }, 779 { "nop", 0 }, 780 { "nop", 0 }, 781 { "nop", 0 }, 782 { "nop", 0 }, 783 { "nop", 0 }, 784 { "nop", 0 }, 785 { "nop", 0 }, 786 { "nop", 0 }, 787 { "nop", 0 }, 788 { "nop", 0 }, 789 { "nop", 0 }, 790 { "nop", 0 }, 791 { "nop", 0 }, 792 { "nop", 0 }, 793 { "nop", 0 }, 794 { "ld\tsp, ix", 0 }, 795 { "nop", 0 }, 796 { "nop", 0 }, 797 { "nop", 0 }, 798 { "nop", 0 }, 799 { "nop", 0 }, 800 { "nop", 0 } 801 ]; 802 803 /** 804 * Extended instructions (ED) table for Z80. 805 * Invalid instructions are marked nop. 806 */ 807 immutable z80[] insnz80ed = [ 808 { "nop", 0 }, 809 { "nop", 0 }, 810 { "nop", 0 }, 811 { "nop", 0 }, 812 { "nop", 0 }, 813 { "nop", 0 }, 814 { "nop", 0 }, 815 { "nop", 0 }, 816 { "nop", 0 }, 817 { "nop", 0 }, 818 { "nop", 0 }, 819 { "nop", 0 }, 820 { "nop", 0 }, 821 { "nop", 0 }, 822 { "nop", 0 }, 823 { "nop", 0 }, 824 { "nop", 0 }, 825 { "nop", 0 }, 826 { "nop", 0 }, 827 { "nop", 0 }, 828 { "nop", 0 }, 829 { "nop", 0 }, 830 { "nop", 0 }, 831 { "nop", 0 }, 832 { "nop", 0 }, 833 { "nop", 0 }, 834 { "nop", 0 }, 835 { "nop", 0 }, 836 { "nop", 0 }, 837 { "nop", 0 }, 838 { "nop", 0 }, 839 { "nop", 0 }, 840 { "nop", 0 }, 841 { "nop", 0 }, 842 { "nop", 0 }, 843 { "nop", 0 }, 844 { "nop", 0 }, 845 { "nop", 0 }, 846 { "nop", 0 }, 847 { "nop", 0 }, 848 { "nop", 0 }, 849 { "nop", 0 }, 850 { "nop", 0 }, 851 { "nop", 0 }, 852 { "nop", 0 }, 853 { "nop", 0 }, 854 { "nop", 0 }, 855 { "nop", 0 }, 856 { "nop", 0 }, 857 { "nop", 0 }, 858 { "nop", 0 }, 859 { "nop", 0 }, 860 { "nop", 0 }, 861 { "nop", 0 }, 862 { "nop", 0 }, 863 { "nop", 0 }, 864 { "nop", 0 }, 865 { "nop", 0 }, 866 { "nop", 0 }, 867 { "nop", 0 }, 868 { "nop", 0 }, 869 { "nop", 0 }, 870 { "nop", 0 }, 871 { "nop", 0 }, 872 { "in\tb, (c)", 0 }, 873 { "out\t(c), b", 0 }, 874 { "sbc\thl, bc", 0 }, 875 { "ld\t(%02x%02xh), bc", 2 }, 876 { "neg", 0 }, 877 { "retn", 0 }, 878 { "im\t0", 0 }, 879 { "ld\ti, a", 0 }, 880 { "in\tc, (c)", 0 }, 881 { "out\t(c), c", 0 }, 882 { "adc\thl, bc", 0 }, 883 { "ld\tbc, (%02x%02xh)", 2 }, 884 { "neg", 0 }, 885 { "reti", 0 }, 886 { "im\t0/1", 0 }, 887 { "ld\tr, a", 0 }, 888 { "in\td, (c)", 0 }, 889 { "out\t(c), d", 0 }, 890 { "sbc\thl, de", 0 }, 891 { "ld\t(%02x%02xh), de", 2 }, 892 { "neg", 0 }, 893 { "retn", 0 }, 894 { "im\t1", 0 }, 895 { "ld\ta, i", 0 }, 896 { "in\te, (c)", 0 }, 897 { "out\t(c), e", 0 }, 898 { "adc\thl, de", 0 }, 899 { "ld\tde, (%02x%02xh)", 2 }, 900 { "neg", 0 }, 901 { "retn", 0 }, 902 { "im\t2", 0 }, 903 { "ld\ta, r", 0 }, 904 { "in\th, (c)", 0 }, 905 { "out\t(c), h", 0 }, 906 { "sbc\thl, hl", 0 }, 907 { "ld\t(%02x%02xh), hl", 2 }, 908 { "neg", 0 }, 909 { "retn", 0 }, 910 { "im\t0", 0 }, 911 { "rrd", 0 }, 912 { "in\tl, (c)", 0 }, 913 { "out\t(c), l", 0 }, 914 { "adc\thl, hl", 0 }, 915 { "ld\thl, (%02x%02xh)", 2 }, 916 { "neg", 0 }, 917 { "retn", 0 }, 918 { "im\t0/1", 0 }, 919 { "rld", 0 }, 920 { "in\t(c)", 0 }, 921 { "out\t(c), 0", 0 }, 922 { "sbc\thl, sp", 0 }, 923 { "ld\t(%02x%02xh), sp", 2 }, 924 { "neg", 0 }, 925 { "retn", 0 }, 926 { "im\t1", 0 }, 927 { "nop", 0 }, 928 { "in\ta, (c)", 0 }, 929 { "out\t(c), a", 0 }, 930 { "adc\thl, sp", 0 }, 931 { "ld\tsp, (%02x%02xh)", 2 }, 932 { "neg", 0 }, 933 { "retn", 0 }, 934 { "im\t2", 0 }, 935 { "nop", 0 }, 936 { "nop", 0 }, 937 { "nop", 0 }, 938 { "nop", 0 }, 939 { "nop", 0 }, 940 { "nop", 0 }, 941 { "nop", 0 }, 942 { "nop", 0 }, 943 { "nop", 0 }, 944 { "nop", 0 }, 945 { "nop", 0 }, 946 { "nop", 0 }, 947 { "nop", 0 }, 948 { "nop", 0 }, 949 { "nop", 0 }, 950 { "nop", 0 }, 951 { "nop", 0 }, 952 { "nop", 0 }, 953 { "nop", 0 }, 954 { "nop", 0 }, 955 { "nop", 0 }, 956 { "nop", 0 }, 957 { "nop", 0 }, 958 { "nop", 0 }, 959 { "nop", 0 }, 960 { "nop", 0 }, 961 { "nop", 0 }, 962 { "nop", 0 }, 963 { "nop", 0 }, 964 { "nop", 0 }, 965 { "nop", 0 }, 966 { "nop", 0 }, 967 { "nop", 0 }, 968 { "ldi", 0 }, 969 { "cpi", 0 }, 970 { "ini", 0 }, 971 { "outi", 0 }, 972 { "nop", 0 }, 973 { "nop", 0 }, 974 { "nop", 0 }, 975 { "nop", 0 }, 976 { "ldd", 0 }, 977 { "cpd", 0 }, 978 { "ind", 0 }, 979 { "outd", 0 }, 980 { "nop", 0 }, 981 { "nop", 0 }, 982 { "nop", 0 }, 983 { "nop", 0 }, 984 { "ldir", 0 }, 985 { "cpir", 0 }, 986 { "inir", 0 }, 987 { "otir", 0 }, 988 { "nop", 0 }, 989 { "nop", 0 }, 990 { "nop", 0 }, 991 { "nop", 0 }, 992 { "lddr", 0 }, 993 { "cpdr", 0 }, 994 { "indr", 0 }, 995 { "otdr", 0 }, 996 { "nop", 0 }, 997 { "nop", 0 }, 998 { "nop", 0 }, 999 { "nop", 0 }, 1000 { "nop", 0 }, 1001 { "nop", 0 }, 1002 { "nop", 0 }, 1003 { "nop", 0 }, 1004 { "nop", 0 }, 1005 { "nop", 0 }, 1006 { "nop", 0 }, 1007 { "nop", 0 }, 1008 { "nop", 0 }, 1009 { "nop", 0 }, 1010 { "nop", 0 }, 1011 { "nop", 0 }, 1012 { "nop", 0 }, 1013 { "nop", 0 }, 1014 { "nop", 0 }, 1015 { "nop", 0 }, 1016 { "nop", 0 }, 1017 { "nop", 0 }, 1018 { "nop", 0 }, 1019 { "nop", 0 }, 1020 { "nop", 0 }, 1021 { "nop", 0 }, 1022 { "nop", 0 }, 1023 { "nop", 0 }, 1024 { "nop", 0 }, 1025 { "nop", 0 }, 1026 { "nop", 0 }, 1027 { "nop", 0 }, 1028 { "nop", 0 }, 1029 { "nop", 0 }, 1030 { "nop", 0 }, 1031 { "nop", 0 }, 1032 { "nop", 0 }, 1033 { "nop", 0 }, 1034 { "nop", 0 }, 1035 { "nop", 0 }, 1036 { "nop", 0 }, 1037 { "nop", 0 }, 1038 { "nop", 0 }, 1039 { "nop", 0 }, 1040 { "nop", 0 }, 1041 { "nop", 0 }, 1042 { "nop", 0 }, 1043 { "nop", 0 }, 1044 { "nop", 0 }, 1045 { "nop", 0 }, 1046 { "nop", 0 }, 1047 { "nop", 0 }, 1048 { "nop", 0 }, 1049 { "nop", 0 }, 1050 { "nop", 0 }, 1051 { "nop", 0 }, 1052 { "nop", 0 }, 1053 { "nop", 0 }, 1054 { "nop", 0 }, 1055 { "nop", 0 }, 1056 { "nop", 0 }, 1057 { "nop", 0 }, 1058 { "nop", 0 }, 1059 { "nop", 0 }, 1060 { "nop", 0 }, 1061 { "nop", 0 }, 1062 { "nop", 0 }, 1063 { "nop", 0 } 1064 ]; 1065 1066 /** 1067 * IY instructions (FD) table for Z80. 1068 * Invalid instructions are marked nop. 1069 */ 1070 immutable z80[] insnz80fd = [ 1071 { "nop", 0 }, 1072 { "nop", 0 }, 1073 { "nop", 0 }, 1074 { "nop", 0 }, 1075 { "nop", 0 }, 1076 { "nop", 0 }, 1077 { "nop", 0 }, 1078 { "nop", 0 }, 1079 { "nop", 0 }, 1080 { "add\tiy, bc", 0 }, 1081 { "nop", 0 }, 1082 { "nop", 0 }, 1083 { "nop", 0 }, 1084 { "nop", 0 }, 1085 { "nop", 0 }, 1086 { "nop", 0 }, 1087 { "nop", 0 }, 1088 { "nop", 0 }, 1089 { "nop", 0 }, 1090 { "nop", 0 }, 1091 { "nop", 0 }, 1092 { "nop", 0 }, 1093 { "nop", 0 }, 1094 { "nop", 0 }, 1095 { "nop", 0 }, 1096 { "add\tiy, de", 0 }, 1097 { "nop", 0 }, 1098 { "nop", 0 }, 1099 { "nop", 0 }, 1100 { "nop", 0 }, 1101 { "nop", 0 }, 1102 { "nop", 0 }, 1103 { "nop", 0 }, 1104 { "ld\tiy, %02x%02xh", 2 }, 1105 { "ld\t(%02x%02xh), iy", 2 }, 1106 { "inc\tiy", 0 }, 1107 { "inc\tiyh", 0 }, 1108 { "dec\tiyh", 0 }, 1109 { "ld\tiyh, %02xh", 1 }, 1110 { "nop", 0 }, 1111 { "nop", 0 }, 1112 { "add\tiy, iy", 0 }, 1113 { "ld\tiy, (%02x%02xh)", 2 }, 1114 { "dec\tiy", 0 }, 1115 { "inc\tiyl", 0 }, 1116 { "dec\tiyl", 0 }, 1117 { "ld\tiyl, %02xh", 1 }, 1118 { "nop", 0 }, 1119 { "nop", 0 }, 1120 { "nop", 0 }, 1121 { "nop", 0 }, 1122 { "nop", 0 }, 1123 { "inc\t(iy+%02xh)", 1 }, 1124 { "dec\t(iy+%02xh)", 1 }, 1125 { "ld\t(iy+%02xh), %02xh", 2 }, 1126 { "nop", 0 }, 1127 { "nop", 0 }, 1128 { "add\tiy, sp", 0 }, 1129 { "nop", 0 }, 1130 { "nop", 0 }, 1131 { "nop", 0 }, 1132 { "nop", 0 }, 1133 { "nop", 0 }, 1134 { "nop", 0 }, 1135 { "nop", 0 }, 1136 { "nop", 0 }, 1137 { "nop", 0 }, 1138 { "nop", 0 }, 1139 { "ld\tb, iyh", 0 }, 1140 { "ld\tb, iyl", 0 }, 1141 { "ld\tb, (iy+%02xh)", 1 }, 1142 { "nop", 0 }, 1143 { "nop", 0 }, 1144 { "nop", 0 }, 1145 { "nop", 0 }, 1146 { "nop", 0 }, 1147 { "ld\tc, iyh", 0 }, 1148 { "ld\tc, iyl", 0 }, 1149 { "ld\tc, (iy+%02xh)", 1 }, 1150 { "nop", 0 }, 1151 { "nop", 0 }, 1152 { "nop", 0 }, 1153 { "nop", 0 }, 1154 { "nop", 0 }, 1155 { "ld\td, iyh", 0 }, 1156 { "ld\td, iyl", 0 }, 1157 { "ld\td, (iy+%02xh)", 1 }, 1158 { "nop", 0 }, 1159 { "nop", 0 }, 1160 { "nop", 0 }, 1161 { "nop", 0 }, 1162 { "nop", 0 }, 1163 { "ld\te, iyh", 0 }, 1164 { "ld\te, iyl", 0 }, 1165 { "ld\te, (iy+%02xh)", 1 }, 1166 { "nop", 0 }, 1167 { "ld\tiyh, b", 0 }, 1168 { "ld\tiyh, c", 0 }, 1169 { "ld\tiyh, d", 0 }, 1170 { "ld\tiyh, e", 0 }, 1171 { "ld\tiyh, iyh", 0 }, 1172 { "ld\tiyh, iyl", 0 }, 1173 { "ld\th, (iy+%02xh)", 1 }, 1174 { "ld\tiyh, a", 0 }, 1175 { "ld\tiyl, b", 0 }, 1176 { "ld\tiyl, c", 0 }, 1177 { "ld\tiyl, d", 0 }, 1178 { "ld\tiyl, e", 0 }, 1179 { "ld\tiyl, iyh", 0 }, 1180 { "ld\tiyl, iyl", 0 }, 1181 { "ld\tl, (iy+%02xh)", 1 }, 1182 { "ld\tiyl, a", 0 }, 1183 { "ld\t(iy+%02xh), b", 1 }, 1184 { "ld\t(iy+%02xh), c", 1 }, 1185 { "ld\t(iy+%02xh), d", 1 }, 1186 { "ld\t(iy+%02xh), e", 1 }, 1187 { "ld\t(iy+%02xh), h", 1 }, 1188 { "ld\t(iy+%02xh), l", 1 }, 1189 { "nop", 0 }, 1190 { "ld\t(iy+%02xh), a", 1 }, 1191 { "nop", 0 }, 1192 { "nop", 0 }, 1193 { "nop", 0 }, 1194 { "nop", 0 }, 1195 { "ld\ta, iyh", 0 }, 1196 { "ld\ta, iyl", 0 }, 1197 { "ld\ta, (iy+%02xh)", 0 }, 1198 { "nop", 0 }, 1199 { "nop", 0 }, 1200 { "nop", 0 }, 1201 { "nop", 0 }, 1202 { "nop", 0 }, 1203 { "add\ta, iyh", 0 }, 1204 { "add\ta, iyl", 0 }, 1205 { "add\ta, (iy+%02xh)", 1 }, 1206 { "nop", 0 }, 1207 { "nop", 0 }, 1208 { "nop", 0 }, 1209 { "nop", 0 }, 1210 { "nop", 0 }, 1211 { "adc\ta, iyh", 0 }, 1212 { "adc\ta, iyl", 0 }, 1213 { "adc\ta, (iy+%02xh)", 0 }, 1214 { "nop", 0 }, 1215 { "nop", 0 }, 1216 { "nop", 0 }, 1217 { "nop", 0 }, 1218 { "nop", 0 }, 1219 { "sub\tiyh", 0 }, 1220 { "sub\tiyl", 0 }, 1221 { "sub\t(iy+%02xh)", 1 }, 1222 { "nop", 0 }, 1223 { "nop", 0 }, 1224 { "nop", 0 }, 1225 { "nop", 0 }, 1226 { "nop", 0 }, 1227 { "sbc\ta, iyh", 0 }, 1228 { "sbc\ta, iyl", 0 }, 1229 { "sbc\ta, (iy+%02xh)", 1 }, 1230 { "nop", 0 }, 1231 { "nop", 0 }, 1232 { "nop", 0 }, 1233 { "nop", 0 }, 1234 { "nop", 0 }, 1235 { "and\tiyh", 0 }, 1236 { "and\tiyl", 0 }, 1237 { "and\t(iy+%02xh)", 1 }, 1238 { "nop", 0 }, 1239 { "nop", 0 }, 1240 { "nop", 0 }, 1241 { "nop", 0 }, 1242 { "nop", 0 }, 1243 { "xor\tiyh", 0 }, 1244 { "xor\tiyl", 0 }, 1245 { "xor\t(iy+%02xh)", 1 }, 1246 { "nop", 0 }, 1247 { "nop", 0 }, 1248 { "nop", 0 }, 1249 { "nop", 0 }, 1250 { "nop", 0 }, 1251 { "or\tiyh", 0 }, 1252 { "or\tiyl", 0 }, 1253 { "or\t(iy+%02xh)", 1 }, 1254 { "nop", 0 }, 1255 { "nop", 0 }, 1256 { "nop", 0 }, 1257 { "nop", 0 }, 1258 { "nop", 0 }, 1259 { "cp\tiyh", 0 }, 1260 { "cp\tiyl", 0 }, 1261 { "cp\t(iy+%02xh)", 1 }, 1262 { "nop", 0 }, 1263 { "nop", 0 }, 1264 { "nop", 0 }, 1265 { "nop", 0 }, 1266 { "nop", 0 }, 1267 { "nop", 0 }, 1268 { "nop", 0 }, 1269 { "nop", 0 }, 1270 { "nop", 0 }, 1271 { "nop", 0 }, 1272 { "nop", 0 }, 1273 { "nop", 0 }, 1274 { "IY BITS", 0 }, 1275 { "nop", 0 }, 1276 { "nop", 0 }, 1277 { "nop", 0 }, 1278 { "nop", 0 }, 1279 { "nop", 0 }, 1280 { "nop", 0 }, 1281 { "nop", 0 }, 1282 { "nop", 0 }, 1283 { "nop", 0 }, 1284 { "nop", 0 }, 1285 { "nop", 0 }, 1286 { "nop", 0 }, 1287 { "nop", 0 }, 1288 { "nop", 0 }, 1289 { "nop", 0 }, 1290 { "nop", 0 }, 1291 { "nop", 0 }, 1292 { "nop", 0 }, 1293 { "nop", 0 }, 1294 { "nop", 0 }, 1295 { "nop", 0 }, 1296 { "pop\tiy", 0 }, 1297 { "nop", 0 }, 1298 { "ex\t(sp), iy", 0 }, 1299 { "nop", 0 }, 1300 { "push\tiy", 0 }, 1301 { "nop", 0 }, 1302 { "nop", 0 }, 1303 { "nop", 0 }, 1304 { "jp\t(iy)", 0 }, 1305 { "nop", 0 }, 1306 { "nop", 0 }, 1307 { "nop", 0 }, 1308 { "nop", 0 }, 1309 { "nop", 0 }, 1310 { "nop", 0 }, 1311 { "nop", 0 }, 1312 { "nop", 0 }, 1313 { "nop", 0 }, 1314 { "nop", 0 }, 1315 { "nop", 0 }, 1316 { "nop", 0 }, 1317 { "nop", 0 }, 1318 { "nop", 0 }, 1319 { "nop", 0 }, 1320 { "ld\tsp, iy", 0 }, 1321 { "nop", 0 }, 1322 { "nop", 0 }, 1323 { "nop", 0 }, 1324 { "nop", 0 }, 1325 { "nop", 0 }, 1326 { "nop", 0 } 1327 ]; 1328 1329 /** 1330 * IX bit instructions (DDCB) table for Z80. 1331 */ 1332 immutable z80[] insnz80ddcb = [ 1333 { "rlc\t(ix+%02xh), b", 2 }, 1334 { "rlc\t(ix+%02xh), c", 2 }, 1335 { "rlc\t(ix+%02xh), d", 2 }, 1336 { "rlc\t(ix+%02xh), e", 2 }, 1337 { "rlc\t(ix+%02xh), h", 2 }, 1338 { "rlc\t(ix+%02xh), l", 2 }, 1339 { "rlc\t(ix+%02xh)", 2 }, 1340 { "rlc\t(ix+%02xh), a", 2 }, 1341 { "rrc\t(ix+%02xh), b", 2 }, 1342 { "rrc\t(ix+%02xh), c", 2 }, 1343 { "rrc\t(ix+%02xh), d", 2 }, 1344 { "rrc\t(ix+%02xh), e", 2 }, 1345 { "rrc\t(ix+%02xh), h", 2 }, 1346 { "rrc\t(ix+%02xh), l", 2 }, 1347 { "rrc\t(ix+%02xh)", 2 }, 1348 { "rrc\t(ix+%02xh), a", 2 }, 1349 { "rl\t(ix+%02xh), b", 2 }, 1350 { "rl\t(ix+%02xh), c", 2 }, 1351 { "rl\t(ix+%02xh), d", 2 }, 1352 { "rl\t(ix+%02xh), e", 2 }, 1353 { "rl\t(ix+%02xh), h", 2 }, 1354 { "rl\t(ix+%02xh), l", 2 }, 1355 { "rl\t(ix+%02xh)", 2 }, 1356 { "rl\t(ix+%02xh), a", 2 }, 1357 { "rr\t(ix+%02xh), b", 2 }, 1358 { "rr\t(ix+%02xh), c", 2 }, 1359 { "rr\t(ix+%02xh), d", 2 }, 1360 { "rr\t(ix+%02xh), e", 2 }, 1361 { "rr\t(ix+%02xh), h", 2 }, 1362 { "rr\t(ix+%02xh), l", 2 }, 1363 { "rr\t(ix+%02xh)", 2 }, 1364 { "rr\t(ix+%02xh), a", 2 }, 1365 { "sla\t(ix+%02xh), b", 2 }, 1366 { "sla\t(ix+%02xh), c", 2 }, 1367 { "sla\t(ix+%02xh), d", 2 }, 1368 { "sla\t(ix+%02xh), e", 2 }, 1369 { "sla\t(ix+%02xh), h", 2 }, 1370 { "sla\t(ix+%02xh), l", 2 }, 1371 { "sla\t(ix+%02xh)", 2 }, 1372 { "sla\t(ix+%02xh), a", 2 }, 1373 { "sra\t(ix+%02xh), b", 2 }, 1374 { "sra\t(ix+%02xh), c", 2 }, 1375 { "sra\t(ix+%02xh), d", 2 }, 1376 { "sra\t(ix+%02xh), e", 2 }, 1377 { "sra\t(ix+%02xh), h", 2 }, 1378 { "sra\t(ix+%02xh), l", 2 }, 1379 { "sra\t(ix+%02xh)", 2 }, 1380 { "sra\t(ix+%02xh), a", 2 }, 1381 { "sll\t(ix+%02xh), b", 2 }, 1382 { "sll\t(ix+%02xh), c", 2 }, 1383 { "sll\t(ix+%02xh), d", 2 }, 1384 { "sll\t(ix+%02xh), e", 2 }, 1385 { "sll\t(ix+%02xh), h", 2 }, 1386 { "sll\t(ix+%02xh), l", 2 }, 1387 { "sll\t(ix+%02xh)", 2 }, 1388 { "sll\t(ix+%02xh), a", 2 }, 1389 { "srl\t(ix+%02xh), b", 2 }, 1390 { "srl\t(ix+%02xh), c", 2 }, 1391 { "srl\t(ix+%02xh), d", 2 }, 1392 { "srl\t(ix+%02xh), e", 2 }, 1393 { "srl\t(ix+%02xh), h", 2 }, 1394 { "srl\t(ix+%02xh), l", 2 }, 1395 { "srl\t(ix+%02xh)", 2 }, 1396 { "srl\t(ix+%02xh), a", 2 }, 1397 { "bit\t0, (ix+%02xh)", 2 }, 1398 { "bit\t0, (ix+%02xh)", 2 }, 1399 { "bit\t0, (ix+%02xh)", 2 }, 1400 { "bit\t0, (ix+%02xh)", 2 }, 1401 { "bit\t0, (ix+%02xh)", 2 }, 1402 { "bit\t0, (ix+%02xh)", 2 }, 1403 { "bit\t0, (ix+%02xh)", 2 }, 1404 { "bit\t0, (ix+%02xh)", 2 }, 1405 { "bit\t1, (ix+%02xh)", 2 }, 1406 { "bit\t1, (ix+%02xh)", 2 }, 1407 { "bit\t1, (ix+%02xh)", 2 }, 1408 { "bit\t1, (ix+%02xh)", 2 }, 1409 { "bit\t1, (ix+%02xh)", 2 }, 1410 { "bit\t1, (ix+%02xh)", 2 }, 1411 { "bit\t1, (ix+%02xh)", 2 }, 1412 { "bit\t1, (ix+%02xh)", 2 }, 1413 { "bit\t2, (ix+%02xh)", 2 }, 1414 { "bit\t2, (ix+%02xh)", 2 }, 1415 { "bit\t2, (ix+%02xh)", 2 }, 1416 { "bit\t2, (ix+%02xh)", 2 }, 1417 { "bit\t2, (ix+%02xh)", 2 }, 1418 { "bit\t2, (ix+%02xh)", 2 }, 1419 { "bit\t2, (ix+%02xh)", 2 }, 1420 { "bit\t2, (ix+%02xh)", 2 }, 1421 { "bit\t3, (ix+%02xh)", 2 }, 1422 { "bit\t3, (ix+%02xh)", 2 }, 1423 { "bit\t3, (ix+%02xh)", 2 }, 1424 { "bit\t3, (ix+%02xh)", 2 }, 1425 { "bit\t3, (ix+%02xh)", 2 }, 1426 { "bit\t3, (ix+%02xh)", 2 }, 1427 { "bit\t3, (ix+%02xh)", 2 }, 1428 { "bit\t3, (ix+%02xh)", 2 }, 1429 { "bit\t4, (ix+%02xh)", 2 }, 1430 { "bit\t4, (ix+%02xh)", 2 }, 1431 { "bit\t4, (ix+%02xh)", 2 }, 1432 { "bit\t4, (ix+%02xh)", 2 }, 1433 { "bit\t4, (ix+%02xh)", 2 }, 1434 { "bit\t4, (ix+%02xh)", 2 }, 1435 { "bit\t4, (ix+%02xh)", 2 }, 1436 { "bit\t4, (ix+%02xh)", 2 }, 1437 { "bit\t5, (ix+%02xh)", 2 }, 1438 { "bit\t5, (ix+%02xh)", 2 }, 1439 { "bit\t5, (ix+%02xh)", 2 }, 1440 { "bit\t5, (ix+%02xh)", 2 }, 1441 { "bit\t5, (ix+%02xh)", 2 }, 1442 { "bit\t5, (ix+%02xh)", 2 }, 1443 { "bit\t5, (ix+%02xh)", 2 }, 1444 { "bit\t5, (ix+%02xh)", 2 }, 1445 { "bit\t6, (ix+%02xh)", 2 }, 1446 { "bit\t6, (ix+%02xh)", 2 }, 1447 { "bit\t6, (ix+%02xh)", 2 }, 1448 { "bit\t6, (ix+%02xh)", 2 }, 1449 { "bit\t6, (ix+%02xh)", 2 }, 1450 { "bit\t6, (ix+%02xh)", 2 }, 1451 { "bit\t6, (ix+%02xh)", 2 }, 1452 { "bit\t6, (ix+%02xh)", 2 }, 1453 { "bit\t7, (ix+%02xh)", 2 }, 1454 { "bit\t7, (ix+%02xh)", 2 }, 1455 { "bit\t7, (ix+%02xh)", 2 }, 1456 { "bit\t7, (ix+%02xh)", 2 }, 1457 { "bit\t7, (ix+%02xh)", 2 }, 1458 { "bit\t7, (ix+%02xh)", 2 }, 1459 { "bit\t7, (ix+%02xh)", 2 }, 1460 { "bit\t7, (ix+%02xh)", 2 }, 1461 { "res\t0, (ix+%02xh), b", 2 }, 1462 { "res\t0, (ix+%02xh), c", 2 }, 1463 { "res\t0, (ix+%02xh), d", 2 }, 1464 { "res\t0, (ix+%02xh), e", 2 }, 1465 { "res\t0, (ix+%02xh), h", 2 }, 1466 { "res\t0, (ix+%02xh), l", 2 }, 1467 { "res\t0, (ix+%02xh)", 2 }, 1468 { "res\t0, (ix+%02xh), a", 2 }, 1469 { "res\t1, (ix+%02xh), b", 2 }, 1470 { "res\t1, (ix+%02xh), c", 2 }, 1471 { "res\t1, (ix+%02xh), d", 2 }, 1472 { "res\t1, (ix+%02xh), e", 2 }, 1473 { "res\t1, (ix+%02xh), h", 2 }, 1474 { "res\t1, (ix+%02xh), l", 2 }, 1475 { "res\t1, (ix+%02xh)", 2 }, 1476 { "res\t1, (ix+%02xh), a", 2 }, 1477 { "res\t2, (ix+%02xh), b", 2 }, 1478 { "res\t2, (ix+%02xh), c", 2 }, 1479 { "res\t2, (ix+%02xh), d", 2 }, 1480 { "res\t2, (ix+%02xh), e", 2 }, 1481 { "res\t2, (ix+%02xh), h", 2 }, 1482 { "res\t2, (ix+%02xh), l", 2 }, 1483 { "res\t2, (ix+%02xh)", 2 }, 1484 { "res\t2, (ix+%02xh), a", 2 }, 1485 { "res\t3, (ix+%02xh), b", 2 }, 1486 { "res\t3, (ix+%02xh), c", 2 }, 1487 { "res\t3, (ix+%02xh), d", 2 }, 1488 { "res\t3, (ix+%02xh), e", 2 }, 1489 { "res\t3, (ix+%02xh), h", 2 }, 1490 { "res\t3, (ix+%02xh), l", 2 }, 1491 { "res\t3, (ix+%02xh)", 2 }, 1492 { "res\t3, (ix+%02xh), a", 2 }, 1493 { "res\t4, (ix+%02xh), b", 2 }, 1494 { "res\t4, (ix+%02xh), c", 2 }, 1495 { "res\t4, (ix+%02xh), d", 2 }, 1496 { "res\t4, (ix+%02xh), e", 2 }, 1497 { "res\t4, (ix+%02xh), h", 2 }, 1498 { "res\t4, (ix+%02xh), l", 2 }, 1499 { "res\t4, (ix+%02xh)", 2 }, 1500 { "res\t4, (ix+%02xh), a", 2 }, 1501 { "res\t5, (ix+%02xh), b", 2 }, 1502 { "res\t5, (ix+%02xh), c", 2 }, 1503 { "res\t5, (ix+%02xh), d", 2 }, 1504 { "res\t5, (ix+%02xh), e", 2 }, 1505 { "res\t5, (ix+%02xh), h", 2 }, 1506 { "res\t5, (ix+%02xh), l", 2 }, 1507 { "res\t5, (ix+%02xh)", 2 }, 1508 { "res\t5, (ix+%02xh), a", 2 }, 1509 { "res\t6, (ix+%02xh), b", 2 }, 1510 { "res\t6, (ix+%02xh), c", 2 }, 1511 { "res\t6, (ix+%02xh), d", 2 }, 1512 { "res\t6, (ix+%02xh), e", 2 }, 1513 { "res\t6, (ix+%02xh), h", 2 }, 1514 { "res\t6, (ix+%02xh), l", 2 }, 1515 { "res\t6, (ix+%02xh)", 2 }, 1516 { "res\t6, (ix+%02xh), a", 2 }, 1517 { "res\t7, (ix+%02xh), b", 2 }, 1518 { "res\t7, (ix+%02xh), c", 2 }, 1519 { "res\t7, (ix+%02xh), d", 2 }, 1520 { "res\t7, (ix+%02xh), e", 2 }, 1521 { "res\t7, (ix+%02xh), h", 2 }, 1522 { "res\t7, (ix+%02xh), l", 2 }, 1523 { "res\t7, (ix+%02xh)", 2 }, 1524 { "res\t7, (ix+%02xh), a", 2 }, 1525 { "set\t0, (ix+%02xh), b", 2 }, 1526 { "set\t0, (ix+%02xh), c", 2 }, 1527 { "set\t0, (ix+%02xh), d", 2 }, 1528 { "set\t0, (ix+%02xh), e", 2 }, 1529 { "set\t0, (ix+%02xh), h", 2 }, 1530 { "set\t0, (ix+%02xh), l", 2 }, 1531 { "set\t0, (ix+%02xh)", 2 }, 1532 { "set\t0, (ix+%02xh), a", 2 }, 1533 { "set\t1, (ix+%02xh), b", 2 }, 1534 { "set\t1, (ix+%02xh), c", 2 }, 1535 { "set\t1, (ix+%02xh), d", 2 }, 1536 { "set\t1, (ix+%02xh), e", 2 }, 1537 { "set\t1, (ix+%02xh), h", 2 }, 1538 { "set\t1, (ix+%02xh), l", 2 }, 1539 { "set\t1, (ix+%02xh)", 2 }, 1540 { "set\t1, (ix+%02xh), a", 2 }, 1541 { "set\t2, (ix+%02xh), b", 2 }, 1542 { "set\t2, (ix+%02xh), c", 2 }, 1543 { "set\t2, (ix+%02xh), d", 2 }, 1544 { "set\t2, (ix+%02xh), e", 2 }, 1545 { "set\t2, (ix+%02xh), h", 2 }, 1546 { "set\t2, (ix+%02xh), l", 2 }, 1547 { "set\t2, (ix+%02xh)", 2 }, 1548 { "set\t2, (ix+%02xh), a", 2 }, 1549 { "set\t3, (ix+%02xh), b", 2 }, 1550 { "set\t3, (ix+%02xh), c", 2 }, 1551 { "set\t3, (ix+%02xh), d", 2 }, 1552 { "set\t3, (ix+%02xh), e", 2 }, 1553 { "set\t3, (ix+%02xh), h", 2 }, 1554 { "set\t3, (ix+%02xh), l", 2 }, 1555 { "set\t3, (ix+%02xh)", 2 }, 1556 { "set\t3, (ix+%02xh), a", 2 }, 1557 { "set\t4, (ix+%02xh), b", 2 }, 1558 { "set\t4, (ix+%02xh), c", 2 }, 1559 { "set\t4, (ix+%02xh), d", 2 }, 1560 { "set\t4, (ix+%02xh), e", 2 }, 1561 { "set\t4, (ix+%02xh), h", 2 }, 1562 { "set\t4, (ix+%02xh), l", 2 }, 1563 { "set\t4, (ix+%02xh)", 2 }, 1564 { "set\t4, (ix+%02xh), a", 2 }, 1565 { "set\t5, (ix+%02xh), b", 2 }, 1566 { "set\t5, (ix+%02xh), c", 2 }, 1567 { "set\t5, (ix+%02xh), d", 2 }, 1568 { "set\t5, (ix+%02xh), e", 2 }, 1569 { "set\t5, (ix+%02xh), h", 2 }, 1570 { "set\t5, (ix+%02xh), l", 2 }, 1571 { "set\t5, (ix+%02xh)", 2 }, 1572 { "set\t5, (ix+%02xh), a", 2 }, 1573 { "set\t6, (ix+%02xh), b", 2 }, 1574 { "set\t6, (ix+%02xh), c", 2 }, 1575 { "set\t6, (ix+%02xh), d", 2 }, 1576 { "set\t6, (ix+%02xh), e", 2 }, 1577 { "set\t6, (ix+%02xh), h", 2 }, 1578 { "set\t6, (ix+%02xh), l", 2 }, 1579 { "set\t6, (ix+%02xh)", 2 }, 1580 { "set\t6, (ix+%02xh), a", 2 }, 1581 { "set\t7, (ix+%02xh), b", 2 }, 1582 { "set\t7, (ix+%02xh), c", 2 }, 1583 { "set\t7, (ix+%02xh), d", 2 }, 1584 { "set\t7, (ix+%02xh), e", 2 }, 1585 { "set\t7, (ix+%02xh), h", 2 }, 1586 { "set\t7, (ix+%02xh), l", 2 }, 1587 { "set\t7, (ix+%02xh)", 2 }, 1588 { "set\t7, (ix+%02xh), a", 2 } 1589 ]; 1590 1591 /** 1592 * IY bit instructions (FDCB) table for Z80. 1593 */ 1594 immutable z80[] insnz80fdcb = [ 1595 { "rlc\t(iy+%02xh), b", 2 }, 1596 { "rlc\t(iy+%02xh), c", 2 }, 1597 { "rlc\t(iy+%02xh), d", 2 }, 1598 { "rlc\t(iy+%02xh), e", 2 }, 1599 { "rlc\t(iy+%02xh), h", 2 }, 1600 { "rlc\t(iy+%02xh), l", 2 }, 1601 { "rlc\t(iy+%02xh)", 2 }, 1602 { "rlc\t(iy+%02xh), a", 2 }, 1603 { "rrc\t(iy+%02xh), b", 2 }, 1604 { "rrc\t(iy+%02xh), c", 2 }, 1605 { "rrc\t(iy+%02xh), d", 2 }, 1606 { "rrc\t(iy+%02xh), e", 2 }, 1607 { "rrc\t(iy+%02xh), h", 2 }, 1608 { "rrc\t(iy+%02xh), l", 2 }, 1609 { "rrc\t(iy+%02xh)", 2 }, 1610 { "rrc\t(iy+%02xh), a", 2 }, 1611 { "rl\t(iy+%02xh), b", 2 }, 1612 { "rl\t(iy+%02xh), c", 2 }, 1613 { "rl\t(iy+%02xh), d", 2 }, 1614 { "rl\t(iy+%02xh), e", 2 }, 1615 { "rl\t(iy+%02xh), h", 2 }, 1616 { "rl\t(iy+%02xh), l", 2 }, 1617 { "rl\t(iy+%02xh)", 2 }, 1618 { "rl\t(iy+%02xh), a", 2 }, 1619 { "rr\t(iy+%02xh), b", 2 }, 1620 { "rr\t(iy+%02xh), c", 2 }, 1621 { "rr\t(iy+%02xh), d", 2 }, 1622 { "rr\t(iy+%02xh), e", 2 }, 1623 { "rr\t(iy+%02xh), h", 2 }, 1624 { "rr\t(iy+%02xh), l", 2 }, 1625 { "rr\t(iy+%02xh)", 2 }, 1626 { "rr\t(iy+%02xh), a", 2 }, 1627 { "sla\t(iy+%02xh), b", 2 }, 1628 { "sla\t(iy+%02xh), c", 2 }, 1629 { "sla\t(iy+%02xh), d", 2 }, 1630 { "sla\t(iy+%02xh), e", 2 }, 1631 { "sla\t(iy+%02xh), h", 2 }, 1632 { "sla\t(iy+%02xh), l", 2 }, 1633 { "sla\t(iy+%02xh)", 2 }, 1634 { "sla\t(iy+%02xh), a", 2 }, 1635 { "sra\t(iy+%02xh), b", 2 }, 1636 { "sra\t(iy+%02xh), c", 2 }, 1637 { "sra\t(iy+%02xh), d", 2 }, 1638 { "sra\t(iy+%02xh), e", 2 }, 1639 { "sra\t(iy+%02xh), h", 2 }, 1640 { "sra\t(iy+%02xh), l", 2 }, 1641 { "sra\t(iy+%02xh)", 2 }, 1642 { "sra\t(iy+%02xh), a", 2 }, 1643 { "sll\t(iy+%02xh), b", 2 }, 1644 { "sll\t(iy+%02xh), c", 2 }, 1645 { "sll\t(iy+%02xh), d", 2 }, 1646 { "sll\t(iy+%02xh), e", 2 }, 1647 { "sll\t(iy+%02xh), h", 2 }, 1648 { "sll\t(iy+%02xh), l", 2 }, 1649 { "sll\t(iy+%02xh)", 2 }, 1650 { "sll\t(iy+%02xh), a", 2 }, 1651 { "srl\t(iy+%02xh), b", 2 }, 1652 { "srl\t(iy+%02xh), c", 2 }, 1653 { "srl\t(iy+%02xh), d", 2 }, 1654 { "srl\t(iy+%02xh), e", 2 }, 1655 { "srl\t(iy+%02xh), h", 2 }, 1656 { "srl\t(iy+%02xh), l", 2 }, 1657 { "srl\t(iy+%02xh)", 2 }, 1658 { "srl\t(iy+%02xh), a", 2 }, 1659 { "bit\t0, (iy+%02xh)", 2 }, 1660 { "bit\t0, (iy+%02xh)", 2 }, 1661 { "bit\t0, (iy+%02xh)", 2 }, 1662 { "bit\t0, (iy+%02xh)", 2 }, 1663 { "bit\t0, (iy+%02xh)", 2 }, 1664 { "bit\t0, (iy+%02xh)", 2 }, 1665 { "bit\t0, (iy+%02xh)", 2 }, 1666 { "bit\t0, (iy+%02xh)", 2 }, 1667 { "bit\t1, (iy+%02xh)", 2 }, 1668 { "bit\t1, (iy+%02xh)", 2 }, 1669 { "bit\t1, (iy+%02xh)", 2 }, 1670 { "bit\t1, (iy+%02xh)", 2 }, 1671 { "bit\t1, (iy+%02xh)", 2 }, 1672 { "bit\t1, (iy+%02xh)", 2 }, 1673 { "bit\t1, (iy+%02xh)", 2 }, 1674 { "bit\t1, (iy+%02xh)", 2 }, 1675 { "bit\t2, (iy+%02xh)", 2 }, 1676 { "bit\t2, (iy+%02xh)", 2 }, 1677 { "bit\t2, (iy+%02xh)", 2 }, 1678 { "bit\t2, (iy+%02xh)", 2 }, 1679 { "bit\t2, (iy+%02xh)", 2 }, 1680 { "bit\t2, (iy+%02xh)", 2 }, 1681 { "bit\t2, (iy+%02xh)", 2 }, 1682 { "bit\t2, (iy+%02xh)", 2 }, 1683 { "bit\t3, (iy+%02xh)", 2 }, 1684 { "bit\t3, (iy+%02xh)", 2 }, 1685 { "bit\t3, (iy+%02xh)", 2 }, 1686 { "bit\t3, (iy+%02xh)", 2 }, 1687 { "bit\t3, (iy+%02xh)", 2 }, 1688 { "bit\t3, (iy+%02xh)", 2 }, 1689 { "bit\t3, (iy+%02xh)", 2 }, 1690 { "bit\t3, (iy+%02xh)", 2 }, 1691 { "bit\t4, (iy+%02xh)", 2 }, 1692 { "bit\t4, (iy+%02xh)", 2 }, 1693 { "bit\t4, (iy+%02xh)", 2 }, 1694 { "bit\t4, (iy+%02xh)", 2 }, 1695 { "bit\t4, (iy+%02xh)", 2 }, 1696 { "bit\t4, (iy+%02xh)", 2 }, 1697 { "bit\t4, (iy+%02xh)", 2 }, 1698 { "bit\t4, (iy+%02xh)", 2 }, 1699 { "bit\t5, (iy+%02xh)", 2 }, 1700 { "bit\t5, (iy+%02xh)", 2 }, 1701 { "bit\t5, (iy+%02xh)", 2 }, 1702 { "bit\t5, (iy+%02xh)", 2 }, 1703 { "bit\t5, (iy+%02xh)", 2 }, 1704 { "bit\t5, (iy+%02xh)", 2 }, 1705 { "bit\t5, (iy+%02xh)", 2 }, 1706 { "bit\t5, (iy+%02xh)", 2 }, 1707 { "bit\t6, (iy+%02xh)", 2 }, 1708 { "bit\t6, (iy+%02xh)", 2 }, 1709 { "bit\t6, (iy+%02xh)", 2 }, 1710 { "bit\t6, (iy+%02xh)", 2 }, 1711 { "bit\t6, (iy+%02xh)", 2 }, 1712 { "bit\t6, (iy+%02xh)", 2 }, 1713 { "bit\t6, (iy+%02xh)", 2 }, 1714 { "bit\t6, (iy+%02xh)", 2 }, 1715 { "bit\t7, (iy+%02xh)", 2 }, 1716 { "bit\t7, (iy+%02xh)", 2 }, 1717 { "bit\t7, (iy+%02xh)", 2 }, 1718 { "bit\t7, (iy+%02xh)", 2 }, 1719 { "bit\t7, (iy+%02xh)", 2 }, 1720 { "bit\t7, (iy+%02xh)", 2 }, 1721 { "bit\t7, (iy+%02xh)", 2 }, 1722 { "bit\t7, (iy+%02xh)", 2 }, 1723 { "res\t0, (iy+%02xh), b", 2 }, 1724 { "res\t0, (iy+%02xh), c", 2 }, 1725 { "res\t0, (iy+%02xh), d", 2 }, 1726 { "res\t0, (iy+%02xh), e", 2 }, 1727 { "res\t0, (iy+%02xh), h", 2 }, 1728 { "res\t0, (iy+%02xh), l", 2 }, 1729 { "res\t0, (iy+%02xh)", 2 }, 1730 { "res\t0, (iy+%02xh), a", 2 }, 1731 { "res\t1, (iy+%02xh), b", 2 }, 1732 { "res\t1, (iy+%02xh), c", 2 }, 1733 { "res\t1, (iy+%02xh), d", 2 }, 1734 { "res\t1, (iy+%02xh), e", 2 }, 1735 { "res\t1, (iy+%02xh), h", 2 }, 1736 { "res\t1, (iy+%02xh), l", 2 }, 1737 { "res\t1, (iy+%02xh)", 2 }, 1738 { "res\t1, (iy+%02xh), a", 2 }, 1739 { "res\t2, (iy+%02xh), b", 2 }, 1740 { "res\t2, (iy+%02xh), c", 2 }, 1741 { "res\t2, (iy+%02xh), d", 2 }, 1742 { "res\t2, (iy+%02xh), e", 2 }, 1743 { "res\t2, (iy+%02xh), h", 2 }, 1744 { "res\t2, (iy+%02xh), l", 2 }, 1745 { "res\t2, (iy+%02xh)", 2 }, 1746 { "res\t2, (iy+%02xh), a", 2 }, 1747 { "res\t3, (iy+%02xh), b", 2 }, 1748 { "res\t3, (iy+%02xh), c", 2 }, 1749 { "res\t3, (iy+%02xh), d", 2 }, 1750 { "res\t3, (iy+%02xh), e", 2 }, 1751 { "res\t3, (iy+%02xh), h", 2 }, 1752 { "res\t3, (iy+%02xh), l", 2 }, 1753 { "res\t3, (iy+%02xh)", 2 }, 1754 { "res\t3, (iy+%02xh), a", 2 }, 1755 { "res\t4, (iy+%02xh), b", 2 }, 1756 { "res\t4, (iy+%02xh), c", 2 }, 1757 { "res\t4, (iy+%02xh), d", 2 }, 1758 { "res\t4, (iy+%02xh), e", 2 }, 1759 { "res\t4, (iy+%02xh), h", 2 }, 1760 { "res\t4, (iy+%02xh), l", 2 }, 1761 { "res\t4, (iy+%02xh)", 2 }, 1762 { "res\t4, (iy+%02xh), a", 2 }, 1763 { "res\t5, (iy+%02xh), b", 2 }, 1764 { "res\t5, (iy+%02xh), c", 2 }, 1765 { "res\t5, (iy+%02xh), d", 2 }, 1766 { "res\t5, (iy+%02xh), e", 2 }, 1767 { "res\t5, (iy+%02xh), h", 2 }, 1768 { "res\t5, (iy+%02xh), l", 2 }, 1769 { "res\t5, (iy+%02xh)", 2 }, 1770 { "res\t5, (iy+%02xh), a", 2 }, 1771 { "res\t6, (iy+%02xh), b", 2 }, 1772 { "res\t6, (iy+%02xh), c", 2 }, 1773 { "res\t6, (iy+%02xh), d", 2 }, 1774 { "res\t6, (iy+%02xh), e", 2 }, 1775 { "res\t6, (iy+%02xh), h", 2 }, 1776 { "res\t6, (iy+%02xh), l", 2 }, 1777 { "res\t6, (iy+%02xh)", 2 }, 1778 { "res\t6, (iy+%02xh), a", 2 }, 1779 { "res\t7, (iy+%02xh), b", 2 }, 1780 { "res\t7, (iy+%02xh), c", 2 }, 1781 { "res\t7, (iy+%02xh), d", 2 }, 1782 { "res\t7, (iy+%02xh), e", 2 }, 1783 { "res\t7, (iy+%02xh), h", 2 }, 1784 { "res\t7, (iy+%02xh), l", 2 }, 1785 { "res\t7, (iy+%02xh)", 2 }, 1786 { "res\t7, (iy+%02xh), a", 2 }, 1787 { "set\t0, (iy+%02xh), b", 2 }, 1788 { "set\t0, (iy+%02xh), c", 2 }, 1789 { "set\t0, (iy+%02xh), d", 2 }, 1790 { "set\t0, (iy+%02xh), e", 2 }, 1791 { "set\t0, (iy+%02xh), h", 2 }, 1792 { "set\t0, (iy+%02xh), l", 2 }, 1793 { "set\t0, (iy+%02xh)", 2 }, 1794 { "set\t0, (iy+%02xh), a", 2 }, 1795 { "set\t1, (iy+%02xh), b", 2 }, 1796 { "set\t1, (iy+%02xh), c", 2 }, 1797 { "set\t1, (iy+%02xh), d", 2 }, 1798 { "set\t1, (iy+%02xh), e", 2 }, 1799 { "set\t1, (iy+%02xh), h", 2 }, 1800 { "set\t1, (iy+%02xh), l", 2 }, 1801 { "set\t1, (iy+%02xh)", 2 }, 1802 { "set\t1, (iy+%02xh), a", 2 }, 1803 { "set\t2, (iy+%02xh), b", 2 }, 1804 { "set\t2, (iy+%02xh), c", 2 }, 1805 { "set\t2, (iy+%02xh), d", 2 }, 1806 { "set\t2, (iy+%02xh), e", 2 }, 1807 { "set\t2, (iy+%02xh), h", 2 }, 1808 { "set\t2, (iy+%02xh), l", 2 }, 1809 { "set\t2, (iy+%02xh)", 2 }, 1810 { "set\t2, (iy+%02xh), a", 2 }, 1811 { "set\t3, (iy+%02xh), b", 2 }, 1812 { "set\t3, (iy+%02xh), c", 2 }, 1813 { "set\t3, (iy+%02xh), d", 2 }, 1814 { "set\t3, (iy+%02xh), e", 2 }, 1815 { "set\t3, (iy+%02xh), h", 2 }, 1816 { "set\t3, (iy+%02xh), l", 2 }, 1817 { "set\t3, (iy+%02xh)", 2 }, 1818 { "set\t3, (iy+%02xh), a", 2 }, 1819 { "set\t4, (iy+%02xh), b", 2 }, 1820 { "set\t4, (iy+%02xh), c", 2 }, 1821 { "set\t4, (iy+%02xh), d", 2 }, 1822 { "set\t4, (iy+%02xh), e", 2 }, 1823 { "set\t4, (iy+%02xh), h", 2 }, 1824 { "set\t4, (iy+%02xh), l", 2 }, 1825 { "set\t4, (iy+%02xh)", 2 }, 1826 { "set\t4, (iy+%02xh), a", 2 }, 1827 { "set\t5, (iy+%02xh), b", 2 }, 1828 { "set\t5, (iy+%02xh), c", 2 }, 1829 { "set\t5, (iy+%02xh), d", 2 }, 1830 { "set\t5, (iy+%02xh), e", 2 }, 1831 { "set\t5, (iy+%02xh), h", 2 }, 1832 { "set\t5, (iy+%02xh), l", 2 }, 1833 { "set\t5, (iy+%02xh)", 2 }, 1834 { "set\t5, (iy+%02xh), a", 2 }, 1835 { "set\t6, (iy+%02xh), b", 2 }, 1836 { "set\t6, (iy+%02xh), c", 2 }, 1837 { "set\t6, (iy+%02xh), d", 2 }, 1838 { "set\t6, (iy+%02xh), e", 2 }, 1839 { "set\t6, (iy+%02xh), h", 2 }, 1840 { "set\t6, (iy+%02xh), l", 2 }, 1841 { "set\t6, (iy+%02xh)", 2 }, 1842 { "set\t6, (iy+%02xh), a", 2 }, 1843 { "set\t7, (iy+%02xh), b", 2 }, 1844 { "set\t7, (iy+%02xh), c", 2 }, 1845 { "set\t7, (iy+%02xh), d", 2 }, 1846 { "set\t7, (iy+%02xh), e", 2 }, 1847 { "set\t7, (iy+%02xh), h", 2 }, 1848 { "set\t7, (iy+%02xh), l", 2 }, 1849 { "set\t7, (iy+%02xh)", 2 }, 1850 { "set\t7, (iy+%02xh), a", 2 } 1851 ];