Releases: skoolkid/skoolkit
Releases · skoolkid/skoolkit
SkoolKit 9.4
- Added support to
skool2bin.py
for reading configuration from skoolkit.ini - Added the
--ini
and--show-config
options toskool2bin.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 thePadLeft
andPadRight
configuration parameters) - Added the
--screen
option totrace.py
(for displaying screen contents while running) - Added the
ScreenFps
andScreenScale
configuration parameters fortrace.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 fortrace.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 thePOKEname
special variable - Added 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
SkoolKit 9.3
- Added support to
tapinfo.py
andtap2sna.py
for reading PZX files - Added support to
bin2tap.py
for writing PZX files - Added support to
tap2sna.py
for them
(memory) replacement field in theTraceLine
configuration parameter - Added support to
trace.py
for them
(memory) replacement field in theTraceLine*
configuration parameters - Added the
--state
option totrace.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 tosna2skool.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 totapinfo.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 ofsnapinfo.py
now search all RAM banks in a 128K snapshot by default - Added support for path ID replacement fields in the
destDir
parameter of items in the[Resources]
section - Fixed the bug that prevents the
--reg
option oftrace.py
from accepting hexadecimal values prefixed by ‘0x’
SkoolKit 9.2
- 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 byrzxplay.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 totap2sna.py
(for forcing usage of the pure Python Z80 simulator even if the C version is available) - Added the
--python
option totrace.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 used - Fixed the contention pattern for the OUTI/OUTD/OTIR/OTDR instructions
SkoolKit 9.1
- 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
andtrace.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 toskool2bin.py
(for processing@bank
directives and writing RAM banks 0-7 to a 128K file) - Added the
cmio
simulated LOAD configuration parameter totap2sna.py
(to specify whether to simulate memory and I/O contention) - Added the
--cmio
option totrace.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 optional - Added 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
andtrace.py
log timestamps when an interrupt occurs - Fixed how interrupts are accepted when
tap2sna.py
andtrace.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 ofsnapinfo.py
fail when the value of PROG is 65535 - Fixed the bug that prevents an
M
directive from being repeated in a control file loop
SkoolKit 9.0
- 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 totap2sna.py
(to specify whether to simulate a 48K or a 128K Spectrum) - Added the
load
simulated LOAD configuration parameter totap2sna.py
(to specify an alternative command line to use to load the tape) - Added the
polarity
simulated LOAD configuration parameter totap2sna.py
(to specify the EAR bit reading produced by the first pulse on the tape) - Added the
in-flags
simulated LOAD configuration parameter totap2sna.py
(to specify how to handle 'IN' instructions) - The output snapshot argument of
tap2sna.py
is now optional - Added the
DefaultSnapshotFormat
configuration parameter fortap2sna.py
(to specify the default output snapshot format) - Added support to
tap2sna.py
for register pairs (r[bc]
,r[de]
etc.) in theTraceLine
configuration parameter - Added the
antirom
,ernieware
andhousenka
tape-sampling loop accelerators - Statistics for 'DEC A' tape-sampling delay loops are now shown by
tap2sna.py
whenaccelerator=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 totrace.py
(for setting the value of a configuration parameter and for showing all configuration parameter values) - Added the
--no-interrupts
option totrace.py
(to prevent the execution of interrupt routines, which are now executed by default) - Added support to
bin2sna.py
,tap2sna.py
andtrace.py
for writing SZX snapshots - Added support to
bin2sna.py
andtap2sna.py
for setting thefe
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 loop tapinfo.py
now shows the LINE number (if present) for 'Program:' header blocks, and renders BASIC tokens in header block namessnapinfo.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 2 - Fixed the bug that prevents
tap2sna.py
from loading a tape that has a hash character (#
) in its filename
SkoolKit 8.10
- Added the
finish-tape
simulated LOAD configuration parameter totap2sna.py
(to specify whether to finish the tape before stopping the simulation at the given start address) - Added the
contended-in
simulated LOAD configuration parameter totap2sna.py
(to specify whether to interpret 'IN A,($FE)' instructions in the address range $4000-$7FFF as reading the tape) - Added the
accelerate-dec-a
simulated LOAD configuration parameter totap2sna.py
(to specify whether to accelerate 'DEC A: JR NZ,$-1' or 'DEC A: JP NZ,$-1' delay loops) - Added the
alkatraz-05
,alkatraz-09
,alkatraz-0a
,alkatraz-0b
,alternative
,alternative2
,boguslaw-juza
,bulldog
,crl
,crl2
,crl3
,crl4
,cybexlab
,d-and-h
,delphine
,design-design
,gargoyle2
,gremlin2
,microprose
,micro-style
,mirrorsoft
,palas
,raxoft
,realtime
,silverbird
,software-projects
,sparklers
,suzy-soft
,suzy-soft2
,tiny
,us-gold
andweird-science
tape-sampling loop accelerators for use withtap2sna.py
- Added the special
auto
andlist
tape-sampling loop accelerator names for use with theaccelerator
simulated LOAD configuration parameter oftap2sna.py
, and the ability to specify multiple accelerators - Added support to
bin2sna.py
,snapmod.py
andtap2sna.py
for setting theissue2
hardware state attribute (to enable or disable issue 2 emulation) - Added support to
tap2sna.py
for loading tapes that end with a pulse sequence instead of data - Added support to
tap2sna.py
for reading configuration from skoolkit.ini - Added the
--ini
and--show-config
options totap2sna.py
(for setting the value of a configuration parameter and for showing all configuration parameter values) - Added support to
tap2sna.py
for configuring the format of a simulated LOAD trace log file via theTraceLine
andTraceOperand
configuration parameters - Added the
--tape-analysis
option totap2sna.py
(for showing an analysis of the tape's tones, pulse sequences and data blocks) snapinfo.py
now shows the value of the T-states counter and the issue 2 emulation flag in SZX and Z80 snapshots- Fixed the bug that prevents
snapinfo.py
from displaying the value of a floating-point number in a BASIC line when the accompanying numeric string is a single decimal point (.
) - Fixed how the value of the R register is set in a Z80 snapshot when bit 7 is reset
- Fixed how tape-sampling loop accelerators affect the carry flag after at least one pass through the loop
SkoolKit 8.9
- Added support to
tap2sna.py
for TZX loops (block types 0x24 and 0x25), pauses (block types 0x10, 0x11, 0x14 and 0x20), and unused bits in data blocks (block types 0x11 and 0x14) tap2sna.py
now accelerates the simulation of tape-sampling loops in loading routines, and also simulates the execution of interrupt routines when interrupts are enabled- Added the
--sim-load-config
option totap2sna.py
(to set the value of a--sim-load
configuration parameter:accelerator
,fast-load
,first-edge
,pause
,timeout
,trace
) - Added the
--tape-name
option totap2sna.py
(to specify the name of a TAP/TZX file in a zip archive, in case there is more than one) - Added the
--tape-start
and--tape-stop
options totap2sna.py
(to start or stop the tape at a specific block number) - Added the
--tape-sum
option totap2sna.py
(to specify the MD5 checksum of the TAP/TZX file) - Added support to
tap2sna.py
for quoted arguments in an arguments file - Added the
--interrupts
option totrace.py
(to enable the execution of interrupt routines) trace.py
now reads and writes the T-states counter in Z80 snapshots and reads the T-states counter in SZX snapshots- Added support to
bin2sna.py
,snapmod.py
andtap2sna.py
for setting thetstates
hardware attribute (i.e. the T-states counter in Z80 snapshots) tapinfo.py
now shows full info for TZX block types 0x10 (standard speed data) and 0x11 (turbo speed data)- Fixed how the Z80 instruction set simulator updates the A and R registers in the ‘LD A,R’ and ‘LD R,A’ instructions
- Fixed how the Z80 instruction set simulator handles a CALL instruction that overwrites its own address operand
- Fixed how a Z80 snapshot memory block that ends with a single 0xED byte is decompressed
- Fixed how the
--sim-load
option oftap2sna.py
transitions from a tape block that ends with data to the next block when there is no pause between them - Fixed the bug that prevents the
--find
option ofsnapinfo.py
from finding byte sequences below address 16384 - Fixed the bug that prevents the
--find-text
option ofsnapinfo.py
from finding text strings below address 16384
SkoolKit 8.8
- Added the
trace.py
command (for tracing the execution of machine code in a 48K memory snapshot) - The
--sim-load
option oftap2sna.py
now performs anycall
,move
,poke
andsysvars
operations specified by the--ram
option - Improved the performance of the
--sim-load
option oftap2sna.py
- Improved the performance of the
#SIM
macro - Improved the performance of the
#AUDIO
and#TSTATES
macros when they execute instructions in a simulator - Removed the
MaxAmplitude
parameter from the[AudioWriter]
section
SkoolKit 8.7
- Dropped support for Python 3.6
- Added the
#SIM
macro (for simulating the execution of machine code in the internal memory snapshot constructed from the contents of the skool file) - Added the
#AUDIO
macro (for creating HTML5<audio>
elements, and optionally creating audio files in WAV format) - Added the
#TSTATES
macro (which expands to the time taken, in T-states, to execute one or more instructions) - Added the
--sim-load
option totap2sna.py
(to simulate a 48K ZX Spectrum running LOAD "") - Added the
@rom
directive (for inserting a copy of the 48K ZX Spectrum ROM into the internal memory snapshot constructed from the contents of the skool file) - Added the
AudioPath
parameter to the[Paths]
section (for specifying where the#AUDIO
macro should look for or create audio files by default) - Added the
audio
template (for formatting the<audio>
element produced by the#AUDIO
macro) - Added the
[AudioWriter]
section (for configuring audio files created by the#AUDIO
macro) - Added the
--rebuild-audio
option to and theRebuildAudio
configuration parameter forskool2html.py
(to overwrite existing audio files) - Added the
AudioFormats
parameter to the[Game]
section (for specifying the alternative audio file formats that the#AUDIO
macro should look for before creating a WAV file) - Added the
--defb
option tosna2skool.py
(to disassemble as DEFB statements instead of as code) - Added the
Timings
configuration parameter forsna2skool.py
(for showing instruction timings in the comment fields) - Added the
flags
parameter to the#FOR
macro (for affixing commas to and replacing variable names in each separator) - Added support to the 'M' directive for applying its comment to each instruction in its range
- When
tap2sna.py
ignores a headerless block because no--ram load
options have been specified, it now prints a warning - Amended the
register
ASM template so that it can handle empty register names - Fixed the bug where the
stop
value of the#FOR
macro is used even when it does not differ fromstart
by a multiple ofstep
- Fixed the bug where an 'M' directive with an explicit length overrides the sublengths of an earlier sub-block directive at the same address
SkoolKit 8.6
- Added the
#STR
macro (for retrieving the text string at a given address in the memory snapshot) - Added the
#WHILE
macro (for repeatedly expanding macros until a conditional expression becomes false) - Added the
#UDGS
macro (as an alternative to the#UDGARRAY
macro for creating an image of a rectangular array of UDGs) - Added support to the
#DEF
macro for using replacement fields to represent the defined macro’s argument values, and for stripping leading and trailing whitespace from the defined macro’s output - Added support to the
#LET
macro for defining dictionary variables - Added support to the
--ram
option oftap2sna.py
for thecall
operation (for calling a Python function to perform arbitrary manipulation of the memory snapshot) - Added the flags parameter to the
#CHR
macro (to produce a character in the UTF-8 encoding in HTML mode, and to map character codes 94, 96 and 127 to ‘↑’, ‘£’ and ‘©’) - Added the
Expand
parameter to the[Config]
section (for specifying skool macros to be expanded during HTML writer initialisation) - Added support to the
#INCLUDE
macro for combining the contents of multiple ref file sections - Added the
tindex
andalpha
parameters to the#COPY
macro (for specifying the transparent colour and its alpha value in the new frame) - Fixed the bug where macros inside a
#LIST
or#TABLE
macro are expanded twice in HTML mode (which makes#RAW
ineffective)