zemu 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (285) hide show
  1. checksums.yaml +7 -0
  2. data/lib/zemu/config.rb +312 -0
  3. data/lib/zemu/instance.rb +179 -0
  4. data/lib/zemu.rb +172 -0
  5. data/src/debug.c +118 -0
  6. data/src/debug.h +30 -0
  7. data/src/external/Z/API/Z/ABIs/generic/allocator.h +36 -0
  8. data/src/external/Z/API/Z/ABIs/generic/cipher.h +47 -0
  9. data/src/external/Z/API/Z/ABIs/generic/data codec.h +33 -0
  10. data/src/external/Z/API/Z/ABIs/generic/emulation.h +103 -0
  11. data/src/external/Z/API/Z/ABIs/generic/hash function.h +33 -0
  12. data/src/external/Z/API/Z/ABIs/generic/module.h +33 -0
  13. data/src/external/Z/API/Z/ABIs/generic/wave codec.h +40 -0
  14. data/src/external/Z/API/Z/classes/base/InitializerList.hpp +34 -0
  15. data/src/external/Z/API/Z/classes/base/OpaqueFunctionPointer.hpp +26 -0
  16. data/src/external/Z/API/Z/classes/base/OpaqueMemberFunctionPointer.hpp +26 -0
  17. data/src/external/Z/API/Z/classes/base/Pair.hpp +46 -0
  18. data/src/external/Z/API/Z/classes/base/Range.hpp +111 -0
  19. data/src/external/Z/API/Z/classes/base/SizedString.hpp +66 -0
  20. data/src/external/Z/API/Z/classes/base/Status.hpp +89 -0
  21. data/src/external/Z/API/Z/classes/base/Symbol.hpp +39 -0
  22. data/src/external/Z/API/Z/classes/base/Tuple.hpp +111 -0
  23. data/src/external/Z/API/Z/classes/base/Value2D.hpp +389 -0
  24. data/src/external/Z/API/Z/classes/base/Value3D.hpp +368 -0
  25. data/src/external/Z/API/Z/classes/buffering/RingBuffer.hpp +93 -0
  26. data/src/external/Z/API/Z/classes/buffering/TripleBuffer.hpp +68 -0
  27. data/src/external/Z/API/Z/classes/functional/Functor.hpp +265 -0
  28. data/src/external/Z/API/Z/classes/functional/MemberFunction.hpp +98 -0
  29. data/src/external/Z/API/Z/classes/functional/ObjectMemberFunction.hpp +172 -0
  30. data/src/external/Z/API/Z/classes/functional/ObjectSelector.hpp +219 -0
  31. data/src/external/Z/API/Z/classes/functional/Selector.hpp +146 -0
  32. data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/AABB.hpp +81 -0
  33. data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/AABR.hpp +685 -0
  34. data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Box.hpp +219 -0
  35. data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Circle.hpp +80 -0
  36. data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Line2D.hpp +93 -0
  37. data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Line3D.hpp +80 -0
  38. data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Rectangle.hpp +675 -0
  39. data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Sphere.hpp +0 -0
  40. data/src/external/Z/API/Z/classes/memory/Shared.hpp +90 -0
  41. data/src/external/Z/API/Z/constants/base.h +35 -0
  42. data/src/external/Z/API/Z/constants/chemical elements.h +6385 -0
  43. data/src/external/Z/API/Z/constants/numbers.h +963 -0
  44. data/src/external/Z/API/Z/constants/version.h +15 -0
  45. data/src/external/Z/API/Z/formats/character set/ASCII.h +158 -0
  46. data/src/external/Z/API/Z/formats/character set/DOS CP437.h +159 -0
  47. data/src/external/Z/API/Z/formats/character set/DOS CP737.h +159 -0
  48. data/src/external/Z/API/Z/formats/character set/DOS CP775.h +159 -0
  49. data/src/external/Z/API/Z/formats/character set/DOS CP850.h +159 -0
  50. data/src/external/Z/API/Z/formats/character set/DOS CP852.h +159 -0
  51. data/src/external/Z/API/Z/formats/character set/DOS CP855.h +159 -0
  52. data/src/external/Z/API/Z/formats/character set/DOS CP857.h +159 -0
  53. data/src/external/Z/API/Z/formats/character set/DOS CP858.h +159 -0
  54. data/src/external/Z/API/Z/formats/character set/DOS CP860.h +159 -0
  55. data/src/external/Z/API/Z/formats/character set/DOS CP861.h +159 -0
  56. data/src/external/Z/API/Z/formats/character set/DOS CP862.h +159 -0
  57. data/src/external/Z/API/Z/formats/character set/DOS CP863.h +159 -0
  58. data/src/external/Z/API/Z/formats/character set/DOS CP864.h +159 -0
  59. data/src/external/Z/API/Z/formats/character set/DOS CP865.h +159 -0
  60. data/src/external/Z/API/Z/formats/character set/DOS CP866.h +159 -0
  61. data/src/external/Z/API/Z/formats/character set/DOS CP869.h +159 -0
  62. data/src/external/Z/API/Z/formats/character set/DOS CP872.h +159 -0
  63. data/src/external/Z/API/Z/formats/character set/DOS CP874.h +159 -0
  64. data/src/external/Z/API/Z/formats/character set/Unicode.h +30119 -0
  65. data/src/external/Z/API/Z/formats/data model/I16LP32.h +19 -0
  66. data/src/external/Z/API/Z/formats/data model/ILP32.h +19 -0
  67. data/src/external/Z/API/Z/formats/data model/ILP64.h +19 -0
  68. data/src/external/Z/API/Z/formats/data model/IP16L32.h +19 -0
  69. data/src/external/Z/API/Z/formats/data model/LLP64.h +19 -0
  70. data/src/external/Z/API/Z/formats/data model/LP32.h +19 -0
  71. data/src/external/Z/API/Z/formats/data model/LP64.h +19 -0
  72. data/src/external/Z/API/Z/formats/data model/SILP64.h +19 -0
  73. data/src/external/Z/API/Z/formats/file system/FAT12.h +61 -0
  74. data/src/external/Z/API/Z/formats/floating-point/IEEE 754.h +141 -0
  75. data/src/external/Z/API/Z/formats/floating-point/x87.h +74 -0
  76. data/src/external/Z/API/Z/formats/image/ICNS.h +39 -0
  77. data/src/external/Z/API/Z/formats/keymap/Mac OS.h +284 -0
  78. data/src/external/Z/API/Z/formats/keymap/Z.h +141 -0
  79. data/src/external/Z/API/Z/formats/multimedia/Creative Voice.h +106 -0
  80. data/src/external/Z/API/Z/formats/multimedia/Microsoft Wave.h +49 -0
  81. data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/ACH.h +44 -0
  82. data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/FRZ.h +54 -0
  83. data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/PRG.h +33 -0
  84. data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SEM.h +46 -0
  85. data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SIT.h +34 -0
  86. data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SNA.h +117 -0
  87. data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SNP.h +37 -0
  88. data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SP.h +62 -0
  89. data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/Z80.h +117 -0
  90. data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/ZX.h +56 -0
  91. data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/ZX82.h +70 -0
  92. data/src/external/Z/API/Z/formats/storage medium image/NES Game Pak/UNIF.h +26 -0
  93. data/src/external/Z/API/Z/formats/storage medium image/NES Game Pak/iNES.h +76 -0
  94. data/src/external/Z/API/Z/formats/storage medium image/audio/TAP.h +25 -0
  95. data/src/external/Z/API/Z/formats/storage medium image/audio/TZX.h +1185 -0
  96. data/src/external/Z/API/Z/formats/storage medium image/audio/Warajevo TAP.h +32 -0
  97. data/src/external/Z/API/Z/formats/storage medium image/floppy disk/FDI.h +45 -0
  98. data/src/external/Z/API/Z/functions/base/Z2D.h +583 -0
  99. data/src/external/Z/API/Z/functions/base/Z3D.h +712 -0
  100. data/src/external/Z/API/Z/functions/base/ZRange.h +137 -0
  101. data/src/external/Z/API/Z/functions/base/all.h +16 -0
  102. data/src/external/Z/API/Z/functions/base/casting.hpp +37 -0
  103. data/src/external/Z/API/Z/functions/base/character.h +38 -0
  104. data/src/external/Z/API/Z/functions/base/constructors.h +326 -0
  105. data/src/external/Z/API/Z/functions/base/structure.hpp +26 -0
  106. data/src/external/Z/API/Z/functions/base/type.hpp +60 -0
  107. data/src/external/Z/API/Z/functions/base/value.h +1901 -0
  108. data/src/external/Z/API/Z/functions/base/value.hpp +112 -0
  109. data/src/external/Z/API/Z/functions/buffering/ZRingBuffer.h +85 -0
  110. data/src/external/Z/API/Z/functions/buffering/ZTripleBuffer.h +65 -0
  111. data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/Z2DLine.h +179 -0
  112. data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/Z3DLine.h +168 -0
  113. data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZAABB.h +361 -0
  114. data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZAABR.h +1081 -0
  115. data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZBox.h +340 -0
  116. data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZCircle.h +142 -0
  117. data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZRectangle.h +1267 -0
  118. data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZSphere.h +156 -0
  119. data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/all.h +18 -0
  120. data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/constructors.h +620 -0
  121. data/src/external/Z/API/Z/functions/time/date.h +29 -0
  122. data/src/external/Z/API/Z/hardware/CPU/architecture/6502.h +90 -0
  123. data/src/external/Z/API/Z/hardware/CPU/architecture/Z80.h +245 -0
  124. data/src/external/Z/API/Z/hardware/CPU/architecture/i4004.h +37 -0
  125. data/src/external/Z/API/Z/hardware/PSG/General Instrument/AY-3-891x.h +180 -0
  126. data/src/external/Z/API/Z/hardware/VDC/Ricoh/RP2C0x.h +625 -0
  127. data/src/external/Z/API/Z/hardware/bus/AGP.h +24 -0
  128. data/src/external/Z/API/Z/hardware/bus/USB.h +510 -0
  129. data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/Inves Spectrum +.h +47 -0
  130. data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/Pentagon.h +13 -0
  131. data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/Scorpion.h +13 -0
  132. data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum + 128K.h +158 -0
  133. data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +.h +82 -0
  134. data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +2.h +13 -0
  135. data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +2A.h +13 -0
  136. data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +3.h +13 -0
  137. data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum.h +109 -0
  138. data/src/external/Z/API/Z/hardware/machine/model/console/Nintendo Entertainment System/NES-001 (NTSC).h +29 -0
  139. data/src/external/Z/API/Z/hardware/machine/model/console/Nintendo Entertainment System/NES-001 (PAL).h +29 -0
  140. data/src/external/Z/API/Z/hardware/machine/platform/computer/ZX Spectrum.h +405 -0
  141. data/src/external/Z/API/Z/hardware/machine/platform/console/Game Boy.h +49 -0
  142. data/src/external/Z/API/Z/hardware/machine/platform/console/Nintendo Entertainment System.h +350 -0
  143. data/src/external/Z/API/Z/hardware/storage medium/ROM cartridge/SNES Game Pak.h +238 -0
  144. data/src/external/Z/API/Z/inspection/C/completion.h +178 -0
  145. data/src/external/Z/API/Z/inspection/C/modules/C11.h +41 -0
  146. data/src/external/Z/API/Z/inspection/C/modules/C18.h +13 -0
  147. data/src/external/Z/API/Z/inspection/C/modules/C89.h +19 -0
  148. data/src/external/Z/API/Z/inspection/C/modules/C90.h +13 -0
  149. data/src/external/Z/API/Z/inspection/C/modules/C94.h +15 -0
  150. data/src/external/Z/API/Z/inspection/C/modules/C99.h +29 -0
  151. data/src/external/Z/API/Z/inspection/C/modules/KR C.h +19 -0
  152. data/src/external/Z/API/Z/inspection/C++/completion.h +512 -0
  153. data/src/external/Z/API/Z/inspection/C++/modules/C++03.h +15 -0
  154. data/src/external/Z/API/Z/inspection/C++/modules/C++11.h +80 -0
  155. data/src/external/Z/API/Z/inspection/C++/modules/C++14.h +26 -0
  156. data/src/external/Z/API/Z/inspection/C++/modules/C++17.h +55 -0
  157. data/src/external/Z/API/Z/inspection/C++/modules/C++85.h +11 -0
  158. data/src/external/Z/API/Z/inspection/C++/modules/C++89.h +13 -0
  159. data/src/external/Z/API/Z/inspection/C++/modules/C++98.h +17 -0
  160. data/src/external/Z/API/Z/inspection/C++.h +78 -0
  161. data/src/external/Z/API/Z/inspection/C.h +79 -0
  162. data/src/external/Z/API/Z/inspection/CPU/completion.h +56 -0
  163. data/src/external/Z/API/Z/inspection/CPU/detection.h +714 -0
  164. data/src/external/Z/API/Z/inspection/CPU/modules/6502.h +25 -0
  165. data/src/external/Z/API/Z/inspection/CPU/modules/AArch32.h +32 -0
  166. data/src/external/Z/API/Z/inspection/CPU/modules/AArch64.h +32 -0
  167. data/src/external/Z/API/Z/inspection/CPU/modules/Z80.h +26 -0
  168. data/src/external/Z/API/Z/inspection/CPU/modules/x86-32.h +31 -0
  169. data/src/external/Z/API/Z/inspection/CPU/modules/x86-64.h +312 -0
  170. data/src/external/Z/API/Z/inspection/CPU.h +209 -0
  171. data/src/external/Z/API/Z/inspection/OS/completion.h +36 -0
  172. data/src/external/Z/API/Z/inspection/OS/detection.h +768 -0
  173. data/src/external/Z/API/Z/inspection/OS/modules/Linux.h +22 -0
  174. data/src/external/Z/API/Z/inspection/OS/modules/MS-DOS.h +16 -0
  175. data/src/external/Z/API/Z/inspection/OS/modules/Mac OS X.h +23 -0
  176. data/src/external/Z/API/Z/inspection/OS/modules/Windows.h +19 -0
  177. data/src/external/Z/API/Z/inspection/OS/modules/iPhone OS.h +23 -0
  178. data/src/external/Z/API/Z/inspection/OS.h +236 -0
  179. data/src/external/Z/API/Z/inspection/Objective-C/completion.h +8 -0
  180. data/src/external/Z/API/Z/inspection/Objective-C/modules/Objective-C v1.0.h +11 -0
  181. data/src/external/Z/API/Z/inspection/Objective-C/modules/Objective-C v2.0.h +15 -0
  182. data/src/external/Z/API/Z/inspection/Objective-C.h +51 -0
  183. data/src/external/Z/API/Z/inspection/Z.h +19 -0
  184. data/src/external/Z/API/Z/inspection/build.h +22 -0
  185. data/src/external/Z/API/Z/inspection/character set.h +66 -0
  186. data/src/external/Z/API/Z/inspection/compiler/completion.h +2885 -0
  187. data/src/external/Z/API/Z/inspection/compiler/modules/Apple LLVM.h +26 -0
  188. data/src/external/Z/API/Z/inspection/compiler/modules/Clang.h +1664 -0
  189. data/src/external/Z/API/Z/inspection/compiler/modules/GCC.h +1366 -0
  190. data/src/external/Z/API/Z/inspection/compiler/modules/SCCZ80.h +473 -0
  191. data/src/external/Z/API/Z/inspection/compiler/modules/Visual C++.h +606 -0
  192. data/src/external/Z/API/Z/inspection/compiler/modules/cc65.h +529 -0
  193. data/src/external/Z/API/Z/inspection/compiler/modules/generic.h +13 -0
  194. data/src/external/Z/API/Z/inspection/compiler/modules/template.h +650 -0
  195. data/src/external/Z/API/Z/inspection/compiler.h +299 -0
  196. data/src/external/Z/API/Z/inspection/data model/completion.h +128 -0
  197. data/src/external/Z/API/Z/inspection/data model/deduction.h +9 -0
  198. data/src/external/Z/API/Z/inspection/data model/detection.h +45 -0
  199. data/src/external/Z/API/Z/inspection/data model.h +362 -0
  200. data/src/external/Z/API/Z/inspection/floating-point/completion.h +50 -0
  201. data/src/external/Z/API/Z/inspection/floating-point.h +324 -0
  202. data/src/external/Z/API/Z/inspection/language.h +163 -0
  203. data/src/external/Z/API/Z/inspection/platform/detection.h +9 -0
  204. data/src/external/Z/API/Z/inspection/platform.h +29 -0
  205. data/src/external/Z/API/Z/keys/C++.h +27 -0
  206. data/src/external/Z/API/Z/keys/C.h +29 -0
  207. data/src/external/Z/API/Z/keys/CPU.h +80 -0
  208. data/src/external/Z/API/Z/keys/OS.h +182 -0
  209. data/src/external/Z/API/Z/keys/Objective-C.h +17 -0
  210. data/src/external/Z/API/Z/keys/chemistry.h +26 -0
  211. data/src/external/Z/API/Z/keys/compiler.h +178 -0
  212. data/src/external/Z/API/Z/keys/data model.h +32 -0
  213. data/src/external/Z/API/Z/keys/endianness.h +24 -0
  214. data/src/external/Z/API/Z/keys/language.h +21 -0
  215. data/src/external/Z/API/Z/keys/layout.h +20 -0
  216. data/src/external/Z/API/Z/keys/mathematics/geometry.h +29 -0
  217. data/src/external/Z/API/Z/keys/mathematics/number.h +21 -0
  218. data/src/external/Z/API/Z/keys/order.h +18 -0
  219. data/src/external/Z/API/Z/keys/platform.h +87 -0
  220. data/src/external/Z/API/Z/keys/program.h +39 -0
  221. data/src/external/Z/API/Z/keys/science/chemical elements.h +200 -0
  222. data/src/external/Z/API/Z/keys/science/electricity.h +18 -0
  223. data/src/external/Z/API/Z/keys/science/magnetism.h +19 -0
  224. data/src/external/Z/API/Z/keys/status.h +69 -0
  225. data/src/external/Z/API/Z/keys/text.h +27 -0
  226. data/src/external/Z/API/Z/keys/value.h +88 -0
  227. data/src/external/Z/API/Z/macros/arguments.h +25 -0
  228. data/src/external/Z/API/Z/macros/casting.h +22 -0
  229. data/src/external/Z/API/Z/macros/character.h +159 -0
  230. data/src/external/Z/API/Z/macros/date.h +14 -0
  231. data/src/external/Z/API/Z/macros/key.h +20 -0
  232. data/src/external/Z/API/Z/macros/language.h +126 -0
  233. data/src/external/Z/API/Z/macros/language.hpp +81 -0
  234. data/src/external/Z/API/Z/macros/members.h +86 -0
  235. data/src/external/Z/API/Z/macros/pasting.h +308 -0
  236. data/src/external/Z/API/Z/macros/pointer.h +33 -0
  237. data/src/external/Z/API/Z/macros/repetition.h +283 -0
  238. data/src/external/Z/API/Z/macros/structure.h +104 -0
  239. data/src/external/Z/API/Z/macros/templating.h +407 -0
  240. data/src/external/Z/API/Z/macros/tokens.h +14 -0
  241. data/src/external/Z/API/Z/macros/type enumeration.h +43 -0
  242. data/src/external/Z/API/Z/macros/type selection.hpp +76 -0
  243. data/src/external/Z/API/Z/macros/value.h +489 -0
  244. data/src/external/Z/API/Z/macros/variadic pasting.h +21 -0
  245. data/src/external/Z/API/Z/macros/variadic selection.h +56 -0
  246. data/src/external/Z/API/Z/macros/variadic.h +46 -0
  247. data/src/external/Z/API/Z/macros/version.h +17 -0
  248. data/src/external/Z/API/Z/network/3/IP.h +36 -0
  249. data/src/external/Z/API/Z/network/4/TCP.h +24 -0
  250. data/src/external/Z/API/Z/network/4/UDP.h +26 -0
  251. data/src/external/Z/API/Z/network/7/ED2K.h +104 -0
  252. data/src/external/Z/API/Z/network/7/HTTP.h +100 -0
  253. data/src/external/Z/API/Z/traits/SelectType.hpp +71 -0
  254. data/src/external/Z/API/Z/traits/TernaryType.hpp +20 -0
  255. data/src/external/Z/API/Z/traits/Type.hpp +4516 -0
  256. data/src/external/Z/API/Z/traits/TypeCount.hpp +52 -0
  257. data/src/external/Z/API/Z/traits/TypeList.hpp +376 -0
  258. data/src/external/Z/API/Z/traits/base.hpp +19 -0
  259. data/src/external/Z/API/Z/traits/filtering.hpp +30 -0
  260. data/src/external/Z/API/Z/traits/mathematics.hpp +48 -0
  261. data/src/external/Z/API/Z/types/arguments.h +19 -0
  262. data/src/external/Z/API/Z/types/base.h +1655 -0
  263. data/src/external/Z/API/Z/types/base.hpp +169 -0
  264. data/src/external/Z/API/Z/types/buffering.h +27 -0
  265. data/src/external/Z/API/Z/types/mathematics.h +135 -0
  266. data/src/external/Z/API/Z/types/time.h +23 -0
  267. data/src/external/Z/COPYING.LESSER +165 -0
  268. data/src/external/Z/development/Qt Creator/Z.pro +253 -0
  269. data/src/external/Z/distribution/CocoaPods/Zeta.podspec +18 -0
  270. data/src/external/Z/distribution/Gentoo Linux/Zeta-0.1.ebuild +22 -0
  271. data/src/external/Z/distribution/Gentoo Linux/metadata.xml +8 -0
  272. data/src/external/Z/distribution/Homebrew/Zeta.rb +11 -0
  273. data/src/external/z80/API/emulation/CPU/Z80.h +201 -0
  274. data/src/external/z80/README.md +229 -0
  275. data/src/external/z80/building/premake4.lua +33 -0
  276. data/src/external/z80/development/Xcode/Z80.xcodeproj/project.pbxproj +520 -0
  277. data/src/external/z80/sources/Z80.c +1660 -0
  278. data/src/interrupt.c +6 -0
  279. data/src/interrupt.h +3 -0
  280. data/src/io.c.erb +115 -0
  281. data/src/io.h.erb +18 -0
  282. data/src/main.c +69 -0
  283. data/src/memory.c.erb +43 -0
  284. data/src/memory.h.erb +9 -0
  285. metadata +329 -0
