I've tried to research TCP on the Machinekit forum. There is some progression.
Pocket NC does supports 3 Axis Fixture offsets. but not under 5 Axis mode.
Pocket NC does NOT support TCP at this time.
The Pocket NC used the intersection of the two rotary tables as that origin.
With Pocket NC your part can still be placed anywhere in the working envelope of the machine. It's just the origin used in the part program and the output of the code must be based on the Machines Origin. Since this is required up front you must incorporate and use the Machine Origin as the bases for the output code. And if the part is positioned shifted from the machine origin it must be modeled in the program as such.
With TCP (not supported) The program can use a different origin than the machines origin. And the program does not need to know where the origin of the machine is. During setup on the actual machine you must describe where the part program origin with respect to the machine origin. So that can be done long after the program is made.
So let me explain this using the graphic below.
With Pocket NC
The machines origin is shown with a red taget. And there is an orange block that is 1" square. It is sitting 1/2" off the origin of the machine. It's position is X0.5 Y0.5 So this shows a part can be setup anywhere. With Pocket NC if you wanted to make a position move to the corner shown with the green target the NC Code would read X0.5, Y0.5 then if you read the coordinates on the actual machine the part program and machine values both would be the same and read X0.5, Y0.5
With Fixture Offset and TCP
In this case the Part Program Origin could be set to the Green Target. And the part can be setup shifted on the machine later. So the origin in the program is now X0,Y0 And if you made a positioning move to that green target the code would be X0,Y0. But you would need to input values into a fixture offset to decribe where the position of the part is with respect to the position of the machine. I.e. G54 X0.5, Y0,5. Then when you execute the program and if you execute the program as it moves to the corner with the Green target the machine would read X0,Y0 for Part Origin YET it would read X0.5, Y0.5 for Machine coordinates
Conclusion:
So all this means is one way (Pocket NC) you must setup that difference of any shift up front in the program. And the Second method (Fixture Offset TCP not supported) is you could do it later. Granted that later allows for variation is parts and precise setup.

Let me know if you need more clarification.
Randy Kopf