In your 0xFACE
SkoolKit 6.2 has been released. As always, copies are available from the download page, the Python Package Index, the Ubuntu PPA, and the Fedora copr repo.
Back in SkoolKit 2.0.6, you may remember, support for hexadecimal numbers began
to appear, with control files being the first to allow numbers in either base
10 or base 16. Since then, hexadecimal has established a firm foothold as a
first class number base in SkoolKit’s feature set: 2.1.1 saw skool2asm.py
and
skool2html.py
gain the ability to convert a disassembly to hexadecimal, and
in 4.3 it became possible to render address anchors and disassembly page
filenames in hexadecimal. Today, 6.2 continues that tradition by adding support
for hexadecimal numbers to SkoolKit’s command options wherever an address,
byte, length, step, offset or range limit value is expected. So, for example,
you can now do stuff like this:
$ sna2skool.py --start 0x8000 --end 0xf800 game.z80 > game.skool
$ snapmod.py --poke 0x9f43,0xff --reg pc=0xc33f game.z80 hacked.z80
In other command-related news, bin2sna.py
has picked up the --reg
and
--state
options (for setting the value of a register or hardware state
attribute). And sna2img.py
can now read a binary (raw memory) file when the
--binary
option is used, and with a specific origin address when the --org
option is used. And skool2asm.py
, skool2html.py
and sna2skool.py
all now
sport the --show-config
option (for showing configuration parameter values).
Enough about commands. Among the ASM directives, @nolabel
is now processed in
HTML mode. (This change should have been made back in SkoolKit 3.4 - when
support was added for labels in HTML mode - but better late than never.) And
the @keep
directive is now also applied to instructions that have been
replaced by an @isub
, @ssub
or @rsub
directive. This change could affect
the output of skool2asm.py
on an existing disassembly, preventing the
substitution of a label for an address in @isub
, @ssub
or @rsub
mode. For
example, in SkoolKit 6.1 and earlier, the instruction at 31898 below would be
replaced by LD DE,31861%256*256+62
in @ssub
mode, and then ‘31861’ would be
replaced by a label (if there is one) because the @keep
directive is not
applied in @ssub
mode:
@ssub=LD DE,31861%256*256+62
@keep
31898 LD DE,30014
But in 6.2, this @keep
directive (originally intended to prevent a label from
being substituted for the value ‘30014’) is applied in @ssub
mode, and
prevents a label from being substituted for ‘31861’. The fix is to use the
@keep
directive’s new ability to specify the values to keep:
@ssub=LD DE,31861%256*256+62
@keep=30014
31898 LD DE,30014
Now, in @ssub
mode, ‘31861’ will be replaced by a label, as desired.
And that’s it for the main new features in this release. For details of all the other changes, the changelog is at your service.