z80 fixups
The last sprint (5.0) was a survey to discover how good our z80 opcode coverage, and the results were not so great, with only 86% opcode coverage. So we created a new urgent story story to fix the omissions (5.0.5) and scheduled it for immediate execution.
Implementation took a while, as there are a couple of large classes of LD, instructions that needed to be added to our already turgid LD, handler. And we needed some new syntax words too to deal with indirect loads from immediate addresses.
Code review finds some medium and low issues, nothing too serious.
We'll have a look at the changes and have the scrum master run the coverage report at the end.
assembler.asm
FOURTEEN missing opcodes were covered with this simple pattern (just a subset show here):

ADC and SBC are added and look very similar, here's ADC:

My personal fave DJNZ finally joins the party:

The implementation is trickier than you might expect, as it can handle both immediate addresses and labels, and has to deal with the undefined label case.
RST is nice and simple:

It takes a bare integer and doesn't require the # immediate constant tagging word, because RST only has that one form so there's nothing to disambiguate.
RLD and RRD are tiny:

Here's the new () syntax word to denote absolute memory addresses:

And we needed new words for (BC) and (DE) - fortunately quite simple:

One final wrinkle: we need words to represent the registers I and R, but we can't use I for this, because it's already a Forth word meaning "the current loop index". And it's used a lot for that purpose, whereas hardly anyone ever uses the I or R registers. Therefore we've taken the decision to name their words IREG and RREG:

Testing
I had Bob the scrum-master persona run the audit from 5.0 again, and this time we're at 100%. You can read the revised report on github.
Continue reading: Comments
