Have just uploaded the new HDL to the first board I'd made (the one with the alternate GPIO used for the data direction on the Z80 interface to bypass the bad IO pin) and it's working perfectly. Image is stable, all the colours are there, everything seems to be working fine.
The second board I made seems to be dropping bit 0 on the data bus, so there's probably a bad IO on pin 142 for that board. I haven't got around to building the DAC and VGA output part of that board yet.
The third board (version 2 PCB with AS/JTAG connectors spaced further apart, spare IO pins exposed as pads on the PCB and another spare GPIO wired to an LED) is working just fine so far, but I've yet to solder the DAC onto the PCB. It's outputting HS and VS fine, though.
So I'd call that a successful project!
I've thanked you previously, but I'll do it again -
thanks for your help BrianHG and everyone else who has chipped in with info and suggestions. It's all very much appreciated.
Once I'm happy with my HDL code additions (for the LED and audio output for testing), I'll update the github repo with the latest version of the project.
I'm waiting on some PS2 keyboard connectors - when they arrive, I can start on working on keyboard integration into the project. That'll make my computer fully stand-alone, so it's a major milestone for me. After that/while I'm waiting on the post, I'm starting to look into integrating an AY-3-8910 or YM2149 (old 80's sound chips) into the FPGA, somehow. I have spare IO to drive a stereo output, it's just a case of adapting what little I can find out there to work on my EP4CE10. I'm also giving some thought to how I'm going to give the Z80 access to an SD card via the FPGA too.
Oh, and of course continue working on the software side for the video output. I'm tempted to start investigating the graphics modes on the FPGA/MAGGIEs and develop some graphics functions (PLOT, LINE, CIRCLE etc) in software - but I'm wondering if they could be done in hardware somehow, too?