zemu 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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_ */