Changelog ========= 9.2 (2024-05-11) ---------------- * Added a Z80 instruction set simulator implemented in C (as a faster alternative to the pure Python Z80 simulator) * Added the :ref:`rzxplay.py` command (for playing an RZX file) * Added the :ref:`rzxinfo.py` command (for showing the blocks in or extracting the snapshots from an RZX file) * Added support to :ref:`sna2ctl.py` for reading code execution maps produced by :ref:`rzxplay.py` * Added support to :ref:`tap2sna.py` for TZX block type 0x15 (direct recording) * :ref:`tapinfo.py` now shows info for TZX block type 0x15 (direct recording) * Added support to :ref:`trace.py` for executing machine code in +2 snapshots * Added the ``python`` simulated LOAD configuration parameter to :ref:`tap2sna.py ` (for forcing usage of the pure Python Z80 simulator even if the C version is available) * Added the ``--python`` option to :ref:`trace.py` (for forcing usage of the pure Python Z80 simulator even if the C version is available) * Fixed the lazy evaluation bug that can make the :ref:`FONT`, :ref:`SCR` and :ref:`UDG` macros create frames with incorrect graphic content * Fixed the bug that can make :ref:`trace.py` stop too soon when the ``--max-tstates`` option is used * Fixed the contention pattern for the OUTI/OUTD/OTIR/OTDR instructions 9.1 (2024-02-03) ---------------- * Added support to :ref:`snapmod.py` for modifying SZX snapshots and 128K snapshots * Added support to :ref:`bin2sna.py` for writing 128K snapshots (by using the ``--page`` and ``--bank`` options, or by providing a 128K input file) * Added support to :ref:`bin2tap.py` for writing 128K TAP files (by using the ``--7ffd``, ``--banks`` and ``--loader`` options) * Added support to :ref:`bin2sna.py`, :ref:`snapmod.py`, :ref:`tap2sna.py` and :ref:`trace.py` for modifying 128K RAM banks (via the ``--move``, ``--poke``, ``--ram move`` and ``--ram poke`` options) * Added the :ref:`BANK` macro (for switching the RAM bank that is mapped to 49152-65535) * Added the :ref:`asm-bank` directive (for specifying the RAM bank that is mapped to 49152-65535, and for populating a RAM bank from the contents of another skool file) * Added the ``--banks`` option to :ref:`skool2bin.py` (for processing :ref:`asm-bank` directives and writing RAM banks 0-7 to a 128K file) * Added the ``cmio`` simulated LOAD configuration parameter to :ref:`tap2sna.py ` (to specify whether to simulate memory and I/O contention) * Added the ``--cmio`` option to :ref:`trace.py` (to enable simulation of memory and I/O contention) * Added the ``cmio`` parameter to the :ref:`AUDIO`, :ref:`SIM` and :ref:`TSTATES` macros (to specify whether to simulate memory and I/O contention) * Added the ``execint`` parameter to the :ref:`AUDIO`, :ref:`SIM` and :ref:`TSTATES` macros (to specify whether to simulate the execution of interrupt routines) * Added the ``tstates`` parameter to the :ref:`SIM` macro (to set the value of the simulator's clock) * Added the ``iff`` parameter to the :ref:`SIM` macro (to set whether interrupts are enabled) * Added the ``im`` parameter to the :ref:`SIM` macro (to set the interrupt mode) * Made the ``stop`` parameter of the :ref:`SIM` macro optional * Added support to the :ref:`AUDIO`, :ref:`SIM` and :ref:`TSTATES` macros for executing code in a 128K memory snapshot * Fixed how :ref:`trace.py` handles the value of the SP register in a 128K SNA file * Fixed how :ref:`tap2sna.py` and :ref:`trace.py` log timestamps when an interrupt occurs * Fixed how interrupts are accepted when :ref:`tap2sna.py` and :ref:`trace.py` execute code in a simulator * Fixed how the Z80 instruction set simulator updates bit 2 of the flags register when executing an 'LD A,I' or 'LD A,R' instruction just before an interrupt is accepted * Fixed the bug that makes the ``--basic`` option of :ref:`snapinfo.py` fail when the value of PROG is 65535 * Fixed the bug that prevents an :ref:`mDirective` from being repeated in a :ref:`control file loop ` 9.0 (2023-11-04) ---------------- * Dropped support for Python 3.7 * :ref:`tap2sna.py` now performs a :ref:`simulated LOAD ` by default, and will also overwrite an existing snapshot by default * Added the ``machine`` simulated LOAD configuration parameter to :ref:`tap2sna.py ` (to specify whether to simulate a 48K or a 128K Spectrum) * Added the ``load`` simulated LOAD configuration parameter to :ref:`tap2sna.py ` (to specify an alternative command line to use to load the tape) * Added the ``polarity`` simulated LOAD configuration parameter to :ref:`tap2sna.py ` (to specify the EAR bit reading produced by the first pulse on the tape) * Added the ``in-flags`` simulated LOAD configuration parameter to :ref:`tap2sna.py ` (to specify how to handle 'IN' instructions) * The output snapshot argument of :ref:`tap2sna.py` is now optional * Added the ``DefaultSnapshotFormat`` configuration parameter for :ref:`tap2sna.py ` (to specify the default output snapshot format) * Added support to :ref:`tap2sna.py ` for register pairs (``r[bc]``, ``r[de]`` etc.) in the ``TraceLine`` configuration parameter * Added the ``antirom``, ``ernieware`` and ``housenka`` tape-sampling loop :ref:`accelerators ` * Statistics for 'DEC A' tape-sampling delay loops are now shown by :ref:`tap2sna.py` when ``accelerator=list`` * Added support to :ref:`trace.py` for executing machine code in 128K snapshots * Added support to :ref:`trace.py ` for reading configuration from `skoolkit.ini` * Added the ``--ini`` and ``--show-config`` options to :ref:`trace.py` (for setting the value of a configuration parameter and for showing all configuration parameter values) * Added the ``--no-interrupts`` option to :ref:`trace.py` (to prevent the execution of interrupt routines, which are now executed by default) * Added support to :ref:`bin2sna.py`, :ref:`tap2sna.py` and :ref:`trace.py` for writing SZX snapshots * Added support to :ref:`bin2sna.py` and :ref:`tap2sna.py` for setting the ``fe`` hardware state attribute (i.e. the last value written to port 0xFE in SZX snapshots) * Added support to the :ref:`AUDIO` macro for passing delays through a moving average filter (which can produce higher quality audio, especially for multi-channel tunes) * Added support to :ref:`control directive loops ` for avoiding repetition of an ``N`` directive at the start of a loop * :ref:`tapinfo.py` now shows the LINE number (if present) for 'Program:' header blocks, and renders BASIC tokens in header block names * :ref:`snapinfo.py` now shows the current AY register in 128K SZX and Z80 snapshots * Changed the default value of ``H`` and ``A`` for the :ref:`assemble` directive to 2 * Fixed the bug that prevents :ref:`tap2sna.py` from loading a tape that has a hash character (``#``) in its filename Older versions -------------- .. toctree:: :maxdepth: 1 changelog8 changelog7 changelog6 changelog5 changelog4 changelog3 changelog2 changelog1