Take Five
SkoolKit 5.0 has been released. As dedicated followers of this website have no doubt already guessed, copies of 5.0 are available from the ever-present download page, the Python Package Index, and the Ubuntu PPA.
As even the not-so-dedicated followers among you might have noticed, 5.0 both
looks and smells like a major new version, and there is little point in
pretending that it isn’t. Not to put too fine a point on it, there are some
changes that make SkoolKit 5.0 incompatible with some skool files and control
files that work with SkoolKit 4.5 and earlier versions, which is why this new
version isn’t simply 4.6. For example: the ‘D’ directive can no longer be used
to define a mid-block comment - you must use the ‘N’ directive instead. Also:
an ASM directive can no longer be declared by starting a line with ‘; @’ - you
must use the ‘@’ directive in a control file, and omit the semicolon and space
in a skool file. See the documentation on migrating from SkoolKit
4 for a comprehensive list of the
compatibility-breaking changes, and for information on the skoolkit4to5.py
utility, which might ease some of the pain of switching to SkoolKit 5.
But a major new version should be about more than just a bunch of backwards
incompatibilities, and I’m glad to say that 5.0 is no exception to this
rule. First of all, there are two new commands: skool2bin.py
and
tapinfo.py
. As the name implies, skool2bin.py
converts a skool file into a
binary (raw memory) file, bypassing the need to create an ASM file with
skool2asm.py
first and then assemble it. Let’s be clear up front, though:
skool2bin.py
is not an assembler. At least, it’s not a fully fledged
assembler, in that it knows nothing about labels or any kind of assembler
directive besides DEFB, DEFM, DEFS and DEFW. As for tapinfo.py
, this new
utility displays information about the blocks in a TAP or TZX file. It will be
most useful for determining the block numbers to use when creating a snapshot
from a tape file with tap2sna.py
.
Second of all, SkoolKit 5.0 says goodbye to XHTML 1.0 and hello to HTML5. Yes,
the output of skool2html.py
has left the 20th century behind and belatedly
come crashing into the 21st. To be specific, the stock full-page HTML templates
have been converted from XHTML 1.0 Strict to HTML5. And to drive the point
home, they also sport <footer>
elements, instead of the generic <div>
elements of the bygone era.
Third of all, there is the new @assemble
directive, which controls whether
assembly language instructions are converted into byte values for the purpose
of populating the memory snapshot. In previous versions of SkoolKit, only DEFB,
DEFM, DEFS and DEFW statements were converted into byte values, but now we have
the ability to convert regular instructions as well. Does your skool file
contain any data definition entries (‘d’ blocks) whose only purpose is to
provide the byte values for a block of code? Time to consider using the
@assemble
directive instead, and save some space into the bargain.
That’s about it for the main new features; see the changelog for further details. I hope you can all pluck up the courage to upgrade to SkoolKit 5.0 - if not today, then some time soon. And be sure to report any bugs you find, or backwards incompatibilities I have not (yet) documented!