Skip to content

Releases: skoolkid/skoolkit

SkoolKit 9.4

05 Oct 12:07
Compare
Choose a tag to compare
  • 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 and PadRight configuration parameters)
  • Added the --screen option to trace.py (for displaying screen contents while running)
  • Added the ScreenFps and ScreenScale 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 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

10 Aug 12:27
Compare
Choose a tag to compare
  • 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 the TraceLine configuration parameter
  • Added support to trace.py for the m (memory) replacement field in the TraceLine* configuration parameters
  • Added 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 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 of trace.py from accepting hexadecimal values prefixed by ‘0x’

SkoolKit 9.2

11 May 12:24
Compare
Choose a tag to compare
  • 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 used
  • Fixed the contention pattern for the OUTI/OUTD/OTIR/OTDR instructions

SkoolKit 9.1

03 Feb 12:56
Compare
Choose a tag to compare
  • 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 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 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 65535
  • Fixed the bug that prevents an M directive from being repeated in a control file loop

SkoolKit 9.0

04 Nov 10:56
Compare
Choose a tag to compare
  • 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 the TraceLine configuration parameter
  • Added the antirom, ernieware and housenka tape-sampling loop accelerators
  • Statistics 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 loop
  • tapinfo.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 and A 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

17 Jun 10:32
Compare
Choose a tag to compare
  • Added the finish-tape simulated LOAD configuration parameter to tap2sna.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 to tap2sna.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 to tap2sna.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 and weird-science tape-sampling loop accelerators for use with tap2sna.py
  • Added the special auto and list tape-sampling loop accelerator names for use with the accelerator simulated LOAD configuration parameter of tap2sna.py, and the ability to specify multiple accelerators
  • Added support to bin2sna.py, snapmod.py and tap2sna.py for setting the issue2 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 to tap2sna.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 the TraceLine and TraceOperand configuration parameters
  • Added the --tape-analysis option to tap2sna.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

19 Feb 13:09
Compare
Choose a tag to compare
  • 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 to tap2sna.py (to set the value of a --sim-load configuration parameter: accelerator, fast-load, first-edge, pause, timeout, trace)
  • Added the --tape-name option to tap2sna.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 to tap2sna.py (to start or stop the tape at a specific block number)
  • Added the --tape-sum option to tap2sna.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 to trace.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 and tap2sna.py for setting the tstates 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 of tap2sna.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 of snapinfo.py from finding byte sequences below address 16384
  • Fixed the bug that prevents the --find-text option of snapinfo.py from finding text strings below address 16384

SkoolKit 8.8

19 Nov 13:41
Compare
Choose a tag to compare
  • Added the trace.py command (for tracing the execution of machine code in a 48K memory snapshot)
  • The --sim-load option of tap2sna.py now performs any call, move, poke and sysvars operations specified by the --ram option
  • Improved the performance of the --sim-load option of tap2sna.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

08 Oct 11:37
Compare
Choose a tag to compare
  • 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 to tap2sna.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 the RebuildAudio configuration parameter for skool2html.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 to sna2skool.py (to disassemble as DEFB statements instead of as code)
  • Added the Timings configuration parameter for sna2skool.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 from start by a multiple of step
  • 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

06 Nov 12:49
Compare
Choose a tag to compare
  • 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 of tap2sna.py for the call 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 and alpha 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)