Changelog¶
9.4 (2024-10-05)¶
Added support to skool2bin.py for reading configuration from skoolkit.ini
Added the
--ini
and--show-config
options to skool2bin.py (for setting the value of a configuration parameter and for showing all configuration parameter values)Added support to skool2bin.py for padding the output with zeroes (as specified by the
PadLeft
andPadRight
configuration parameters)Added the
--screen
option to trace.py (for displaying screen contents while running)Added the
ScreenFps
andScreenScale
configuration parameters for trace.py (to specify the frame rate and scale factor when displaying screen contents)Added support to trace.py for writing a PNG file after code execution has completed
Added the
PNGScale
configuration parameter for trace.py (to specify the scale factor of the PNG image)Added support to trace.py for multiple output file arguments
snapinfo.py now shows AY register values in 128K SZX and Z80 snapshots and the last value written to port $FE in SZX snapshots
Added support to the #FOREACH macro for the
POKEname
special variableAdded support to the #LET macro for setting individual key-value pairs in dictionary variables
Added the
Download
parameter to the [Game] section (for specifying a download message/link to appear in the footer of every page)Added the
LinkInternalOperandsMinDistance
parameter to the [Game] section (for avoiding hyperlinks to nearby instructions)Fixed how ADC and SBC instructions affect the half-carry flag
Fixed how ‘BIT n,(IX/Y+d)’ affects bits 3 and 5 of the flags in the C version of the Z80 simulator
Fixed how IX/IY offset addresses are calculated in the C version of the Z80 simulator
9.3 (2024-08-10)¶
Added support to tapinfo.py and tap2sna.py for reading PZX files
Added support to bin2tap.py for writing PZX files
Added support to tap2sna.py for the
m
(memory) replacement field in theTraceLine
configuration parameterAdded support to trace.py for the
m
(memory) replacement field in theTraceLine*
configuration parametersAdded the
--state
option to trace.py (for setting hardware state attributes before code execution begins)Added support to trace.py for writing a WAV file after code execution has completed
Added the
Opcodes
configuration parameter to sna2skool.py (for specifying additional opcode sequences to disassemble)Added the @bytes directive (for specifying the byte values to which an instruction should assemble)
Added the
--tape-start
and--tape-stop
options to tapinfo.py (for specifying the block numbers at which to start or stop showing info)tapinfo.py now shows info for TZX block types 0x18 (CSW recording) and 0x2B (set signal level), and also recognises the deprecated TZX block types 0x16, 0x17, 0x34 and 0x40
The
--find
,--find-text
and--find-tile
options of snapinfo.py now search all RAM banks in a 128K snapshot by defaultAdded support for path ID replacement fields in the
destDir
parameter of items in the [Resources] sectionFixed the bug that prevents the
--reg
option of trace.py from accepting hexadecimal values prefixed by ‘0x’
9.2 (2024-05-11)¶
Added a Z80 instruction set simulator implemented in C (as a faster alternative to the pure Python Z80 simulator)
Added the rzxplay.py command (for playing an RZX file)
Added the rzxinfo.py command (for showing the blocks in or extracting the snapshots from an RZX file)
Added support to sna2ctl.py for reading code execution maps produced by rzxplay.py
Added support to tap2sna.py for TZX block type 0x15 (direct recording)
tapinfo.py now shows info for TZX block type 0x15 (direct recording)
Added support to trace.py for executing machine code in +2 snapshots
Added the
python
simulated LOAD configuration parameter to tap2sna.py (for forcing usage of the pure Python Z80 simulator even if the C version is available)Added the
--python
option to trace.py (for forcing usage of the pure Python Z80 simulator even if the C version is available)Fixed the lazy evaluation bug that can make the #FONT, #SCR and #UDG macros create frames with incorrect graphic content
Fixed the bug that can make trace.py stop too soon when the
--max-tstates
option is usedFixed the contention pattern for the OUTI/OUTD/OTIR/OTDR instructions
9.1 (2024-02-03)¶
Added support to snapmod.py for modifying SZX snapshots and 128K snapshots
Added support to bin2sna.py for writing 128K snapshots (by using the
--page
and--bank
options, or by providing a 128K input file)Added support to bin2tap.py for writing 128K TAP files (by using the
--7ffd
,--banks
and--loader
options)Added support to bin2sna.py, snapmod.py, tap2sna.py and trace.py for modifying 128K RAM banks (via the
--move
,--poke
,--ram move
and--ram poke
options)Added the #BANK macro (for switching the RAM bank that is mapped to 49152-65535)
Added the @bank directive (for specifying the RAM bank that is mapped to 49152-65535, and for populating a RAM bank from the contents of another skool file)
Added the
--banks
option to skool2bin.py (for processing @bank directives and writing RAM banks 0-7 to a 128K file)Added the
cmio
simulated LOAD configuration parameter to tap2sna.py (to specify whether to simulate memory and I/O contention)Added the
--cmio
option to trace.py (to enable simulation of memory and I/O contention)Added the
cmio
parameter to the #AUDIO, #SIM and #TSTATES macros (to specify whether to simulate memory and I/O contention)Added the
execint
parameter to the #AUDIO, #SIM and #TSTATES macros (to specify whether to simulate the execution of interrupt routines)Added the
tstates
parameter to the #SIM macro (to set the value of the simulator’s clock)Added the
iff
parameter to the #SIM macro (to set whether interrupts are enabled)Added the
im
parameter to the #SIM macro (to set the interrupt mode)Made the
stop
parameter of the #SIM macro optionalAdded support to the #AUDIO, #SIM and #TSTATES macros for executing code in a 128K memory snapshot
Fixed how trace.py handles the value of the SP register in a 128K SNA file
Fixed how tap2sna.py and trace.py log timestamps when an interrupt occurs
Fixed how interrupts are accepted when tap2sna.py and trace.py execute code in a simulator
Fixed how the Z80 instruction set simulator updates bit 2 of the flags register when executing an ‘LD A,I’ or ‘LD A,R’ instruction just before an interrupt is accepted
Fixed the bug that makes the
--basic
option of snapinfo.py fail when the value of PROG is 65535Fixed the bug that prevents an M directive from being repeated in a control file loop
9.0 (2023-11-04)¶
Dropped support for Python 3.7
tap2sna.py now performs a simulated LOAD by default, and will also overwrite an existing snapshot by default
Added the
machine
simulated LOAD configuration parameter to tap2sna.py (to specify whether to simulate a 48K or a 128K Spectrum)Added the
load
simulated LOAD configuration parameter to tap2sna.py (to specify an alternative command line to use to load the tape)Added the
polarity
simulated LOAD configuration parameter to tap2sna.py (to specify the EAR bit reading produced by the first pulse on the tape)Added the
in-flags
simulated LOAD configuration parameter to tap2sna.py (to specify how to handle ‘IN’ instructions)The output snapshot argument of tap2sna.py is now optional
Added the
DefaultSnapshotFormat
configuration parameter for tap2sna.py (to specify the default output snapshot format)Added support to tap2sna.py for register pairs (
r[bc]
,r[de]
etc.) in theTraceLine
configuration parameterAdded the
antirom
,ernieware
andhousenka
tape-sampling loop acceleratorsStatistics for ‘DEC A’ tape-sampling delay loops are now shown by tap2sna.py when
accelerator=list
Added support to trace.py for executing machine code in 128K snapshots
Added support to trace.py for reading configuration from skoolkit.ini
Added the
--ini
and--show-config
options to trace.py (for setting the value of a configuration parameter and for showing all configuration parameter values)Added the
--no-interrupts
option to trace.py (to prevent the execution of interrupt routines, which are now executed by default)Added support to bin2sna.py, tap2sna.py and trace.py for writing SZX snapshots
Added support to bin2sna.py and tap2sna.py for setting the
fe
hardware state attribute (i.e. the last value written to port 0xFE in SZX snapshots)Added support to the #AUDIO macro for passing delays through a moving average filter (which can produce higher quality audio, especially for multi-channel tunes)
Added support to control directive loops for avoiding repetition of an
N
directive at the start of a looptapinfo.py now shows the LINE number (if present) for ‘Program:’ header blocks, and renders BASIC tokens in header block names
snapinfo.py now shows the current AY register in 128K SZX and Z80 snapshots
Changed the default value of
H
andA
for the @assemble directive to 2Fixed the bug that prevents tap2sna.py from loading a tape that has a hash character (
#
) in its filename