Code:
53. Line feed move XY.
n," ",feed_move," XB",prev_x,"A"," YB",prev_y,"A"," ZR",zr,"A"," ZB",z_f,"A"," XE",x_f,"A"," YE",y_f,"A"," ZE",z_f,"A"," ",g_code_cc,cc," F",feed_rate," ",z_feed_rate," D",tool_diameter," ",t,program_block_8
64. Arc move XY.
n," ",g_arc_move,program_block_9," ZR",zr,"A"," ZB",z_f,"A"," XE",x_f,"A"," YE",y_f,"A"," ZE",z_f,"A"" ",xcenter,"A ",ycenter,"A ",zcenter,"I ",g_code_cc,cc," F",feed_rate," ",z_feed_rate," D",tool_diameter," ",t
2008. Program Block 8. store x y end values from g101 moves
xb = MILL_GetXFeed()
yb = MILL_GetYFeed()
2009. Program Block 9. Fix start of arc xy
MILL_SetReturnString (" XB" & xb & "A" & " YB" & yb & "A")
So the problem is actually line 64. I intended to use "prev_x" & "prev_y" instead of "program_block_9" (similar to line 53), but the output on arc moves was some insane value that made no sense (I assume background computations that overwrite the "prev" values). so I grab the x/y values from the last linear feed modes using program block 8 and output them in line 64 using program block 9.