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.
- {skoolkit-9.2/skoolkit.egg-info → skoolkit-9.3}/PKG-INFO +6 -5
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/asm.rst.txt +32 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/changelog.rst.txt +30 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/commands.rst.txt +129 -81
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/components.rst.txt +14 -6
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/bin2tap.py.rst.txt +13 -12
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/sna2skool.py.rst.txt +16 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/snapinfo.py.rst.txt +9 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/tap2sna.py.rst.txt +33 -68
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/tapinfo.py.rst.txt +7 -1
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/trace.py.rst.txt +34 -6
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/parsing.rst.txt +1 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/ref-files.rst.txt +7 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/whatis.rst.txt +6 -6
- {skoolkit-9.2 → skoolkit-9.3}/docs/_static/documentation_options.js +1 -1
- {skoolkit-9.2 → skoolkit-9.3}/docs/asm-templates.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/asm.html +64 -27
- {skoolkit-9.2 → skoolkit-9.3}/docs/assemblers.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/changelog.html +44 -11
- {skoolkit-9.2 → skoolkit-9.3}/docs/changelog1.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/changelog2.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/changelog3.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/changelog4.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/changelog5.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/changelog6.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/changelog7.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/changelog8.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/commands.html +201 -152
- {skoolkit-9.2 → skoolkit-9.3}/docs/components.html +24 -14
- {skoolkit-9.2 → skoolkit-9.3}/docs/control-files.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/diy.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/extending.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/genindex.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/html-templates.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/index.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/man/bin2sna.py.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/man/bin2tap.py.html +16 -15
- {skoolkit-9.2 → skoolkit-9.3}/docs/man/rzxinfo.py.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/man/rzxplay.py.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/man/skool2asm.py.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/man/skool2bin.py.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/man/skool2ctl.py.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/man/skool2html.py.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/man/sna2ctl.py.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/man/sna2img.py.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/man/sna2skool.py.html +53 -33
- {skoolkit-9.2 → skoolkit-9.3}/docs/man/snapinfo.py.html +12 -6
- {skoolkit-9.2 → skoolkit-9.3}/docs/man/snapmod.py.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/man/tap2sna.py.html +34 -71
- {skoolkit-9.2 → skoolkit-9.3}/docs/man/tapinfo.py.html +12 -4
- {skoolkit-9.2 → skoolkit-9.3}/docs/man/trace.py.html +41 -9
- {skoolkit-9.2 → skoolkit-9.3}/docs/migration.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/parsing.html +4 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/ref-files.html +13 -6
- {skoolkit-9.2 → skoolkit-9.3}/docs/search.html +3 -3
- skoolkit-9.3/docs/searchindex.js +1 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/skool-files.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/skool-macros.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/usage.html +3 -3
- {skoolkit-9.2 → skoolkit-9.3}/docs/whatis.html +9 -9
- {skoolkit-9.2 → skoolkit-9.3}/long_description.rst +5 -4
- {skoolkit-9.2 → skoolkit-9.3}/man/man1/bin2sna.py.1 +1 -1
- {skoolkit-9.2 → skoolkit-9.3}/man/man1/bin2tap.py.1 +15 -14
- {skoolkit-9.2 → skoolkit-9.3}/man/man1/rzxinfo.py.1 +1 -1
- {skoolkit-9.2 → skoolkit-9.3}/man/man1/rzxplay.py.1 +1 -1
- {skoolkit-9.2 → skoolkit-9.3}/man/man1/skool2asm.py.1 +1 -1
- {skoolkit-9.2 → skoolkit-9.3}/man/man1/skool2bin.py.1 +1 -1
- {skoolkit-9.2 → skoolkit-9.3}/man/man1/skool2ctl.py.1 +1 -1
- {skoolkit-9.2 → skoolkit-9.3}/man/man1/skool2html.py.1 +1 -1
- {skoolkit-9.2 → skoolkit-9.3}/man/man1/sna2ctl.py.1 +1 -1
- {skoolkit-9.2 → skoolkit-9.3}/man/man1/sna2img.py.1 +1 -1
- {skoolkit-9.2 → skoolkit-9.3}/man/man1/sna2skool.py.1 +25 -1
- {skoolkit-9.2 → skoolkit-9.3}/man/man1/snapinfo.py.1 +10 -4
- {skoolkit-9.2 → skoolkit-9.3}/man/man1/snapmod.py.1 +1 -1
- {skoolkit-9.2 → skoolkit-9.3}/man/man1/tap2sna.py.1 +35 -70
- {skoolkit-9.2 → skoolkit-9.3}/man/man1/tapinfo.py.1 +13 -3
- {skoolkit-9.2 → skoolkit-9.3}/man/man1/trace.py.1 +42 -7
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/__init__.py +4 -1
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/bin2tap.py +35 -32
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/config.py +2 -1
- skoolkit-9.3/skoolkit/disassembler.py +1136 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/loadsample.py +2 -2
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/loadtracer.py +96 -46
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/rzxplay.py +2 -5
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/simutils.py +3 -1
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/skool2bin.py +17 -8
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/skool2html.py +3 -2
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/skoolctl.py +8 -2
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/skoolhtml.py +5 -5
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/skoolmacro.py +4 -1
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/skoolparser.py +15 -6
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/skoolutils.py +8 -1
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/sna2skool.py +2 -2
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/snapinfo.py +30 -9
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/snapshot.py +4 -3
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/snaskool.py +20 -9
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/tap2sna.py +209 -376
- skoolkit-9.3/skoolkit/tape.py +787 -0
- skoolkit-9.3/skoolkit/tapinfo.py +142 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/trace.py +66 -25
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/traceutils.py +10 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/z80.py +280 -44
- {skoolkit-9.2 → skoolkit-9.3/skoolkit.egg-info}/PKG-INFO +6 -5
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit.egg-info/SOURCES.txt +2 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/skoolkittest.py +111 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_bin2tap.py +161 -180
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_ctlparser.py +15 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_disassembler.py +651 -54
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_skool2bin.py +19 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_skool2html.py +51 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_skoolasm.py +48 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_skoolctl.py +16 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_skoolhtml.py +150 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_skoolparser.py +36 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_sna2skool.py +2 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_snapinfo.py +263 -11
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_snaskool.py +255 -1
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_tap2sna.py +376 -31
- skoolkit-9.3/tests/test_tape.py +72 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_tapinfo.py +576 -14
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_trace.py +335 -5
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_z80.py +788 -0
- skoolkit-9.2/docs/searchindex.js +0 -1
- skoolkit-9.2/skoolkit/disassembler.py +0 -1092
- skoolkit-9.2/skoolkit/tapinfo.py +0 -552
- {skoolkit-9.2 → skoolkit-9.3}/COPYING +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/MANIFEST.in +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/bin2sna.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/bin2tap.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/c/csimulator.c +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/asm-templates.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/assemblers.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/changelog1.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/changelog2.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/changelog3.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/changelog4.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/changelog5.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/changelog6.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/changelog7.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/changelog8.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/control-files.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/diy.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/extending.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/html-templates.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/index.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/bin2sna.py.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/rzxinfo.py.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/rzxplay.py.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/skool2asm.py.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/skool2bin.py.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/skool2ctl.py.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/skool2html.py.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/sna2ctl.py.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/sna2img.py.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/man/snapmod.py.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/migration.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/skool-files.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/skool-macros.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_sources/usage.rst.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_static/_sphinx_javascript_frameworks_compat.js +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_static/basic.css +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_static/classic.css +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_static/custom.css +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_static/doctools.js +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_static/file.png +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_static/jquery.js +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_static/language_data.js +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_static/minus.png +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_static/plus.png +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_static/pygments.css +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_static/searchtools.js +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_static/sidebar.js +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_static/sphinx_highlight.js +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/docs/_static/underscore.js +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/examples/hungry_horace.ctl +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/examples/hungry_horace.ref +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/examples/hungry_horace.t2s +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/pyproject.toml +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/rzxinfo.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/rzxplay.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/setup.cfg +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/setup.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skool2asm.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skool2bin.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skool2ctl.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skool2html.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/audio.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/basic.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/bin2sna.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/cmiosimulator.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/components.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/ctlparser.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/defaults.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/graphics.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/image.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/kbtracer.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/opcodes.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/pagingtracer.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/pngwriter.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/refparser.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/resources/128-0.rom +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/resources/128-1.rom +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/resources/48.rom +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/resources/plus2-0.rom +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/resources/plus2-1.rom +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/resources/skoolkit-dark.css +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/resources/skoolkit-green.css +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/resources/skoolkit-plum.css +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/resources/skoolkit-wide.css +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/resources/skoolkit.css +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/rzxinfo.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/simtables.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/simulator.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/skool2asm.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/skool2ctl.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/skoolasm.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/sna2ctl.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/sna2img.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/snactl.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/snapmod.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit/textutils.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit.egg-info/dependency_links.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/skoolkit.egg-info/top_level.txt +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/sna2ctl.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/sna2img.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/sna2skool.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/snapinfo.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/snapmod.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/tap2sna.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/tapinfo.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/macrotest.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_audio.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_basic.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_bin2sna.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_cmiosimulator.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_graphics.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_image.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_kbtracer.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_refparser.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_rzxinfo.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_rzxplay.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_simulator.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_skool2asm.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_skool2ctl.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_skoolkit.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_skoolmacro.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_sna2ctl.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_sna2img.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_snapmod.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_snapshot.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_textutils.py +0 -0
- {skoolkit-9.2 → skoolkit-9.3}/tests/test_traceutils.py +0 -0
- {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.
|
|
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
|
|
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
|
|
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 [
|
|
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
|
|
103
|
-
file. FILE may be a regular file, or '-' to read a binary file from
|
|
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
|
|
108
|
-
0x7ffd after they've loaded.
|
|
109
|
-
--banks N[,N...] Add only these 128K RAM banks to the
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
1451
|
-
Z80 snapshot. INPUT may be the full URL to a remote zip archive or
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
1568
|
-
(``0``); fast loading
|
|
1569
|
-
|
|
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.
|
|
1643
|
-
loop accelerators
|
|
1644
|
-
|
|
1645
|
-
|
|
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
|
|
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
|
|
1944
|
-
'+' to perform an ADD
|
|
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
|
|
1949
|
-
information. This option may
|
|
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
|
|
115
|
-
|
|
114
|
+
The *imaker* callable used by these methods must accept three positional
|
|
115
|
+
arguments:
|
|
116
116
|
|
|
117
|
-
* ``address``
|
|
118
|
-
* ``operation``
|
|
119
|
-
* ``
|
|
120
|
-
|
|
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 [
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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``
|