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.
 
 
 
 
 

384 lines
5.9 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]
  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: no
  80. # return: error
  81. # bit:
  82. # args: no
  83. # return: error
  84. # call:
  85. # args: no
  86. # return: error
  87. ccf:
  88. args: no
  89. return: [0x3F]
  90. # cp:
  91. # args: no
  92. # return: error
  93. cpd:
  94. args: no
  95. return: [0xED, 0xA9]
  96. cpdr:
  97. args: no
  98. return: [0xED, 0xB9]
  99. cpi:
  100. args: no
  101. return: [0xED, 0xA1]
  102. cpir:
  103. args: no
  104. return: [0xED, 0xB1]
  105. cpl:
  106. args: no
  107. return: [0x2F]
  108. daa:
  109. args: no
  110. return: [0x27]
  111. # dec:
  112. # args: no
  113. # return: error
  114. di:
  115. args: no
  116. return: [0xF3]
  117. # djnz:
  118. # args: no
  119. # return: error
  120. ei:
  121. args: no
  122. return: [0xFB]
  123. # ex:
  124. # args: no
  125. # return: error
  126. exx:
  127. args: no
  128. return: [0xD9]
  129. halt:
  130. args: no
  131. return: [0x76]
  132. # im:
  133. # args: no
  134. # return: error
  135. # in:
  136. # args: no
  137. # return: error
  138. inc:
  139. args: yes
  140. cases:
  141. - type: [register]
  142. cases:
  143. - cond: [a]
  144. return: [0x3C]
  145. - cond: [b]
  146. return: [0x04]
  147. - cond: [c]
  148. return: [0x0C]
  149. - cond: [d]
  150. return: [0x14]
  151. - cond: [e]
  152. return: [0x1C]
  153. - cond: [h|ih]
  154. return: [0x24]
  155. - cond: [l|il]
  156. return: [0x2C]
  157. - cond: [bc]
  158. return: [0x03]
  159. - cond: [de]
  160. return: [0x13]
  161. - cond: [hl|i]
  162. return: [0x23]
  163. - cond: [sp]
  164. return: [0x33]
  165. - type: [indirect_hl_or_indexed]
  166. cases:
  167. - cond: [_]
  168. return: [0x34]
  169. ind:
  170. args: no
  171. return: [0xED, 0xAA]
  172. indr:
  173. args: no
  174. return: [0xED, 0xBA]
  175. ini:
  176. args: no
  177. return: [0xED, 0xA2]
  178. inir:
  179. args: no
  180. return: [0xED, 0xB2]
  181. # jp:
  182. # args: no
  183. # return: error
  184. # jr:
  185. # args: no
  186. # return: error
  187. # ld:
  188. # args: no
  189. # return: error
  190. ldd:
  191. args: no
  192. return: [0xED, 0xA8]
  193. lddr:
  194. args: no
  195. return: [0xED, 0xB8]
  196. ldi:
  197. args: no
  198. return: [0xED, 0xA0]
  199. ldir:
  200. args: no
  201. return: [0xED, 0xB0]
  202. neg:
  203. args: no
  204. return: [0xED, 0x44]
  205. nop:
  206. args: no
  207. return: [0x00]
  208. # or:
  209. # args: no
  210. # return: error
  211. otdr:
  212. args: no
  213. return: [0xED, 0xBB]
  214. otir:
  215. args: no
  216. return: [0xED, 0xB3]
  217. # out:
  218. # args: no
  219. # return: error
  220. outd:
  221. args: no
  222. return: [0xED, 0xAB]
  223. outi:
  224. args: no
  225. return: [0xED, 0xA3]
  226. # pop:
  227. # args: no
  228. # return: error
  229. # push:
  230. # args: no
  231. # return: error
  232. # res:
  233. # args: no
  234. # return: error
  235. # ret:
  236. # args: no
  237. # return: error
  238. reti:
  239. args: no
  240. return: [0xED, 0x4D]
  241. retn:
  242. args: no
  243. return: [0xED, 0x45]
  244. # rl:
  245. # args: no
  246. # return: error
  247. rla:
  248. args: no
  249. return: [0x17]
  250. # rlc:
  251. # args: no
  252. # return: error
  253. rlca:
  254. args: no
  255. return: [0x07]
  256. rld:
  257. args: no
  258. return: [0xED, 0x6F]
  259. # rr:
  260. # args: no
  261. # return: error
  262. rra:
  263. args: no
  264. return: [0x1F]
  265. # rrc:
  266. # args: no
  267. # return: error
  268. rrca:
  269. args: no
  270. return: [0x0F]
  271. # rrd:
  272. # args: no
  273. # return: error
  274. # rst:
  275. # args: no
  276. # return: error
  277. # sbc:
  278. # args: no
  279. # return: error
  280. scf:
  281. args: no
  282. return: [0x37]
  283. # set:
  284. # args: no
  285. # return: error
  286. # sl1:
  287. # args: no
  288. # return: error
  289. # sla:
  290. # args: no
  291. # return: error
  292. # sll:
  293. # args: no
  294. # return: error
  295. # sls:
  296. # args: no
  297. # return: error
  298. # sra:
  299. # args: no
  300. # return: error
  301. # srl:
  302. # args: no
  303. # return: error
  304. # sub:
  305. # args: no
  306. # return: error
  307. # xor:
  308. # args: no
  309. # return: error