Changelog
=========
10.2 (2026-11-07)
-----------------
* Dropped support for Python 3.10
* Improved error handling when running SkoolKit commands, expanding skool
macros, processing ASM directives, and parsing ref files
* Added a ```` element to the :ref:`t_Layout` HTML
template (to improve font sizes on small screens)
* Adjusted the default HTML theme to reduce the need for horizontal scrolling
on small screens
* Added support to :ref:`rzxplay.py ` for reading configuration
from `skoolkit.ini`
* Added the ``--ini`` and ``--show-config`` options to :ref:`rzxplay.py` (for
setting the value of a configuration parameter and for showing all
configuration parameter values)
* Added the ``Screen``, ``ScreenFps`` and ``ScreenScale`` configuration
parameters for :ref:`rzxplay.py ` (to specify whether and at
what frame rate and scale factor to display screen contents)
* Added support for negative ``ScreenFps`` values (for running
:ref:`rzxplay.py`, :ref:`tap2sna.py` or :ref:`trace.py` at maximum speed
while throttling screen updates to a specific rate)
* Added support to :ref:`rzxplay.py ` for configuring the format
of the trace log file via the ``TraceHeader``, ``TraceLine`` and
``TraceOperand`` configuration parameters
* Added the ``Screen`` configuration parameter for
:ref:`tap2sna.py ` (to specify whether to display screen
contents)
* Added the ``TraceHeader`` configuration parameter for
:ref:`tap2sna.py ` (to specify the header for a trace log file)
* Added support to :ref:`tap2sna.py` for writing a trace log to standard output
* Added the ``--analyse`` option to :ref:`tapinfo.py` (for showing an analysis
of the tape's tones, pulse sequences and data blocks)
* Added the ``--tape-skip`` option to :ref:`tapinfo.py` (for skipping one or
more blocks on a tape)
* The ``--map`` option of :ref:`trace.py` now updates an existing file instead
of replacing it
* Fixed how :ref:`PUSHS` and :ref:`POPS` copy and restore the RAM bank mapped
to 0xC000-0xFFFF in a 128K memory snapshot
* Fixed the bug that prevents :ref:`bin2tap.py` from setting the stack pointer
to 0
* Fixed how the ``--tape-stop`` option of :ref:`tap2sna.py` works with two
input tapes
* Fixed the bug that prevents :ref:`tap2sna.py` from performing RAM move
operations on 128K snapshots
* Fixed the bug that prevents the creation of an animated image with more than
255 frames
* Fixed how the :ref:`FRAMES` macro handles a frame appearing more than once
with varying ``delay``, ``x`` and ``y`` values
* Fixed the bug that prevents a :ref:`LINK` macro with blank link text from
linking to a ``ListItems`` or ``BulletPoints`` :ref:`box page `
entry
10.1 (2026-08-14)
-----------------
* Added the ``--screen`` option to :ref:`tap2sna.py` (to display screen
contents while running)
* Added the ``ScreenFps`` and ``ScreenScale`` configuration parameters for
:ref:`tap2sna.py ` (to specify the frame rate and scale factor
when displaying screen contents)
* Added the ``--volume`` option to :ref:`trace.py` (for setting the audio
volume when writing a WAV file)
* Added the ``vol`` parameter to the :ref:`AUDIO` macro (to set the audio
volume)
* Added the ``--ay-mode`` option to :ref:`trace.py` (for setting the AY stereo
mode when writing a WAV file)
* Added the ``aymode`` parameter to the :ref:`AUDIO` macro (to set the AY
stereo mode)
* Added the ``--ay-res`` option to :ref:`trace.py` (for setting the AY sampling
resolution when writing a WAV file)
* Added the ``ayres`` parameter to the :ref:`AUDIO` macro (to set the AY
sampling resolution)
* Added the ``--cmio`` option to :ref:`rzxplay.py` (to enable simulation of
memory and I/O contention and the MEMPTR register)
* Added support for multiple colours in the border area of the screen displayed
by :ref:`rzxplay.py` and :ref:`trace.py`
* Made the :ref:`AY audio writer ` a pluggable component
* Made the :ref:`screen ` a pluggable component
* Fixed how :ref:`trace.py` sets the frame duration when the input file
argument is '128' or '+2'
* Fixed how :ref:`rzxinfo.py` detects a signed RZX file and encrypted frames
* Fixed the bug in :ref:`sna2ctl.py` that enables the :ref:`rstHandler` when
the :ref:`comment generator ` is enabled
10.0 (2026-04-04)
-----------------
* Dropped support for Python 3.9
* Added the ``--ay`` option to :ref:`trace.py` (for capturing AY audio when
writing a WAV file)
* Added the ``ay`` parameter to the :ref:`AUDIO` macro (to set whether AY
audio is captured)
* Added the ``--beeper`` option to :ref:`trace.py` (for capturing beeper audio
as well when ``--ay`` is specified)
* Added the ``bpr`` parameter to the :ref:`AUDIO` macro (to set whether beeper
audio is captured along with AY audio)
* Added support for the MEMPTR register to CMIOSimulator and CCMIOSimulator
* Added the ``memptr`` parameter to the :ref:`SIM` macro (to set the MEMPTR
register)
* :ref:`snapinfo.py` now shows the MEMPTR register value in SZX snapshots
* Added support to :ref:`trace.py` for setting the MEMPTR register before
execution begins, for reading and writing MEMPTR in SZX snapshots, and for
tracing its value via the ``r[memptr]`` replacement field in the
``TraceLine*`` configuration parameters
* Added support to :ref:`tap2sna.py` for setting the MEMPTR register in SZX
snapshots, and for tracing its value via the ``r[memptr]`` replacement field
in the ``TraceLine`` configuration parameter
* Added support to :ref:`bin2sna.py` and :ref:`snapmod.py` for setting the
MEMPTR register in SZX snapshots
* Added the ``TraceHeader`` and ``TraceHeader2`` configuration parameters for
:ref:`trace.py ` (to specify headers to print before a trace)
* Added support to the :ref:`AUDIO` macro for keyword arguments
* Added support to :ref:`rzxplay.py` for ignoring any snapshots after the first
one (which is useful for playing some RZX files created by the Fuse emulator)
* Added a border area to the screen displayed by :ref:`rzxplay.py` and
:ref:`trace.py`
* Updated the comments generated for 'IN r,(C)' immediately after 'LD BC,$XXFE'
and 'IN A,($FE)' immediately after 'LD A,n' when a single half-row of the
keyboard is read
* Updated the default values of ``ContentionBegin``, ``ContentionEnd`` and
``InterruptDelay`` in the :ref:`ref-AudioWriter` section
* Added support for multiple values to the ``InterruptDelay`` parameter in the
:ref:`ref-AudioWriter` section
* Fixed the bug in CSimulator that restricts the ``timeout`` simulated load
configuration parameter to a maximum value of 1227 seconds
* Fixed how :ref:`tap2sna.py` handles zero-length pulses in the encodings of 0s
and 1s in a PZX DATA block
Older versions
--------------
.. toctree::
:maxdepth: 1
changelog9
changelog8
changelog7
changelog6
changelog5
changelog4
changelog3
changelog2
changelog1