# SkoolKit 6.x changelog

## 6.4 (2018-03-31)

- Added the @if directive (for conditionally processing other ASM directives)

- Added the #RAW macro (which prevents any macros or macro-like tokens in its sole string argument from being expanded)

- Added the `--var` option to skool2asm.py and skool2html.py (for defining a variable that can be used by the @if directive and the #IF and #MAP macros)

- The `asm` replacement field available to the #IF and #MAP macros now indicates the exact ASM mode: 1 (@isub mode), 2 (@ssub mode), 3 (@rsub mode), or 0 (none)

- The #IF and #MAP macros can now use the `fix` replacement field, which indicates the fix mode: 1 (@ofix mode), 2 (@bfix mode), 3 (@rfix mode), or 0 (none)

- The @isub, @ssub, @rsub, @ofix, @bfix and @rfix directives can replace comments as well as instructions

- Added the `entry` identifier to the footer template when it is part of a disassembly page

- Added `path` to the `SkoolKit` dictionary in HTML templates

- In ASM mode, a #LIST or #TABLE macro can now be used in an instruction-level comment and as a parameter of another macro

- In ASM mode, the #LIST macro produces unindented items when the bullet character is an empty string, and the bullet character can be specified by the `bullet` parameter

- Commas that appear between parentheses are retained when a sequence of string parameters is split, making it easier to nest macros (e.g. `#FOR0,9(n,#IF(n%2)(Y,N))`)

## 6.3 (2018-02-19)

- Added the @defb, @defs and @defw directives (for inserting byte values and word values into the memory snapshot)

- Added the @remote directive (for creating a remote entry)

- Added the `--poke` option to bin2sna.py (for performing POKE operations on the snapshot)

- Added the `--user-agent` option to tap2sna.py (for setting the User-Agent header used in an HTTP request)

- Added support to the [Resources] section for specifying files using wildcard characters (`*`, `?` and `[]`)

- Added the `ImagePath` parameter to the [Paths] section (for specifying the base directory in which to place images) and the ability to define one image path ID in terms of another

- Added support for image path ID replacement fields in the `fname` parameter of the image macros (e.g. `#SCR2({UDGImagePath}/scr)`)

- The @assemble directive can specify what to assemble in HTML mode and ASM mode separately

- By default in ASM mode, DEFB/DEFM/DEFS/DEFW statements are no longer converted into byte values for the purpose of populating the memory snapshot

- The `address` parameter of the @org directive is now optional and defaults to the address of the next instruction

- The `LABEL` parameter of the @label directive may be left blank to prevent the next instruction from having a label automatically generated

- Added the `location` identifier to the asm_instruction template

- Added support for parsing block-level comments that are not left-padded by a space

- Fixed how an opening brace at the end of a line or a closing brace at the beginning of a line is handled in an instruction-level comment

- Fixed the bug in skool2ctl.py that prevents an @ignoreua directive on a block end comment from being preserved correctly

- Fixed sna2skool.py so that it can generate a control file for a snapshot whose final byte (at 65535) is 24 or 237

## 6.2 (2018-01-01)

- Added the `--reg` option to bin2sna.py (for setting the value of a register)

- Added the `--state` option to bin2sna.py (for setting the value of a hardware state attribute)

- sna2img.py can now read a binary (raw memory) file when the `--binary` option is used, and with a specific origin address when the `--org` option is used

- Added the `Includes` parameter to the [MemoryMap:*] section (for specifying addresses of entries to include on the memory map page in addition to those specified by the `EntryTypes` parameter)

- The SkoolKit command options now accept a hexadecimal integer prefixed by ‘0x’ wherever an address, byte, length, step, offset or range limit value is expected

- Added the `hex` parameter to the #N macro (for rendering a value in hexadecimal format unless the `--decimal` option is used with skool2asm.py or skool2html.py)

- Added the `--show-config` option to skool2asm.py, skool2html.py and sna2skool.py (for showing configuration parameter values)

- Added support for substituting labels in instruction operands and DEFB/DEFM/DEFW statements that contain multiple addresses (e.g. `LD BC,30000+40000%256`), or where the address is the second or later term in an expression (e.g. `DEFW 1+30000`)

- The @keep directive can now specify the values to keep, and is applied to instructions that have been replaced by an @isub, @ssub or @rsub directive

- The `@nolabel` directive is now processed in HTML mode

## 6.1 (2017-09-03)

- Added support for converting the base of every numerical term in an instruction operand or DEFB/DEFM/DEFS/DEFW statement that contains two or more (e.g. `LD A,32768/256` to `LD A,$8000/$100`)

- Added support for assembling instructions and DEFB/DEFM/DEFS/DEFW statements whose operands contain arithmetic expressions (e.g. `DEFM "H","i"+$80`)

- Added support to skool2asm.py, skool2html.py and sna2skool.py for reading configuration from a file named skoolkit.ini, if present

- Added the `--ini` option to skool2asm.py, skool2html.py and sna2skool.py (for setting the value of a configuration parameter)

- sna2img.py can now read skool files, in either the default mode, or `@bfix` mode by using the `--bfix` option

- Added the `--move` option to sna2img.py (for copying the contents of a block of RAM to another location)

- Improved how skool2asm.py formats a comment that covers two or more instructions: now the comment is aligned to the widest instruction, and even blank lines are prefixed by a semicolon

- Improved how the #R macro renders the address of an unavailable instruction (an instruction outside the range of the current disassembly, or in another disassembly) in ASM mode

- Removed the indent from EQU directives in ASM output (for compatibility with SjASMPlus)

- Fixed the bug that prevents the expansion of a macro whose numeric parameters contain a ‘<’, ‘>’ or ‘&’ character

- Fixed how labels are substituted for addresses in DEFB/DEFM/DEFW statements

- Fixed skool2asm.py so that it processes `@ssub` directives when `--fixes 3` is specified

- Fixed the styling of entry descriptions for ‘t’ blocks on a memory map page

## 6.0 (2017-05-06)

- Dropped support for Python 2.7 and 3.3

- Added the `--expand` option to sna2img.py (for expanding a #FONT, #SCR, #UDG or #UDGARRAY macro)

- Added the `--basic` option to tapinfo.py (for listing the BASIC program in a tape block)

- Added the `--find-tile` option to snapinfo.py (for searching for the graphic data of a tile currently on screen)

- Added the `--word` option to snapinfo.py (for showing the words at a range of addresses)

- Added support to the `--find` option of snapinfo.py for specifying a range of distances between byte values (e.g. `--find 1,2,3-1-10`)

- The `--peek` option of snapinfo.py now shows UDGs and BASIC tokens

- Added support for replacement fields (such as `{base}` and `{case}`) in the `expr` parameter of the #IF macro and the `key` parameter of the #MAP macro

- Added support for parsing a box page entry section as a sequence of multi-line list items prefixed by ‘-’ (with `SectionType=BulletPoints`)

- The following ref file components may now contain skool macros: the `anchor` and `title` of a box page entry section name; every parameter in the [Game], [MemoryMap:*], [Page:*], [PageHeaders], [Paths] and [Titles] sections

- The @replace directive now acts on ref file section names as well as their contents

- The #EVAL macro now renders hexadecimal values in lower case when the `--lower` option of skool2asm.py or skool2html.py is used

- Added the #VERSION macro (which expands to the version of SkoolKit)

- Fixed how an image is cropped when the crop rectangle is very narrow

- Fixed how a masked image with flashing cells is built

- Fixed how sna2skool.py handles a snapshot that contains a dangling IX/IY prefix (DD/FD) when generating a control file

- Fixed the bug that prevents the expansion of skool macros in a page’s link text on the disassembly home page