An emulator, assembler, and disassembler for the Sega Game Gear
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

1860 lines
51 KiB

  1. # Copyright (C) 2014-2015 Ben Kurtovic <ben.kurtovic@gmail.com>
  2. # Released under the terms of the MIT License. See LICENSE for details.
  3. # *** ASM Instruction Description File ***
  4. # This file is used to generate 'instructions.inc.c'.
  5. # `make` should trigger a rebuild when this file is modified; if not, use:
  6. # `python scripts/update_asm_instructions.py`.
  7. ---
  8. adc:
  9. args: yes
  10. cases:
  11. - type: [register, register]
  12. cases:
  13. - cond: [a, a]
  14. return: [0x8F]
  15. - cond: [a, b]
  16. return: [0x88]
  17. - cond: [a, c]
  18. return: [0x89]
  19. - cond: [a, d]
  20. return: [0x8A]
  21. - cond: [a, e]
  22. return: [0x8B]
  23. - cond: [a, h|ih]
  24. return: [0x8C]
  25. - cond: [a, l|il]
  26. return: [0x8D]
  27. - cond: [hl, bc]
  28. return: [0xED, 0x4A]
  29. - cond: [hl, de]
  30. return: [0xED, 0x5A]
  31. - cond: [hl, hl]
  32. return: [0xED, 0x6A]
  33. - cond: [hl, sp]
  34. return: [0xED, 0x7A]
  35. - type: [register, immediate]
  36. cases:
  37. - cond: [a, u8]
  38. return: [0xCE, u8]
  39. - type: [register, indirect_hl_or_indexed]
  40. cases:
  41. - cond: [a, _]
  42. return: [0x8E]
  43. add:
  44. args: yes
  45. cases:
  46. - type: [register, register]
  47. cases:
  48. - cond: [a, a]
  49. return: [0x87]
  50. - cond: [a, b]
  51. return: [0x80]
  52. - cond: [a, c]
  53. return: [0x81]
  54. - cond: [a, d]
  55. return: [0x82]
  56. - cond: [a, e]
  57. return: [0x83]
  58. - cond: [a, h|ih]
  59. return: [0x84]
  60. - cond: [a, l|il]
  61. return: [0x85]
  62. - cond: [hl|i, bc]
  63. return: [0x09]
  64. - cond: [hl|i, de]
  65. return: [0x19]
  66. - cond: [hl|i, hl|i]
  67. return: [0x29]
  68. - cond: [hl|i, sp]
  69. return: [0x39]
  70. - type: [register, immediate]
  71. cases:
  72. - cond: [a, u8]
  73. return: [0xC6, u8]
  74. - type: [register, indirect_hl_or_indexed]
  75. cases:
  76. - cond: [a, _]
  77. return: [0x86]
  78. and:
  79. args: yes
  80. cases:
  81. - type: [register]
  82. cases:
  83. - cond: [a]
  84. return: [0xA7]
  85. - cond: [b]
  86. return: [0xA0]
  87. - cond: [c]
  88. return: [0xA1]
  89. - cond: [d]
  90. return: [0xA2]
  91. - cond: [e]
  92. return: [0xA3]
  93. - cond: [h|ih]
  94. return: [0xA4]
  95. - cond: [l|il]
  96. return: [0xA5]
  97. - type: [immediate]
  98. cases:
  99. - cond: [u8]
  100. return: [0xE6, u8]
  101. - type: [indirect_hl_or_indexed]
  102. cases:
  103. - cond: [_]
  104. return: [0xA6]
  105. bit:
  106. args: yes
  107. cases:
  108. - type: [immediate, register]
  109. cases:
  110. - cond: [bit.0, a]
  111. return: [0xCB, 0x47]
  112. - cond: [bit.0, b]
  113. return: [0xCB, 0x40]
  114. - cond: [bit.0, c]
  115. return: [0xCB, 0x41]
  116. - cond: [bit.0, d]
  117. return: [0xCB, 0x42]
  118. - cond: [bit.0, e]
  119. return: [0xCB, 0x43]
  120. - cond: [bit.0, h]
  121. return: [0xCB, 0x44]
  122. - cond: [bit.0, l]
  123. return: [0xCB, 0x45]
  124. - cond: [bit.1, a]
  125. return: [0xCB, 0x4F]
  126. - cond: [bit.1, b]
  127. return: [0xCB, 0x48]
  128. - cond: [bit.1, c]
  129. return: [0xCB, 0x49]
  130. - cond: [bit.1, d]
  131. return: [0xCB, 0x4A]
  132. - cond: [bit.1, e]
  133. return: [0xCB, 0x4B]
  134. - cond: [bit.1, h]
  135. return: [0xCB, 0x4C]
  136. - cond: [bit.1, l]
  137. return: [0xCB, 0x4D]
  138. - cond: [bit.2, a]
  139. return: [0xCB, 0x57]
  140. - cond: [bit.2, b]
  141. return: [0xCB, 0x50]
  142. - cond: [bit.2, c]
  143. return: [0xCB, 0x51]
  144. - cond: [bit.2, d]
  145. return: [0xCB, 0x52]
  146. - cond: [bit.2, e]
  147. return: [0xCB, 0x53]
  148. - cond: [bit.2, h]
  149. return: [0xCB, 0x54]
  150. - cond: [bit.2, l]
  151. return: [0xCB, 0x55]
  152. - cond: [bit.3, a]
  153. return: [0xCB, 0x5F]
  154. - cond: [bit.3, b]
  155. return: [0xCB, 0x58]
  156. - cond: [bit.3, c]
  157. return: [0xCB, 0x59]
  158. - cond: [bit.3, d]
  159. return: [0xCB, 0x5A]
  160. - cond: [bit.3, e]
  161. return: [0xCB, 0x5B]
  162. - cond: [bit.3, h]
  163. return: [0xCB, 0x5C]
  164. - cond: [bit.3, l]
  165. return: [0xCB, 0x5D]
  166. - cond: [bit.4, a]
  167. return: [0xCB, 0x67]
  168. - cond: [bit.4, b]
  169. return: [0xCB, 0x60]
  170. - cond: [bit.4, c]
  171. return: [0xCB, 0x61]
  172. - cond: [bit.4, d]
  173. return: [0xCB, 0x62]
  174. - cond: [bit.4, e]
  175. return: [0xCB, 0x63]
  176. - cond: [bit.4, h]
  177. return: [0xCB, 0x64]
  178. - cond: [bit.4, l]
  179. return: [0xCB, 0x65]
  180. - cond: [bit.5, a]
  181. return: [0xCB, 0x6F]
  182. - cond: [bit.5, b]
  183. return: [0xCB, 0x68]
  184. - cond: [bit.5, c]
  185. return: [0xCB, 0x69]
  186. - cond: [bit.5, d]
  187. return: [0xCB, 0x6A]
  188. - cond: [bit.5, e]
  189. return: [0xCB, 0x6B]
  190. - cond: [bit.5, h]
  191. return: [0xCB, 0x6C]
  192. - cond: [bit.5, l]
  193. return: [0xCB, 0x6D]
  194. - cond: [bit.6, a]
  195. return: [0xCB, 0x77]
  196. - cond: [bit.6, b]
  197. return: [0xCB, 0x70]
  198. - cond: [bit.6, c]
  199. return: [0xCB, 0x71]
  200. - cond: [bit.6, d]
  201. return: [0xCB, 0x72]
  202. - cond: [bit.6, e]
  203. return: [0xCB, 0x73]
  204. - cond: [bit.6, h]
  205. return: [0xCB, 0x74]
  206. - cond: [bit.6, l]
  207. return: [0xCB, 0x75]
  208. - cond: [bit.7, a]
  209. return: [0xCB, 0x7F]
  210. - cond: [bit.7, b]
  211. return: [0xCB, 0x78]
  212. - cond: [bit.7, c]
  213. return: [0xCB, 0x79]
  214. - cond: [bit.7, d]
  215. return: [0xCB, 0x7A]
  216. - cond: [bit.7, e]
  217. return: [0xCB, 0x7B]
  218. - cond: [bit.7, h]
  219. return: [0xCB, 0x7C]
  220. - cond: [bit.7, l]
  221. return: [0xCB, 0x7D]
  222. - type: [immediate, indirect_hl_or_indexed]
  223. cases:
  224. - cond: [bit.0, _]
  225. return: [0xCB, 0x46]
  226. - cond: [bit.1, _]
  227. return: [0xCB, 0x4E]
  228. - cond: [bit.2, _]
  229. return: [0xCB, 0x56]
  230. - cond: [bit.3, _]
  231. return: [0xCB, 0x5E]
  232. - cond: [bit.4, _]
  233. return: [0xCB, 0x66]
  234. - cond: [bit.5, _]
  235. return: [0xCB, 0x6E]
  236. - cond: [bit.6, _]
  237. return: [0xCB, 0x76]
  238. - cond: [bit.7, _]
  239. return: [0xCB, 0x7E]
  240. call:
  241. args: yes
  242. cases:
  243. - type: [immediate]
  244. cases:
  245. - cond: [u16]
  246. return: [0xCD, u16]
  247. - type: [condition, immediate]
  248. cases:
  249. - cond: [nz, u16]
  250. return: [0xC4, u16]
  251. - cond: [z, u16]
  252. return: [0xCC, u16]
  253. - cond: [nc, u16]
  254. return: [0xD4, u16]
  255. - cond: [c, u16]
  256. return: [0xDC, u16]
  257. - cond: [po, u16]
  258. return: [0xE4, u16]
  259. - cond: [pe, u16]
  260. return: [0xEC, u16]
  261. - cond: [p, u16]
  262. return: [0xF4, u16]
  263. - cond: [m, u16]
  264. return: [0xFC, u16]
  265. ccf:
  266. args: no
  267. return: [0x3F]
  268. cp:
  269. args: yes
  270. cases:
  271. - type: [register]
  272. cases:
  273. - cond: [a]
  274. return: [0xBF]
  275. - cond: [b]
  276. return: [0xB8]
  277. - cond: [c]
  278. return: [0xB9]
  279. - cond: [d]
  280. return: [0xBA]
  281. - cond: [e]
  282. return: [0xBB]
  283. - cond: [h|ih]
  284. return: [0xBC]
  285. - cond: [l|il]
  286. return: [0xBD]
  287. - type: [indirect_hl_or_indexed]
  288. cases:
  289. - cond: [_]
  290. return: [0xBE]
  291. - type: [immediate]
  292. cases:
  293. - cond: [u8]
  294. return: [0xFE, u8]
  295. cpd:
  296. args: no
  297. return: [0xED, 0xA9]
  298. cpdr:
  299. args: no
  300. return: [0xED, 0xB9]
  301. cpi:
  302. args: no
  303. return: [0xED, 0xA1]
  304. cpir:
  305. args: no
  306. return: [0xED, 0xB1]
  307. cpl:
  308. args: no
  309. return: [0x2F]
  310. daa:
  311. args: no
  312. return: [0x27]
  313. dec:
  314. args: yes
  315. cases:
  316. - type: [register]
  317. cases:
  318. - cond: [a]
  319. return: [0x3D]
  320. - cond: [b]
  321. return: [0x05]
  322. - cond: [c]
  323. return: [0x0D]
  324. - cond: [d]
  325. return: [0x15]
  326. - cond: [e]
  327. return: [0x1D]
  328. - cond: [h|ih]
  329. return: [0x25]
  330. - cond: [l|il]
  331. return: [0x2D]
  332. - cond: [bc]
  333. return: [0x0B]
  334. - cond: [de]
  335. return: [0x1B]
  336. - cond: [hl|i]
  337. return: [0x2B]
  338. - cond: [sp]
  339. return: [0x3B]
  340. - type: [indirect_hl_or_indexed]
  341. cases:
  342. - cond: [_]
  343. return: [0x35]
  344. di:
  345. args: no
  346. return: [0xF3]
  347. djnz:
  348. args: yes
  349. cases:
  350. - type: [immediate]
  351. cases:
  352. - cond: [rel]
  353. return: [0x10, rel]
  354. ei:
  355. args: no
  356. return: [0xFB]
  357. ex:
  358. args: yes
  359. cases:
  360. - type: [register, register]
  361. cases:
  362. - cond: [af, af_]
  363. return: [0x08]
  364. - cond: [de, hl]
  365. return: [0xEB]
  366. - type: [indirect, register]
  367. cases:
  368. - cond: [reg.sp, hl|i]
  369. return: [0xE3]
  370. exx:
  371. args: no
  372. return: [0xD9]
  373. halt:
  374. args: no
  375. return: [0x76]
  376. im:
  377. args: yes
  378. cases:
  379. - type: [immediate]
  380. cases:
  381. - cond: [im.0]
  382. return: [0xED, 0x46]
  383. - cond: [im.1]
  384. return: [0xED, 0x56]
  385. - cond: [im.2]
  386. return: [0xED, 0x5E]
  387. in:
  388. args: yes
  389. cases:
  390. - type: [register, port]
  391. cases:
  392. - cond: [a, imm]
  393. return: [0xDB, u8]
  394. - cond: [a, reg.c]
  395. return: [0xED, 0x78]
  396. - cond: [b, reg.c]
  397. return: [0xED, 0x40]
  398. - cond: [c, reg.c]
  399. return: [0xED, 0x48]
  400. - cond: [d, reg.c]
  401. return: [0xED, 0x50]
  402. - cond: [e, reg.c]
  403. return: [0xED, 0x58]
  404. - cond: [h, reg.c]
  405. return: [0xED, 0x60]
  406. - cond: [l, reg.c]
  407. return: [0xED, 0x68]
  408. - type: [port]
  409. cases:
  410. - cond: [reg.c]
  411. return: [0xED, 0x70]
  412. inc:
  413. args: yes
  414. cases:
  415. - type: [register]
  416. cases:
  417. - cond: [a]
  418. return: [0x3C]
  419. - cond: [b]
  420. return: [0x04]
  421. - cond: [c]
  422. return: [0x0C]
  423. - cond: [d]
  424. return: [0x14]
  425. - cond: [e]
  426. return: [0x1C]
  427. - cond: [h|ih]
  428. return: [0x24]
  429. - cond: [l|il]
  430. return: [0x2C]
  431. - cond: [bc]
  432. return: [0x03]
  433. - cond: [de]
  434. return: [0x13]
  435. - cond: [hl|i]
  436. return: [0x23]
  437. - cond: [sp]
  438. return: [0x33]
  439. - type: [indirect_hl_or_indexed]
  440. cases:
  441. - cond: [_]
  442. return: [0x34]
  443. ind:
  444. args: no
  445. return: [0xED, 0xAA]
  446. indr:
  447. args: no
  448. return: [0xED, 0xBA]
  449. ini:
  450. args: no
  451. return: [0xED, 0xA2]
  452. inir:
  453. args: no
  454. return: [0xED, 0xB2]
  455. jp:
  456. args: yes
  457. cases:
  458. - type: [immediate]
  459. cases:
  460. - cond: [u16]
  461. return: [0xC3, u16]
  462. - type: [condition, immediate]
  463. cases:
  464. - cond: [nz, u16]
  465. return: [0xC2, u16]
  466. - cond: [z, u16]
  467. return: [0xCA, u16]
  468. - cond: [nc, u16]
  469. return: [0xD2, u16]
  470. - cond: [c, u16]
  471. return: [0xDA, u16]
  472. - cond: [po, u16]
  473. return: [0xE2, u16]
  474. - cond: [pe, u16]
  475. return: [0xEA, u16]
  476. - cond: [p, u16]
  477. return: [0xF2, u16]
  478. - cond: [m, u16]
  479. return: [0xFA, u16]
  480. - type: [indirect_hl_or_indexed]
  481. cases:
  482. - cond: [_]
  483. return: [0xE9]
  484. jr:
  485. args: yes
  486. cases:
  487. - type: [immediate]
  488. cases:
  489. - cond: [rel]
  490. return: [0x18, rel]
  491. - type: [condition, immediate]
  492. cases:
  493. - cond: [nz, rel]
  494. return: [0x20, rel]
  495. - cond: [z, rel]
  496. return: [0x28, rel]
  497. - cond: [nc, rel]
  498. return: [0x30, rel]
  499. - cond: [c, rel]
  500. return: [0x38, rel]
  501. ld:
  502. args: yes
  503. cases:
  504. - type: [register, register]
  505. cases:
  506. - cond: [a, a]
  507. return: [0x7F]
  508. - cond: [a, b]
  509. return: [0x78]
  510. - cond: [a, c]
  511. return: [0x79]
  512. - cond: [a, d]
  513. return: [0x7A]
  514. - cond: [a, e]
  515. return: [0x7B]
  516. - cond: [a, h|ih]
  517. return: [0x7C]
  518. - cond: [a, l|il]
  519. return: [0x7D]
  520. - cond: [b, a]
  521. return: [0x47]
  522. - cond: [b, b]
  523. return: [0x40]
  524. - cond: [b, c]
  525. return: [0x41]
  526. - cond: [b, d]
  527. return: [0x42]
  528. - cond: [b, e]
  529. return: [0x43]
  530. - cond: [b, h|ih]
  531. return: [0x44]
  532. - cond: [b, l|il]
  533. return: [0x45]
  534. - cond: [c, a]
  535. return: [0x4F]
  536. - cond: [c, b]
  537. return: [0x48]
  538. - cond: [c, c]
  539. return: [0x49]
  540. - cond: [c, d]
  541. return: [0x4A]
  542. - cond: [c, e]
  543. return: [0x4B]
  544. - cond: [c, h|ih]
  545. return: [0x4C]
  546. - cond: [c, l|il]
  547. return: [0x4D]
  548. - cond: [d, a]
  549. return: [0x57]
  550. - cond: [d, b]
  551. return: [0x50]
  552. - cond: [d, c]
  553. return: [0x51]
  554. - cond: [d, d]
  555. return: [0x52]
  556. - cond: [d, e]
  557. return: [0x53]
  558. - cond: [d, h|ih]
  559. return: [0x54]
  560. - cond: [d, l|il]
  561. return: [0x55]
  562. - cond: [e, a]
  563. return: [0x5F]
  564. - cond: [e, b]
  565. return: [0x58]
  566. - cond: [e, c]
  567. return: [0x59]
  568. - cond: [e, d]
  569. return: [0x5A]
  570. - cond: [e, e]
  571. return: [0x5B]
  572. - cond: [e, h|ih]
  573. return: [0x5C]
  574. - cond: [e, l|il]
  575. return: [0x5D]
  576. - cond: [h|ih, a]
  577. return: [0x67]
  578. - cond: [h|ih, b]
  579. return: [0x60]
  580. - cond: [h|ih, c]
  581. return: [0x61]
  582. - cond: [h|ih, d]
  583. return: [0x62]
  584. - cond: [h|ih, e]
  585. return: [0x63]
  586. - cond: [h|ih, h|ih]
  587. return: [0x64]
  588. - cond: [h|ih, l|il]
  589. return: [0x65]
  590. - cond: [l|il, a]
  591. return: [0x6F]
  592. - cond: [l|il, b]
  593. return: [0x68]
  594. - cond: [l|il, c]
  595. return: [0x69]
  596. - cond: [l|il, d]
  597. return: [0x6A]
  598. - cond: [l|il, e]
  599. return: [0x6B]
  600. - cond: [l|il, h|ih]
  601. return: [0x6C]
  602. - cond: [l|il, l|il]
  603. return: [0x6D]
  604. - cond: [a, i]
  605. return: [0xED, 0x57]
  606. - cond: [i, a]
  607. return: [0xED, 0x47]
  608. - cond: [a, r]
  609. return: [0xED, 0x5F]
  610. - cond: [r, a]
  611. return: [0xED, 0x4F]
  612. - cond: [sp, hl|i]
  613. return: [0xF9]
  614. - type: [register, immediate]
  615. cases:
  616. - cond: [a, u8]
  617. return: [0x3E, u8]
  618. - cond: [b, u8]
  619. return: [0x06, u8]
  620. - cond: [c, u8]
  621. return: [0x0E, u8]
  622. - cond: [d, u8]
  623. return: [0x16, u8]
  624. - cond: [e, u8]
  625. return: [0x1E, u8]
  626. - cond: [h|ih, u8]
  627. return: [0x26, u8]
  628. - cond: [l|il, u8]
  629. return: [0x2E, u8]
  630. - cond: [bc, u16]
  631. return: [0x01, u16]
  632. - cond: [de, u16]
  633. return: [0x11, u16]
  634. - cond: [hl|i, u16]
  635. return: [0x21, u16]
  636. - cond: [sp, u16]
  637. return: [0x31, u16]
  638. - type: [register, indirect_hl_or_indexed]
  639. cases:
  640. - cond: [a, _]
  641. return: [0x7E]
  642. - cond: [b, _]
  643. return: [0x46]
  644. - cond: [c, _]
  645. return: [0x4E]
  646. - cond: [d, _]
  647. return: [0x56]
  648. - cond: [e, _]
  649. return: [0x5E]
  650. - cond: [h, _]
  651. return: [0x66]
  652. - cond: [l, _]
  653. return: [0x6E]
  654. - type: [register, indirect]
  655. cases:
  656. - cond: [a, reg.bc]
  657. return: [0x0A]
  658. - cond: [a, reg.de]
  659. return: [0x1A]
  660. - cond: [hl|i, imm]
  661. return: [0x2A, u16]
  662. - cond: [a, imm]
  663. return: [0x3A, u16]
  664. - cond: [bc, imm]
  665. return: [0xED, 0x4B, u16]
  666. - cond: [de, imm]
  667. return: [0xED, 0x5B, u16]
  668. - cond: [sp, imm]
  669. return: [0xED, 0x7B, u16]
  670. - type: [indirect_hl_or_indexed, register]
  671. cases:
  672. - cond: [_, a]
  673. return: [0x77]
  674. - cond: [_, b]
  675. return: [0x70]
  676. - cond: [_, c]
  677. return: [0x71]
  678. - cond: [_, d]
  679. return: [0x72]
  680. - cond: [_, e]
  681. return: [0x73]
  682. - cond: [_, h]
  683. return: [0x74]
  684. - cond: [_, l]
  685. return: [0x75]
  686. - type: [indirect_hl_or_indexed, immediate]
  687. cases:
  688. - cond: [_, u8]
  689. return: [0x36, u8]
  690. - type: [indirect, register]
  691. cases:
  692. - cond: [reg.bc, a]
  693. return: [0x02]
  694. - cond: [reg.de, a]
  695. return: [0x12]
  696. - cond: [imm, hl|i]
  697. return: [0x22, u16]
  698. - cond: [imm, a]
  699. return: [0x32, u16]
  700. - cond: [imm, bc]
  701. return: [0xED, 0x43, u16]
  702. - cond: [imm, de]
  703. return: [0xED, 0x53, u16]
  704. - cond: [imm, sp]
  705. return: [0xED, 0x73, u16]
  706. ldd:
  707. args: no
  708. return: [0xED, 0xA8]
  709. lddr:
  710. args: no
  711. return: [0xED, 0xB8]
  712. ldi:
  713. args: no
  714. return: [0xED, 0xA0]
  715. ldir:
  716. args: no
  717. return: [0xED, 0xB0]
  718. neg:
  719. args: no
  720. return: [0xED, 0x44]
  721. nop:
  722. args: no
  723. return: [0x00]
  724. or:
  725. args: yes
  726. cases:
  727. - type: [register]
  728. cases:
  729. - cond: [a]
  730. return: [0xB7]
  731. - cond: [b]
  732. return: [0xB0]
  733. - cond: [c]
  734. return: [0xB1]
  735. - cond: [d]
  736. return: [0xB2]
  737. - cond: [e]
  738. return: [0xB3]
  739. - cond: [h|ih]
  740. return: [0xB4]
  741. - cond: [l|il]
  742. return: [0xB5]
  743. - type: [immediate]
  744. cases:
  745. - cond: [u8]
  746. return: [0xF6, u8]
  747. - type: [indirect_hl_or_indexed]
  748. cases:
  749. - cond: [_]
  750. return: [0xB6]
  751. otdr:
  752. args: no
  753. return: [0xED, 0xBB]
  754. otir:
  755. args: no
  756. return: [0xED, 0xB3]
  757. out:
  758. args: yes
  759. cases:
  760. - type: [port, register]
  761. cases:
  762. - cond: [imm, a]
  763. return: [0xD3, u8]
  764. - cond: [reg.c, a]
  765. return: [0xED, 0x79]
  766. - cond: [reg.c, b]
  767. return: [0xED, 0x41]
  768. - cond: [reg.c, c]
  769. return: [0xED, 0x49]
  770. - cond: [reg.c, d]
  771. return: [0xED, 0x51]
  772. - cond: [reg.c, e]
  773. return: [0xED, 0x59]
  774. - cond: [reg.c, h]
  775. return: [0xED, 0x61]
  776. - cond: [reg.c, l]
  777. return: [0xED, 0x69]
  778. - type: [port, immediate]
  779. cases:
  780. - cond: [reg.c, u8.0]
  781. return: [0xED, 0x71]
  782. outd:
  783. args: no
  784. return: [0xED, 0xAB]
  785. outi:
  786. args: no
  787. return: [0xED, 0xA3]
  788. pop:
  789. args: yes
  790. cases:
  791. - type: [register]
  792. cases:
  793. - cond: [bc]
  794. return: [0xC1]
  795. - cond: [de]
  796. return: [0xD1]
  797. - cond: [hl|i]
  798. return: [0xE1]
  799. - cond: [af]
  800. return: [0xF1]
  801. push:
  802. args: yes
  803. cases:
  804. - type: [register]
  805. cases:
  806. - cond: [bc]
  807. return: [0xC5]
  808. - cond: [de]
  809. return: [0xD5]
  810. - cond: [hl|i]
  811. return: [0xE5]
  812. - cond: [af]
  813. return: [0xF5]
  814. res:
  815. args: yes
  816. cases:
  817. - type: [immediate, register]
  818. cases:
  819. - cond: [bit.0, a]
  820. return: [0xCB, 0x87]
  821. - cond: [bit.0, b]
  822. return: [0xCB, 0x80]
  823. - cond: [bit.0, c]
  824. return: [0xCB, 0x81]
  825. - cond: [bit.0, d]
  826. return: [0xCB, 0x82]
  827. - cond: [bit.0, e]
  828. return: [0xCB, 0x83]
  829. - cond: [bit.0, h]
  830. return: [0xCB, 0x84]
  831. - cond: [bit.0, l]
  832. return: [0xCB, 0x85]
  833. - cond: [bit.1, a]
  834. return: [0xCB, 0x8F]
  835. - cond: [bit.1, b]
  836. return: [0xCB, 0x88]
  837. - cond: [bit.1, c]
  838. return: [0xCB, 0x89]
  839. - cond: [bit.1, d]
  840. return: [0xCB, 0x8A]
  841. - cond: [bit.1, e]
  842. return: [0xCB, 0x8B]
  843. - cond: [bit.1, h]
  844. return: [0xCB, 0x8C]
  845. - cond: [bit.1, l]
  846. return: [0xCB, 0x8D]
  847. - cond: [bit.2, a]
  848. return: [0xCB, 0x97]
  849. - cond: [bit.2, b]
  850. return: [0xCB, 0x90]
  851. - cond: [bit.2, c]
  852. return: [0xCB, 0x91]
  853. - cond: [bit.2, d]
  854. return: [0xCB, 0x92]
  855. - cond: [bit.2, e]
  856. return: [0xCB, 0x93]
  857. - cond: [bit.2, h]
  858. return: [0xCB, 0x94]
  859. - cond: [bit.2, l]
  860. return: [0xCB, 0x95]
  861. - cond: [bit.3, a]
  862. return: [0xCB, 0x9F]
  863. - cond: [bit.3, b]
  864. return: [0xCB, 0x98]
  865. - cond: [bit.3, c]
  866. return: [0xCB, 0x99]
  867. - cond: [bit.3, d]
  868. return: [0xCB, 0x9A]
  869. - cond: [bit.3, e]
  870. return: [0xCB, 0x9B]
  871. - cond: [bit.3, h]
  872. return: [0xCB, 0x9C]
  873. - cond: [bit.3, l]
  874. return: [0xCB, 0x9D]
  875. - cond: [bit.4, a]
  876. return: [0xCB, 0xA7]
  877. - cond: [bit.4, b]
  878. return: [0xCB, 0xA0]
  879. - cond: [bit.4, c]
  880. return: [0xCB, 0xA1]
  881. - cond: [bit.4, d]
  882. return: [0xCB, 0xA2]
  883. - cond: [bit.4, e]
  884. return: [0xCB, 0xA3]
  885. - cond: [bit.4, h]
  886. return: [0xCB, 0xA4]
  887. - cond: [bit.4, l]
  888. return: [0xCB, 0xA5]
  889. - cond: [bit.5, a]
  890. return: [0xCB, 0xAF]
  891. - cond: [bit.5, b]
  892. return: [0xCB, 0xA8]
  893. - cond: [bit.5, c]
  894. return: [0xCB, 0xA9]
  895. - cond: [bit.5, d]
  896. return: [0xCB, 0xAA]
  897. - cond: [bit.5, e]
  898. return: [0xCB, 0xAB]
  899. - cond: [bit.5, h]
  900. return: [0xCB, 0xAC]
  901. - cond: [bit.5, l]
  902. return: [0xCB, 0xAD]
  903. - cond: [bit.6, a]
  904. return: [0xCB, 0xB7]
  905. - cond: [bit.6, b]
  906. return: [0xCB, 0xB0]
  907. - cond: [bit.6, c]
  908. return: [0xCB, 0xB1]
  909. - cond: [bit.6, d]
  910. return: [0xCB, 0xB2]
  911. - cond: [bit.6, e]
  912. return: [0xCB, 0xB3]
  913. - cond: [bit.6, h]
  914. return: [0xCB, 0xB4]
  915. - cond: [bit.6, l]
  916. return: [0xCB, 0xB5]
  917. - cond: [bit.7, a]
  918. return: [0xCB, 0xBF]
  919. - cond: [bit.7, b]
  920. return: [0xCB, 0xB8]
  921. - cond: [bit.7, c]
  922. return: [0xCB, 0xB9]
  923. - cond: [bit.7, d]
  924. return: [0xCB, 0xBA]
  925. - cond: [bit.7, e]
  926. return: [0xCB, 0xBB]
  927. - cond: [bit.7, h]
  928. return: [0xCB, 0xBC]
  929. - cond: [bit.7, l]
  930. return: [0xCB, 0xBD]
  931. - type: [immediate, indirect_hl_or_indexed]
  932. cases:
  933. - cond: [bit.0, _]
  934. return: [0xCB, 0x86]
  935. - cond: [bit.1, _]
  936. return: [0xCB, 0x8E]
  937. - cond: [bit.2, _]
  938. return: [0xCB, 0x96]
  939. - cond: [bit.3, _]
  940. return: [0xCB, 0x9E]
  941. - cond: [bit.4, _]
  942. return: [0xCB, 0xA6]
  943. - cond: [bit.5, _]
  944. return: [0xCB, 0xAE]
  945. - cond: [bit.6, _]
  946. return: [0xCB, 0xB6]
  947. - cond: [bit.7, _]
  948. return: [0xCB, 0xBE]
  949. - type: [immediate, indexed, register]
  950. cases:
  951. - cond: [bit.0, _, a]
  952. return: [0xCB, 0x87]
  953. - cond: [bit.0, _, b]
  954. return: [0xCB, 0x80]
  955. - cond: [bit.0, _, c]
  956. return: [0xCB, 0x81]
  957. - cond: [bit.0, _, d]
  958. return: [0xCB, 0x82]
  959. - cond: [bit.0, _, e]
  960. return: [0xCB, 0x83]
  961. - cond: [bit.0, _, h]
  962. return: [0xCB, 0x84]
  963. - cond: [bit.0, _, l]
  964. return: [0xCB, 0x85]
  965. - cond: [bit.1, _, a]
  966. return: [0xCB, 0x8F]
  967. - cond: [bit.1, _, b]
  968. return: [0xCB, 0x88]
  969. - cond: [bit.1, _, c]
  970. return: [0xCB, 0x89]
  971. - cond: [bit.1, _, d]
  972. return: [0xCB, 0x8A]
  973. - cond: [bit.1, _, e]
  974. return: [0xCB, 0x8B]
  975. - cond: [bit.1, _, h]
  976. return: [0xCB, 0x8C]
  977. - cond: [bit.1, _, l]
  978. return: [0xCB, 0x8D]
  979. - cond: [bit.2, _, a]
  980. return: [0xCB, 0x97]
  981. - cond: [bit.2, _, b]
  982. return: [0xCB, 0x90]
  983. - cond: [bit.2, _, c]
  984. return: [0xCB, 0x91]
  985. - cond: [bit.2, _, d]
  986. return: [0xCB, 0x92]
  987. - cond: [bit.2, _, e]
  988. return: [0xCB, 0x93]
  989. - cond: [bit.2, _, h]
  990. return: [0xCB, 0x94]
  991. - cond: [bit.2, _, l]
  992. return: [0xCB, 0x95]
  993. - cond: [bit.3, _, a]
  994. return: [0xCB, 0x9F]
  995. - cond: [bit.3, _, b]
  996. return: [0xCB, 0x98]
  997. - cond: [bit.3, _, c]
  998. return: [0xCB, 0x99]
  999. - cond: [bit.3, _, d]
  1000. return: [0xCB, 0x9A]
  1001. - cond: [bit.3, _, e]
  1002. return: [0xCB, 0x9B]
  1003. - cond: [bit.3, _, h]
  1004. return: [0xCB, 0x9C]
  1005. - cond: [bit.3, _, l]
  1006. return: [0xCB, 0x9D]
  1007. - cond: [bit.4, _, a]
  1008. return: [0xCB, 0xA7]
  1009. - cond: [bit.4, _, b]
  1010. return: [0xCB, 0xA0]
  1011. - cond: [bit.4, _, c]
  1012. return: [0xCB, 0xA1]
  1013. - cond: [bit.4, _, d]
  1014. return: [0xCB, 0xA2]
  1015. - cond: [bit.4, _, e]
  1016. return: [0xCB, 0xA3]
  1017. - cond: [bit.4, _, h]
  1018. return: [0xCB, 0xA4]
  1019. - cond: [bit.4, _, l]
  1020. return: [0xCB, 0xA5]
  1021. - cond: [bit.5, _, a]
  1022. return: [0xCB, 0xAF]
  1023. - cond: [bit.5, _, b]
  1024. return: [0xCB, 0xA8]
  1025. - cond: [bit.5, _, c]
  1026. return: [0xCB, 0xA9]
  1027. - cond: [bit.5, _, d]
  1028. return: [0xCB, 0xAA]
  1029. - cond: [bit.5, _, e]
  1030. return: [0xCB, 0xAB]
  1031. - cond: [bit.5, _, h]
  1032. return: [0xCB, 0xAC]
  1033. - cond: [bit.5, _, l]
  1034. return: [0xCB, 0xAD]
  1035. - cond: [bit.6, _, a]
  1036. return: [0xCB, 0xB7]
  1037. - cond: [bit.6, _, b]
  1038. return: [0xCB, 0xB0]
  1039. - cond: [bit.6, _, c]
  1040. return: [0xCB, 0xB1]
  1041. - cond: [bit.6, _, d]
  1042. return: [0xCB, 0xB2]
  1043. - cond: [bit.6, _, e]
  1044. return: [0xCB, 0xB3]
  1045. - cond: [bit.6, _, h]
  1046. return: [0xCB, 0xB4]
  1047. - cond: [bit.6, _, l]
  1048. return: [0xCB, 0xB5]
  1049. - cond: [bit.7, _, a]
  1050. return: [0xCB, 0xBF]
  1051. - cond: [bit.7, _, b]
  1052. return: [0xCB, 0xB8]
  1053. - cond: [bit.7, _, c]
  1054. return: [0xCB, 0xB9]
  1055. - cond: [bit.7, _, d]
  1056. return: [0xCB, 0xBA]
  1057. - cond: [bit.7, _, e]
  1058. return: [0xCB, 0xBB]
  1059. - cond: [bit.7, _, h]
  1060. return: [0xCB, 0xBC]
  1061. - cond: [bit.7, _, l]
  1062. return: [0xCB, 0xBD]
  1063. ret:
  1064. args: yes
  1065. cases:
  1066. - type: []
  1067. return: [0xC9]
  1068. - type: [condition]
  1069. cases:
  1070. - cond: [nz]
  1071. return: [0xC0]
  1072. - cond: [z]
  1073. return: [0xC8]
  1074. - cond: [nc]
  1075. return: [0xD0]
  1076. - cond: [c]
  1077. return: [0xD8]
  1078. - cond: [po]
  1079. return: [0xE0]
  1080. - cond: [pe]
  1081. return: [0xE8]
  1082. - cond: [p]
  1083. return: [0xF0]
  1084. - cond: [m]
  1085. return: [0xF8]
  1086. reti:
  1087. args: no
  1088. return: [0xED, 0x4D]
  1089. retn:
  1090. args: no
  1091. return: [0xED, 0x45]
  1092. rl:
  1093. args: yes
  1094. cases:
  1095. - type: [register]
  1096. cases:
  1097. - cond: [a]
  1098. return: [0xCB, 0x17]
  1099. - cond: [b]
  1100. return: [0xCB, 0x10]
  1101. - cond: [c]
  1102. return: [0xCB, 0x11]
  1103. - cond: [d]
  1104. return: [0xCB, 0x12]
  1105. - cond: [e]
  1106. return: [0xCB, 0x13]
  1107. - cond: [h]
  1108. return: [0xCB, 0x14]
  1109. - cond: [l]
  1110. return: [0xCB, 0x15]
  1111. - type: [indirect_hl_or_indexed]
  1112. cases:
  1113. - cond: [_]
  1114. return: [0xCB, 0x16]
  1115. - type: [indexed, register]
  1116. cases:
  1117. - cond: [_, a]
  1118. return: [0xCB, 0x17]
  1119. - cond: [_, b]
  1120. return: [0xCB, 0x10]
  1121. - cond: [_, c]
  1122. return: [0xCB, 0x11]
  1123. - cond: [_, d]
  1124. return: [0xCB, 0x12]
  1125. - cond: [_, e]
  1126. return: [0xCB, 0x13]
  1127. - cond: [_, h]
  1128. return: [0xCB, 0x14]
  1129. - cond: [_, l]
  1130. return: [0xCB, 0x15]
  1131. rla:
  1132. args: no
  1133. return: [0x17]
  1134. rlc:
  1135. args: yes
  1136. cases:
  1137. - type: [register]
  1138. cases:
  1139. - cond: [a]
  1140. return: [0xCB, 0x07]
  1141. - cond: [b]
  1142. return: [0xCB, 0x00]
  1143. - cond: [c]
  1144. return: [0xCB, 0x01]
  1145. - cond: [d]
  1146. return: [0xCB, 0x02]
  1147. - cond: [e]
  1148. return: [0xCB, 0x03]
  1149. - cond: [h]
  1150. return: [0xCB, 0x04]
  1151. - cond: [l]
  1152. return: [0xCB, 0x05]
  1153. - type: [indirect_hl_or_indexed]
  1154. cases:
  1155. - cond: [_]
  1156. return: [0xCB, 0x06]
  1157. - type: [indexed, register]
  1158. cases:
  1159. - cond: [_, a]
  1160. return: [0xCB, 0x07]
  1161. - cond: [_, b]
  1162. return: [0xCB, 0x00]
  1163. - cond: [_, c]
  1164. return: [0xCB, 0x01]
  1165. - cond: [_, d]
  1166. return: [0xCB, 0x02]
  1167. - cond: [_, e]
  1168. return: [0xCB, 0x03]
  1169. - cond: [_, h]
  1170. return: [0xCB, 0x04]
  1171. - cond: [_, l]
  1172. return: [0xCB, 0x05]
  1173. rlca:
  1174. args: no
  1175. return: [0x07]
  1176. rld:
  1177. args: no
  1178. return: [0xED, 0x6F]
  1179. rr:
  1180. args: yes
  1181. cases:
  1182. - type: [register]
  1183. cases:
  1184. - cond: [a]
  1185. return: [0xCB, 0x1F]
  1186. - cond: [b]
  1187. return: [0xCB, 0x18]
  1188. - cond: [c]
  1189. return: [0xCB, 0x19]
  1190. - cond: [d]
  1191. return: [0xCB, 0x1A]
  1192. - cond: [e]
  1193. return: [0xCB, 0x1B]
  1194. - cond: [h]
  1195. return: [0xCB, 0x1C]
  1196. - cond: [l]
  1197. return: [0xCB, 0x1D]
  1198. - type: [indirect_hl_or_indexed]
  1199. cases:
  1200. - cond: [_]
  1201. return: [0xCB, 0x1E]
  1202. - type: [indexed, register]
  1203. cases:
  1204. - cond: [_, a]
  1205. return: [0xCB, 0x1F]
  1206. - cond: [_, b]
  1207. return: [0xCB, 0x18]
  1208. - cond: [_, c]
  1209. return: [0xCB, 0x19]
  1210. - cond: [_, d]
  1211. return: [0xCB, 0x1A]
  1212. - cond: [_, e]
  1213. return: [0xCB, 0x1B]
  1214. - cond: [_, h]
  1215. return: [0xCB, 0x1C]
  1216. - cond: [_, l]
  1217. return: [0xCB, 0x1D]
  1218. rra:
  1219. args: no
  1220. return: [0x1F]
  1221. rrc:
  1222. args: yes
  1223. cases:
  1224. - type: [register]
  1225. cases:
  1226. - cond: [a]
  1227. return: [0xCB, 0x0F]
  1228. - cond: [b]
  1229. return: [0xCB, 0x08]
  1230. - cond: [c]
  1231. return: [0xCB, 0x09]
  1232. - cond: [d]
  1233. return: [0xCB, 0x0A]
  1234. - cond: [e]
  1235. return: [0xCB, 0x0B]
  1236. - cond: [h]
  1237. return: [0xCB, 0x0C]
  1238. - cond: [l]
  1239. return: [0xCB, 0x0D]
  1240. - type: [indirect_hl_or_indexed]
  1241. cases:
  1242. - cond: [_]
  1243. return: [0xCB, 0x0E]
  1244. - type: [indexed, register]
  1245. cases:
  1246. - cond: [_, a]
  1247. return: [0xCB, 0x0F]
  1248. - cond: [_, b]
  1249. return: [0xCB, 0x08]
  1250. - cond: [_, c]
  1251. return: [0xCB, 0x09]
  1252. - cond: [_, d]
  1253. return: [0xCB, 0x0A]
  1254. - cond: [_, e]
  1255. return: [0xCB, 0x0B]
  1256. - cond: [_, h]
  1257. return: [0xCB, 0x0C]
  1258. - cond: [_, l]
  1259. return: [0xCB, 0x0D]
  1260. rrca:
  1261. args: no
  1262. return: [0x0F]
  1263. rrd:
  1264. args: no
  1265. return: [0xED, 0x67]
  1266. rst:
  1267. args: yes
  1268. cases:
  1269. - type: [immediate]
  1270. cases:
  1271. - cond: [rst.0x00]
  1272. return: [0xC7]
  1273. - cond: [rst.0x08]
  1274. return: [0xCF]
  1275. - cond: [rst.0x10]
  1276. return: [0xD7]
  1277. - cond: [rst.0x18]
  1278. return: [0xDF]
  1279. - cond: [rst.0x20]
  1280. return: [0xE7]
  1281. - cond: [rst.0x28]
  1282. return: [0xEF]
  1283. - cond: [rst.0x30]
  1284. return: [0xF7]
  1285. - cond: [rst.0x38]
  1286. return: [0xFF]
  1287. sbc:
  1288. args: yes
  1289. cases:
  1290. - type: [register, register]
  1291. cases:
  1292. - cond: [a, a]
  1293. return: [0x9F]
  1294. - cond: [a, b]
  1295. return: [0x98]
  1296. - cond: [a, c]
  1297. return: [0x99]
  1298. - cond: [a, d]
  1299. return: [0x9A]
  1300. - cond: [a, e]
  1301. return: [0x9B]
  1302. - cond: [a, h|ih]
  1303. return: [0x9C]
  1304. - cond: [a, l|il]
  1305. return: [0x9D]
  1306. - cond: [hl, bc]
  1307. return: [0xED, 0x42]
  1308. - cond: [hl, de]
  1309. return: [0xED, 0x52]
  1310. - cond: [hl, hl]
  1311. return: [0xED, 0x62]
  1312. - cond: [hl, sp]
  1313. return: [0xED, 0x72]
  1314. - type: [register, immediate]
  1315. cases:
  1316. - cond: [a, u8]
  1317. return: [0xDE, u8]
  1318. - type: [register, indirect_hl_or_indexed]
  1319. cases:
  1320. - cond: [a, _]
  1321. return: [0x9E]
  1322. scf:
  1323. args: no
  1324. return: [0x37]
  1325. set:
  1326. args: yes
  1327. cases:
  1328. - type: [immediate, register]
  1329. cases:
  1330. - cond: [bit.0, a]
  1331. return: [0xCB, 0xC7]
  1332. - cond: [bit.0, b]
  1333. return: [0xCB, 0xC0]
  1334. - cond: [bit.0, c]
  1335. return: [0xCB, 0xC1]
  1336. - cond: [bit.0, d]
  1337. return: [0xCB, 0xC2]
  1338. - cond: [bit.0, e]
  1339. return: [0xCB, 0xC3]
  1340. - cond: [bit.0, h]
  1341. return: [0xCB, 0xC4]
  1342. - cond: [bit.0, l]
  1343. return: [0xCB, 0xC5]
  1344. - cond: [bit.1, a]
  1345. return: [0xCB, 0xCF]
  1346. - cond: [bit.1, b]
  1347. return: [0xCB, 0xC8]
  1348. - cond: [bit.1, c]
  1349. return: [0xCB, 0xC9]
  1350. - cond: [bit.1, d]
  1351. return: [0xCB, 0xCA]
  1352. - cond: [bit.1, e]
  1353. return: [0xCB, 0xCB]
  1354. - cond: [bit.1, h]
  1355. return: [0xCB, 0xCC]
  1356. - cond: [bit.1, l]
  1357. return: [0xCB, 0xCD]
  1358. - cond: [bit.2, a]
  1359. return: [0xCB, 0xD7]
  1360. - cond: [bit.2, b]
  1361. return: [0xCB, 0xD0]
  1362. - cond: [bit.2, c]
  1363. return: [0xCB, 0xD1]
  1364. - cond: [bit.2, d]
  1365. return: [0xCB, 0xD2]
  1366. - cond: [bit.2, e]
  1367. return: [0xCB, 0xD3]
  1368. - cond: [bit.2, h]
  1369. return: [0xCB, 0xD4]
  1370. - cond: [bit.2, l]
  1371. return: [0xCB, 0xD5]
  1372. - cond: [bit.3, a]
  1373. return: [0xCB, 0xDF]
  1374. - cond: [bit.3, b]
  1375. return: [0xCB, 0xD8]
  1376. - cond: [bit.3, c]
  1377. return: [0xCB, 0xD9]
  1378. - cond: [bit.3, d]
  1379. return: [0xCB, 0xDA]
  1380. - cond: [bit.3, e]
  1381. return: [0xCB, 0xDB]
  1382. - cond: [bit.3, h]
  1383. return: [0xCB, 0xDC]
  1384. - cond: [bit.3, l]
  1385. return: [0xCB, 0xDD]
  1386. - cond: [bit.4, a]
  1387. return: [0xCB, 0xE7]
  1388. - cond: [bit.4, b]
  1389. return: [0xCB, 0xE0]
  1390. - cond: [bit.4, c]
  1391. return: [0xCB, 0xE1]
  1392. - cond: [bit.4, d]
  1393. return: [0xCB, 0xE2]
  1394. - cond: [bit.4, e]
  1395. return: [0xCB, 0xE3]
  1396. - cond: [bit.4, h]
  1397. return: [0xCB, 0xE4]
  1398. - cond: [bit.4, l]
  1399. return: [0xCB, 0xE5]
  1400. - cond: [bit.5, a]
  1401. return: [0xCB, 0xEF]
  1402. - cond: [bit.5, b]
  1403. return: [0xCB, 0xE8]
  1404. - cond: [bit.5, c]
  1405. return: [0xCB, 0xE9]
  1406. - cond: [bit.5, d]
  1407. return: [0xCB, 0xEA]
  1408. - cond: [bit.5, e]
  1409. return: [0xCB, 0xEB]
  1410. - cond: [bit.5, h]
  1411. return: [0xCB, 0xEC]
  1412. - cond: [bit.5, l]
  1413. return: [0xCB, 0xED]
  1414. - cond: [bit.6, a]
  1415. return: [0xCB, 0xF7]
  1416. - cond: [bit.6, b]
  1417. return: [0xCB, 0xF0]
  1418. - cond: [bit.6, c]
  1419. return: [0xCB, 0xF1]
  1420. - cond: [bit.6, d]
  1421. return: [0xCB, 0xF2]
  1422. - cond: [bit.6, e]
  1423. return: [0xCB, 0xF3]
  1424. - cond: [bit.6, h]
  1425. return: [0xCB, 0xF4]
  1426. - cond: [bit.6, l]
  1427. return: [0xCB, 0xF5]
  1428. - cond: [bit.7, a]
  1429. return: [0xCB, 0xFF]
  1430. - cond: [bit.7, b]
  1431. return: [0xCB, 0xF8]
  1432. - cond: [bit.7, c]
  1433. return: [0xCB, 0xF9]
  1434. - cond: [bit.7, d]
  1435. return: [0xCB, 0xFA]
  1436. - cond: [bit.7, e]
  1437. return: [0xCB, 0xFB]
  1438. - cond: [bit.7, h]
  1439. return: [0xCB, 0xFC]
  1440. - cond: [bit.7, l]
  1441. return: [0xCB, 0xFD]
  1442. - type: [immediate, indirect_hl_or_indexed]
  1443. cases:
  1444. - cond: [bit.0, _]
  1445. return: [0xCB, 0xC6]
  1446. - cond: [bit.1, _]
  1447. return: [0xCB, 0xCE]
  1448. - cond: [bit.2, _]
  1449. return: [0xCB, 0xD6]
  1450. - cond: [bit.3, _]
  1451. return: [0xCB, 0xDE]
  1452. - cond: [bit.4, _]
  1453. return: [0xCB, 0xE6]
  1454. - cond: [bit.5, _]
  1455. return: [0xCB, 0xEE]
  1456. - cond: [bit.6, _]
  1457. return: [0xCB, 0xF6]
  1458. - cond: [bit.7, _]
  1459. return: [0xCB, 0xFE]
  1460. - type: [immediate, indexed, register]
  1461. cases:
  1462. - cond: [bit.0, _, a]
  1463. return: [0xCB, 0xC7]
  1464. - cond: [bit.0, _, b]
  1465. return: [0xCB, 0xC0]
  1466. - cond: [bit.0, _, c]
  1467. return: [0xCB, 0xC1]
  1468. - cond: [bit.0, _, d]
  1469. return: [0xCB, 0xC2]
  1470. - cond: [bit.0, _, e]
  1471. return: [0xCB, 0xC3]
  1472. - cond: [bit.0, _, h]
  1473. return: [0xCB, 0xC4]
  1474. - cond: [bit.0, _, l]
  1475. return: [0xCB, 0xC5]
  1476. - cond: [bit.1, _, a]
  1477. return: [0xCB, 0xCF]
  1478. - cond: [bit.1, _, b]
  1479. return: [0xCB, 0xC8]
  1480. - cond: [bit.1, _, c]
  1481. return: [0xCB, 0xC9]
  1482. - cond: [bit.1, _, d]
  1483. return: [0xCB, 0xCA]
  1484. - cond: [bit.1, _, e]
  1485. return: [0xCB, 0xCB]
  1486. - cond: [bit.1, _, h]
  1487. return: [0xCB, 0xCC]
  1488. - cond: [bit.1, _, l]
  1489. return: [0xCB, 0xCD]
  1490. - cond: [bit.2, _, a]
  1491. return: [0xCB, 0xD7]
  1492. - cond: [bit.2, _, b]
  1493. return: [0xCB, 0xD0]
  1494. - cond: [bit.2, _, c]
  1495. return: [0xCB, 0xD1]
  1496. - cond: [bit.2, _, d]
  1497. return: [0xCB, 0xD2]
  1498. - cond: [bit.2, _, e]
  1499. return: [0xCB, 0xD3]
  1500. - cond: [bit.2, _, h]
  1501. return: [0xCB, 0xD4]
  1502. - cond: [bit.2, _, l]
  1503. return: [0xCB, 0xD5]
  1504. - cond: [bit.3, _, a]
  1505. return: [0xCB, 0xDF]
  1506. - cond: [bit.3, _, b]
  1507. return: [0xCB, 0xD8]
  1508. - cond: [bit.3, _, c]
  1509. return: [0xCB, 0xD9]
  1510. - cond: [bit.3, _, d]
  1511. return: [0xCB, 0xDA]
  1512. - cond: [bit.3, _, e]
  1513. return: [0xCB, 0xDB]
  1514. - cond: [bit.3, _, h]
  1515. return: [0xCB, 0xDC]
  1516. - cond: [bit.3, _, l]
  1517. return: [0xCB, 0xDD]
  1518. - cond: [bit.4, _, a]
  1519. return: [0xCB, 0xE7]
  1520. - cond: [bit.4, _, b]
  1521. return: [0xCB, 0xE0]
  1522. - cond: [bit.4, _, c]
  1523. return: [0xCB, 0xE1]
  1524. - cond: [bit.4, _, d]
  1525. return: [0xCB, 0xE2]
  1526. - cond: [bit.4, _, e]
  1527. return: [0xCB, 0xE3]
  1528. - cond: [bit.4, _, h]
  1529. return: [0xCB, 0xE4]
  1530. - cond: [bit.4, _, l]
  1531. return: [0xCB, 0xE5]
  1532. - cond: [bit.5, _, a]
  1533. return: [0xCB, 0xEF]
  1534. - cond: [bit.5, _, b]
  1535. return: [0xCB, 0xE8]
  1536. - cond: [bit.5, _, c]
  1537. return: [0xCB, 0xE9]
  1538. - cond: [bit.5, _, d]
  1539. return: [0xCB, 0xEA]
  1540. - cond: [bit.5, _, e]
  1541. return: [0xCB, 0xEB]
  1542. - cond: [bit.5, _, h]
  1543. return: [0xCB, 0xEC]
  1544. - cond: [bit.5, _, l]
  1545. return: [0xCB, 0xED]
  1546. - cond: [bit.6, _, a]
  1547. return: [0xCB, 0xF7]
  1548. - cond: [bit.6, _, b]
  1549. return: [0xCB, 0xF0]
  1550. - cond: [bit.6, _, c]
  1551. return: [0xCB, 0xF1]
  1552. - cond: [bit.6, _, d]
  1553. return: [0xCB, 0xF2]
  1554. - cond: [bit.6, _, e]
  1555. return: [0xCB, 0xF3]
  1556. - cond: [bit.6, _, h]
  1557. return: [0xCB, 0xF4]
  1558. - cond: [bit.6, _, l]
  1559. return: [0xCB, 0xF5]
  1560. - cond: [bit.7, _, a]
  1561. return: [0xCB, 0xFF]
  1562. - cond: [bit.7, _, b]
  1563. return: [0xCB, 0xF8]
  1564. - cond: [bit.7, _, c]
  1565. return: [0xCB, 0xF9]
  1566. - cond: [bit.7, _, d]
  1567. return: [0xCB, 0xFA]
  1568. - cond: [bit.7, _, e]
  1569. return: [0xCB, 0xFB]
  1570. - cond: [bit.7, _, h]
  1571. return: [0xCB, 0xFC]
  1572. - cond: [bit.7, _, l]
  1573. return: [0xCB, 0xFD]
  1574. sl1: &sl1
  1575. args: yes
  1576. cases:
  1577. - type: [register]
  1578. cases:
  1579. - cond: [a]
  1580. return: [0xCB, 0x37]
  1581. - cond: [b]
  1582. return: [0xCB, 0x30]
  1583. - cond: [c]
  1584. return: [0xCB, 0x31]
  1585. - cond: [d]
  1586. return: [0xCB, 0x32]
  1587. - cond: [e]
  1588. return: [0xCB, 0x33]
  1589. - cond: [h]
  1590. return: [0xCB, 0x34]
  1591. - cond: [l]
  1592. return: [0xCB, 0x35]
  1593. - type: [indirect_hl_or_indexed]
  1594. cases:
  1595. - cond: [_]
  1596. return: [0xCB, 0x36]
  1597. - type: [indexed, register]
  1598. cases:
  1599. - cond: [_, a]
  1600. return: [0xCB, 0x37]
  1601. - cond: [_, b]
  1602. return: [0xCB, 0x30]
  1603. - cond: [_, c]
  1604. return: [0xCB, 0x31]
  1605. - cond: [_, d]
  1606. return: [0xCB, 0x32]
  1607. - cond: [_, e]
  1608. return: [0xCB, 0x33]
  1609. - cond: [_, h]
  1610. return: [0xCB, 0x34]
  1611. - cond: [_, l]
  1612. return: [0xCB, 0x35]
  1613. sla:
  1614. args: yes
  1615. cases:
  1616. - type: [register]
  1617. cases:
  1618. - cond: [a]
  1619. return: [0xCB, 0x27]
  1620. - cond: [b]
  1621. return: [0xCB, 0x20]
  1622. - cond: [c]
  1623. return: [0xCB, 0x21]
  1624. - cond: [d]
  1625. return: [0xCB, 0x22]
  1626. - cond: [e]
  1627. return: [0xCB, 0x23]
  1628. - cond: [h]
  1629. return: [0xCB, 0x24]
  1630. - cond: [l]
  1631. return: [0xCB, 0x25]
  1632. - type: [indirect_hl_or_indexed]
  1633. cases:
  1634. - cond: [_]
  1635. return: [0xCB, 0x26]
  1636. - type: [indexed, register]
  1637. cases:
  1638. - cond: [_, a]
  1639. return: [0xCB, 0x27]
  1640. - cond: [_, b]
  1641. return: [0xCB, 0x20]
  1642. - cond: [_, c]
  1643. return: [0xCB, 0x21]
  1644. - cond: [_, d]
  1645. return: [0xCB, 0x22]
  1646. - cond: [_, e]
  1647. return: [0xCB, 0x23]
  1648. - cond: [_, h]
  1649. return: [0xCB, 0x24]
  1650. - cond: [_, l]
  1651. return: [0xCB, 0x25]
  1652. sll: *sl1
  1653. sls: *sl1
  1654. sra:
  1655. args: yes
  1656. cases:
  1657. - type: [register]
  1658. cases:
  1659. - cond: [a]
  1660. return: [0xCB, 0x2F]
  1661. - cond: [b]
  1662. return: [0xCB, 0x28]
  1663. - cond: [c]
  1664. return: [0xCB, 0x29]
  1665. - cond: [d]
  1666. return: [0xCB, 0x2A]
  1667. - cond: [e]
  1668. return: [0xCB, 0x2B]
  1669. - cond: [h]
  1670. return: [0xCB, 0x2C]
  1671. - cond: [l]
  1672. return: [0xCB, 0x2D]
  1673. - type: [indirect_hl_or_indexed]
  1674. cases:
  1675. - cond: [_]
  1676. return: [0xCB, 0x2E]
  1677. - type: [indexed, register]
  1678. cases:
  1679. - cond: [_, a]
  1680. return: [0xCB, 0x2F]
  1681. - cond: [_, b]
  1682. return: [0xCB, 0x28]
  1683. - cond: [_, c]
  1684. return: [0xCB, 0x29]
  1685. - cond: [_, d]
  1686. return: [0xCB, 0x2A]
  1687. - cond: [_, e]
  1688. return: [0xCB, 0x2B]
  1689. - cond: [_, h]
  1690. return: [0xCB, 0x2C]
  1691. - cond: [_, l]
  1692. return: [0xCB, 0x2D]
  1693. srl:
  1694. args: yes
  1695. cases:
  1696. - type: [register]
  1697. cases:
  1698. - cond: [a]
  1699. return: [0xCB, 0x3F]
  1700. - cond: [b]
  1701. return: [0xCB, 0x38]
  1702. - cond: [c]
  1703. return: [0xCB, 0x39]
  1704. - cond: [d]
  1705. return: [0xCB, 0x3A]
  1706. - cond: [e]
  1707. return: [0xCB, 0x3B]
  1708. - cond: [h]
  1709. return: [0xCB, 0x3C]
  1710. - cond: [l]
  1711. return: [0xCB, 0x3D]
  1712. - type: [indirect_hl_or_indexed]
  1713. cases:
  1714. - cond: [_]
  1715. return: [0xCB, 0x3E]
  1716. - type: [indexed, register]
  1717. cases:
  1718. - cond: [_, a]
  1719. return: [0xCB, 0x3F]
  1720. - cond: [_, b]
  1721. return: [0xCB, 0x38]
  1722. - cond: [_, c]
  1723. return: [0xCB, 0x39]
  1724. - cond: [_, d]
  1725. return: [0xCB, 0x3A]
  1726. - cond: [_, e]
  1727. return: [0xCB, 0x3B]
  1728. - cond: [_, h]
  1729. return: [0xCB, 0x3C]
  1730. - cond: [_, l]
  1731. return: [0xCB, 0x3D]
  1732. sub:
  1733. args: yes
  1734. cases:
  1735. - type: [register]
  1736. cases:
  1737. - cond: [a]
  1738. return: [0x97]
  1739. - cond: [b]
  1740. return: [0x90]
  1741. - cond: [c]
  1742. return: [0x91]
  1743. - cond: [d]
  1744. return: [0x92]
  1745. - cond: [e]
  1746. return: [0x93]
  1747. - cond: [h|ih]
  1748. return: [0x94]
  1749. - cond: [l|il]
  1750. return: [0x95]
  1751. - type: [immediate]
  1752. cases:
  1753. - cond: [u8]
  1754. return: [0xD6, u8]
  1755. - type: [indirect_hl_or_indexed]
  1756. cases:
  1757. - cond: [_]
  1758. return: [0x96]
  1759. xor:
  1760. args: yes
  1761. cases:
  1762. - type: [register]
  1763. cases:
  1764. - cond: [a]
  1765. return: [0xAF]
  1766. - cond: [b]
  1767. return: [0xA8]
  1768. - cond: [c]
  1769. return: [0xA9]
  1770. - cond: [d]
  1771. return: [0xAA]
  1772. - cond: [e]
  1773. return: [0xAB]
  1774. - cond: [h|ih]
  1775. return: [0xAC]
  1776. - cond: [l|il]
  1777. return: [0xAD]
  1778. - type: [immediate]
  1779. cases:
  1780. - cond: [u8]
  1781. return: [0xEE, u8]
  1782. - type: [indirect_hl_or_indexed]
  1783. cases:
  1784. - cond: [_]
  1785. return: [0xAE]