SZX, #LISTs and 128K
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.