As has become customary with N.0 releases, this one brings changes that cause
chaos by breaking compatibility with previous versions. Among the most
disruptive of those changes are the eradication of skool file templates (and
skool2sft.py), the dropping of support for GIF images, and the
complete overhaul of HTML templates. On the other hand, if you never cared for
skool file templates, have always scoffed at GIF images, and wouldn’t spit on
an HTML template if it caught fire, then you’ll probably notice very little
difference between this release and 7.2. In any case, for all the details on
how SkoolKit 8 might break your disassembly, and some tips on how to fix it,
see the migration guide.
As for new features, the aforementioned HTML templates now support three
directives for conditionally including and repeating content:
include. This means that you now have much finer control over how HTML
pages are laid out, should you ever wish to exercise it. The introduction of
these directives has also enabled me to reduce the number of HTML templates
required to render all your disassembly content. Humour me for a moment while I
relay some facts about the history of HTML templates in SkoolKit. I started
developing them after 3.7 was released, and at one point there were 75 of
them. Realising that 75 was an unmanageably large number, I eventually reduced
it to 23 in time for the release of 4.0. Then that number crept back up 31 when
6.0 was released. But now, for the release of 8.0, I can proudly assert that
the number has been reined in and reduced to 16. Smaller than 23 or 31, and a
power of 2 to boot.
The other big new feature is that SkoolKit now has pluggable components. If you’ve ever been dissatisfied with how SkoolKit disassembles code, assembles skool files, generates control files, reads snapshots, converts the base or case of an instruction, or formats HTML templates, then you’ll be happy to hear that all you have to do to achieve satisfaction is learn Python if you haven’t already, and then plug in your own implementation of one or more of these functions. Sick of the Zilog Z80 and want SkoolKit to tear apart Motorola 6800 code instead? Go for it. Prefer octal to binary, decimal and hexadecimal, and frustrated that SkoolKit doesn’t support it? Now you can fix it. Annoyed that SkoolKit won’t read snapshots produced by your favourite but hopelessly obscure emulator? At this point, I’m sure you get the idea.
Also making the news in this release is the
#PC macro - the first new macro
#RAW was introduced back in 6.4 over 18 months ago. Like
it takes no arguments, but unlike
#VERSION, it expands to the address of the
closest instruction instead of the version number of SkoolKit. (I hope that
comparison with the
#VERSION macro has made its purpose and usage clear.) I
#PC to be most convenient in instruction-level comments, particularly
when used in conjunction with
#PEEK, where it could replace addresses that
would otherwise have to be hard coded.
Of course, there are several other changes in SkoolKit 8.0, most of which pose no danger at all to your existing disassemblies. Such as the ability to specify the characters used to render table borders in ASM mode, and the ability to specify a header prefix and suffix for every page (not just the home page). For more details on these and the other less attention-worthy changes in this release, I refer you to the changelog. Happy component plugging!