There is another consequence of PathPilot's code-loading process entailing simulation, not syntax checking.
Starting with a rough-sawed surface, I sometimes want to shave it down to flatness without specifying how far down to go. The idea is to cover the surface with Dykem and keep shaving until all the Dykem is gone. The obvious gCode is something like
Code:
o 401 else if [#<_Action> EQ #<_ShaveNonstopFromTop>]
(MSG, pay attention) ; this could run away
M1 ; ..
#<ZOld> = [#5422] ; .. sysvar = current Z
o 4012 while [1] ; infinite loop
M8 M3 ; spindle & coolant on
G01 X [#<_XStart>] Y [#<_YStart>] ; .. G01 (vs G00) conservative
#<_ZCut> = [#<ZOld> - 0.005] ; .. one shave
M98 P410 ; (subroutine scours the surface at Z = #<_ZCut>)
G00 Z [#<ZOld>] ; get clear so user can evaluate
G00 X [#<_XStart>] Y [#<_YStart>] ; ..
M5 M9 ; ..
G04 P [10] ; chance to reset
#<ZOld> = [#<_ZCut>] ; ready for another shave
o 4012 endwhile
where the 10-second pause would give me time to see that the job is done, whereupon I'd hit Reset.
This code is syntactically correct, but PathPilot doesn't accept it. PP's mode of rejection is to freeze, disabling the keyboard, touchscreen, jogger, and mouse. The only escape from the freeze is a power cycle.
The problem is that PathPilot is trying to simulate this code to completion, and of course it isn't meant to run to completion. Other users may have run into similar problems with gCode that could complete, but only in a very long time.
Requiring a power cycle is not a good form of diagnostic message. The PathPilot simulator should have a timeout mechanism.