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,33 @@
1
+ /* Z Kit - formats/snapshot/machine/computer/ZX Spectrum/PRG.h
2
+ _____ _______________
3
+ /_ /_/ -_/_ _/ _ |
4
+ /____/\___/ /__//___/_| Kit
5
+ Copyright (C) Kevin Phair.
6
+ Copyright (C) 2006-2018 Manuel Sainz de Baranda y Goñi.
7
+ Released under the terms of the GNU Lesser General Public License v3.
8
+
9
+ .-------------------------------------.
10
+ | Extensions: prg |
11
+ | Endianness: Little |
12
+ | Created by: Phair, Kevin |
13
+ | Used by: Spectrum Emulator [DOS] |
14
+ | |
15
+ | http://code.google.com/p/specem |
16
+ '------------------------------------*/
17
+
18
+ #ifndef _Z_formats_snapshot_machine_computer_ZX_Spectrum_PRG_H_
19
+ #define _Z_formats_snapshot_machine_computer_ZX_Spectrum_PRG_H_
20
+
21
+ #include <Z/types/base.h>
22
+
23
+ Z_DEFINE_STRICT_STRUCTURE (
24
+ zuint8 file_type; /* Always 05h */
25
+ zuint8 program_name[10]; /* 20h, name[], 20h */
26
+ zuint16 file_sector_count; /* BIG ENDIAN */
27
+ zuint8 file_first_sector_track_index;
28
+ zuint8 file_first_sector_sector_index;
29
+ zuint8 sector_allocation_bitmap[195];
30
+ /* ..... TO DO */
31
+ ) ZPRG;
32
+
33
+ #endif /* _Z_formats_snapshot_machine_computer_ZX_Spectrum_PRG_H_ */
@@ -0,0 +1,46 @@
1
+ /* Z Kit - formats/snapshot/machine/computer/ZX Spectrum/SEM.h
2
+ _____ _______________
3
+ /_ /_/ -_/_ _/ _ |
4
+ /____/\___/ /__//___/_| Kit
5
+ Copyright (C) 2006-2018 Manuel Sainz de Baranda y Goñi.
6
+ Released under the terms of the GNU Lesser General Public License v3.
7
+
8
+ .-----------------------------------------------------.
9
+ | Extensions: sem |
10
+ | Endianness: Little |
11
+ | Created by: Waschke, Bernd |
12
+ | Used by: ZX Spectrum-Emulator (SpecEmu) [MS-DOS] |
13
+ '----------------------------------------------------*/
14
+
15
+ #ifndef _Z_formats_snapshot_machine_computer_ZX_Spectrum_SEM_H_
16
+ #define _Z_formats_snapshot_machine_computer_ZX_Spectrum_SEM_H_
17
+
18
+ #include <Z/types/base.h>
19
+
20
+ Z_DEFINE_STRICT_STRUCTURE_BEGIN
21
+ zuint8 signature_size; /* 5 */
22
+ zuint8 signature[5]; /* 'SPEC1' */
23
+ zuint8 ram[1024 * 48];
24
+ Z16Bit af, bc, de, hl;
25
+ Z16Bit af_, bc_, de_, hl_;
26
+ zuint16 pc, sp;
27
+ Z16Bit ix, iy;
28
+ zuint8 i, zero_0;
29
+ zuint8 r, zero_1;
30
+ zuint8 iff1, zero_2;
31
+ zuint8 iff2, zero_3;
32
+ zuint8 im, zero_4;
33
+ Z_DEFINE_STRICT_STRUCTURE_END ZSEMSnapshot;
34
+
35
+ Z_DEFINE_STRICT_STRUCTURE (
36
+ zuint16 address;
37
+ zuint8 value;
38
+ ) ZSEMPoke;
39
+
40
+ Z_DEFINE_STRICT_STRUCTURE (
41
+ ZSEMSnapshot snapshot;
42
+ ZSEMPoke poke; /* Optional */
43
+ zuint16 speed_factor; /* Optional (only if poke included) */
44
+ ) ZSEM;
45
+
46
+ #endif /* _Z_formats_snapshot_machine_computer_ZX_Spectrum_SEM_H_ */
@@ -0,0 +1,34 @@
1
+ /* Z Kit - formats/snapshot/machine/computer/ZX Spectrum/SIT.h
2
+ _____ _______________
3
+ /_ /_/ -_/_ _/ _ |
4
+ /____/\___/ /__//___/_| Kit
5
+ Copyright (C) 2006-2018 Manuel Sainz de Baranda y Goñi.
6
+ Released under the terms of the GNU Lesser General Public License v3.
7
+
8
+ .-------------------------------------------.
9
+ | Extensions: sit |
10
+ | Endianness: Little |
11
+ | Created by: Rodríguez Salas, Pedro Manuel |
12
+ | Used by: SINCLAIR [DOS] |
13
+ | |
14
+ | http://www.ugr.es/~pedrom/sinclair.htm |
15
+ '------------------------------------------*/
16
+
17
+ #ifndef _Z_formats_snapshot_machine_computer_ZX_Spectrum_SIT_H_
18
+ #define _Z_formats_snapshot_machine_computer_ZX_Spectrum_SIT_H_
19
+
20
+ #include <Z/types/base.h>
21
+
22
+ Z_DEFINE_STRICT_STRUCTURE_BEGIN
23
+ Z16Bit bc, de, hl, af, ix, iy;
24
+ zuint16 sp, pc;
25
+ zuint8 r, i;
26
+ Z16Bit bc_, de_, hl_, af_;
27
+ zuint8 im;
28
+ zuint8 border_color;
29
+
30
+ /* complete ROM+RAM memory of a standard ZX Spectrum 48K */
31
+ zuint8 memory[1024 * 64];
32
+ Z_DEFINE_STRICT_STRUCTURE_END ZSIT;
33
+
34
+ #endif /* _Z_formats_snapshot_machine_computer_ZX_Spectrum_SIT_H_ */
@@ -0,0 +1,117 @@
1
+ /* Z Kit - formats/snapshot/machine/computer/ZX Spectrum/SNA.h
2
+ _____ _______________
3
+ /_ /_/ -_/_ _/ _ |
4
+ /____/\___/ /__//___/_| Kit
5
+ Copyright (C) 2006-2018 Manuel Sainz de Baranda y Goñi.
6
+ Released under the terms of the GNU Lesser General Public License v3.
7
+
8
+ .---------------------------------------------.
9
+ | Extensions: sna, snap, snapshot |
10
+ | Endianness: Little |
11
+ | Created by: McGavin, Peter |
12
+ | Used by: Any decent ZX Spectrum emulator |
13
+ '--------------------------------------------*/
14
+
15
+ #ifndef _Z_formats_snapshot_machine_computer_ZX_Spectrum_SNA_H_
16
+ #define _Z_formats_snapshot_machine_computer_ZX_Spectrum_SNA_H_
17
+
18
+ #include <Z/types/base.h>
19
+
20
+ /* MARK: - v48K
21
+ .-------------------------------------------------------------------------.
22
+ | From SinclairFAQ: |
23
+ | |
24
+ | " This format is one of the most well-supported of all snapshot |
25
+ | formats (for the ZX Spectrum), but has a drawback: |
26
+ | |
27
+ | As the program counter is pushed onto the stack so that a RETN |
28
+ | instruction can restart the program, 2 bytes of memory are overwritten. |
29
+ | This will usually not matter; the game (or whatever) will have stack |
30
+ | space that can be used for this. However, if this space is all in use |
31
+ | when the snap is made, memory below the stack space will be corrupted. |
32
+ | According to Rui Ribeiro (Author of WSpecEm), the effects of this can |
33
+ | sometimes be avoided by replacing the corrupted bytes with zeros; e.g. |
34
+ | take the PC from the stack pointer, replace that word with 0000 and |
35
+ | then increment SP. This worked with snapshots of Batman, Bounder and |
36
+ | others which had been saved at critical points. Theoretically, this |
37
+ | problem could cause a complete crash on a real Spectrum if the stack |
38
+ | pointer happened to be at address 16384; the push would try and write |
39
+ | to the ROM. |
40
+ | |
41
+ | When the registers have been loaded, a RETN command is required to |
42
+ | start the program. IFF2 is short for interrupt flip-flop 2, and for all |
43
+ | practical purposes is the interrupt-enabled flag. Set means enabled. " |
44
+ '------------------------------------------------------------------------*/
45
+
46
+ #define Z_SNA_V48K_PC_VALUE 0x72
47
+
48
+ Z_DEFINE_STRICT_STRUCTURE_BEGIN
49
+ zuint8 i;
50
+ Z16Bit hl_, de_, bc_, af_;
51
+ Z16Bit hl, de, bc, iy, ix;
52
+
53
+ struct {Z_BIT_FIELD(8, 3) (
54
+ zuint8 unused_0 :5,
55
+ zuint8 iff2 :1,
56
+ zuint8 unused_1 :2
57
+ )} interrupt;
58
+
59
+ zuint8 r;
60
+ Z16Bit af;
61
+ zuint16 sp;
62
+ zuint8 im;
63
+ zuint8 border_color;
64
+ zuint8 ram[1024 * 48]; /* RAM dump [16384-65535] */
65
+ Z_DEFINE_STRICT_STRUCTURE_END ZSNAv48K;
66
+
67
+ #define Z_SNA_IM_0 0
68
+ #define Z_SNA_IM_1 1
69
+ #define Z_SNA_IM_2 2
70
+
71
+ /* MARK: - v128K
72
+ .-------------------------------------------------------------------------.
73
+ | From SinclairFAQ: |
74
+ | |
75
+ | " The 128K version of the SNA format is the same as above, with |
76
+ | extensions to include the extra memory banks of the 128K/+2 machines, |
77
+ | and fixes the problem with the PC being pushed onto the stack - now it |
78
+ | is located in an extra variable in the file (and is not pushed onto the |
79
+ | stack at all). The first 49179 bytes of the snapshot are otherwise |
80
+ | exactly as described above. |
81
+ | |
82
+ | The third RAM bank saved (ram_bank_n) is always the one currently |
83
+ | paged, even if this is page 5 or 2 - in this case, the bank is actually |
84
+ | included twice. The remaining RAM banks are saved in ascending order. |
85
+ | |
86
+ | Example: If RAM bank 4 is paged in, the snapshot is made up of banks |
87
+ | 5, 2 and 4 to start with, and banks 0, 1, 3, 6 and 7 afterwards. If RAM |
88
+ | bank 5 is paged in, the snapshot is made up of banks 5, 2 and 5 again, |
89
+ | followed by banks 0, 1, 3, 4, 6 and 7. " |
90
+ '------------------------------------------------------------------------*/
91
+
92
+ Z_DEFINE_STRICT_STRUCTURE_BEGIN
93
+ zuint8 i;
94
+ Z16Bit hl_, de_, bc_, af_;
95
+ Z16Bit hl, de, bc, iy, ix;
96
+
97
+ struct {Z_BIT_FIELD(8, 3) (
98
+ zuint8 unused_0 :5,
99
+ zuint8 iff2 :1,
100
+ zuint8 unused_1 :2
101
+ )} interrupt;
102
+
103
+ zuint8 r;
104
+ Z16Bit af;
105
+ zuint16 sp;
106
+ zuint8 im;
107
+ zuint8 border_color;
108
+ zuint8 ram_bank_5[1024 * 16];
109
+ zuint8 ram_bank_2[1024 * 16];
110
+ zuint8 ram_bank_n[1024 * 16];
111
+ zuint16 pc;
112
+ zuint8 port_7ffd_value;
113
+ zuint8 tr_dos_rom_paged; /* boolean */
114
+ zuint8 remaining_ram_banks[1024 * 16 * 6];
115
+ Z_DEFINE_STRICT_STRUCTURE_END ZSNAv128K;
116
+
117
+ #endif /* _Z_formats_snapshot_machine_computer_ZX_Spectrum_SNA_H_ */
@@ -0,0 +1,37 @@
1
+ /* Z Kit - formats/snapshot/machine/computer/ZX Spectrum/SNP.h
2
+ _____ _______________
3
+ /_ /_/ -_/_ _/ _ |
4
+ /____/\___/ /__//___/_| Kit
5
+ Copyright (C) 2006-2018 Manuel Sainz de Baranda y Goñi.
6
+ Released under the terms of the GNU Lesser General Public License v3.
7
+
8
+ .--------------------------------------------------.
9
+ | Extensions: snp |
10
+ | Endianness: Little |
11
+ | Created by: Garabik, Radovan - Salanci, Lubomir |
12
+ | Used by: Nuclear ZX [DOS] |
13
+ | |
14
+ | http://korpus.juls.savba.sk/~garabik/old/zx.html |
15
+ '-------------------------------------------------*/
16
+
17
+ #ifndef _Z_formats_snapshot_machine_computer_ZX_Spectrum_SNP_H_
18
+ #define _Z_formats_snapshot_machine_computer_ZX_Spectrum_SNP_H_
19
+
20
+ #include <Z/types/base.h>
21
+
22
+ Z_DEFINE_STRICT_STRUCTURE_BEGIN
23
+ zuint8 ram[1024 * 48];
24
+ Z16Bit af;
25
+ zuint8 border_color;
26
+ zuint8 reserved;
27
+ Z16Bit bc, de, hl;
28
+ zuint16 pc, sp;
29
+ Z16Bit ix, iy;
30
+ zuint8 iff2; /* not used actually */
31
+ zuint8 iff1;
32
+ zuint8 im;
33
+ zuint8 r, i;
34
+ Z16Bit af_, bc_, de_, hl_;
35
+ Z_DEFINE_STRICT_STRUCTURE_END ZSNP;
36
+
37
+ #endif /* _Z_formats_snapshot_machine_computer_ZX_Spectrum_SNP_H_ */
@@ -0,0 +1,62 @@
1
+ /* Z Kit - formats/snapshot/machine/computer/ZX Spectrum/SP.h
2
+ _____ _______________
3
+ /_ /_/ -_/_ _/ _ |
4
+ /____/\___/ /__//___/_| Kit
5
+ Copyright (C) 2006-2018 Manuel Sainz de Baranda y Goñi.
6
+ Released under the terms of the GNU Lesser General Public License v3.
7
+
8
+ .----------------------------------------------------------------------------.
9
+ | Extensions: sp |
10
+ | Endianness: Little |
11
+ | Created by: Gimeno Fortea, Pedro |
12
+ | Used by: VGASpec, Spectrum [DOS] |
13
+ | |
14
+ | http://www.formauri.es/personal/pgimeno/spec/spec.html |
15
+ | |
16
+ | From the sources of MESS: |
17
+ | |
18
+ | " There are two kinds of .sp files: 'old' and 'new'. |
19
+ | The old version is always 49184 bytes long and is created by a leaked copy |
20
+ | of the VGASpec emulator. |
21
+ | Subsequently Pedro Gimeno (the author of VGASpec) renamed it to 'Spectrum' |
22
+ | (but it's colloquially known as the 'Spanish Spectrum emulator') and added |
23
+ | a header in the snapshot to break backward compatibility: the new format |
24
+ | supports both 16K and 48K images and it's 16422 or 49190 bytes long. " |
25
+ '---------------------------------------------------------------------------*/
26
+
27
+ #ifndef _Z_formats_snapshot_machine_computer_ZX_Spectrum_SP_H_
28
+ #define _Z_formats_snapshot_machine_computer_ZX_Spectrum_SP_H_
29
+
30
+ #include <Z/types/base.h>
31
+
32
+ Z_DEFINE_STRICT_STRUCTURE (
33
+ zuint8 signature[2]; /* 'SP' */
34
+ zuint16 ram_size; /* 1024 * 16 or 1024 * 48 */
35
+ zuint16 ram_load_address; /* 1024 * 16 */
36
+ ) ZSPHeader;
37
+
38
+ Z_DEFINE_STRICT_STRUCTURE_BEGIN
39
+ Z16Bit bc, de, hl, af, ix, iy;
40
+ Z16Bit bc_, de_, hl_, af_;
41
+ zuint8 r, i;
42
+ zuint16 sp, pc;
43
+ zuint16 zero1; /* reserved for future use */
44
+ zuint8 border_color;
45
+ zuint8 zero2; /* reserved for future use */
46
+
47
+ struct {Z_BIT_FIELD(8, 7) (
48
+ zuint8 zero :2, /* reserved for internal use */
49
+ zuint8 flash :1, /* boolean */
50
+ zuint8 int_pending :1,
51
+ zuint8 im_0 :1,
52
+ zuint8 iff2 :1,
53
+ zuint8 im :1,
54
+ zuint8 iff1 :1
55
+ )} status;
56
+
57
+ Z_FLEXIBLE_ARRAY_MEMBER(zuint8 ram[];)
58
+ Z_DEFINE_STRICT_STRUCTURE_END ZSPBody;
59
+
60
+ #define Z_SP_BODY_IM(p) (Z_SP_BODY(p)->im_0 ? 0 : ((p)->im ? 2 : 1))
61
+
62
+ #endif /* _Z_formats_snapshot_machine_computer_ZX_Spectrum_SP_H_ */
@@ -0,0 +1,117 @@
1
+ /* Z Kit - formats/snapshot/machine/computer/ZX Spectrum/Z80.h
2
+ _____ _______________
3
+ /_ /_/ -_/_ _/ _ |
4
+ /____/\___/ /__//___/_| Kit
5
+ Copyright (C) 2006-2018 Manuel Sainz de Baranda y Goñi.
6
+ Released under the terms of the GNU Lesser General Public License v3.
7
+
8
+ .---------------------------------------------.
9
+ | Extensions: z80 |
10
+ | Endianness: Little |
11
+ | Created by: Lunter, Gerton |
12
+ | Used by: Any decent ZX Spectrum emulator |
13
+ '--------------------------------------------*/
14
+
15
+ #ifndef _Z_formats_snapshot_machine_computer_ZX_Spectrum_Z80_H_
16
+ #define _Z_formats_snapshot_machine_computer_ZX_Spectrum_Z80_H_
17
+
18
+ #include <Z/types/base.h>
19
+
20
+ Z_DEFINE_STRICT_STRUCTURE_BEGIN
21
+ zuint8 a, f;
22
+ zuint16 bc, hl, pc, sp;
23
+ zuint8 i, r;
24
+
25
+ struct {Z_BIT_FIELD(8, 5) (
26
+ zuint8 r7 :1,
27
+ zuint8 border_color :3,
28
+ zuint8 basic_samrom :1,
29
+ zuint8 data_block_is_compressed :1,
30
+ zuint8 unused :2
31
+ )} bitfield1;
32
+
33
+ zuint16 de;
34
+ zuint16 bc_, de_, hl_;
35
+ zuint8 a_, f_;
36
+ zuint16 iy, ix;
37
+ zuint8 iff1, iff2;
38
+
39
+ struct {Z_BIT_FIELD(8, 5) (
40
+ zuint8 im :2,
41
+ zuint8 issue_2_emulation :1,
42
+ zuint8 int_frequency :1,
43
+ zuint8 video_synchronization :2,
44
+ zuint8 joystick_type :2
45
+ )} bitfield2;
46
+ Z_DEFINE_STRICT_STRUCTURE_END ZZ80v1Header;
47
+
48
+ Z_DEFINE_STRICT_STRUCTURE (
49
+ zuint16 pc;
50
+ zuint8 hardware;
51
+ zuint8 output_state;
52
+ zuint8 interface_1_paginated_or_timex_output_state;
53
+
54
+ struct {Z_BIT_FIELD(8, 4) (
55
+ zuint8 r_register_emulation :1,
56
+ zuint8 ldir_instruction_emulation :1,
57
+ zuint8 zero :5,
58
+ zuint8 hardware_modification :1
59
+ )} bitfield;
60
+
61
+ zuint8 last_output_to_fffd;
62
+ zuint8 sound_chip_registers;
63
+ ) ZZ80v2AdditionalHeader;
64
+
65
+ #define Z_Z80_HARDWARE_SAM_RAM 2
66
+ #define Z_Z80_HARDWARE_PENTAGON_128K 9
67
+ #define Z_Z80_HARDWARE_SCORPION_256K 10
68
+ #define Z_Z80_HARDWARE_DIDAKTIK_KOMPAKT 11
69
+ #define Z_Z80_HARDWARE_ZX_SPECTRUM_PLUS_2 12
70
+ #define Z_Z80_HARDWARE_ZX_SPECTRUM_PLUS_2A 13
71
+ #define Z_Z80_HARDWARE_TIMEX_TC_2048 14
72
+ #define Z_Z80_HARDWARE_TIMEX_TC_2068 15
73
+ #define Z_Z80_HARDWARE_TIMEX_TS_2068 128
74
+
75
+ #define Z_Z80_HARDWARE_A_ZX_SPECTRUM_48K 0
76
+ #define Z_Z80_HARDWARE_A_ZX_SPECTRUM_48K_AND_IF1 1
77
+ #define Z_Z80_HARDWARE_A_ZX_SPECTRUM_128K_AND_IF1 5
78
+ #define Z_Z80_HARDWARE_A_ZX_SPECTRUM_128K_AND_MGT 6
79
+ #define Z_Z80_HARDWARE_A_ZX_SPECTRUM_PLUS_3 7
80
+ #define Z_Z80_HARDWARE_A_ZX_SPECTRUM_PLUS_3_ 8
81
+
82
+ #define Z_Z80_HARDWARE_B_ZX_SPECTRUM_16K 0
83
+ #define Z_Z80_HARDWARE_B_ZX_SPECTRUM_16K_AND_IF1 1
84
+ #define Z_Z80_HARDWARE_A_ZX_SPECTRUM_PLUS_2_AND_IF1 5
85
+ #define Z_Z80_HARDWARE_A_ZX_SPECTRUM_PLUS_2_AND_MGT 6
86
+ #define Z_Z80_HARDWARE_B_ZX_SPECTRUM_PLUS_2A 7
87
+ #define Z_Z80_HARDWARE_B_ZX_SPECTRUM_PLUS_2A_ 8
88
+
89
+ #define Z_Z80_V2_HARDWARE_A_ZX_SPECTRUM_128K 3
90
+ #define Z_Z80_V2_HARDWARE_A_ZX_SPECTRUM_128K_AND_IF1 4
91
+
92
+ #define Z_Z80_V2_HARDWARE_B_ZX_SPECTRUM_PLUS_2 3
93
+ #define Z_Z80_V2_HARDWARE_B_ZX_SPECTRUM_PLUS_2_AND_IF1 4
94
+
95
+ #define Z_Z80_V3_HARDWARE_A_ZX_SPECTRUM_48K_AND_MGT 3
96
+ #define Z_Z80_V3_HARDWARE_A_ZX_SPECTRUM_128K 4
97
+
98
+ #define Z_Z80_V3_HARDWARE_B_ZX_SPECTRUM_PLUS_2_AND_MGT 3
99
+ #define Z_Z80_V3_HARDWARE_B_ZX_SPECTRUM_PLUS_2 4
100
+
101
+ Z_DEFINE_STRICT_STRUCTURE (
102
+ zuint16 low_t_state_counter;
103
+ zuint8 high_t_state_counter;
104
+ zuint8 zero[3];
105
+ zuint8 mgt_rom_paged;
106
+ zuint8 multiface_rom_paged;
107
+ zuint8 memory_type_between_0000_and_1fff;
108
+ zuint8 memory_type_between_2000_and_3fff;
109
+ zuint16 keyboard_mappings[5];
110
+ zuint16 ascii_values[5];
111
+ zuint8 mgt_type;
112
+ zuint8 disciple_inhibitor_button_state;
113
+ zuint8 disciple_inhibitor_button_flag;
114
+ zuint8 last_output_to_1ffd;
115
+ ) ZZ80v3ExtendedHeader;
116
+
117
+ #endif /* _Z_formats_snapshot_machine_computer_ZX_Spectrum_Z80_H_ */
@@ -0,0 +1,56 @@
1
+ /* Z Kit - formats/snapshot/machine/computer/ZX Spectrum/ZX.h
2
+ _____ _______________
3
+ /_ /_/ -_/_ _/ _ |
4
+ /____/\___/ /__//___/_| Kit
5
+ Information contributed by Troels Norgaard.
6
+ Copyright (C) 2006-2018 Manuel Sainz de Baranda y Goñi.
7
+ Released under the terms of the GNU Lesser General Public License v3.
8
+
9
+ .-----------------------------.
10
+ | Extensions: zx |
11
+ | Endianness: Big |
12
+ | Created by: KGB support BBS |
13
+ | Used by: KGB [Amiga] |
14
+ '----------------------------*/
15
+
16
+ #ifndef _Z_formats_snapshot_machine_computer_ZX_Spectrum_ZX_H_
17
+ #define _Z_formats_snapshot_machine_computer_ZX_Spectrum_ZX_H_
18
+
19
+ #include <Z/types/base.h>
20
+
21
+ Z_DEFINE_STRICT_STRUCTURE_BEGIN
22
+ zuint8 rom_tail[132]; /* Last 132 bytes of ROM */
23
+ zuint8 ram[1024 * 48];
24
+ zuint8 zero_0[132];
25
+ zuint16 settings[5]; /* KGB settings, usually = {10, 10, 4, 1, 1} */
26
+ zuint8 iff;
27
+ zuint8 constants[2]; /* {0, 3} */
28
+ zuint8 color_mode;
29
+ zuint32 zero_1;
30
+ Z16Bit bc, bc_, de, de_, hl, hl_, ix, iy;
31
+ zuint8 i, r;
32
+ zuint8 zero_2[3];
33
+ zuint8 a_, zero_3;
34
+ zuint8 a, zero_4;
35
+ zuint8 f_, zero_5;
36
+ zuint8 f;
37
+ zuint16 zero_6, pc;
38
+ zuint16 zero_7, sp;
39
+ zuint16 sound_mode;
40
+ zuint16 halt; /* boolean */
41
+ zsint16 im;
42
+ zuint8 zero_8[10];
43
+ Z_DEFINE_STRICT_STRUCTURE_END ZZX;
44
+
45
+ #define Z_ZX_COLOR_MODE_BW 0
46
+ #define Z_ZX_COLOR_MODE_COLOR 1
47
+
48
+ #define Z_ZX_SOUND_MODE_SIMPLE 0
49
+ #define Z_ZX_SOUND_MODE_PITCH 1
50
+ #define Z_ZX_SOUND_MODE_ROM_ONLY 2
51
+
52
+ #define Z_ZX_IM_0 -1
53
+ #define Z_ZX_IM_1 0
54
+ #define Z_ZX_IM_2 1
55
+
56
+ #endif /* _Z_formats_snapshot_machine_computer_ZX_Spectrum_ZX_H_ */
@@ -0,0 +1,70 @@
1
+ /* Z Kit - formats/snapshot/machine/computer/ZX Spectrum/ZX82.h
2
+ _____ _______________
3
+ /_ /_/ -_/_ _/ _ |
4
+ /____/\___/ /__//___/_| Kit
5
+ Copyright (C) 2006-2018 Manuel Sainz de Baranda y Goñi.
6
+ Released under the terms of the GNU Lesser General Public License v3.
7
+
8
+ .-------------------------------------------------------------------------.
9
+ | Extensions: zx82 |
10
+ | Endianness: Big |
11
+ | Created by: James, William |
12
+ | Used by: Speculator '97 [Amiga] |
13
+ | |
14
+ | IMPORTANT NOTICE: This format is not well known at all, |
15
+ | so the types and constants declared here can be useless. |
16
+ | The only documentation I have found is from the SinclairFAQ. |
17
+ | |
18
+ | From SinclairFAQ: |
19
+ | |
20
+ | " Amiga Speculator has its own file format called ZX82 format because |
21
+ | it contains a file identifier in the first four bytes consisting of the |
22
+ | ASCII characters "ZX82". The format has a 12 byte header which contains |
23
+ | the normal Spectrum type file information like length, type, start etc. |
24
+ | as well as a compression flag which is set if the file is byte run |
25
+ | compressed. |
26
+ | |
27
+ | The 'data_type' field is derived from the MGT disciple directory |
28
+ | MGT_Type-1, so further file types may be supported in this way in the |
29
+ | future. |
30
+ | |
31
+ | The compression used is the standard byte run compression as used by |
32
+ | ILBM IFF files. The whole 48K data block is compressed as if it were |
33
+ | one long row. " |
34
+ | |
35
+ | See: |
36
+ | Amiga ROM Kernel Reference Manual: Devices (Third Edition) |
37
+ | - Appendix A - IFF Specification (Page 347) |
38
+ | - Appendix C - Example Packer C code (Page 538) |
39
+ '------------------------------------------------------------------------*/
40
+
41
+ #ifndef _Z_formats_snapshot_machine_computer_ZX_Spectrum_ZX82_H_
42
+ #define _Z_formats_snapshot_machine_computer_ZX_Spectrum_ZX82_H_
43
+
44
+ #include <Z/types/base.h>
45
+
46
+ Z_DEFINE_STRICT_STRUCTURE (
47
+ zuint8 identifier[4]; /* {'Z', 'X', '8', '2'} */
48
+ zuint8 data_type;
49
+ zuint8 data_compressed; /* boolean */
50
+ zuint16 data_size; /* File length up to 64k (ELINE-PROG for BASIC) */
51
+ zuint16 start_address; /* Start address for code (AUTOSTART for BASIC) */
52
+ zuint16 program_size;
53
+ ) ZZX82Header;
54
+
55
+ #define Z_ZX82_DATA_TYPE_BASIC 0
56
+ #define Z_ZX82_DATA_TYPE_NUMERIC 1
57
+ #define Z_ZX82_DATA_TYPE_STRINC 2
58
+ #define Z_ZX82_DATA_TYPE_CODE 3
59
+ #define Z_ZX82_DATA_TYPE_SNAPSHOT 4
60
+
61
+ Z_DEFINE_STRICT_STRUCTURE_BEGIN
62
+ zuint8 border_color, im; /* (0 = use I register, 1 = IM 1 and 2 = IM 2) (?) */
63
+ Z16Bit iy, ix;
64
+ Z16Bit de, bc, hl, af;
65
+ Z16Bit de_, bc_, hl_, af_, sp;
66
+ Z16Bit i, r;
67
+ Z16Bit pc;
68
+ Z_DEFINE_STRICT_STRUCTURE_END ZZX82SnapshotHeader;
69
+
70
+ #endif /* _Z_formats_snapshot_machine_computer_ZX_Spectrum_ZX82_H_ */
@@ -0,0 +1,26 @@
1
+ /* Z Kit - formats/storage medium image/NES Game Pak/UNIF.h
2
+ _____ _______________
3
+ /_ /_/ -_/_ _/ _ |
4
+ /____/\___/ /__//___/_| Kit
5
+ Copyright (C) 2006-2018 Manuel Sainz de Baranda y Goñi.
6
+ Released under the terms of the GNU Lesser General Public License v3.
7
+
8
+ .----------------------------------------.
9
+ | Extensions: unf, unif |
10
+ | Endianness: Little |
11
+ | Created by: Carmel-Veilleux, Tennessee |
12
+ | Used by: |
13
+ '---------------------------------------*/
14
+
15
+ #ifndef _Z_formats_storage_medium_image_NES_Game_Pak_UNIF_H_
16
+ #define _Z_formats_storage_medium_image_NES_Game_Pak_UNIF_H_
17
+
18
+ #include <Z/types/base.h>
19
+
20
+ Z_DEFINE_STRICT_STRUCTURE (
21
+ zuint8 unif[4]; /* 55 4E 49 46 ('UNIF') */
22
+ zuint32 minimum_version_required;
23
+ zuint8 zero[24];
24
+ ) ZUNIFHeader;
25
+
26
+ #endif /* _Z_formats_storage_medium_image_NES_Game_Pak_UNIF_H_ */
@@ -0,0 +1,76 @@
1
+ /* Z Kit - formats/storage medium image/NES Game Pak/iNES.h
2
+ _____ _______________
3
+ /_ /_/ -_/_ _/ _ |
4
+ /____/\___/ /__//___/_| Kit
5
+ Copyright (C) 2006-2018 Manuel Sainz de Baranda y Goñi.
6
+ Released under the terms of the GNU Lesser General Public License v3.
7
+
8
+ .------------------------------.
9
+ | Extensions: nes |
10
+ | Endianness: Little |
11
+ | Created by: Fayzullin, Marat |
12
+ | Used by: Any NES emulator |
13
+ '-----------------------------*/
14
+
15
+ #ifndef _Z_formats_storage_medium_image_NES_Game_Pak_iNES_H_
16
+ #define _Z_formats_storage_medium_image_NES_Game_Pak_iNES_H_
17
+
18
+ #include <Z/types/base.h>
19
+
20
+ Z_DEFINE_STRICT_STRUCTURE (
21
+ zuint8 nes[4]; /* 4E 45 53 1A ('NES' + MS-DOS EOF) */
22
+ zuint8 prg_rom_page_count;
23
+ zuint8 chr_rom_page_count;
24
+ zuint8 rom_control_0;
25
+ zuint8 rom_control_1;
26
+ zuint8 nes_rom;
27
+ zuint8 vs_unisystem_rom;
28
+ zuint8 playchoice_rom;
29
+ zuint8 zero_0;
30
+ zuint8 zero_1;
31
+ zuint8 full_ntsc_compatible;
32
+ zuint8 not_necessarily_pal_compatible;
33
+ zuint8 extra_ram_at_6000h_7fffh;
34
+ zuint8 dont_have_bus_conflicts;
35
+ zuint8 zero_2[6];
36
+ ) ZiNESHeader;
37
+
38
+ /*#define Z_INES_MAPPER_NONE 00
39
+ #define Z_INES_MAPPER_NINTENDO_MMC1_CHIPSET 01
40
+ #define Z_INES_MAPPER_PRG_ROM_SWITCH 02
41
+ #define Z_INES_MAPPER_CHR_VROM_SWITCH 03
42
+ #define Z_INES_MAPPER_NINTENDO_MMC3_CHIPSET 04
43
+ #define Z_INES_MAPPER_NINTENDO_MMC5_CHIPSET 05
44
+ #define Z_INES_MAPPER_FFE_F4XXX_GAMES 06
45
+ #define Z_INES_MAPPER_32K_PRG_ROM_SWITCH 07
46
+ #define Z_INES_MAPPER_FFE_F3XXX_GAMES 08
47
+ #define Z_INES_MAPPER_NINTENDO_MMC2_CHIPSET 09
48
+ #define Z_INES_MAPPER_NINTENDO_MMC4_CHIPSET 10
49
+ #define Z_INES_MAPPER_COLOR_DREAMS_CHIPSET 11
50
+ #define Z_INES_MAPPER_FFE_F6XXX_GAMES 12
51
+ #define Z_INES_MAPPER_100_IN_1_CART_SWITCH 15
52
+ #define Z_INES_MAPPER_BAN_DAI_CHIPSET 16
53
+ #define Z_INES_MAPPER_FFE_F8XXX_GAMES 17
54
+ #define Z_INES_MAPPER_JALECO_SS8806_CHIPSET 18
55
+ #define Z_INES_MAPPER_NAMCOT_106_CHIPSET 19
56
+ #define Z_INES_MAPPER_FAMICOM_DISK_SYSTEM 20
57
+ #define Z_INES_MAPPER_KONAMI_VRC4_2A_CHIPSET 21
58
+ #define Z_INES_MAPPER_KONAMI_VRC4_1B_CHIPSET 22
59
+ #define Z_INES_MAPPER_KONAMI_VRC4_1A_CHIPSET 23
60
+ #define Z_INES_MAPPER_KONAMI_VRC6_CHIPSET 24
61
+ #define Z_INES_MAPPER_KONAMI_VRC4_CHIPSET 25
62
+ #define Z_INES_MAPPER_IREM_G_101_CHIPSET 32
63
+ #define Z_INES_MAPPER_TAITO_TC0190_TC0350 33
64
+ #define Z_INES_MAPPER_32K_PRG_ROM_SWITCH 34
65
+ #define Z_INES_MAPPER_IREM_H3001_CHIPSET 65
66
+ #define Z_INES_MAPPER_74161_32_CHIPSET 66
67
+ #define Z_INES_MAPPER_SUNSOFT_MAPPER_3 67
68
+ #define Z_INES_MAPPER_SUNSOFT_MAPPER_4 69
69
+ #define Z_INES_MAPPER_74161_32_CHIPSET 70
70
+ #define Z_INES_MAPPER_X_005_CHIPSET 80
71
+ #define Z_INES_MAPPER_C075_CHIPSET 81
72
+ #define Z_INES_MAPPER_X1_17_CHIPSET 82
73
+ #define Z_INES_MAPPER_CONY_MAPPER 83
74
+ #define Z_INES_MAPPER_PASOFAMI_MAPPER 84*/
75
+
76
+ #endif /* _Z_formats_storage_medium_image_NES_Game_Pak_iNES_H_ */