SZX is grate

SkoolKit 3.2 is upon us, and also happens to be available from the never-absent download page. And as there has been a minor version number bump (from 3.1.x), I feel duty-bound to explain what’s been going on in SkoolKit-land since 3.1 was released back in June. If you’re at all interested to hear, stick around and some will be revealed.

In the skool macro department, we have two new members on the team: #HTML and #LIST. The #HTML macro renders arbitrary text in HTML mode only - and by ‘arbitrary’ I really mean ‘possibly including HTML markup’. So if you’ve ever been frustrated by how every comment in a skool file ends up being HTML-escaped before being rendered, you’ll enjoy using #HTML. The #LIST macro, unsurprisingly, may be used to create lists: <ul> elements in HTML mode, and plain-text bulleted lists in ASM mode. The syntax of the #LIST macro is similar to that of the #TABLE macro, which has been around since SkoolKit 1.0.

In the ASM directive department, the new kid on the block is the @set directive. Its purpose is to set properties on the ASM writer being used to produce ASM output. For now, the properties available for setting are bullet (the bullet character to use for lists created by the #LIST macro), crlf (whether to use CR+LF to terminate lines), and tab (whether to use a tab character to indent instructions); expect more properties to become available in future releases.

In the general SkoolKit department, full support has been added for ‘complex’ DEFB and DEFM statements that contain both strings and bytes (e.g. DEFB 1,"a"). This new feature has been put to use in manic_miner.ctl: run it against a snapshot of Manic Miner (Bug Byte edition) to see the source code remnants at 32768 and 37708 nicely documented, and the format used by Matthew Smith’s assembler revealed.

Finally, and specifically in the disassembling department, SkoolKit now supports SZX snapshots (16K, 48K and 128K) and 128K Z80 snapshots. Yes, the 48K limit on your SkoolKit disassembly aspirations has been lifted. By default, sna2skool.py will disassemble whichever RAM page is currently mapped to 49152 ($C000), but you can change that with the ‘-p’ option to gain access to the other RAM pages. How to organise the disassemblies of those other RAM pages alongside the ‘main’ disassembly is left up to you, but if more automation in this area (such as disassembling every currently unmapped page to its own skool file in one go) would be useful, be sure to let me know.