@assemble=1

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!