Changelog

5.1 (2016-01-09)

  • Added the @replace ASM directive (which replaces strings that match a regular expression in skool file annotations and ref file sections)
  • Added the #(), #EVAL, #FOR, #FOREACH, #IF, #MAP and #PEEK macros (which can be used to programmatically specify the parameters of any macro)
  • Added support for arithmetic expressions and skool macros in numeric macro parameters
  • Added the --bfix, --ofix and --ssub options to skool2bin.py (for parsing the skool file in @bfix, @ofix and @ssub mode)
  • Added the DefaultAnimationFormat parameter to the [ImageWriter] section (for specifying the default format for animated images)
  • The #R macro now converts an anchor that matches the entry address to the format specified by the AddressAnchor parameter (making it easier to link to the first instruction in an entry when using a custom anchor format)
  • skool2ctl.py now appends a terminal i directive if the skool file ends before 65536
  • skool2sft.py now preserves i blocks in the same way as code and data blocks (instead of verbatim), which enables their conversion to decimal or hexadecimal when restored from a skool file template
  • Fixed how the colours in flashing blank tiles are detected when writing an uncropped image file
  • Fixed how a 2-colour PNG image is created when it contains an attribute with equal INK and PAPER colours

5.0 (2015-10-04)

  • Added the skool2bin.py command (for converting a skool file into a binary file)
  • Added the tapinfo.py command (for showing information on the blocks in a TAP or TZX file)
  • Converted the HTML templates from XHTML 1.0 to HTML5
  • Added the footer template (for formatting the <footer> element of a page)
  • Added the @assemble ASM directive
  • Added the --set option to skool2asm.py (for setting ASM writer property values)
  • Added the RefFiles parameter to the [Config] section (for specifying extra ref files to use)
  • Added support to sna2skool.py for reading SpecEmu’s 64K code execution map files
  • Fixed how tap2sna.py does a standard load from a TZX file

4.5 (2015-07-04)

  • Added support to tap2sna.py for TZX block type 0x14 (pure data), for loading the first and last bytes of a tape block (which are usually, but not always, the flag and parity bytes), and for modifying memory with XOR and ADD operations
  • Added the --clear option to bin2tap.py (to use a CLEAR command in the BASIC loader and leave the stack pointer alone)
  • Added the --end option to bin2tap.py and the ability to convert SNA, SZX and Z80 snapshots
  • Added --start and --end options to skool2asm.py, skool2ctl.py and skool2sft.py
  • The --start and --end options of sna2skool.py now take effect when reading a control file or a skool file template
  • Added support to skool2ctl.py and skool2sft.py for preserving characters in DEFW statements (e.g. DEFW "!")
  • Added support for characters in DEFS statements (e.g. DEFS 10,"!")
  • Fixed how tap2sna.py compresses a RAM block that contains a single ED followed by five or more identical values (e.g. ED0101010101)
  • Fixed the erroneous replacement of DEFS operands with labels
  • Fixed how instruction-level comments that contain braces are restored from a control file
  • Fixed the handling of terminal compound sublengths on ‘S’ directives (e.g. S 30000,10,5:32)

4.4 (2015-05-23)

  • Added support to control files and skool file templates for specifying that numeric values in instruction operands be rendered as characters or in a specific base
  • Added support for @ssub block directives
  • Added the --end option to sna2skool.py (for specifying the address at which to stop disassembling)
  • Added the --ctl-hex-lower option to sna2skool.py (for writing addresses in lower case hexadecimal format in the generated control file)
  • Added the --hex-lower option to skool2ctl.py and skool2sft.py (for writing addresses in lower case hexadecimal format)
  • Fixed the parsing of DEFB and DEFM statements that contain semicolons
  • Fixed the base conversion of LD (HL),n instructions that contain extraneous whitespace (e.g. LD ( HL ),5)
  • Fixed the erroneous replacement of RST operands with labels in HTML output
  • Fixed the handling of uncompressed version 1 Z80 snapshots by sna2skool.py

4.3 (2015-02-14)

  • Added support for block start comments (which appear after the register section and before the first instruction in a routine or data block)
  • Added the CodeFiles parameter to the [Paths] section (for specifying the format of a disassembly page filename based on the address of the routine or data block)
  • Added the AddressAnchor parameter to the [Game] section (for specifying the format of the anchors attached to instructions on disassembly pages and entries on memory map pages)
  • The #FONT, #SCR and #UDG macros now have the ability to create frames for an animated image
  • Added the --line-width option to sna2skool.py (for specifying the maximum line width of the skool file)
  • Writing an ASM directive in a skool file can now be done by starting a line with @; writing an ASM directive by starting a line with ; @ is deprecated
  • Added the @ directive for declaring ASM directives in a control file; the old style of declaring ASM directives (; @directive:address[=value]) is deprecated
  • Fixed the flip_udgs() and rotate_udgs() methods on HtmlWriter so that they work with a UDG array that contains the same UDG in more than one place
  • Fixed the bug that prevents register descriptions from being HTML-escaped
  • Fixed the erroneous substitution of address labels in instructions that have 8-bit numeric operands

4.2 (2014-12-07)

  • Added support for control directive loops using the L directive
  • Added support to control files for preserving the location of @ignoreua directives
  • Each image macro now has the ability to specify alt text for the <img> element it produces
  • Added support for splitting register descriptions over multiple lines
  • skool2asm.py now warns about unconverted addresses in register descriptions, and the @ignoreua directive can be used to suppress such warnings
  • Added the table, table_cell, table_header_cell and table_row templates (for formatting tables produced by the #TABLE macro)
  • Added the list and list_item templates (for formatting lists produced by the #LIST macro)
  • Fixed the bug that prevents the expansion of skool macros in the intro text of a [Changelog:*] section

4.1.1 (2014-09-20)

  • Updated links to SkoolKit’s new home at skoolkit.ca
  • Added example control and ref files for Hungry Horace
  • Removed the Manic Miner disassembly from the SkoolKit distribution; it is now being developed separately here

4.1 (2014-08-30)

  • Added the --search option to skool2html.py (to add a directory to the resource search path)
  • Added the --writer option to skool2html.py (for specifying the HTML writer class to use)
  • Added the --writer option to skool2asm.py (for specifying the ASM writer class to use)
  • Added the LinkInternalOperands parameter to the [Game] section (for specifying whether to hyperlink instruction operands that refer to an address in the same entry)
  • Register sections in b, g, s, t, u and w blocks are now included in the output of skool2asm.py and skool2html.py
  • Fixed how the address ‘0’ is rendered in HTML output when converted to decimal or hexadecimal
  • Fixed the bug that creates a broken hyperlink in a DEFW statement or LD instruction that refers to the address of an ignored entry
  • Removed the Jet Set Willy disassembly from the SkoolKit distribution; it is now being developed separately here

4.0 (2014-05-25)

  • Every HTML page is built from templates defined in [Template:*] sections in the ref file
  • Added support for keyword arguments to the #FONT, #SCR, #UDG and #UDGARRAY macros
  • Added the mask parameter to the #UDG and #UDGARRAY macros (for specifying the type of mask to apply)
  • Added support for defining page headers in the [PageHeaders] section of the ref file
  • Added the --ref-file and --ref-sections options to skool2html.py (to show the entire default ref file or individual sections of it)
  • Added the EntryDescriptions parameter to the [MemoryMap:*] section (for specifying whether to display entry descriptions on a memory map page)
  • Added the LengthColumn parameter to the [MemoryMap:*] section (for specifying whether to display the ‘Length’ column on a memory map page)