My CS-LABS controller has a custom code M84 instead of G84 - pretty certain the rigid tapping is done directly in the controller not Mach.
Problematic, but ...
You see, when Mach3 tries to interpret the G84 instruction, it has to do something. It was not written (afaik) to be able to hand off an entire g-code instruction to an external controller. In fact, I don't believe such external controllers even existed when Art started writing Mach1 and then Mach2.
So what Mach3 is doing internally - dunno, but I am sure it is trying to sync the spindle index pulse to the Z axis movement - in exactly the same way that Mach3Turn does threading. It is EXACTLY the same same thing.
Now, if CS-Labs is using a macro M84 instead - it would be extremely interesting to know what the macro contains! What is it telling the controller? How is it handled? Enquiring minds want to know!
Greg and Andy at Warp9 are trying to get the ESS to handle a full encoder rather than rely on the Index pulses. This is tricky for two reasons: Mach3 does not rely on the external engine for the sync process (as above), plus there is limited room in the FPGA in the ESS for a PID control loop. But the demand is there in the customer base. That means we keep hassling Andy about the delivery date for this.
What we really need is for Mach5 (5, not 4) to be able to negotiate with an external pulse engine over how to handle the more complex commands. That is, Mach5 needs to be able to send the whole command to the external engine and to be told when the instruction has completed. That also means we will need a whole new generation of external controllers. That is going to take some time to happen. Yeah, dreaming ...
Cheers
Roger