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
<meta name="viewport" ... />element to the 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 rzxplay.py for reading configuration from skoolkit.ini
Added the
--iniand--show-configoptions to rzxplay.py (for setting the value of a configuration parameter and for showing all configuration parameter values)Added the
Screen,ScreenFpsandScreenScaleconfiguration parameters for rzxplay.py (to specify whether and at what frame rate and scale factor to display screen contents)Added support for negative
ScreenFpsvalues (for running rzxplay.py, tap2sna.py or trace.py at maximum speed while throttling screen updates to a specific rate)Added support to rzxplay.py for configuring the format of the trace log file via the
TraceHeader,TraceLineandTraceOperandconfiguration parametersAdded the
Screenconfiguration parameter for tap2sna.py (to specify whether to display screen contents)Added the
TraceHeaderconfiguration parameter for tap2sna.py (to specify the header for a trace log file)Added support to tap2sna.py for writing a trace log to standard output
Added the
--analyseoption to tapinfo.py (for showing an analysis of the tape’s tones, pulse sequences and data blocks)Added the
--tape-skipoption to tapinfo.py (for skipping one or more blocks on a tape)The
--mapoption of trace.py now updates an existing file instead of replacing itFixed how #PUSHS and #POPS copy and restore the RAM bank mapped to 0xC000-0xFFFF in a 128K memory snapshot
Fixed the bug that prevents bin2tap.py from setting the stack pointer to 0
Fixed how the
--tape-stopoption of tap2sna.py works with two input tapesFixed the bug that prevents 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 #FRAMES macro handles a frame appearing more than once with varying
delay,xandyvaluesFixed the bug that prevents a #LINK macro with blank link text from linking to a
ListItemsorBulletPointsbox page entry
10.1 (2026-08-14)¶
Added the
--screenoption to tap2sna.py (to display screen contents while running)Added the
ScreenFpsandScreenScaleconfiguration parameters for tap2sna.py (to specify the frame rate and scale factor when displaying screen contents)Added the
--volumeoption to trace.py (for setting the audio volume when writing a WAV file)Added the
volparameter to the #AUDIO macro (to set the audio volume)Added the
--ay-modeoption to trace.py (for setting the AY stereo mode when writing a WAV file)Added the
aymodeparameter to the #AUDIO macro (to set the AY stereo mode)Added the
--ay-resoption to trace.py (for setting the AY sampling resolution when writing a WAV file)Added the
ayresparameter to the #AUDIO macro (to set the AY sampling resolution)Added the
--cmiooption to 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 rzxplay.py and trace.py
Made the AY audio writer a pluggable component
Made the screen a pluggable component
Fixed how trace.py sets the frame duration when the input file argument is ‘128’ or ‘+2’
Fixed how rzxinfo.py detects a signed RZX file and encrypted frames
Fixed the bug in sna2ctl.py that enables the RST handler when the comment generator is enabled
10.0 (2026-04-04)¶
Dropped support for Python 3.9
Added the
--ayoption to trace.py (for capturing AY audio when writing a WAV file)Added the
ayparameter to the #AUDIO macro (to set whether AY audio is captured)Added the
--beeperoption to trace.py (for capturing beeper audio as well when--ayis specified)Added the
bprparameter to the #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
memptrparameter to the #SIM macro (to set the MEMPTR register)snapinfo.py now shows the MEMPTR register value in SZX snapshots
Added support to 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 theTraceLine*configuration parametersAdded support to tap2sna.py for setting the MEMPTR register in SZX snapshots, and for tracing its value via the
r[memptr]replacement field in theTraceLineconfiguration parameterAdded support to bin2sna.py and snapmod.py for setting the MEMPTR register in SZX snapshots
Added the
TraceHeaderandTraceHeader2configuration parameters for trace.py (to specify headers to print before a trace)Added support to the #AUDIO macro for keyword arguments
Added support to 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 rzxplay.py and 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,ContentionEndandInterruptDelayin the [AudioWriter] sectionAdded support for multiple values to the
InterruptDelayparameter in the [AudioWriter] sectionFixed the bug in CSimulator that restricts the
timeoutsimulated load configuration parameter to a maximum value of 1227 secondsFixed how tap2sna.py handles zero-length pulses in the encodings of 0s and 1s in a PZX DATA block