Releases: skoolkid/skoolkit
Releases · skoolkid/skoolkit
SkoolKit 10.0
- Dropped support for Python 3.9
- Added the
--ayoption totrace.py(for capturing AY audio when writing a WAV file) - Added the
ayparameter to the#AUDIOmacro (to set whether AY audio is captured) - Added the
--beeperoption totrace.py(for capturing beeper audio as well when--ayis specified) - Added the
bprparameter to the#AUDIOmacro (to set whether beeper audio is captured along with AY audio) - Added support for the MEMPTR register to CMIOSimulator and CCMIOSimulator
- Added the
memptrparameter to the#SIMmacro (to set the MEMPTR register) snapinfo.pynow shows the MEMPTR register value in SZX snapshots- Added support to
trace.pyfor setting the MEMPTR register before execution begins, for reading and writing MEMPTR in SZX snapshots, and for tracing its value via ther[memptr]replacement field in theTraceLine*configuration parameters - Added support to
tap2sna.pyfor setting the MEMPTR register in SZX snapshots, and for tracing its value via ther[memptr]replacement field in theTraceLineconfiguration parameter - Added support to
bin2sna.pyandsnapmod.pyfor setting the MEMPTR register in SZX snapshots - Added the
TraceHeaderandTraceHeader2configuration parameters fortrace.py(to specify headers to print before a trace) - Added support to the
#AUDIOmacro for keyword arguments - Added support to
rzxplay.pyfor ignoring any snapshots after the first one (which is useful for playing some RZX files created by the Fuse emulator) - Added a border area to the screen displayed by
rzxplay.pyandtrace.py - Updated the comments generated for 'IN r,(C)' immediately after 'LD BC,$XXFE' and 'IN A,($FE)' immediately after 'LD A,n' when a single half-row of the keyboard is read
- Updated the default values of
ContentionBegin,ContentionEndandInterruptDelayin the[AudioWriter]section - Added support for multiple values to the
InterruptDelayparameter in the[AudioWriter]section - Fixed the bug in CSimulator that restricts the
timeoutsimulated load configuration parameter to a maximum value of 1227 seconds - Fixed how
tap2sna.pyhandles zero-length pulses in the encodings of 0s and 1s in a PZX DATA block
SkoolKit 9.6
tap2sna.pycan now load from two tape files (e.g. when side 1 and side 2 of a tape are in separate files)- Added the
--pressoption totap2sna.py(for pausing the tape and simulating keypresses before resuming) - Added the
--tape-skipoption totap2sna.py(for skipping one or more blocks on a tape) - Added support to the
--ramoption oftap2sna.pyfor thepatchoperation (for applying a binary patch file) - Changed the default value of the
accelerate-dec-asimulated LOAD configuration parameter fortap2sna.pyfrom 1 to 3 - Added the
activision,alternative3,audiogenic-0,audiogenic-1,codemasters,diver,gremlin2-0,gremlin2-1,kwc-0,kwc-1,mirrorsoft2andoperasofttape-sampling loop accelerators - Removed the
dinaload,gremlin2,housenka,suzy-softandsuzy-soft2tape-sampling loop accelerators - Added the
Screenconfiguration parameter fortrace.py(to specify whether to display screen contents) - Added the RST handler component
- Added the
--handle-rstoption tosna2ctl.pyandsna2skool.py(for activating the RST handler) - Added the
HandleRSTconfiguration parameter forsna2ctl.pyandsna2skool.py(to activate the RST handler) - Fixed how
tap2sna.pyhandles--tape-stopfor PZX files that contain STOP blocks - Fixed the bug that prevents the
mreplacement field from being used in theTraceLineconfiguration parameter whentap2sna.pyruns a custom LOAD command
SkoolKit 9.5
- Dropped support for Python 3.8
- Added the comment generator component
- Added the
--commentsoption tosna2ctl.pyandsna2skool.py(for generating instruction comments) - Added the
Commentsconfiguration parameter forsna2ctl.pyandsna2skool.py(to enable instruction comment generation) trace.pynow responds to keypresses while running with screen contents displayed- Added the
--mapoption totrace.py(for writing a code execution map file) - Added the
UserAgentconfiguration parameter fortap2sna.py(to specify the User-Agent header in HTTP/HTTPS requests) - Added support to the
#CALLmacro for calling an arbitrary function - Added the
--patchoption tosnapmod.py(for applying a binary patch file) - The
#REGmacro now always renders the IXh, IXl, IYh and IYl registers with a lower case 'h' or 'l' - Added the
#FRAMESmacro (as an alternative to the#UDGARRAY*macro, which is now deprecated) - Made the audio writer a pluggable component
- Made the code map reader a pluggable component
- Improved handling of TC2048, TC2068 and TS2068 Z80 snapshots
- Fixed how
trace.pybuilds a PNG image in 128K mode - Fixed the bug that prevents
skool2asm.py,skool2bin.pyandskool2html.pyfrom handling an instruction that crosses the 64K boundary - Fixed how BIN expressions are evaluated in BASIC listings
SkoolKit 9.4
- Added support to
skool2bin.pyfor reading configuration from skoolkit.ini - Added the
--iniand--show-configoptions toskool2bin.py(for setting the value of a configuration parameter and for showing all configuration parameter values) - Added support to
skool2bin.pyfor padding the output with zeroes (as specified by thePadLeftandPadRightconfiguration parameters) - Added the
--screenoption totrace.py(for displaying screen contents while running) - Added the
ScreenFpsandScreenScaleconfiguration parameters fortrace.py(to specify the frame rate and scale factor when displaying screen contents) - Added support to
trace.pyfor writing a PNG file after code execution has completed - Added the
PNGScaleconfiguration parameter fortrace.py(to specify the scale factor of the PNG image) - Added support to
trace.pyfor multiple output file arguments snapinfo.pynow shows AY register values in 128K SZX and Z80 snapshots and the last value written to port $FE in SZX snapshots- Added support to the
#FOREACHmacro for thePOKEnamespecial variable - Added support to the
#LETmacro for setting individual key-value pairs in dictionary variables - Added the
Downloadparameter to the[Game]section (for specifying a download message/link to appear in the footer of every page) - Added the
LinkInternalOperandsMinDistanceparameter to the[Game]section (for avoiding hyperlinks to nearby instructions) - Fixed how ADC and SBC instructions affect the half-carry flag
- Fixed how 'BIT n,(IX/Y+d)' affects bits 3 and 5 of the flags in the C version of the Z80 simulator
- Fixed how IX/IY offset addresses are calculated in the C version of the Z80 simulator
SkoolKit 9.3
- Added support to
tapinfo.pyandtap2sna.pyfor reading PZX files - Added support to
bin2tap.pyfor writing PZX files - Added support to
tap2sna.pyfor them(memory) replacement field in theTraceLineconfiguration parameter - Added support to
trace.pyfor them(memory) replacement field in theTraceLine*configuration parameters - Added the
--stateoption totrace.py(for setting hardware state attributes before code execution begins) - Added support to
trace.pyfor writing a WAV file after code execution has completed - Added the
Opcodesconfiguration parameter tosna2skool.py(for specifying additional opcode sequences to disassemble) - Added the
@bytesdirective (for specifying the byte values to which an instruction should assemble) - Added the
--tape-startand--tape-stopoptions totapinfo.py(for specifying the block numbers at which to start or stop showing info) tapinfo.pynow shows info for TZX block types 0x18 (CSW recording) and 0x2B (set signal level), and also recognises the deprecated TZX block types 0x16, 0x17, 0x34 and 0x40- The
--find,--find-textand--find-tileoptions ofsnapinfo.pynow search all RAM banks in a 128K snapshot by default - Added support for path ID replacement fields in the
destDirparameter of items in the[Resources]section - Fixed the bug that prevents the
--regoption oftrace.pyfrom accepting hexadecimal values prefixed by ‘0x’
SkoolKit 9.2
- Added a Z80 instruction set simulator implemented in C (as a faster alternative to the pure Python Z80 simulator)
- Added the
rzxplay.pycommand (for playing an RZX file) - Added the
rzxinfo.pycommand (for showing the blocks in or extracting the snapshots from an RZX file) - Added support to
sna2ctl.pyfor reading code execution maps produced byrzxplay.py - Added support to
tap2sna.pyfor TZX block type 0x15 (direct recording) tapinfo.pynow shows info for TZX block type 0x15 (direct recording)- Added support to
trace.pyfor executing machine code in +2 snapshots - Added the
pythonsimulated LOAD configuration parameter totap2sna.py(for forcing usage of the pure Python Z80 simulator even if the C version is available) - Added the
--pythonoption totrace.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
#FONT,#SCRand#UDGmacros create frames with incorrect graphic content - Fixed the bug that can make
trace.pystop too soon when the--max-tstatesoption is used - Fixed the contention pattern for the OUTI/OUTD/OTIR/OTDR instructions
SkoolKit 9.1
- Added support to
snapmod.pyfor modifying SZX snapshots and 128K snapshots - Added support to
bin2sna.pyfor writing 128K snapshots (by using the--pageand--bankoptions, or by providing a 128K input file) - Added support to
bin2tap.pyfor writing 128K TAP files (by using the--7ffd,--banksand--loaderoptions) - Added support to
bin2sna.py,snapmod.py,tap2sna.pyandtrace.pyfor modifying 128K RAM banks (via the--move,--poke,--ram moveand--ram pokeoptions) - Added the
#BANKmacro (for switching the RAM bank that is mapped to 49152-65535) - Added the
@bankdirective (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
--banksoption toskool2bin.py(for processing@bankdirectives and writing RAM banks 0-7 to a 128K file) - Added the
cmiosimulated LOAD configuration parameter totap2sna.py(to specify whether to simulate memory and I/O contention) - Added the
--cmiooption totrace.py(to enable simulation of memory and I/O contention) - Added the
cmioparameter to the#AUDIO,#SIMand#TSTATESmacros (to specify whether to simulate memory and I/O contention) - Added the
execintparameter to the#AUDIO,#SIMand#TSTATESmacros (to specify whether to simulate the execution of interrupt routines) - Added the
tstatesparameter to the#SIMmacro (to set the value of the simulator's clock) - Added the
iffparameter to the#SIMmacro (to set whether interrupts are enabled) - Added the
imparameter to the#SIMmacro (to set the interrupt mode) - Made the
stopparameter of the#SIMmacro optional - Added support to the
#AUDIO,#SIMand#TSTATESmacros for executing code in a 128K memory snapshot - Fixed how
trace.pyhandles the value of the SP register in a 128K SNA file - Fixed how
tap2sna.pyandtrace.pylog timestamps when an interrupt occurs - Fixed how interrupts are accepted when
tap2sna.pyandtrace.pyexecute 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
--basicoption ofsnapinfo.pyfail when the value of PROG is 65535 - Fixed the bug that prevents an
Mdirective from being repeated in a control file loop
SkoolKit 9.0
- Dropped support for Python 3.7
tap2sna.pynow performs a simulated LOAD by default, and will also overwrite an existing snapshot by default- Added the
machinesimulated LOAD configuration parameter totap2sna.py(to specify whether to simulate a 48K or a 128K Spectrum) - Added the
loadsimulated LOAD configuration parameter totap2sna.py(to specify an alternative command line to use to load the tape) - Added the
polaritysimulated LOAD configuration parameter totap2sna.py(to specify the EAR bit reading produced by the first pulse on the tape) - Added the
in-flagssimulated LOAD configuration parameter totap2sna.py(to specify how to handle 'IN' instructions) - The output snapshot argument of
tap2sna.pyis now optional - Added the
DefaultSnapshotFormatconfiguration parameter fortap2sna.py(to specify the default output snapshot format) - Added support to
tap2sna.pyfor register pairs (r[bc],r[de]etc.) in theTraceLineconfiguration parameter - Added the
antirom,erniewareandhousenkatape-sampling loop accelerators - Statistics for 'DEC A' tape-sampling delay loops are now shown by
tap2sna.pywhenaccelerator=list - Added support to
trace.pyfor executing machine code in 128K snapshots - Added support to
trace.pyfor reading configuration from skoolkit.ini - Added the
--iniand--show-configoptions totrace.py(for setting the value of a configuration parameter and for showing all configuration parameter values) - Added the
--no-interruptsoption totrace.py(to prevent the execution of interrupt routines, which are now executed by default) - Added support to
bin2sna.py,tap2sna.pyandtrace.pyfor writing SZX snapshots - Added support to
bin2sna.pyandtap2sna.pyfor setting thefehardware state attribute (i.e. the last value written to port 0xFE in SZX snapshots) - Added support to the
#AUDIOmacro for passing delays through a moving average filter (which can produce higher quality audio, especially for multi-channel tunes) - Added support to control directive loops for avoiding repetition of an
Ndirective at the start of a loop tapinfo.pynow shows the LINE number (if present) for 'Program:' header blocks, and renders BASIC tokens in header block namessnapinfo.pynow shows the current AY register in 128K SZX and Z80 snapshots- Changed the default value of
HandAfor the@assembledirective to 2 - Fixed the bug that prevents
tap2sna.pyfrom loading a tape that has a hash character (#) in its filename
SkoolKit 8.10
- Added the
finish-tapesimulated LOAD configuration parameter totap2sna.py(to specify whether to finish the tape before stopping the simulation at the given start address) - Added the
contended-insimulated LOAD configuration parameter totap2sna.py(to specify whether to interpret 'IN A,($FE)' instructions in the address range $4000-$7FFF as reading the tape) - Added the
accelerate-dec-asimulated LOAD configuration parameter totap2sna.py(to specify whether to accelerate 'DEC A: JR NZ,$-1' or 'DEC A: JP NZ,$-1' delay loops) - Added the
alkatraz-05,alkatraz-09,alkatraz-0a,alkatraz-0b,alternative,alternative2,boguslaw-juza,bulldog,crl,crl2,crl3,crl4,cybexlab,d-and-h,delphine,design-design,gargoyle2,gremlin2,microprose,micro-style,mirrorsoft,palas,raxoft,realtime,silverbird,software-projects,sparklers,suzy-soft,suzy-soft2,tiny,us-goldandweird-sciencetape-sampling loop accelerators for use withtap2sna.py - Added the special
autoandlisttape-sampling loop accelerator names for use with theacceleratorsimulated LOAD configuration parameter oftap2sna.py, and the ability to specify multiple accelerators - Added support to
bin2sna.py,snapmod.pyandtap2sna.pyfor setting theissue2hardware state attribute (to enable or disable issue 2 emulation) - Added support to
tap2sna.pyfor loading tapes that end with a pulse sequence instead of data - Added support to
tap2sna.pyfor reading configuration from skoolkit.ini - Added the
--iniand--show-configoptions totap2sna.py(for setting the value of a configuration parameter and for showing all configuration parameter values) - Added support to
tap2sna.pyfor configuring the format of a simulated LOAD trace log file via theTraceLineandTraceOperandconfiguration parameters - Added the
--tape-analysisoption totap2sna.py(for showing an analysis of the tape's tones, pulse sequences and data blocks) snapinfo.pynow shows the value of the T-states counter and the issue 2 emulation flag in SZX and Z80 snapshots- Fixed the bug that prevents
snapinfo.pyfrom displaying the value of a floating-point number in a BASIC line when the accompanying numeric string is a single decimal point (.) - Fixed how the value of the R register is set in a Z80 snapshot when bit 7 is reset
- Fixed how tape-sampling loop accelerators affect the carry flag after at least one pass through the loop
SkoolKit 8.9
- Added support to
tap2sna.pyfor TZX loops (block types 0x24 and 0x25), pauses (block types 0x10, 0x11, 0x14 and 0x20), and unused bits in data blocks (block types 0x11 and 0x14) tap2sna.pynow accelerates the simulation of tape-sampling loops in loading routines, and also simulates the execution of interrupt routines when interrupts are enabled- Added the
--sim-load-configoption totap2sna.py(to set the value of a--sim-loadconfiguration parameter:accelerator,fast-load,first-edge,pause,timeout,trace) - Added the
--tape-nameoption totap2sna.py(to specify the name of a TAP/TZX file in a zip archive, in case there is more than one) - Added the
--tape-startand--tape-stopoptions totap2sna.py(to start or stop the tape at a specific block number) - Added the
--tape-sumoption totap2sna.py(to specify the MD5 checksum of the TAP/TZX file) - Added support to
tap2sna.pyfor quoted arguments in an arguments file - Added the
--interruptsoption totrace.py(to enable the execution of interrupt routines) trace.pynow reads and writes the T-states counter in Z80 snapshots and reads the T-states counter in SZX snapshots- Added support to
bin2sna.py,snapmod.pyandtap2sna.pyfor setting thetstateshardware attribute (i.e. the T-states counter in Z80 snapshots) tapinfo.pynow shows full info for TZX block types 0x10 (standard speed data) and 0x11 (turbo speed data)- Fixed how the Z80 instruction set simulator updates the A and R registers in the ‘LD A,R’ and ‘LD R,A’ instructions
- Fixed how the Z80 instruction set simulator handles a CALL instruction that overwrites its own address operand
- Fixed how a Z80 snapshot memory block that ends with a single 0xED byte is decompressed
- Fixed how the
--sim-loadoption oftap2sna.pytransitions from a tape block that ends with data to the next block when there is no pause between them - Fixed the bug that prevents the
--findoption ofsnapinfo.pyfrom finding byte sequences below address 16384 - Fixed the bug that prevents the
--find-textoption ofsnapinfo.pyfrom finding text strings below address 16384