SkoolKit 6.x changelog ====================== 6.4 (2018-03-31) ---------------- * Added the :ref:`asm-if` directive (for conditionally processing other ASM directives) * Added the :ref:`RAW` macro (which prevents any macros or macro-like tokens in its sole string argument from being expanded) * Added the ``--var`` option to :ref:`skool2asm.py` and :ref:`skool2html.py` (for defining a variable that can be used by the :ref:`asm-if` directive and the :ref:`IF` and :ref:`MAP` macros) * The ``asm`` replacement field available to the :ref:`IF` and :ref:`MAP` macros now indicates the exact ASM mode: 1 (:ref:`isubMode`), 2 (:ref:`ssubMode`), 3 (:ref:`rsubMode`), or 0 (none) * The :ref:`IF` and :ref:`MAP` macros can now use the ``fix`` replacement field, which indicates the fix mode: 1 (:ref:`ofixMode`), 2 (:ref:`bfixMode`), 3 (:ref:`rfixMode`), or 0 (none) * The :ref:`isub`, :ref:`ssub`, :ref:`rsub`, :ref:`ofix`, :ref:`bfix` and :ref:`rfix` directives can replace comments as well as instructions * Added the ``entry`` identifier to the :ref:`t_footer` template when it is part of a disassembly page * Added ``path`` to the ``SkoolKit`` dictionary in :ref:`htmlTemplates` * In ASM mode, a :ref:`list` or :ref:`table` macro can now be used in an instruction-level comment and as a parameter of another macro * In ASM mode, the :ref:`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 :ref:`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 :ref:`defb`, :ref:`defs` and :ref:`defw` directives (for inserting byte values and word values into the memory snapshot) * Added the :ref:`remote` directive (for creating a remote entry) * Added the ``--poke`` option to :ref:`bin2sna.py` (for performing POKE operations on the snapshot) * Added the ``--user-agent`` option to :ref:`tap2sna.py` (for setting the User-Agent header used in an HTTP request) * Added support to the :ref:`Resources` section for specifying files using wildcard characters (``*``, ``?`` and ``[]``) * Added the ``ImagePath`` parameter to the :ref:`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 :ref:`image macros ` (e.g. ``#SCR2({UDGImagePath}/scr)``) * The :ref:`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 :ref:`org` directive is now optional and defaults to the address of the next instruction * The ``LABEL`` parameter of the :ref:`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 :ref:`skool2ctl.py` that prevents an :ref:`ignoreua` directive on a block end comment from being preserved correctly * Fixed :ref:`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 :ref:`bin2sna.py` (for setting the value of a register) * Added the ``--state`` option to :ref:`bin2sna.py` (for setting the value of a hardware state attribute) * :ref:`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 :ref:`memoryMap` section (for specifying addresses of entries to include on the memory map page in addition to those specified by the ``EntryTypes`` parameter) * The :ref:`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 :ref:`N` macro (for rendering a value in hexadecimal format unless the ``--decimal`` option is used with :ref:`skool2asm.py` or :ref:`skool2html.py`) * Added the ``--show-config`` option to :ref:`skool2asm.py`, :ref:`skool2html.py` and :ref:`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 :ref:`keep` directive can now specify the values to keep, and is applied to instructions that have been replaced by an :ref:`isub`, :ref:`ssub` or :ref:`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 :ref:`skool2asm.py `, :ref:`skool2html.py ` and :ref:`sna2skool.py ` for reading configuration from a file named `skoolkit.ini`, if present * Added the ``--ini`` option to :ref:`skool2asm.py`, :ref:`skool2html.py` and :ref:`sna2skool.py` (for setting the value of a configuration parameter) * :ref:`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 :ref:`sna2img.py` (for copying the contents of a block of RAM to another location) * Improved how :ref:`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 :ref:`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 :ref:`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 :ref:`sna2img.py` (for expanding a :ref:`FONT`, :ref:`SCR`, :ref:`UDG` or :ref:`UDGARRAY` macro) * Added the ``--basic`` option to :ref:`tapinfo.py` (for listing the BASIC program in a tape block) * Added the ``--find-tile`` option to :ref:`snapinfo.py` (for searching for the graphic data of a tile currently on screen) * Added the ``--word`` option to :ref:`snapinfo.py` (for showing the words at a range of addresses) * Added support to the ``--find`` option of :ref:`snapinfo.py` for specifying a range of distances between byte values (e.g. ``--find 1,2,3-1-10``) * The ``--peek`` option of :ref:`snapinfo.py` now shows UDGs and BASIC tokens * Added support for replacement fields (such as ``{base}`` and ``{case}``) in the ``expr`` parameter of the :ref:`IF` macro and the ``key`` parameter of the :ref:`MAP` macro * Added support for parsing a :ref:`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 :ref:`box page ` entry section name; every parameter in the :ref:`ref-Game`, :ref:`memoryMap`, :ref:`page`, :ref:`pageHeaders`, :ref:`paths` and :ref:`titles` sections * The :ref:`replace` directive now acts on ref file section names as well as their contents * The :ref:`EVAL` macro now renders hexadecimal values in lower case when the ``--lower`` option of :ref:`skool2asm.py` or :ref:`skool2html.py` is used * Added the :ref:`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 :ref:`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