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.
 
 
 
 
 

1328 lines
34 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, a]
  111. return: [0xCB, bit(0x47)]
  112. - cond: [bit, b]
  113. return: [0xCB, bit(0x40)]
  114. - cond: [bit, c]
  115. return: [0xCB, bit(0x41)]
  116. - cond: [bit, d]
  117. return: [0xCB, bit(0x42)]
  118. - cond: [bit, e]
  119. return: [0xCB, bit(0x43)]
  120. - cond: [bit, h]
  121. return: [0xCB, bit(0x44)]
  122. - cond: [bit, l]
  123. return: [0xCB, bit(0x45)]
  124. - type: [immediate, indirect_hl_or_indexed]
  125. cases:
  126. - cond: [bit, _]
  127. return: [0xCB, bit(0x46)]
  128. call:
  129. args: yes
  130. cases:
  131. - type: [immediate]
  132. cases:
  133. - cond: [u16]
  134. return: [0xCD, u16]
  135. - type: [condition, immediate]
  136. cases:
  137. - cond: [nz, u16]
  138. return: [0xC4, u16]
  139. - cond: [z, u16]
  140. return: [0xCC, u16]
  141. - cond: [nc, u16]
  142. return: [0xD4, u16]
  143. - cond: [c, u16]
  144. return: [0xDC, u16]
  145. - cond: [po, u16]
  146. return: [0xE4, u16]
  147. - cond: [pe, u16]
  148. return: [0xEC, u16]
  149. - cond: [p, u16]
  150. return: [0xF4, u16]
  151. - cond: [m, u16]
  152. return: [0xFC, u16]
  153. ccf:
  154. args: no
  155. return: [0x3F]
  156. cp:
  157. args: yes
  158. cases:
  159. - type: [register]
  160. cases:
  161. - cond: [a]
  162. return: [0xBF]
  163. - cond: [b]
  164. return: [0xB8]
  165. - cond: [c]
  166. return: [0xB9]
  167. - cond: [d]
  168. return: [0xBA]
  169. - cond: [e]
  170. return: [0xBB]
  171. - cond: [h|ih]
  172. return: [0xBC]
  173. - cond: [l|il]
  174. return: [0xBD]
  175. - type: [indirect_hl_or_indexed]
  176. cases:
  177. - cond: [_]
  178. return: [0xBE]
  179. - type: [immediate]
  180. cases:
  181. - cond: [u8]
  182. return: [0xFE, u8]
  183. cpd:
  184. args: no
  185. return: [0xED, 0xA9]
  186. cpdr:
  187. args: no
  188. return: [0xED, 0xB9]
  189. cpi:
  190. args: no
  191. return: [0xED, 0xA1]
  192. cpir:
  193. args: no
  194. return: [0xED, 0xB1]
  195. cpl:
  196. args: no
  197. return: [0x2F]
  198. daa:
  199. args: no
  200. return: [0x27]
  201. dec:
  202. args: yes
  203. cases:
  204. - type: [register]
  205. cases:
  206. - cond: [a]
  207. return: [0x3D]
  208. - cond: [b]
  209. return: [0x05]
  210. - cond: [c]
  211. return: [0x0D]
  212. - cond: [d]
  213. return: [0x15]
  214. - cond: [e]
  215. return: [0x1D]
  216. - cond: [h|ih]
  217. return: [0x25]
  218. - cond: [l|il]
  219. return: [0x2D]
  220. - cond: [bc]
  221. return: [0x0B]
  222. - cond: [de]
  223. return: [0x1B]
  224. - cond: [hl|i]
  225. return: [0x2B]
  226. - cond: [sp]
  227. return: [0x3B]
  228. - type: [indirect_hl_or_indexed]
  229. cases:
  230. - cond: [_]
  231. return: [0x35]
  232. di:
  233. args: no
  234. return: [0xF3]
  235. djnz:
  236. args: yes
  237. cases:
  238. - type: [immediate]
  239. cases:
  240. - cond: [rel]
  241. return: [0x10, rel]
  242. ei:
  243. args: no
  244. return: [0xFB]
  245. ex:
  246. args: yes
  247. cases:
  248. - type: [register, register]
  249. cases:
  250. - cond: [af, af_]
  251. return: [0x08]
  252. - cond: [de, hl]
  253. return: [0xEB]
  254. - type: [indirect, register]
  255. cases:
  256. - cond: [reg.sp, hl|i]
  257. return: [0xE3]
  258. exx:
  259. args: no
  260. return: [0xD9]
  261. halt:
  262. args: no
  263. return: [0x76]
  264. im:
  265. args: yes
  266. cases:
  267. - type: [immediate]
  268. cases:
  269. - cond: [im.0]
  270. return: [0xED, 0x46]
  271. - cond: [im.1]
  272. return: [0xED, 0x56]
  273. - cond: [im.2]
  274. return: [0xED, 0x5E]
  275. in:
  276. args: yes
  277. cases:
  278. - type: [register, port]
  279. cases:
  280. - cond: [a, imm]
  281. return: [0xDB, u8]
  282. - cond: [a, reg.c]
  283. return: [0xED, 0x78]
  284. - cond: [b, reg.c]
  285. return: [0xED, 0x40]
  286. - cond: [c, reg.c]
  287. return: [0xED, 0x48]
  288. - cond: [d, reg.c]
  289. return: [0xED, 0x50]
  290. - cond: [e, reg.c]
  291. return: [0xED, 0x58]
  292. - cond: [h, reg.c]
  293. return: [0xED, 0x60]
  294. - cond: [l, reg.c]
  295. return: [0xED, 0x68]
  296. - type: [port]
  297. cases:
  298. - cond: [reg.c]
  299. return: [0xED, 0x70]
  300. inc:
  301. args: yes
  302. cases:
  303. - type: [register]
  304. cases:
  305. - cond: [a]
  306. return: [0x3C]
  307. - cond: [b]
  308. return: [0x04]
  309. - cond: [c]
  310. return: [0x0C]
  311. - cond: [d]
  312. return: [0x14]
  313. - cond: [e]
  314. return: [0x1C]
  315. - cond: [h|ih]
  316. return: [0x24]
  317. - cond: [l|il]
  318. return: [0x2C]
  319. - cond: [bc]
  320. return: [0x03]
  321. - cond: [de]
  322. return: [0x13]
  323. - cond: [hl|i]
  324. return: [0x23]
  325. - cond: [sp]
  326. return: [0x33]
  327. - type: [indirect_hl_or_indexed]
  328. cases:
  329. - cond: [_]
  330. return: [0x34]
  331. ind:
  332. args: no
  333. return: [0xED, 0xAA]
  334. indr:
  335. args: no
  336. return: [0xED, 0xBA]
  337. ini:
  338. args: no
  339. return: [0xED, 0xA2]
  340. inir:
  341. args: no
  342. return: [0xED, 0xB2]
  343. jp:
  344. args: yes
  345. cases:
  346. - type: [immediate]
  347. cases:
  348. - cond: [u16]
  349. return: [0xC3, u16]
  350. - type: [condition, immediate]
  351. cases:
  352. - cond: [nz, u16]
  353. return: [0xC2, u16]
  354. - cond: [z, u16]
  355. return: [0xCA, u16]
  356. - cond: [nc, u16]
  357. return: [0xD2, u16]
  358. - cond: [c, u16]
  359. return: [0xDA, u16]
  360. - cond: [po, u16]
  361. return: [0xE2, u16]
  362. - cond: [pe, u16]
  363. return: [0xEA, u16]
  364. - cond: [p, u16]
  365. return: [0xF2, u16]
  366. - cond: [m, u16]
  367. return: [0xFA, u16]
  368. - type: [indirect_hl_or_indexed]
  369. cases:
  370. - cond: [_]
  371. return: [0xE9]
  372. jr:
  373. args: yes
  374. cases:
  375. - type: [immediate]
  376. cases:
  377. - cond: [rel]
  378. return: [0x18, rel]
  379. - type: [condition, immediate]
  380. cases:
  381. - cond: [nz, rel]
  382. return: [0x20, rel]
  383. - cond: [z, rel]
  384. return: [0x28, rel]
  385. - cond: [nc, rel]
  386. return: [0x30, rel]
  387. - cond: [c, rel]
  388. return: [0x38, rel]
  389. ld:
  390. args: yes
  391. cases:
  392. - type: [register, register]
  393. cases:
  394. - cond: [a, a]
  395. return: [0x7F]
  396. - cond: [a, b]
  397. return: [0x78]
  398. - cond: [a, c]
  399. return: [0x79]
  400. - cond: [a, d]
  401. return: [0x7A]
  402. - cond: [a, e]
  403. return: [0x7B]
  404. - cond: [a, h|ih]
  405. return: [0x7C]
  406. - cond: [a, l|il]
  407. return: [0x7D]
  408. - cond: [b, a]
  409. return: [0x47]
  410. - cond: [b, b]
  411. return: [0x40]
  412. - cond: [b, c]
  413. return: [0x41]
  414. - cond: [b, d]
  415. return: [0x42]
  416. - cond: [b, e]
  417. return: [0x43]
  418. - cond: [b, h|ih]
  419. return: [0x44]
  420. - cond: [b, l|il]
  421. return: [0x45]
  422. - cond: [c, a]
  423. return: [0x4F]
  424. - cond: [c, b]
  425. return: [0x48]
  426. - cond: [c, c]
  427. return: [0x49]
  428. - cond: [c, d]
  429. return: [0x4A]
  430. - cond: [c, e]
  431. return: [0x4B]
  432. - cond: [c, h|ih]
  433. return: [0x4C]
  434. - cond: [c, l|il]
  435. return: [0x4D]
  436. - cond: [d, a]
  437. return: [0x57]
  438. - cond: [d, b]
  439. return: [0x50]
  440. - cond: [d, c]
  441. return: [0x51]
  442. - cond: [d, d]
  443. return: [0x52]
  444. - cond: [d, e]
  445. return: [0x53]
  446. - cond: [d, h|ih]
  447. return: [0x54]
  448. - cond: [d, l|il]
  449. return: [0x55]
  450. - cond: [e, a]
  451. return: [0x5F]
  452. - cond: [e, b]
  453. return: [0x58]
  454. - cond: [e, c]
  455. return: [0x59]
  456. - cond: [e, d]
  457. return: [0x5A]
  458. - cond: [e, e]
  459. return: [0x5B]
  460. - cond: [e, h|ih]
  461. return: [0x5C]
  462. - cond: [e, l|il]
  463. return: [0x5D]
  464. - cond: [h|ih, a]
  465. return: [0x67]
  466. - cond: [h|ih, b]
  467. return: [0x60]
  468. - cond: [h|ih, c]
  469. return: [0x61]
  470. - cond: [h|ih, d]
  471. return: [0x62]
  472. - cond: [h|ih, e]
  473. return: [0x63]
  474. - cond: [h|ih, h|ih]
  475. return: [0x64]
  476. - cond: [h|ih, l|il]
  477. return: [0x65]
  478. - cond: [l|il, a]
  479. return: [0x6F]
  480. - cond: [l|il, b]
  481. return: [0x68]
  482. - cond: [l|il, c]
  483. return: [0x69]
  484. - cond: [l|il, d]
  485. return: [0x6A]
  486. - cond: [l|il, e]
  487. return: [0x6B]
  488. - cond: [l|il, h|ih]
  489. return: [0x6C]
  490. - cond: [l|il, l|il]
  491. return: [0x6D]
  492. - cond: [a, i]
  493. return: [0xED, 0x57]
  494. - cond: [i, a]
  495. return: [0xED, 0x47]
  496. - cond: [a, r]
  497. return: [0xED, 0x5F]
  498. - cond: [r, a]
  499. return: [0xED, 0x4F]
  500. - cond: [sp, hl|i]
  501. return: [0xF9]
  502. - type: [register, immediate]
  503. cases:
  504. - cond: [a, u8]
  505. return: [0x3E, u8]
  506. - cond: [b, u8]
  507. return: [0x06, u8]
  508. - cond: [c, u8]
  509. return: [0x0E, u8]
  510. - cond: [d, u8]
  511. return: [0x16, u8]
  512. - cond: [e, u8]
  513. return: [0x1E, u8]
  514. - cond: [h|ih, u8]
  515. return: [0x26, u8]
  516. - cond: [l|il, u8]
  517. return: [0x2E, u8]
  518. - cond: [bc, u16]
  519. return: [0x01, u16]
  520. - cond: [de, u16]
  521. return: [0x11, u16]
  522. - cond: [hl|i, u16]
  523. return: [0x21, u16]
  524. - cond: [sp, u16]
  525. return: [0x31, u16]
  526. - type: [register, indirect_hl_or_indexed]
  527. cases:
  528. - cond: [a, _]
  529. return: [0x7E]
  530. - cond: [b, _]
  531. return: [0x46]
  532. - cond: [c, _]
  533. return: [0x4E]
  534. - cond: [d, _]
  535. return: [0x56]
  536. - cond: [e, _]
  537. return: [0x5E]
  538. - cond: [h, _]
  539. return: [0x66]
  540. - cond: [l, _]
  541. return: [0x6E]
  542. - type: [register, indirect]
  543. cases:
  544. - cond: [a, reg.bc]
  545. return: [0x0A]
  546. - cond: [a, reg.de]
  547. return: [0x1A]
  548. - cond: [hl|i, imm]
  549. return: [0x2A, u16]
  550. - cond: [a, imm]
  551. return: [0x3A, u16]
  552. - cond: [bc, imm]
  553. return: [0xED, 0x4B, u16]
  554. - cond: [de, imm]
  555. return: [0xED, 0x5B, u16]
  556. - cond: [sp, imm]
  557. return: [0xED, 0x7B, u16]
  558. - type: [indirect_hl_or_indexed, register]
  559. cases:
  560. - cond: [_, a]
  561. return: [0x77]
  562. - cond: [_, b]
  563. return: [0x70]
  564. - cond: [_, c]
  565. return: [0x71]
  566. - cond: [_, d]
  567. return: [0x72]
  568. - cond: [_, e]
  569. return: [0x73]
  570. - cond: [_, h]
  571. return: [0x74]
  572. - cond: [_, l]
  573. return: [0x75]
  574. - type: [indirect_hl_or_indexed, immediate]
  575. cases:
  576. - cond: [_, u8]
  577. return: [0x36, u8]
  578. - type: [indirect, register]
  579. cases:
  580. - cond: [reg.bc, a]
  581. return: [0x02]
  582. - cond: [reg.de, a]
  583. return: [0x12]
  584. - cond: [imm, hl|i]
  585. return: [0x22, u16]
  586. - cond: [imm, a]
  587. return: [0x32, u16]
  588. - cond: [imm, bc]
  589. return: [0xED, 0x43, u16]
  590. - cond: [imm, de]
  591. return: [0xED, 0x53, u16]
  592. - cond: [imm, sp]
  593. return: [0xED, 0x73, u16]
  594. ldd:
  595. args: no
  596. return: [0xED, 0xA8]
  597. lddr:
  598. args: no
  599. return: [0xED, 0xB8]
  600. ldi:
  601. args: no
  602. return: [0xED, 0xA0]
  603. ldir:
  604. args: no
  605. return: [0xED, 0xB0]
  606. neg:
  607. args: no
  608. return: [0xED, 0x44]
  609. nop:
  610. args: no
  611. return: [0x00]
  612. or:
  613. args: yes
  614. cases:
  615. - type: [register]
  616. cases:
  617. - cond: [a]
  618. return: [0xB7]
  619. - cond: [b]
  620. return: [0xB0]
  621. - cond: [c]
  622. return: [0xB1]
  623. - cond: [d]
  624. return: [0xB2]
  625. - cond: [e]
  626. return: [0xB3]
  627. - cond: [h|ih]
  628. return: [0xB4]
  629. - cond: [l|il]
  630. return: [0xB5]
  631. - type: [immediate]
  632. cases:
  633. - cond: [u8]
  634. return: [0xF6, u8]
  635. - type: [indirect_hl_or_indexed]
  636. cases:
  637. - cond: [_]
  638. return: [0xB6]
  639. otdr:
  640. args: no
  641. return: [0xED, 0xBB]
  642. otir:
  643. args: no
  644. return: [0xED, 0xB3]
  645. out:
  646. args: yes
  647. cases:
  648. - type: [port, register]
  649. cases:
  650. - cond: [imm, a]
  651. return: [0xD3, u8]
  652. - cond: [reg.c, a]
  653. return: [0xED, 0x79]
  654. - cond: [reg.c, b]
  655. return: [0xED, 0x41]
  656. - cond: [reg.c, c]
  657. return: [0xED, 0x49]
  658. - cond: [reg.c, d]
  659. return: [0xED, 0x51]
  660. - cond: [reg.c, e]
  661. return: [0xED, 0x59]
  662. - cond: [reg.c, h]
  663. return: [0xED, 0x61]
  664. - cond: [reg.c, l]
  665. return: [0xED, 0x69]
  666. - type: [port, immediate]
  667. cases:
  668. - cond: [reg.c, u8.0]
  669. return: [0xED, 0x71]
  670. outd:
  671. args: no
  672. return: [0xED, 0xAB]
  673. outi:
  674. args: no
  675. return: [0xED, 0xA3]
  676. pop:
  677. args: yes
  678. cases:
  679. - type: [register]
  680. cases:
  681. - cond: [bc]
  682. return: [0xC1]
  683. - cond: [de]
  684. return: [0xD1]
  685. - cond: [hl|i]
  686. return: [0xE1]
  687. - cond: [af]
  688. return: [0xF1]
  689. push:
  690. args: yes
  691. cases:
  692. - type: [register]
  693. cases:
  694. - cond: [bc]
  695. return: [0xC5]
  696. - cond: [de]
  697. return: [0xD5]
  698. - cond: [hl|i]
  699. return: [0xE5]
  700. - cond: [af]
  701. return: [0xF5]
  702. res:
  703. args: yes
  704. cases:
  705. - type: [immediate, register]
  706. cases:
  707. - cond: [bit, a]
  708. return: [0xCB, bit(0x87)]
  709. - cond: [bit, b]
  710. return: [0xCB, bit(0x80)]
  711. - cond: [bit, c]
  712. return: [0xCB, bit(0x81)]
  713. - cond: [bit, d]
  714. return: [0xCB, bit(0x82)]
  715. - cond: [bit, e]
  716. return: [0xCB, bit(0x83)]
  717. - cond: [bit, h]
  718. return: [0xCB, bit(0x84)]
  719. - cond: [bit, l]
  720. return: [0xCB, bit(0x85)]
  721. - type: [immediate, indirect_hl_or_indexed]
  722. cases:
  723. - cond: [bit, _]
  724. return: [0xCB, bit(0x86)]
  725. - type: [immediate, indexed, register]
  726. cases:
  727. - cond: [bit, _, a]
  728. return: [0xCB, bit(0x87)]
  729. - cond: [bit, _, b]
  730. return: [0xCB, bit(0x80)]
  731. - cond: [bit, _, c]
  732. return: [0xCB, bit(0x81)]
  733. - cond: [bit, _, d]
  734. return: [0xCB, bit(0x82)]
  735. - cond: [bit, _, e]
  736. return: [0xCB, bit(0x83)]
  737. - cond: [bit, _, h]
  738. return: [0xCB, bit(0x84)]
  739. - cond: [bit, _, l]
  740. return: [0xCB, bit(0x85)]
  741. ret:
  742. args: yes
  743. cases:
  744. - type: []
  745. return: [0xC9]
  746. - type: [condition]
  747. cases:
  748. - cond: [nz]
  749. return: [0xC0]
  750. - cond: [z]
  751. return: [0xC8]
  752. - cond: [nc]
  753. return: [0xD0]
  754. - cond: [c]
  755. return: [0xD8]
  756. - cond: [po]
  757. return: [0xE0]
  758. - cond: [pe]
  759. return: [0xE8]
  760. - cond: [p]
  761. return: [0xF0]
  762. - cond: [m]
  763. return: [0xF8]
  764. reti:
  765. args: no
  766. return: [0xED, 0x4D]
  767. retn:
  768. args: no
  769. return: [0xED, 0x45]
  770. rl:
  771. args: yes
  772. cases:
  773. - type: [register]
  774. cases:
  775. - cond: [a]
  776. return: [0xCB, 0x17]
  777. - cond: [b]
  778. return: [0xCB, 0x10]
  779. - cond: [c]
  780. return: [0xCB, 0x11]
  781. - cond: [d]
  782. return: [0xCB, 0x12]
  783. - cond: [e]
  784. return: [0xCB, 0x13]
  785. - cond: [h]
  786. return: [0xCB, 0x14]
  787. - cond: [l]
  788. return: [0xCB, 0x15]
  789. - type: [indirect_hl_or_indexed]
  790. cases:
  791. - cond: [_]
  792. return: [0xCB, 0x16]
  793. - type: [indexed, register]
  794. cases:
  795. - cond: [_, a]
  796. return: [0xCB, 0x17]
  797. - cond: [_, b]
  798. return: [0xCB, 0x10]
  799. - cond: [_, c]
  800. return: [0xCB, 0x11]
  801. - cond: [_, d]
  802. return: [0xCB, 0x12]
  803. - cond: [_, e]
  804. return: [0xCB, 0x13]
  805. - cond: [_, h]
  806. return: [0xCB, 0x14]
  807. - cond: [_, l]
  808. return: [0xCB, 0x15]
  809. rla:
  810. args: no
  811. return: [0x17]
  812. rlc:
  813. args: yes
  814. cases:
  815. - type: [register]
  816. cases:
  817. - cond: [a]
  818. return: [0xCB, 0x07]
  819. - cond: [b]
  820. return: [0xCB, 0x00]
  821. - cond: [c]
  822. return: [0xCB, 0x01]
  823. - cond: [d]
  824. return: [0xCB, 0x02]
  825. - cond: [e]
  826. return: [0xCB, 0x03]
  827. - cond: [h]
  828. return: [0xCB, 0x04]
  829. - cond: [l]
  830. return: [0xCB, 0x05]
  831. - type: [indirect_hl_or_indexed]
  832. cases:
  833. - cond: [_]
  834. return: [0xCB, 0x06]
  835. - type: [indexed, register]
  836. cases:
  837. - cond: [_, a]
  838. return: [0xCB, 0x07]
  839. - cond: [_, b]
  840. return: [0xCB, 0x00]
  841. - cond: [_, c]
  842. return: [0xCB, 0x01]
  843. - cond: [_, d]
  844. return: [0xCB, 0x02]
  845. - cond: [_, e]
  846. return: [0xCB, 0x03]
  847. - cond: [_, h]
  848. return: [0xCB, 0x04]
  849. - cond: [_, l]
  850. return: [0xCB, 0x05]
  851. rlca:
  852. args: no
  853. return: [0x07]
  854. rld:
  855. args: no
  856. return: [0xED, 0x6F]
  857. rr:
  858. args: yes
  859. cases:
  860. - type: [register]
  861. cases:
  862. - cond: [a]
  863. return: [0xCB, 0x1F]
  864. - cond: [b]
  865. return: [0xCB, 0x18]
  866. - cond: [c]
  867. return: [0xCB, 0x19]
  868. - cond: [d]
  869. return: [0xCB, 0x1A]
  870. - cond: [e]
  871. return: [0xCB, 0x1B]
  872. - cond: [h]
  873. return: [0xCB, 0x1C]
  874. - cond: [l]
  875. return: [0xCB, 0x1D]
  876. - type: [indirect_hl_or_indexed]
  877. cases:
  878. - cond: [_]
  879. return: [0xCB, 0x1E]
  880. - type: [indexed, register]
  881. cases:
  882. - cond: [_, a]
  883. return: [0xCB, 0x1F]
  884. - cond: [_, b]
  885. return: [0xCB, 0x18]
  886. - cond: [_, c]
  887. return: [0xCB, 0x19]
  888. - cond: [_, d]
  889. return: [0xCB, 0x1A]
  890. - cond: [_, e]
  891. return: [0xCB, 0x1B]
  892. - cond: [_, h]
  893. return: [0xCB, 0x1C]
  894. - cond: [_, l]
  895. return: [0xCB, 0x1D]
  896. rra:
  897. args: no
  898. return: [0x1F]
  899. rrc:
  900. args: yes
  901. cases:
  902. - type: [register]
  903. cases:
  904. - cond: [a]
  905. return: [0xCB, 0x0F]
  906. - cond: [b]
  907. return: [0xCB, 0x08]
  908. - cond: [c]
  909. return: [0xCB, 0x09]
  910. - cond: [d]
  911. return: [0xCB, 0x0A]
  912. - cond: [e]
  913. return: [0xCB, 0x0B]
  914. - cond: [h]
  915. return: [0xCB, 0x0C]
  916. - cond: [l]
  917. return: [0xCB, 0x0D]
  918. - type: [indirect_hl_or_indexed]
  919. cases:
  920. - cond: [_]
  921. return: [0xCB, 0x0E]
  922. - type: [indexed, register]
  923. cases:
  924. - cond: [_, a]
  925. return: [0xCB, 0x0F]
  926. - cond: [_, b]
  927. return: [0xCB, 0x08]
  928. - cond: [_, c]
  929. return: [0xCB, 0x09]
  930. - cond: [_, d]
  931. return: [0xCB, 0x0A]
  932. - cond: [_, e]
  933. return: [0xCB, 0x0B]
  934. - cond: [_, h]
  935. return: [0xCB, 0x0C]
  936. - cond: [_, l]
  937. return: [0xCB, 0x0D]
  938. rrca:
  939. args: no
  940. return: [0x0F]
  941. rrd:
  942. args: no
  943. return: [0xED, 0x67]
  944. rst:
  945. args: yes
  946. cases:
  947. - type: [immediate]
  948. cases:
  949. - cond: [rst.0x00]
  950. return: [0xC7]
  951. - cond: [rst.0x08]
  952. return: [0xCF]
  953. - cond: [rst.0x10]
  954. return: [0xD7]
  955. - cond: [rst.0x18]
  956. return: [0xDF]
  957. - cond: [rst.0x20]
  958. return: [0xE7]
  959. - cond: [rst.0x28]
  960. return: [0xEF]
  961. - cond: [rst.0x30]
  962. return: [0xF7]
  963. - cond: [rst.0x38]
  964. return: [0xFF]
  965. sbc:
  966. args: yes
  967. cases:
  968. - type: [register, register]
  969. cases:
  970. - cond: [a, a]
  971. return: [0x9F]
  972. - cond: [a, b]
  973. return: [0x98]
  974. - cond: [a, c]
  975. return: [0x99]
  976. - cond: [a, d]
  977. return: [0x9A]
  978. - cond: [a, e]
  979. return: [0x9B]
  980. - cond: [a, h|ih]
  981. return: [0x9C]
  982. - cond: [a, l|il]
  983. return: [0x9D]
  984. - cond: [hl, bc]
  985. return: [0xED, 0x42]
  986. - cond: [hl, de]
  987. return: [0xED, 0x52]
  988. - cond: [hl, hl]
  989. return: [0xED, 0x62]
  990. - cond: [hl, sp]
  991. return: [0xED, 0x72]
  992. - type: [register, immediate]
  993. cases:
  994. - cond: [a, u8]
  995. return: [0xDE, u8]
  996. - type: [register, indirect_hl_or_indexed]
  997. cases:
  998. - cond: [a, _]
  999. return: [0x9E]
  1000. scf:
  1001. args: no
  1002. return: [0x37]
  1003. set:
  1004. args: yes
  1005. cases:
  1006. - type: [immediate, register]
  1007. cases:
  1008. - cond: [bit, a]
  1009. return: [0xCB, bit(0xC7)]
  1010. - cond: [bit, b]
  1011. return: [0xCB, bit(0xC0)]
  1012. - cond: [bit, c]
  1013. return: [0xCB, bit(0xC1)]
  1014. - cond: [bit, d]
  1015. return: [0xCB, bit(0xC2)]
  1016. - cond: [bit, e]
  1017. return: [0xCB, bit(0xC3)]
  1018. - cond: [bit, h]
  1019. return: [0xCB, bit(0xC4)]
  1020. - cond: [bit, l]
  1021. return: [0xCB, bit(0xC5)]
  1022. - type: [immediate, indirect_hl_or_indexed]
  1023. cases:
  1024. - cond: [bit, _]
  1025. return: [0xCB, bit(0xC6)]
  1026. - type: [immediate, indexed, register]
  1027. cases:
  1028. - cond: [bit, _, a]
  1029. return: [0xCB, bit(0xC7)]
  1030. - cond: [bit, _, b]
  1031. return: [0xCB, bit(0xC0)]
  1032. - cond: [bit, _, c]
  1033. return: [0xCB, bit(0xC1)]
  1034. - cond: [bit, _, d]
  1035. return: [0xCB, bit(0xC2)]
  1036. - cond: [bit, _, e]
  1037. return: [0xCB, bit(0xC3)]
  1038. - cond: [bit, _, h]
  1039. return: [0xCB, bit(0xC4)]
  1040. - cond: [bit, _, l]
  1041. return: [0xCB, bit(0xC5)]
  1042. sl1: &sl1
  1043. args: yes
  1044. cases:
  1045. - type: [register]
  1046. cases:
  1047. - cond: [a]
  1048. return: [0xCB, 0x37]
  1049. - cond: [b]
  1050. return: [0xCB, 0x30]
  1051. - cond: [c]
  1052. return: [0xCB, 0x31]
  1053. - cond: [d]
  1054. return: [0xCB, 0x32]
  1055. - cond: [e]
  1056. return: [0xCB, 0x33]
  1057. - cond: [h]
  1058. return: [0xCB, 0x34]
  1059. - cond: [l]
  1060. return: [0xCB, 0x35]
  1061. - type: [indirect_hl_or_indexed]
  1062. cases:
  1063. - cond: [_]
  1064. return: [0xCB, 0x36]
  1065. - type: [indexed, register]
  1066. cases:
  1067. - cond: [_, a]
  1068. return: [0xCB, 0x37]
  1069. - cond: [_, b]
  1070. return: [0xCB, 0x30]
  1071. - cond: [_, c]
  1072. return: [0xCB, 0x31]
  1073. - cond: [_, d]
  1074. return: [0xCB, 0x32]
  1075. - cond: [_, e]
  1076. return: [0xCB, 0x33]
  1077. - cond: [_, h]
  1078. return: [0xCB, 0x34]
  1079. - cond: [_, l]
  1080. return: [0xCB, 0x35]
  1081. sla:
  1082. args: yes
  1083. cases:
  1084. - type: [register]
  1085. cases:
  1086. - cond: [a]
  1087. return: [0xCB, 0x27]
  1088. - cond: [b]
  1089. return: [0xCB, 0x20]
  1090. - cond: [c]
  1091. return: [0xCB, 0x21]
  1092. - cond: [d]
  1093. return: [0xCB, 0x22]
  1094. - cond: [e]
  1095. return: [0xCB, 0x23]
  1096. - cond: [h]
  1097. return: [0xCB, 0x24]
  1098. - cond: [l]
  1099. return: [0xCB, 0x25]
  1100. - type: [indirect_hl_or_indexed]
  1101. cases:
  1102. - cond: [_]
  1103. return: [0xCB, 0x26]
  1104. - type: [indexed, register]
  1105. cases:
  1106. - cond: [_, a]
  1107. return: [0xCB, 0x27]
  1108. - cond: [_, b]
  1109. return: [0xCB, 0x20]
  1110. - cond: [_, c]
  1111. return: [0xCB, 0x21]
  1112. - cond: [_, d]
  1113. return: [0xCB, 0x22]
  1114. - cond: [_, e]
  1115. return: [0xCB, 0x23]
  1116. - cond: [_, h]
  1117. return: [0xCB, 0x24]
  1118. - cond: [_, l]
  1119. return: [0xCB, 0x25]
  1120. sll: *sl1
  1121. sls: *sl1
  1122. sra:
  1123. args: yes
  1124. cases:
  1125. - type: [register]
  1126. cases:
  1127. - cond: [a]
  1128. return: [0xCB, 0x2F]
  1129. - cond: [b]
  1130. return: [0xCB, 0x28]
  1131. - cond: [c]
  1132. return: [0xCB, 0x29]
  1133. - cond: [d]
  1134. return: [0xCB, 0x2A]
  1135. - cond: [e]
  1136. return: [0xCB, 0x2B]
  1137. - cond: [h]
  1138. return: [0xCB, 0x2C]
  1139. - cond: [l]
  1140. return: [0xCB, 0x2D]
  1141. - type: [indirect_hl_or_indexed]
  1142. cases:
  1143. - cond: [_]
  1144. return: [0xCB, 0x2E]
  1145. - type: [indexed, register]
  1146. cases:
  1147. - cond: [_, a]
  1148. return: [0xCB, 0x2F]
  1149. - cond: [_, b]
  1150. return: [0xCB, 0x28]
  1151. - cond: [_, c]
  1152. return: [0xCB, 0x29]
  1153. - cond: [_, d]
  1154. return: [0xCB, 0x2A]
  1155. - cond: [_, e]
  1156. return: [0xCB, 0x2B]
  1157. - cond: [_, h]
  1158. return: [0xCB, 0x2C]
  1159. - cond: [_, l]
  1160. return: [0xCB, 0x2D]
  1161. srl:
  1162. args: yes
  1163. cases:
  1164. - type: [register]
  1165. cases:
  1166. - cond: [a]
  1167. return: [0xCB, 0x3F]
  1168. - cond: [b]
  1169. return: [0xCB, 0x38]
  1170. - cond: [c]
  1171. return: [0xCB, 0x39]
  1172. - cond: [d]
  1173. return: [0xCB, 0x3A]
  1174. - cond: [e]
  1175. return: [0xCB, 0x3B]
  1176. - cond: [h]
  1177. return: [0xCB, 0x3C]
  1178. - cond: [l]
  1179. return: [0xCB, 0x3D]
  1180. - type: [indirect_hl_or_indexed]
  1181. cases:
  1182. - cond: [_]
  1183. return: [0xCB, 0x3E]
  1184. - type: [indexed, register]
  1185. cases:
  1186. - cond: [_, a]
  1187. return: [0xCB, 0x3F]
  1188. - cond: [_, b]
  1189. return: [0xCB, 0x38]
  1190. - cond: [_, c]
  1191. return: [0xCB, 0x39]
  1192. - cond: [_, d]
  1193. return: [0xCB, 0x3A]
  1194. - cond: [_, e]
  1195. return: [0xCB, 0x3B]
  1196. - cond: [_, h]
  1197. return: [0xCB, 0x3C]
  1198. - cond: [_, l]
  1199. return: [0xCB, 0x3D]
  1200. sub:
  1201. args: yes
  1202. cases:
  1203. - type: [register]
  1204. cases:
  1205. - cond: [a]
  1206. return: [0x97]
  1207. - cond: [b]
  1208. return: [0x90]
  1209. - cond: [c]
  1210. return: [0x91]
  1211. - cond: [d]
  1212. return: [0x92]
  1213. - cond: [e]
  1214. return: [0x93]
  1215. - cond: [h|ih]
  1216. return: [0x94]
  1217. - cond: [l|il]
  1218. return: [0x95]
  1219. - type: [immediate]
  1220. cases:
  1221. - cond: [u8]
  1222. return: [0xD6, u8]
  1223. - type: [indirect_hl_or_indexed]
  1224. cases:
  1225. - cond: [_]
  1226. return: [0x96]
  1227. xor:
  1228. args: yes
  1229. cases:
  1230. - type: [register]
  1231. cases:
  1232. - cond: [a]
  1233. return: [0xAF]
  1234. - cond: [b]
  1235. return: [0xA8]
  1236. - cond: [c]
  1237. return: [0xA9]
  1238. - cond: [d]
  1239. return: [0xAA]
  1240. - cond: [e]
  1241. return: [0xAB]
  1242. - cond: [h|ih]
  1243. return: [0xAC]
  1244. - cond: [l|il]
  1245. return: [0xAD]
  1246. - type: [immediate]
  1247. cases:
  1248. - cond: [u8]
  1249. return: [0xEE, u8]
  1250. - type: [indirect_hl_or_indexed]
  1251. cases:
  1252. - cond: [_]
  1253. return: [0xAE]