skoolkit 9.2__tar.gz → 9.3__tar.gz

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 (253) hide show
  1. {skoolkit-9.2/skoolkit.egg-info → skoolkit-9.3}/PKG-INFO +6 -5
  2. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/asm.rst.txt +32 -0
  3. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/changelog.rst.txt +30 -0
  4. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/commands.rst.txt +129 -81
  5. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/components.rst.txt +14 -6
  6. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/bin2tap.py.rst.txt +13 -12
  7. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/sna2skool.py.rst.txt +16 -0
  8. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/snapinfo.py.rst.txt +9 -3
  9. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/tap2sna.py.rst.txt +33 -68
  10. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/tapinfo.py.rst.txt +7 -1
  11. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/trace.py.rst.txt +34 -6
  12. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/parsing.rst.txt +1 -0
  13. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/ref-files.rst.txt +7 -0
  14. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/whatis.rst.txt +6 -6
  15. {skoolkit-9.2 → skoolkit-9.3}/docs/_static/documentation_options.js +1 -1
  16. {skoolkit-9.2 → skoolkit-9.3}/docs/asm-templates.html +3 -3
  17. {skoolkit-9.2 → skoolkit-9.3}/docs/asm.html +64 -27
  18. {skoolkit-9.2 → skoolkit-9.3}/docs/assemblers.html +3 -3
  19. {skoolkit-9.2 → skoolkit-9.3}/docs/changelog.html +44 -11
  20. {skoolkit-9.2 → skoolkit-9.3}/docs/changelog1.html +3 -3
  21. {skoolkit-9.2 → skoolkit-9.3}/docs/changelog2.html +3 -3
  22. {skoolkit-9.2 → skoolkit-9.3}/docs/changelog3.html +3 -3
  23. {skoolkit-9.2 → skoolkit-9.3}/docs/changelog4.html +3 -3
  24. {skoolkit-9.2 → skoolkit-9.3}/docs/changelog5.html +3 -3
  25. {skoolkit-9.2 → skoolkit-9.3}/docs/changelog6.html +3 -3
  26. {skoolkit-9.2 → skoolkit-9.3}/docs/changelog7.html +3 -3
  27. {skoolkit-9.2 → skoolkit-9.3}/docs/changelog8.html +3 -3
  28. {skoolkit-9.2 → skoolkit-9.3}/docs/commands.html +201 -152
  29. {skoolkit-9.2 → skoolkit-9.3}/docs/components.html +24 -14
  30. {skoolkit-9.2 → skoolkit-9.3}/docs/control-files.html +3 -3
  31. {skoolkit-9.2 → skoolkit-9.3}/docs/diy.html +3 -3
  32. {skoolkit-9.2 → skoolkit-9.3}/docs/extending.html +3 -3
  33. {skoolkit-9.2 → skoolkit-9.3}/docs/genindex.html +3 -3
  34. {skoolkit-9.2 → skoolkit-9.3}/docs/html-templates.html +3 -3
  35. {skoolkit-9.2 → skoolkit-9.3}/docs/index.html +3 -3
  36. {skoolkit-9.2 → skoolkit-9.3}/docs/man/bin2sna.py.html +3 -3
  37. {skoolkit-9.2 → skoolkit-9.3}/docs/man/bin2tap.py.html +16 -15
  38. {skoolkit-9.2 → skoolkit-9.3}/docs/man/rzxinfo.py.html +3 -3
  39. {skoolkit-9.2 → skoolkit-9.3}/docs/man/rzxplay.py.html +3 -3
  40. {skoolkit-9.2 → skoolkit-9.3}/docs/man/skool2asm.py.html +3 -3
  41. {skoolkit-9.2 → skoolkit-9.3}/docs/man/skool2bin.py.html +3 -3
  42. {skoolkit-9.2 → skoolkit-9.3}/docs/man/skool2ctl.py.html +3 -3
  43. {skoolkit-9.2 → skoolkit-9.3}/docs/man/skool2html.py.html +3 -3
  44. {skoolkit-9.2 → skoolkit-9.3}/docs/man/sna2ctl.py.html +3 -3
  45. {skoolkit-9.2 → skoolkit-9.3}/docs/man/sna2img.py.html +3 -3
  46. {skoolkit-9.2 → skoolkit-9.3}/docs/man/sna2skool.py.html +53 -33
  47. {skoolkit-9.2 → skoolkit-9.3}/docs/man/snapinfo.py.html +12 -6
  48. {skoolkit-9.2 → skoolkit-9.3}/docs/man/snapmod.py.html +3 -3
  49. {skoolkit-9.2 → skoolkit-9.3}/docs/man/tap2sna.py.html +34 -71
  50. {skoolkit-9.2 → skoolkit-9.3}/docs/man/tapinfo.py.html +12 -4
  51. {skoolkit-9.2 → skoolkit-9.3}/docs/man/trace.py.html +41 -9
  52. {skoolkit-9.2 → skoolkit-9.3}/docs/migration.html +3 -3
  53. {skoolkit-9.2 → skoolkit-9.3}/docs/parsing.html +4 -3
  54. {skoolkit-9.2 → skoolkit-9.3}/docs/ref-files.html +13 -6
  55. {skoolkit-9.2 → skoolkit-9.3}/docs/search.html +3 -3
  56. skoolkit-9.3/docs/searchindex.js +1 -0
  57. {skoolkit-9.2 → skoolkit-9.3}/docs/skool-files.html +3 -3
  58. {skoolkit-9.2 → skoolkit-9.3}/docs/skool-macros.html +3 -3
  59. {skoolkit-9.2 → skoolkit-9.3}/docs/usage.html +3 -3
  60. {skoolkit-9.2 → skoolkit-9.3}/docs/whatis.html +9 -9
  61. {skoolkit-9.2 → skoolkit-9.3}/long_description.rst +5 -4
  62. {skoolkit-9.2 → skoolkit-9.3}/man/man1/bin2sna.py.1 +1 -1
  63. {skoolkit-9.2 → skoolkit-9.3}/man/man1/bin2tap.py.1 +15 -14
  64. {skoolkit-9.2 → skoolkit-9.3}/man/man1/rzxinfo.py.1 +1 -1
  65. {skoolkit-9.2 → skoolkit-9.3}/man/man1/rzxplay.py.1 +1 -1
  66. {skoolkit-9.2 → skoolkit-9.3}/man/man1/skool2asm.py.1 +1 -1
  67. {skoolkit-9.2 → skoolkit-9.3}/man/man1/skool2bin.py.1 +1 -1
  68. {skoolkit-9.2 → skoolkit-9.3}/man/man1/skool2ctl.py.1 +1 -1
  69. {skoolkit-9.2 → skoolkit-9.3}/man/man1/skool2html.py.1 +1 -1
  70. {skoolkit-9.2 → skoolkit-9.3}/man/man1/sna2ctl.py.1 +1 -1
  71. {skoolkit-9.2 → skoolkit-9.3}/man/man1/sna2img.py.1 +1 -1
  72. {skoolkit-9.2 → skoolkit-9.3}/man/man1/sna2skool.py.1 +25 -1
  73. {skoolkit-9.2 → skoolkit-9.3}/man/man1/snapinfo.py.1 +10 -4
  74. {skoolkit-9.2 → skoolkit-9.3}/man/man1/snapmod.py.1 +1 -1
  75. {skoolkit-9.2 → skoolkit-9.3}/man/man1/tap2sna.py.1 +35 -70
  76. {skoolkit-9.2 → skoolkit-9.3}/man/man1/tapinfo.py.1 +13 -3
  77. {skoolkit-9.2 → skoolkit-9.3}/man/man1/trace.py.1 +42 -7
  78. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/__init__.py +4 -1
  79. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/bin2tap.py +35 -32
  80. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/config.py +2 -1
  81. skoolkit-9.3/skoolkit/disassembler.py +1136 -0
  82. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/loadsample.py +2 -2
  83. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/loadtracer.py +96 -46
  84. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/rzxplay.py +2 -5
  85. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/simutils.py +3 -1
  86. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/skool2bin.py +17 -8
  87. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/skool2html.py +3 -2
  88. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/skoolctl.py +8 -2
  89. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/skoolhtml.py +5 -5
  90. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/skoolmacro.py +4 -1
  91. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/skoolparser.py +15 -6
  92. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/skoolutils.py +8 -1
  93. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/sna2skool.py +2 -2
  94. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/snapinfo.py +30 -9
  95. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/snapshot.py +4 -3
  96. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/snaskool.py +20 -9
  97. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/tap2sna.py +209 -376
  98. skoolkit-9.3/skoolkit/tape.py +787 -0
  99. skoolkit-9.3/skoolkit/tapinfo.py +142 -0
  100. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/trace.py +66 -25
  101. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/traceutils.py +10 -0
  102. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/z80.py +280 -44
  103. {skoolkit-9.2 → skoolkit-9.3/skoolkit.egg-info}/PKG-INFO +6 -5
  104. {skoolkit-9.2 → skoolkit-9.3}/skoolkit.egg-info/SOURCES.txt +2 -0
  105. {skoolkit-9.2 → skoolkit-9.3}/tests/skoolkittest.py +111 -0
  106. {skoolkit-9.2 → skoolkit-9.3}/tests/test_bin2tap.py +161 -180
  107. {skoolkit-9.2 → skoolkit-9.3}/tests/test_ctlparser.py +15 -0
  108. {skoolkit-9.2 → skoolkit-9.3}/tests/test_disassembler.py +651 -54
  109. {skoolkit-9.2 → skoolkit-9.3}/tests/test_skool2bin.py +19 -0
  110. {skoolkit-9.2 → skoolkit-9.3}/tests/test_skool2html.py +51 -0
  111. {skoolkit-9.2 → skoolkit-9.3}/tests/test_skoolasm.py +48 -0
  112. {skoolkit-9.2 → skoolkit-9.3}/tests/test_skoolctl.py +16 -0
  113. {skoolkit-9.2 → skoolkit-9.3}/tests/test_skoolhtml.py +150 -0
  114. {skoolkit-9.2 → skoolkit-9.3}/tests/test_skoolparser.py +36 -0
  115. {skoolkit-9.2 → skoolkit-9.3}/tests/test_sna2skool.py +2 -0
  116. {skoolkit-9.2 → skoolkit-9.3}/tests/test_snapinfo.py +263 -11
  117. {skoolkit-9.2 → skoolkit-9.3}/tests/test_snaskool.py +255 -1
  118. {skoolkit-9.2 → skoolkit-9.3}/tests/test_tap2sna.py +376 -31
  119. skoolkit-9.3/tests/test_tape.py +72 -0
  120. {skoolkit-9.2 → skoolkit-9.3}/tests/test_tapinfo.py +576 -14
  121. {skoolkit-9.2 → skoolkit-9.3}/tests/test_trace.py +335 -5
  122. {skoolkit-9.2 → skoolkit-9.3}/tests/test_z80.py +788 -0
  123. skoolkit-9.2/docs/searchindex.js +0 -1
  124. skoolkit-9.2/skoolkit/disassembler.py +0 -1092
  125. skoolkit-9.2/skoolkit/tapinfo.py +0 -552
  126. {skoolkit-9.2 → skoolkit-9.3}/COPYING +0 -0
  127. {skoolkit-9.2 → skoolkit-9.3}/MANIFEST.in +0 -0
  128. {skoolkit-9.2 → skoolkit-9.3}/bin2sna.py +0 -0
  129. {skoolkit-9.2 → skoolkit-9.3}/bin2tap.py +0 -0
  130. {skoolkit-9.2 → skoolkit-9.3}/c/csimulator.c +0 -0
  131. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/asm-templates.rst.txt +0 -0
  132. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/assemblers.rst.txt +0 -0
  133. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/changelog1.rst.txt +0 -0
  134. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/changelog2.rst.txt +0 -0
  135. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/changelog3.rst.txt +0 -0
  136. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/changelog4.rst.txt +0 -0
  137. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/changelog5.rst.txt +0 -0
  138. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/changelog6.rst.txt +0 -0
  139. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/changelog7.rst.txt +0 -0
  140. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/changelog8.rst.txt +0 -0
  141. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/control-files.rst.txt +0 -0
  142. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/diy.rst.txt +0 -0
  143. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/extending.rst.txt +0 -0
  144. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/html-templates.rst.txt +0 -0
  145. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/index.rst.txt +0 -0
  146. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/bin2sna.py.rst.txt +0 -0
  147. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/rzxinfo.py.rst.txt +0 -0
  148. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/rzxplay.py.rst.txt +0 -0
  149. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/skool2asm.py.rst.txt +0 -0
  150. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/skool2bin.py.rst.txt +0 -0
  151. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/skool2ctl.py.rst.txt +0 -0
  152. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/skool2html.py.rst.txt +0 -0
  153. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/sna2ctl.py.rst.txt +0 -0
  154. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/sna2img.py.rst.txt +0 -0
  155. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/snapmod.py.rst.txt +0 -0
  156. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/migration.rst.txt +0 -0
  157. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/skool-files.rst.txt +0 -0
  158. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/skool-macros.rst.txt +0 -0
  159. {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/usage.rst.txt +0 -0
  160. {skoolkit-9.2 → skoolkit-9.3}/docs/_static/_sphinx_javascript_frameworks_compat.js +0 -0
  161. {skoolkit-9.2 → skoolkit-9.3}/docs/_static/basic.css +0 -0
  162. {skoolkit-9.2 → skoolkit-9.3}/docs/_static/classic.css +0 -0
  163. {skoolkit-9.2 → skoolkit-9.3}/docs/_static/custom.css +0 -0
  164. {skoolkit-9.2 → skoolkit-9.3}/docs/_static/doctools.js +0 -0
  165. {skoolkit-9.2 → skoolkit-9.3}/docs/_static/file.png +0 -0
  166. {skoolkit-9.2 → skoolkit-9.3}/docs/_static/jquery.js +0 -0
  167. {skoolkit-9.2 → skoolkit-9.3}/docs/_static/language_data.js +0 -0
  168. {skoolkit-9.2 → skoolkit-9.3}/docs/_static/minus.png +0 -0
  169. {skoolkit-9.2 → skoolkit-9.3}/docs/_static/plus.png +0 -0
  170. {skoolkit-9.2 → skoolkit-9.3}/docs/_static/pygments.css +0 -0
  171. {skoolkit-9.2 → skoolkit-9.3}/docs/_static/searchtools.js +0 -0
  172. {skoolkit-9.2 → skoolkit-9.3}/docs/_static/sidebar.js +0 -0
  173. {skoolkit-9.2 → skoolkit-9.3}/docs/_static/sphinx_highlight.js +0 -0
  174. {skoolkit-9.2 → skoolkit-9.3}/docs/_static/underscore.js +0 -0
  175. {skoolkit-9.2 → skoolkit-9.3}/examples/hungry_horace.ctl +0 -0
  176. {skoolkit-9.2 → skoolkit-9.3}/examples/hungry_horace.ref +0 -0
  177. {skoolkit-9.2 → skoolkit-9.3}/examples/hungry_horace.t2s +0 -0
  178. {skoolkit-9.2 → skoolkit-9.3}/pyproject.toml +0 -0
  179. {skoolkit-9.2 → skoolkit-9.3}/rzxinfo.py +0 -0
  180. {skoolkit-9.2 → skoolkit-9.3}/rzxplay.py +0 -0
  181. {skoolkit-9.2 → skoolkit-9.3}/setup.cfg +0 -0
  182. {skoolkit-9.2 → skoolkit-9.3}/setup.py +0 -0
  183. {skoolkit-9.2 → skoolkit-9.3}/skool2asm.py +0 -0
  184. {skoolkit-9.2 → skoolkit-9.3}/skool2bin.py +0 -0
  185. {skoolkit-9.2 → skoolkit-9.3}/skool2ctl.py +0 -0
  186. {skoolkit-9.2 → skoolkit-9.3}/skool2html.py +0 -0
  187. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/audio.py +0 -0
  188. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/basic.py +0 -0
  189. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/bin2sna.py +0 -0
  190. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/cmiosimulator.py +0 -0
  191. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/components.py +0 -0
  192. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/ctlparser.py +0 -0
  193. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/defaults.py +0 -0
  194. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/graphics.py +0 -0
  195. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/image.py +0 -0
  196. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/kbtracer.py +0 -0
  197. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/opcodes.py +0 -0
  198. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/pagingtracer.py +0 -0
  199. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/pngwriter.py +0 -0
  200. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/refparser.py +0 -0
  201. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/resources/128-0.rom +0 -0
  202. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/resources/128-1.rom +0 -0
  203. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/resources/48.rom +0 -0
  204. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/resources/plus2-0.rom +0 -0
  205. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/resources/plus2-1.rom +0 -0
  206. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/resources/skoolkit-dark.css +0 -0
  207. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/resources/skoolkit-green.css +0 -0
  208. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/resources/skoolkit-plum.css +0 -0
  209. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/resources/skoolkit-wide.css +0 -0
  210. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/resources/skoolkit.css +0 -0
  211. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/rzxinfo.py +0 -0
  212. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/simtables.py +0 -0
  213. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/simulator.py +0 -0
  214. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/skool2asm.py +0 -0
  215. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/skool2ctl.py +0 -0
  216. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/skoolasm.py +0 -0
  217. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/sna2ctl.py +0 -0
  218. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/sna2img.py +0 -0
  219. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/snactl.py +0 -0
  220. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/snapmod.py +0 -0
  221. {skoolkit-9.2 → skoolkit-9.3}/skoolkit/textutils.py +0 -0
  222. {skoolkit-9.2 → skoolkit-9.3}/skoolkit.egg-info/dependency_links.txt +0 -0
  223. {skoolkit-9.2 → skoolkit-9.3}/skoolkit.egg-info/top_level.txt +0 -0
  224. {skoolkit-9.2 → skoolkit-9.3}/sna2ctl.py +0 -0
  225. {skoolkit-9.2 → skoolkit-9.3}/sna2img.py +0 -0
  226. {skoolkit-9.2 → skoolkit-9.3}/sna2skool.py +0 -0
  227. {skoolkit-9.2 → skoolkit-9.3}/snapinfo.py +0 -0
  228. {skoolkit-9.2 → skoolkit-9.3}/snapmod.py +0 -0
  229. {skoolkit-9.2 → skoolkit-9.3}/tap2sna.py +0 -0
  230. {skoolkit-9.2 → skoolkit-9.3}/tapinfo.py +0 -0
  231. {skoolkit-9.2 → skoolkit-9.3}/tests/macrotest.py +0 -0
  232. {skoolkit-9.2 → skoolkit-9.3}/tests/test_audio.py +0 -0
  233. {skoolkit-9.2 → skoolkit-9.3}/tests/test_basic.py +0 -0
  234. {skoolkit-9.2 → skoolkit-9.3}/tests/test_bin2sna.py +0 -0
  235. {skoolkit-9.2 → skoolkit-9.3}/tests/test_cmiosimulator.py +0 -0
  236. {skoolkit-9.2 → skoolkit-9.3}/tests/test_graphics.py +0 -0
  237. {skoolkit-9.2 → skoolkit-9.3}/tests/test_image.py +0 -0
  238. {skoolkit-9.2 → skoolkit-9.3}/tests/test_kbtracer.py +0 -0
  239. {skoolkit-9.2 → skoolkit-9.3}/tests/test_refparser.py +0 -0
  240. {skoolkit-9.2 → skoolkit-9.3}/tests/test_rzxinfo.py +0 -0
  241. {skoolkit-9.2 → skoolkit-9.3}/tests/test_rzxplay.py +0 -0
  242. {skoolkit-9.2 → skoolkit-9.3}/tests/test_simulator.py +0 -0
  243. {skoolkit-9.2 → skoolkit-9.3}/tests/test_skool2asm.py +0 -0
  244. {skoolkit-9.2 → skoolkit-9.3}/tests/test_skool2ctl.py +0 -0
  245. {skoolkit-9.2 → skoolkit-9.3}/tests/test_skoolkit.py +0 -0
  246. {skoolkit-9.2 → skoolkit-9.3}/tests/test_skoolmacro.py +0 -0
  247. {skoolkit-9.2 → skoolkit-9.3}/tests/test_sna2ctl.py +0 -0
  248. {skoolkit-9.2 → skoolkit-9.3}/tests/test_sna2img.py +0 -0
  249. {skoolkit-9.2 → skoolkit-9.3}/tests/test_snapmod.py +0 -0
  250. {skoolkit-9.2 → skoolkit-9.3}/tests/test_snapshot.py +0 -0
  251. {skoolkit-9.2 → skoolkit-9.3}/tests/test_textutils.py +0 -0
  252. {skoolkit-9.2 → skoolkit-9.3}/tests/test_traceutils.py +0 -0
  253. {skoolkit-9.2 → skoolkit-9.3}/trace.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: skoolkit
3
- Version: 9.2
3
+ Version: 9.3
4
4
  Summary: A suite of tools for creating disassemblies of ZX Spectrum games
5
5
  Home-page: https://skoolkit.ca
6
6
  Author: Richard Dymond
@@ -56,8 +56,8 @@ With SkoolKit you can:
56
56
  * use skool2ctl.py_ to convert a disassembly back into a control file (with
57
57
  annotations retained)
58
58
  * use skool2bin.py_ to convert a disassembly into a raw memory file
59
- * use tap2sna.py_ to convert a TAP or TZX file into a 'pristine' Z80 or SZX
60
- snapshot
59
+ * use tap2sna.py_ to convert a PZX, TAP or TZX file into a 'pristine' Z80 or
60
+ SZX snapshot
61
61
  * use snapinfo.py_ to analyse a snapshot or raw memory file and list the BASIC
62
62
  program it contains, show register values, produce a call graph, find tile
63
63
  graphic data, find text, or find sequences of arbitrary byte values
@@ -65,11 +65,12 @@ With SkoolKit you can:
65
65
  memory file
66
66
  * use rzxplay.py_ to trace the execution of machine code in an RZX file, and
67
67
  produce a code execution map for sna2ctl.py_
68
- * use tapinfo.py_ to analyse the blocks in a TAP or TZX file, and list the
68
+ * use tapinfo.py_ to analyse the blocks in a PZX, TAP or TZX file, and list the
69
69
  BASIC program it contains
70
70
  * use rzxinfo.py_ to analyse the blocks in an RZX file, and extract snapshots
71
71
  from it
72
- * use bin2tap.py_ to convert a snapshot or raw memory file into a TAP file
72
+ * use bin2tap.py_ to convert a snapshot or raw memory file into a PZX or TAP
73
+ file
73
74
  * use bin2sna.py_ to convert a raw memory file into a Z80 or SZX snapshot
74
75
  * use snapmod.py_ to modify the register values or memory contents in a Z80 or
75
76
  SZX snapshot
@@ -463,6 +463,38 @@ For example::
463
463
  JR NZ,32232 ;
464
464
  @bfix+end
465
465
 
466
+ .. _bytes:
467
+
468
+ @bytes
469
+ ^^^^^^
470
+ The ``@bytes`` directive specifies the byte values to which the next
471
+ instruction should assemble. ::
472
+
473
+ @bytes=value1[,value2...]
474
+
475
+ * ``value1``, ``value2`` etc. are the byte values
476
+
477
+ This directive is useful only for specifying an alternative set of opcodes for
478
+ an instruction that has two or more valid sets, such as 'LD HL,(nn)' (2A or
479
+ ED6B) and 'IM 1' (ED56 or ED76). It ensures that the memory snapshot
480
+ constructed by :ref:`skool2asm.py` or :ref:`skool2html.py`, and the output
481
+ produced by :ref:`skool2bin.py`, will contain the correct byte values at the
482
+ instruction's address.
483
+
484
+ For example::
485
+
486
+ @bytes=$ED,$4C
487
+ 40000 NEG
488
+
489
+ This ``@bytes`` directive makes the NEG instruction that follows assemble to
490
+ ED4C (instead of the standard ED44).
491
+
492
+ +---------+---------+
493
+ | Version | Changes |
494
+ +=========+=========+
495
+ | 9.3 | New |
496
+ +---------+---------+
497
+
466
498
  .. _defb:
467
499
 
468
500
  @defb
@@ -1,6 +1,36 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ 9.3 (2024-08-10)
5
+ ----------------
6
+ * Added support to :ref:`tapinfo.py` and :ref:`tap2sna.py` for reading PZX
7
+ files
8
+ * Added support to :ref:`bin2tap.py` for writing PZX files
9
+ * Added support to :ref:`tap2sna.py <tap2sna-conf>` for the ``m`` (memory)
10
+ replacement field in the ``TraceLine`` configuration parameter
11
+ * Added support to :ref:`trace.py <trace-conf>` for the ``m`` (memory)
12
+ replacement field in the ``TraceLine*`` configuration parameters
13
+ * Added the ``--state`` option to :ref:`trace.py` (for setting hardware state
14
+ attributes before code execution begins)
15
+ * Added support to :ref:`trace.py` for writing a WAV file after code execution
16
+ has completed
17
+ * Added the ``Opcodes`` configuration parameter to
18
+ :ref:`sna2skool.py <sna2skool-conf>` (for specifying additional opcode
19
+ sequences to disassemble)
20
+ * Added the :ref:`bytes` directive (for specifying the byte values to which an
21
+ instruction should assemble)
22
+ * Added the ``--tape-start`` and ``--tape-stop`` options to :ref:`tapinfo.py`
23
+ (for specifying the block numbers at which to start or stop showing info)
24
+ * :ref:`tapinfo.py` now shows info for TZX block types 0x18 (CSW recording) and
25
+ 0x2B (set signal level), and also recognises the deprecated TZX block types
26
+ 0x16, 0x17, 0x34 and 0x40
27
+ * The ``--find``, ``--find-text`` and ``--find-tile`` options of
28
+ :ref:`snapinfo.py` now search all RAM banks in a 128K snapshot by default
29
+ * Added support for path ID replacement fields in the ``destDir`` parameter of
30
+ items in the :ref:`resources` section
31
+ * Fixed the bug that prevents the ``--reg`` option of :ref:`trace.py` from
32
+ accepting hexadecimal values prefixed by '0x'
33
+
4
34
  9.2 (2024-05-11)
5
35
  ----------------
6
36
  * Added a Z80 instruction set simulator implemented in C (as a faster
@@ -87,7 +87,7 @@ Run `bin2sna.py` with no arguments to see the list of available options::
87
87
  bin2tap.py
88
88
  ----------
89
89
  `bin2tap.py` converts a binary (raw memory) file or a SNA, SZX or Z80 snapshot
90
- into a TAP file. For example::
90
+ into a PZX or TAP file. For example::
91
91
 
92
92
  $ bin2tap.py game.bin
93
93
 
@@ -97,16 +97,16 @@ of code to run) and the stack pointer are set to 65536 minus the length of
97
97
  `game.bin`. These values can be changed by passing options to `bin2tap.py`. Run
98
98
  it with no arguments to see the list of available options::
99
99
 
100
- usage: bin2tap.py [options] FILE [file.tap]
100
+ usage: bin2tap.py [options] FILE [OUTFILE]
101
101
 
102
- Convert a binary (raw memory) file or a SNA, SZX or Z80 snapshot into a TAP
103
- file. FILE may be a regular file, or '-' to read a binary file from standard
104
- input.
102
+ Convert a binary (raw memory) file or a SNA, SZX or Z80 snapshot into a PZX or
103
+ TAP file. FILE may be a regular file, or '-' to read a binary file from
104
+ standard input. If OUTFILE is not given, a TAP file is created.
105
105
 
106
106
  Options:
107
- --7ffd N Add 128K RAM banks to the TAP file and write N to port
108
- 0x7ffd after they've loaded.
109
- --banks N[,N...] Add only these 128K RAM banks to the TAP file
107
+ --7ffd N Add 128K RAM banks to the tape file and write N to
108
+ port 0x7ffd after they've loaded.
109
+ --banks N[,N...] Add only these 128K RAM banks to the tape file
110
110
  (default: 0,1,3,4,6,7).
111
111
  -b BEGIN, --begin BEGIN
112
112
  Begin conversion at this address (default: ORG for a
@@ -123,7 +123,7 @@ it with no arguments to see the list of available options::
123
123
  -s START, --start START
124
124
  Set the start address to JP to (default: BEGIN).
125
125
  -S FILE, --screen FILE
126
- Add a loading screen to the TAP file. FILE may be a
126
+ Add a loading screen to the tape file. FILE may be a
127
127
  snapshot or a 6912-byte SCR file.
128
128
  -V, --version Show SkoolKit version number and exit.
129
129
 
@@ -145,7 +145,7 @@ crashing. The lowest usable address with the ``--clear`` option on a bare 48K
145
145
  Spectrum is 23972 (5DA4) if a loading screen is used, or 23952 (0x5D90)
146
146
  otherwise.
147
147
 
148
- To create a TAP file that loads a 128K game, use the ``--7ffd``, ``--begin``
148
+ To create a tape file that loads a 128K game, use the ``--7ffd``, ``--begin``
149
149
  and ``--clear`` options along with a 128K snapshot or a 128K binary file as
150
150
  input, where:
151
151
 
@@ -161,7 +161,7 @@ the number of RAM banks to load) is placed one above the CLEAR address. Use the
161
161
  address with the ``--clear`` option on a bare 128K Spectrum is 23977 (0x5DA9)
162
162
  if a loading screen is used, or 23957 (0x5D95) otherwise.
163
163
 
164
- By default, 128K RAM banks 0, 1, 3, 4, 6 and 7 are added to the TAP file. If
164
+ By default, 128K RAM banks 0, 1, 3, 4, 6 and 7 are added to the tape file. If
165
165
  one or more of these RAM banks are not required, use the ``--banks`` option to
166
166
  specify a smaller set of RAM banks to add. If none of these RAM banks are
167
167
  required, use ``,`` (a single comma) as the argument to the ``--banks`` option.
@@ -172,6 +172,8 @@ block on the tape.
172
172
  +---------+-------------------------------------------------------------------+
173
173
  | Version | Changes |
174
174
  +=========+===================================================================+
175
+ | 9.3 | Added support for writing PZX files |
176
+ +---------+-------------------------------------------------------------------+
175
177
  | 9.1 | Added the ``--7ffd``, ``--banks`` and ``--loader`` options and |
176
178
  | | support for writing 128K TAP files |
177
179
  +---------+-------------------------------------------------------------------+
@@ -1052,7 +1054,7 @@ list::
1052
1054
  standard input, or '0' to use no control file. This
1053
1055
  option may be used multiple times.
1054
1056
  -d SIZE, --defb SIZE Disassemble as DEFB statements of this size.
1055
- -e ADDR, --end ADDR Stop disassembling at this address (default=65536).
1057
+ -e ADDR, --end ADDR Stop disassembling at this address (default: 65536).
1056
1058
  -H, --hex Write hexadecimal addresses and operands in the
1057
1059
  disassembly.
1058
1060
  -I p=v, --ini p=v Set the value of the configuration parameter 'p' to
@@ -1106,6 +1108,8 @@ configuration parameters are:
1106
1108
  * ``ListRefs`` - when to add a comment that lists routine or entry point
1107
1109
  referrers: never (``0``), if no other comment is defined at the entry point
1108
1110
  (``1``, the default), or always (``2``)
1111
+ * ``Opcodes`` - comma-separated list of values specifying additional opcode
1112
+ sequences to disassemble (see below)
1109
1113
  * ``Ref`` - template used to format the comment for a routine with exactly one
1110
1114
  referrer (default: ``Used by the routine at {ref}.``)
1111
1115
  * ``RefFormat`` - template used to format referrers in the ``{ref}`` and
@@ -1141,6 +1145,52 @@ configuration parameters are:
1141
1145
  * ``Wrap`` - disassemble an instruction that wraps around the 64K boundary
1142
1146
  (``1``), or don't (``0``, the default)
1143
1147
 
1148
+ The ``Opcodes`` list is empty by default, but may contain any of the following
1149
+ values:
1150
+
1151
+ * ``ED63`` - LD (nn),HL (4-byte variant)
1152
+ * ``ED6B`` - LD HL,(nn) (4-byte variant)
1153
+ * ``ED70`` - IN F,(C)
1154
+ * ``ED71`` - OUT (C),0
1155
+ * ``IM`` - IM 0/1/2 variants (ED followed by 4E/66/6E/76/7E)
1156
+ * ``NEG`` - NEG variants (ED followed by 4C/54/5C/64/6C/74/7C)
1157
+ * ``RETN`` - RETN variants (ED followed by 55/5D/65/6D/75/7D)
1158
+ * ``XYCB`` - undocumented instructions with DDCB or FDCB opcode prefixes (see
1159
+ below)
1160
+ * ``ALL`` - all of the above
1161
+
1162
+ When ``XYCB`` is in the list, the following instructions are disassembled
1163
+ (where 'XY' is IX or IY, and 'r' is B, C, D, E, H, L or A):
1164
+
1165
+ * RLC (XY+d),r
1166
+ * RRC (XY+d),r
1167
+ * RL (XY+d),r
1168
+ * RR (XY+d),r
1169
+ * SLA (XY+d),r
1170
+ * SRA (XY+d),r
1171
+ * SLL (XY+d),r
1172
+ * SRL (XY+d),r
1173
+ * BIT n,(XY+d) (variants)
1174
+ * RES n,(XY+d),r
1175
+ * SET n,(XY+d),r
1176
+
1177
+ Whenever an instruction with a variant opcode sequence is disassembled,
1178
+ `sna2skool.py` will insert a :ref:`bytes` directive into the skool file (if one
1179
+ is not already provided by a control file) to ensure that the instruction
1180
+ assembles back to the same byte values when processed by :ref:`skool2asm.py`,
1181
+ :ref:`skool2html.py` or :ref:`skool2bin.py`.
1182
+
1183
+ Also note that if your skool file contains any non-standard instructions (such
1184
+ as 'IN F,(C)') or instructions that derive from variant opcode sequences (such
1185
+ as 'BIT 0,(IX+0)' from DDCB0040 instead of the standard DDCB0046), care must be
1186
+ taken when using an assembler on the output of :ref:`skool2asm.py` to ensure
1187
+ that instructions not only assemble successfully, but also assemble back to the
1188
+ original byte values, if desired. The :ref:`isub` directive may be used for
1189
+ this purpose; for example::
1190
+
1191
+ @isub=DEFB 221,203,0,64 ; This is BIT 0,(IX+0)
1192
+ 40000 BIT 0,(IX+0) ; The opcode sequence here is DDCB0040
1193
+
1144
1194
  Configuration parameters must appear in a ``[sna2skool]`` section. For example,
1145
1195
  to make `sna2skool.py` generate hexadecimal skool files with a line width of
1146
1196
  120 characters by default (without having to use the ``-H`` and ``-w`` options
@@ -1157,6 +1207,8 @@ Configuration parameters may also be set on the command line by using the
1157
1207
  +---------+-------------------------------------------------------------------+
1158
1208
  | Version | Changes |
1159
1209
  +=========+===================================================================+
1210
+ | 9.3 | Added the ``Opcodes`` configuration parameter |
1211
+ +---------+-------------------------------------------------------------------+
1160
1212
  | 8.7 | Added the ``--defb`` option and the ``Timings`` configuration |
1161
1213
  | | parameter |
1162
1214
  +---------+-------------------------------------------------------------------+
@@ -1269,6 +1321,10 @@ shown above, it can list the BASIC program and variables (if present), show the
1269
1321
  contents of a range of addresses, search the RAM for a sequence of byte values
1270
1322
  or a text string, or generate a call graph.
1271
1323
 
1324
+ By default, the ``--find``, ``--find-text`` and ``--find-tile`` options search
1325
+ all RAM banks in a 128K snapshot; use the ``--page`` option to restrict the
1326
+ search to the address range 16384-65535 (0x4000-0xFFFF).
1327
+
1272
1328
  .. _snapinfo-call-graph:
1273
1329
 
1274
1330
  Call graphs
@@ -1354,6 +1410,9 @@ Configuration parameters may also be set on the command line by using the
1354
1410
  +---------+-------------------------------------------------------------------+
1355
1411
  | Version | Changes |
1356
1412
  +=========+===================================================================+
1413
+ | 9.3 | The ``--find``, ``--find-text`` and ``--find-tile`` options |
1414
+ | | search all RAM banks in a 128K snapshot by default |
1415
+ +---------+-------------------------------------------------------------------+
1357
1416
  | 9.0 | Shows the current AY register in 128K SZX and Z80 snapshots |
1358
1417
  +---------+-------------------------------------------------------------------+
1359
1418
  | 8.10 | Shows the value of the T-states counter and the issue 2 emulation |
@@ -1436,8 +1495,8 @@ To list the options supported by `snapmod.py`, run it with no arguments::
1436
1495
 
1437
1496
  tap2sna.py
1438
1497
  ----------
1439
- `tap2sna.py` converts a TAP or TZX file (which may be inside a zip archive)
1440
- into an SZX or Z80 snapshot. For example::
1498
+ `tap2sna.py` converts a PZX, TAP or TZX file (which may be inside a zip
1499
+ archive) into an SZX or Z80 snapshot. For example::
1441
1500
 
1442
1501
  $ tap2sna.py game.tap game.z80
1443
1502
 
@@ -1447,15 +1506,16 @@ To list the options supported by `tap2sna.py`, run it with no arguments::
1447
1506
  tap2sna.py [options] INPUT [OUTFILE]
1448
1507
  tap2sna.py @FILE [args]
1449
1508
 
1450
- Convert a TAP or TZX file (which may be inside a zip archive) into an SZX or
1451
- Z80 snapshot. INPUT may be the full URL to a remote zip archive or TAP/TZX
1509
+ Convert a PZX, TAP or TZX file (which may be inside a zip archive) into an SZX
1510
+ or Z80 snapshot. INPUT may be the full URL to a remote zip archive or tape
1452
1511
  file, or the path to a local file. Arguments may be read from FILE instead of
1453
1512
  (or as well as) being given on the command line.
1454
1513
 
1455
1514
  Options:
1456
1515
  -c name=value, --sim-load-config name=value
1457
1516
  Set the value of a simulated LOAD configuration
1458
- parameter. Do '-c help' for more information. This
1517
+ parameter. Do '-c help' for more information, or '-c
1518
+ help-name' for help on a specific parameter. This
1459
1519
  option may be used multiple times.
1460
1520
  -d DIR, --output-dir DIR
1461
1521
  Write the snapshot file in this directory.
@@ -1476,10 +1536,10 @@ To list the options supported by `tap2sna.py`, run it with no arguments::
1476
1536
  times.
1477
1537
  --tape-analysis Show an analysis of the tape's tones, pulse sequences
1478
1538
  and data blocks.
1479
- --tape-name NAME Specify the name of a TAP/TZX file in a zip archive.
1539
+ --tape-name NAME Specify the name of a tape file in a zip archive.
1480
1540
  --tape-start BLOCK Start the tape at this block number.
1481
1541
  --tape-stop BLOCK Stop the tape at this block number.
1482
- --tape-sum MD5SUM Specify the MD5 checksum of the TAP/TZX file.
1542
+ --tape-sum MD5SUM Specify the MD5 checksum of the tape file.
1483
1543
  -u AGENT, --user-agent AGENT
1484
1544
  Set the User-Agent header.
1485
1545
  -V, --version Show SkoolKit version number and exit.
@@ -1495,7 +1555,7 @@ addresses. For example::
1495
1555
  $ tap2sna.py --ram load=3,30000 game.tzx game.z80
1496
1556
 
1497
1557
  loads the third block on the tape at address 30000, and ignores all other
1498
- blocks. (To see information on the blocks in a TAP or TZX file, use the
1558
+ blocks. (To see information on the blocks in a tape file, use the
1499
1559
  :ref:`tapinfo.py` command.)
1500
1560
 
1501
1561
  The ``--ram`` option can also be used to move blocks of bytes from one location
@@ -1564,9 +1624,10 @@ parameters are:
1564
1624
  (``1``), or disable it (``0``); this is disabled by default to improve
1565
1625
  performance, but some loaders may require it; when this is enabled, all
1566
1626
  acceleration is disabled
1567
- * ``fast-load`` - enable fast loading (``1``, the default), or disable it
1568
- (``0``); fast loading significantly reduces the load time for many tapes, but
1569
- can also cause some loaders to fail
1627
+ * ``fast-load`` - enable fast loading whenever the ROM loader is called (``1``,
1628
+ the default), or disable it (``0``); fast loading (also known as "flash
1629
+ loading") significantly reduces the load time for many tapes, but can also
1630
+ cause some loaders to fail
1570
1631
  * ``finish-tape`` - run the tape to the end before stopping the simulation at
1571
1632
  the address specified by the ``--start`` option (``1``), or stop the
1572
1633
  simulation as soon as that address is reached, regardless of whether the tape
@@ -1624,6 +1685,10 @@ special values:
1624
1685
  loader that uses an unrecognised tape-sampling loop may be reduced by
1625
1686
  specifying this value
1626
1687
 
1688
+ A tape-sampling loop accelerator works by effectively fast-forwarding the tape
1689
+ (and the state of the loop itself) to the next edge whenever the loop is
1690
+ entered. This technique is known as "edge loading".
1691
+
1627
1692
  The output produced by ``accelerator=list`` looks something like this::
1628
1693
 
1629
1694
  Accelerators: microsphere: 6695; rom: 794013; misses: 19/9; dec-a: 800708/0/224
@@ -1639,55 +1704,10 @@ This means that:
1639
1704
  loops were executed
1640
1705
 
1641
1706
  Specifying by name the types of tape-sampling loop used by a game's custom
1642
- loader may reduce the loading time. The names of the available tape-sampling
1643
- loop accelerators are:
1644
-
1645
- * ``alkatraz`` (Alkatraz)
1646
- * ``alkatraz-05`` (Italy 1990, Italy 1990 - Winners Edition)
1647
- * ``alkatraz-09`` (Italy 1990, Italy 1990 - Winners Edition)
1648
- * ``alkatraz-0a`` (various games published by U.S. Gold)
1649
- * ``alkatraz-0b`` (Fast 'n' Furious)
1650
- * ``alkatraz2`` (Alkatraz 2)
1651
- * ``alternative`` (Fireman Sam, Huxley Pig)
1652
- * ``alternative2`` (Kentucky Racing)
1653
- * ``antirom`` (Boxe)
1654
- * ``bleepload`` (Firebird BleepLoad)
1655
- * ``boguslaw-juza`` (Euro Biznes)
1656
- * ``bulldog`` (Rigel's Revenge)
1657
- * ``crl`` (Ball Breaker, Ballbreaker II)
1658
- * ``crl2`` (Terrahawks)
1659
- * ``crl3`` (Oink)
1660
- * ``crl4`` (Federation)
1661
- * ``cybexlab`` (17.11.1989, Belegost, Starfox)
1662
- * ``d-and-h`` (Multi-Player Soccer Manager)
1663
- * ``delphine`` (Zakliaty zámok programátorov)
1664
- * ``design-design`` (various games published by Design Design Software)
1665
- * ``digital-integration`` (Digital Integration)
1666
- * ``dinaload`` (Dinaload)
1667
- * ``ernieware`` (The Evolution, Golem)
1668
- * ``gargoyle2`` (various games created or published by Gargoyle Games)
1669
- * ``gremlin`` (various games published by Gremlin Graphics)
1670
- * ``gremlin2`` (Super Cars)
1671
- * ``housenka`` (Housenka)
1672
- * ``microprose`` (F-15 Strike Eagle)
1673
- * ``microsphere`` (Back to Skool, Contact Sam Cruise, Skool Daze, Sky Ranger)
1674
- * ``micro-style`` (Xenophobe)
1675
- * ``mirrorsoft`` (Action Reflex)
1676
- * ``palas`` (Bad Night)
1677
- * ``paul-owens`` (Paul Owens Protection System)
1678
- * ``raxoft`` (Piskworks, Podraz 4)
1679
- * ``realtime`` (Starstrike II)
1680
- * ``rom`` (any loader whose sampling loop is the same as the ROM's)
1681
- * ``search-loader`` (Search Loader)
1682
- * ``silverbird`` (Olli & Lissa II: Halloween)
1683
- * ``software-projects`` (BC's Quest for Tires, Lode Runner)
1684
- * ``sparklers`` (Bargain Basement, Flunky)
1685
- * ``speedlock`` (Speedlock - all versions)
1686
- * ``suzy-soft`` (Big Trouble, Joe Banker, The Drinker)
1687
- * ``suzy-soft2`` (Western Girl)
1688
- * ``tiny`` (Il Cobra di Cristallo, Negy a Nyero, Phantomasa, and others)
1689
- * ``us-gold`` (Gauntlet II)
1690
- * ``weird-science`` (Flash Beer Trilogy, Ghost Castles, TV-Game)
1707
+ loader may reduce the loading time. To show the names of the available
1708
+ tape-sampling loop accelerators::
1709
+
1710
+ $ tap2sna.py -c help-accelerator
1691
1711
 
1692
1712
  .. _tap2sna-load:
1693
1713
 
@@ -1753,10 +1773,14 @@ configuration parameters are:
1753
1773
  replacement fields:
1754
1774
 
1755
1775
  * ``i`` - the current instruction
1776
+ * ``m[address]`` - the contents of a memory address
1756
1777
  * ``pc`` - the address of the current instruction (program counter)
1757
1778
  * ``r[X]`` - the 'X' register (see below)
1758
1779
  * ``t`` - the current timestamp
1759
1780
 
1781
+ When using the ``m`` (memory) replacement field, ``address`` must be either a
1782
+ decimal number, or a hexadecimal number prefixed by '$' or '0x'.
1783
+
1760
1784
  The register name ``X`` in ``r[X]`` must be one of the following::
1761
1785
 
1762
1786
  a b c d e f h l bc de hl
@@ -1790,6 +1814,9 @@ Configuration parameters may also be set on the command line by using the
1790
1814
  +---------+-------------------------------------------------------------------+
1791
1815
  | Version | Changes |
1792
1816
  +=========+===================================================================+
1817
+ | 9.3 | Added support for PZX files; added support for the ``m`` (memory) |
1818
+ | | replacement field in the ``TraceLine`` configuration parameter |
1819
+ +---------+-------------------------------------------------------------------+
1793
1820
  | 9.2 | Added support for TZX block type 0x15 (direct recording); added |
1794
1821
  | | the ``python`` simulated LOAD configuration parameter |
1795
1822
  +---------+-------------------------------------------------------------------+
@@ -1863,7 +1890,7 @@ Configuration parameters may also be set on the command line by using the
1863
1890
 
1864
1891
  tapinfo.py
1865
1892
  ----------
1866
- `tapinfo.py` shows information on the blocks in a TAP or TZX file. For
1893
+ `tapinfo.py` shows information on the blocks in a PZX, TAP or TZX file. For
1867
1894
  example::
1868
1895
 
1869
1896
  $ tapinfo.py game.tzx
@@ -1872,18 +1899,25 @@ To list the options supported by `tapinfo.py`, run it with no arguments::
1872
1899
 
1873
1900
  usage: tapinfo.py FILE
1874
1901
 
1875
- Show the blocks in a TAP or TZX file.
1902
+ Show the blocks in a PZX, TAP or TZX file.
1876
1903
 
1877
1904
  Options:
1878
1905
  -b N[,A], --basic N[,A]
1879
1906
  List the BASIC program in block N loaded at address A
1880
1907
  (default 23755).
1881
1908
  -d, --data Show the entire contents of header and data blocks.
1909
+ --tape-start BLOCK Start at this tape block number.
1910
+ --tape-stop BLOCK Stop at this tape block number.
1882
1911
  -V, --version Show SkoolKit version number and exit.
1883
1912
 
1884
1913
  +---------+-------------------------------------------------------------------+
1885
1914
  | Version | Changes |
1886
1915
  +=========+===================================================================+
1916
+ | 9.3 | Added support for PZX files; added the ``--tape-start`` and |
1917
+ | | ``--tape-stop`` options; shows info for TZX block types 0x18 (CSW |
1918
+ | | recording) and 0x2B (set signal level); recognises deprecated TZX |
1919
+ | | block types 0x16, 0x17,0x34 and 0x40 |
1920
+ +---------+-------------------------------------------------------------------+
1887
1921
  | 9.2 | Shows info for TZX block type 0x15 (direct recording) |
1888
1922
  +---------+-------------------------------------------------------------------+
1889
1923
  | 9.0 | Shows the LINE number (if present) for 'Program:' header blocks; |
@@ -1922,7 +1956,8 @@ To list the options supported by `trace.py`, run it with no arguments::
1922
1956
 
1923
1957
  Trace Z80 machine code execution. FILE may be a binary (raw memory) file, a
1924
1958
  SNA, SZX or Z80 snapshot, or '48', '128' or '+2' for no snapshot. If 'OUTFILE'
1925
- is given, an SZX or Z80 snapshot is written after execution has completed.
1959
+ is given, an SZX/Z80 snapshot or WAV file is written after execution has
1960
+ completed.
1926
1961
 
1927
1962
  Options:
1928
1963
  --audio Show audio delays.
@@ -1939,19 +1974,23 @@ To list the options supported by `trace.py`, run it with no arguments::
1939
1974
  -o ADDR, --org ADDR Specify the origin address of a binary (raw memory)
1940
1975
  file (default: 65536 - length).
1941
1976
  -p [p:]a[-b[-c]],[^+]v, --poke [p:]a[-b[-c]],[^+]v
1942
- POKE N,v in RAM bank p for N in {a, a+c, a+2c..., b}.
1943
- Prefix 'v' with '^' to perform an XOR operation, or
1944
- '+' to perform an ADD operation. This option may be
1945
- used multiple times.
1977
+ POKE N,v in RAM bank p for N in {a, a+c, a+2c..., b}
1978
+ before execution begins. Prefix 'v' with '^' to
1979
+ perform an XOR operation, or '+' to perform an ADD
1980
+ operation. This option may be used multiple times.
1946
1981
  --python Use the pure Python Z80 simulator.
1947
1982
  -r name=value, --reg name=value
1948
- Set the value of a register. Do '--reg help' for more
1949
- information. This option may be used multiple times.
1983
+ Set the value of a register before execution begins.
1984
+ Do '--reg help' for more information. This option may
1985
+ be used multiple times.
1950
1986
  --rom FILE Patch in a ROM at address 0 from this file.
1951
1987
  --show-config Show configuration parameter values.
1952
1988
  -s ADDR, --start ADDR
1953
1989
  Start execution at this address.
1954
1990
  -S ADDR, --stop ADDR Stop execution at this address.
1991
+ --state name=value Set a hardware state attribute before execution
1992
+ begins. Do '--state help' for more information. This
1993
+ option may be used multiple times.
1955
1994
  --stats Show stats after execution.
1956
1995
  -v, --verbose Show executed instructions. Repeat this option to show
1957
1996
  register values too.
@@ -1997,10 +2036,14 @@ The ``TraceLine*`` parameters are standard Python format strings that recognise
1997
2036
  the following replacement fields:
1998
2037
 
1999
2038
  * ``i`` - the current instruction
2039
+ * ``m[address]`` - the contents of a memory address
2000
2040
  * ``pc`` - the address of the current instruction (program counter)
2001
2041
  * ``r[X]`` - the 'X' register (see below)
2002
2042
  * ``t`` - the current timestamp (in T-states)
2003
2043
 
2044
+ When using the ``m`` (memory) replacement field, ``address`` must be either a
2045
+ decimal number, or a hexadecimal number prefixed by '$' or '0x'.
2046
+
2004
2047
  The register name ``X`` in ``r[X]`` must be one of the following::
2005
2048
 
2006
2049
  a b c d e f h l bc de hl
@@ -2027,6 +2070,11 @@ Configuration parameters may also be set on the command line by using the
2027
2070
  +---------+-------------------------------------------------------------------+
2028
2071
  | Version | Changes |
2029
2072
  +=========+===================================================================+
2073
+ | 9.3 | Added the ``--state`` option; added support for writing a WAV |
2074
+ | | file after execution has completed; added support for the ``m`` |
2075
+ | | (memory) replacement field in the ``TraceLine*`` configuration |
2076
+ | | parameters |
2077
+ +---------+-------------------------------------------------------------------+
2030
2078
  | 9.2 | Added the ``--python`` option; added support for +2 snapshots |
2031
2079
  +---------+-------------------------------------------------------------------+
2032
2080
  | 9.1 | The ``--poke`` option can modify specific RAM banks; added the |
@@ -111,13 +111,16 @@ API methods, in common with skoolkit.disassembler.Disassembler:
111
111
  :members: disassemble, defb_range, defm_range, defs_range, defw_range
112
112
  :noindex:
113
113
 
114
- The 3-element tuples returned by these methods should have the form
115
- ``(address, operation, bytes)``, where:
114
+ The *imaker* callable used by these methods must accept three positional
115
+ arguments:
116
116
 
117
- * ``address`` is the address of the instruction
118
- * ``operation`` is the operation (e.g. 'XOR A', 'DEFB 1')
119
- * ``bytes`` is a sequence of byte values for the instruction (e.g. ``(62, 0)``
120
- for 'LD A,0')
117
+ * ``address`` - the address of the instruction
118
+ * ``operation`` - the operation (e.g. 'XOR A', 'DEFB 1')
119
+ * ``data`` - a sequence of byte values for the instruction (e.g. (62, 0) for
120
+ 'LD A,0')
121
+
122
+ The *opcodes* list is defined by the ``Opcodes`` configuration parameter of
123
+ :ref:`sna2skool.py <sna2skool-conf>`.
121
124
 
122
125
  The *sublengths* argument of the :meth:`defb_range`, :meth:`defm_range`,
123
126
  :meth:`defs_range` and :meth:`defw_range` methods is a sequence of 2-element
@@ -136,6 +139,11 @@ If the first element of *sublengths* has a ``size`` value of 0, then the method
136
139
  should produce a list of statements with default sizes (as determined by
137
140
  `defb_size`, `defm_size` and `defw_size`), using the specified base.
138
141
 
142
+ .. versionchanged:: 9.3
143
+ Added the *imaker* and *opcodes* attributes to the disassembler
144
+ configuration object. API methods must now return objects created by
145
+ *imaker*.
146
+
139
147
  .. versionchanged:: 8.5
140
148
  Added the ability to disassemble an instruction that wraps around the 64K
141
149
  boundary, along with the *wrap* attribute on the disassembler configuration
@@ -6,22 +6,23 @@ bin2tap.py
6
6
 
7
7
  SYNOPSIS
8
8
  ========
9
- ``bin2tap.py`` [options] FILE [file.tap]
9
+ ``bin2tap.py`` [options] FILE [OUTFILE]
10
10
 
11
11
  DESCRIPTION
12
12
  ===========
13
13
  ``bin2tap.py`` converts a binary (raw memory) file or a SNA, SZX or Z80
14
- snapshot into a TAP file. FILE may be a regular file, or '-' to read a binary
15
- file from standard input.
14
+ snapshot into a PZX or TAP file. FILE may be a regular file, or '-' to read a
15
+ binary file from standard input. If OUTFILE is not given, a TAP file is
16
+ created.
16
17
 
17
18
  OPTIONS
18
19
  =======
19
20
  --7ffd `N`
20
- Add 128K RAM banks to the TAP file and write `N` to port 0x7ffd after they've
21
- loaded.
21
+ Add 128K RAM banks to the tape file and write `N` to port 0x7ffd after
22
+ they've loaded.
22
23
 
23
24
  --banks `N[,N...]`
24
- Add only these 128K RAM banks to the TAP file (default: 0,1,3,4,6,7).
25
+ Add only these 128K RAM banks to the tape file (default: 0,1,3,4,6,7).
25
26
 
26
27
  -b, --begin `BEGIN`
27
28
  Begin conversion at this address. The default begin address is the origin
@@ -55,8 +56,8 @@ OPTIONS
55
56
  must be a decimal number, or a hexadecimal number prefixed by '0x'.
56
57
 
57
58
  -S, --screen `FILE`
58
- Add a loading screen to the TAP file. `FILE` may be a snapshot or a 6912-byte
59
- SCR file.
59
+ Add a loading screen to the tape file. `FILE` may be a snapshot or a
60
+ 6912-byte SCR file.
60
61
 
61
62
  -V, --version
62
63
  Show the SkoolKit version number and exit.
@@ -82,7 +83,7 @@ Spectrum is 23952 (0x5D90).
82
83
 
83
84
  128K TAPES
84
85
  ==========
85
- To create a TAP file that loads a 128K game, use the ``--7ffd``, ``--begin``
86
+ To create a tape file that loads a 128K game, use the ``--7ffd``, ``--begin``
86
87
  and ``--clear`` options along with a 128K snapshot or a 128K binary file as
87
88
  input, where:
88
89
 
@@ -97,7 +98,7 @@ the number of RAM banks to load) is placed one above the CLEAR address. Use the
97
98
  ``--loader`` option to place it at an alternative address. The lowest usable
98
99
  address with the ``--clear`` option on a bare 128K Spectrum is 23977 (0x5DA9).
99
100
 
100
- By default, 128K RAM banks 0, 1, 3, 4, 6 and 7 are added to the TAP file. If
101
+ By default, 128K RAM banks 0, 1, 3, 4, 6 and 7 are added to the tape file. If
101
102
  one or more of these RAM banks are not required, use the ``--banks`` option to
102
103
  specify a smaller set of RAM banks to add. If none of these RAM banks are
103
104
  required, use ``,`` (a single comma) as the argument to the ``--banks`` option.
@@ -112,8 +113,8 @@ EXAMPLES
112
113
  |
113
114
  | ``bin2tap.py game.bin``
114
115
 
115
- 2. Convert ``game.bin`` into a TAP file that starts execution at 32768 when
116
+ 2. Convert ``game.bin`` into a PZX file that starts execution at 32768 when
116
117
  loaded:
117
118
 
118
119
  |
119
- | ``bin2tap.py -s 32768 game.bin``
120
+ | ``bin2tap.py -s 32768 game.bin game.pzx``