So, I broke malzak and p2000t with this update. I did test them before submitting but obviously not with what actually got submitted.
This has been quite puzzling but I think I now have a conclusion
The saa5050 outputs characters of 20 scanlines but the mc6845 has R9 set to 18 and so outputs 19 scanlines (I had fudged saa5050 to accommodate this and so broke malzak etc). This explains why I'm missing the bottom scanline in the above screenshots.
I've now been reliably informed the bbc actually uses the hd6845 http://www.cpcwiki.eu/imgs/c/c0/Hd6845.hitachi.pdf
and on page 90:
Maximum Raster Address Register (R9) *
This is a register used to program maximum raster address within 5-bit. This register defines total number of rasters per character including line space. This register is programmed as follows.
Non-interlace Mode, Interlace Sync Mode
When total number of rasters is RN, RN-1 shall be programmed.
Interlace Sync & Video Mode
When total number of rasters is RN, RN-2 shall be programmed.
So in interlace mode it would output 20 scanlines when R9 is 18.
I see our implementation of hd6845 doesn't implement this so will try to fix this.
I also noticed we have a MCFG_MC6845_INTERLACE_ADJUST only used in apricot. Is this a workaround for my issue and the apricot should actually use a fixed hd6845?