SkoolKit 7.x changelog ====================== 7.2 (2019-06-02) ---------------- * Added support to control files for specifying comments over multiple lines (by using the :ref:`dot and colon directives `) * Added support to :ref:`skool2ctl.py ` for reading configuration from `skoolkit.ini` * Added the ``--ini`` and ``--show-config`` options to :ref:`skool2ctl.py` (for setting the value of a configuration parameter and for showing all configuration parameter values) * Added the ``--keep-lines`` option to :ref:`skool2ctl.py` (for preserving line breaks in comments) * Added support for :ref:`asmTemplates` (used to format each line of output produced by :ref:`skool2asm.py`) * Added the ``Templates`` configuration parameter for :ref:`skool2asm.py ` (for reading custom ASM templates from a file) * Added the ``Dictionary`` configuration parameter for :ref:`sna2ctl.py ` (to specify a file containing a list of words allowed in a text string) * Added the ``bytes`` and ``show_bytes`` identifiers to the *asm_instruction* template, along with a table cell for displaying the byte values of an assembled instruction * Added the ``Bytes`` parameter to the :ref:`ref-Game` section (for specifying the format of byte values in the *asm_instruction* template) * Added the ``DisassemblyTableNumCols`` parameter to the :ref:`ref-Game` section (for specifying the number of columns in the disassembly table on disassembly pages) * In ASM mode, :ref:`list` and :ref:`table` macros can now be used in register descriptions * The :ref:`LINK` and :ref:`R` macros now work with address anchors that start with an upper case letter (as could happen when ``AddressAnchor`` is ``{address:04X}``) * Fixed how ``#LIST`` and ``#TABLE`` markers inside a :ref:`RAW` macro are handled in ASM mode * Fixed how skool macros are expanded in ``*ImagePath`` parameters in the :ref:`Paths` section * Fixed the hyperlinking of lower case hexadecimal instruction operands 7.1 (2019-02-02) ---------------- * Improved the performance and accuracy of the control file generation algorithm used by :ref:`sna2ctl.py` when no code map is provided * Added support to :ref:`sna2ctl.py ` for reading configuration from `skoolkit.ini` * Added the ``--ini`` and ``--show-config`` options to :ref:`sna2ctl.py` (for setting the value of a configuration parameter and for showing all configuration parameter values) * Added support to :ref:`sna2skool.py` for reading multiple default control files, and for using the ``--ctl`` option multiple times * The :ref:`UDGARRAY` macro now has the ability to specify attribute addresses (as an alternative to specifying attribute values) * Added support to control files and skool file templates for specifying that numeric values in instruction operands and DEFB, DEFM, DEFS and DEFW statements be rendered as negative numbers * The :ref:`isub`, :ref:`ssub`, :ref:`rsub`, :ref:`ofix`, :ref:`bfix` and :ref:`rfix` directives can insert an instruction after the current one (without first specifying a replacement for it) by using the ``+`` marker * :ref:`tapinfo.py` now shows pulse lengths in TZX block type 0x13 (pulse sequence) and full info for TZX block type 0x14 (pure data) * :ref:`sna2skool.py` handles unprintable characters in a DEFM statement by rendering them as byte values * :ref:`sna2skool.py` automatically determines the byte value of an 'S' directive and ignores any supplied value * Added the ``CommentWidthMin`` configuration parameter for :ref:`sna2skool.py ` (to specify the minimum width of the instruction comment field in a skool file) * Added the ``InstructionWidth`` configuration parameter for :ref:`sna2skool.py ` (to specify the minimum width of the instruction field in a skool file) * Added the ``Semicolons`` configuration parameter for :ref:`sna2skool.py ` (to specify the block types in which comment semicolons are written for instructions that have no comment) * Fixed how :ref:`sna2skool.py` interprets the base prefix ``n`` in a 'B' directive * Fixed how :ref:`skool2ctl.py` and `skool2sft.py` handle non-entry blocks when a start address or end address is supplied 7.0 (2018-10-13) ---------------- * The :ref:`isub`, :ref:`ssub`, :ref:`rsub`, :ref:`ofix`, :ref:`bfix` and :ref:`rfix` directives can specify the replacement comment over multiple lines, replace the label, and insert, overwrite and remove instructions * :ref:`nonEntryBlocks` in a skool file are reproduced by :ref:`skool2asm.py` and preserved by :ref:`skool2ctl.py` * Moved the ability to generate a control file from :ref:`sna2skool.py` to the new :ref:`sna2ctl.py` command * :ref:`skool2bin.py` now processes :ref:`asm-if` directives (in case they contain :ref:`isub`, :ref:`ssub`, :ref:`ofix` or :ref:`bfix` directives) * The :ref:`label` directive can now add an entry point marker to the next instruction, or remove one if present * Added the ``--force`` option to :ref:`skool2asm.py` (to force conversion of the entire skool file, ignoring any :ref:`start` and :ref:`end` directives) * Added support for appending content to an existing ref file section by adding a '+' suffix to the section name (e.g. ``[Game+]``) * Added support for preserving 'inverted' characters (with bit 7 set) in and restoring them from a control file or skool file template * Added support to the :ref:`list`, :ref:`table` and :ref:`udgtable` macros for the ``nowrap`` and ``wrapalign`` flags (which control how :ref:`sna2skool.py` renders each list item or table row when reading from a control file) * :ref:`skool2html.py` now writes a single disassembly from the the skool file given as the first positional argument; any other positional arguments are interpreted as extra ref files * Every entry title on a memory map page is now hyperlinked to the disassembly page for the corresponding entry * Fixed the bug in :ref:`skool2ctl.py` that makes it incorrectly compute the length of an ``M`` directive covering a sub-block containing two or more instructions * Fixed how blocks of zeroes are detected and how an ``--end`` address is handled when generating a control file