@@ -0,0 +1,253 @@
1
+ HEADERS += \
2
+ "../../API/Z/ABIs/generic/allocation.h" \
3
+ "../../API/Z/ABIs/generic/cipher.h" \
4
+ "../../API/Z/ABIs/generic/data codec.h" \
5
+ "../../API/Z/ABIs/generic/emulation.h" \
6
+ "../../API/Z/ABIs/generic/hash function.h" \
7
+ "../../API/Z/ABIs/generic/module.h" \
8
+ "../../API/Z/ABIs/generic/wave codec.h" \
9
+ "../../API/Z/classes/base/InitializerList.hpp" \
10
+ "../../API/Z/classes/base/OpaqueFunctionPointer.hpp" \
11
+ "../../API/Z/classes/base/OpaqueMemberFunctionPointer.hpp" \
12
+ "../../API/Z/classes/base/Pair.hpp" \
13
+ "../../API/Z/classes/base/Range.hpp" \
14
+ "../../API/Z/classes/base/SizedString.hpp" \
15
+ "../../API/Z/classes/base/Status.hpp" \
16
+ "../../API/Z/classes/base/Symbol.hpp" \
17
+ "../../API/Z/classes/base/Tuple.hpp" \
18
+ "../../API/Z/classes/base/Value2D.hpp" \
19
+ "../../API/Z/classes/base/Value3D.hpp" \
20
+ "../../API/Z/classes/buffering/RingBuffer.hpp" \
21
+ "../../API/Z/classes/buffering/TripleBuffer.hpp" \
22
+ "../../API/Z/classes/functional/Functor.hpp" \
23
+ "../../API/Z/classes/functional/MemberFunction.hpp" \
24
+ "../../API/Z/classes/functional/ObjectMemberFunction.hpp" \
25
+ "../../API/Z/classes/functional/ObjectSelector.hpp" \
26
+ "../../API/Z/classes/functional/Selector.hpp" \
27
+ "../../API/Z/classes/mathematics/geometry/euclidean/AABB.hpp" \
28
+ "../../API/Z/classes/mathematics/geometry/euclidean/AABR.hpp" \
29
+ "../../API/Z/classes/mathematics/geometry/euclidean/Box.hpp" \
30
+ "../../API/Z/classes/mathematics/geometry/euclidean/Circle.hpp" \
31
+ "../../API/Z/classes/mathematics/geometry/euclidean/Line2D.hpp" \
32
+ "../../API/Z/classes/mathematics/geometry/euclidean/Line3D.hpp" \
33
+ "../../API/Z/classes/mathematics/geometry/euclidean/Rectangle.hpp" \
34
+ "../../API/Z/classes/mathematics/geometry/euclidean/Sphere.hpp" \
35
+ "../../API/Z/classes/memory/Shared.hpp" \
36
+ "../../API/Z/constants/base.h" \
37
+ "../../API/Z/constants/numbers.h" \
38
+ "../../API/Z/constants/science/chemical elements.h" \
39
+ "../../API/Z/constants/version.h" \
40
+ "../../API/Z/formats/character set/ASCII.h" \
41
+ "../../API/Z/formats/character set/DOS CP437.h" \
42
+ "../../API/Z/formats/character set/DOS CP737.h" \
43
+ "../../API/Z/formats/character set/DOS CP775.h" \
44
+ "../../API/Z/formats/character set/DOS CP850.h" \
45
+ "../../API/Z/formats/character set/DOS CP852.h" \
46
+ "../../API/Z/formats/character set/DOS CP855.h" \
47
+ "../../API/Z/formats/character set/DOS CP857.h" \
48
+ "../../API/Z/formats/character set/DOS CP858.h" \
49
+ "../../API/Z/formats/character set/DOS CP860.h" \
50
+ "../../API/Z/formats/character set/DOS CP861.h" \
51
+ "../../API/Z/formats/character set/DOS CP862.h" \
52
+ "../../API/Z/formats/character set/DOS CP863.h" \
53
+ "../../API/Z/formats/character set/DOS CP864.h" \
54
+ "../../API/Z/formats/character set/DOS CP865.h" \
55
+ "../../API/Z/formats/character set/DOS CP866.h" \
56
+ "../../API/Z/formats/character set/DOS CP869.h" \
57
+ "../../API/Z/formats/character set/DOS CP872.h" \
58
+ "../../API/Z/formats/character set/DOS CP874.h" \
59
+ "../../API/Z/formats/character set/Unicode.h" \
60
+ "../../API/Z/formats/data model/I16LP32.h" \
61
+ "../../API/Z/formats/data model/ILP32.h" \
62
+ "../../API/Z/formats/data model/ILP64.h" \
63
+ "../../API/Z/formats/data model/IP16L32.h" \
64
+ "../../API/Z/formats/data model/LLP64.h" \
65
+ "../../API/Z/formats/data model/LP32.h" \
66
+ "../../API/Z/formats/data model/LP64.h" \
67
+ "../../API/Z/formats/data model/SILP64.h" \
68
+ "../../API/Z/formats/file system/FAT12.h" \
69
+ "../../API/Z/formats/floating-point/IEEE 754.h" \
70
+ "../../API/Z/formats/floating-point/x87.h" \
71
+ "../../API/Z/formats/image/ICNS.h" \
72
+ "../../API/Z/formats/keymap/Mac OS.h" \
73
+ "../../API/Z/formats/keymap/Z.h" \
74
+ "../../API/Z/formats/multimedia/Creative Voice.h" \
75
+ "../../API/Z/formats/multimedia/Microsoft Wave.h" \
76
+ "../../API/Z/formats/snapshot/machine/computer/ZX Spectrum/ACH.h" \
77
+ "../../API/Z/formats/snapshot/machine/computer/ZX Spectrum/FRZ.h" \
78
+ "../../API/Z/formats/snapshot/machine/computer/ZX Spectrum/PRG.h" \
79
+ "../../API/Z/formats/snapshot/machine/computer/ZX Spectrum/SEM.h" \
80
+ "../../API/Z/formats/snapshot/machine/computer/ZX Spectrum/SIT.h" \
81
+ "../../API/Z/formats/snapshot/machine/computer/ZX Spectrum/SNA.h" \
82
+ "../../API/Z/formats/snapshot/machine/computer/ZX Spectrum/SNP.h" \
83
+ "../../API/Z/formats/snapshot/machine/computer/ZX Spectrum/SP.h" \
84
+ "../../API/Z/formats/snapshot/machine/computer/ZX Spectrum/Z80.h" \
85
+ "../../API/Z/formats/snapshot/machine/computer/ZX Spectrum/ZX.h" \
86
+ "../../API/Z/formats/snapshot/machine/computer/ZX Spectrum/ZX82.h" \
87
+ "../../API/Z/formats/storage medium image/NES Game Pak/UNIF.h" \
88
+ "../../API/Z/formats/storage medium image/NES Game Pak/iNES.h" \
89
+ "../../API/Z/formats/storage medium image/audio/TAP.h" \
90
+ "../../API/Z/formats/storage medium image/audio/TZX.h" \
91
+ "../../API/Z/formats/storage medium image/audio/Warajevo TAP.h" \
92
+ "../../API/Z/formats/storage medium image/floppy disk/FDI.h" \
93
+ "../../API/Z/functions/base/Z2D.h" \
94
+ "../../API/Z/functions/base/Z3D.h" \
95
+ "../../API/Z/functions/base/ZRange.h" \
96
+ "../../API/Z/functions/base/all.h" \
97
+ "../../API/Z/functions/base/character.h" \
98
+ "../../API/Z/functions/base/constructors.h" \
99
+ "../../API/Z/functions/base/structure.hpp" \
100
+ "../../API/Z/functions/base/type.hpp" \
101
+ "../../API/Z/functions/base/value.h" \
102
+ "../../API/Z/functions/base/value.hpp" \
103
+ "../../API/Z/functions/buffering/ZRingBuffer.h" \
104
+ "../../API/Z/functions/buffering/ZTripleBuffer.h" \
105
+ "../../API/Z/functions/mathematics/geometry/euclidean/Z2DLine.h" \
106
+ "../../API/Z/functions/mathematics/geometry/euclidean/Z3DLine.h" \
107
+ "../../API/Z/functions/mathematics/geometry/euclidean/ZAABB.h" \
108
+ "../../API/Z/functions/mathematics/geometry/euclidean/ZAABR.h" \
109
+ "../../API/Z/functions/mathematics/geometry/euclidean/ZBox.h" \
110
+ "../../API/Z/functions/mathematics/geometry/euclidean/ZCircle.h" \
111
+ "../../API/Z/functions/mathematics/geometry/euclidean/ZRectangle.h" \
112
+ "../../API/Z/functions/mathematics/geometry/euclidean/ZSphere.h" \
113
+ "../../API/Z/functions/mathematics/geometry/euclidean/all.h" \
114
+ "../../API/Z/functions/mathematics/geometry/euclidean/constructors.h" \
115
+ "../../API/Z/functions/time/date.h" \
116
+ "../../API/Z/hardware/BUS/AGP.h" \
117
+ "../../API/Z/hardware/BUS/USB.h" \
118
+ "../../API/Z/hardware/CPU/architecture/6502.h" \
119
+ "../../API/Z/hardware/CPU/architecture/Z80.h" \
120
+ "../../API/Z/hardware/CPU/architecture/i4004.h" \
121
+ "../../API/Z/hardware/PSG/General Instrument/AY-3-891x.h" \
122
+ "../../API/Z/hardware/VDC/Ricoh/RP2C0x.h" \
123
+ "../../API/Z/hardware/machine/model/computer/ZX Spectrum/Inves Spectrum +.h" \
124
+ "../../API/Z/hardware/machine/model/computer/ZX Spectrum/Pentagon.h" \
125
+ "../../API/Z/hardware/machine/model/computer/ZX Spectrum/Scorpion.h" \
126
+ "../../API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum + 128K.h" \
127
+ "../../API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +.h" \
128
+ "../../API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +2.h" \
129
+ "../../API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +2A.h" \
130
+ "../../API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +3.h" \
131
+ "../../API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum.h" \
132
+ "../../API/Z/hardware/machine/model/console/Nintendo Entertainment System/NES-001 (NTSC).h" \
133
+ "../../API/Z/hardware/machine/model/console/Nintendo Entertainment System/NES-001 (PAL).h" \
134
+ "../../API/Z/hardware/machine/platform/computer/ZX Spectrum.h" \
135
+ "../../API/Z/hardware/machine/platform/console/Game Boy.h" \
136
+ "../../API/Z/hardware/machine/platform/console/Nintendo Entertainment System.h" \
137
+ "../../API/Z/hardware/storage medium/ROM cartridge/SNES Game Pak.h" \
138
+ "../../API/Z/inspection/C++.h" \
139
+ "../../API/Z/inspection/C++/completion.h" \
140
+ "../../API/Z/inspection/C++/modules/C++03.h" \
141
+ "../../API/Z/inspection/C++/modules/C++11.h" \
142
+ "../../API/Z/inspection/C++/modules/C++14.h" \
143
+ "../../API/Z/inspection/C++/modules/C++17.h" \
144
+ "../../API/Z/inspection/C++/modules/C++85.h" \
145
+ "../../API/Z/inspection/C++/modules/C++89.h" \
146
+ "../../API/Z/inspection/C++/modules/C++98.h" \
147
+ "../../API/Z/inspection/C.h" \
148
+ "../../API/Z/inspection/C/completion.h" \
149
+ "../../API/Z/inspection/C/modules/C11.h" \
150
+ "../../API/Z/inspection/C/modules/C89.h" \
151
+ "../../API/Z/inspection/C/modules/C90.h" \
152
+ "../../API/Z/inspection/C/modules/C94.h" \
153
+ "../../API/Z/inspection/C/modules/C99.h" \
154
+ "../../API/Z/inspection/C/modules/KR C.h" \
155
+ "../../API/Z/inspection/CPU.h" \
156
+ "../../API/Z/inspection/CPU/completion.h" \
157
+ "../../API/Z/inspection/CPU/detection.h" \
158
+ "../../API/Z/inspection/CPU/modules/AArch32.h" \
159
+ "../../API/Z/inspection/CPU/modules/AArch64.h" \
160
+ "../../API/Z/inspection/CPU/modules/x86-32.h" \
161
+ "../../API/Z/inspection/CPU/modules/x86-64.h" \
162
+ "../../API/Z/inspection/OS.h" \
163
+ "../../API/Z/inspection/OS/completion.h" \
164
+ "../../API/Z/inspection/OS/detection.h" \
165
+ "../../API/Z/inspection/OS/modules/Linux.h" \
166
+ "../../API/Z/inspection/OS/modules/MS-DOS.h" \
167
+ "../../API/Z/inspection/OS/modules/Mac OS X.h" \
168
+ "../../API/Z/inspection/OS/modules/Windows.h" \
169
+ "../../API/Z/inspection/OS/modules/iPhone OS.h" \
170
+ "../../API/Z/inspection/Objective-C.h" \
171
+ "../../API/Z/inspection/Objective-C/completion.h" \
172
+ "../../API/Z/inspection/Objective-C/modules/Objective-C v1.0.h" \
173
+ "../../API/Z/inspection/Objective-C/modules/Objective-C v2.0.h" \
174
+ "../../API/Z/inspection/Z.h" \
175
+ "../../API/Z/inspection/build.h" \
176
+ "../../API/Z/inspection/character set.h" \
177
+ "../../API/Z/inspection/compiler.h" \
178
+ "../../API/Z/inspection/compiler/completion.h" \
179
+ "../../API/Z/inspection/compiler/modules/Apple LLVM.h" \
180
+ "../../API/Z/inspection/compiler/modules/Clang.h" \
181
+ "../../API/Z/inspection/compiler/modules/GCC.h" \
182
+ "../../API/Z/inspection/compiler/modules/SCCZ80.h" \
183
+ "../../API/Z/inspection/compiler/modules/Visual C++.h" \
184
+ "../../API/Z/inspection/compiler/modules/cc65.h" \
185
+ "../../API/Z/inspection/compiler/modules/generic.h" \
186
+ "../../API/Z/inspection/compiler/modules/template.h" \
187
+ "../../API/Z/inspection/data model.h" \
188
+ "../../API/Z/inspection/data model/completion.h" \
189
+ "../../API/Z/inspection/data model/deduction.h" \
190
+ "../../API/Z/inspection/data model/detection.h" \
191
+ "../../API/Z/inspection/floating-point.h" \
192
+ "../../API/Z/inspection/floating-point/completion.h" \
193
+ "../../API/Z/inspection/language.h" \
194
+ "../../API/Z/keys/C++.h" \
195
+ "../../API/Z/keys/C.h" \
196
+ "../../API/Z/keys/OS.h" \
197
+ "../../API/Z/keys/Objective-C.h" \
198
+ "../../API/Z/keys/compiler.h" \
199
+ "../../API/Z/keys/data model.h" \
200
+ "../../API/Z/keys/endianness.h" \
201
+ "../../API/Z/keys/hardware/CPU/architecture.h" \
202
+ "../../API/Z/keys/language.h" \
203
+ "../../API/Z/keys/layout.h" \
204
+ "../../API/Z/keys/mathematics/geometry.h" \
205
+ "../../API/Z/keys/mathematics/number.h" \
206
+ "../../API/Z/keys/order.h" \
207
+ "../../API/Z/keys/program.h" \
208
+ "../../API/Z/keys/science/chemical elements.h" \
209
+ "../../API/Z/keys/science/electricity.h" \
210
+ "../../API/Z/keys/science/magnetism.h" \
211
+ "../../API/Z/keys/status.h" \
212
+ "../../API/Z/keys/text.h" \
213
+ "../../API/Z/keys/value.h" \
214
+ "../../API/Z/macros/arguments.h" \
215
+ "../../API/Z/macros/casting.h" \
216
+ "../../API/Z/macros/character.h" \
217
+ "../../API/Z/macros/date.h" \
218
+ "../../API/Z/macros/key.h" \
219
+ "../../API/Z/macros/language.h" \
220
+ "../../API/Z/macros/language.hpp" \
221
+ "../../API/Z/macros/members.h" \
222
+ "../../API/Z/macros/pasting.h" \
223
+ "../../API/Z/macros/pointer.h" \
224
+ "../../API/Z/macros/repetition.h" \
225
+ "../../API/Z/macros/structure.h" \
226
+ "../../API/Z/macros/templating.h" \
227
+ "../../API/Z/macros/tokens.h" \
228
+ "../../API/Z/macros/type enumeration.h" \
229
+ "../../API/Z/macros/type selection.hpp" \
230
+ "../../API/Z/macros/value.h" \
231
+ "../../API/Z/macros/variadic pasting.h" \
232
+ "../../API/Z/macros/variadic selection.h" \
233
+ "../../API/Z/macros/variadic.h" \
234
+ "../../API/Z/macros/version.h" \
235
+ "../../API/Z/network/3/IP.h" \
236
+ "../../API/Z/network/4/TCP.h" \
237
+ "../../API/Z/network/4/UDP.h" \
238
+ "../../API/Z/network/7/ED2K.h" \
239
+ "../../API/Z/network/7/HTTP.h" \
240
+ "../../API/Z/traits/SelectType.hpp" \
241
+ "../../API/Z/traits/TernaryType.hpp" \
242
+ "../../API/Z/traits/Type.hpp" \
243
+ "../../API/Z/traits/TypeCount.hpp" \
244
+ "../../API/Z/traits/TypeList.hpp" \
245
+ "../../API/Z/traits/base.hpp" \
246
+ "../../API/Z/traits/filtering.hpp" \
247
+ "../../API/Z/traits/mathematics.hpp" \
248
+ "../../API/Z/types/arguments.h" \
249
+ "../../API/Z/types/base.h" \
250
+ "../../API/Z/types/base.hpp" \
251
+ "../../API/Z/types/buffering.h" \
252
+ "../../API/Z/types/mathematics.h" \
253
+ "../../API/Z/types/time.h"
@@ -0,0 +1,18 @@
1
+ Pod::Spec.new do |s|
2
+ s.name = "Z"
3
+ s.module_name = "Z"
4
+ s.version = "0.1.0"
5
+ s.summary = "Header-only multi-platform base API written in C/C++"
6
+ s.homepage = "https://github.com/redcode/Z"
7
+ s.license = {:type => 'LGPLv3', :file => 'COPYING.LESSER'}
8
+ s.authors = "Manuel Sainz de Baranda y Goñi"
9
+ s.source = {:git => "https://github.com/redcode/Z.git", :tag => s.version.to_s}
10
+ s.requires_arc = false
11
+ s.header_dir = "Z"
12
+ s.header_mappings_dir = "Z"
13
+ s.libraries = 'c++'
14
+ s.source_files = '../../API/**/*.h'
15
+ s.xcconfig = {'LIBRARY_SEARCH_PATHS' => '$(PODS_ROOT)/API'}
16
+ s.preserve_paths = 'Z/**/*{.h,.hpp,.inl}'
17
+ s.public_header_files = 'API/Z/**/*.h'
18
+ end
@@ -0,0 +1,22 @@
1
+ # Copyright 1999-2018 Gentoo Foundation
2
+ # Distributed under the terms of the GNU General Public License v2
3
+
4
+ EAPI="6"
5
+
6
+ ETYPE="headers"
7
+ DESCRIPTION="Header-only multi-platform base library written in C/C++"
8
+ HOMEPAGE="https://zeta.st"
9
+ SRC_URI="https://zeta.st/downloads/Z-0.1.tar.xz"
10
+ SLOT="0"
11
+
12
+ S="${WORKDIR}/Z"
13
+
14
+ src_configure() { :; }
15
+ src_compile() { :; }
16
+ src_test() { :; }
17
+
18
+ src_install() {
19
+ insinto /usr/include/Z
20
+ doins -r API/Z/.
21
+ dodoc AUTHORS COPYING.LESSER HISTORY INSTALL README
22
+ }
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
3
+ <pkgmetadata>
4
+ <maintainer type="project">
5
+ <email>manuel@zeta.st</email>
6
+ <name>Manuel Sainz de Baranda y Goñi</name>
7
+ </maintainer>
8
+ </pkgmetadata>
@@ -0,0 +1,11 @@
1
+ class Zeta < Formula
2
+ desc ''
3
+ homepage 'https://zxe.io/projects/Z'
4
+ url 'https://zxe.io/downloads/Z%20v0.1.0%20(2018-05-29)(Sainz%20de%20Baranda%20y%20Go%C3%B1i,%20Manuel)(Sources)[!].tar.xz'
5
+ head 'https://github.com/redcode/Z.git', :branch => 'master'
6
+
7
+
8
+ def install
9
+ end
10
+
11
+ end
@@ -0,0 +1,201 @@
1
+ /* ______ ______ ______
2
+ /\___ \ /\ __ \/\ __ \
3
+ \/__/ /_\ \ __ \ \ \/\ \
4
+ /\_____\ \_____\ \_____\
5
+ Zilog \/_____/\/_____/\/_____/ CPU Emulator ----------------------------------
6
+ Copyright (C) 1999-2018 Manuel Sainz de Baranda y Goñi.
7
+
8
+ This emulator is free software: you can redistribute it and/or modify it under
9
+ the terms of the GNU General Public License as published by the Free Software
10
+ Foundation, either version 3 of the License, or (at your option) any later
11
+ version.
12
+
13
+ This emulator is distributed in the hope that it will be useful, but WITHOUT
14
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16
+
17
+ You should have received a copy of the GNU General Public License along with
18
+ this emulator. If not, see <http://www.gnu.org/licenses/>.
19
+ --------------------------------------------------------------------------- */
20
+
21
+ #ifndef _emulation_CPU_Z80_H_
22
+ #define _emulation_CPU_Z80_H_
23
+
24
+ #ifdef CPU_Z80_DEPENDENCIES_H
25
+ # include CPU_Z80_DEPENDENCIES_H
26
+ #else
27
+ # include <Z/hardware/CPU/architecture/Z80.h>
28
+ #endif
29
+
30
+ /** Z80 emulator instance.
31
+ * @details This structure contains the state of the emulated CPU and callback
32
+ * pointers necessary to interconnect the emulator with external logic. There
33
+ * is no constructor function, so, before using an object of this type, some
34
+ * of its members must be initialized, in particular the following:
35
+ * @c context, @c read, @c write, @c in, @c out, @c int_data and @c halt. */
36
+
37
+ typedef struct {
38
+
39
+ /** Number of cycles executed in the current call to @c z80_run.
40
+ * @details @c z80run sets this variable to @c 0 before starting
41
+ * to execute instructions and its value persists after returning.
42
+ * The callbacks can use this variable to know during what cycle
43
+ * they are being called. */
44
+
45
+ zusize cycles;
46
+
47
+ /** The value used as the first argument when calling a callback.
48
+ * @details This variable should be initialized before using the
49
+ * emulator and can be used to reference the context/instance of
50
+ * the machine being emulated. */
51
+
52
+ void *context;
53
+
54
+ /** Callback: Called when the CPU needs to read 8 bits from memory.
55
+ * @param context The value of the member @c context.
56
+ * @param address The memory address to read from.
57
+ * @return The 8 bits read from memory. */
58
+
59
+ zuint8 (* read)(void *context, zuint16 address);
60
+
61
+ /** Callback: Called when the CPU needs to write 8 bits to memory.
62
+ * @param context The value of the member @c context.
63
+ * @param address The memory address to write to.
64
+ * @param value The value to write. */
65
+
66
+ void (* write)(void *context, zuint16 address, zuint8 value);
67
+
68
+ /** Callback: Called when the CPU needs to read 8 bits from an I/O port.
69
+ * @param context The value of the member @c context.
70
+ * @param port The number of the I/O port to read from.
71
+ * @return The 8 bits read from the I/O port. */
72
+
73
+ zuint8 (* in)(void *context, zuint16 port);
74
+
75
+ /** Callback: Called when the CPU needs to write 8 bits to an I/O port.
76
+ * @param context The value of the member @c context.
77
+ * @param port The number of the I/O port to write to.
78
+ * @param value The value to write. */
79
+
80
+ void (* out)(void *context, zuint16 port, zuint8 value);
81
+
82
+ /** Callback: Called when the CPU needs to read one instruction from
83
+ * the data bus to service a maskable interrupt (INT) in mode 0.
84
+ * @param context The value of the member @c context.
85
+ * @return A 32-bit value containing the bytes of one instruction. The
86
+ * instruction must begin at the most significant byte (big endian). */
87
+
88
+ zuint32 (* int_data)(void *context);
89
+
90
+ /** Callback: Called when the CPU enters or exits the halt state.
91
+ * @param context The value of the member @c context.
92
+ * @param state @c TRUE if halted; @c FALSE otherwise.
93
+ * @note This callback is optional and must be set to @c NULL if not
94
+ * used. */
95
+
96
+ void (* halt)(void *context, zboolean state);
97
+
98
+ /** CPU registers and internal bits.
99
+ * @details It contains the state of the registers, as well as the
100
+ * interrupt flip-flops, variables related to interrupts and other
101
+ * necessary flags. This is what a debugger should use as its data
102
+ * source. */
103
+
104
+ ZZ80State state;
105
+
106
+ /** Backup of the 7th bit of the R register.
107
+ * @details The value of the R register is incremented as instructions
108
+ * are executed, but its most significant bit remains unchanged. For
109
+ * optimization reasons, this bit is saved at the beginning of the
110
+ * execution of @c z80_run and restored before returning. If an
111
+ * instruction directly affects the R register, this variable is also
112
+ * updated accordingly. */
113
+
114
+ zuint8 r7;
115
+
116
+ /** Temporay IX/IY register for instructions with @c DDh/FDh prefix.
117
+ * @details Since instructions with prefix @c DDh and @c FDh behave
118
+ * similarly, differing only in the use of register IX or IY, for
119
+ * reasons of size optimization, a single register is used that acts
120
+ * as both. During opcode analysis, the IX or IY register is copied
121
+ * to this variable and, once the instruction emulation is complete,
122
+ * its contents are copied back to the appropriate register. */
123
+
124
+ Z16Bit xy;
125
+
126
+ /** Temporary storage for opcode fetching.
127
+ * @details This is an internal private variable. */
128
+
129
+ Z32Bit data;
130
+ } Z80;
131
+
132
+ Z_C_SYMBOLS_BEGIN
133
+
134
+ #ifndef CPU_Z80_API
135
+ # ifdef CPU_Z80_STATIC
136
+ # define CPU_Z80_API
137
+ # else
138
+ # define CPU_Z80_API Z_API
139
+ # endif
140
+ #endif
141
+
142
+ /** Changes the CPU power status.
143
+ * @param object A pointer to a Z80 emulator instance.
144
+ * @param state @c TRUE = power ON; @c FALSE = power OFF. */
145
+
146
+ CPU_Z80_API void z80_power(Z80 *object, zboolean state);
147
+
148
+ /** Resets the CPU.
149
+ * @details This is equivalent to a pulse on the RESET line of a real Z80.
150
+ * @param object A pointer to a Z80 emulator instance. */
151
+
152
+ CPU_Z80_API void z80_reset(Z80 *object);
153
+
154
+ /** Runs the CPU for a given number of @p cycles.
155
+ * @param object A pointer to a Z80 emulator instance.
156
+ * @param cycles The number of cycles to be executed.
157
+ * @return The number of cycles executed.
158
+ * @note Given the fact that one Z80 instruction needs between 4 and 23 cycles
159
+ * to be executed, it's not always possible to run the CPU the exact number of
160
+ * @p cycles specfified. */
161
+
162
+ CPU_Z80_API zusize z80_run(Z80 *object, zusize cycles);
163
+
164
+ /** Performs a non-maskable interrupt (NMI).
165
+ * @details This is equivalent to a pulse on the NMI line of a real Z80.
166
+ * @param object A pointer to a Z80 emulator instance. */
167
+
168
+ CPU_Z80_API void z80_nmi(Z80 *object);
169
+
170
+ /** Changes the state of the maskable interrupt (INT).
171
+ * @details This is equivalent to a change on the INT line of a real Z80.
172
+ * @param object A pointer to a Z80 emulator instance.
173
+ * @param state @c TRUE = line high; @c FALSE = line low. */
174
+
175
+ CPU_Z80_API void z80_int(Z80 *object, zboolean state);
176
+
177
+ Z_C_SYMBOLS_END
178
+
179
+ #ifdef CPU_Z80_WITH_ABI
180
+
181
+ # ifndef CPU_Z80_DEPENDENCIES_H
182
+ # include <Z/ABIs/generic/emulation.h>
183
+ # endif
184
+
185
+ Z_C_SYMBOLS_BEGIN
186
+
187
+ # ifndef CPU_Z80_ABI
188
+ # ifdef CPU_Z80_STATIC
189
+ # define CPU_Z80_ABI
190
+ # else
191
+ # define CPU_Z80_ABI Z_API
192
+ # endif
193
+ # endif
194
+
195
+ CPU_Z80_ABI extern ZCPUEmulatorABI const abi_emulation_cpu_z80;
196
+
197
+ Z_C_SYMBOLS_END
198
+
199
+ #endif
200
+
201
+ #endif /* _emulation_CPU_Z80_H_ */