After hitting the problem with both G28 and G53 moves I switched to single block and stepped it, it triggered at the M6 command.
Next i pulled the M6macros out and it worked ok, a coffee and a sit-down with the macro open showed the problem. It was connected with the screen-set and the M6Start macro, a variable and DRO called "Clearance Plane" - this is used in the 2010 screen-set tool-change routines.
But as I cannot use them on the Bridgeport and do not need them due to the fixed length tooling, the already edited M6Start macro was still using the values and trying to send the Z to a position beyond home when triggered.
This is why the code always ran fine as a single-tool job - the first line in the M6Start skips the routine if the current tool = selected tool so the dodgy code was never hit

I have now edited the M6Start to remove all references to clearance planes, offsets etc and just issue a straight G53 G0 Z0 style home move.
The code i was struggling with has now been air-cut 6 times with 100% success.
Thanks for all the tips.
Now, back to "what is my encoder actually doing???"
