# SkoolKit 5.x changelog

## 5.4 (2017-01-08)

- Added the sna2img.py command (for converting the screenshot in a SCR file or SNA/SZX/Z80 snapshot into a PNG or GIF file)

- Added the @equ ASM directive (which produces an EQU directive in the ASM output)

- The #REG macro now accepts an arbitrary text parameter (e.g. `#REG(hlh'l')`)

- When the #LINK macro links to an entry on a box page, the link text defaults to the title of the entry if left blank

- Added the `SectionType` parameter to the [Page:*] section (for specifying how to parse and render the ref file sections from which a box page is built)

- Added the `--asm-one-page` option to skool2html.py (for writing all routines and data blocks to a single page)

- Added the `--variables` option to snapinfo.py (for showing the contents of the variables area)

- snapinfo.py now shows special symbols for UDGs in a BASIC program (e.g. `{UDG-A}`)

- Improved how @end, @org, @replace, @set, @start and @writer directives are preserved and restored via a control file

- Added support for page-specific HTML subtemplates

- The #UDGARRAY macro now pads out the bottom row of an array with extra UDGs if necessary (to prevent the creation of a broken image file)

## 5.3 (2016-09-05)

- Dropped support for Python 3.2

- Added the snapinfo.py command (for showing information on the registers and RAM in a SNA, SZX or Z80 snapshot)

- Added the snapmod.py command (for modifying the registers and RAM in a 48K Z80 snapshot)

- Added the #INCLUDE macro (which expands to the contents of a ref file section)

- Added the ability to write the HTML disassembly to a single page (by using the `AsmSinglePageTemplate` parameter in the [Game] section and the AsmAllInOne and asm_entry templates)

- Added the `SectionPrefix` parameter to the [Page:*] section (for specifying the prefix of the names of ref file sections from which to build a box page)

- Added the `--screen` option to bin2tap.py (for adding a loading screen to the TAP file)

- Added the `--stack` and `--start` options to tap2sna.py (for specifying the stack and start addresses)

- Added support to the #REG macro for the F and F’ registers

- Improved how skool2asm.py scans annotations for addresses not converted to labels

- Fixed how a memory block that ends with a single ED byte is compressed in a Z80 snapshot

- Removed the Spectrum ROM disassembly from the SkoolKit distribution; it is now being developed separately here

## 5.2 (2016-05-02)

- Added the bin2sna.py command (for converting a binary file into a Z80 snapshot)

- Added the #N macro (which renders a numeric value in hexadecimal format when the `--hex` option is used with skool2asm.py or skool2html.py)

- Added the @rfix ASM directive (which makes an instruction substitution in `@rfix` mode)

- Added the `UDGFilename` parameter to the [Game] section (for specifying the format of the default filename for images created by the #UDG macro)

- bin2tap.py can now read a binary file from standard input

- skool2bin.py can now write to standard output (and so its output can be piped to bin2sna.py or bin2tap.py)

- When the #LINK macro links to an entry on a memory map page, the anchor is converted to the format specified by the `AddressAnchor` parameter

- Fixed how required integer macro parameters are handled when left blank (e.g. `#POKES30000,,8`)

## 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