Well, I tried you new code and it does call the subroutine. When I Single BLK and cycle start, the code goes jumps to the subroutine, and runs the code in the subroutine once and then stops on the last line, which, interestingly enough, is not the M99, but the line before the M99 and the M99 never shows in the g-code window. When I tried to use an external .tap file, with the "P" word, I get a "Unknown word where unary operation could." If I use your example, and put "()" around the file name, I get a "Connot Load original File"
Mike