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)